From e249031505b969cb16db0c02fccb29d2852a1d48 Mon Sep 17 00:00:00 2001 From: shaoying Date: Mon, 23 Dec 2019 02:19:53 +0800 Subject: [PATCH] add hot --- frame.js | 17 ++++++++++++----- pane/Action.js | 12 +----------- plugin/input.js | 13 +++++++++++-- plugin/table.js | 4 +++- proto.js | 2 +- 5 files changed, 28 insertions(+), 20 deletions(-) diff --git a/frame.js b/frame.js index ad3e4abc..ded5624a 100644 --- a/frame.js +++ b/frame.js @@ -38,6 +38,9 @@ var can = Volcanos("chat", { Import: function(event, value, key) {var cb = pane.onimport[key]; typeof cb == "function" && cb(event, pane, value, key, pane.output); can.core.List(pane._plugins, function(item) {item.Import(event, value, key)}) + pane.page.Select(pane, pane.action, "input."+key, function(item) { + item.value = value + }) }, Size: function(event, width, height) {var cb = pane.onimport["size"]; @@ -107,7 +110,7 @@ var can = Volcanos("chat", { }, meta) return pane }), - Plugin: shy("构造插件", function(can, name, meta, run, field) { + Plugin: shy("构造插件", function(can, name, meta, run, field, cb) { var option = field.querySelector("form.option"); var action = field.querySelector("div.action"); var output = field.querySelector("div.output"); @@ -191,14 +194,16 @@ var can = Volcanos("chat", { Show: function(type, msg, cb) {plugin.msg = msg, msg._plugin_name = name; return plugin._output = plugin[type] = can.Output(plugin, feature, type, msg, cb, output, option) }, - Clone: function(event) {meta.nick = meta.name + can.ID() + Clone: function(event, cb) {meta.nick = meta.name + can.ID() can.Plugin(can, meta.nick, meta, run, - can.page.AppendField(can, field.parentNode, "item "+meta.group+" "+meta.nick, meta)) + can.page.AppendField(can, field.parentNode, "item "+meta.group+" "+meta.nick, meta), cb) }, Delete: function(event) {field.parentNode.removeChild(field)}, }, Config.libs.concat(["plugin/"+(meta.type||"state")]), function(plugin) {plugin.Conf(meta); var list = JSON.parse(meta.inputs||"[]"); - can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append) + can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append, function() { + typeof cb == "function" && cb(plugin) + }) }, meta) return plugin }), @@ -210,6 +215,8 @@ var can = Volcanos("chat", { input.target.value = value; item.action == "auto"? can.Runs(event): can.Check(event, input.target); }, + Append: function(event, value) {can.Append(null, function(input) {can.Select(event, input.target, true)})}, + Clone: function(event, value) {can.Clone(event, function(input) {input.Select(event, null, true)})}, run: function(event, cmd, cb, silent) { (input[item.cb] || can[item.cb] || can.Check)(event, event.target, cb); }, @@ -218,7 +225,7 @@ var can = Volcanos("chat", { var target = input.onimport.init(input, item, name, value, option); input.target = target, target.Input = input; - typeof cb == "function" && cb(); + typeof cb == "function" && cb(input); }) return input }), diff --git a/pane/Action.js b/pane/Action.js index 32e1f826..f42614aa 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -37,19 +37,9 @@ Volcanos("onimport", {help: "导入数据", list: [], can._plugin && can._plugin.Import(event, msg, cmd) }, - pod: function(event, can, value, cmd, output) { - can.page.Select(can, can.action, "input."+cmd, function(item) { - item.value = value - }) - }, - you: function(event, can, value, cmd, output) { - can.page.Select(can, can.action, "input."+cmd, function(item) { - document.title = item.value = value; - }) - }, }) Volcanos("onaction", {help: "组件交互", list: [["layout", "工作", "办公", "聊天"], "清屏", "刷新", "串行", "并行", - {input: "pod"}, {input: "you"}], + {input: "pod"}, {input: "you"}, {input: "hot"}], "工作": function(event, can, msg, cmd, output) { can.Export(event, cmd, "layout") }, diff --git a/plugin/input.js b/plugin/input.js index 861e47c7..103b6120 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -1,7 +1,7 @@ Volcanos("onimport", {help: "导入数据", list: [], init: shy("添加控件", function(can, item, name, value, option) { var input = {type: "input", name: name, data: item}; - item.type = item.type || item._type; + item.type = item.type || item._type || item._input; switch (item.type) { case "upfile": item.type = "file"; break case "select": @@ -40,7 +40,16 @@ Volcanos("onimport", {help: "导入数据", list: [], Volcanos("onaction", {help: "控件交互", list: [], onclick: function(event, can) {can.Select(event); can.item.type == "button" && can.run(event)}, onkeydown: function(event, can) { - can.page.oninput(event, can) + can.page.oninput(event, can, function(event) { + switch (event.key) { + case "b": + can.Append(event) + return true + case "m": + can.Clone(event) + return true + } + }) switch (event.key) { case "Enter": can.run(event, []); break diff --git a/plugin/table.js b/plugin/table.js index b7569c3d..3765b08a 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -77,8 +77,10 @@ Volcanos("ondetail", {help: "组件详情", list: ["选择", "编辑", "删除", "编辑": function(event, can, msg, index, key, cmd, td) { var text = td.innerHTML; can.page.Appends(can, td, [{type: "input", style: {width: td.clientWidth+"px"}, data: {onkeydown: function(event) { + if (event.key == " ") {return event.stopPropagation()} if (event.key != "Enter") {return} - can.run(event, [msg.Ids(index), "modify", key == "value" && msg.key? msg[key][index]: key, event.target.value, text], function(msg) { + if (key == "value" && msg.key) {key = msg.key[index]} + can.run(event, [msg.Ids(index), "modify", key, event.target.value, text], function(msg) { td.innerHTML = event.target.value; can.user.toast("修改成功") }, true) diff --git a/proto.js b/proto.js index ddc17c23..a184991d 100644 --- a/proto.js +++ b/proto.js @@ -78,7 +78,7 @@ function Volcanos(name, can, libs, cb, msg) { // 封装模块 msg = event.msg = msg || event.msg || {}, msg.__proto__ = proto || { _create_time: can.base.Time(), _source: can, Log: shy("输出日志", function() {console.log(arguments)}), - Ids: function(index) { + Ids: function(index, key) { var id = index; msg && msg.id && (id = msg.id[index]) || msg && msg.name && (id = msg.name[index]); return id;