diff --git a/frame.js b/frame.js index a2c5dcfd..dc6063df 100644 --- a/frame.js +++ b/frame.js @@ -365,7 +365,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break } }) }, target) }, - }, Volcanos.meta.libs.concat([item.display||"/plugin/input.js", "frame.js"]), function(input) { input.sup = sub + }, Volcanos.meta.libs.concat([item.display||"/plugin/input.js", "/frame.js"]), function(input) { input.sup = sub input.onimport._init(input, input.Conf(item), item.list||[], function() {}, input._target) if (location.protocol == "chrome-extension:") { @@ -393,6 +393,9 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met }) } break + case "清空": + sub._output.innerHTML = "" + return typeof cb == "function" && cb(can.request(event)) default: cmds && cmds[0] == "action" || msg.Option("_action", item.name||item.value) } @@ -422,7 +425,8 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met var args = can.base.Obj(meta.args, []); can.core.Next(can.base.Obj(meta.inputs, []), add) var count = 0; function run(event, cmds, cb, silent) { return sub.run(event, cmds||[], function(msg) { sub.Status("ncmd", sub._history.length+"/"+count++) - if (silent) { typeof cb == "function" && cb(msg); return } + typeof cb == "function" && cb(msg) + if (silent) { return } // 添加组件 var display = (msg.Option("_plugin")||msg.Option("_display")||meta.feature.plugin||meta.feature.display||"table.js") diff --git a/pane/Action.js b/pane/Action.js index 657ea97c..772b05e7 100644 --- a/pane/Action.js +++ b/pane/Action.js @@ -4,6 +4,29 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) { can.onexport._init(can, msg, list, cb, target) }, + + add_plugin: function(can, river, storm, value) { + value.name && can.onappend._init(can, value, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) { + sub.run = function(event, cmds, cb, silent) { var msg = can.request(event) + can.Conf("active", sub.Option()) + can.Conf("action", value.name) + can.Conf("current", sub) + // 插件回调 + return can.run(event, can.onengine[cmds[0]]? cmds: [river, storm, value.action].concat(cmds), function(msg) { + can.run(msg._event, ["search", "Footer.onaction.ncmd"]); + can.user.toast(can, "执行成功", value.name, 1000); + typeof cb == "function" && cb(msg) + }, silent) + } + sub._target.oncontextmenu = function(event) { + can.user.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) { + // 菜单命令 + meta[item] && meta[item](event, can, value, sub) + }) + } + }, can._output); + + }, }) Volcanos("ondetail", {help: "交互菜单", list: ["共享", "更名", "删除"], "共享": function(event, can, value, sub) { var msg = sub.request(event) @@ -21,34 +44,25 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg, var position = can.Conf(key, msg.Option(key, can.Cache(river+"."+storm, can._output)||"")); if (position) { can._output.scrollTo(0, position-1); return } - msg.Clear("option"), can.run(msg._event, [river, storm], function(sup) { can._output.innerHTML = ""; sup.Table(function(value, index, array) { - value.inputs = can.base.Obj(value.inputs||"[]", []), value.inputs.length == 0 && (value.inputs = [ - {type: "text", name: "name", action: "auto"}, - {type: "button", name: "查看", action: "auto"}, - {type: "button", name: "返回"}, - ]); - value.width = can._target.offsetWidth - value.height = can._target.offsetHeight - value.name && can.onappend._init(can, value, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) { - sub.run = function(event, cmds, cb, silent) { var msg = can.request(event) - can.Conf("active", sub.Option()) - can.Conf("action", value.name) - can.Conf("current", sub) - // 插件回调 - return can.run(event, can.onengine[cmds[0]]? cmds: [river, storm, value.action].concat(cmds), function(msg) { - can.run(msg._event, ["search", "Footer.onaction.ncmd"]); - can.user.toast(can, "执行成功", value.name, 1000); - typeof cb == "function" && cb(msg) - }, silent) - } - sub._target.oncontextmenu = function(event) { - can.user.carte(can, can.ondetail, can.ondetail.list, function(event, item, meta) { - // 菜单命令 - meta[item] && meta[item](event, can, value, sub) + msg.Clear("option"), can.run(msg._event, [river, storm], function(sup) { can._output.innerHTML = ""; + can.core.Next(sup.Table(), function(value, next) { + // value.inputs = can.base.Obj(value.inputs||"[]", []) + // value.args = typeof value.args == "string"? value.args.split(","): value.args + value.inputs = can.base.Obj(value.inputs||"[]", []) + value.height = can._target.offsetHeight + value.width = can._target.offsetWidth + + if (value.inputs.length == 0) { + can.run({}, [river, storm, "action", "command", value.index], function(msg) { + value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", []) + value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {}) + can.onaction.add_plugin(can, river, storm, value), next() }) + return } - }, can._output); - }) }) + can.onaction.add_plugin(can, river, storm, value), next() + }) + }) }, key: function(can, msg) { msg.Option("active", can.Conf("action")) can.core.Item(can.Conf("active"), msg.Option) diff --git a/plugin/input.js b/plugin/input.js index b885a731..14b99d5d 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -1,5 +1,4 @@ -Volcanos("onimport", {help: "导入数据", list: [], - _init: function(can, meta, list, cb, output, action, option, field) { +Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta, list, cb, output, action, option, field) { }, }) Volcanos("onaction", {help: "控件交互", list: [], @@ -27,7 +26,10 @@ Volcanos("onaction", {help: "控件交互", list: [], switch (can.Conf("type")) { case "button": - can.run(event, [], function() {}) + var toast = can.user.toast(can, "执行中...", can.sup._help, 100000) + can.run(event, [], function(msg) { + toast.Close() + }) break } }, diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index c415fbbf..9e9fe6ac 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -77,7 +77,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, can.run({}, ["action", "render", can.base.Ext(file), file, path], function(msg) { can.tabview[path+file] = msg - msg.Option({path: path, file: file, line: line}) + msg.Option({path: path, file: file, line: line||1}) can.page.Append(can, can._action, [{view: ["file", "div", file], onclick: function(event) { can.onimport.tabview(can, path, file) }, ondblclick: function(event) { diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index 2bb58102..ec3cab6b 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -49,8 +49,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, ]) }) }, - _task: function(can, msg, time, list, view) { - return {text: ["", "td"], + _task: function(can, msg, time, list, view) { return {text: ["", "td"], ondragover: function(event) { event.preventDefault() can.page.Select(can, can.ui.content, "td", function(item) { can.page.ClassList.del(can, item, "over") @@ -79,7 +78,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.onaction.modifyTask(event, can, task, "status", item) }) }, - _init: function(target) { + _init: function(target) { can.task || target.click() can._option._task && can._option._task.id == task.id && target.click() }, } diff --git a/plugin/story/spide.js b/plugin/story/spide.js index 8d039af6..e4afe8d8 100644 --- a/plugin/story/spide.js +++ b/plugin/story/spide.js @@ -64,6 +64,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["编辑", "清空", ["view", return list }, _height: function(can, tree) { + if (!tree) { return } if (tree.hide) { return tree.height = 1 } if (tree.list.length == 0) { diff --git a/proto.js b/proto.js index 872b082d..59c3f143 100644 --- a/proto.js +++ b/proto.js @@ -147,7 +147,7 @@ var Volcanos = shy("火山架", {cache: {}, index: 1, order: 1, debug: { } if (i >= msg.append.length) {msg.append.push(key)} msg[key] = msg[key] || [] - msg[key].push(""+value+"") + msg[key].push(""+(typeof value == "object"? JSON.stringify(value): value)+"") return msg }, Echo: shy("输出响应", function(res) {msg.result = msg.result || []