From 63308b4ea546cf928205a20e566a47ce5e4fc4be Mon Sep 17 00:00:00 2001 From: harveyshao Date: Tue, 5 Jul 2022 18:00:48 +0800 Subject: [PATCH] opt draw.js --- frame.js | 24 ++-- lib/base.js | 8 +- lib/page.js | 8 +- lib/user.js | 13 +- page/index.css | 8 +- panel/action.css | 4 +- panel/action.js | 2 +- panel/footer.js | 4 +- panel/header.js | 48 ++++--- panel/river.js | 12 +- panel/search.js | 4 +- plugin/local/chat/div.js | 12 +- plugin/local/chat/trans.js | 2 +- plugin/local/code/inner.js | 46 +++---- plugin/local/code/inner/favor.js | 6 +- plugin/local/code/inner/search.js | 8 +- plugin/local/code/inner/sess.js | 6 +- plugin/local/code/inner/template.js | 10 +- plugin/local/code/snippet.js | 6 +- plugin/local/code/vimer.js | 2 +- plugin/local/team/plan.js | 10 +- plugin/local/wiki/data.js | 4 +- plugin/local/wiki/draw.js | 203 +++++++++++++--------------- plugin/local/wiki/feel.js | 108 +++++++-------- plugin/local/wiki/word.js | 8 +- plugin/state.js | 10 +- plugin/story/parse.js | 4 +- plugin/table.js | 2 +- proto.js | 17 ++- publish/chrome/contexts.js | 6 +- 30 files changed, 297 insertions(+), 308 deletions(-) diff --git a/frame.js b/frame.js index a892b4bf..c86503e2 100644 --- a/frame.js +++ b/frame.js @@ -232,7 +232,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, me _output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); if (msg.RunAction(event, can, cmds)) { return } if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { var msg = can.request(event, {action: cmds[1]}) if (can.base.isFunc(meta.feature[cmds[1]])) { return can.core.CallFunc(meta.feature[cmds[1]], {can: can, msg: msg, cmds: cmds.slice(2)}) } - return can.user.input(event, can, meta.feature[cmds[1]], function(ev, button, data, list, args) { var msg = can.request(event, {_handle: ice.TRUE}, can.Option()) + return can.user.input(event, can, meta.feature[cmds[1]], function(args) { var msg = can.request(event, {_handle: ice.TRUE}, can.Option()) can.Update(event, cmds.slice(0, 2).concat(args), cb||function() { if (can.core.CallFunc([can.sup, chat.ONIMPORT, ice.MSG_PROCESS], {can: can.sup, msg: msg})) { return } if (can.core.CallFunc([can, chat.ONIMPORT, ice.MSG_PROCESS], {can: can, msg: msg})) { return } @@ -258,10 +258,10 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, me if (can._daemon) { msg.Option(ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], can._daemon)) } } - return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)||{}; - (!cmds || cmds[0] != ctx.ACTION) && (can._msg = msg, sub._msg = msg) + return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)||{} + if (!cmds || cmds[0] != ctx.ACTION) { can._msg = msg, sub._msg = msg } if (can.base.isFunc(cb)) { can.core.CallFunc(cb, {can: can, msg: msg}); return } - var process = msg._can == can || msg._can == sub + var process = msg._can == can || msg._can == sub; msg._cmds = cmds 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, can._output, can._action) @@ -337,7 +337,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, me if (key == "extra.cmd") { can.onappend.plugin(can, {ctx: line["extra.ctx"], cmd: line["extra.cmd"], arg: line["extra.arg"]}, function(sub) { sub.run = function(event, cmds, cb) { var msg = can.request(event, line, can.Option()) - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, can.core.Keys(line["extra.ctx"], line["extra.cmd"])], cmds), cb, true) + can.runActionCommand(event, can.core.Keys(line["extra.ctx"], line["extra.cmd"]), cmds, cb) } }, target||can._output) } @@ -374,7 +374,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, me var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code can.page.Select(can, code, html.INPUT_BUTTON, function(target) { target.onclick = function(event) { var msg = can.sup.request(event, can.Option()) - return can.run(event, [ctx.ACTION, target.name], function(msg) { can.run() }, true) + return can.runAction(event, target.name, [], function(msg) { can.run() }) } }) return (code.scrollBy && code.scrollBy(0, 10000)), code @@ -394,7 +394,7 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], _init: function(can, me meta.help = meta.help||value.help can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) { sub._index = value.index||meta.index - sub.run = function(event, cmds, cb) { can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, sub._index], cmds), cb) } + sub.run = function(event, cmds, cb) { can.runActionCommand(event, sub._index, cmds, cb) } can.base.isFunc(cb) && cb(sub, meta, skip) }, target||can._output) }, @@ -598,9 +598,9 @@ Volcanos(chat.ONMOTION, {help: "动态特效", list: [], _init: function(can, ta focus: function(can, target) { if (!target) { return } target.setSelectionRange && target.setSelectionRange(0, -1), target.focus() }, - 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||[])}), [["Header", chat.ONACTION, web.SHARE]]) + share: function(event, can, input, args) { var _args = args + return can.user.input(event, can, input, function(args) { + can.search(can.request(event, {args: [mdb.TYPE, chat.FIELD].concat(_args||[], args||[])}), [["Header", chat.ONACTION, web.SHARE]]) }) }, @@ -665,8 +665,8 @@ Volcanos(chat.ONMOTION, {help: "动态特效", list: [], _init: function(can, ta html2canvas(target||can._target).then(function (canvas) { var url = canvas.toDataURL("image/png") var toast = can.user.toast(can, {content: {img: url, style: {"max-height": 240, display: html.BLOCK}}, duration: -1, action: shy({}, [cli.CLOSE, "download"], function(event, button) { - can.user.input(event, can, [{name: mdb.NAME, value: name}], function(ev, button, data) { toast.close() - can.page.Create(can, html.A, {href: url, download: data.name+".png"}).click() + can.user.input(event, can, [{name: mdb.NAME, value: name}], function(list) { toast.close() + can.page.Create(can, html.A, {href: url, download: list[0]+".png"}).click() }) }), }) diff --git a/lib/base.js b/lib/base.js index b95a4a3e..a924b538 100644 --- a/lib/base.js +++ b/lib/base.js @@ -8,7 +8,13 @@ Volcanos("base", {help: "数据类型", Int: function(val, def) { return parseIn }, Copy: function(to, from) { if (arguments.length == 2) { - for (var k in from) { to[k] = from[k] } + for (var k in from) { + if (from[k] === "") { + delete(to[k]) + continue + } + to[k] = from[k] + } return to } for (var i = 2; i < arguments.length; i++) { diff --git a/lib/page.js b/lib/page.js index 45f30811..ca3f9037 100644 --- a/lib/page.js +++ b/lib/page.js @@ -298,10 +298,10 @@ Volcanos("page", {help: "用户界面", ClassList: { } return delete(cache[name]), list.data }, - Format: function(type) { + Format: function(type) { var args = arguments switch (type) { - case html.A: return ""+(arguments[2]||arguments[1])+"" - case html.IMG: return arguments[2]? "": "" + case html.A: return ""+(args[2]||args[1])+"" + case html.IMG: return args[2]? "": "" } }, replace: function(can, text, key, value) { @@ -377,7 +377,7 @@ Volcanos("page", {help: "用户界面", ClassList: { style: function(can, target, style) { var value = {} for (var i = 2; i < arguments.length; i += 2) { if (typeof arguments[i] == lang.OBJECT) { - can.base.Copy(value, arguments[i--]) + can.page.Modify(can, target, {style: arguments[i--]}) } else if (typeof arguments[i] == lang.UNDEFINED) { continue } else { diff --git a/lib/user.js b/lib/user.js index 607880c3..600752af 100644 --- a/lib/user.js +++ b/lib/user.js @@ -1,6 +1,6 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { scanQRCode: function(cb, can) { - can.user.input(event, can, [{type: html.TEXTAREA, name: "text", text: ""}], function(ev, button, data, list, args) { + can.user.input(event, can, [{type: html.TEXTAREA, name: "text", text: ""}], function(list) { cb(list[0], can.base.ParseJSON(list[0])) }) }, @@ -81,7 +81,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { "list": "查看", "back": "返回", "run": "执行", "done": "完成", "share": "共享", "edit": "编辑", "save": "保存", "copy": "复制", "show": "显示", "hide": "隐藏", "project": "项目", "profile": "详情", "actions": "参数", - "download": "下载", + "download": "下载", "toimage": "截图", "plugin": "插件", "prev": "上一页", "next": "下一页", @@ -186,7 +186,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { can.page.Modify(can, ui._target, {className: "input login", style: {left: (window.innerWidth-ui._target.offsetWidth)/2, top: window.innerHeight/6}}) }, logout: function(can, force) { if (force||can.user.confirm("logout?")) { - can.run({}, [ctx.ACTION, aaa.LOGOUT], function(msg) { + can.runAction({}, aaa.LOGOUT, [], function(msg) { can.misc.Search(can, chat.SHARE)? can.misc.Search(can, chat.SHARE, ""): can.user.reload(true) }) } }, @@ -307,7 +307,8 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { return item.name && item.value && args.push(item.name, item.value), data[item.name] = item.value }) var msg = can.request(event, {_handle: ice.TRUE}) - can.base.isFunc(cb) && !cb(event, button, data, list, args) && action.cancel() + !can.core.CallFunc(cb, {event: event, button: button, data: data, list: list, args: args}) && action.cancel() + // can.base.isFunc(cb) && !cb(event, button, data, list, args) && action.cancel() can.onkeymap.prevent(event) }, _target: ui._target, }) @@ -345,9 +346,9 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { var msg = can.request(event, can.Option(), {_handle: "true"}) msg._upload = upload[0].files[0], msg._progress = action.show - can.run(event, [ctx.ACTION, html.UPLOAD], function(msg) { + can.runAction(event, html.UPLOAD, [], function(msg) { can.user.toastSuccess(can), can.Update(), action.close() - }, true) + }) }, show: function (event, value, total, loaded) { now = new Date() value == 0 && action.begin(event) diff --git a/page/index.css b/page/index.css index b0178ed4..68c4fd3f 100644 --- a/page/index.css +++ b/page/index.css @@ -25,7 +25,7 @@ table.layout div.toggle { font-size:24px; background-color:#e1aeae45; position:a table.layout div.toggle>div { color:white; display:table-cell; } table.layout div.toggle.project { padding-top: 50px; height:100px; width:15px; top:20%; left:0px; border-top-right-radius:10px; border-bottom-right-radius:10px; } table.layout div.toggle.profile { padding-top: 50px; height:100px; width:15px; top:20%; right:0px; border-top-left-radius:10px; border-bottom-left-radius:10px; } -table.layout div.toggle.display { overflow:hidden; margin-top:-17px; height:15px; width:100px; position:sticky; left:40%; border-top-left-radius:10px; border-top-right-radius:10px; } +table.layout div.toggle.display { overflow:hidden; margin-top:-14px; height:15px; width:100px; position:sticky; left:40%; border-top-left-radius:10px; border-top-right-radius:10px; } table.layout div.toggle.display>div { color:white; text-align:center; height:15px; width:100px; } fieldset.Action.cmd>div.toggle.project { display:none; } @@ -63,7 +63,7 @@ form.option>div.item input.args[name=offset] { width:48px; } form.option>div.item input.args[name=offend] { width:48px; } form.option>div.item.textarea { margin-top:4px; } -div.action>div.item { margin-right:3px; } +div.action>div.item { margin-right:3px; height:31px; } div.action>div.item.select { background:none; } div.action>div.item.space { width:10px; } div.output { position:relative; } @@ -206,7 +206,7 @@ body.mobile.landscape fieldset.draw.trend div.action { display:block; } /* font */ * { tab-size:4; } textarea { tab-size:2; } -legend { font-size:1.2rem; } +legend { font-size:1.2rem; height:31px; } select, input { font-size:1.1rem; } table.content th, table.content td, div.item, div.tabs, div.code, code.story, div.story[data-type=spark] { font-size:1.1rem; font-family:monospace; } div.status>div.item>label { font-size:0.6rem; font-family:monospace; } @@ -290,6 +290,8 @@ body.white.simple div.output.card input[type=button] { background-color:#0152d9; body.mobile.simple div.output.card div.item { width:-webkit-fill-available; } body.mobile.landscape.simple div.output.card div.item { width:auto; float:left; } +body.simple fieldset.feel.float { top:0 } + body.white.simple>div.carte { background-color:white; color:black; border:solid 1px #e7e7e7; } body.white.simple>div.carte div.item { font-size:1rem; } body.white.simple>div.carte div.item:hover { background-color:#0152d9; color:white; } diff --git a/panel/action.css b/panel/action.css index cfbf8586..e6ca26a4 100644 --- a/panel/action.css +++ b/panel/action.css @@ -15,14 +15,14 @@ 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: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.output fieldset.story.Full>legend { margin:0px; float:left; } fieldset.Action>div.project.toggle { background-color:cornsilk; opacity:0.4; color:teal; font-size: 28px; padding-top: 50px; height: 100px; width:20px; position: fixed; top: 30%; border-top-right-radius:20px; border-bottom-right-radius:20px; } fieldset.panel.cmd>div.output>fieldset.plugin { padding:0; margin:0; } -fieldset.panel.cmd>div.output>fieldset.plugin>legend { background-color:darkcyan; padding:0 10px; margin-right:3px; height:30px; float:left; } +fieldset.panel.cmd>div.output>fieldset.plugin>legend { background-color:darkcyan; padding:0 10px; margin-right:3px; height:31px; float:left; } body.mobile fieldset.panel.cmd>div.output>fieldset.plugin>legend { height:42px; } div.output.form div.item { diff --git a/panel/action.js b/panel/action.js index eba793f4..1d97ad8c 100644 --- a/panel/action.js +++ b/panel/action.js @@ -235,7 +235,7 @@ Volcanos(chat.ONLAYOUT, {help: "导出数据", list: [], }, grid: function(can, silent) { var ACTION_LAYOUT_FMT = " fieldset.Action.grid>div.output fieldset.plugin { width:_width; height:_height; } fieldset.Action.grid>div.output fieldset.plugin>div.output { width:_width; height:_height; } " - can.user.input(event, can, [{name: "m", value: 2}, {name: "n", value: 2}], function(event, button, data, list, args) { + can.user.input(event, can, [{name: "m", value: 2}, {name: "n", value: 2}], function(data) { can.getActionSize(function(height, width) { var m = parseInt(data.m)||2, n = parseInt(data.n)||2 can.page.css(can.base.replaceAll(ACTION_LAYOUT_FMT, "_width", (width-(4*m+1)*html.PLUGIN_MARGIN)/m+"px", "_height", (height-(4*n+1)*html.PLUGIN_MARGIN)/n+"px")) }) diff --git a/panel/footer.js b/panel/footer.js index d1add61e..1eba48f7 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -27,7 +27,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms case cli.CLOSE: can.cli && can.cli.close(); break case cli.CLEAR: can.cli && can.cli.close(); break default: - can.run(event, [ice.RUN].concat(can.core.Split(event.target.value, ice.SP)), function(msg) { + can.runAction(event, ice.RUN, can.core.Split(event.target.value, ice.SP), function(msg) { can.cli && can.cli.close(), can.onexport.float(can, msg, function(value, key, index, line, list) {}, "cli", true) }) } @@ -112,7 +112,7 @@ Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], can.getActionSize(function(msg, top, left, width, height) { can.onappend.plugin(can, {index: cmds[0], args: cmds.slice(1), height: height-100, width: width}, function(sub) { - sub.run = function(event, cmd, cb) { can.runAction(event, ice.RUN, [cmds[0]].concat(cmd), cb) } + sub.run = function(event, cmd, cb) { can.runActionCommand(event, cmds[0], cmd, cb) } can.page.style(can, sub._target, {top: top+100, left: left}) can.page.style(can, sub._legend, {display: html.BLOCK}) diff --git a/panel/header.js b/panel/header.js index 69640428..813a1d37 100644 --- a/panel/header.js +++ b/panel/header.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) { - can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) + can.onmotion.clear(can) can.onimport._title(can, msg, target) can.onimport._state(can, msg, target) can.onimport._avatar(can, msg, target) @@ -7,6 +7,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.onimport._search(can, msg, target) can.onimport._menus(can, msg, target) can.ondaemon._init(can) + can.base.isFunc(cb) && cb(msg) }, _title: function(can, msg, target) { if (can.user.isMobile) { return } can.core.List(can.base.getValid(msg.result, can.Conf(chat.TITLE)||["shylinux.com/x/contexts"]), function(item) { @@ -31,11 +32,11 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }, _init: function(target) { item == mdb.TIME && can.onimport._time(can, target) }}]) }) }, - _avatar: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile || !msg.Option(aaa.AVATAR)) { return } + _avatar: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return } can.page.Modify(can, "div.state.avatar>img", {src: can.onexport.avatar(can)}) }, - _background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile || can.Conf(aaa.BACKGROUND) == "_") { return } - msg.Option(aaa.BACKGROUND) && can.onlayout.background(can, "/share/local/background") + _background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return } + can.onlayout.background(can, can.onexport.background(can)) }, _search: function(can, msg, target) { var ui = can.onappend.input(can, {type: html.TEXT, name: mdb.SEARCH, onkeydown: function(event) { @@ -66,14 +67,18 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms time: function(can, target) { can.onimport.topic(can) target.innerHTML = can.user.time(can, null, "%w %H:%M:%S") }, - avatar: function(event, can, url) { if (can.user.isExtension || can.user.isLocalFile) { return } - can.runAction(event, aaa.AVATAR, [url], function(msg) { can.onimport._avatar(can, msg) }) + avatar: function(event, can, avatar) { if (can.user.isExtension || can.user.isLocalFile) { return } + can.runAction(event, aaa.AVATAR, [avatar], function(msg) { + can.user.info.avatar = avatar, can.onimport._avatar(can, msg), can.user.toastSuccess(can) + }) }, topic: function(can, topic) { topic && (can._topic = topic) can.user.topic(can, can._topic || can.misc.Search(can, chat.TOPIC) || Volcanos.meta.args.topic || (can.base.isNight()? chat.BLACK: chat.WHITE)) }, - background: function(event, can, url) { if (can.user.isExtension || can.user.isLocalFile) { return } - can.runAction(event, aaa.BACKGROUND, [url], function(msg) { can.onimport._background(can, msg) }) + background: function(event, can, background) { if (can.user.isExtension || can.user.isLocalFile) { return } + can.runAction(event, aaa.BACKGROUND, [background], function(msg) { + can.user.info.background = background, can.onimport._background(can, msg), can.user.toastSuccess(can) + }) }, menu: function(can, cmds, cb, trans) { can.base.isString(cmds) && (cmds = [cmds]) return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(can.base.getValid(cmds.slice(1), [cmds[0]]), function(item) { @@ -149,7 +154,7 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb return // 登录认证 } can.base.Copy(can.onaction._trans, can.base.Obj(msg.Option(chat.TRANS), {})) - can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.avatar = msg.Option(aaa.AVATAR) + can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.avatar = msg.Option(aaa.AVATAR), can.user.info.background = msg.Option(aaa.BACKGROUND) msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) }) can.onimport._init(can, msg, function(msg) { can.onengine.signal(can, chat.ONLOGIN, msg) }, can._output) }) @@ -170,14 +175,14 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb white: function(event, can, button) { can.onimport.topic(can, button), can.onlayout._init(can) }, print: function(event, can, button) { can.onimport.topic(can, [chat.WHITE, button]), can.setRiver(html.HEIGHT, ""), can.setAction(html.HEIGHT, "") }, webpack: function(event, can) { - can.user.input(event, can, [{name: mdb.NAME, value: can.user.title()}], function(ev, button, meta, list) { + can.user.input(event, can, [{name: mdb.NAME, value: can.user.title()}], function(data) { can.core.Item(Volcanos.meta.pack, function(key, msg) { can.core.List(["_event", "_can", "_xhr", ice.MSG_SESSID, ""], function(key) { delete(msg[key]) }) }) var msg = can.request(event, { topic: can._topic, layout: can.getAction(chat.LAYOUT), river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM), - name: meta.name, content: JSON.stringify(Volcanos.meta.pack), + name: data.name, content: JSON.stringify(Volcanos.meta.pack), args: "name,topic,layout,river,storm", }) @@ -192,7 +197,7 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb can.onmotion.toimage(event, can, can.user.title(), can._root._target) }, config: function(event, can) { - can.user.input(event, can, [{name: "scope", value: "etc/local.shy"}], function(ev, button, meta, list, args) { + can.user.input(event, can, [{name: "scope", value: "etc/local.shy"}], function(args) { can.runAction(event, ctx.CONFIG, args, function(msg) { can.user.jumps(msg.Result()) }) }) }, @@ -211,7 +216,7 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, mdb.TYPE, aaa.LOGIN]) }, setnick: function(event, can) { - var ui = can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(ev, button, data, list, args) { + var ui = can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(list) { can.runAction(event, aaa.USERNICK, [list[0]], function(msg) { can.page.Select(can, can._output, can.core.Keys(html.DIV, aaa.USERNICK), function(item) { can.page.Modify(can, item, can.Conf(aaa.USERNICK, list[0])) @@ -224,7 +229,7 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb var ui = can.user.input(event, can, [ {name: html.PASSWORD, type: html.PASSWORD, action: ice.AUTO}, {name: html.PASSWORD, type: html.PASSWORD, action: ice.AUTO}, - ], function(ev, button, data, list, args) { + ], function(list) { if (list[0] != list[1]) { return can.user.toast(can, "密码不一致"), ui.focus(), true } can.runAction(event, aaa.PASSWORD, [list[0]]) }) @@ -232,17 +237,22 @@ Volcanos(chat.ONACTION, {help: "交互数据", list: [], _init: function(can, cb }, chinese: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "zh") }, english: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "en") }, - clear: function(event, can) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, ""), can.user.reload(true) }, + clear: function(event, can) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, "") }, logout: function(event, can) { can.user.logout(can) }, }) Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], height: function(can) { return can._target.offsetHeight }, topic: function(can) { return can._topic }, avatar: function(can) { - if (can.user.info.avatar.indexOf("http") == 0) { - return can.user.info.avatar - } else { - return "/share/local/avatar" + if (can.user.info.avatar == "void") { + return "" } + return can.user.info.avatar + }, + background: function(can) { + if (can.user.info.background == "void") { + return "" + } + return can.user.info.background }, }) diff --git a/panel/river.js b/panel/river.js index aaf812af..39334d74 100644 --- a/panel/river.js +++ b/panel/river.js @@ -121,7 +121,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], _init: function(can, cb can.user.input(event, can, [ {name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"}, {name: mdb.NAME, value: "hi", _trans: "群名"}, {name: mdb.TEXT, value: "hello", _trans: "简介"}, - ], function(event, button, meta, list, args) { + ], function(args) { can.runAction(event, mdb.CREATE, args, function(msg) { can.misc.Search(can, {river: msg.Result()}) }) }) }, @@ -171,7 +171,7 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互", can.runAction(event, aaa.INVITE, [], function(msg) { can.user.toastScript(can, msg.Result(), button) }) }, "创建空间": function(event, can, button, river, storm) { can.request(event, {action: button}) - can.user.input(event, can, [{name: "name", value: "hi"}, {name: "repos"}, {name: "template"}], function(event, button, data, list, args) { + can.user.input(event, can, [{name: "name", value: "hi"}, {name: "repos"}, {name: "template"}], function(args) { can.runAction(event, cli.START, args.concat(chat.RIVER, river), function(msg) { var link = can.misc.MergeURL(can, {pod: can.core.Keys(can.misc.Search(can, ice.POD), msg.Option(mdb.NAME))}) can.user.toast(can, link), can.user.open(link) @@ -188,8 +188,8 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互", }) }, "重命名群组": function(event, can, button, river) { - can.user.input(event, can, [mdb.NAME], function(event, button, meta, list) { - can.runAction(can.request(event, {hash: river}), mdb.MODIFY, [mdb.NAME, meta.name], function(msg) { can.misc.Search(can, {river: river}) }) + can.user.input(event, can, [mdb.NAME], function(data) { + can.runAction(can.request(event, {hash: river}), mdb.MODIFY, [mdb.NAME, data.name], function(msg) { can.misc.Search(can, {river: river}) }) }) }, "删除群组": function(event, can, button, river) { @@ -207,7 +207,7 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互", }) }, "重命名应用": function(event, can, button, river, storm) { - can.user.input(event, can, [mdb.NAME], function(ev, button, meta, list, args) { + can.user.input(event, can, [mdb.NAME], function(args) { 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}) }) @@ -225,7 +225,7 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互", can.user.input(event, can, [ {name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"}, {name: mdb.NAME, value: "hi", _trans: "名称"}, {name: mdb.TEXT, value: "hello", _trans: "简介"}, - ], function(event, button, meta, list, args) { + ], function(args) { can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.misc.Search(can, {river: river, storm: msg.Result()}) }) diff --git a/panel/search.js b/panel/search.js index 6e5e2341..088cb633 100644 --- a/panel/search.js +++ b/panel/search.js @@ -17,7 +17,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }), can.onmotion.story.auto(can) can.onappend._status(can, can.base.Obj(msg.Option(ice.MSG_STATUS), []).concat({name: "selected", value: "0"})) - msg.Length() == 1 && can.ui.display.innerHTML == "" && can.page.Select(can, table, html.TD)[0].click() + msg.Length() == 1 && can.ui.profile.innerHTML == "" && can.page.Select(can, table, html.TD)[0].click() }, _word: function(can, msg, cmds, fields) { can.type = cmds[0] var cb = can.onaction[cmds[1]]; if (cb) { cb({}, can); return } @@ -121,7 +121,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [cli.CLOSE, cli.CLEAR, cli. }) sub.run = function(event, cmds, cb) { - can.runAction(event, ice.RUN, [meta.index].concat(cmds), cb) + can.runActionCommand(event, meta.index, cmds, cb) }, sub.Focus() }, can.ui.profile) }, diff --git a/plugin/local/chat/div.js b/plugin/local/chat/div.js index 6b93803f..b3dba154 100644 --- a/plugin/local/chat/div.js +++ b/plugin/local/chat/div.js @@ -60,7 +60,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.page.ClassList.add(can, field, meta.style) can.page.style(can, field, size) - meta.index && can.run(event, [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { + meta.index && can.runAction(event, ctx.COMMAND, [meta.index], function(msg) { can.onappend._init(can, can.base.Copy({ feature: can.base.Obj(msg.Append("meta")), inputs: can.base.Obj(msg.Append("list")), @@ -69,23 +69,21 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }, size), ["/plugin/state.js"], function(sub) { can.page.style(can, sub._output, size) sub.run = function(event, cmds, cb) { - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, meta.index], cmds), cb, true) + can.runActionCommand(event, meta.index, cmds, cb) } }, target, field) - }, true) + }) return field }, }, ["/plugin/local/chat/div.css"]) Volcanos(chat.ONACTION, {help: "操作数据", list: [], "添加": function(event, can) { - can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(event, button, data, list, args) { + can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(data) { can.current._add({meta: data, list: []}) }) }, "保存": function(event, can) { var msg = can.request(event, can.Option()) - can.run(event, [mdb.MODIFY, mdb.TEXT, JSON.stringify(can._meta)], function(msg) { - can.user.toastSuccess(can) - }, true) + can.runAction(event, mdb.MODIFY, [mdb.TEXT, JSON.stringify(can._meta)]) }, "预览": function(event, can) { can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, {_path: "/chat/div/"+can.Option("hash")})]) diff --git a/plugin/local/chat/trans.js b/plugin/local/chat/trans.js index 4704cdbe..b6cf9820 100644 --- a/plugin/local/chat/trans.js +++ b/plugin/local/chat/trans.js @@ -16,7 +16,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms if (can.onaction[cmds[1]]) { return can.onaction[cmds[1]](can, from, to, event, cmds, cb) } var msg = sub.request(event, {_pod: can.Option(from)}) - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, index], cmds), cb, true) + can.runActionCommand(event, index, cmds, cb) } }) }, diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 678f783e..6668cbf8 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -86,12 +86,12 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar } }, mdb.PLUGIN, function(event) { - can.user.input(event, can, [ctx.INDEX, ctx.ARGS], function(event, button, data) { + can.user.input(event, can, [ctx.INDEX, ctx.ARGS], function(data) { can.onimport.plugin(can, data, ui.output) }) }, html.WIDTH, function(event) { - can.user.input(event, can, [{name: html.WIDTH, value: 50}], function(event, button, data) { + can.user.input(event, can, [{name: html.WIDTH, value: 50}], function(data) { can.profile_size[can.onexport.keys(can)] = can.ConfWidth()*parseInt(data.width)/100 can.onaction["展示"](event, can) }) @@ -107,13 +107,13 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar cli.CLEAR, function(event) { can.onmotion.clear(can, ui.output) }, cli.EXEC, function(event) { can.onaction["执行"](event, can) }, mdb.PLUGIN, function(event) { - can.user.input(event, can, [ctx.INDEX, ctx.ARGS], function(event, button, data) { + can.user.input(event, can, [ctx.INDEX, ctx.ARGS], function(data) { can.onimport.plugin(can, data, ui.output) }) }, html.HEIGHT, function(event) { - can.user.input(event, can, [{name: html.HEIGHT, value: 50}], function(event, button, data) { - can.profile_size[can.onexport.keys(can)] = can.ConfHeight()*parseInt(data.height)/100 + can.user.input(event, can, [{name: html.HEIGHT, value: 50}], function(list) { + can.profile_size[can.onexport.keys(can)] = can.ConfHeight()*parseInt(list[0])/100 can.onaction["执行"](event, can) }) } @@ -178,7 +178,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar }, true) }, function() { can.base.isFunc(cb) && cb() }) - can.run(can.request({}, {fields: "index"}), [ctx.ACTION, ctx.COMMAND, "search", "command"], function(msg) { + can.runAction(can.request({}, {fields: "index"}), ctx.COMMAND, ["search", "command"], function(msg) { can.onimport.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) @@ -264,7 +264,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar plugin: function(can, meta, target, cb) { can.onappend.plugin(can, meta, function(sub) { sub.run = function(event, cmds, cb) { can.request(event, can.Option()) - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, meta.index], cmds), cb, true) + can.runActionCommand(event, meta.index, cmds, cb) }, can.base.isFunc(cb) && cb(sub) }, target) }, @@ -423,9 +423,9 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line } } can.Conf("plug") && (can.onsyntax[can.parse] = can.Conf("plug")) - var p = can.onsyntax[can.parse]; !p? can.run({}, [ctx.ACTION, mdb.PLUGIN, can.parse, msg.Option(nfs.FILE), msg.Option(nfs.PATH)], function(msg) { + var p = can.onsyntax[can.parse]; !p? can.runAction({}, mdb.PLUGIN, [can.parse, msg.Option(nfs.FILE), msg.Option(nfs.PATH)], function(msg) { init(p = can.onsyntax[can.parse] = can.base.Obj(msg.Result())) - }, true): init(p) + }): init(p) }, _parse: function(can, line) { if (line.indexOf(" -1) { return sub.onaction.change(event, sub, key, value) } if (target.tagName == "INPUT" && target.type == html.BUTTON) { var msg = sub.request(event, line, sub.Option()) - return sub.run(event, [ctx.ACTION, target.name], function(msg) { sub.run() }, true) + return sub.runAction(event, target.name, [], function(msg) { sub.run() }) } line.line && can.onimport.tabview(can, line.path, line.file.replace(ice.PWD, ""), parseInt(line.line)) }} }, sub._output), sub.onappend._status(sub, msg.Option(ice.MSG_STATUS)), can.Status("标签数", msg.Length()) - }, true) + }) }, can.base.isFunc(cb) && cb(sub) }) }}) diff --git a/plugin/local/code/inner/search.js b/plugin/local/code/inner/search.js index 32a114e1..8609651d 100644 --- a/plugin/local/code/inner/search.js +++ b/plugin/local/code/inner/search.js @@ -36,18 +36,18 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { show(msg) }, nfs.TAGS, function(cmds) { msg.Option(kit.Dict(ice.MSG_HANDLE, ice.TRUE, ice.MSG_FIELDS, "file,line,text")) - can.run(msg, [ctx.ACTION, mdb.SEARCH, can.parse, cmds[0], can.Option(nfs.PATH)], function(msg) { var sub = msg._can + can.runAction(msg, 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, [ctx.ACTION, nfs.GREP, cmds[0]], function(msg) { var sub = msg._can + can.runAction(msg, 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, cmds, function(msg) { show(msg) }, true) })) diff --git a/plugin/local/code/inner/sess.js b/plugin/local/code/inner/sess.js index 03a00cb3..9ebce492 100644 --- a/plugin/local/code/inner/sess.js +++ b/plugin/local/code/inner/sess.js @@ -3,10 +3,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { sub.run = function(event, cmds, cb) { var msg = can.request(event) if (can.misc.runAction(can, msg, cmds, cb, kit.Dict( nfs.SAVE, function(cmds) { - can.run(event, [ctx.ACTION, ice.RUN, SESS].concat([ctx.ACTION, mdb.CREATE, + can.runActionCommand(event, SESS, [ctx.ACTION, mdb.CREATE, "tool", JSON.stringify(can.onexport.tool(can)), "tabs", JSON.stringify(can.onexport.tabs(can)), - ]), cb, true) + ], cb) }, nfs.LOAD, function(cmds) { can.onimport.sess(can, { @@ -15,7 +15,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { }) }, ))) { return } - can.run(event, [ctx.ACTION, ice.RUN, SESS].concat(cmds), cb, true) + can.runActionCommand(event, SESS, cmds, cb) }, can.base.isFunc(cb) && cb(sub) }) }}) diff --git a/plugin/local/code/inner/template.js b/plugin/local/code/inner/template.js index 0fbcfcf1..19aa6bca 100644 --- a/plugin/local/code/inner/template.js +++ b/plugin/local/code/inner/template.js @@ -3,21 +3,19 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { sub.run = function(event, cmds, cb) { var msg = sub.request(event, can.Option()) if (can.misc.runAction(can, msg, cmds, cb, kit.Dict( nfs.DEFS, function(cmds) { - can.user.input(event, can, can.base.Obj(msg.Option("args")||"[]"), function(ev, button, data, list, args) { + can.user.input(event, can, can.base.Obj(msg.Option("args")||"[]"), function(data) { var msg = can.request(event); can.core.Item(data, function(key, value) { msg.Option(key, value) }) - can.run(event, [ctx.ACTION, ice.RUN, "web.code.template", nfs.DEFS].concat(cmds), function(msg) { + can.runActionCommand(event, "web.code.template", [nfs.DEFS].concat(cmds), function(msg) { can.base.isFunc(cb) && cb(msg) can.onimport.project(can, can.Option(nfs.PATH)) can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option("main"), "", function() { can.onimport.tabview(can, can.Option(nfs.PATH), cmds[1], 1, function() {}) }, true) - }, true) + }) }) } ))) { return } - can.run(event, [ctx.ACTION, ice.RUN, "web.code.template"].concat(cmds), function(msg) { - can.base.isFunc(cb) && cb(msg) - }, true) + can.runActionCommand(event, "web.code.template", cmds, cb) }, can.base.isFunc(cb) && cb(sub) }) }}) diff --git a/plugin/local/code/snippet.js b/plugin/local/code/snippet.js index eb2783f8..7481060d 100644 --- a/plugin/local/code/snippet.js +++ b/plugin/local/code/snippet.js @@ -4,7 +4,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.onappend.plugin(can, {index: "web.code.vimer", style: "full"}, function(sub) { sub.run = function(event, cmds, cb) { var res = can.request(event) if (cmds[1] == "plugin") { - can.run(event, can.misc.concat(can, ["action", "vimer"], cmds), cb, true) + can.runAction(event, "vimer", cmds, cb) return } if (cmds[1] == "main.go") { res.Echo(msg.Option("content")) @@ -22,9 +22,9 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms Volcanos(chat.ONACTION, {help: "操作数据", list: [], _init: function(can, msg, list, cb, target) { }, run: function(event, can, msg) { - can.run(event, [ctx.ACTION, ice.RUN, "go", "hi.go", can.sub.onexport.content(can.sub)], function(msg) { + can.runAction(event, ice.RUN, ["go", "hi.go", can.sub.onexport.content(can.sub)], function(msg) { can.onappend.board(can, msg) - }, true) + }) }, }) Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) { diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 5acd0026..93ce118a 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -179,7 +179,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [nfs.SAVE, code.AUTOGEN, co }) }, _runs: function(event, can, button) { var meta = can.Conf(); can.request(event, {action: button}) - can.user.input(event, can, meta.feature[button], function(ev, btn, data, list, args) { + can.user.input(event, can, meta.feature[button], function(args) { can.onaction._run(event, can, button, args) }) }, diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index 96258c4b..462c30ba 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -67,7 +67,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.core.Item(task, function(key, value) { key != "_target" && can.page.Append(can, table, [{ td: [key, key == "pod" && value != ""? can.page.Format("a", can.misc.MergeURL(can, {pod: value}), value): value], onclick: function(event) { if (event.target.type == "button") { var msg = can.request(event, can.sup.task) - can.run(event, [ctx.ACTION, event.target.name], function(msg) { can.Update() }, true) + can.runAction(event, event.target.name, [], function(msg) { can.Update() }) } }, ondblclick: function(event) { can.onmotion.modify(can, event.target, function(ev, value, old) { can.onaction.modifyTask(event, can, task, key, value) @@ -77,7 +77,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms _display: function(can, task) { if (!task["extra.cmd"]) { return } can.onappend.plugin(can, {type: chat.STORY, ctx: task["extra.ctx"], cmd: task["extra.cmd"], arg: task["extra.arg"]}, function(sub, meta) { sub.run = function(event, cmds, cb) { var msg = can.request(event, kit.Dict("task.pod", task["pod"], "task.zone", task.zone, "task.id", task.id)) - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, task[mdb.ZONE], task[mdb.ID]], cmds), cb, true) + can.runAction(event, ice.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb) } }, can.ui.display) can.page.style(can, can.ui.display, {display: html.BLOCK}) @@ -155,12 +155,12 @@ Volcanos(chat.ONACTION, {help: "组件交互", list: [ ["view", "", "name", "text", "level", "score"], ], insertTask: function(event, can, time) { var msg = can.sup.request(event, {begin_time: time}) - can.user.input(event, can, can.Conf("feature.insert"), function(event, button, data, list) { - can.run(event, can.base.Simple(ctx.ACTION, mdb.INSERT, data, "begin_time", time), true) + can.user.input(event, can, can.Conf("feature.insert"), function(args) { + can.runAction(event, mdb.INSERT, args.concat("begin_time", time)) }) }, modifyTask: function(event, can, task, key, value) { var msg = can.request(event, task) - can.run(event, [ctx.ACTION, mdb.MODIFY, key, value, task[key]]) + can.runAction(event, mdb.MODIFY, [key, value, task[key]]) }, _filter: function(event, can, key, value) { var count = 0 diff --git a/plugin/local/wiki/data.js b/plugin/local/wiki/data.js index a533be0f..12b0a2bd 100644 --- a/plugin/local/wiki/data.js +++ b/plugin/local/wiki/data.js @@ -54,9 +54,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: ["保存", ["mode", "全选 }, "保存": function(event, can, cmd) { - can.run(event, [ctx.ACTION, cmd, can.Option("path"), can.onexport.file(can)], function(msg) { - can.user.toastSuccess(can) - }, true) + can.runAction(event, cmd, [can.Option("path"), can.onexport.file(can)]) }, some: function(event, can, cmd) { can.onaction._compute(event, can) diff --git a/plugin/local/wiki/draw.js b/plugin/local/wiki/draw.js index 7fbdf5d4..783f9224 100644 --- a/plugin/local/wiki/draw.js +++ b/plugin/local/wiki/draw.js @@ -12,23 +12,23 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms can.page.Select(can, can.ui.content, html.SVG, function(svg) { can.svg = can.group = can.onimport._block(can, svg), can.onimport._group(can, svg).click() can.core.ItemCB(can.onaction, function(key, cb) { svg[key] = function(event) { cb(event, can) } }) - can.page.Select(can, svg, "*", function(item, index) { can.onimport._block(can, item) + can.page.Select(can, svg, mdb.FOREACH, function(item, index) { can.onimport._block(can, item) item.tagName == svg.G && item.Value(html.CLASS) && can.onimport._group(can, item) }) }) - // 默认参数 - can.core.Timer(10, function() { - can.core.Item({ - "stroke-width": 2, stroke: cli.YELLOW, fill: cli.PURPLE, - "font-size": 24, "font-family": html.MONOSPACE, - go: ice.RUN, shape: "rect", grid: 10, - }, function(key, value) { can.svg.Value(key, can.Action(key, can.svg.Value(key)||value)) }) - var pid = can.Option("pid")||can.svg.Value("pid"); can.onmotion.hidden(can, can.ui.profile, true) - pid && can.page.Select(can, can.svg, ice.PT+pid, function(item) { - can.ondetail.run({target: item}, can), can.onimport._profile(can, item) - }) || can.onimport._profile(can, can.svg), can.onmotion.hidden(can, can.ui.profile) + // 默认参数 + can.onmotion.delay(can, function() { + can.core.Item(kit.Dict( + html.STROKE_WIDTH, 2, html.STROKE, cli.YELLOW, html.FILL, cli.PURPLE, + html.FONT_SIZE, 24, html.FONT_FAMILY, html.MONOSPACE, + "go", ice.RUN, svg.SHAPE, svg.RECT, "grid", 10, + ), function(key, value) { can.svg.Value(key, can.Action(key, can.svg.Value(key)||value)) }) + can.page.style(can, can.ui.display, html.MIN_HEIGHT, 80, html.MAX_HEIGHT, can.ConfHeight()-can.svg.Val(html.HEIGHT)-52) + var pid = can.Option(svg.PID)||can.svg.Value(svg.PID); pid && can.page.Select(can, can.svg, ice.PT+pid, function(item) { + can.onimport._profile(can, item), can.ondetail.run({target: item}, can) + }) || can.onimport._profile(can, can.svg) }) }, _group: function(can, target) { var name = target.Groups() @@ -38,7 +38,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }) } return (name || target == can.svg) && can.onimport.item(can, html.ITEM, {name: name||html.SVG}, function(event) { show(event) - can.onaction.show(event, can) + can.onaction.show(event, can), can.Status(svg.GROUP, name||html.SVG) }, function(event) { can.user.carteRight(event, can, can.onaction, [ice.HIDE, ice.SHOW, mdb.CREATE, cli.CLEAR, mdb.REMOVE]) }, can.ui.project) @@ -76,25 +76,24 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms } target.Groups = function() { var item = target var list = []; while (item && item.tagName != html.SVG) { - item.tagName == svg.G && item.Value(html.CLASS) && list.push(item.Value(html.CLASS)) - item = item.parentNode + item.tagName == svg.G && item.Value(html.CLASS) && list.push(item.Value(html.CLASS)), item = item.parentNode } return list.reverse().join(ice.PT) } return target }, - _profile: function(can, target, list) { can.Option("pid", can.onfigure._pid(can, target)) - if (can.onmotion.cache(can, function() { return target.Value("pid") }, can.ui.profile)) { return } + _profile: function(can, target, list) { can.Option(svg.PID, can.onfigure._pid(can, target)) + if (can.onmotion.cache(can, function() { return target.Value(svg.PID) }, can.ui.profile)) { return } - var action = can.page.Append(can, can.ui.profile, [{view: "action"}]).first - can.onappend._action(can, can.ondetail.list, action, {_engine: function(event, can, button) { + var ui = can.page.Append(can, can.ui.profile, [html.ACTION, html.OUTPUT]) + can.onappend._action(can, can.ondetail.list, ui.action, {_engine: function(event, can, button) { can.ondetail[button]({target: target}, can, button) }}) var figure = can.onfigure._get(can, target) list = (list||[]).concat(figure.data.copy, [svg.X, svg.Y, mdb.INDEX, ctx.ARGS]) - can.page.Append(can, can.ui.profile, [{type: html.TABLE, className: "content", list: [ - {th: [mdb.KEY, mdb.VALUE]}, {td: [mdb.TYPE, target.tagName]}, {td: ["pid", target.Value("pid")]}, + can.page.Append(can, ui.output, [{type: html.TABLE, className: html.CONTENT, list: [ + {th: [mdb.KEY, mdb.VALUE]}, {td: [mdb.TYPE, target.tagName]}, {td: [svg.PID, target.Value(svg.PID)]}, ].concat(can.core.List(list, function(key) { return key = figure.data.size[key]||key, {td: [key, target.Value(key)], ondblclick: function(event) { can.onmotion.modify(can, event.target, function(event, value, old) { @@ -105,22 +104,20 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms }, draw: function(event, can, value) { - var figure = can.onfigure[value.shape] - var data = figure.draw(event, can, value.point, value.style) + var figure = can.onfigure[value.shape], data = figure.draw(event, can, value.point, value.style) can.core.Item(value.style, function(key, value) { data[key] = value }) var item = can.onfigure._push(can, figure.data.name||value.shape, data, can.group||can.svg) can.core.ItemCB(value, function(key, cb) { item[key] = cb }) - can.onimport._block(can, item), can.onfigure._pid(can, item) - return value._init && value._init(item), item + return can.onimport._block(can, item), can.onfigure._pid(can, item), value._init && value._init(item), item }, -}, ["/plugin/local/wiki/draw.css"]) +}, [""]) Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], _get: function(can, item, name) { return can.onfigure[name]||can.onfigure[item.getAttribute(mdb.NAME)]||can.onfigure[item.tagName] }, - _pid: function(can, item) { if (item.Value("pid")) { return item.Value("pid") } + _pid: function(can, item) { if (item.Value(svg.PID)) { return item.Value(svg.PID) } var pid = "p"+can.svg.Val(mdb.COUNT, can.svg.Val(mdb.COUNT)+1) - item.Value(html.CLASS, (item.Value(html.CLASS)+ice.SP+item.Value("pid", pid)).trim()) + item.Value(html.CLASS, (item.Value(html.CLASS)+ice.SP+item.Value(svg.PID, pid)).trim()) return pid }, _push: function(can, type, data, target) { @@ -140,9 +137,9 @@ Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], ship.target = can.page.Select(can, can.svg, ice.PT+ship.pid)[0] var p = can.onexport.anchor(target, ship.anchor, {}) if (ship.which == 1) { - ship.target.Val("x1", p.x), ship.target.Val("y1", p.y) + ship.target.Val(svg.X1, p.x), ship.target.Val(svg.Y1, p.y) } else if (ship.which == 2) { - ship.target.Val("x2", p.x), ship.target.Val("y2", p.y) + ship.target.Val(svg.X2, p.x), ship.target.Val(svg.Y2, p.y) } }) }, @@ -160,21 +157,21 @@ Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], show: function(can, target, figure) { return can.onexport._position(can, target, figure) } }, circle: { // - data: {points: 2, size: {height: svg.R, width: svg.R, x: "cx", y: "cy"}, copy: [svg.R]}, + data: {points: 2, size: {height: svg.R, width: svg.R, x: svg.CX, y: svg.CY}, copy: [svg.R]}, draw: function(event, can, point) { if (point.length < 2) { return } var p0 = point[0], p1 = point[1] return {r: parseInt(Math.sqrt(Math.pow(p0.x-p1.x, 2)+Math.pow(p0.y-p1.y, 2))), cx: p0.x, cy: p0.y} }, }, ellipse: { // - data: {points: 2, size: {height: "ry", width: "rx", x: "cx", y: "cy"}, copy: ["ry", "rx"]}, + data: {points: 2, size: {height: svg.RY, width: svg.RX, x: svg.CX, y: svg.CY}, copy: [svg.RY, svg.RX]}, draw: function(event, can, point) { if (point.length < 2) { return } var p0 = point[0], p1 = point[1] return {ry: Math.abs(p0.y - p1.y), rx: Math.abs(p0.x - p1.x), cx: p0.x, cy: p0.y} }, }, rect: { // - data: {points: 2, ry: 4, rx: 4, size: {}, copy: [html.HEIGHT, html.WIDTH, "ry", "rx"]}, + data: {points: 2, ry: 4, rx: 4, size: {}, copy: [html.HEIGHT, html.WIDTH, svg.RY, svg.RX]}, draw: function(event, can, point) { if (point.length < 2) { return } var p0 = point[0], p1 = point[1] return { @@ -185,12 +182,12 @@ Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], text: function(can, data, target) { return data.x = target.Val(svg.X)+target.Val(html.WIDTH)/2, data.y = target.Val(svg.Y)+target.Val(html.HEIGHT)/2, data }, }, block: { // - data: {points: 2, ry: 4, rx: 4, size: {}, copy: [html.HEIGHT, html.WIDTH, "ry", "rx"]}, + data: {points: 2, ry: 4, rx: 4, size: {}, copy: [html.HEIGHT, html.WIDTH, svg.RY, svg.RX]}, draw: function(event, can, point) { if (point.length < 2) { return } this._temp && can.page.Remove(can, this._temp) && delete(this._temp) this._temp = can.onfigure._push(can, svg.G, {}, can.group||can.svg) - var rect = can.onfigure._push(can, "rect", can.onfigure.rect.draw(event, can, point), this._temp) + var rect = can.onfigure._push(can, svg.RECT, can.onfigure.rect.draw(event, can, point), this._temp) if (event.type == html.CLICK) { can.onfigure._pid(can, rect), delete(this._temp) } @@ -198,7 +195,7 @@ Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], text: function(can, data, target) { can.onfigure.rect.text(can, data, target) }, }, line: { // - data: {points: 2, size: {x: "x1", y: "y1"}, copy: ["x1", "y1", "x2", "y2"]}, + data: {points: 2, size: {x: svg.X1, y: svg.Y1}, copy: [svg.X1, svg.Y1, svg.X2, svg.Y2]}, grid: function(event, can, point) { var target = event.target if (target == can.svg) { return } var p = point[point.length-1], pos = can.onexport.cursor(event, can, target) @@ -207,12 +204,12 @@ Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [], }, draw: function(event, can, point) { if (point.length < 2) { return } var p0 = point[0], p1 = point[1], ship = [] - p0.target && p0.target.Value && ship.push({pid: p0.target.Value("pid")}) - p1.target && p1.target.Value && ship.push({pid: p1.target.Value("pid")}) + p0.target && p0.target.Value && ship.push({pid: p0.target.Value(svg.PID)}) + p1.target && p1.target.Value && ship.push({pid: p1.target.Value(svg.PID)}) return {x1: p0.x, y1: p0.y, x2: p1.x, y2: p1.y, ship: ship} }, - text: function(can, target, data) { return data.x = (target.Val("x1")+target.Val("x2"))/2, data.y = (target.Val("y1")+target.Val("y2"))/2, data }, - show: function(can, target, figure) { return "<("+(target.Val("y2")-target.Val("y1"))+ice.FS+(target.Val("x2")-target.Val("x1"))+")"+can.onexport._position(can, target, figure) }, + text: function(can, target, data) { return data.x = (target.Val(svg.X1)+target.Val(svg.X2))/2, data.y = (target.Val(svg.Y1)+target.Val(svg.Y2))/2, data }, + show: function(can, target, figure) { return "<("+(target.Val(svg.Y2)-target.Val(svg.Y1))+ice.FS+(target.Val(svg.X2)-target.Val(svg.X1))+")"+can.onexport._position(can, target, figure) }, }, }, []) Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], @@ -225,41 +222,41 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [], ad: function(event, can) { can.Action("mode", "draw") }, ar: function(event, can) { can.Action("mode", "resize") }, - st: function(event, can) { can.Action("shape", "text") }, - sr: function(event, can) { can.Action("shape", "rect") }, - sl: function(event, can) { can.Action("shape", "line") }, - sc: function(event, can) { can.Action("shape", "circle") }, - se: function(event, can) { can.Action("shape", "ellipse") }, + st: function(event, can) { can.Action(svg.SHAPE, svg.TEXT) }, + sr: function(event, can) { can.Action(svg.SHAPE, svg.RECT) }, + sl: function(event, can) { can.Action(svg.SHAPE, svg.LINE) }, + sc: function(event, can) { can.Action(svg.SHAPE, svg.CIRCLE) }, + se: function(event, can) { can.Action(svg.SHAPE, svg.ELLIPSE) }, - cr: function(event, can) { can.onaction._change(can, "stroke", "red") }, - cb: function(event, can) { can.onaction._change(can, "stroke", "blue") }, - cg: function(event, can) { can.onaction._change(can, "stroke", "green") }, - cy: function(event, can) { can.onaction._change(can, "stroke", "yellow") }, - cp: function(event, can) { can.onaction._change(can, "stroke", "purple") }, - cc: function(event, can) { can.onaction._change(can, "stroke", "cyan") }, - ch: function(event, can) { can.onaction._change(can, "stroke", "black") }, - cw: function(event, can) { can.onaction._change(can, "stroke", "white") }, + cr: function(event, can) { can.onaction._change(can, html.STROKE, cli.RED) }, + cb: function(event, can) { can.onaction._change(can, html.STROKE, cli.BLUE) }, + cg: function(event, can) { can.onaction._change(can, html.STROKE, cli.GREEN) }, + cy: function(event, can) { can.onaction._change(can, html.STROKE, cli.YELLOW) }, + cp: function(event, can) { can.onaction._change(can, html.STROKE, cli.PURPLE) }, + cc: function(event, can) { can.onaction._change(can, html.STROKE, cli.CYAN) }, + ch: function(event, can) { can.onaction._change(can, html.STROKE, cli.BLACK) }, + cw: function(event, can) { can.onaction._change(can, html.STROKE, cli.WHITE) }, - fr: function(event, can) { can.onaction._change(can, "fill", "red") }, - fb: function(event, can) { can.onaction._change(can, "fill", "blue") }, - fg: function(event, can) { can.onaction._change(can, "fill", "green") }, - fy: function(event, can) { can.onaction._change(can, "fill", "yellow") }, - fp: function(event, can) { can.onaction._change(can, "fill", "purple") }, - fc: function(event, can) { can.onaction._change(can, "fill", "cyan") }, - fh: function(event, can) { can.onaction._change(can, "fill", "black") }, - fw: function(event, can) { can.onaction._change(can, "fill", "white") }, + fr: function(event, can) { can.onaction._change(can, html.FILL, cli.RED) }, + fb: function(event, can) { can.onaction._change(can, html.FILL, cli.BLUE) }, + fg: function(event, can) { can.onaction._change(can, html.FILL, cli.GREEN) }, + fy: function(event, can) { can.onaction._change(can, html.FILL, cli.YELLOW) }, + fp: function(event, can) { can.onaction._change(can, html.FILL, cli.PURPLE) }, + fc: function(event, can) { can.onaction._change(can, html.FILL, cli.CYAN) }, + fh: function(event, can) { can.onaction._change(can, html.FILL, cli.BLACK) }, + fw: function(event, can) { can.onaction._change(can, html.FILL, cli.WHITE) }, }, }, _engine: {}, }) Volcanos(chat.ONACTION, {help: "组件菜单", list: [ - ["stroke-width", 1, 2, 3, 4, 5], - ["stroke", cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE], - ["fill", cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE, "#0000"], - ["font-size", 12, 16, 18, 24, 32], + [html.STROKE_WIDTH, 1, 2, 3, 4, 5], + [html.STROKE, cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE], + [html.FILL, cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE, "#0000"], + [html.FONT_SIZE, 12, 16, 18, 24, 32], ["go", ice.RUN, ice.AUTO, "manual"], ["mode", "draw", "resize"], - ["shape", "text", "circle", "ellipse", "rect", "block", "line"], + [svg.SHAPE, svg.TEXT, svg.CIRCLE, svg.ELLIPSE, svg.RECT, svg.BLOCK, svg.LINE], ["grid", 1, 2, 3, 4, 5, 10, 20], ], _change: function(can, key, value) { can.Action(key, value), can.group.Value(key, value) }, @@ -274,10 +271,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ edit: function(event, can) { can.Action("go", can.Action("go") == ice.RUN? ice.AUTO: ice.RUN) }, save: function(event, can, button) { - var msg = can.request(event, {content: can.onexport.content(can, can.svg)}) - can.run(event, [ctx.ACTION, button, can.Option(nfs.PATH)], function(msg) { - can.user.toastSuccess(can) - }, true) + can.runAction(can.request(event, {content: can.onexport.content(can, can.svg)}), button, [can.Option(nfs.PATH)]) }, project: function(event, can) { can.onmotion.toggle(can, can.ui.project) }, @@ -285,9 +279,8 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ show: function(event, can) { can.onmotion.show(can, {interval: 100, length: 10}, null, can.group) }, hide: function(event, can) { can.onmotion.hide(can, {interval: 100, length: 10}, null, can.group) }, create: function(event, can) { - can.user.prompt("group", "some", function(name) { - var group = document.createElementNS('http://www.w3.org/2000/svg', svg.G) - can.group.append(group), can.onimport._block(can, group) + can.user.input(event, can, [svg.GROUP], function(list) { var name = list[0] + var group = document.createElementNS('http://www.w3.org/2000/svg', svg.G); can.group.append(group), can.onimport._block(can, group) group.Value(html.CLASS, name), can.core.List([html.STROKE_WIDTH, html.STROKE, html.FILL, html.FONT_SIZE], function(name) { group.Value(name, can.Action(name)) }), can.onimport._group(can, group).click() @@ -302,8 +295,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ _mode: { draw: function(event, can, point) { - var shape = can.Action("shape") - var figure = can.onfigure[shape] + var shape = can.Action(svg.SHAPE), figure = can.onfigure[shape] figure.grid && figure.grid(event, can, point) var data = figure.draw && figure.draw(event, can, point) @@ -320,7 +312,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ resize: function(event, can, point, target) { target = target||event.target if (event.type == html.CLICK) { if (point.length == 1) { - can.current = {target: target, begin: can.core.List([target], function(item) { if (item.tagName == svg.G) { return } + can.current = {target: target, begin: can.core.List([target], function(item) { if (can.page.tagis(svg.G, item)) { return } return { height: item.Val(html.HEIGHT), width: item.Val(html.WIDTH), x: item.Val(svg.X), y: item.Val(svg.Y), target: item, ship: can.core.List(item.Value(ice.SHIP), function(ship) { @@ -337,13 +329,10 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ can.onexport.resize(event, item.target, item, point[0], point[1], can.current.pos) can.page.Select(can, can.svg, ice.PT+item.target.Value(mdb.TEXT), function(text) { text.Value(can.onexport._text(can, item.target, figure, {})) - }) - can.onfigure._move(can, item.target, item.ship) + }), can.onfigure._move(can, item.target, item.ship) }) }, - run: function(event, can) { - can.onimport._profile(can, event.target) - }, + run: function(event, can) { can.onimport._profile(can, event.target) }, }, _auto: function(can, target) { if (can.point.length > 0) { return } @@ -352,7 +341,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ var pos = can.onexport.cursor(event, can, event.target) if (target == can.svg) { if (pos == 5) { - can.Action(ice.MODE, "draw"), can.Action("shape", html.BLOCK) + can.Action(ice.MODE, "draw"), can.Action(svg.SHAPE, html.BLOCK) can.page.style(can, target, {cursor: "crosshair"}) } else { can.Action(ice.MODE, "resize") @@ -361,7 +350,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ switch (pos) { case 5: case 9: can.Action(ice.MODE, "resize"); break - default: can.Action(ice.MODE, "draw"), can.Action("shape", "line") + default: can.Action(ice.MODE, "draw"), can.Action(svg.SHAPE, svg.LINE) } } }, @@ -384,11 +373,9 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [ } can.onaction._figure(event, can, can.point = can.point.concat(point)) }, - ondblclick: function(event, can) { - can.ondetail.label(event, can) - }, + ondblclick: function(event, can) { can.ondetail.label(event, can) }, }) -Volcanos(chat.ONDETAIL, {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY, html.LABEL, mdb.MODIFY, "toimage", mdb.DELETE], +Volcanos(chat.ONDETAIL, {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY, html.LABEL, mdb.MODIFY, "toimage", mdb.REMOVE], start: function(event, can) { var target = event.target var list = [target], dict = {} for (var i = 0; i < list.length; i++) { var ship = list[i].Value("ship") @@ -408,30 +395,24 @@ Volcanos(chat.ONDETAIL, {help: "组件详情", list: [cli.START, ice.RUN, ice.CO }) }) }, run: function(event, can) { var target = event.target - if (!target.Value("pid")) { can.onfigure._pid(can, target) } + if (!target.Value(svg.PID)) { can.onfigure._pid(can, target) } + if (can.onmotion.cache(can, function() { return target.Value(svg.PID) }, can.ui.display)) { return } - if (can.onmotion.cache(can, function() { return target.Value("pid") }, can.ui.display)) { return } - - can.onmotion.clear(can, can.ui.display), can.svg.Value("pid", target.Value("pid")) + can.onmotion.clear(can, can.ui.display), can.svg.Value(svg.PID, target.Value(svg.PID)) var index = target.Value(mdb.INDEX); index && can.onappend.plugin(can, {type: chat.STORY, index: index, args: target.Value(ctx.ARGS)}, function(sub) { - sub.Conf("height", can.Conf("height")-can.svg.Val("height")-52), sub.Conf("width", can.Conf("width")) - sub.run = function(event, cmds, cb) { can.run(event, can.misc.concat(can, [ice.RUN, index], cmds), cb, true) } + sub.run = function(event, cmds, cb) { can.runActionCommand(event, index, cmds, cb) } + sub.ConfHeight(can.ConfHeight()-can.svg.Val(html.HEIGHT)-4*html.ACTION_HEIGHT), sub.ConfWidth(can.ConfWidth()) can.onmotion.hidden(can, sub._legend), can.onmotion.hidden(can, can.ui.display, true) }, can.ui.display) }, + toimage: function(event, can) { can.onmotion.toimage(event, can, can.Option(nfs.PATH).split(ice.PS).pop().split(ice.PT)[0], can.svg) }, copy: function(event, can) { can.onfigure._copy(event, can, event.target) }, label: function(event, can) { var target = event.target - var def = target.Value(mdb.TEXT); def && can.page.Select(can, can.svg, ice.PT+def, function(item) { - def = item.Value(html.INNER) - }) - can.user.prompt(html.LABEL, def, function(text) { - if (target.tagName == html.TEXT) { return target.innerHTML = text } + var def = target.Value(mdb.TEXT); def && can.page.Select(can, can.svg, ice.PT+def, function(item) { def = item.Value(html.INNER) }) - if (def && can.page.Select(can, can.svg, ice.PT+def, function(item) { - item.Value(html.INNER, text) - }).length > 0) { - return - } + can.user.input(event, can, [{name: html.LABEL, value: def}], function(list) { var text = list[0] + if (target.tagName == html.TEXT) { return target.innerHTML = text } + if (def && can.page.Select(can, can.svg, ice.PT+def, function(item) { item.Value(html.INNER, text) }).length > 0) { return } var figure = can.onfigure._get(can, target) var data = can.onexport._text(can, target, figure, {inner: text}) @@ -440,8 +421,7 @@ Volcanos(chat.ONDETAIL, {help: "组件详情", list: [cli.START, ice.RUN, ice.CO }) }, modify: function(event, can) { can.onimport._profile(can, event.target) }, - toimage: function(event, can) { can.onmotion.toimage(event, can, can.Option(nfs.PATH).split("/").pop().split(".")[0], can.svg) }, - "delete": function(event, can) { var target = event.target + remove: function(event, can) { var target = event.target if (target == can.svg) { return } can.core.List(target.Value(ice.SHIP), function(value) { can.page.Select(can, can.svg, ice.PT+value.pid, function(item) { @@ -450,15 +430,14 @@ Volcanos(chat.ONDETAIL, {help: "组件详情", list: [cli.START, ice.RUN, ice.CO }) target.Value(mdb.TEXT) && can.page.Select(can, can.svg, ice.PT+target.Value(mdb.TEXT), function(item) { can.page.Remove(can, item) - }) - can.page.Remove(can, target) + }), can.page.Remove(can, target) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["group", "figure", "index", "pos"], +Volcanos(chat.ONEXPORT, {help: "导出数据", list: [svg.GROUP, "figure", "index", "pos"], _show: function(can, target) { var figure = can.onfigure._get(can, target) function show() { return can.onexport._size(can, target, figure)+ice.SP+can.onexport._position(can, target, figure) } - can.Status("figure", target.tagName+":"+target.Value("pid")+ice.SP+(figure? (figure.show||show)(can, target, figure): "")) - can.Status("group", target.Groups()||can.group.Groups()||html.SVG) + can.Status("figure", target.tagName+":"+target.Value(svg.PID)+ice.SP+(figure? (figure.show||show)(can, target, figure): "")) + can.Status(svg.GROUP, target.Groups()||can.group.Groups()||html.SVG) can.Status("index", target.Value("index")) }, _size: function(can, target, figure) { var size = figure.data.size||{} @@ -478,13 +457,13 @@ Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["group", "figure", "index" point.y = point.y - point.y % parseInt(can.Action("grid")) return can.Status("pos", point.x+ice.FS+point.y), point }, - content: function(can, svg) { return ['"]).join("") }, + cursor: function(event, can, item, show) { var p = item.getBoundingClientRect() var q = {x: event.clientX, y: event.clientY} diff --git a/plugin/local/wiki/feel.js b/plugin/local/wiki/feel.js index 995df02a..b9fa9e6e 100644 --- a/plugin/local/wiki/feel.js +++ b/plugin/local/wiki/feel.js @@ -1,53 +1,52 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can.path = can.request(), can.list = [], msg.Table(function(value) { - value.path.lastIndexOf(ice.PS)==value.path.length-1? can.path.Push(value): can.list.push(value) - }) + can.base.endWith(value.path, ice.PS)? can.path.Push(value): can.list.push(value) + }), can.base.isFunc(cb) && cb(msg) - can.base.isFunc(cb) && cb(msg) can.ui = can.onlayout.display(can, target) can.onappend.table(can, can.path, null, can.ui.content) - can.dir_root = msg.Option("dir_root") + can.onappend._status(can, can.onexport.list) - can.Action("height", msg.Option("height")||"100") - can.Action("limit", msg.Option("limit")||"6") - can.Action("rate", msg.Option("rate")||"1") + can.Action(html.HEIGHT, msg.Option(html.HEIGHT)||msg._cmds[1]||"100") + can.Action(html.SPEED, msg.Option(html.SPEED)||msg._cmds[2]||"1") + can.Action(mdb.LIMIT, msg.Option(mdb.LIMIT)||msg._cmds[3]||"6") can.onmotion.hidden(can, can._action) - can.begin = msg.Option("begin")||"0" + can.begin = parseInt(can.begin||msg.Option(cli.BEGIN)||"0") + can.dir_root = msg.Option(nfs.DIR_ROOT) can.onimport.page(can, can.list) }, - _file: function(can, path, index) { var p = location.href.indexOf("http") == 0? "": "http://localhost:9020" - return path.indexOf("http") == 0? path: p+can.base.Path("/share/local", can.dir_root||"", path) + _file: function(can, path, index) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020" + return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path("/share/local", can.dir_root||"", path) }, file: function(can, path, index) { path = can.onimport._file(can, path, index) - var cb = can.onfigure[can.base.Ext(path)]; can.Status("file", path) + var cb = can.onfigure[can.base.Ext(path)]||can.onfigure["image"]; can.Status(nfs.FILE, path) can.base.isFunc(cb) && can.page.Append(can, can.ui.display, [cb(can, path, index)]) }, page: function(can, list, begin, limit) { can.onmotion.clear(can, can.ui.display) - begin = parseInt(begin||can.begin), limit = parseInt(limit||can.Action("limit")) + begin = parseInt(begin||can.begin), limit = parseInt(limit||can.Action(mdb.LIMIT)) for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path, i) } can.Status({begin: begin, limit: limit, total: can.list.length}) }, -}, ["/plugin/local/wiki/feel.css"]) +}, [""]) Volcanos(chat.ONFIGURE, {help: "组件菜单", list: [], png: function(can, path, index) { return can.onfigure.image(can, path, index) }, jpg: function(can, path, index) { return can.onfigure.image(can, path, index) }, jpeg: function(can, path, index) { return can.onfigure.image(can, path, index) }, - image: function(can, path, index) { return {img: path, height: can.Action("height"), onclick: function(event) { - can.ondetail._init(can, index) - }, _init: function(target) { can.Status("file", path) }, - onmouseover: function(event) { can.Status("file", path) }, + image: function(can, path, index) { return {img: path, height: can.Action(html.HEIGHT), + onmouseover: function(event) { can.Status(nfs.FILE, path) }, + onclick: function(event) { can.ondetail._init(can, index) }, } }, - video: function(can, path) { var auto = can.user.isMobile&&can.Action("limit")!="1"? false: true, loop = true, total = 0; function cb(event) { } - return {type: "video", style: {height: parseInt(can.Action("height"))}, className: "preview", - data: {src: path, controls: "controls", autoplay: auto, loop: loop, playbackRate: parseFloat(can.Action("rate"))}, + video: function(can, path) { var auto = can.user.isMobile&&can.Action(mdb.LIMIT)!="1"? false: true, loop = true, total = 0; function cb(event) { } + return {type: html.VIDEO, style: {height: parseInt(can.Action(html.HEIGHT))}, className: "preview", + data: {src: path, controls: "controls", autoplay: auto, loop: loop, playbackRate: parseFloat(can.Action(html.SPEED))}, oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb, - onmouseover: function(event) { can.Status("file", path) }, + onmouseover: function(event) { can.Status(nfs.FILE, path) }, onloadedmetadata: function(event) { total = event.timeStamp event.target.currentTime = can._msg.currentTime || 0 }, onloadeddata: cb, ontimeupdate: function(event) { - can.Status("file") == path && can.Status("position", can.onexport.position(can, (can._msg.currentTime=event.target.currentTime)-1, event.target.duration)) + can.Status(nfs.FILE) == path && can.Status("position", can.onexport.position(can, (can._msg.currentTime=event.target.currentTime)-1, event.target.duration)) }, } }, @@ -56,26 +55,27 @@ Volcanos(chat.ONFIGURE, {help: "组件菜单", list: [], mov: function(can, path) { return can.onfigure.video(can, path) }, }) Volcanos(chat.ONACTION, {help: "组件菜单", list: [ - ["height", 100, 200, 400, 600, 800], - ["limit", 1, 3, 6, 9, 12, 15, 20, 30], - ["rate", 0.1, 0.2, 0.5, 1, 2, 3, 5, 10], + [html.HEIGHT, 100, 200, 400, 600, 800], + [html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10], + [mdb.LIMIT, 1, 3, 6, 9, 12, 15, 20, 30, 50], ], - "上一页": function(event, can, key, value) { - can.begin > 0 && (can.begin -= parseInt(can.Action("limit")), can.onimport.page(can, can.list)) + prev: function(event, can) { + if (can.begin > 0) { + can.begin -= parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) + } else { + can.user.toast(can, "已经是第一页了") + } }, - "下一页": function(event, can, key, value) { - can.begin + parseInt(can.Action("limit")) < can.list.length && (can.begin += parseInt(can.Action("limit")), can.onimport.page(can, can.list)) - }, - - "height": function(event, can, key, value) { - can.Action("height", value), can.onimport.page(can, can.list) - }, - "limit": function(event, can, key, value) { - can.Action("limit", value), can.onimport.page(can, can.list) - }, - "rate": function(event, can, key, value) { - can.Action("rate", value), can.onimport.page(can, can.list) + next: function(event, can) { + if (can.begin + parseInt(can.Action(mdb.LIMIT)) < can.list.length) { + can.begin += parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) + } else { + can.user.toast(can, "已经是最后一页了") + } }, + height: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) }, + speed: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) }, + limit: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) }, chooseImage: function(event, can) { var msg = can.request(event) can.user.agent.chooseImage(function(list) { can.core.List(list, function(item) { @@ -89,35 +89,29 @@ Volcanos(chat.ONDETAIL, {help: "组件菜单", list: ["关闭", "下载", "删 sub.getActionSize(function(msg, left, top, width, height) { sub.page.style(sub, sub._target, {left: left, top: top}) - sub.page.style(sub, sub._output, html.MAX_WIDTH, width, html.MAX_HEIGHT, height) + sub.page.style(sub, sub._output, html.WIDTH, width, html.HEIGHT, height-2*html.ACTION_HEIGHT) sub.onappend._action(can, can.ondetail.list, sub._action, can.ondetail) + sub.onappend._status(sub, ["begin", "file"]) - can.order = index, can.show = function(order) { - path = can.onimport._file(can, can.list[order].path) - sub.page.Appends(sub, sub._output, [{img: path, style: {"max-width": width, "max-height": height-2*html.ACTION_HEIGHT}}]) - sub.Status("begin", order+1+ice.PS+can.list.length), sub.Status("file", path) + can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path) + var cb = can.onfigure[can.base.Ext(path)]||can.onfigure["image"] + + sub.page.Appends(sub, sub._output, [can.base.Copy(cb(can, path, index), {height: "", style: kit.Dict(html.MAX_WIDTH, width, html.MAX_HEIGHT, height-2*html.ACTION_HEIGHT)})]) + sub.Status(cli.BEGIN, order+1+ice.PS+can.list.length), sub.Status(nfs.FILE, path) }, can.show(can.order) }) }, can._root._target) }, "关闭": function(event, can) { can.page.Remove(can, can.sub._target) }, "下载": function(event, can) { can.user.download(can, path = can.onimport._file(can, can.list[can.order].path)) }, - "删除": function(event, can) { - can.run(event, [ctx.ACTION, mdb.REMOVE, can.list[can.order].path], function(msg) { can.user.toast(can, "删除成功") }, true) - }, + "删除": function(event, can) { can.runAction(event, nfs.TRASH, [can.list[can.order].path], function(msg) { can.user.toastSuccess(can, "删除成功") }, true) }, "上一个": function(event, can) { can.order > 0? can.show(--can.order): can.user.toast(can, "已经是第一张啦!") }, "下一个": function(event, can) { can.order < can.list.length-1? can.show(++can.order): can.user.toast(can, "已经是最后一张啦!") }, - "设置头像": function(event, can) { var msg = can.request(event, {url: can.onimport._file(can, can.list[can.order].path)}) - can.search(event, ["Header.onimport.avatar"], null, true) - }, - "设置背景": function(event, can) { var msg = can.request(event, {url: can.onimport._file(can, can.list[can.order].path)}) - can.search(event, ["Header.onimport.background"], null, true) - }, - "复制链接": function(event, can) { - can.user.copy(event, can, can.misc.MergeURL(can, {_path: can.onimport._file(can, can.list[can.order].path)}, true)) - }, + "设置头像": function(event, can) { can.setHeader("avatar", can.onimport._file(can, can.list[can.order].path)) }, + "设置背景": function(event, can) { can.setHeader("background", can.onimport._file(can, can.list[can.order].path)) }, + "复制链接": function(event, can) { can.user.copy(event, can, can.misc.MergeURL(can, {_path: can.onimport._file(can, can.list[can.order].path)}, true)) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["begin", "limit", "total", "position", "file"], +Volcanos(chat.ONEXPORT, {help: "导出数据", list: [cli.BEGIN, mdb.LIMIT, mdb.TOTAL, nfs.FILE, "position"], position: function(can, index, total) { total = total || can.max return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+ice.PS+parseInt(total) }, diff --git a/plugin/local/wiki/word.js b/plugin/local/wiki/word.js index b0e1d158..bbbfe2b6 100644 --- a/plugin/local/wiki/word.js +++ b/plugin/local/wiki/word.js @@ -58,7 +58,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.page.Select(can, target, html.A, function(item) { item.onclick = function(event) { can.request(event, kit.Dict(ice.MSG_HANDLE, ice.TRUE)) - can.run(event, [ctx.ACTION, mdb.CREATE, mdb.TYPE, "refer", mdb.NAME, item.dataset.name, mdb.TEXT, item.href], null, true) + can.runAction(event, mdb.CREATE, [mdb.TYPE, "refer", mdb.NAME, item.dataset.name, mdb.TEXT, item.href]) } }) }, @@ -88,7 +88,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.core.List(item.list, function(item) { can.onappend.plugin(can, item.meta, function(sub) { sub.run = function(event, cmds, cb, silent) { - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, item.meta.index], cmds), cb, true) + can.runActionCommand(event, item.meta.index, cmds, cb) } sub.ConfWidth(item.meta.width = can.ConfWidth()-165) sub.ConfHeight(item.meta.height = can.ConfHeight()-300) @@ -108,7 +108,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.page.Select(can, target, html.A, function(item) { can.onmotion.link(can, item) }) can.page.Select(can, target, html.SPAN, function(item) { can.onmotion.copy(can, item, "", function(event) { - can.run(event, [ctx.ACTION, mdb.CREATE, mdb.TYPE, "spark", mdb.NAME, "shell", mdb.TEXT, item.innerText], null, true) + can.runAction(event, mdb.CREATE, [mdb.TYPE, "spark", mdb.NAME, "shell", mdb.TEXT, item.innerText]) }) }) }, @@ -126,7 +126,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar field: function(can, data, target, width) { var item = can.base.Obj(data.meta) can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) { sub.run = function(event, cmds, cb, silent) { - can.run(event, can.misc.concat(can, [ctx.ACTION, chat.STORY, data.type, data.name, data.text], cmds), cb, true) + can.runAction(event, chat.STORY, [data.type, data.name, data.text].concat(cmds), cb) } sub.ConfHeight(can.ConfHeight()) sub.ConfWidth(item.width = (width||can.ConfWidth())-(can.user.isWindows? 40: 20)) diff --git a/plugin/state.js b/plugin/state.js index 1788dbd8..1c78c75d 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -134,7 +134,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [ "扩展参数": 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)) }, "下载数据": function(event, can) { var meta = can.Conf() - can.user.input(event, can, [{name: "filename", value: meta.name}], function(ev, button, data, list) { + can.user.input(event, can, [{name: "filename", value: meta.name}], function(list) { can.user.downloads(can, can.onexport.table(can), list[0], nfs.CSV)||can.user.downloads(can, can.onexport.board(can), meta.name, nfs.TXT) }) }, @@ -187,15 +187,15 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [ 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, button) }, true) + can.user.input(event, can, [mdb.TYPE, mdb.NAME, mdb.TEXT, "latitude", "longitude"], function(args) { + can.runAction(event, button, args) }) }) }, 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) } + function add(text) { can.runAction(event, button, [can.base.ParseJSON(text)]) } 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]) }) + can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(list) { add(list[0]) }) }, }) Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], diff --git a/plugin/story/parse.js b/plugin/story/parse.js index 216433db..0e2504a5 100644 --- a/plugin/story/parse.js +++ b/plugin/story/parse.js @@ -137,11 +137,11 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [], sub.ConfHeight(data.main.offsetHeight-160) sub.run = function(event, cmds, cb, silent) { can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(data.main.offsetWidth-40)) - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, sub._index||meta.index], cmds), function(msg) { + can.runActionCommand(event, sub._index||meta.index, cmds, function(msg) { cb(msg), can.core.Timer(10, function() { can.page.style(can, sub._table, html.MAX_HEIGHT, data.main.offsetHeight-150) }) - }, true) + }) } }, data.main) default: diff --git a/plugin/table.js b/plugin/table.js index ef2ba88d..7adb173a 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -17,7 +17,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms {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]) + can.runAction(can.request(event, value), event.target.name, []) }}, ]} })) diff --git a/proto.js b/proto.js index 6f4ba4a5..62e2dbea 100644 --- a/proto.js +++ b/proto.js @@ -197,10 +197,11 @@ var mall = { } var svg = { - G: "g", X: "x", Y: "y", R: "r", RX: "rx", RY: "ry", - LINE: "line", RECT: "rect", TEXT: "text", - M: "M", Q: "Q", T: "T", - PATH2V: "path2v", PATH2H: "path2h", + PID: "pid", + GROUP: "group", + SHAPE: "shape", TEXT: "text", RECT: "rect", LINE: "line", CIRCLE: "circle", ELLIPSE: "ellipse", + G: "g", X: "x", Y: "y", R: "r", RX: "rx", RY: "ry", CX: "cx", CY: "cy", X1: "x1", Y1: "y1", X2: "x2", Y2: "y2", + M: "M", Q: "Q", T: "T", PATH2V: "path2v", PATH2H: "path2h", } var html = { // FIELDSET @@ -229,8 +230,9 @@ var html = { BACKGROUND: "background", SELECT: "select", HIDDEN: "hidden", DISPLAY: "display", BLOCK: "block", NONE: "none", FIXED: "fixed", OPACITY: "opacity", - STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", MONOSPACE: "monospace", + STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", FONT_FAMILY: "font-family", MONOSPACE: "monospace", SCROLL: "scroll", HEIGHT: "height", WIDTH: "width", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom", + SPEED: "speed", 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", @@ -240,7 +242,7 @@ var html = { MENU: "menu", NODE: "node", HIDE: "hide", SHOW: "show", AUTO: "auto", HEAD: "head", LEFT: "left", MAIN: "main", FOOT: "foot", - LAYOUT: "layout", PLUGIN: "plugin", + PLUGIN: "plugin", LAYOUT: "layout", CONTENT: "content", DIV_PAGE: "div.page", DIV_TABS: "div.tabs", @@ -337,7 +339,8 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", pack: }); return msg }, - actions: function(event, button) { can.run(event, [ctx.ACTION, button], null, true) }, + actions: function(event, button) { can.runAction(event, button, []) }, + runActionCommand: function(event, index, args, cb) { can.runAction(event, ice.RUN, [index].concat(args), cb) }, runAction: function(event, action, args, cb) { 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) diff --git a/publish/chrome/contexts.js b/publish/chrome/contexts.js index 9cd192cd..d4164f39 100644 --- a/publish/chrome/contexts.js +++ b/publish/chrome/contexts.js @@ -47,7 +47,7 @@ setTimeout(function() { Volcanos({Option: function() { return [] }, }, order: function(can, msg, arg) { - var ui = can.user.input(event, can, [ctx.INDEX, ctx.ARGS, "selection", html.LEFT, html.TOP], function(event, button, data, list, args) { + var ui = can.user.input(event, can, [ctx.INDEX, ctx.ARGS, "selection", html.LEFT, html.TOP], function(args) { can.run(event, [chat.FIELD, mdb.INSERT, mdb.ZONE, location.host].concat(args), function(res) { can.user.toastSuccess(can) }) @@ -73,7 +73,7 @@ setTimeout(function() { Volcanos({Option: function() { return [] }, }, msg.Option("selection")||sub._legend.onclick() sub.run = function(event, cmds, cb) { if (msg.RunAction(event, can, cmds)) { return } - can.run(event, can.misc.concat(can, [ctx.ACTION, ice.RUN, meta.index], cmds), cb) + can.runActionCommand(event, meta.index, cmds, cb) } msg.Option("selection") && (can.onengine.listen(can, "onselection", function() { @@ -107,7 +107,7 @@ setTimeout(function() { Volcanos({Option: function() { return [] }, _motion: function(can) { can.onmotion.float.auto(can, can._root._target) document.body.ondblclick = function(event) { can.onengine.signal(can, "onselection") } - can.run({}, [ctx.ACTION, ctx.COMMAND], function(msg) { + can.runAction({}, ctx.COMMAND, [], function(msg) { msg.result && msg.result[0] && can.field(can, msg, msg.result) }) },