deprecated-oc-search/controllers/workflow.go
2024-02-15 10:48:40 +01:00

85 lines
1.7 KiB
Go

package controllers
import (
"fmt"
"log"
"net/url"
"os"
"strings"
"github.com/beego/beego/logs"
beego "github.com/beego/beego/v2/server/web"
"github.com/sbabiv/xml2map"
)
// WorkflowController allows to edit a tasks workflow
type WorkflowController struct {
beego.Controller
}
// Get i
func (c *WorkflowController) Get() {
logs.Debug("received : %v",c.Ctx.Input.RequestBody)
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "workflow.tpl"
}
// Open i
func (c *WorkflowController) Open() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "workflow.tpl"
}
// Save i
func (c *WorkflowController) Save() {
xml := c.GetString("xml")
fmt.Println(xml)
decodedValue, err := url.QueryUnescape(xml)
if err != nil {
log.Fatal(err)
return
}
fmt.Println(decodedValue)
os.WriteFile("graph.xml", []byte(decodedValue), 0660)
decoder := xml2map.NewDecoder(strings.NewReader(decodedValue))
result, err := decoder.Decode()
if err != nil {
}
cells := result["mxGraphModel"].(map[string]interface{})["root"].(map[string]interface{})["mxCell"].([]map[string]interface{})
for _, element := range cells {
id := element["@id"].(string)
if _, ok := element["@style"]; ok {
if _, ok2 := element["@rID"]; ok2 {
fmt.Print(id + ": ")
fmt.Println(element["@rID"], element["@rType"])
}
}
if src, ok := element["@source"]; ok {
src = element["@source"].(string)
fmt.Println("Link: " + src.(string) + " " + element["@target"].(string))
}
}
if err != nil {
log.Fatal(err)
}
c.StopRun()
}
// Export i
func (c *WorkflowController) Export() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "workflow.tpl"
}