mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt draw.js
This commit is contained in:
parent
7eb4b28e3d
commit
63308b4ea5
24
frame.js
24
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 }
|
_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 (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)}) }
|
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() {
|
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.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 }
|
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)) }
|
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)||{};
|
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)
|
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 }
|
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([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 }
|
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)
|
!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") {
|
if (key == "extra.cmd") {
|
||||||
can.onappend.plugin(can, {ctx: line["extra.ctx"], cmd: line["extra.cmd"], arg: line["extra.arg"]}, function(sub) {
|
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())
|
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)
|
}, 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
|
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) {
|
can.page.Select(can, code, html.INPUT_BUTTON, function(target) {
|
||||||
target.onclick = function(event) { var msg = can.sup.request(event, can.Option())
|
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
|
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
|
meta.help = meta.help||value.help
|
||||||
|
|
||||||
can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) { sub._index = value.index||meta.index
|
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)
|
can.base.isFunc(cb) && cb(sub, meta, skip)
|
||||||
}, target||can._output)
|
}, target||can._output)
|
||||||
},
|
},
|
||||||
@ -598,9 +598,9 @@ Volcanos(chat.ONMOTION, {help: "动态特效", list: [], _init: function(can, ta
|
|||||||
focus: function(can, target) { if (!target) { return }
|
focus: function(can, target) { if (!target) { return }
|
||||||
target.setSelectionRange && target.setSelectionRange(0, -1), target.focus()
|
target.setSelectionRange && target.setSelectionRange(0, -1), target.focus()
|
||||||
},
|
},
|
||||||
share: function(event, can, input, args) {
|
share: function(event, can, input, args) { var _args = args
|
||||||
return can.user.input(event, can, input, function(ev, button, data, list, _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]])
|
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")
|
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,
|
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) {
|
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.user.input(event, can, [{name: mdb.NAME, value: name}], function(list) { toast.close()
|
||||||
can.page.Create(can, html.A, {href: url, download: data.name+".png"}).click()
|
can.page.Create(can, html.A, {href: url, download: list[0]+".png"}).click()
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
@ -8,7 +8,13 @@ Volcanos("base", {help: "数据类型", Int: function(val, def) { return parseIn
|
|||||||
},
|
},
|
||||||
Copy: function(to, from) {
|
Copy: function(to, from) {
|
||||||
if (arguments.length == 2) {
|
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
|
return to
|
||||||
}
|
}
|
||||||
for (var i = 2; i < arguments.length; i++) {
|
for (var i = 2; i < arguments.length; i++) {
|
||||||
|
@ -298,10 +298,10 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
}
|
}
|
||||||
return delete(cache[name]), list.data
|
return delete(cache[name]), list.data
|
||||||
},
|
},
|
||||||
Format: function(type) {
|
Format: function(type) { var args = arguments
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case html.A: return "<a href='"+arguments[1]+"' target='_blank'>"+(arguments[2]||arguments[1])+"</a>"
|
case html.A: return "<a href='"+args[1]+"' target='_blank'>"+(args[2]||args[1])+"</a>"
|
||||||
case html.IMG: return arguments[2]? "<img src='"+arguments[1]+"' height="+arguments[2]+">": "<img src='"+arguments[1]+"'>"
|
case html.IMG: return args[2]? "<img src='"+args[1]+"' height="+args[2]+">": "<img src='"+args[1]+"'>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
replace: function(can, text, key, value) {
|
replace: function(can, text, key, value) {
|
||||||
@ -377,7 +377,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
|
|||||||
style: function(can, target, style) { var value = {}
|
style: function(can, target, style) { var value = {}
|
||||||
for (var i = 2; i < arguments.length; i += 2) {
|
for (var i = 2; i < arguments.length; i += 2) {
|
||||||
if (typeof arguments[i] == lang.OBJECT) {
|
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) {
|
} else if (typeof arguments[i] == lang.UNDEFINED) {
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
|
13
lib/user.js
13
lib/user.js
@ -1,6 +1,6 @@
|
|||||||
Volcanos("user", {help: "用户操作", info: {}, agent: {
|
Volcanos("user", {help: "用户操作", info: {}, agent: {
|
||||||
scanQRCode: function(cb, can) {
|
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]))
|
cb(list[0], can.base.ParseJSON(list[0]))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -81,7 +81,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
|||||||
"list": "查看", "back": "返回", "run": "执行", "done": "完成", "share": "共享",
|
"list": "查看", "back": "返回", "run": "执行", "done": "完成", "share": "共享",
|
||||||
"edit": "编辑", "save": "保存", "copy": "复制", "show": "显示", "hide": "隐藏",
|
"edit": "编辑", "save": "保存", "copy": "复制", "show": "显示", "hide": "隐藏",
|
||||||
"project": "项目", "profile": "详情", "actions": "参数",
|
"project": "项目", "profile": "详情", "actions": "参数",
|
||||||
"download": "下载",
|
"download": "下载", "toimage": "截图",
|
||||||
"plugin": "插件",
|
"plugin": "插件",
|
||||||
"prev": "上一页", "next": "下一页",
|
"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}})
|
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?")) {
|
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)
|
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
|
return item.name && item.value && args.push(item.name, item.value), data[item.name] = item.value
|
||||||
})
|
})
|
||||||
var msg = can.request(event, {_handle: ice.TRUE})
|
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)
|
can.onkeymap.prevent(event)
|
||||||
}, _target: ui._target,
|
}, _target: ui._target,
|
||||||
})
|
})
|
||||||
@ -345,9 +346,9 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
|||||||
var msg = can.request(event, can.Option(), {_handle: "true"})
|
var msg = can.request(event, can.Option(), {_handle: "true"})
|
||||||
msg._upload = upload[0].files[0], msg._progress = action.show
|
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()
|
can.user.toastSuccess(can), can.Update(), action.close()
|
||||||
}, true)
|
})
|
||||||
},
|
},
|
||||||
show: function (event, value, total, loaded) { now = new Date()
|
show: function (event, value, total, loaded) { now = new Date()
|
||||||
value == 0 && action.begin(event)
|
value == 0 && action.begin(event)
|
||||||
|
@ -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>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.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.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; }
|
table.layout div.toggle.display>div { color:white; text-align:center; height:15px; width:100px; }
|
||||||
fieldset.Action.cmd>div.toggle.project { display:none; }
|
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 input.args[name=offend] { width:48px; }
|
||||||
form.option>div.item.textarea { margin-top:4px; }
|
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.select { background:none; }
|
||||||
div.action>div.item.space { width:10px; }
|
div.action>div.item.space { width:10px; }
|
||||||
div.output { position:relative; }
|
div.output { position:relative; }
|
||||||
@ -206,7 +206,7 @@ body.mobile.landscape fieldset.draw.trend div.action { display:block; }
|
|||||||
/* font */
|
/* font */
|
||||||
* { tab-size:4; }
|
* { tab-size:4; }
|
||||||
textarea { tab-size:2; }
|
textarea { tab-size:2; }
|
||||||
legend { font-size:1.2rem; }
|
legend { font-size:1.2rem; height:31px; }
|
||||||
select, input { font-size:1.1rem; }
|
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; }
|
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; }
|
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.simple div.output.card div.item { width:-webkit-fill-available; }
|
||||||
body.mobile.landscape.simple div.output.card div.item { width:auto; float:left; }
|
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 { 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 { font-size:1rem; }
|
||||||
body.white.simple>div.carte div.item:hover { background-color:#0152d9; color:white; }
|
body.white.simple>div.carte div.item:hover { background-color:#0152d9; color:white; }
|
||||||
|
@ -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 { 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.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 { 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 {
|
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%;
|
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;
|
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 { 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; }
|
body.mobile fieldset.panel.cmd>div.output>fieldset.plugin>legend { height:42px; }
|
||||||
|
|
||||||
div.output.form div.item {
|
div.output.form div.item {
|
||||||
|
@ -235,7 +235,7 @@ Volcanos(chat.ONLAYOUT, {help: "导出数据", list: [],
|
|||||||
},
|
},
|
||||||
grid: function(can, silent) {
|
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; } "
|
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.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"))
|
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"))
|
||||||
})
|
})
|
||||||
|
@ -27,7 +27,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms
|
|||||||
case cli.CLOSE: can.cli && can.cli.close(); break
|
case cli.CLOSE: can.cli && can.cli.close(); break
|
||||||
case cli.CLEAR: can.cli && can.cli.close(); break
|
case cli.CLEAR: can.cli && can.cli.close(); break
|
||||||
default:
|
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)
|
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.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) {
|
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._target, {top: top+100, left: left})
|
||||||
can.page.style(can, sub._legend, {display: html.BLOCK})
|
can.page.style(can, sub._legend, {display: html.BLOCK})
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
|
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._title(can, msg, target)
|
||||||
can.onimport._state(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
can.onimport._avatar(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._search(can, msg, target)
|
||||||
can.onimport._menus(can, msg, target)
|
can.onimport._menus(can, msg, target)
|
||||||
can.ondaemon._init(can)
|
can.ondaemon._init(can)
|
||||||
|
can.base.isFunc(cb) && cb(msg)
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) { if (can.user.isMobile) { return }
|
_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) {
|
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) }}])
|
}, _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)})
|
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 }
|
_background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||||
msg.Option(aaa.BACKGROUND) && can.onlayout.background(can, "/share/local/background")
|
can.onlayout.background(can, can.onexport.background(can))
|
||||||
},
|
},
|
||||||
_search: function(can, msg, target) {
|
_search: function(can, msg, target) {
|
||||||
var ui = can.onappend.input(can, {type: html.TEXT, name: mdb.SEARCH, onkeydown: function(event) {
|
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)
|
time: function(can, target) { can.onimport.topic(can)
|
||||||
target.innerHTML = can.user.time(can, null, "%w %H:%M:%S")
|
target.innerHTML = can.user.time(can, null, "%w %H:%M:%S")
|
||||||
},
|
},
|
||||||
avatar: function(event, can, url) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
avatar: function(event, can, avatar) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||||
can.runAction(event, aaa.AVATAR, [url], function(msg) { can.onimport._avatar(can, msg) })
|
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)
|
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))
|
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 }
|
background: function(event, can, background) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||||
can.runAction(event, aaa.BACKGROUND, [url], function(msg) { can.onimport._background(can, msg) })
|
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])
|
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) {
|
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 // 登录认证
|
return // 登录认证
|
||||||
}
|
}
|
||||||
can.base.Copy(can.onaction._trans, can.base.Obj(msg.Option(chat.TRANS), {}))
|
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) })
|
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)
|
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) },
|
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, "") },
|
print: function(event, can, button) { can.onimport.topic(can, [chat.WHITE, button]), can.setRiver(html.HEIGHT, ""), can.setAction(html.HEIGHT, "") },
|
||||||
webpack: function(event, can) {
|
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.Item(Volcanos.meta.pack, function(key, msg) {
|
||||||
can.core.List(["_event", "_can", "_xhr", ice.MSG_SESSID, ""], function(key) { delete(msg[key]) })
|
can.core.List(["_event", "_can", "_xhr", ice.MSG_SESSID, ""], function(key) { delete(msg[key]) })
|
||||||
})
|
})
|
||||||
var msg = can.request(event, {
|
var msg = can.request(event, {
|
||||||
topic: can._topic, layout: can.getAction(chat.LAYOUT),
|
topic: can._topic, layout: can.getAction(chat.LAYOUT),
|
||||||
river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM),
|
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",
|
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)
|
can.onmotion.toimage(event, can, can.user.title(), can._root._target)
|
||||||
},
|
},
|
||||||
config: function(event, can) {
|
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()) })
|
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])
|
can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, mdb.TYPE, aaa.LOGIN])
|
||||||
},
|
},
|
||||||
setnick: function(event, can) {
|
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.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.Select(can, can._output, can.core.Keys(html.DIV, aaa.USERNICK), function(item) {
|
||||||
can.page.Modify(can, item, can.Conf(aaa.USERNICK, list[0]))
|
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, [
|
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},
|
||||||
{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 }
|
if (list[0] != list[1]) { return can.user.toast(can, "密码不一致"), ui.focus(), true }
|
||||||
can.runAction(event, aaa.PASSWORD, [list[0]])
|
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") },
|
chinese: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "zh") },
|
||||||
english: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "en") },
|
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) },
|
logout: function(event, can) { can.user.logout(can) },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [],
|
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [],
|
||||||
height: function(can) { return can._target.offsetHeight },
|
height: function(can) { return can._target.offsetHeight },
|
||||||
topic: function(can) { return can._topic },
|
topic: function(can) { return can._topic },
|
||||||
avatar: function(can) {
|
avatar: function(can) {
|
||||||
if (can.user.info.avatar.indexOf("http") == 0) {
|
if (can.user.info.avatar == "void") {
|
||||||
return can.user.info.avatar
|
return ""
|
||||||
} else {
|
|
||||||
return "/share/local/avatar"
|
|
||||||
}
|
}
|
||||||
|
return can.user.info.avatar
|
||||||
|
},
|
||||||
|
background: function(can) {
|
||||||
|
if (can.user.info.background == "void") {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return can.user.info.background
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -121,7 +121,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], _init: function(can, cb
|
|||||||
can.user.input(event, can, [
|
can.user.input(event, can, [
|
||||||
{name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
|
{name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
|
||||||
{name: mdb.NAME, value: "hi", _trans: "群名"}, {name: mdb.TEXT, value: "hello", _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()}) })
|
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) })
|
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})
|
"创建空间": 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) {
|
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))})
|
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)
|
can.user.toast(can, link), can.user.open(link)
|
||||||
@ -188,8 +188,8 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互",
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
"重命名群组": function(event, can, button, river) {
|
"重命名群组": function(event, can, button, river) {
|
||||||
can.user.input(event, can, [mdb.NAME], function(event, button, meta, list) {
|
can.user.input(event, can, [mdb.NAME], function(data) {
|
||||||
can.runAction(can.request(event, {hash: river}), mdb.MODIFY, [mdb.NAME, meta.name], function(msg) { can.misc.Search(can, {river: river}) })
|
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) {
|
"删除群组": function(event, can, button, river) {
|
||||||
@ -207,7 +207,7 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互",
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
"重命名应用": function(event, can, button, river, storm) {
|
"重命名应用": 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.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})
|
can.misc.Search(can, {river: river, storm: storm})
|
||||||
})
|
})
|
||||||
@ -225,7 +225,7 @@ Volcanos(chat.ONDETAIL, {help: "菜单交互",
|
|||||||
can.user.input(event, can, [
|
can.user.input(event, can, [
|
||||||
{name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
|
{name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
|
||||||
{name: mdb.NAME, value: "hi", _trans: "名称"}, {name: mdb.TEXT, value: "hello", _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.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
|
||||||
can.misc.Search(can, {river: river, storm: msg.Result()})
|
can.misc.Search(can, {river: river, storm: msg.Result()})
|
||||||
})
|
})
|
||||||
|
@ -17,7 +17,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms
|
|||||||
}), can.onmotion.story.auto(can)
|
}), can.onmotion.story.auto(can)
|
||||||
|
|
||||||
can.onappend._status(can, can.base.Obj(msg.Option(ice.MSG_STATUS), []).concat({name: "selected", value: "0"}))
|
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]
|
_word: function(can, msg, cmds, fields) { can.type = cmds[0]
|
||||||
var cb = can.onaction[cmds[1]]; if (cb) { cb({}, can); return }
|
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) {
|
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()
|
}, sub.Focus()
|
||||||
}, can.ui.profile)
|
}, can.ui.profile)
|
||||||
},
|
},
|
||||||
|
@ -60,7 +60,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms
|
|||||||
can.page.ClassList.add(can, field, meta.style)
|
can.page.ClassList.add(can, field, meta.style)
|
||||||
can.page.style(can, field, size)
|
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({
|
can.onappend._init(can, can.base.Copy({
|
||||||
feature: can.base.Obj(msg.Append("meta")),
|
feature: can.base.Obj(msg.Append("meta")),
|
||||||
inputs: can.base.Obj(msg.Append("list")),
|
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) {
|
}, size), ["/plugin/state.js"], function(sub) {
|
||||||
can.page.style(can, sub._output, size)
|
can.page.style(can, sub._output, size)
|
||||||
sub.run = function(event, cmds, cb) {
|
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)
|
}, target, field)
|
||||||
}, true)
|
})
|
||||||
return field
|
return field
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/chat/div.css"])
|
}, ["/plugin/local/chat/div.css"])
|
||||||
Volcanos(chat.ONACTION, {help: "操作数据", list: [],
|
Volcanos(chat.ONACTION, {help: "操作数据", list: [],
|
||||||
"添加": function(event, can) {
|
"添加": 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: []})
|
can.current._add({meta: data, list: []})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"保存": function(event, can) { var msg = can.request(event, can.Option())
|
"保存": function(event, can) { var msg = can.request(event, can.Option())
|
||||||
can.run(event, [mdb.MODIFY, mdb.TEXT, JSON.stringify(can._meta)], function(msg) {
|
can.runAction(event, mdb.MODIFY, [mdb.TEXT, JSON.stringify(can._meta)])
|
||||||
can.user.toastSuccess(can)
|
|
||||||
}, true)
|
|
||||||
},
|
},
|
||||||
"预览": function(event, can) {
|
"预览": function(event, can) {
|
||||||
can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, {_path: "/chat/div/"+can.Option("hash")})])
|
can.onmotion.share(event, can, [], [mdb.LINK, can.misc.MergeURL(can, {_path: "/chat/div/"+can.Option("hash")})])
|
||||||
|
@ -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) }
|
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)})
|
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)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -86,12 +86,12 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mdb.PLUGIN, function(event) {
|
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)
|
can.onimport.plugin(can, data, ui.output)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
html.WIDTH, function(event) {
|
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.profile_size[can.onexport.keys(can)] = can.ConfWidth()*parseInt(data.width)/100
|
||||||
can.onaction["展示"](event, can)
|
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.CLEAR, function(event) { can.onmotion.clear(can, ui.output) },
|
||||||
cli.EXEC, function(event) { can.onaction["执行"](event, can) },
|
cli.EXEC, function(event) { can.onaction["执行"](event, can) },
|
||||||
mdb.PLUGIN, function(event) {
|
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)
|
can.onimport.plugin(can, data, ui.output)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
html.HEIGHT, function(event) {
|
html.HEIGHT, function(event) {
|
||||||
can.user.input(event, can, [{name: html.HEIGHT, value: 50}], function(event, button, data) {
|
can.user.input(event, can, [{name: html.HEIGHT, value: 50}], function(list) {
|
||||||
can.profile_size[can.onexport.keys(can)] = can.ConfHeight()*parseInt(data.height)/100
|
can.profile_size[can.onexport.keys(can)] = can.ConfHeight()*parseInt(list[0])/100
|
||||||
can.onaction["执行"](event, can)
|
can.onaction["执行"](event, can)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
}, true)
|
}, true)
|
||||||
}, function() { can.base.isFunc(cb) && cb() })
|
}, 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.tree(can, msg.Table(), ctx.INDEX, ice.PT, function(event, item) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX)
|
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX)
|
||||||
}, project.module)
|
}, project.module)
|
||||||
@ -264,7 +264,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
plugin: function(can, meta, target, cb) {
|
plugin: function(can, meta, target, cb) {
|
||||||
can.onappend.plugin(can, meta, function(sub) {
|
can.onappend.plugin(can, meta, function(sub) {
|
||||||
sub.run = function(event, cmds, cb) { can.request(event, can.Option())
|
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)
|
}, can.base.isFunc(cb) && cb(sub)
|
||||||
}, target)
|
}, target)
|
||||||
},
|
},
|
||||||
@ -423,9 +423,9 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
can.Conf("plug") && (can.onsyntax[can.parse] = can.Conf("plug"))
|
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()))
|
init(p = can.onsyntax[can.parse] = can.base.Obj(msg.Result()))
|
||||||
}, true): init(p)
|
}): init(p)
|
||||||
},
|
},
|
||||||
_parse: function(can, line) { if (line.indexOf("<html") == 0) { return line }
|
_parse: function(can, line) { if (line.indexOf("<html") == 0) { return line }
|
||||||
line = can.page.replace(can, line||"")
|
line = can.page.replace(can, line||"")
|
||||||
@ -498,29 +498,29 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
},
|
},
|
||||||
"刷新": function(event, can) { can.onimport.tabview(can, "src/", "main.go", "", function() {}, skip) },
|
"刷新": function(event, can) { can.onimport.tabview(can, "src/", "main.go", "", function() {}, skip) },
|
||||||
"搜索": function(event, can) {
|
"搜索": function(event, can) {
|
||||||
can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, nfs.GREP, cli.MAKE]], function(event, button, data) {
|
can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, nfs.GREP, cli.MAKE]], function(data) {
|
||||||
can.ui.search.Update({}, [ctx.ACTION, data.action, data.name])
|
can.ui.search.Update({}, [ctx.ACTION, data.action, data.name])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"打开": function(event, can) {
|
"打开": function(event, can) {
|
||||||
can.user.input(event, can, [nfs.FILE], function(event, button, data) {
|
can.user.input(event, can, [nfs.FILE], function(list) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), data.file)
|
can.onimport.tabview(can, can.Option(nfs.PATH), list[0])
|
||||||
can.onimport.project(can, can.Option(nfs.PATH))
|
can.onimport.project(can, can.Option(nfs.PATH))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"添加": function(event, can) {
|
"添加": function(event, can) {
|
||||||
can.user.input(event, can, [ctx.INDEX], function(event, button, data) {
|
can.user.input(event, can, [ctx.INDEX], function(list) {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), data.index, ctx.INDEX)
|
can.onimport.tabview(can, can.Option(nfs.PATH), list[0], ctx.INDEX)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"插件": function(event, can) {
|
"插件": function(event, can) {
|
||||||
can.user.input(event, can, [ctx.INDEX], function(event, button, data) {
|
can.user.input(event, can, [ctx.INDEX], function(data) {
|
||||||
var sub = can.toolkit[data.index]; if (sub) { sub.select(); return }
|
var sub = can.toolkit[data.index]; if (sub) { sub.select(); return }
|
||||||
can.onimport.toolkit(can, data, function(sub) { can.toolkit[data.index] = sub.select() })
|
can.onimport.toolkit(can, data, function(sub) { can.toolkit[data.index] = sub.select() })
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"扩展": function(event, can) {
|
"扩展": function(event, can) {
|
||||||
can.user.input(event, can, ["url"], function(event, button, data) {
|
can.user.input(event, can, ["url"], function(data) {
|
||||||
var sub = can.extentions[data.url]; if (sub) { sub.select(); return }
|
var sub = can.extentions[data.url]; if (sub) { sub.select(); return }
|
||||||
can.onimport.exts(can, data.url, function(sub) { can.extentions[data.url] = sub.select() })
|
can.onimport.exts(can, data.url, function(sub) { can.extentions[data.url] = sub.select() })
|
||||||
})
|
})
|
||||||
@ -529,19 +529,19 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
"项目": function(event, can) { can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can) },
|
"项目": function(event, can) { can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can) },
|
||||||
"工具": function(event, can) { can.onmotion.toggle(can, can.ui.toolkit.fieldset) },
|
"工具": function(event, can) { can.onmotion.toggle(can, can.ui.toolkit.fieldset) },
|
||||||
"执行": function(event, can) { can.onimport.display(can), can.request(event, {_toast: "执行中..."})
|
"执行": function(event, can) { can.onimport.display(can), can.request(event, {_toast: "执行中..."})
|
||||||
can.run(event, [ctx.ACTION, mdb.ENGINE, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
can.runAction(event, mdb.ENGINE, [can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||||
can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.ui.display_status)
|
can.onappend._status(can, msg.Option(ice.MSG_STATUS), can.ui.display_status)
|
||||||
can.onimport.display(can, msg), can.onimport.layout(can)
|
can.onimport.display(can, msg), can.onimport.layout(can)
|
||||||
}, true)
|
})
|
||||||
},
|
},
|
||||||
"展示": function(event, can) { can.onimport.profile(can), can.request(event, {_toast: "渲染中..."})
|
"展示": function(event, can) { can.onimport.profile(can), can.request(event, {_toast: "渲染中..."})
|
||||||
if (can.Option(nfs.FILE).indexOf("website/") == 0) {
|
if (can.Option(nfs.FILE).indexOf("website/") == 0) {
|
||||||
can.profile_size[can.onexport.keys(can)] = can.profile_size[can.onexport.keys(can)] || can.ConfWidth()*parseInt(70)/100
|
can.profile_size[can.onexport.keys(can)] = can.profile_size[can.onexport.keys(can)] || can.ConfWidth()*parseInt(70)/100
|
||||||
}
|
}
|
||||||
can.parse == "js" && can.onaction["加载"](event, can)
|
can.parse == "js" && can.onaction["加载"](event, can)
|
||||||
can.run(event, [ctx.ACTION, mdb.RENDER, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
can.runAction(event, mdb.RENDER, [can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||||
can.onimport.profile(can, msg)
|
can.onimport.profile(can, msg)
|
||||||
}, true)
|
})
|
||||||
},
|
},
|
||||||
"清屏": function(event, can) {
|
"清屏": function(event, can) {
|
||||||
if (can.page.Select(can, can._root._target, ".input.float", function(item) {
|
if (can.page.Select(can, can._root._target, ".input.float", function(item) {
|
||||||
@ -656,11 +656,11 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: ["搜索", "打开", "添
|
|||||||
can.ui.search.Update(event, [ctx.ACTION, nfs.TAGS, value.trim()])
|
can.ui.search.Update(event, [ctx.ACTION, nfs.TAGS, value.trim()])
|
||||||
},
|
},
|
||||||
favorLine: function(can, value) {
|
favorLine: function(can, value) {
|
||||||
can.user.input(event, can, [{name: "zone", value: "hi"}, {name: "name", value: "hello"}], function(event, button, data) {
|
can.user.input(event, can, [{name: "zone", value: "hi"}, {name: "name", value: "hello"}], function(data) {
|
||||||
can.run(event, [ctx.ACTION, code.FAVOR, ctx.ACTION, mdb.INSERT, mdb.ZONE, data.zone||"",
|
can.runAction(event, code.FAVOR, [ctx.ACTION, mdb.INSERT, mdb.ZONE, data.zone||"",
|
||||||
mdb.TYPE, can.parse, mdb.NAME, data.name||"", mdb.TEXT, (value||"").trimRight(),
|
mdb.TYPE, can.parse, mdb.NAME, data.name||"", mdb.TEXT, (value||"").trimRight(),
|
||||||
nfs.PATH, can.Option(nfs.PATH), nfs.FILE, can.Option(nfs.FILE), nfs.LINE, can.Option(nfs.LINE),
|
nfs.PATH, can.Option(nfs.PATH), nfs.FILE, can.Option(nfs.FILE), nfs.LINE, can.Option(nfs.LINE),
|
||||||
], function(msg) { can.user.toastSuccess(can) }, true)
|
])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -7,7 +7,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
|
|||||||
},
|
},
|
||||||
))) { return }
|
))) { return }
|
||||||
|
|
||||||
can.run(event, can.misc.concat(can, [ctx.ACTION, code.FAVOR], cmds), function(msg) { var sub = msg._can
|
can.runAction(event, code.FAVOR, cmds, function(msg) { var sub = msg._can
|
||||||
sub.onmotion.clear(sub), sub.onappend.table(sub, msg, function(value, key, index, line) {
|
sub.onmotion.clear(sub), sub.onappend.table(sub, msg, function(value, key, index, line) {
|
||||||
if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) {
|
if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) {
|
||||||
if (key == mdb.VALUE) { key = line.key }
|
if (key == mdb.VALUE) { key = line.key }
|
||||||
@ -18,13 +18,13 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
|
|||||||
if ([mdb.ZONE, mdb.ID].indexOf(key) > -1) { return sub.onaction.change(event, sub, key, value) }
|
if ([mdb.ZONE, mdb.ID].indexOf(key) > -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())
|
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))
|
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())
|
}, sub._output), sub.onappend._status(sub, msg.Option(ice.MSG_STATUS)), can.Status("标签数", msg.Length())
|
||||||
}, true)
|
})
|
||||||
}, can.base.isFunc(cb) && cb(sub)
|
}, can.base.isFunc(cb) && cb(sub)
|
||||||
})
|
})
|
||||||
}})
|
}})
|
||||||
|
@ -36,18 +36,18 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
|
|||||||
show(msg)
|
show(msg)
|
||||||
},
|
},
|
||||||
nfs.TAGS, function(cmds) { msg.Option(kit.Dict(ice.MSG_HANDLE, ice.TRUE, ice.MSG_FIELDS, "file,line,text"))
|
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.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.page.ClassList.has(sub, sub._target, html.SELECT) || sub._legend.click()
|
||||||
can.onmotion.focus(can, msg._can._inputs["word"]._target)
|
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)))
|
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.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.page.ClassList.has(sub, sub._target, html.SELECT) || sub._legend.click()
|
||||||
can.onmotion.focus(can, msg._can._inputs["word"]._target)
|
can.onmotion.focus(can, msg._can._inputs["word"]._target)
|
||||||
}, true)
|
})
|
||||||
},
|
},
|
||||||
"last", function(cmds) { history.pop(), show(history.pop()) },
|
"last", function(cmds) { history.pop(), show(history.pop()) },
|
||||||
))) { return } can.run(msg, cmds, function(msg) { show(msg) }, true) }))
|
))) { return } can.run(msg, cmds, function(msg) { show(msg) }, true) }))
|
||||||
|
@ -3,10 +3,10 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
|
|||||||
sub.run = function(event, cmds, cb) { var msg = can.request(event)
|
sub.run = function(event, cmds, cb) { var msg = can.request(event)
|
||||||
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
|
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
|
||||||
nfs.SAVE, function(cmds) {
|
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)),
|
"tool", JSON.stringify(can.onexport.tool(can)),
|
||||||
"tabs", JSON.stringify(can.onexport.tabs(can)),
|
"tabs", JSON.stringify(can.onexport.tabs(can)),
|
||||||
]), cb, true)
|
], cb)
|
||||||
},
|
},
|
||||||
nfs.LOAD, function(cmds) {
|
nfs.LOAD, function(cmds) {
|
||||||
can.onimport.sess(can, {
|
can.onimport.sess(can, {
|
||||||
@ -15,7 +15,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
))) { return }
|
))) { 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)
|
}, can.base.isFunc(cb) && cb(sub)
|
||||||
})
|
})
|
||||||
}})
|
}})
|
||||||
|
@ -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())
|
sub.run = function(event, cmds, cb) { var msg = sub.request(event, can.Option())
|
||||||
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
|
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
|
||||||
nfs.DEFS, function(cmds) {
|
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) })
|
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.base.isFunc(cb) && cb(msg)
|
||||||
can.onimport.project(can, can.Option(nfs.PATH))
|
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), msg.Option("main"), "", function() {
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), cmds[1], 1, function() {})
|
can.onimport.tabview(can, can.Option(nfs.PATH), cmds[1], 1, function() {})
|
||||||
}, true)
|
}, true)
|
||||||
}, true)
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
))) { return }
|
))) { return }
|
||||||
can.run(event, [ctx.ACTION, ice.RUN, "web.code.template"].concat(cmds), function(msg) {
|
can.runActionCommand(event, "web.code.template", cmds, cb)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
|
||||||
}, true)
|
|
||||||
}, can.base.isFunc(cb) && cb(sub)
|
}, can.base.isFunc(cb) && cb(sub)
|
||||||
})
|
})
|
||||||
}})
|
}})
|
||||||
|
@ -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) {
|
can.onappend.plugin(can, {index: "web.code.vimer", style: "full"}, function(sub) {
|
||||||
sub.run = function(event, cmds, cb) { var res = can.request(event)
|
sub.run = function(event, cmds, cb) { var res = can.request(event)
|
||||||
if (cmds[1] == "plugin") {
|
if (cmds[1] == "plugin") {
|
||||||
can.run(event, can.misc.concat(can, ["action", "vimer"], cmds), cb, true)
|
can.runAction(event, "vimer", cmds, cb)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (cmds[1] == "main.go") { res.Echo(msg.Option("content"))
|
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) {
|
Volcanos(chat.ONACTION, {help: "操作数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
},
|
},
|
||||||
run: function(event, can, msg) {
|
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)
|
can.onappend.board(can, msg)
|
||||||
}, true)
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
|
@ -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})
|
_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)
|
can.onaction._run(event, can, button, args)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -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, [{
|
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],
|
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)
|
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) {
|
ondblclick: function(event) { can.onmotion.modify(can, event.target, function(ev, value, old) {
|
||||||
can.onaction.modifyTask(event, can, task, key, value)
|
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 }
|
_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) {
|
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))
|
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.ui.display)
|
||||||
can.page.style(can, can.ui.display, {display: html.BLOCK})
|
can.page.style(can, can.ui.display, {display: html.BLOCK})
|
||||||
@ -155,12 +155,12 @@ Volcanos(chat.ONACTION, {help: "组件交互", list: [
|
|||||||
["view", "", "name", "text", "level", "score"],
|
["view", "", "name", "text", "level", "score"],
|
||||||
],
|
],
|
||||||
insertTask: function(event, can, time) { var msg = can.sup.request(event, {begin_time: time})
|
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.user.input(event, can, can.Conf("feature.insert"), function(args) {
|
||||||
can.run(event, can.base.Simple(ctx.ACTION, mdb.INSERT, data, "begin_time", time), true)
|
can.runAction(event, mdb.INSERT, args.concat("begin_time", time))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
modifyTask: function(event, can, task, key, value) { var msg = can.request(event, task)
|
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
|
_filter: function(event, can, key, value) { var count = 0
|
||||||
|
@ -54,9 +54,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: ["保存", ["mode", "全选
|
|||||||
},
|
},
|
||||||
|
|
||||||
"保存": function(event, can, cmd) {
|
"保存": function(event, can, cmd) {
|
||||||
can.run(event, [ctx.ACTION, cmd, can.Option("path"), can.onexport.file(can)], function(msg) {
|
can.runAction(event, cmd, [can.Option("path"), can.onexport.file(can)])
|
||||||
can.user.toastSuccess(can)
|
|
||||||
}, true)
|
|
||||||
},
|
},
|
||||||
some: function(event, can, cmd) {
|
some: function(event, can, cmd) {
|
||||||
can.onaction._compute(event, can)
|
can.onaction._compute(event, can)
|
||||||
|
@ -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.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.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.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)
|
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.onmotion.delay(can, function() {
|
||||||
can.ondetail.run({target: item}, can), can.onimport._profile(can, item)
|
can.core.Item(kit.Dict(
|
||||||
}) || can.onimport._profile(can, can.svg), can.onmotion.hidden(can, can.ui.profile)
|
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)
|
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()
|
_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)
|
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) {
|
}, function(event) {
|
||||||
can.user.carteRight(event, can, can.onaction, [ice.HIDE, ice.SHOW, mdb.CREATE, cli.CLEAR, mdb.REMOVE])
|
can.user.carteRight(event, can, can.onaction, [ice.HIDE, ice.SHOW, mdb.CREATE, cli.CLEAR, mdb.REMOVE])
|
||||||
}, can.ui.project)
|
}, can.ui.project)
|
||||||
@ -76,25 +76,24 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms
|
|||||||
}
|
}
|
||||||
target.Groups = function() { var item = target
|
target.Groups = function() { var item = target
|
||||||
var list = []; while (item && item.tagName != html.SVG) {
|
var list = []; while (item && item.tagName != html.SVG) {
|
||||||
item.tagName == svg.G && item.Value(html.CLASS) && list.push(item.Value(html.CLASS))
|
item.tagName == svg.G && item.Value(html.CLASS) && list.push(item.Value(html.CLASS)), item = item.parentNode
|
||||||
item = item.parentNode
|
|
||||||
}
|
}
|
||||||
return list.reverse().join(ice.PT)
|
return list.reverse().join(ice.PT)
|
||||||
}
|
}
|
||||||
return target
|
return target
|
||||||
},
|
},
|
||||||
_profile: function(can, target, list) { can.Option("pid", can.onfigure._pid(can, target))
|
_profile: function(can, target, list) { can.Option(svg.PID, can.onfigure._pid(can, target))
|
||||||
if (can.onmotion.cache(can, function() { return target.Value("pid") }, can.ui.profile)) { return }
|
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
|
var ui = can.page.Append(can, can.ui.profile, [html.ACTION, html.OUTPUT])
|
||||||
can.onappend._action(can, can.ondetail.list, action, {_engine: function(event, can, button) {
|
can.onappend._action(can, can.ondetail.list, ui.action, {_engine: function(event, can, button) {
|
||||||
can.ondetail[button]({target: target}, can, button)
|
can.ondetail[button]({target: target}, can, button)
|
||||||
}})
|
}})
|
||||||
|
|
||||||
var figure = can.onfigure._get(can, target)
|
var figure = can.onfigure._get(can, target)
|
||||||
list = (list||[]).concat(figure.data.copy, [svg.X, svg.Y, mdb.INDEX, ctx.ARGS])
|
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: [
|
can.page.Append(can, ui.output, [{type: html.TABLE, className: html.CONTENT, list: [
|
||||||
{th: [mdb.KEY, mdb.VALUE]}, {td: [mdb.TYPE, target.tagName]}, {td: ["pid", target.Value("pid")]},
|
{th: [mdb.KEY, mdb.VALUE]}, {td: [mdb.TYPE, target.tagName]}, {td: [svg.PID, target.Value(svg.PID)]},
|
||||||
].concat(can.core.List(list, function(key) {
|
].concat(can.core.List(list, function(key) {
|
||||||
return key = figure.data.size[key]||key, {td: [key, target.Value(key)], ondblclick: function(event) {
|
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) {
|
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) {
|
draw: function(event, can, value) {
|
||||||
var figure = can.onfigure[value.shape]
|
var figure = can.onfigure[value.shape], data = figure.draw(event, can, value.point, value.style)
|
||||||
var data = figure.draw(event, can, value.point, value.style)
|
|
||||||
can.core.Item(value.style, function(key, value) { data[key] = value })
|
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)
|
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.core.ItemCB(value, function(key, cb) { item[key] = cb })
|
||||||
can.onimport._block(can, item), can.onfigure._pid(can, item)
|
return can.onimport._block(can, item), can.onfigure._pid(can, item), value._init && value._init(item), item
|
||||||
return value._init && value._init(item), item
|
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/wiki/draw.css"])
|
}, [""])
|
||||||
Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [],
|
Volcanos(chat.ONFIGURE, {help: "图形绘制", list: [],
|
||||||
_get: function(can, item, name) {
|
_get: function(can, item, name) {
|
||||||
return can.onfigure[name]||can.onfigure[item.getAttribute(mdb.NAME)]||can.onfigure[item.tagName]
|
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)
|
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
|
return pid
|
||||||
},
|
},
|
||||||
_push: function(can, type, data, target) {
|
_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]
|
ship.target = can.page.Select(can, can.svg, ice.PT+ship.pid)[0]
|
||||||
var p = can.onexport.anchor(target, ship.anchor, {})
|
var p = can.onexport.anchor(target, ship.anchor, {})
|
||||||
if (ship.which == 1) {
|
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) {
|
} 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) }
|
show: function(can, target, figure) { return can.onexport._position(can, target, figure) }
|
||||||
},
|
},
|
||||||
circle: { // <circle r="20" cx="25" cy="75"/>
|
circle: { // <circle r="20" cx="25" cy="75"/>
|
||||||
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 }
|
draw: function(event, can, point) { if (point.length < 2) { return }
|
||||||
var p0 = point[0], p1 = point[1]
|
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}
|
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: { // <ellipse ry="5" rx="20" cx="75" cy="75"/>
|
ellipse: { // <ellipse ry="5" rx="20" cx="75" cy="75"/>
|
||||||
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 }
|
draw: function(event, can, point) { if (point.length < 2) { return }
|
||||||
var p0 = point[0], p1 = point[1]
|
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}
|
return {ry: Math.abs(p0.y - p1.y), rx: Math.abs(p0.x - p1.x), cx: p0.x, cy: p0.y}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rect: { // <rect height="30" width="30" ry="10" rx="10" x="60" y="10"/>
|
rect: { // <rect height="30" width="30" ry="10" rx="10" x="60" y="10"/>
|
||||||
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 }
|
draw: function(event, can, point) { if (point.length < 2) { return }
|
||||||
var p0 = point[0], p1 = point[1]
|
var p0 = point[0], p1 = point[1]
|
||||||
return {
|
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 },
|
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: { // <rect height="30" width="30" ry="10" rx="10" x="60" y="10"/>
|
block: { // <rect height="30" width="30" ry="10" rx="10" x="60" y="10"/>
|
||||||
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 }
|
draw: function(event, can, point) { if (point.length < 2) { return }
|
||||||
this._temp && can.page.Remove(can, this._temp) && delete(this._temp)
|
this._temp && can.page.Remove(can, this._temp) && delete(this._temp)
|
||||||
this._temp = can.onfigure._push(can, svg.G, {}, can.group||can.svg)
|
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) {
|
if (event.type == html.CLICK) {
|
||||||
can.onfigure._pid(can, rect), delete(this._temp)
|
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) },
|
text: function(can, data, target) { can.onfigure.rect.text(can, data, target) },
|
||||||
},
|
},
|
||||||
line: { // <line x1="10" y1="50" x2="110" y2="150" xx="100" yy="100"/>
|
line: { // <line x1="10" y1="50" x2="110" y2="150" xx="100" yy="100"/>
|
||||||
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
|
grid: function(event, can, point) { var target = event.target
|
||||||
if (target == can.svg) { return }
|
if (target == can.svg) { return }
|
||||||
var p = point[point.length-1], pos = can.onexport.cursor(event, can, target)
|
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 }
|
draw: function(event, can, point) { if (point.length < 2) { return }
|
||||||
var p0 = point[0], p1 = point[1], ship = []
|
var p0 = point[0], p1 = point[1], ship = []
|
||||||
p0.target && p0.target.Value && ship.push({pid: p0.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("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}
|
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 },
|
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("y2")-target.Val("y1"))+ice.FS+(target.Val("x2")-target.Val("x1"))+")"+can.onexport._position(can, target, figure) },
|
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: [],
|
Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [],
|
||||||
@ -225,41 +222,41 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", list: [],
|
|||||||
ad: function(event, can) { can.Action("mode", "draw") },
|
ad: function(event, can) { can.Action("mode", "draw") },
|
||||||
ar: function(event, can) { can.Action("mode", "resize") },
|
ar: function(event, can) { can.Action("mode", "resize") },
|
||||||
|
|
||||||
st: function(event, can) { can.Action("shape", "text") },
|
st: function(event, can) { can.Action(svg.SHAPE, svg.TEXT) },
|
||||||
sr: function(event, can) { can.Action("shape", "rect") },
|
sr: function(event, can) { can.Action(svg.SHAPE, svg.RECT) },
|
||||||
sl: function(event, can) { can.Action("shape", "line") },
|
sl: function(event, can) { can.Action(svg.SHAPE, svg.LINE) },
|
||||||
sc: function(event, can) { can.Action("shape", "circle") },
|
sc: function(event, can) { can.Action(svg.SHAPE, svg.CIRCLE) },
|
||||||
se: function(event, can) { can.Action("shape", "ellipse") },
|
se: function(event, can) { can.Action(svg.SHAPE, svg.ELLIPSE) },
|
||||||
|
|
||||||
cr: function(event, can) { can.onaction._change(can, "stroke", "red") },
|
cr: function(event, can) { can.onaction._change(can, html.STROKE, cli.RED) },
|
||||||
cb: function(event, can) { can.onaction._change(can, "stroke", "blue") },
|
cb: function(event, can) { can.onaction._change(can, html.STROKE, cli.BLUE) },
|
||||||
cg: function(event, can) { can.onaction._change(can, "stroke", "green") },
|
cg: function(event, can) { can.onaction._change(can, html.STROKE, cli.GREEN) },
|
||||||
cy: function(event, can) { can.onaction._change(can, "stroke", "yellow") },
|
cy: function(event, can) { can.onaction._change(can, html.STROKE, cli.YELLOW) },
|
||||||
cp: function(event, can) { can.onaction._change(can, "stroke", "purple") },
|
cp: function(event, can) { can.onaction._change(can, html.STROKE, cli.PURPLE) },
|
||||||
cc: function(event, can) { can.onaction._change(can, "stroke", "cyan") },
|
cc: function(event, can) { can.onaction._change(can, html.STROKE, cli.CYAN) },
|
||||||
ch: function(event, can) { can.onaction._change(can, "stroke", "black") },
|
ch: function(event, can) { can.onaction._change(can, html.STROKE, cli.BLACK) },
|
||||||
cw: function(event, can) { can.onaction._change(can, "stroke", "white") },
|
cw: function(event, can) { can.onaction._change(can, html.STROKE, cli.WHITE) },
|
||||||
|
|
||||||
fr: function(event, can) { can.onaction._change(can, "fill", "red") },
|
fr: function(event, can) { can.onaction._change(can, html.FILL, cli.RED) },
|
||||||
fb: function(event, can) { can.onaction._change(can, "fill", "blue") },
|
fb: function(event, can) { can.onaction._change(can, html.FILL, cli.BLUE) },
|
||||||
fg: function(event, can) { can.onaction._change(can, "fill", "green") },
|
fg: function(event, can) { can.onaction._change(can, html.FILL, cli.GREEN) },
|
||||||
fy: function(event, can) { can.onaction._change(can, "fill", "yellow") },
|
fy: function(event, can) { can.onaction._change(can, html.FILL, cli.YELLOW) },
|
||||||
fp: function(event, can) { can.onaction._change(can, "fill", "purple") },
|
fp: function(event, can) { can.onaction._change(can, html.FILL, cli.PURPLE) },
|
||||||
fc: function(event, can) { can.onaction._change(can, "fill", "cyan") },
|
fc: function(event, can) { can.onaction._change(can, html.FILL, cli.CYAN) },
|
||||||
fh: function(event, can) { can.onaction._change(can, "fill", "black") },
|
fh: function(event, can) { can.onaction._change(can, html.FILL, cli.BLACK) },
|
||||||
fw: function(event, can) { can.onaction._change(can, "fill", "white") },
|
fw: function(event, can) { can.onaction._change(can, html.FILL, cli.WHITE) },
|
||||||
},
|
},
|
||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
||||||
["stroke-width", 1, 2, 3, 4, 5],
|
[html.STROKE_WIDTH, 1, 2, 3, 4, 5],
|
||||||
["stroke", cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE],
|
[html.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"],
|
[html.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.FONT_SIZE, 12, 16, 18, 24, 32],
|
||||||
|
|
||||||
["go", ice.RUN, ice.AUTO, "manual"],
|
["go", ice.RUN, ice.AUTO, "manual"],
|
||||||
["mode", "draw", "resize"],
|
["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],
|
["grid", 1, 2, 3, 4, 5, 10, 20],
|
||||||
],
|
],
|
||||||
_change: function(can, key, value) { can.Action(key, value), can.group.Value(key, value) },
|
_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) },
|
edit: function(event, can) { can.Action("go", can.Action("go") == ice.RUN? ice.AUTO: ice.RUN) },
|
||||||
save: function(event, can, button) {
|
save: function(event, can, button) {
|
||||||
var msg = can.request(event, {content: can.onexport.content(can, can.svg)})
|
can.runAction(can.request(event, {content: can.onexport.content(can, can.svg)}), button, [can.Option(nfs.PATH)])
|
||||||
can.run(event, [ctx.ACTION, button, can.Option(nfs.PATH)], function(msg) {
|
|
||||||
can.user.toastSuccess(can)
|
|
||||||
}, true)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
project: function(event, can) { can.onmotion.toggle(can, can.ui.project) },
|
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) },
|
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) },
|
hide: function(event, can) { can.onmotion.hide(can, {interval: 100, length: 10}, null, can.group) },
|
||||||
create: function(event, can) {
|
create: function(event, can) {
|
||||||
can.user.prompt("group", "some", function(name) {
|
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)
|
var group = document.createElementNS('http://www.w3.org/2000/svg', svg.G); can.group.append(group), can.onimport._block(can, group)
|
||||||
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(html.CLASS, name), can.core.List([html.STROKE_WIDTH, html.STROKE, html.FILL, html.FONT_SIZE], function(name) {
|
||||||
group.Value(name, can.Action(name))
|
group.Value(name, can.Action(name))
|
||||||
}), can.onimport._group(can, group).click()
|
}), can.onimport._group(can, group).click()
|
||||||
@ -302,8 +295,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
|||||||
|
|
||||||
_mode: {
|
_mode: {
|
||||||
draw: function(event, can, point) {
|
draw: function(event, can, point) {
|
||||||
var shape = can.Action("shape")
|
var shape = can.Action(svg.SHAPE), figure = can.onfigure[shape]
|
||||||
var figure = can.onfigure[shape]
|
|
||||||
figure.grid && figure.grid(event, can, point)
|
figure.grid && figure.grid(event, can, point)
|
||||||
|
|
||||||
var data = figure.draw && figure.draw(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
|
resize: function(event, can, point, target) { target = target||event.target
|
||||||
if (event.type == html.CLICK) {
|
if (event.type == html.CLICK) {
|
||||||
if (point.length == 1) {
|
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 {
|
return {
|
||||||
height: item.Val(html.HEIGHT), width: item.Val(html.WIDTH), x: item.Val(svg.X), y: item.Val(svg.Y),
|
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) {
|
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.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) {
|
can.page.Select(can, can.svg, ice.PT+item.target.Value(mdb.TEXT), function(text) {
|
||||||
text.Value(can.onexport._text(can, item.target, figure, {}))
|
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) {
|
run: function(event, can) { can.onimport._profile(can, event.target) },
|
||||||
can.onimport._profile(can, event.target)
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
_auto: function(can, target) {
|
_auto: function(can, target) {
|
||||||
if (can.point.length > 0) { return }
|
if (can.point.length > 0) { return }
|
||||||
@ -352,7 +341,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
|||||||
var pos = can.onexport.cursor(event, can, event.target)
|
var pos = can.onexport.cursor(event, can, event.target)
|
||||||
if (target == can.svg) {
|
if (target == can.svg) {
|
||||||
if (pos == 5) {
|
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"})
|
can.page.style(can, target, {cursor: "crosshair"})
|
||||||
} else {
|
} else {
|
||||||
can.Action(ice.MODE, "resize")
|
can.Action(ice.MODE, "resize")
|
||||||
@ -361,7 +350,7 @@ Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
|||||||
switch (pos) {
|
switch (pos) {
|
||||||
case 5:
|
case 5:
|
||||||
case 9: can.Action(ice.MODE, "resize"); break
|
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))
|
can.onaction._figure(event, can, can.point = can.point.concat(point))
|
||||||
},
|
},
|
||||||
ondblclick: function(event, can) {
|
ondblclick: function(event, can) { can.ondetail.label(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
|
start: function(event, can) { var target = event.target
|
||||||
var list = [target], dict = {}
|
var list = [target], dict = {}
|
||||||
for (var i = 0; i < list.length; i++) { var ship = list[i].Value("ship")
|
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
|
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(svg.PID, target.Value(svg.PID))
|
||||||
|
|
||||||
can.onmotion.clear(can, can.ui.display), can.svg.Value("pid", target.Value("pid"))
|
|
||||||
var index = target.Value(mdb.INDEX); index && can.onappend.plugin(can, {type: chat.STORY, index: index, args: target.Value(ctx.ARGS)}, function(sub) {
|
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.runActionCommand(event, index, cmds, cb) }
|
||||||
sub.run = function(event, cmds, cb) { can.run(event, can.misc.concat(can, [ice.RUN, index], cmds), cb, true) }
|
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.onmotion.hidden(can, sub._legend), can.onmotion.hidden(can, can.ui.display, true)
|
||||||
}, can.ui.display)
|
}, 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) },
|
copy: function(event, can) { can.onfigure._copy(event, can, event.target) },
|
||||||
label: function(event, can) { var target = 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) {
|
var def = target.Value(mdb.TEXT); def && can.page.Select(can, can.svg, ice.PT+def, function(item) { def = item.Value(html.INNER) })
|
||||||
def = item.Value(html.INNER)
|
|
||||||
})
|
|
||||||
can.user.prompt(html.LABEL, def, function(text) {
|
|
||||||
if (target.tagName == html.TEXT) { return target.innerHTML = text }
|
|
||||||
|
|
||||||
if (def && can.page.Select(can, can.svg, ice.PT+def, function(item) {
|
can.user.input(event, can, [{name: html.LABEL, value: def}], function(list) { var text = list[0]
|
||||||
item.Value(html.INNER, text)
|
if (target.tagName == html.TEXT) { return target.innerHTML = text }
|
||||||
}).length > 0) {
|
if (def && can.page.Select(can, can.svg, ice.PT+def, function(item) { item.Value(html.INNER, text) }).length > 0) { return }
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var figure = can.onfigure._get(can, target)
|
var figure = can.onfigure._get(can, target)
|
||||||
var data = can.onexport._text(can, target, figure, {inner: text})
|
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) },
|
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) },
|
remove: function(event, can) { var target = event.target
|
||||||
"delete": function(event, can) { var target = event.target
|
|
||||||
if (target == can.svg) { return }
|
if (target == can.svg) { return }
|
||||||
can.core.List(target.Value(ice.SHIP), function(value) {
|
can.core.List(target.Value(ice.SHIP), function(value) {
|
||||||
can.page.Select(can, can.svg, ice.PT+value.pid, function(item) {
|
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) {
|
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, 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)
|
_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) }
|
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("figure", target.tagName+":"+target.Value(svg.PID)+ice.SP+(figure? (figure.show||show)(can, target, figure): ""))
|
||||||
can.Status("group", target.Groups()||can.group.Groups()||html.SVG)
|
can.Status(svg.GROUP, target.Groups()||can.group.Groups()||html.SVG)
|
||||||
can.Status("index", target.Value("index"))
|
can.Status("index", target.Value("index"))
|
||||||
},
|
},
|
||||||
_size: function(can, target, figure) { var size = figure.data.size||{}
|
_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"))
|
point.y = point.y - point.y % parseInt(can.Action("grid"))
|
||||||
return can.Status("pos", point.x+ice.FS+point.y), point
|
return can.Status("pos", point.x+ice.FS+point.y), point
|
||||||
},
|
},
|
||||||
|
|
||||||
content: function(can, svg) {
|
content: function(can, svg) {
|
||||||
return ['<svg vertion="1.1" xmlns="https://www.w3.org/2000/svg" text-anchor="middle" dominant-baseline="middle"'].concat(
|
return ['<svg vertion="1.1" xmlns="https://www.w3.org/2000/svg" text-anchor="middle" dominant-baseline="middle"'].concat(
|
||||||
svg? can.core.List([html.HEIGHT, html.WIDTH, mdb.COUNT, "pid", "grid", html.STROKE_WIDTH, html.STROKE, html.FILL, html.FONT_SIZE], function(item) {
|
svg? can.core.List([html.HEIGHT, html.WIDTH, mdb.COUNT, svg.PID, "grid", html.STROKE_WIDTH, html.STROKE, html.FILL, html.FONT_SIZE], function(item) {
|
||||||
return svg.Value(item)? ice.SP + item + '="' + svg.Value(item) + '"': ""
|
return svg.Value(item)? ice.SP + item + '="' + svg.Value(item) + '"': ""
|
||||||
}): [" height="+((can.ConfHeight()||450)-50)+" width="+(can.ConfWidth()||600)]).concat(['>', svg? svg.innerHTML: "", "</svg>"]).join("")
|
}): [" height="+((can.ConfHeight()||450)-50)+" width="+(can.ConfWidth()||600)]).concat(['>', svg? svg.innerHTML: "", "</svg>"]).join("")
|
||||||
},
|
},
|
||||||
|
|
||||||
cursor: function(event, can, item, show) {
|
cursor: function(event, can, item, show) {
|
||||||
var p = item.getBoundingClientRect()
|
var p = item.getBoundingClientRect()
|
||||||
var q = {x: event.clientX, y: event.clientY}
|
var q = {x: event.clientX, y: event.clientY}
|
||||||
|
@ -1,53 +1,52 @@
|
|||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.path = can.request(), can.list = [], msg.Table(function(value) {
|
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.ui = can.onlayout.display(can, target)
|
||||||
can.onappend.table(can, can.path, null, can.ui.content)
|
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(html.HEIGHT, msg.Option(html.HEIGHT)||msg._cmds[1]||"100")
|
||||||
can.Action("limit", msg.Option("limit")||"6")
|
can.Action(html.SPEED, msg.Option(html.SPEED)||msg._cmds[2]||"1")
|
||||||
can.Action("rate", msg.Option("rate")||"1")
|
can.Action(mdb.LIMIT, msg.Option(mdb.LIMIT)||msg._cmds[3]||"6")
|
||||||
can.onmotion.hidden(can, can._action)
|
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)
|
can.onimport.page(can, can.list)
|
||||||
},
|
},
|
||||||
_file: function(can, path, index) { var p = location.href.indexOf("http") == 0? "": "http://localhost:9020"
|
_file: function(can, path, index) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020"
|
||||||
return path.indexOf("http") == 0? path: p+can.base.Path("/share/local", can.dir_root||"", path)
|
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)
|
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)])
|
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)
|
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) }
|
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})
|
can.Status({begin: begin, limit: limit, total: can.list.length})
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/wiki/feel.css"])
|
}, [""])
|
||||||
Volcanos(chat.ONFIGURE, {help: "组件菜单", list: [],
|
Volcanos(chat.ONFIGURE, {help: "组件菜单", list: [],
|
||||||
png: function(can, path, index) { return can.onfigure.image(can, path, index) },
|
png: function(can, path, index) { return can.onfigure.image(can, path, index) },
|
||||||
jpg: 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) },
|
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) {
|
image: function(can, path, index) { return {img: path, height: can.Action(html.HEIGHT),
|
||||||
can.ondetail._init(can, index)
|
onmouseover: function(event) { can.Status(nfs.FILE, path) },
|
||||||
}, _init: function(target) { can.Status("file", path) },
|
onclick: function(event) { can.ondetail._init(can, index) },
|
||||||
onmouseover: function(event) { can.Status("file", path) },
|
|
||||||
} },
|
} },
|
||||||
|
|
||||||
video: function(can, path) { var auto = can.user.isMobile&&can.Action("limit")!="1"? false: true, loop = true, total = 0; function cb(event) { }
|
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: "video", style: {height: parseInt(can.Action("height"))}, className: "preview",
|
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("rate"))},
|
data: {src: path, controls: "controls", autoplay: auto, loop: loop, playbackRate: parseFloat(can.Action(html.SPEED))},
|
||||||
oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb,
|
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
|
onloadedmetadata: function(event) { total = event.timeStamp
|
||||||
event.target.currentTime = can._msg.currentTime || 0
|
event.target.currentTime = can._msg.currentTime || 0
|
||||||
}, onloadeddata: cb, ontimeupdate: function(event) {
|
}, 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) },
|
mov: function(can, path) { return can.onfigure.video(can, path) },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
Volcanos(chat.ONACTION, {help: "组件菜单", list: [
|
||||||
["height", 100, 200, 400, 600, 800],
|
[html.HEIGHT, 100, 200, 400, 600, 800],
|
||||||
["limit", 1, 3, 6, 9, 12, 15, 20, 30],
|
[html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10],
|
||||||
["rate", 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) {
|
prev: function(event, can) {
|
||||||
can.begin > 0 && (can.begin -= parseInt(can.Action("limit")), can.onimport.page(can, can.list))
|
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) {
|
next: function(event, can) {
|
||||||
can.begin + parseInt(can.Action("limit")) < can.list.length && (can.begin += parseInt(can.Action("limit")), can.onimport.page(can, can.list))
|
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 {
|
||||||
"height": function(event, can, key, value) {
|
can.user.toast(can, "已经是最后一页了")
|
||||||
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)
|
|
||||||
},
|
},
|
||||||
|
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)
|
chooseImage: function(event, can) { var msg = can.request(event)
|
||||||
can.user.agent.chooseImage(function(list) { can.core.List(list, function(item) {
|
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.getActionSize(function(msg, left, top, width, height) {
|
||||||
sub.page.style(sub, sub._target, {left: left, top: top})
|
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._action(can, can.ondetail.list, sub._action, can.ondetail)
|
||||||
|
sub.onappend._status(sub, ["begin", "file"])
|
||||||
|
|
||||||
can.order = index, can.show = function(order) {
|
can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path)
|
||||||
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, [{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)
|
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.show(can.order)
|
||||||
})
|
})
|
||||||
}, can._root._target)
|
}, can._root._target)
|
||||||
},
|
},
|
||||||
"关闭": function(event, can) { can.page.Remove(can, can.sub._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.user.download(can, path = can.onimport._file(can, can.list[can.order].path)) },
|
||||||
"删除": function(event, can) {
|
"删除": function(event, can) { can.runAction(event, nfs.TRASH, [can.list[can.order].path], function(msg) { can.user.toastSuccess(can, "删除成功") }, true) },
|
||||||
can.run(event, [ctx.ACTION, mdb.REMOVE, can.list[can.order].path], function(msg) { can.user.toast(can, "删除成功") }, true)
|
|
||||||
},
|
|
||||||
"上一个": function(event, can) { can.order > 0? can.show(--can.order): can.user.toast(can, "已经是第一张啦!") },
|
"上一个": 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) { 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)})
|
"设置头像": function(event, can) { can.setHeader("avatar", can.onimport._file(can, can.list[can.order].path)) },
|
||||||
can.search(event, ["Header.onimport.avatar"], null, true)
|
"设置背景": 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)) },
|
||||||
"设置背景": 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))
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
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
|
position: function(can, index, total) { total = total || can.max
|
||||||
return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+ice.PS+parseInt(total)
|
return parseInt((index+1)*100/total)+"%"+" = "+(parseInt(index)+1)+ice.PS+parseInt(total)
|
||||||
},
|
},
|
||||||
|
@ -58,7 +58,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
|||||||
can.page.Select(can, target, html.A, function(item) {
|
can.page.Select(can, target, html.A, function(item) {
|
||||||
item.onclick = function(event) {
|
item.onclick = function(event) {
|
||||||
can.request(event, kit.Dict(ice.MSG_HANDLE, ice.TRUE))
|
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.core.List(item.list, function(item) {
|
||||||
can.onappend.plugin(can, item.meta, function(sub) {
|
can.onappend.plugin(can, item.meta, function(sub) {
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
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.ConfWidth(item.meta.width = can.ConfWidth()-165)
|
||||||
sub.ConfHeight(item.meta.height = can.ConfHeight()-300)
|
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.A, function(item) { can.onmotion.link(can, item) })
|
||||||
can.page.Select(can, target, html.SPAN, function(item) {
|
can.page.Select(can, target, html.SPAN, function(item) {
|
||||||
can.onmotion.copy(can, item, "", function(event) {
|
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)
|
field: function(can, data, target, width) { var item = can.base.Obj(data.meta)
|
||||||
can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) {
|
can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) {
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
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.ConfHeight(can.ConfHeight())
|
||||||
sub.ConfWidth(item.width = (width||can.ConfWidth())-(can.user.isWindows? 40: 20))
|
sub.ConfWidth(item.width = (width||can.ConfWidth())-(can.user.isWindows? 40: 20))
|
||||||
|
@ -134,7 +134,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
|||||||
"扩展参数": function(event, can) { can.onmotion.toggle(can, can._action) },
|
"扩展参数": 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) { can.user.copy(event, can, can.onexport.table(can)||can.onexport.board(can)) },
|
||||||
"下载数据": function(event, can) { var meta = can.Conf()
|
"下载数据": 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)
|
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)) },
|
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
|
||||||
getLocation: function(event, can, button) {
|
getLocation: function(event, can, button) {
|
||||||
can.user.agent.getLocation(function(data) { can.request(event, data)
|
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.user.input(event, can, [mdb.TYPE, mdb.NAME, mdb.TEXT, "latitude", "longitude"], function(args) {
|
||||||
can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) { can.user.toastSuccess(can, button) }, true)
|
can.runAction(event, button, args)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getClipboardData: function(event, can, button) {
|
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) }):
|
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: [],
|
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [],
|
||||||
|
@ -137,11 +137,11 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: [],
|
|||||||
sub.ConfHeight(data.main.offsetHeight-160)
|
sub.ConfHeight(data.main.offsetHeight-160)
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
sub.run = function(event, cmds, cb, silent) {
|
||||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(data.main.offsetWidth-40))
|
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() {
|
cb(msg), can.core.Timer(10, function() {
|
||||||
can.page.style(can, sub._table, html.MAX_HEIGHT, data.main.offsetHeight-150)
|
can.page.style(can, sub._table, html.MAX_HEIGHT, data.main.offsetHeight-150)
|
||||||
})
|
})
|
||||||
}, true)
|
})
|
||||||
}
|
}
|
||||||
}, data.main)
|
}, data.main)
|
||||||
default:
|
default:
|
||||||
|
@ -17,7 +17,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", list: [], _init: function(can, ms
|
|||||||
{view: [wiki.TITLE, html.DIV, value.name]},
|
{view: [wiki.TITLE, html.DIV, value.name]},
|
||||||
{view: [wiki.CONTENT, html.DIV, value.text]},
|
{view: [wiki.CONTENT, html.DIV, value.text]},
|
||||||
{view: html.ACTION, inner: value.action, onclick: function(event) {
|
{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, [])
|
||||||
}},
|
}},
|
||||||
]}
|
]}
|
||||||
}))
|
}))
|
||||||
|
17
proto.js
17
proto.js
@ -197,10 +197,11 @@ var mall = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var svg = {
|
var svg = {
|
||||||
G: "g", X: "x", Y: "y", R: "r", RX: "rx", RY: "ry",
|
PID: "pid",
|
||||||
LINE: "line", RECT: "rect", TEXT: "text",
|
GROUP: "group",
|
||||||
M: "M", Q: "Q", T: "T",
|
SHAPE: "shape", TEXT: "text", RECT: "rect", LINE: "line", CIRCLE: "circle", ELLIPSE: "ellipse",
|
||||||
PATH2V: "path2v", PATH2H: "path2h",
|
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 = {
|
var html = {
|
||||||
// FIELDSET
|
// FIELDSET
|
||||||
@ -229,8 +230,9 @@ var html = {
|
|||||||
BACKGROUND: "background", SELECT: "select", HIDDEN: "hidden",
|
BACKGROUND: "background", SELECT: "select", HIDDEN: "hidden",
|
||||||
DISPLAY: "display", BLOCK: "block", NONE: "none", FIXED: "fixed",
|
DISPLAY: "display", BLOCK: "block", NONE: "none", FIXED: "fixed",
|
||||||
OPACITY: "opacity",
|
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",
|
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",
|
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,
|
PLUGIN_MARGIN: 10, ACTION_HEIGHT: 29, ACTION_MARGIN: 200,
|
||||||
TOGGLE: "toggle",
|
TOGGLE: "toggle",
|
||||||
@ -240,7 +242,7 @@ var html = {
|
|||||||
MENU: "menu", NODE: "node",
|
MENU: "menu", NODE: "node",
|
||||||
HIDE: "hide", SHOW: "show", AUTO: "auto",
|
HIDE: "hide", SHOW: "show", AUTO: "auto",
|
||||||
HEAD: "head", LEFT: "left", MAIN: "main", FOOT: "foot",
|
HEAD: "head", LEFT: "left", MAIN: "main", FOOT: "foot",
|
||||||
LAYOUT: "layout", PLUGIN: "plugin",
|
PLUGIN: "plugin", LAYOUT: "layout", CONTENT: "content",
|
||||||
|
|
||||||
DIV_PAGE: "div.page",
|
DIV_PAGE: "div.page",
|
||||||
DIV_TABS: "div.tabs",
|
DIV_TABS: "div.tabs",
|
||||||
@ -337,7 +339,8 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", pack:
|
|||||||
}); return msg
|
}); 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())
|
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.run(event, can.misc.concat(can, [ctx.ACTION, action], args), cb||function(msg) {
|
||||||
can.user.toastSuccess(can, action)
|
can.user.toastSuccess(can, action)
|
||||||
|
@ -47,7 +47,7 @@ setTimeout(function() { Volcanos({Option: function() { return [] },
|
|||||||
},
|
},
|
||||||
|
|
||||||
order: function(can, msg, arg) {
|
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.run(event, [chat.FIELD, mdb.INSERT, mdb.ZONE, location.host].concat(args), function(res) {
|
||||||
can.user.toastSuccess(can)
|
can.user.toastSuccess(can)
|
||||||
})
|
})
|
||||||
@ -73,7 +73,7 @@ setTimeout(function() { Volcanos({Option: function() { return [] },
|
|||||||
}, msg.Option("selection")||sub._legend.onclick()
|
}, msg.Option("selection")||sub._legend.onclick()
|
||||||
|
|
||||||
sub.run = function(event, cmds, cb) { if (msg.RunAction(event, can, cmds)) { return }
|
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() {
|
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)
|
_motion: function(can) { can.onmotion.float.auto(can, can._root._target)
|
||||||
document.body.ondblclick = function(event) { can.onengine.signal(can, "onselection") }
|
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)
|
msg.result && msg.result[0] && can.field(can, msg, msg.result)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user