From d6fffd47f4c7faa1da7cc0b14c0844d46f17ad31 Mon Sep 17 00:00:00 2001 From: shaoying Date: Sat, 2 Jul 2022 22:57:12 +0800 Subject: [PATCH] opt some --- frame.js | 13 +++---- lib/misc.js | 2 +- lib/user.js | 4 +-- panel/action.css | 2 +- panel/action.js | 2 +- panel/river.js | 10 +++--- panel/search.js | 2 +- plugin/local/code/inner.js | 4 +-- plugin/local/code/inner/search.js | 6 ++-- plugin/local/wiki/word.js | 2 +- plugin/state.js | 60 +++++++++++-------------------- plugin/table.js | 23 +++++------- proto.js | 17 ++++----- publish/chrome/chrome.js | 2 +- 14 files changed, 62 insertions(+), 87 deletions(-) diff --git a/frame.js b/frame.js index 1685ec71..9b24a068 100644 --- a/frame.js +++ b/frame.js @@ -198,6 +198,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, _action: function(can, list, action, meta) { list = can.base.getValid(list, can.core.Item(meta)) list = can.base.Obj(list, can.core.Value(can, [chat.ONACTION, mdb.LIST])) + if (!list) { return } var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) { case "": _list.push(""); break case mdb.PAGE: @@ -220,7 +221,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, }) () } } - meta = meta||can.onaction, action = action||can._action, can.onmotion.clear(can, action) + meta = meta||can.onaction||{}, action = action||can._action, can.onmotion.clear(can, action) return can.core.List(_list, function(item) { if (item == undefined) { return } can.onappend.input(can, item == ""? /*空白*/ {type: html.SPACE}: can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) { var cb = meta[item]||meta["_engine"]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input())) @@ -271,13 +272,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, var process = msg._can == can || msg._can == sub if (process && can.core.CallFunc([sub, chat.ONIMPORT, ice.MSG_PROCESS], {can: sub, msg: msg})) { return } if (process && can.core.CallFunc([can, chat.ONIMPORT, ice.MSG_PROCESS], {can: can, msg: msg})) { return } - !silent && can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)||meta.display||meta.feature.display) + !silent && can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)||meta.display||meta.feature.display, can._output, can._action) }) }, _output: function(can, msg, display, output, action, cb) { display = display||chat.PLUGIN_TABLE_JS, output = output||can._output Volcanos(display, {_follow: can.core.Keys(can._follow, display), _display: display, _target: output, _fields: can._target, _option: can._option, _action: can._action, _output: can._output, _status: can._status, _legend: can._legend, _inputs: {}, - Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status, + Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status, _root: can._root, }, [display, chat.PLUGIN_TABLE_JS], function(table) { table.Conf(can.Conf()) table.run = function(event, cmds, cb, silent) { var msg = can.request(event) if (msg.RunAction(event, table, cmds)) { return } @@ -423,7 +424,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, }, ondblclick: function(event) { if ([mdb.KEY].indexOf(key) > -1) { return } var item = can.core.List(can.Conf("feature.insert"), function(item) { if (item.name == key) { return item } })[0]||{name: key, value: value} - item.run = function(event, cmds, cb) { can.run(can.request(event, line)._event, cmds, cb, true) } + item.run = function(event, cmds, cb) { can.run(can.request(event, line), cmds, cb, true) } can.onmotion.modifys(can, event.target, function(event, value, old) { run([ctx.ACTION, mdb.MODIFY, key, value]) }, item) }} }); table && can.page.Modify(can, table, {className: chat.CONTENT}) @@ -665,7 +666,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, } } can.base.isFunc(cbs) && cbs(sub, meta, skip) - }, target): /* 后端命令 */ can.run(can.request({}, meta)._event, [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { msg.Table(function(value) { + }, target): /* 后端命令 */ can.run(can.request({}, meta), [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, cbs, target) }) }, true) return res @@ -903,7 +904,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe }, share: function(event, can, input, args) { return can.user.input(event, can, input, function(ev, button, data, list, _args) { - can.search(can.request(event, {args: [mdb.TYPE, chat.FIELD].concat(args||[], _args||[])})._event, [["Header", chat.ONACTION, web.SHARE]]) + can.search(can.request(event, {args: [mdb.TYPE, chat.FIELD].concat(args||[], _args||[])}), [["Header", chat.ONACTION, web.SHARE]]) }) }, diff --git a/lib/misc.js b/lib/misc.js index 1e826da4..f72d2acb 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -2,7 +2,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg var proto = {_event: event, _can: can, RunAction: function(event, sub, cmds, meta) { var msg = can.request(event); meta = meta || sub&&sub.onaction || {} if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } - if (cmds && cmds[0] == ctx.ACTION && can.base.isFunc(meta[cmds[1]])) { + if (cmds && cmds[0] == ctx.ACTION && can.base.isFunc(meta[cmds[1]])) { event = event._event||event return msg.Option(ice.MSG_HANDLE, ice.TRUE), can.core.CallFunc(meta[cmds[1]], {event: event, can: sub, msg: msg, button: cmds[1], cmd: cmds[1]}), true } return false diff --git a/lib/user.js b/lib/user.js index 0e6d5b29..28668d27 100644 --- a/lib/user.js +++ b/lib/user.js @@ -131,7 +131,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { return !meta.action && can.onmotion.float.add(can, chat.TOAST, action), action }, share: function(can, msg, cmd) { - can.run(msg._event, cmd||[ctx.ACTION, chat.SHARE], function(msg) { + can.run(msg, cmd||[ctx.ACTION, chat.SHARE], function(msg) { can.user.toast(can, {height: 300, width: 500, title: msg.Append(mdb.NAME), duration: -1, content: msg.Append(mdb.TEXT), action: [cli.CLOSE, cli.OPEN], @@ -313,7 +313,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { }, select: function(event, can, type, fields, cb, cbs) { var msg = can.request(event, {fields: fields||"type,name,text"}) - can.search(msg._event, ["Search.onimport.select", type, "", ""], function(list) { + can.search(msg, ["Search.onimport.select", type, "", ""], function(list) { can.core.Next(list, cb, cbs||function() { can.user.toastSuccess(can) }) diff --git a/panel/action.css b/panel/action.css index 78e5544d..cfbf8586 100644 --- a/panel/action.css +++ b/panel/action.css @@ -13,7 +13,7 @@ fieldset.Action.free>div.output fieldset.plugin.select { display:block; } fieldset.Action.flow>div.output fieldset.plugin { float:left; } fieldset.Action div.output fieldset.plugin.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:10; } -fieldset.Action div.output fieldset.plugin.Full>legend { float:left; display:contents; } +fieldset.Action div.output fieldset.plugin.Full>legend { float:left; display:block; } fieldset.Action div.output fieldset.story.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:10; } fieldset.Action div.output fieldset.story.Full>legend { height:30px; float:left; } fieldset.Action>div.project.toggle { diff --git a/panel/action.js b/panel/action.js index 50027bc7..23468ebc 100644 --- a/panel/action.js +++ b/panel/action.js @@ -186,7 +186,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t can.Conf(chat.TOOL)? can.core.Next(can.Conf(chat.TOOL), function(item, next) { can.onimport._cmd(can, item, next) - }): can.run(can.request()._event, [ctx.ACTION, ctx.COMMAND], function(msg) { + }): can.run(can.request(), [ctx.ACTION, ctx.COMMAND], function(msg) { can.core.Next(msg.Table(), function(item, next) { can.onimport._cmd(can, item, next) }) diff --git a/panel/river.js b/panel/river.js index f6681511..c23269fb 100644 --- a/panel/river.js +++ b/panel/river.js @@ -222,19 +222,19 @@ Volcanos("ondetail", {help: "菜单交互", }, "重命名群组": function(event, can, button, river) { can.user.input(event, can, [mdb.NAME], function(event, button, meta, list) { - can.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.MODIFY, mdb.NAME, meta.name], function(msg) { + can.run(can.request(event, {hash: river}), [ctx.ACTION, mdb.MODIFY, mdb.NAME, meta.name], function(msg) { can.misc.Search(can, {river: river}) }) }) }, "删除群组": function(event, can, button, river) { - can.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.REMOVE], function(msg) { can.misc.Search(can, {}) }) + can.run(can.request(event, {hash: river}), [ctx.ACTION, mdb.REMOVE], function(msg) { can.misc.Search(can, {}) }) }, "保存参数": function(event, can, button, river, storm) { can.getAction(ctx.ARGS, function(item, next, index, array) { var msg = can.request({}, {hash: storm, id: item.dataset.id}) var toast = can.user.toast(can, (index+1)+ice.PS+array.length, button, 10000, (index+1)*100/array.length) - can.run(msg._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) { + can.run(msg, [river, chat.STORM, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) { can.core.Timer(200, function() { toast.close(), next(), index == array.length-1 && can.user.toastSuccess(can, button) }) @@ -243,13 +243,13 @@ Volcanos("ondetail", {help: "菜单交互", }, "重命名应用": function(event, can, button, river, storm) { can.user.input(event, can, [mdb.NAME], function(ev, button, meta, list, args) { - can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function(msg) { + can.run(can.request(event, {hash: storm}), [river, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: storm}) }) }) }, "删除应用": function(event, can, button, river, storm) { - can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.REMOVE], function(msg) { + can.run(can.request(event, {hash: storm}), [river, chat.STORM, ctx.ACTION, mdb.REMOVE], function(msg) { can.misc.Search(can, {river: river}) }) }, diff --git a/panel/search.js b/panel/search.js index 8bfef3ee..52afc03d 100644 --- a/panel/search.js +++ b/panel/search.js @@ -27,7 +27,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }) can.onengine.signal(can, chat.ONSEARCH, res) - can.run(res._event, cmds, function(res) { can.onimport._init(can, res, fields) }) + can.run(res, cmds, function(res) { can.onimport._init(can, res, fields) }) can.onmotion.show(can), can.onmotion.focus(can, can.ui.word) }, diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index b10f63e3..cd7d4257 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -170,7 +170,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target }}, {view: html.LIST}]); list = ui.list if (index > 0) { ui.item.click() } } - can.run(can.request({}, {dir_root: path, dir_deep: true})._event, [ice.PWD], function(msg) { can._file = msg.Table() + can.run(can.request({}, {dir_root: path, dir_deep: true}), [ice.PWD], function(msg) { can._file = msg.Table() can.core.List(can._file, function(item) { if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } }) can.onappend.tree(can, can._file, nfs.PATH, ice.PS, function(event, item) { can.onimport.tabview(can, path, item.path) @@ -178,7 +178,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target }, true) }, function() { can.base.isFunc(cb) && cb() }) - can.run(can.request({}, {fields: "index"})._event, [ctx.ACTION, ctx.COMMAND, "search", "command"], function(msg) { + can.run(can.request({}, {fields: "index"}), [ctx.ACTION, ctx.COMMAND, "search", "command"], function(msg) { can.onappend.tree(can, msg.Table(), ctx.INDEX, ice.PT, function(event, item) { can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX) }, project.module) diff --git a/plugin/local/code/inner/search.js b/plugin/local/code/inner/search.js index da5bc01a..142a217f 100644 --- a/plugin/local/code/inner/search.js +++ b/plugin/local/code/inner/search.js @@ -36,21 +36,21 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, args, cb) { var show(msg) }, nfs.TAGS, function(cmds) { msg.Option(kit.Dict(ice.MSG_HANDLE, ice.TRUE, ice.MSG_FIELDS, "file,line,text")) - can.run(msg._event, [ctx.ACTION, mdb.SEARCH, can.parse, cmds[0], can.Option(nfs.PATH)], function(msg) { var sub = msg._can + can.run(msg, [ctx.ACTION, mdb.SEARCH, can.parse, cmds[0], can.Option(nfs.PATH)], function(msg) { var sub = msg._can can.page.style(can, sub._output, html.MAX_HEIGHT, can.ConfHeight()/4), show(msg, msg._word = cmds[0]) can.page.ClassList.has(sub, sub._target, html.SELECT) || sub._legend.click() can.onmotion.focus(can, msg._can._inputs["word"]._target) }, true) }, nfs.GREP, function(cmds) { msg.Option(kit.Dict(ice.MSG_HANDLE, ice.TRUE, ice.MSG_FIELDS, "file,line,text", nfs.PATH, can.Option(nfs.PATH))) - can.run(msg._event, [ctx.ACTION, nfs.GREP, cmds[0]], function(msg) { var sub = msg._can + can.run(msg, [ctx.ACTION, nfs.GREP, cmds[0]], function(msg) { var sub = msg._can can.page.style(can, sub._output, html.MAX_HEIGHT, can.ConfHeight()/4), show(msg, msg._word = cmds[0]) can.page.ClassList.has(sub, sub._target, html.SELECT) || sub._legend.click() can.onmotion.focus(can, msg._can._inputs["word"]._target) }, true) }, "last", function(cmds) { history.pop(), show(history.pop()) }, - ))) { return } can.run(msg._event, cmds, function(msg) { show(msg) }, true) })) + ))) { return } can.run(msg, cmds, function(msg) { show(msg) }, true) })) can.onimport.toolkit(can, {index: SEARCH}, function(sub) { can.ui.search = sub, can.base.isFunc(cb) && cb(sub) can.ui.search._show = show diff --git a/plugin/local/wiki/word.js b/plugin/local/wiki/word.js index 76e5971e..5da63ce5 100644 --- a/plugin/local/wiki/word.js +++ b/plugin/local/wiki/word.js @@ -134,7 +134,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target can.core.Value(item, "auto.cmd") && can.core.Timer300ms(function() { var msg = sub.request({}, can.core.Value(item, "opts")); msg.Option(ice.MSG_HANDLE, ice.TRUE) - sub.Update(msg._event, [ctx.ACTION, can.core.Value(item, "auto.cmd")]) + sub.Update(msg, [ctx.ACTION, can.core.Value(item, "auto.cmd")]) }) }, can._output, target) }, diff --git a/plugin/state.js b/plugin/state.js index 005b2ed1..2943f1e0 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -7,10 +7,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, _location: function(can, msg, _arg) { location.href = _arg; return true }, _replace: function(can, msg, _arg) { location.replace(_arg); return true }, _history: function(can, msg) { history.back(); return true }, - _confirm: function(can, msg, _arg) { can.user.confirm(_arg) && can.runAction(can.request({}, msg)._event, "confirm"); return true }, + _confirm: function(can, msg, _arg) { can.user.confirm(_arg) && can.runAction(can.request({}, msg), "confirm"); return true }, _refresh: function(can, msg) { can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() { - can.Update(can.request({}, {_count: parseInt(msg.Option("_count"))-1})._event) + can.Update(can.request({}, {_count: parseInt(msg.Option("_count"))-1})) }) return true }, @@ -90,23 +90,21 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf, }) Volcanos("onaction", {help: "交互操作", list: [ "刷新数据", "切换全屏", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", [ - "其它", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据", "删除工具", + "其它", "刷新页面", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据", "删除工具", ], ], _init: function(can, msg, list, cb, target) {}, _engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input([], true))) }, "刷新数据": function(event, can) { can.Update({}, can.Input([], true)) }, "切换全屏": function(event, can) { var sub = can._outputs[can._outputs.length-1] - if (can.page.ClassList.neg(can, can._target, "Full")) { - sub._height_bak = sub.ConfHeight(), sub._width_bak = sub.ConfWidth() - var height = window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT - can.user.isMobile && (height -= 2*html.ACTION_HEIGHT) + if (can.page.ClassList.neg(can, can._target, "Full")) { sub._height_bak = sub.ConfHeight(), sub._width_bak = sub.ConfWidth() + var height = window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT; can.user.isMobile && (height -= 2*html.ACTION_HEIGHT) can.page.style(can, can._output, html.HEIGHT, sub.ConfHeight(height), html.MIN_WIDTH, sub.ConfWidth(window.innerWidth)) can.core.CallFunc([sub, "onimport.layout"], {can: sub}) } else { sub.ConfHeight(sub._height_bak), sub.ConfWidth(sub._width_bak) - can.core.CallFunc([sub, "onimport.layout"], {can: sub}) can.page.style(can, can._output, html.HEIGHT, "", html.MIN_WIDTH, "") + can.core.CallFunc([sub, "onimport.layout"], {can: sub}) } }, "共享工具": function(event, can) { var meta = can.Conf() @@ -133,6 +131,9 @@ Volcanos("onaction", {help: "交互操作", list: [ }, "生成图片": function(event, can) { can.onmotion.toimage(event, can, can._name) }, + "刷新页面": function(event, can) { var sub = can.core.Value(can._outputs, "-1") + can.core.CallFunc([sub, chat.ONIMPORT, "_init"], {can: sub, msg: sub._msg, cb: function(msg) {}, target: can._output}) + }, "清空参数": function(event, can) { can.page.SelectArgs(can, can._option, "", function(item) { return item.value = "" }) }, "扩展参数": function(event, can) { can.onmotion.toggle(can, can._action) }, "复制数据": function(event, can) { can.user.copy(event, can, can.onexport.table(can)||can.onexport.board(can)) }, @@ -146,10 +147,6 @@ Volcanos("onaction", {help: "交互操作", list: [ "保存参数": function(event, can) { can.search(event, ["River.ondetail.保存参数"]) }, "打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) }, - "刷新页面": function(event, can) { var sub = can.core.Value(can._outputs, "-1"), msg = sub._msg - can.core.CallFunc([sub, chat.ONIMPORT, "_init"], {can: sub, msg: msg, list: msg.result||msg.append||[], cb: function(msg) { - }, target: can._output}) - }, "摄像头": function(event, can) { var constraints = {audio: false, video: {width: 200, height: 200}} @@ -177,10 +174,12 @@ Volcanos("onaction", {help: "交互操作", list: [ }) }, - actions: function(event, can) { can.onmotion.toggle(can, can._action) }, clear: function(event, can, name) { can.onmotion.clear(can, can._output) }, close: function(event, can) { can.page.Remove(can, can._target) }, upload: function(event, can) { can.user.upload(event, can) }, + actions: function(event, can) { can.onmotion.toggle(can, can._action) }, + next: function(event, can) { can.Update(event, [ctx.ACTION, mdb.NEXT, can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""]) }, + prev: function(event, can) { can.Update(event, [ctx.ACTION, mdb.PREV, can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""]) }, change: function(event, can, name, value, cb) { return can.page.SelectArgs(can, can._option, "", function(input) { if (input.name == name && value != input.value) { input.value = value @@ -190,36 +189,19 @@ Volcanos("onaction", {help: "交互操作", list: [ }) }, - next: function(event, can) { - can.Update(event, [ctx.ACTION, "next", can.Status("total")||0, can.Option("limit")||can.Action("limit")||"", can.Option("offend")||can.Action("offend")||""]) - }, - prev: function(event, can) { - can.Update(event, [ctx.ACTION, "prev", can.Status("total")||0, can.Option("limit")||can.Action("limit")||"", can.Option("offend")||can.Action("offend")||""]) - }, - - getClipboardData: function(event, can, button) { - function add(text) { - can.run(event, can.base.Simple(ctx.ACTION, button, can.base.ParseJSON(text)), function(msg) { - can.user.toastSuccess(can), can.Update() - }, true) - } - if (navigator.clipboard) { - navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) }) - } else { - can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(ev, button, data, list, args) { add(list[0]) }) - } - }, + openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) }, getLocation: function(event, can, button) { can.user.agent.getLocation(function(data) { can.request(event, data) can.user.input(event, can, [mdb.TYPE, mdb.NAME, mdb.TEXT, "latitude", "longitude"], function(ev, bu, data, list, args) { - can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) { - can.user.toastSuccess(can), can.Update() - }, true) + can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) { can.user.toastSuccess(can, button) }, true) }) }) }, - openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) }, - + getClipboardData: function(event, can, button) { + function add(text) { can.run(event, can.base.Simple(ctx.ACTION, button, can.base.ParseJSON(text)), function(msg) { can.user.toastSuccess(can, button) }, true) } + navigator.clipboard? navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) }): + can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(ev, button, data, list, args) { add(list[0]) }) + }, }) Volcanos("onexport", {help: "导出数据", list: [], table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return } @@ -228,7 +210,5 @@ Volcanos("onexport", {help: "导出数据", list: [], }) return res.join(ice.NL) }, - board: function(can) { var msg = can._msg - return msg.Result() - }, + board: function(can) { var msg = can._msg; return msg.Result() }, }) diff --git a/plugin/table.js b/plugin/table.js index 71d90d61..5172d2e7 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -1,32 +1,25 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) { can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action) - var cbs = can.onimport[can._args["style"]]; if (can.base.isFunc(cbs)) { - can.page.ClassList.add(can, target, can._args["style"]) + var cbs = can.onimport[can._args[ctx.STYLE]]; if (can.base.isFunc(cbs)) { + can.page.ClassList.add(can, target, can._args[ctx.STYLE]) return cbs(can, msg, target) } + can.onmotion.clear(can, target) can.onappend.table(can, msg, null, target) can.onappend.board(can, msg, target) can.onmotion.story.auto(can, target) can.base.isFunc(cb) && cb(msg) }, - - _process: function(can, msg) { - msg.Option(ice.MSG_TOAST) && can.user.toast(can, msg.Option(ice.MSG_TOAST)) - return can.core.CallFunc([can.onimport, msg.Option(ice.MSG_PROCESS)], [can, msg]) - }, card: function(can, msg, target) { can.page.Appends(can, target, msg.Table(function(value) { - return {view: "item", list: [ - {view: ["title", "div", value.name]}, - {view: ["content", "div", value.text]}, - {view: "operate", inner: value.action, onclick: function(event) { - can.request(event, value) - can.run(event, [ctx.ACTION, event.target.name]) + return {view: html.ITEM, list: [ + {view: [wiki.TITLE, html.DIV, value.name]}, + {view: [wiki.CONTENT, html.DIV, value.text]}, + {view: html.ACTION, inner: value.action, onclick: function(event) { + can.run(can.request(event, value), [ctx.ACTION, event.target.name]) }}, ]} })) }, }) -Volcanos("onaction", {help: "控件交互", list: []}) -Volcanos("onexport", {help: "导出数据", list: []}) diff --git a/proto.js b/proto.js index f3adafb8..02f41ee1 100644 --- a/proto.js +++ b/proto.js @@ -125,6 +125,7 @@ var wiki = { TITLE: "title", BRIEF: "brief", REFER: "refer", SPARK: "spark", ORDER: "order", TABLE: "table", CHART: "chart", IMAGE: "image", VIDEO: "video", FIELD: "field", SHELL: "shell", LOCAL: "local", PARSE: "parse", + CONTENT: "content", NAVMENU: "navmenu", PREMENU: "premenu", @@ -225,7 +226,7 @@ var html = { OPACITY: "opacity", STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", MONOSPACE: "monospace", SCROLL: "scroll", HEIGHT: "height", WIDTH: "width", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom", - MIN_HEIGHT: "min-height", MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y", + MIN_HEIGHT: "min-height", MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width", MIN_WIDTH: "min-width", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y", PLUGIN_MARGIN: 10, ACTION_HEIGHT: 29, ACTION_MARGIN: 200, TOGGLE: "toggle", @@ -278,13 +279,13 @@ function shy(help, meta, list, cb) { var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: {}, pack: {}, libs: [], cache: {}}, function(name, can, libs, cb) { var meta = arguments.callee.meta, list = arguments.callee.list if (typeof name == lang.OBJECT) { var Config = name; Config.plugin = Config.plugin||chat.plugin_list - Config.panels = Config.panels||chat.panel_list, Config.main = Config.main||{name: "Header"} + Config.panels = Config.panels||chat.panel_list meta.libs = Config.libs||chat.libs, meta.iceberg = Config.iceberg||meta.iceberg // 预加载 libs = []; for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i] panel && (libs = libs.concat(panel.list = panel.list||["/panel/"+panel.name+".css", "/panel/"+panel.name+".js"])) - }; libs = libs.concat(Config.plugin, Config.main.list||[]) + }; libs = libs.concat(Config.plugin) // 根模块 _can_name = "", name = Config.name||"chat", cb = can||function(can) { @@ -330,7 +331,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: function next() { can._load(name, each), can.require(libs.slice(1), cb, each) } meta.cache[name]? next(): (_can_path = libs[0], meta._load(name, next)) }, - request: function(event) { event = event||{} + request: function(event) { event = event||{}, event = event._event||event var msg = event._msg||can.misc.Message(event, can); event._msg = msg function set(key, value) { msg.Option(key) || value == "" || msg.Option(key, value) } @@ -345,10 +346,10 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: }, actions: function(event, button) { can.run(event, [ctx.ACTION, button], null, true) }, - runAction: function(event, action, args, cb) { can.request(event, {_handle: ice.TRUE}, can.Option()) + runAction: function(event, action, args, cb, silent) { can.request(event, {_handle: ice.TRUE}, can.Option()) can.run(event, can.misc.concat(can, [ctx.ACTION, action], args), cb||function(msg) { can.user.toastSuccess(can, action) - }, true) + }, silent) }, search: function(event, cmds, cb) { @@ -359,11 +360,11 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: }, get: function(name, key, cb) { return can.search({}, [can.core.Keys(name, chat.ONEXPORT, key)], cb) }, set: function(name, key, value) { var msg = can.request({}); msg.Option(key, value) - return can.search(msg._event, [[name, chat.ONIMPORT, key]]) + return can.search(msg, [[name, chat.ONIMPORT, key]]) }, setHeaderMenu: function(list, cb) { can._menu && can.page.Remove(can, can._menu) var msg = can.request({}, {trans: can.onaction._trans}) - return can._menu = can.search(msg._event, [["Header", chat.ONIMPORT, "menu"], can._name].concat(list), cb) + return can._menu = can.search(msg, [["Header", chat.ONIMPORT, "menu"], can._name].concat(list), cb) }, setHeader: function(key, value) { return can.set("Header", key, value) }, getHeader: function(key, cb) { return can.get("Header", key, cb) }, diff --git a/publish/chrome/chrome.js b/publish/chrome/chrome.js index af0a0f97..400265a2 100644 --- a/publish/chrome/chrome.js +++ b/publish/chrome/chrome.js @@ -38,7 +38,7 @@ Volcanos({ var msg = can.request({}, {tid: sender.tab.id, url: sender.url}) can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) }) msg.__daemon = can.core.Keys(html.CHROME, sender.tab.id) - can.run(msg._event, req.detail||[], cb) + can.run(msg, req.detail||[], cb) return true }) chrome.history.onVisited.addListener(function(item) {