forked from x/ContextOS
add flow
This commit is contained in:
parent
927fc6e5db
commit
6c8439711e
@ -1,7 +1,7 @@
|
|||||||
~stdio
|
~stdio
|
||||||
config load history.json history
|
config load history.json history
|
||||||
~web
|
~web
|
||||||
config load web.json
|
# config load web.json
|
||||||
|
|
||||||
~aaa
|
~aaa
|
||||||
login root root
|
login root root
|
||||||
|
@ -2257,6 +2257,15 @@ var CGI = template.FuncMap{
|
|||||||
return template.HTML(str)
|
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{} {
|
"list": func(arg interface{}) interface{} {
|
||||||
n := 0
|
n := 0
|
||||||
switch v := arg.(type) {
|
switch v := arg.(type) {
|
||||||
|
@ -227,8 +227,7 @@ func (web *WEB) Begin(m *ctx.Message, arg ...string) ctx.Server {
|
|||||||
|
|
||||||
web.ServeMux = http.NewServeMux()
|
web.ServeMux = http.NewServeMux()
|
||||||
web.Template = template.New("render").Funcs(ctx.CGI)
|
web.Template = template.New("render").Funcs(ctx.CGI)
|
||||||
web.Template.ParseGlob(path.Join(m.Conf("template_dir"), "/*.tmpl"))
|
template.Must(web.Template.ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("template_sub"), "/*.tmpl")))
|
||||||
web.Template.ParseGlob(path.Join(m.Conf("template_dir"), m.Conf("template_sub"), "/*.tmpl"))
|
|
||||||
return web
|
return web
|
||||||
}
|
}
|
||||||
func (web *WEB) Start(m *ctx.Message, arg ...string) bool {
|
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 order != "" || (val["pre_run"] != nil && val["pre_run"].(bool)) {
|
||||||
if val["componet_cmd"] != nil {
|
if val["componet_cmd"] != nil {
|
||||||
if bench_share != "protected" {
|
if bench_share != "protected" {
|
||||||
m.Confv("bench", []interface{}{m.Option("bench"), "commands", m.Option("componet_name_order")}, args[1:])
|
now := time.Now().Format(m.Conf("time_format"))
|
||||||
m.Confv("bench", []interface{}{m.Option("bench"), "modify_time"}, 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)
|
msg.Cmd(args)
|
||||||
|
@ -36,6 +36,7 @@ var Index = &ctx.Context{Name: "code", Help: "代码中心",
|
|||||||
},
|
},
|
||||||
"index": []interface{}{
|
"index": []interface{}{
|
||||||
map[string]interface{}{"componet_name": "head", "template": "head"},
|
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",
|
map[string]interface{}{"componet_name": "login", "componet_help": "login", "template": "componet",
|
||||||
"componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
"componet_ctx": "aaa", "componet_cmd": "login", "arguments": []interface{}{"@username", "@password"},
|
||||||
"inputs": []interface{}{
|
"inputs": []interface{}{
|
||||||
|
@ -87,7 +87,7 @@ function del_command(target) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function add_command() {
|
function add_command(init) {
|
||||||
var name = "command"+code.ncommand++
|
var name = "command"+code.ncommand++
|
||||||
|
|
||||||
var fieldset = append_child(document.querySelector("body"), "fieldset")
|
var fieldset = append_child(document.querySelector("body"), "fieldset")
|
||||||
@ -112,6 +112,21 @@ function add_command() {
|
|||||||
|
|
||||||
add_sort(append_child(fieldset, "table", {"className": "append "+name}))
|
add_sort(append_child(fieldset, "table", {"className": "append "+name}))
|
||||||
append_child(append_child(fieldset, "code", {"className": "result "+name}), "pre")
|
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
|
return fieldset
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,6 +139,11 @@ function send_command(form, cb) {
|
|||||||
data[form[i].name] = form[i].value
|
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) {
|
context.GET("", data, function(msg) {
|
||||||
msg = msg[0]
|
msg = msg[0]
|
||||||
|
|
||||||
@ -261,11 +281,13 @@ function sort_table(table, index, sort_asc) {
|
|||||||
return sort_order
|
return sort_order
|
||||||
}
|
}
|
||||||
|
|
||||||
function onaction(event, action) {
|
function onaction(event, action, arg) {
|
||||||
var target = event.target
|
var target = event.target
|
||||||
var dataset = target.dataset
|
var dataset = target.dataset
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
case "workflow":
|
||||||
|
break
|
||||||
case "scroll":
|
case "scroll":
|
||||||
var body = document.getElementsByTagName("body")[0]
|
var body = document.getElementsByTagName("body")[0]
|
||||||
if (target.tagName == "BODY") {
|
if (target.tagName == "BODY") {
|
||||||
@ -692,15 +714,15 @@ function init_bench() {
|
|||||||
if (bench.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 = bench.commands[""].join(" ")
|
cmd.value = bench.commands[""].cmd.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(true)
|
||||||
if (bench.commands[i]) {
|
if (bench.commands[i]) {
|
||||||
var cmd = fieldset.querySelector("input[name=cmd]")
|
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")
|
var option = fieldset.querySelector("form.option")
|
||||||
check_option(option)
|
check_option(option)
|
||||||
var option = fieldset.querySelector("form.option")
|
var option = fieldset.querySelector("form.option")
|
||||||
@ -708,9 +730,58 @@ function init_bench() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function init_control() {
|
function init_docker() {
|
||||||
var option = document.querySelector("form.option.command")
|
document.querySelectorAll("div.workflow").forEach(function(item) {
|
||||||
var append = document.querySelector("table.append.command")
|
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() {
|
window.onload = function() {
|
||||||
@ -722,6 +793,6 @@ window.onload = function() {
|
|||||||
init_command()
|
init_command()
|
||||||
init_userinfo()
|
init_userinfo()
|
||||||
init_bench()
|
init_bench()
|
||||||
init_control()
|
init_docker()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,3 +174,16 @@ function insert_button(which, value, callback) {
|
|||||||
"type": "button", "value": value, "onclick": 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
|
||||||
|
}
|
||||||
|
@ -21,6 +21,35 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<style>
|
<style>
|
||||||
|
div.workflow {
|
||||||
|
position:fixed;
|
||||||
|
background-color:red;
|
||||||
|
top:200px;
|
||||||
|
left:20px;
|
||||||
|
width:40px;
|
||||||
|
height:20px;
|
||||||
|
overflow:hidden;
|
||||||
|
}
|
||||||
|
div.workflow:hover {
|
||||||
|
width:480px;
|
||||||
|
height:200px;
|
||||||
|
overflow:scroll;
|
||||||
|
}
|
||||||
|
div.workflow.min {
|
||||||
|
width:40px;
|
||||||
|
height:20px;
|
||||||
|
}
|
||||||
|
div.workflow ul.docker ul li {
|
||||||
|
}
|
||||||
|
div.workflow ul.docker ul li:hover {
|
||||||
|
background-color:green;
|
||||||
|
}
|
||||||
|
div.workflow ul.docker li span:hover {
|
||||||
|
background-color:green;
|
||||||
|
}
|
||||||
|
form.option div {
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
textarea.clipboard {
|
textarea.clipboard {
|
||||||
color:white;
|
color:white;
|
||||||
background-color:#272822;
|
background-color:#272822;
|
||||||
@ -124,7 +153,32 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "docker"}}{{conf . bench}}{{end}}
|
{{define "docker"}}
|
||||||
|
{{$key := option . "bench"}}
|
||||||
|
{{$bench := conf . "bench" $key}}
|
||||||
|
<script>var workflow = {{conf . "bench"}}</script>
|
||||||
|
<div class="workflow">
|
||||||
|
<span>flow</span>
|
||||||
|
<ul class="docker">
|
||||||
|
<li><span>工作流</span>
|
||||||
|
<ul class="fly">
|
||||||
|
<li data-action="create_fly">+ 创建工作流</li>
|
||||||
|
{{range $key, $item := conf . "bench"}}
|
||||||
|
<li data-key="{{$key}}">{{index $item "modify_time"}} {{index $item "comment"}}({{index $item "creator"}})</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><span>命令行</span>
|
||||||
|
<ul class="cmd">
|
||||||
|
<li data-action="create_cmd">+ 创建命令行</li>
|
||||||
|
{{range $index, $cmd := index $bench "commands"}}
|
||||||
|
<li class="command{{$index}}" data-cmd="{{$index}}">{{index $cmd "now"|option}} {{$index}}: {{index $cmd "cmd"|option}}</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
{{define "componet"}}
|
{{define "componet"}}
|
||||||
<fieldset><legend title="{{option .Meta "componet_help"}}">{{option .Meta "componet_help"}}({{option .Meta "componet_ctx"}}.{{option .Meta "componet_cmd"}})</legend>
|
<fieldset><legend title="{{option .Meta "componet_help"}}">{{option .Meta "componet_help"}}({{option .Meta "componet_ctx"}}.{{option .Meta "componet_cmd"}})</legend>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user