1
0
forked from x/ContextOS

opt bench

Change-Id: I6559ead36be5c899f371c64ec1894f55ac016128
This commit is contained in:
shaoying 2018-12-07 14:27:03 +08:00
parent 8edd3fed55
commit cc12c2595d
3 changed files with 89 additions and 60 deletions

View File

@ -114,7 +114,7 @@ func (web *WEB) HandleCmd(m *ctx.Message, key string, cmd *ctx.Command) {
if k == "ticket" { if k == "ticket" {
m.Log("info", "hide ticket %v %v %v %v", k, v, r.URL, r.Header.Get("index_path")) m.Log("info", "hide ticket %v %v %v %v", k, v, r.URL, r.Header.Get("index_path"))
uri, _ := r.URL.Parse(r.Header.Get("index_path")) uri, _ := r.URL.Parse(r.Header.Get("index_path"))
http.Redirect(w, r, uri.Path+"?workflow="+uri.Query().Get("workflow"), http.StatusTemporaryRedirect) http.Redirect(w, r, uri.Path+"?bench="+uri.Query().Get("bench"), http.StatusTemporaryRedirect)
return return
} }
} }
@ -350,8 +350,8 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
}, },
}, Help: "组件列表"}, }, Help: "组件列表"},
"workflow": &ctx.Config{Name: "workflow", Value: map[string]interface{}{}, Help: "默认组件"}, "bench": &ctx.Config{Name: "bench", Value: map[string]interface{}{}, Help: "默认组件"},
"workflow_view": &ctx.Config{Name: "workflow_view", Value: map[string]interface{}{ "bench_view": &ctx.Config{Name: "bench_view", Value: map[string]interface{}{
"base": []interface{}{"key", "share", "comment", "creator", "create_time", "modify_time", "commands"}, "base": []interface{}{"key", "share", "comment", "creator", "create_time", "modify_time", "commands"},
"link": []interface{}{"share", "comment", "creator", "link"}, "link": []interface{}{"share", "comment", "creator", "link"},
}, Help: "默认组件"}, }, Help: "默认组件"},
@ -844,21 +844,74 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
m.Appendv("login", login) m.Appendv("login", login)
m.Echo(sessid) m.Echo(sessid)
}}, }},
"workflow": &ctx.Command{Name: "workflow", Help: "任务列表", Form: map[string]int{"view": 1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { "bench": &ctx.Command{Name: "bench", Help: "任务列表", Form: map[string]int{"view": 1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
flow := m.Confv("workflow").(map[string]interface{}) default_com := "default bench"
if len(arg) > 0 && arg[0] == "delete" { default_cmd := map[string]interface{}{}
delete(flow, arg[1]) if len(arg) > 0 && arg[0] == "copy" { // 复制工作流
bench := m.Confv("bench", arg[1]).(map[string]interface{})
for k, v := range bench["commands"].(map[string]interface{}) {
default_cmd[k] = v
}
arg[0] = "create"
default_com = bench["comment"].(string)
m.Option("bench", "")
}
if len(arg) > 0 && arg[0] == "create" { // 创建工作流
create_time := time.Now().Format(m.Conf("time_format"))
key := m.Option("bench")
if key == "" {
key = m.Sess("aaa").Cmd("md5", m.Option("remote_addr"), create_time).Result(0)
}
link := fmt.Sprintf("%s?bench=%s", m.Conf("site"), key)
if _, ok := m.Confv("bench").(map[string]interface{}); !ok {
m.Log("info", "%s create bench %s", m.Option("username"), key)
m.Confv("bench", key, map[string]interface{}{
"remote_addr": m.Option("remote_addr"),
"modify_time": create_time,
"create_time": create_time,
"creator": m.Option("username"),
"share": "protected",
"link": link,
"comment": default_com,
"key": key,
"commands": default_cmd,
})
}
m.Append("key", key)
m.Echo(link)
return
}
bench := m.Confv("bench").(map[string]interface{})
if len(arg) > 0 && arg[0] == "check" { // 检查工作流
if bench["creator"].(string) != arg[1] {
switch bench["share"].(string) {
case "private":
m.Echo("private")
return
case "protected":
m.Echo("protected")
case "public":
}
}
return
}
if len(arg) > 0 && arg[0] == "delete" { // 删除工作流
delete(bench, arg[1])
arg = arg[2:] arg = arg[2:]
} }
if len(arg) == 0 { if len(arg) == 0 { // 查看工作流
view := "base" view := "base"
if m.Has("view") { if m.Has("view") {
view = m.Option("view") view = m.Option("view")
} }
for _, v := range flow { for _, v := range bench {
val := v.(map[string]interface{}) val := v.(map[string]interface{})
for _, k := range m.Confv("workflow_view", view).([]interface{}) { for _, k := range m.Confv("bench_view", view).([]interface{}) {
switch v := val[k.(string)].(type) { switch v := val[k.(string)].(type) {
case map[string]interface{}: case map[string]interface{}:
b, _ := json.Marshal(v) b, _ := json.Marshal(v)
@ -874,11 +927,12 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
return return
} }
if len(arg) > 1 { if len(arg) > 1 { // 编辑工作流
m.Confv("workflow", strings.Split(arg[0], "."), arg[1]) m.Confv("bench", strings.Split(arg[0], "."), arg[1])
} }
msg := m.Spawn().Put("option", "_cache", flow).Cmd("trans", "_cache", arg[0]) // 查看工作流
msg := m.Spawn().Put("option", "_cache", bench).Cmd("trans", "_cache", arg[0])
m.Copy(msg, "append").Copy(msg, "result") m.Copy(msg, "append").Copy(msg, "result")
}}, }},
@ -957,42 +1011,17 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
} }
} }
protected := false bench_share := ""
workflow, ok := m.Confv("workflow", m.Option("workflow")).(map[string]interface{})
if right { if right {
if !ok { // 创建工作流 if _, ok := m.Confv("bench", m.Option("bench")).(map[string]interface{}); !ok { // 创建工作流
create_time := time.Now().Format(m.Conf("time_format")) m.Append("redirect", fmt.Sprintf("?bench=%s", m.Spawn().Cmd("bench", "create").Append("key")))
id := m.Option("workflow")
if id == "" {
id = m.Sess("aaa").Cmd("md5", m.Option("remote_addr"), create_time).Result(0)
}
m.Confv("workflow", id, map[string]interface{}{
"remote_addr": m.Option("remote_addr"),
"modify_time": create_time,
"create_time": create_time,
"creator": m.Option("username"),
"share": "protected",
"link": fmt.Sprintf("%s?workflow=%s", m.Conf("site"), id),
"comment": "default flow",
"key": id,
"commands": map[string]interface{}{},
})
m.Append("redirect", fmt.Sprintf("?workflow=%s", id))
return return
} }
if bench_share = m.Spawn().Cmd("bench", "check", m.Option("username")).Result(0); bench_share == "private" {
if workflow["creator"].(string) != m.Option("username") { return
switch workflow["share"].(string) {
case "private":
return
case "protected":
protected = true
case "public":
}
} }
} }
m.Log("info", "group: %v, order: %v, right: %v, share: %v", group, order, right, workflow["share"]) m.Log("info", "group: %v, order: %v, right: %v, share: %v", group, order, right, bench_share)
for count := 0; count == 0; group, order, right = "login", "", true { for count := 0; count == 0; group, order, right = "login", "", true {
for _, v := range m.Confv("componet", group).([]interface{}) { for _, v := range m.Confv("componet", group).([]interface{}) {
@ -1067,9 +1096,9 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
if order != "" || (val["pre_run"] != nil && val["pre_run"].(bool)) { if order != "" || (val["pre_run"] != nil && val["pre_run"].(bool)) {
if val["componet_cmd"] != nil { if val["componet_cmd"] != nil {
if !protected { if bench_share != "protected" {
m.Confv("workflow", []interface{}{m.Option("workflow"), "commands", m.Option("componet_name_order")}, args[1:]) m.Confv("bench", []interface{}{m.Option("bench"), "commands", m.Option("componet_name_order")}, args[1:])
m.Confv("workflow", []interface{}{m.Option("workflow"), "modify_time"}, time.Now().Format(m.Conf("time_format"))) m.Confv("bench", []interface{}{m.Option("bench"), "modify_time"}, time.Now().Format(m.Conf("time_format")))
} }
msg.Cmd(args) msg.Cmd(args)

View File

@ -98,7 +98,7 @@ function add_command() {
"dataset": { "dataset": {
"componet_group": "index", "componet_group": "index",
"componet_name": "command", "componet_name": "command",
"componet_workflow": context.Search("workflow"), "componet_bench": context.Search("bench"),
"componet_name_alias": name, "componet_name_alias": name,
"componet_name_order": code.ncommand-1, "componet_name_order": code.ncommand-1,
} }
@ -219,7 +219,7 @@ function sort_table(table, index, sort_asc) {
if (sort_asc) { if (sort_asc) {
method = function(a, b) {return Date.parse(a) > Date.parse(b)} method = function(a, b) {return Date.parse(a) > Date.parse(b)}
sort_order = "time" sort_order = "time"
} else { } else {
method = function(a, b) {return Date.parse(a) < Date.parse(b)} method = function(a, b) {return Date.parse(a) < Date.parse(b)}
sort_order = "time_r" sort_order = "time_r"
} }
@ -227,7 +227,7 @@ function sort_table(table, index, sort_asc) {
if (sort_asc) { if (sort_asc) {
method = function(a, b) {return parseInt(a) > parseInt(b)} method = function(a, b) {return parseInt(a) > parseInt(b)}
sort_order = "int" sort_order = "int"
} else { } else {
method = function(a, b) {return parseInt(a) < parseInt(b)} method = function(a, b) {return parseInt(a) < parseInt(b)}
sort_order = "int_r" sort_order = "int_r"
} }
@ -681,26 +681,26 @@ function init_userinfo() {
}) })
} }
function init_workflow() { function init_bench() {
var max = 0 var max = 0
for (var k in workflow.commands) { for (var k in bench.commands) {
if (parseInt(k) > max) { if (parseInt(k) > max) {
max = parseInt(k) max = parseInt(k)
} }
} }
if (workflow.commands[""]) { if (bench.commands[""]) {
var option = document.querySelector("form.option.command") var option = document.querySelector("form.option.command")
var cmd = option.querySelector("input[name=cmd]") var cmd = option.querySelector("input[name=cmd]")
cmd.value = workflow.commands[""].join(" ") cmd.value = bench.commands[""].join(" ")
check_option(option) check_option(option)
} }
for (var i = 1; i <= max; i++) { for (var i = 1; i <= max; i++) {
var fieldset = add_command() var fieldset = add_command()
if (workflow.commands[i]) { if (bench.commands[i]) {
var cmd = fieldset.querySelector("input[name=cmd]") var cmd = fieldset.querySelector("input[name=cmd]")
cmd.value = workflow.commands[i].join(" ") cmd.value = bench.commands[i].join(" ")
var option = fieldset.querySelector("form.option") var option = fieldset.querySelector("form.option")
check_option(option) check_option(option)
var option = fieldset.querySelector("form.option") var option = fieldset.querySelector("form.option")
@ -721,7 +721,7 @@ window.onload = function() {
init_context() init_context()
init_command() init_command()
init_userinfo() init_userinfo()
init_workflow() init_bench()
init_control() init_control()
} }

View File

@ -104,8 +104,8 @@
</head> </head>
<body onkeyup="return onaction(event, 'keymap')" onkeydown="return onaction(event, 'scroll')"> <body onkeyup="return onaction(event, 'keymap')" onkeydown="return onaction(event, 'scroll')">
<script> <script>
{{$id := option . "workflow"|option}} {{$id := option . "bench"|option}}
var workflow ={{conf . "workflow" $id}} var bench ={{conf . "bench" $id}}
</script> </script>
{{end}} {{end}}
@ -133,7 +133,7 @@
<form class="option {{option .Meta "componet_name"}}" <form class="option {{option .Meta "componet_name"}}"
data-componet_group="{{option . "componet_group"|meta}}" data-componet_group="{{option . "componet_group"|meta}}"
data-componet_name="{{option . "componet_name"|meta}}" data-componet_name="{{option . "componet_name"|meta}}"
data-componet_workflow="{{option . "workflow"|meta}}" data-componet_bench="{{option . "bench"|meta}}"
{{if eq $form_type "upload"}} {{if eq $form_type "upload"}}
method="POST" action="/upload" enctype="multipart/form-data" method="POST" action="/upload" enctype="multipart/form-data"
onsubmit="onaction(event,'upload')" onsubmit="onaction(event,'upload')"