From 1c2aa0a123880b82eb1864b623c235c16c78ae6e Mon Sep 17 00:00:00 2001 From: shaoying Date: Wed, 23 Sep 2020 08:21:42 +0800 Subject: [PATCH] opt chat --- frame.js | 6 ++-- lib/user.js | 14 +++++---- pane/Header.js | 2 +- pane/River.js | 74 ++++++++++++++++++++++++++------------------- plugin/input/key.js | 8 ++++- 5 files changed, 62 insertions(+), 42 deletions(-) diff --git a/frame.js b/frame.js index cb0c40c8..ec4aa120 100644 --- a/frame.js +++ b/frame.js @@ -82,17 +82,17 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta, case "River": if (cmds.length == 0) { can.core.Item(can.onengine.river, function(key, value) { - msg.Push("key", key) + msg.Push("hash", key) msg.Push("name", value.name) }) } - if (cmds.length != 1 && cmds[1] != "storm") { + if (cmds.length != 1 && cmds[1] != "tool") { break } case "Storm": var river = can.onengine.river[cmds[0]]; if (!river) { break } can.core.Item(river.storm, function(key, value) { - msg.Push("key", key) + msg.Push("hash", key) msg.Push("name", value.name) msg.Push("count", (value.index||value.action).length) }) diff --git a/lib/user.js b/lib/user.js index 34de0267..e25ec9fe 100644 --- a/lib/user.js +++ b/lib/user.js @@ -111,13 +111,15 @@ var user = Volcanos("user", {help: "用户模块", var pval = item.value.slice(1).split("=")[1] } - can.require(["/plugin/input/"+pkey], function(can) { - can.core.Item(can.onfigure[pkey], function(key, value) { if (key.startsWith("on")) { - target[key] = function(event) { value(event, can, item, target) } - } }) - target.type != "button" && (target.value = pval) - }) + target.type != "button" && (target.value = pval) can.page.Modify(can, target, {autocomplete: "off"}) + can.require(["/plugin/input/"+pkey], function(can) { + can.onfigure._init(can, item, target, function(event) { + var msg = can.request(event); can.page.Select(can, ui.table, "select,input,textarea", function(item) { + item.name && item.value && msg.Option(item.name, item.value) + }) + }) + }) } } return {type: ["tr"], list: [ diff --git a/pane/Header.js b/pane/Header.js index ef5a90e7..c2fe6d14 100644 --- a/pane/Header.js +++ b/pane/Header.js @@ -15,7 +15,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, }) }, title: function(event, can, key) { var msg = can.request(event) - can.core.List(["share", "pod"], function(key) { var value = can.user.Search(can, key) + can.core.List(["pod"], function(key) { var value = can.user.Search(can, key) value != undefined && msg.Option(key, can.user.Search(can, key)) }) var args = {}; can.core.List(msg.option, function(key) { args[key] = msg.Option(key) }) diff --git a/pane/River.js b/pane/River.js index b3b3488f..7d7baae9 100644 --- a/pane/River.js +++ b/pane/River.js @@ -12,13 +12,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, can.run({}, [], function(sup) { can._output.innerHTML = ""; var select; sup.Table(function(value, index, array) { var view = can.onappend.item(can, can._output, "item", value, function(event, item) { var msg = can.request(event, {_msg: sup}) // 左键点击 - can.onimport.storm(event, can, value.key) + can.onimport.storm(event, can, value.hash) }, function(event) { // 右键点击 can.onappend.menu(can, sup, value) }) - if (index == 0 || [value.key, value.name].indexOf(can._main_river) > -1) { select = view } + if (index == 0 || [value.hash, value.name].indexOf(can._main_river) > -1) { select = view } }); select && select.click(), typeof cb == "function" && cb(sup) }) }, storm: function(event, can, river) { @@ -26,24 +26,33 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, return can.page.Modify(can, list, {style: {display: hide? "": "none"}}) } - can.run({}, [river], function(msg) { var which = 0 - list = can.page.Append(can, can._output, [{view: "sublist", list: msg.Table(function(value, index) { - river == can._main_river && value.key == can._main_storm && (which = index) - return {text: [value.name, "div", "subitem"], onclick: function(event) { + can.run({}, [river, "tool"], function(msg) { var which = 0 + list = can.page.Append(can, can._output, [{view: "sublist", list: msg.Table(function(storm, index) { + river == can._main_river && storm.hash == can._main_storm && (which = index) + return {text: [storm.name, "div", "subitem"], onclick: function(event) { // 左键点击 var msg = can.request(event) msg.Option(RIVER, can.Conf(RIVER, river)) - msg.Option(STORM, can.Conf(STORM, value.key)) + msg.Option(STORM, can.Conf(STORM, storm.hash)) can.run(event, ["search", "Action.onaction._init"]) - value.name != "main" && can.user.title(can.user.Search(can, "pod") || value.name) + storm.name != "main" && can.user.title(can.user.Search(can, "pod") || storm.name) can.page.Select(can, can._output, "div.subitem.select", function(item) { can.page.ClassList.del(can, item, "select") }), can.page.ClassList.add(can, event.target, "select") }, oncontextmenu: function(event) { // 右键点击 - can.user.carte(can, {}, ["添加工具", "保存", "删除"], function(ev, item, meta) { + can.user.carte(can, {}, ["添加工具", "重命名", "保存", "删除应用"], function(ev, item, meta) { switch (item) { + case "重命名": + can.user.input(event, can, ["name"], function(event, button, meta, list) { + var msg = can.request(event); msg.Option("hash", storm.hash) + can.run(event, [river, "tool", "action", "modify", "name", meta.name], function(msg) { + can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)}) + }) + return true + }) + break case "保存": var list = can.page.Select(can, document.body, "fieldset.Action>div.output>fieldset.plugin>form.option", function(item) { return JSON.stringify(can.page.Select(can, item, 'input[type="text"],select', function(item) { @@ -51,17 +60,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, })) }) - can.run(event, [can.Conf(RIVER), value.key, STORM, "action", "save"].concat(list), function(msg) { + can.run(event, [can.Conf(RIVER), storm.hash, STORM, "action", "save"].concat(list), function(msg) { can.user.toast(can, "保存成功", STORM) }) break - case "删除": - can.run(event, [can.Conf(RIVER), value.key, STORM, "action", "remove"], function(msg) { - can.user.Search(can, {river: can.Conf(RIVER)}) - }) || can.ondetail[item](event, can, value) - break default: - can.ondetail[item](event, can, item) + can.ondetail[item](event, can, item, storm) } }) }} @@ -82,7 +86,7 @@ Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: f {_input: "text", name: "简介", value: "hello"}, ], function(event, button, meta, list) { can.run(event, ["action", "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) { - // can.user.Search(can, {river: msg.Result()}) + can.user.Search(can, {river: msg.Result()}) }) return true }) @@ -90,19 +94,26 @@ Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: f "创建": function(event, can) { can.onaction.create(can) }, "刷新": function(event, can) { can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)}) }, }) -Volcanos("ondetail", {help: "菜单交互", list: ["添加应用", "添加设备", "添加用户", "重命名", "共享", "删除"], _init: function(can, msg, list, cb, target) { +Volcanos("ondetail", {help: "菜单交互", list: ["添加应用", "添加设备", "添加用户", "重命名", "共享", "删除群组"], _init: function(can, msg, list, cb, target) { can.onexport._init(can, msg, list, cb, target) }, - "添加工具": function(event, can, value) { + "添加工具": function(event, can, button, storm) { can.run(event, ["search", "Search.onimport.select", "command", "", ""], function(list) { - var args = []; can.core.List(list, function(item) { - args = args.concat([item[0], item[5], item[4], ""]) - }) - can.run(event, [can.Conf(RIVER), can.Conf(STORM), STORM, "action", "tool"].concat(args), function(msg) { - can.user.Search(can, {river: can.Conf(RIVER), STORM: can.Conf(STORM)}) + can.core.Next(list, function(item, next) { + can.run({}, [can.Conf(RIVER), "tool", "action", "insert", "hash", can.Conf(STORM)].concat(["pod", item[0], "ctx", item[5], "cmd", item[4]]), function(msg) { + next() + }) + }, function() { + can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)}) }) }) }, + "删除应用": function(event, can, button, storm) { + var msg = can.request(event); msg.Option("hash", storm.hash) + can.run(event, [can.Conf(RIVER), "tool", "action", "remove"], function(msg) { + can.user.Search(can, {river: can.Conf(RIVER)}) + }) + }, "添加应用": function(event, can, river, button) { can.user.input(event, can, [ @@ -110,8 +121,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["添加应用", "添加设备 {_input: "text", name: "名称", value: "hi"}, {_input: "text", name: "简介", value: "hello"}, ], function(event, button, meta, list) { - can.run(event, [can.Conf(RIVER), STORM, "action", "create"].concat(list), function(msg) { - can.user.Search(can, {river: can.Conf(RIVER), STORM: msg.Result()}) + can.run(event, [can.Conf(RIVER), "tool", "action", "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) { + can.user.Search(can, {river: can.Conf(RIVER), storm: msg.Result()}) }) return true }) @@ -140,7 +151,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["添加应用", "添加设备 }, "重命名": function(event, can, river, button) { can.user.input(event, can, ["name"], function(event, button, meta, list) { - can.run(event, [river.key, "action", "rename", meta.name], function(msg) { + var msg = can.request(event); msg.Option("hash", river.hash) + can.run(event, ["action", "modify", "name", meta.name], function(msg) { can.user.Search(can, {river: can.Conf(RIVER)}) }) return true @@ -149,14 +161,14 @@ Volcanos("ondetail", {help: "菜单交互", list: ["添加应用", "添加设备 "共享": function(event, can, value) { can.user.input(event, can, ["name"], function(event, button, meta, list) { var msg = can.request(event) - can.user.share(can, msg, [value.key, "action", "share", meta.name]) + can.user.share(can, msg, [value.hash, "action", "share", meta.name]) return true }) }, - "删除": function(event, can, river, button) { - can.run(event, ["remove", "hash", river.key], function(msg) { - // can.user.Search(can, {}) + "删除群组": function(event, can, river, button) { + can.run(event, ["remove", "hash", river.hash], function(msg) { + can.user.Search(can, {}) }) }, }) diff --git a/plugin/input/key.js b/plugin/input/key.js index 2ac43269..ee215191 100644 --- a/plugin/input/key.js +++ b/plugin/input/key.js @@ -1,4 +1,10 @@ -Volcanos("onfigure", {help: "控件详情", list: [], +Volcanos("onfigure", {help: "控件详情", list: [], _init: function(can, item, target, cb) { + can.core.Item(can.onfigure.key, function(key, value) { if (key.startsWith("on")) { + target[key] = function(event) { + cb(event), value(event, can, item, target) + } + } }) + }, key: {onclick: function(event, can, item, target) { function run() { var msg = can.request(event); msg.Option(can.Option()) can.run(event, ["action", "inputs", item.name, target.value], function(msg) {