diff --git a/frame.js b/frame.js index dc001907..db22444e 100644 --- a/frame.js +++ b/frame.js @@ -269,6 +269,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, _option: can._option, _action: can._action, _output: can._output, CloneInput: function() { add(item)._target.focus() }, CloneField: function() { can.Clone() }, + Option: can.Option, }, Volcanos.meta.libs.concat([item.display||"/plugin/input.js", Volcanos.meta.volcano]), function(input) { input.Conf(item), input.sup = can input.run = function(event, cmds, cb, silent) { @@ -304,11 +305,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, }) can.run(event, cmds||[], function(msg) { + if (can.onimport._process(can, msg, cmds, cb)) { return } + typeof cb == "function" && cb(msg) if (silent) { return } - if (can.onimport._process(can, msg)) { return } - var display = meta.feature.display || "table.js" display.indexOf("/") == 0 || (display = "/plugin/"+display) display.endsWith(".js") || (display += ".js") diff --git a/plugin/input.js b/plugin/input.js index 76828fb5..c03bebba 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -82,9 +82,8 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, switch (event.key) { case "Enter": if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1), can.run(event) } - if (can.Conf("type") == "textarea") { break } - event.stopPropagation() - event.preventDefault() + if (can.Conf("type") == "textarea") { if (!event.ctrlKey) { break }; can.run(event) } + event.stopPropagation(), event.preventDefault() break case "b": if (!event.ctrlKey) { break }; can.CloneInput(); break case "m": if (!event.ctrlKey) { break }; can.CloneField(); break @@ -94,8 +93,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, switch (event.key) { case "Enter": if (can.Conf("type") == "textarea") { break } - event.stopPropagation() - event.preventDefault() + event.stopPropagation(), event.preventDefault() break } }, diff --git a/plugin/state.js b/plugin/state.js index b2ad7a4c..9525dd92 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -1,29 +1,31 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, list, cb, target) { }, - _process: function(can, msg) { - var cb = can.onimport[msg.Option("_process") || can.Conf("feature._process")] - return typeof cb == "function" && cb(can, msg) + _process: function(can, msg, cmds, cb, silent) { + var action = can.onimport[msg.Option("_process") || can.Conf("feature._process")] + return typeof action == "function" && action(can, msg, cmds, cb, silent) }, - _progress: function(can, sub, conf, msg, cmds, cb, silent) { + _progress: function(can, msg, cmds, cb, silent) { var size = msg.Append("size") || msg.Append("count") if (size != "" && size == msg.Append("total")) { - return typeof cb == "function" && cb(msg) + return false } + can.user.toast(can, { - width: 400, - title: conf.name+" "+msg.Append("step")+"% ", duration: 1100, + title: can._name+" "+msg.Append("step")+"% ", duration: 1100, text: "执行进度: "+can.base.Size(size||0)+"/"+can.base.Size(msg.Append("total")||"1000")+"\n"+msg.Append("name"), progress: parseInt(msg.Append("step")), + width: 400, }) - can.page.Select(can, sub._output, "td", function(td) { + + 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 = sub.request({}) - res.Option("_progress", msg.Option("_progress")) - sub.run(res._event, cmds, cb, silent) + var res = can.request({}, {_process: msg.Option("_progress")}) + return can.onappend._output(can, can.Conf(), res._event, can.Pack(cmds), cb, silent) }) return true }, @@ -53,15 +55,15 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, }, input: function(event, can, name, cb) { var feature = can.Conf("feature") feature[name]? can.user.input(event, can, feature[name], function(ev, button, data, list) { - var msg = can.request(event); msg.Option(can.Option()) + var msg = can.request(event, can.Option()) var args = ["action", name]; can.core.Item(data, function(key, value) { key && value && args.push(key, value) }) var sub = can._outputs && can._outputs[can._outputs.length-1] || can - sub.run(event, args, function(msg) { typeof cb == "function" && cb(msg) }) + sub.run(event, args, function(msg) { typeof cb == "function" && cb(msg) }, true) return true - }): can.run(event, ["action", name], function(msg) { typeof cb == "function" && cb(msg) }) + }): can.run(event, ["action", name], function(msg) { typeof cb == "function" && cb(msg) }, true) }, change: function(event, can, name, value, cb) { can.page.Select(can, can._option, "input.args", function(input) { if (input.name == name) { var data = input.dataset || {} diff --git a/plugin/table.js b/plugin/table.js index b3b46ed9..f7ad3b4f 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -71,20 +71,14 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }, _table: function(can, value, key, index, line, array) { return {type: "td", inner: value, click: function(event) { var target = event.target - if (target.tagName == "INPUT" && target.type == "button") { var msg = can.sup.request(event); msg.Option(can.Option()) + 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) - var msg = can.request(event) - msg.Option("action", target.name) - var cb = can.onaction[target.name]; return typeof cb == "function"? cb(event, can, target.name): - can.sup.onaction.input(event, can.sup, target.name, function(msg) { - can.user.toast(can, msg.Result()) - - if (can.onimport._process(can, msg)) { - return typeof cb == "function" && cb(msg) - } - can.run({}) - }) + var cb = can.onaction[msg.Option("action", target.name)] + typeof cb == "function"? cb(event, can, target.name): can.sup.onaction.input(event, can.sup, target.name, function(msg) { + can.onimport._process(can, msg) || can.run({}) + }) } else { can.sup.onaction.change(event, can.sup, key, value, function(msg) { can.run(event)