mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-25 16:58:06 +08:00
add flow
This commit is contained in:
parent
927fc6e5db
commit
6c8439711e
@ -1,7 +1,7 @@
|
||||
~stdio
|
||||
config load history.json history
|
||||
~web
|
||||
config load web.json
|
||||
# config load web.json
|
||||
|
||||
~aaa
|
||||
login root root
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
|
@ -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{}{
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -21,6 +21,35 @@
|
||||
}
|
||||
</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 {
|
||||
color:white;
|
||||
background-color:#272822;
|
||||
@ -124,7 +153,32 @@
|
||||
</fieldset>
|
||||
{{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"}}
|
||||
<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