diff --git a/src/contexts/nfs/nfs.go b/src/contexts/nfs/nfs.go index 528dab0a..84d922da 100644 --- a/src/contexts/nfs/nfs.go +++ b/src/contexts/nfs/nfs.go @@ -1122,6 +1122,9 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", "git": &ctx.Config{Name: "git", Value: map[string]interface{}{ "args": []interface{}{"-C", "@git_dir"}, "info": map[string]interface{}{"cmds": []interface{}{"log", "status", "branch"}}, + "update": map[string]interface{}{"cmds": []interface{}{"stash", "pull", "pop"}}, + "pop": map[string]interface{}{"args": []interface{}{"stash", "pop"}}, + "commit": map[string]interface{}{"args": []interface{}{"commit", "-am"}}, "branch": map[string]interface{}{"args": []interface{}{"branch", "-v"}}, "status": map[string]interface{}{"args": []interface{}{"status", "-sb"}}, "log": map[string]interface{}{"args": []interface{}{"log", "-n", "limit", "--reverse", "pretty", "date"}}, diff --git a/src/contexts/ssh/ssh.go b/src/contexts/ssh/ssh.go index fc8222b8..6548ed90 100644 --- a/src/contexts/ssh/ssh.go +++ b/src/contexts/ssh/ssh.go @@ -85,6 +85,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", "componet_args": []interface{}{}, "inputs": []interface{}{ map[string]interface{}{"type": "button", "value": "编译"}, }, + "display": map[string]interface{}{"hide_append": true, "show_result": true}, }, map[string]interface{}{"componet_name": "runtime", "componet_help": "runtime", "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", @@ -93,51 +94,70 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", map[string]interface{}{"type": "button", "value": "运行"}, }, }, - map[string]interface{}{"componet_name": "ifconfig", "componet_help": "ifconfig", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", - "componet_type": "private", "componet_ctx": "tcp", "componet_cmd": "ifconfig", - "componet_args": []interface{}{}, "inputs": []interface{}{ - map[string]interface{}{"type": "button", "value": "网卡"}, - }, - }, map[string]interface{}{"componet_name": "context", "componet_help": "context", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_type": "private", "componet_ctx": "ctx", "componet_cmd": "context", "componet_args": []interface{}{}, "inputs": []interface{}{ map[string]interface{}{"type": "button", "value": "模块"}, }, }, - map[string]interface{}{"componet_name": "dir", "componet_help": "dir", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", - "componet_type": "private", "componet_ctx": "nfs", "componet_cmd": "dir", + map[string]interface{}{"componet_name": "ifconfig", "componet_help": "ifconfig", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "private", "componet_ctx": "tcp", "componet_cmd": "ifconfig", "componet_args": []interface{}{}, "inputs": []interface{}{ - map[string]interface{}{"type": "text", "name": "pod"}, - map[string]interface{}{"type": "button", "value": "执行"}, - }, - "exports": []interface{}{"dir", "filename"}, - "display": map[string]interface{}{ - "hide_result": true, - }, - }, - map[string]interface{}{"componet_name": "git", "componet_help": "git", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", - "componet_type": "private", "componet_ctx": "cli", "componet_cmd": "git", - "componet_args": []interface{}{}, "inputs": []interface{}{ - map[string]interface{}{"type": "text", "name": "dir", "imports": "plugin_dir"}, - map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{"status", "diff"}}, - map[string]interface{}{"type": "button", "value": "执行"}, + map[string]interface{}{"type": "button", "value": "网卡"}, }, }, map[string]interface{}{"componet_name": "pod", "componet_help": "pod", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "remote", "componet_args": []interface{}{}, "inputs": []interface{}{ map[string]interface{}{"type": "button", "value": "执行"}, }, "exports": []interface{}{"pod", "key"}, }, + map[string]interface{}{"componet_name": "dir", "componet_help": "dir", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "private", "componet_ctx": "nfs", "componet_cmd": "dir", + "componet_args": []interface{}{}, "inputs": []interface{}{ + map[string]interface{}{"type": "text", "name": "dir"}, + map[string]interface{}{"type": "button", "value": "执行"}, + }, + "display": map[string]interface{}{"hide_result": true}, + "exports": []interface{}{"dir", "filename"}, + }, + map[string]interface{}{"componet_name": "git", "componet_help": "git", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "private", "componet_ctx": "cli", "componet_cmd": "git", + "componet_args": []interface{}{}, "inputs": []interface{}{ + map[string]interface{}{"type": "text", "name": "dir", "imports": "plugin_dir"}, + map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{ + "branch", "status", "diff", "log", "update", "commit", "push", + }}, + map[string]interface{}{"type": "button", "value": "执行"}, + }, + }, + map[string]interface{}{"componet_name": "spide", "componet_help": "spide", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "private", "componet_ctx": "web", "componet_cmd": "spide", + "componet_args": []interface{}{}, "inputs": []interface{}{ + map[string]interface{}{"type": "button", "value": "执行"}, + }, + "exports": []interface{}{"site", "key"}, + }, + map[string]interface{}{"componet_name": "get", "componet_help": "get", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "private", "componet_ctx": "web", "componet_cmd": "get", + "componet_args": []interface{}{}, "inputs": []interface{}{ + map[string]interface{}{"type": "text", "name": "spide", "imports": "plugin_site"}, + map[string]interface{}{"type": "text", "name": "url"}, + map[string]interface{}{"type": "button", "value": "执行"}, + }, + }, + }, + "company": []interface{}{ map[string]interface{}{"componet_name": "cmd", "componet_help": "cmd", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", + "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{}, "inputs": []interface{}{ map[string]interface{}{"type": "text", "name": "pod", "imports": "plugin_pod"}, @@ -147,12 +167,12 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", }, }, map[string]interface{}{"componet_name": "cmd", "componet_help": "cmd", - "componet_tmpl": "componet", "componet_view": "Runtime", "componet_init": "", + "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{}, "inputs": []interface{}{ map[string]interface{}{"type": "text", "name": "pod", "imports": "plugin_pod"}, map[string]interface{}{"type": "text", "name": "cmd", "value": "gg"}, - map[string]interface{}{"type": "select", "name": "sub", "values": []interface{}{"status", ""}}, + map[string]interface{}{"type": "select", "name": "sub", "values": []interface{}{"deploygo"}}, map[string]interface{}{"type": "text", "name": "sub", "imports": "plugin_dir"}, map[string]interface{}{"type": "text", "name": "sub", "imports": "plugin_branch"}, map[string]interface{}{"type": "button", "value": "执行"}, diff --git a/src/contexts/web/web.go b/src/contexts/web/web.go index eef0e85d..ac73e275 100644 --- a/src/contexts/web/web.go +++ b/src/contexts/web/web.go @@ -464,7 +464,13 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心", "spide": &ctx.Command{Name: "spide [which [client|cookie [name [value]]]]", Help: "爬虫配置", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { switch len(arg) { case 0: - m.Cmdy("ctx.config", "spide") + m.Confm("spide", func(key string, value map[string]interface{}) { + m.Add("append", "key", key) + m.Add("append", "protocol", kit.Chains(value, "client.protocol")) + m.Add("append", "hostname", kit.Chains(value, "client.hostname")) + m.Add("append", "path", kit.Chains(value, "client.path")) + }) + m.Sort("key").Table() case 1: m.Cmdy("ctx.config", "spide", arg[0]) case 2: diff --git a/usr/librarys/chat.css b/usr/librarys/chat.css index b0229f1f..01624f61 100644 --- a/usr/librarys/chat.css +++ b/usr/librarys/chat.css @@ -56,11 +56,12 @@ fieldset.Steam div.output tr.select { background-color:red; } fieldset.Steam div.create { - clear:both; + /* clear:both; */ } fieldset.Steam div.create pre:hover { background-color:red; } + fieldset div.output { clear:both; } diff --git a/usr/librarys/chat.js b/usr/librarys/chat.js index 54a13bf6..fb0c3e51 100644 --- a/usr/librarys/chat.js +++ b/usr/librarys/chat.js @@ -369,26 +369,26 @@ var page = Page({ var toggle = true pane.Action = { - "恢复": function(event) { + "恢复": function(event, value) { page.onlayout(event, page.conf.layout) }, - "缩小": function(event) { + "缩小": function(event, value) { page.onlayout(event, {action:60, source:60}) }, - "放大": function(event) { + "放大": function(event, value) { page.onlayout(event, {action:300, source:60}) }, - "最高": function(event) { + "最高": function(event, value) { page.onlayout(event, {action: -1}) }, - "最宽": function(event) { + "最宽": function(event, value) { page.onlayout(event, {river:0, storm:0}) }, - "最大": function(event) { + "最大": function(event, value) { (toggle = !toggle)? page.onlayout(event, page.conf.layout): page.onlayout(event, {river:0, action:-1, source:60}) page.target.Stop = !toggle }, - "全屏": function(event) { + "全屏": function(event, value) { page.onlayout(event, {header:0, footer:0, river:0, action: -1, storm:0}) }, } @@ -570,7 +570,8 @@ var page = Page({ conf.button.forEach(function(value, index) { buttons.push({"button": [value, function(event) { typeof conf["action"] == "function" && conf["action"](value, event) - typeof conf["action"] == "object" && conf["action"][value](event) + typeof conf["action"] == "object" && conf["action"][value](event, value) + pane.Button = value }]}) }) kit.InsertChild(pane, output, "div", buttons).className = "action "+form.dataset.componet_name @@ -583,13 +584,14 @@ var page = Page({ page.onlayout(null, page.conf.layout) kit.isMobile && page.action.Action["最宽"]() + ctx.Search("layout") && page.action.Action[ctx.Search("layout")]() page.footer.Order({"text": "", "ip": ""}, ["ip", "text"]) kit.isMobile && page.footer.Order({"text": "", "site": "", "ip": ""}, ["ip", "text", "site"]) page.header.Order({"user": "", "logout": "logout"}, ["logout", "user"], function(event, item, value) { switch (item) { case "title": - ctx.Search({"river": page.river.which.get(), "storm": page.storm.which.get()}) + ctx.Search({"river": page.river.which.get(), "storm": page.storm.which.get(), "layout": page.action.Button}) break case "user": var name = page.prompt("new name") diff --git a/usr/librarys/context.js b/usr/librarys/context.js index f78eec05..b94e377e 100644 --- a/usr/librarys/context.js +++ b/usr/librarys/context.js @@ -6,7 +6,19 @@ ctx = context = { } this.GET("", option, function(msg) { msg = msg && msg[0] - msg && (msg.__proto__ = (page || {})) + // msg && (msg.__proto__ = (page || {})) + msg.Result = msg.result? msg.result.join(""): "" + msg.Results = function() { + var s = msg.Result + s = s.replace(//g, ">") + s = s.replace(/\033\[1m/g, "") + s = s.replace(/\033\[36m/g, "") + s = s.replace(/\033\[32m/g, "") + s = s.replace(/\033\[31m/g, "") + s = s.replace(/\033\[m/g, "") + return s + } typeof cb == "function" && cb(msg || {}) }) }, diff --git a/usr/librarys/example.css b/usr/librarys/example.css index c4e42f5b..d5911f08 100644 --- a/usr/librarys/example.css +++ b/usr/librarys/example.css @@ -31,6 +31,22 @@ fieldset div.output div.item:hover { fieldset div.output div.item.select { background-color:red; } +fieldset div.output div.code { + color:white; + font-size:14px; + font-family:monospace; + background-color:#272822; + white-space:pre; + padding:10px; + overflow:auto; + border:solid 3px green; +} +fieldset div.output div.code span.red { + color:red; +} +fieldset div.output div.code span.green { + color:green; +} fieldset.toast { background-color:#ffffff00; diff --git a/usr/librarys/example.js b/usr/librarys/example.js index 0daa9101..9ad844a6 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -396,7 +396,7 @@ function Plugin(field, tool, args, plugin) { !display.hide_append && msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1], function(event, value) { page.Sync("plugin_"+exports[0]).set(value) }); - (display.display_result || !msg.append) && msg.result && kit.AppendChild(output, [{type: "code", list: [{text: [msg.result.join(""), "pre"]}]}]) + (display.show_result || !msg.append) && msg.result && kit.AppendChild(output, [{view: ["code", "div", msg.Results()]}]) })(msg) }) } diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js index f8239594..df0cb6b9 100644 --- a/usr/librarys/toolkit.js +++ b/usr/librarys/toolkit.js @@ -345,69 +345,48 @@ kit = toolkit = { }, RangeTable: function(table, index, sort_asc) { var list = table.querySelectorAll("tr") - var new_list = [] - var is_time = true - var is_number = true + var is_time = true, is_number = true for (var i = 1; i < list.length; i++) { - var value = Date.parse(list[i].childNodes[index].innerText) + var text = list[i].childNodes[index].innerText + var value = Date.parse(text) if (!(value > 0)) { is_time = false } - var value = parseInt(list[i].childNodes[index].innerText) - if (!(value >= 0 || value <= 0)) { + var value = parseInt(text) + if (text != "" && !(value >= 0 || value <= 0)) { is_number = false } - - new_list.push(list[i]) } - var sort_order = "" - if (is_time) { - if (sort_asc) { - method = function(a, b) {return Date.parse(a) > Date.parse(b)} - sort_order = "time" + var num_list = [], new_list = [] + for (var i = 1; i < list.length; i++) { + var text = list[i].childNodes[index].innerText + if (is_time) { + num_list.push(Date.parse(text)) + } else if (is_number) { + num_list.push(parseInt(text) || 0) } else { - method = function(a, b) {return Date.parse(a) < Date.parse(b)} - sort_order = "time_r" - } - } else if (is_number) { - if (sort_asc) { - method = function(a, b) {return parseInt(a) > parseInt(b)} - sort_order = "int" - } else { - method = function(a, b) {return parseInt(a) < parseInt(b)} - sort_order = "int_r" - } - } else { - if (sort_asc) { - method = function(a, b) {return a > b} - sort_order = "str" - } else { - method = function(a, b) {return a < b} - sort_order = "str_r" - } - } - - list = new_list - new_list = [] - for (var i = 0; i < list.length; i++) { - list[i].parentElement && list[i].parentElement.removeChild(list[i]) - for (var j = i+1; j < list.length; j++) { - if (typeof method == "function" && method(list[i].childNodes[index].innerText, list[j].childNodes[index].innerText)) { - var temp = list[i] - list[i] = list[j] - list[j] = temp - } + num_list.push(text) } new_list.push(list[i]) } for (var i = 0; i < new_list.length; i++) { + for (var j = i+1; j < new_list.length; j++) { + if (sort_asc? num_list[i] < num_list[j]: num_list[i] > num_list[j]) { + var temp = num_list[i] + num_list[i] = num_list[j] + num_list[j] = temp + var temp = new_list[i] + new_list[i] = new_list[j] + new_list[j] = temp + } + } + new_list[i].parentElement && new_list[i].parentElement.removeChild(new_list[i]) table.appendChild(new_list[i]) } - return sort_order }, OrderTable: function(table, field, cb) { if (!table) {return}