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 ['