From b4541ab2f3181eb4a2bfd52bd9a1d304ec451232 Mon Sep 17 00:00:00 2001 From: shaoying Date: Sat, 16 Nov 2019 20:19:33 +0800 Subject: [PATCH] add feature --- src/examples/team/team.go | 47 ++++++++++++++++++++++++++++++++++----- usr/librarys/context.js | 11 +++++++-- usr/librarys/example.js | 10 ++++++--- usr/librarys/toolkit.js | 4 ++++ 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/src/examples/team/team.go b/src/examples/team/team.go index 4e702a06..747208d1 100644 --- a/src/examples/team/team.go +++ b/src/examples/team/team.go @@ -3,18 +3,55 @@ package team import ( "contexts/ctx" "contexts/web" + "fmt" ) var Index = &ctx.Context{Name: "team", Help: "团队中心", Caches: map[string]*ctx.Cache{}, Configs: map[string]*ctx.Config{}, Commands: map[string]*ctx.Command{ - "task": {Name: "task table title content", Help: "任务", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { - if len(arg) == 1 { - m.Cmdy("ssh.data", "show", arg[0], "fields", "id", "title", "content") - return + "task": {Name: "task table index level status begin_time close_time target detail", Help: "任务", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + switch arg[0] { + case "progress": + if len(arg) > 2 { + switch arg[2] { + case "prepare", "action", "cancel", "finish": + m.Cmd("ssh.data", "update", m.Option("table"), arg[1], "status", arg[2]) + arg = []string{arg[0], m.Option("table")} + } + } + m.Meta["append"] = []string{"prepare", "action", "cancel", "finish"} + m.Cmd("ssh.data", "show", arg[1:]).Table(func(index int, value map[string]string) { + m.Push(value["status"], + fmt.Sprintf("%s", value["id"], value["detail"], value["target"])) + }) + m.Table() + + default: + if len(arg) > 1 && arg[1] == "modify" { + m.Cmdy("ssh.data", "update", m.Option("table"), m.Option("index"), arg[2], arg[3]) + return + } + + if len(arg) < 8 { + if len(arg) > 2 { + arg = arg[:2] + } + if len(arg) > 1 && arg[1] == "" { + arg = arg[:1] + } + if len(arg) > 0 && arg[0] == "" { + arg = arg[:0] + } + m.Cmdy("ssh.data", "show", arg, "fields", "id", "status", "level", "target", "begin_time", "close_time") + return + } + m.Cmdy("ssh.data", "insert", arg[0], + "level", arg[2], "status", arg[3], + "begin_time", arg[4], "close_time", arg[5], + "target", arg[6], "detail", arg[7], arg[8:], + ) } - m.Cmdy("ssh.data", "insert", arg[0], "title", arg[1], "content", arg[2], arg[3:]) return }}, }, diff --git a/usr/librarys/context.js b/usr/librarys/context.js index 868881e0..2cfe4e6b 100644 --- a/usr/librarys/context.js +++ b/usr/librarys/context.js @@ -58,8 +58,15 @@ ctx = context = (function(kit) {var ctx = {__proto__: kit, Result: function() {return msg.result? msg.result.join(""): ""}, Results: function() {return kit.Color(msg.Result().replace(//g, ">"))}, Table: function(cb) {if (!msg.append || !msg.append.length || !msg[msg.append[0]]) {return} - return kit.List(msg[msg.append[0]], function(value, index, array) {var one = {} - msg.append.forEach(function(key) {one[key] = msg[key][index]}) + var max = "", len = 0 + kit.List(msg.append, function(key, index) { + if (msg[key].length > len) { + max = key, len = msg[key].length + } + }) + + return kit.List(msg[max], function(value, index, array) {var one = {} + msg.append.forEach(function(key) {one[key] = msg[key][index]||""}) return kit._call(cb, [one, index, array]) }) }, diff --git a/usr/librarys/example.js b/usr/librarys/example.js index 143b3579..adc12244 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -1059,9 +1059,9 @@ function Plugin(page, pane, field, inits, runs) { kit.classList.add(item, "args") break case "textarea": - var half = parseInt(item.half||"1")||1 + var half = parseFloat(item.half||"1")||1 kit.AppendChild(option, "br") - input.type = "textarea", item.style = "height:"+(item.height||"50px")+";width:"+((pane.target.clientWidth-35)/half)+"px" + input.type = "textarea", item.style = "height:"+(item.height||"50px")+";width:"+parseInt(((pane.target.clientWidth-35)/half))+"px" // no break case "text": item.value = value || item.value || "" @@ -1483,6 +1483,10 @@ function Output(plugin, type, msg, cb, target, option) { var text = td.innerText.trim() if (typeof meta[item] == "function") {meta[item](event, text); return} + var msg = plugin.Event(event) + kit.Selector(option, ".args", function(item) { + msg.Option(item.name, item.value) + }) item == "修改"? (text = kit.AppendChilds(td, [{type: "input", value: text, style: {width: td.clientWidth+"px"}, data: {onkeydown: function(event) { if (event.key == "Enter") { var id = "" @@ -1504,7 +1508,7 @@ function Output(plugin, type, msg, cb, target, option) { }, true) return } - }}}]).input, text.focus(), text.setSelectionRange(0, -1)): output[meta[item]]? output[meta[item]](event): plugin.Run(event, [(line[exports[1]]||"").trim(), meta[item]||item], function(msg) { + }}}]).input, text.focus(), text.setSelectionRange(0, -1)): output[meta[item]]? output[meta[item]](event): plugin.Run(event, [td.dataset.id||(line[exports[1]]||"").trim(), meta[item]||item], function(msg) { console.log(msg) }) diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js index 6e34ca0d..fc2d4614 100644 --- a/usr/librarys/toolkit.js +++ b/usr/librarys/toolkit.js @@ -363,6 +363,10 @@ kit = toolkit = (function() {var kit = {__proto__: document, kit.Selector(table, "tr", function(item, i) {item == target.parentElement && (index = i)}) var name = target.parentElement.parentElement.querySelector("tr").childNodes[i].innerText name.startsWith(field) && kit._call(event.type=="contextmenu"? cbs: cb, [event, item.innerText, name, item.parentNode.Meta, index]) + } else if (target.parentNode.tagName == "TD"){ + kit.Selector(table, "tr", function(item, i) {item == target.parentElement.parentElement && (index = i)}) + var name = target.parentElement.parentElement.parentElement.querySelector("tr").childNodes[i].innerText + name.startsWith(field) && kit._call(event.type=="contextmenu"? cbs: cb, [event, item.innerText, name, item.parentNode.Meta, index]) } }) kit.CopyText()