From 0f15e109ad9f3f8519adfba48e12b6316d1af51e Mon Sep 17 00:00:00 2001 From: shaoying Date: Mon, 24 May 2021 00:03:33 +0800 Subject: [PATCH] opt table.js --- frame.js | 32 +++++++++++---------- lib/user.js | 2 +- page/index.js | 3 ++ plugin/input.js | 7 ----- plugin/state.js | 75 ++++++++++++++++++++++++------------------------- plugin/table.js | 70 +++------------------------------------------ 6 files changed, 62 insertions(+), 127 deletions(-) diff --git a/frame.js b/frame.js index ce59f1b3..5aeac16a 100644 --- a/frame.js +++ b/frame.js @@ -82,10 +82,7 @@ Volcanos("ondaemon", {help: "推荐引擎", list: [], _init: function(can, name) }, grow: function(can, msg, arg) { var sub = can.ondaemon._list[msg.Option("_target")] - if (!sub || !sub._outputs || !sub._outputs.length) { return } - - var out = sub._outputs[sub._outputs.length-1] - out.onimport._grow(out, arg.join("")) + sub.onimport._grow(sub, arg.join("")) }, toast: function(can, msg, arg) { can.onmotion.float.add(can, "float", can.core.CallFunc(can.user.toast, {can: can, msg: msg, cmds: arg})) @@ -166,7 +163,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, }, _option: function(can, meta, option) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []) function add(item, next) { item._input != "button" && item.type != "button" && index++ - Volcanos(item.name, {_follow: can.core.Keys(can._follow, item.name), _target: can.onappend.input(can, item, args[index], option), + return Volcanos(item.name, {_follow: can.core.Keys(can._follow, item.name), _target: can.onappend.input(can, item, args[index], option), _option: can._option, _action: can._action, _output: can._output, _status: can._status, Option: can.Option, Action: can.Action, Status: can.Status, CloneInput: function() { add(item)._target.focus() }, CloneField: function() { can.Clone() }, @@ -176,6 +173,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, return msg.Option("_handle", "true"), can.core.CallFunc(input.onaction[cmds[1]], {event: event, can: input, msg: msg}) } + var table = can.core.Value(can, "_outputs.-1") + if (msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && table.onaction[cmds[1]]) { + return msg.Option("_handle", "true"), can.core.CallFunc(table.onaction[cmds[1]], {event: event, can: table, msg: msg}) + } + return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent) }, can._inputs[item.name] = input @@ -210,14 +212,16 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, }) if (msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && can.onaction[cmds[1]]) { - return can.onaction[cmds[1]](event, can, cmds[1]) + return msg.Option("_handle", "true"), can.core.CallFunc(can.onaction[cmds[1]], {event: event, can: can, msg: msg}) } var feature = can.Conf("feature") var input = msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && feature && feature[cmds[1]]; if (input) { can.user.input(event, can, input, function(ev, button, data, list, args) { var msg = can.request(event, {_handle: "true"}, can.Option()) - can.onappend._output(can, meta, event, cmds.slice(0, 2).concat(args), cb, true) + can.onappend._output(can, meta, event, cmds.slice(0, 2).concat(args), function(msg) { + can.onappend._output(can, meta, event, can.Pack(), cb) + }, true) }) return } @@ -330,9 +334,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, can.core.List(array, function(item, index) { line[item.key||line.name] = item.value }) } - return {type: "td", inner: value, onclick: function(event) { var target = event.target - if (target.tagName == "INPUT" && target.type == "button") { - var msg = can.sup.request(event, can.Option(), line) + return {text: [value, "td"], onclick: function(event) { var target = event.target + if (target.tagName == "INPUT" && target.type == "button") { var msg = can.sup.request(event, can.Option()) + key == "value"? can.core.List(array, function(item, index) { msg.Option(item.key, item.value) }): msg.Option(line) return can.run(event, ["action", target.name], function(msg) { can.run() }, true) } @@ -340,11 +344,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, can.onimport._init(can, msg, [], cb, can._output) }) }, ondblclick: function(event) { var target = event.target - can.onmotion.modify(can, target, function(event, value, old) { - var msg = can.sup.request(event, can.Option(), line) - can.run(event, ["action", "modify", key, value], function(msg) { - can.user.toast(can, "修改成功") - }, true) + can.onmotion.modify(can, target, function(event, value, old) { var msg = can.sup.request(event, can.Option()) + key == "value"? can.core.List(array, function(item, index) { msg.Option(item.key, item.value) }): msg.Option(line) + can.run(event, ["action", "modify", key == "value"? line.key||line.name: key, value], function(msg) { can.run() }, true) }) }} }); table && can.page.Modify(can, table, {className: "content"}) diff --git a/lib/user.js b/lib/user.js index 25ea30df..bd0a545e 100644 --- a/lib/user.js +++ b/lib/user.js @@ -177,7 +177,7 @@ Volcanos("user", {help: "用户操作", agent: { } can.onappend.figure(can, item, item.value, function() {}, target) - target.value = target.value || msg.Option(item.name) || item.value + target.value = target.value || msg.Option(item.name) } return {type: "tr", list: [{type: "td", list: [{text: item.name||""}]}, {type: "td", list: [item]} ]} diff --git a/page/index.js b/page/index.js index c64668df..8b9fbeb0 100644 --- a/page/index.js +++ b/page/index.js @@ -112,6 +112,9 @@ Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js", ]}, }}, "operate": {name: "运维群", storm: { + "aaa": {name: "权限 aaa", index: [ + "user", + ]}, "cli": {name: "系统 cli", index: [ "system", "daemon", "python", "output", "runtime", "process", diff --git a/plugin/input.js b/plugin/input.js index f66bbdfe..ed3feef2 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -3,17 +3,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, }) Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, list, cb, target) { can.base.isFunc(cb) && cb(); switch (meta.type) { - case "textarea": - case "text": - !target.placeholder && (target.placeholder = can.user.trans(can, meta.name) || "") - !target.title && (target.title = target.placeholder) - break case "select": meta.value && (target.value = meta.value); break case "button": meta.action == "auto" && target.click(); break } }, - upload: function(event, can) { can.user.upload(event, can) }, "执行": function(event, can) { can.run(event) }, "刷新": function(event, can) { can.run(event) }, "查看": function(event, can) { can.run(event) }, @@ -40,7 +34,6 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, case "m": if (event.ctrlKey) { can.CloneField() } break } }, - onkeyup: function(event, can) { }, }) Volcanos("onexport", {help: "导出数据", list: []}) diff --git a/plugin/state.js b/plugin/state.js index 1d193799..5b286e2d 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -1,8 +1,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) { }, - _process: function(can, msg, cmds, cb, silent) { - return can.core.CallFunc([can.onimport, msg.Option("_process")], [can, msg, cmds, cb, silent]) - }, + _process: function(can, msg) { return can.core.CallFunc([can.onimport, msg.Option("_process")], [can, msg]) }, + _refresh: function(can, msg) { can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() { var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1}) @@ -10,41 +9,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, }) return true }, - _hold: function(can, msg) { return true }, - _back: function(can) { - can._history.pop(); for (var his = can._history.pop(); his; his = can._history.pop()) { - if (his[0] == "action") { continue } - can.page.Select(can, can._option, "textarea.args,input.args,select.args", function(item, index) { - item.value = his[index]||"" - }), can.onappend._output(can, can.Conf(), {}, can.Pack([])) - break - } - !his && can.onappend._output(can, can.Conf(), {}, can.Pack([])) - return true - }, - - _progress: function(can, msg, cmds, cb, silent) { - var size = msg.Append("size") || msg.Append("count") - if (size != "" && size == msg.Append("total")) { return true } - - can.user.toast(can, { - title: can._name+" "+msg.Append("step")+"% ", width: 400, - content: "执行进度: "+can.base.Size(size||0)+"/"+can.base.Size(msg.Append("total")||"1000")+"\n"+msg.Append("name"), - duration: 1100, progress: parseInt(msg.Append("step")), - }) - - can.page.Select(can, can._output, "td", function(td) { - if (td.innerText == msg.Option("name")) { - can.page.ClassList.add(can, td, "done") - } - }) - - can.core.Timer(1000, function() { - var res = can.request({}, {_progress: msg.Option("_progress")}) - return can.onappend._output(can, can.Conf(), res._event, can.Pack(cmds), cb, silent) - }) - return true - }, _field: function(can, msg) { msg.Table(function(item) { can.onappend._plugin(can, item, {}, function(sub, meta) { sub.run = function(event, cmds, cb, silent) { @@ -56,6 +20,41 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, }) }) return true }, + _inner: function(can, msg) { + can.onappend.table(can, msg, function(value, key, index, line, array) { + return can.onimport._table(can, value, key, index, line, array) + }, can._output) + + can.onappend.board(can, msg.Result(), can._output) + can.onmotion.story.auto(can, can._output) + can.page.Modify(can, can._output, {style: {display: "block"}}) + return true + }, + _hold: function(can, msg) { return true }, + _back: function(can) { + can._history.pop(); for (var his = can._history.pop(); his; his = can._history.pop()) { + if (his[0] == "action") { continue } + can.page.Select(can, can._option, "textarea.args,input.args,select.args", function(item, index) { + item.value = his[index]||"" + }), can.onappend._output(can, can.Conf(), {}, can.Pack()) + break + } + !his && can.onappend._output(can, can.Conf(), {}, can.Pack()) + return true + }, + + _grow: function(can, str) { + if (can.page.Select(can, can._output, "div.code", function(div) { + can.page.Modify(can, div, {style: {"max-height": 400}}) + can.page.Append(can, div, [{text: [str]}]) + div.scrollBy(0, 10000) + return true + }).length == 0) { + can.onappend.board(can, str) + } + // can.onmotion.story.auto(can, can._output) + }, + _open: function(can, msg) { can.user.open(msg.Option("_arg")) return true diff --git a/plugin/table.js b/plugin/table.js index 5d368e9c..5fcc9f69 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -1,62 +1,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { - can.onmotion.clear(can) - can.page.Append(can, target, [can.onimport._control(can, msg)]) - can.onappend.table(can, msg, function(value, key, index, line, array) { - return can.onimport._table(can, value, key, index, line, array, cb) - }) - - can.base.isFunc(cb) && cb(msg) + can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) + can.onappend.table(can, msg) can.onappend.board(can, msg.Result()) - can.onmotion.story.auto(can, can._output) - }, - _table: function(can, value, key, index, line, array, cb) { - return {text: [value, "td"], onclick: function(event) { var target = event.target - if (target.tagName == "INPUT" && target.type == "button") { var msg = can.sup.request(event, can.Option()) - key == "value"? can.core.List(array, function(item, index) { msg.Option(item.key, item.value) }): msg.Option(line) - return can.run(event, ["action", target.name], function(msg) { can.run() }, true) - } - - if (can.sup.onaction.change(event, can.sup, key, value, function(msg) {}).length > 0) { return } - - }, ondblclick: function(event) { - can.onmotion.modify(can, event.target, function(event, value, old) { - var msg = can.sup.request(event, can.Option()); msg = can.sup.request(event, line) - can.run(event, ["action", "modify", key == "value"? line.key||line.name: key, value], function(msg) { }, true) - }) - }} + can.onmotion.story.auto(can, target) }, - _process: function(can, msg) { - return can.core.CallFunc([can.onimport, msg.Option("_process")], [can, msg]) - }, - - _follow: function(can, msg) { - if (msg.Option("cache.status") == "stop") { return can.user.toast(can, msg.Option("cache.action")+" done!")} - - can.page.Modify(can, can._output, {className: "code", style: {"max-height": 400, "display": "block"}}) - can.page.Append(can, can._output, [{text: msg.Result()}]) - can._output.scrollBy(0, 1000) - - can.core.Timer(100, function() { var sub = can.request({}) - sub.Option("cache.hash", msg.Option("cache.hash")) - sub.Option("cache.begin", msg.Option("cache.begin")) - sub.Option("cache.limit", msg.Option("cache.limit")) - can.run(sub._event, ["action", msg.Option("cache.action")], function(msg) { - can.onimport._follow(can, msg) - }, true) - }) - return true - }, - _inner: function(can, msg) { - can.onappend.table(can, msg, function(value, key, index, line, array) { - return can.onimport._table(can, value, key, index, line, array) - }, can._output) - - can.onappend.board(can, msg.Result(), can._output) - can.onmotion.story.auto(can, can._output) - can.page.Modify(can, can._output, {style: {display: "block"}}) - return true - }, + _process: function(can, msg) { return can.core.CallFunc([can.onimport, msg.Option("_process")], [can, msg]) }, _control: function(can, msg) { var cb = can.onimport[msg.Option("_control")] @@ -113,17 +62,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }, data: {"className": "args"}}, ]} }, - _grow: function(can, str) { - if (can.page.Select(can, can._output, "div.code", function(div) { - can.page.Modify(can, div, {style: {"max-height": 400}}) - can.page.Append(can, div, [{text: [str]}]) - div.scrollBy(0, 10000) - return true - }).length == 0) { - can.onappend.board(can, str) - } - // can.onmotion.story.auto(can, can._output) - }, }) Volcanos("onaction", {help: "控件交互", list: []}) Volcanos("onexport", {help: "导出数据", list: []})