From 6c8439711e45274b79427446edfb2047e0a5d14b Mon Sep 17 00:00:00 2001 From: shaoying Date: Sat, 8 Dec 2018 21:30:46 +0800 Subject: [PATCH] add flow --- etc/init.shy | 2 +- src/contexts/ctx/ctx.go | 9 ++++ src/contexts/web/web.go | 11 +++-- src/examples/code/code.go | 1 + usr/librarys/code.js | 89 +++++++++++++++++++++++++++++++++---- usr/librarys/context.js | 13 ++++++ usr/template/code/code.tmpl | 56 ++++++++++++++++++++++- 7 files changed, 166 insertions(+), 15 deletions(-) diff --git a/etc/init.shy b/etc/init.shy index f2fafafe..d532bfcd 100644 --- a/etc/init.shy +++ b/etc/init.shy @@ -1,7 +1,7 @@ ~stdio config load history.json history ~web - config load web.json + # config load web.json ~aaa login root root diff --git a/src/contexts/ctx/ctx.go b/src/contexts/ctx/ctx.go index a0e24f17..656120d8 100644 --- a/src/contexts/ctx/ctx.go +++ b/src/contexts/ctx/ctx.go @@ -2257,6 +2257,15 @@ var CGI = template.FuncMap{ return template.HTML(str) }, + "json": func(arg ...interface{}) interface{} { + if len(arg) == 0 { + return "" + } + + b, _ := json.Marshal(arg[0]) + return string(b) + }, + "list": func(arg interface{}) interface{} { n := 0 switch v := arg.(type) { diff --git a/src/contexts/web/web.go b/src/contexts/web/web.go index 2fd6f3bb..8415d575 100644 --- a/src/contexts/web/web.go +++ b/src/contexts/web/web.go @@ -227,8 +227,7 @@ func (web *WEB) Begin(m *ctx.Message, arg ...string) ctx.Server { web.ServeMux = http.NewServeMux() web.Template = template.New("render").Funcs(ctx.CGI) - web.Template.ParseGlob(path.Join(m.Conf("template_dir"), "/*.tmpl")) - web.Template.ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("template_sub"), "/*.tmpl")) + template.Must(web.Template.ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("template_sub"), "/*.tmpl"))) return web } func (web *WEB) Start(m *ctx.Message, arg ...string) bool { @@ -1079,8 +1078,12 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心", if order != "" || (val["pre_run"] != nil && val["pre_run"].(bool)) { if val["componet_cmd"] != nil { if bench_share != "protected" { - m.Confv("bench", []interface{}{m.Option("bench"), "commands", m.Option("componet_name_order")}, args[1:]) - m.Confv("bench", []interface{}{m.Option("bench"), "modify_time"}, time.Now().Format(m.Conf("time_format"))) + now := time.Now().Format(m.Conf("time_format")) + m.Confv("bench", []interface{}{m.Option("bench"), "commands", m.Option("componet_name_order")}, map[string]interface{}{ + "cmd": args[1:], + "now": now, + }) + m.Confv("bench", []interface{}{m.Option("bench"), "modify_time"}, now) } msg.Cmd(args) diff --git a/src/examples/code/code.go b/src/examples/code/code.go index 0e139a17..f06d65ac 100644 --- a/src/examples/code/code.go +++ b/src/examples/code/code.go @@ -36,6 +36,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心", }, "index": []interface{}{ map[string]interface{}{"componet_name": "head", "template": "head"}, + map[string]interface{}{"componet_name": "docker", "componet_help": "docker", "template": "docker"}, map[string]interface{}{"componet_name": "login", "componet_help": "login", "template": "componet", "componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"}, "inputs": []interface{}{ diff --git a/usr/librarys/code.js b/usr/librarys/code.js index 0c78d674..dcefce67 100644 --- a/usr/librarys/code.js +++ b/usr/librarys/code.js @@ -87,7 +87,7 @@ function del_command(target) { } } } -function add_command() { +function add_command(init) { var name = "command"+code.ncommand++ var fieldset = append_child(document.querySelector("body"), "fieldset") @@ -112,6 +112,21 @@ function add_command() { add_sort(append_child(fieldset, "table", {"className": "append "+name})) append_child(append_child(fieldset, "code", {"className": "result "+name}), "pre") + + if (init) { + return fieldset + } + + var cmds = document.querySelector("div.workflow ul.cmd") + var cmd = append_child(cmds, "li", { + "innertText": code.ncommand+": ", + "className": name, + "dataset": { + "cmd": code.ncommand-1, + } + }) + + init_docker() return fieldset } @@ -124,6 +139,11 @@ function send_command(form, cb) { data[form[i].name] = form[i].value } + var order = (data["componet_name_order"]||"") + var cmd = document.querySelector("div.workflow>ul>li>ul>li.command"+order) + var now = new Date() + cmd && (cmd.innerText = now.getFullYear()+"-"+(now.getMonth()+1)+"-"+now.getDay()+" "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" : "+order+" "+data["cmd"]) + context.GET("", data, function(msg) { msg = msg[0] @@ -261,11 +281,13 @@ function sort_table(table, index, sort_asc) { return sort_order } -function onaction(event, action) { +function onaction(event, action, arg) { var target = event.target var dataset = target.dataset switch (action) { + case "workflow": + break case "scroll": var body = document.getElementsByTagName("body")[0] if (target.tagName == "BODY") { @@ -692,15 +714,15 @@ function init_bench() { if (bench.commands[""]) { var option = document.querySelector("form.option.command") var cmd = option.querySelector("input[name=cmd]") - cmd.value = bench.commands[""].join(" ") + cmd.value = bench.commands[""].cmd.join(" ") check_option(option) } for (var i = 1; i <= max; i++) { - var fieldset = add_command() + var fieldset = add_command(true) if (bench.commands[i]) { var cmd = fieldset.querySelector("input[name=cmd]") - cmd.value = bench.commands[i].join(" ") + cmd.value = bench.commands[i].cmd.join(" ") var option = fieldset.querySelector("form.option") check_option(option) var option = fieldset.querySelector("form.option") @@ -708,9 +730,58 @@ function init_bench() { } } -function init_control() { - var option = document.querySelector("form.option.command") - var append = document.querySelector("table.append.command") +function init_docker() { + document.querySelectorAll("div.workflow").forEach(function(item) { + what = item + var moving = false + item.onclick = function(event) { + if (event.target != item) { + return + } + moving = !moving + } + item.onmousemove = function(event) { + if (event.target != item) { + return + } + if (moving) { + item.style.left = (item.offsetLeft+event.movementX)+"px" + item.style.top = (item.offsetTop+event.movementY)+"px" + } + } + }) + + document.querySelectorAll("div.workflow>span").forEach(function(item) { + item.onclick = function(event) { + item.dataset["hide"] = !right(item.dataset["hide"]) + item.parentElement.className = right(item.dataset["hide"])? "workflow min": "workflow" + } + }) + document.querySelectorAll("ul.docker>li>span").forEach(function(item) { + item.onclick = function(event) { + item.dataset["hide"] = !right(item.dataset["hide"]) + item.nextElementSibling.style.display = right(item.dataset["hide"])? "none": "" + } + }) + document.querySelectorAll("ul.docker>li>ul>li").forEach(function(item) { + item.onclick = function(event) { + var data = item.dataset + switch (data["action"]) { + case "create_fly": + location.search = "" + return + case "create_cmd": + add_command() + return + } + if (data["key"] && context.Search("bench") != data["key"]) { + context.Search("bench", data["key"]) + return + } + var cmd = document.querySelector("form.option.command"+data["cmd"]+" input[name=cmd]") + cmd.focus() + } + }) } window.onload = function() { @@ -722,6 +793,6 @@ window.onload = function() { init_command() init_userinfo() init_bench() - init_control() + init_docker() } diff --git a/usr/librarys/context.js b/usr/librarys/context.js index 83293494..7f95a03d 100644 --- a/usr/librarys/context.js +++ b/usr/librarys/context.js @@ -174,3 +174,16 @@ function insert_button(which, value, callback) { "type": "button", "value": value, "onclick": callback, }) } + +function right(arg) { + if (arg == "true") { + return true + } + if (arg == "false") { + return false + } + if (arg) { + return true + } + return false +} diff --git a/usr/template/code/code.tmpl b/usr/template/code/code.tmpl index 54dc3dea..2154a3b4 100644 --- a/usr/template/code/code.tmpl +++ b/usr/template/code/code.tmpl @@ -21,6 +21,35 @@ }