1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00
This commit is contained in:
shaoying 2022-07-02 22:57:12 +08:00
parent 521e25fe6d
commit d6fffd47f4
14 changed files with 62 additions and 87 deletions

View File

@ -198,6 +198,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
_action: function(can, list, action, meta) {
list = can.base.getValid(list, can.core.Item(meta))
list = can.base.Obj(list, can.core.Value(can, [chat.ONACTION, mdb.LIST]))
if (!list) { return }
var _list = []; for (var i = 0; i < list.length; i++) {
switch (list[i]) { case "": _list.push(""); break
case mdb.PAGE:
@ -220,7 +221,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
}) ()
}
}
meta = meta||can.onaction, action = action||can._action, can.onmotion.clear(can, action)
meta = meta||can.onaction||{}, action = action||can._action, can.onmotion.clear(can, action)
return can.core.List(_list, function(item) { if (item == undefined) { return } can.onappend.input(can, item == ""? /*空白*/ {type: html.SPACE}:
can.base.isString(item)? /*按键*/ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) {
var cb = meta[item]||meta["_engine"]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
@ -271,13 +272,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
var process = msg._can == can || msg._can == sub
if (process && can.core.CallFunc([sub, chat.ONIMPORT, ice.MSG_PROCESS], {can: sub, msg: msg})) { return }
if (process && can.core.CallFunc([can, chat.ONIMPORT, ice.MSG_PROCESS], {can: can, msg: msg})) { return }
!silent && can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)||meta.display||meta.feature.display)
!silent && can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)||meta.display||meta.feature.display, can._output, can._action)
})
},
_output: function(can, msg, display, output, action, cb) { display = display||chat.PLUGIN_TABLE_JS, output = output||can._output
Volcanos(display, {_follow: can.core.Keys(can._follow, display), _display: display, _target: output, _fields: can._target,
_option: can._option, _action: can._action, _output: can._output, _status: can._status, _legend: can._legend, _inputs: {},
Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status,
Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status, _root: can._root,
}, [display, chat.PLUGIN_TABLE_JS], function(table) { table.Conf(can.Conf())
table.run = function(event, cmds, cb, silent) { var msg = can.request(event)
if (msg.RunAction(event, table, cmds)) { return }
@ -423,7 +424,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
}, ondblclick: function(event) { if ([mdb.KEY].indexOf(key) > -1) { return }
var item = can.core.List(can.Conf("feature.insert"), function(item) { if (item.name == key) { return item } })[0]||{name: key, value: value}
item.run = function(event, cmds, cb) { can.run(can.request(event, line)._event, cmds, cb, true) }
item.run = function(event, cmds, cb) { can.run(can.request(event, line), cmds, cb, true) }
can.onmotion.modifys(can, event.target, function(event, value, old) { run([ctx.ACTION, mdb.MODIFY, key, value]) }, item)
}}
}); table && can.page.Modify(can, table, {className: chat.CONTENT})
@ -665,7 +666,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
}
}
can.base.isFunc(cbs) && cbs(sub, meta, skip)
}, target): /* 后端命令 */ can.run(can.request({}, meta)._event, [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { msg.Table(function(value) {
}, target): /* 后端命令 */ can.run(can.request({}, meta), [ctx.ACTION, ctx.COMMAND, meta.index], function(msg) { msg.Table(function(value) {
can.onappend._plugin(can, value, meta, cbs, target)
}) }, true)
return res
@ -903,7 +904,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
},
share: function(event, can, input, args) {
return can.user.input(event, can, input, function(ev, button, data, list, _args) {
can.search(can.request(event, {args: [mdb.TYPE, chat.FIELD].concat(args||[], _args||[])})._event, [["Header", chat.ONACTION, web.SHARE]])
can.search(can.request(event, {args: [mdb.TYPE, chat.FIELD].concat(args||[], _args||[])}), [["Header", chat.ONACTION, web.SHARE]])
})
},

View File

@ -2,7 +2,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
var proto = {_event: event, _can: can,
RunAction: function(event, sub, cmds, meta) { var msg = can.request(event); meta = meta || sub&&sub.onaction || {}
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return }
if (cmds && cmds[0] == ctx.ACTION && can.base.isFunc(meta[cmds[1]])) {
if (cmds && cmds[0] == ctx.ACTION && can.base.isFunc(meta[cmds[1]])) { event = event._event||event
return msg.Option(ice.MSG_HANDLE, ice.TRUE), can.core.CallFunc(meta[cmds[1]], {event: event, can: sub, msg: msg, button: cmds[1], cmd: cmds[1]}), true
}
return false

View File

@ -131,7 +131,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
return !meta.action && can.onmotion.float.add(can, chat.TOAST, action), action
},
share: function(can, msg, cmd) {
can.run(msg._event, cmd||[ctx.ACTION, chat.SHARE], function(msg) {
can.run(msg, cmd||[ctx.ACTION, chat.SHARE], function(msg) {
can.user.toast(can, {height: 300, width: 500,
title: msg.Append(mdb.NAME), duration: -1,
content: msg.Append(mdb.TEXT), action: [cli.CLOSE, cli.OPEN],
@ -313,7 +313,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
},
select: function(event, can, type, fields, cb, cbs) {
var msg = can.request(event, {fields: fields||"type,name,text"})
can.search(msg._event, ["Search.onimport.select", type, "", ""], function(list) {
can.search(msg, ["Search.onimport.select", type, "", ""], function(list) {
can.core.Next(list, cb, cbs||function() {
can.user.toastSuccess(can)
})

View File

@ -13,7 +13,7 @@ fieldset.Action.free>div.output fieldset.plugin.select { display:block; }
fieldset.Action.flow>div.output fieldset.plugin { float:left; }
fieldset.Action div.output fieldset.plugin.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:10; }
fieldset.Action div.output fieldset.plugin.Full>legend { float:left; display:contents; }
fieldset.Action div.output fieldset.plugin.Full>legend { float:left; display:block; }
fieldset.Action div.output fieldset.story.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:10; }
fieldset.Action div.output fieldset.story.Full>legend { height:30px; float:left; }
fieldset.Action>div.project.toggle {

View File

@ -186,7 +186,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, t
can.Conf(chat.TOOL)? can.core.Next(can.Conf(chat.TOOL), function(item, next) {
can.onimport._cmd(can, item, next)
}): can.run(can.request()._event, [ctx.ACTION, ctx.COMMAND], function(msg) {
}): can.run(can.request(), [ctx.ACTION, ctx.COMMAND], function(msg) {
can.core.Next(msg.Table(), function(item, next) {
can.onimport._cmd(can, item, next)
})

View File

@ -222,19 +222,19 @@ Volcanos("ondetail", {help: "菜单交互",
},
"重命名群组": function(event, can, button, river) {
can.user.input(event, can, [mdb.NAME], function(event, button, meta, list) {
can.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.MODIFY, mdb.NAME, meta.name], function(msg) {
can.run(can.request(event, {hash: river}), [ctx.ACTION, mdb.MODIFY, mdb.NAME, meta.name], function(msg) {
can.misc.Search(can, {river: river})
})
})
},
"删除群组": function(event, can, button, river) {
can.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.REMOVE], function(msg) { can.misc.Search(can, {}) })
can.run(can.request(event, {hash: river}), [ctx.ACTION, mdb.REMOVE], function(msg) { can.misc.Search(can, {}) })
},
"保存参数": function(event, can, button, river, storm) {
can.getAction(ctx.ARGS, function(item, next, index, array) { var msg = can.request({}, {hash: storm, id: item.dataset.id})
var toast = can.user.toast(can, (index+1)+ice.PS+array.length, button, 10000, (index+1)*100/array.length)
can.run(msg._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) {
can.run(msg, [river, chat.STORM, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) {
can.core.Timer(200, function() {
toast.close(), next(), index == array.length-1 && can.user.toastSuccess(can, button)
})
@ -243,13 +243,13 @@ Volcanos("ondetail", {help: "菜单交互",
},
"重命名应用": function(event, can, button, river, storm) {
can.user.input(event, can, [mdb.NAME], function(ev, button, meta, list, args) {
can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function(msg) {
can.run(can.request(event, {hash: storm}), [river, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function(msg) {
can.misc.Search(can, {river: river, storm: storm})
})
})
},
"删除应用": function(event, can, button, river, storm) {
can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.REMOVE], function(msg) {
can.run(can.request(event, {hash: storm}), [river, chat.STORM, ctx.ACTION, mdb.REMOVE], function(msg) {
can.misc.Search(can, {river: river})
})
},

View File

@ -27,7 +27,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
})
can.onengine.signal(can, chat.ONSEARCH, res)
can.run(res._event, cmds, function(res) { can.onimport._init(can, res, fields) })
can.run(res, cmds, function(res) { can.onimport._init(can, res, fields) })
can.onmotion.show(can), can.onmotion.focus(can, can.ui.word)
},

View File

@ -170,7 +170,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
}}, {view: html.LIST}]); list = ui.list
if (index > 0) { ui.item.click() }
}
can.run(can.request({}, {dir_root: path, dir_deep: true})._event, [ice.PWD], function(msg) { can._file = msg.Table()
can.run(can.request({}, {dir_root: path, dir_deep: true}), [ice.PWD], function(msg) { can._file = msg.Table()
can.core.List(can._file, function(item) { if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } })
can.onappend.tree(can, can._file, nfs.PATH, ice.PS, function(event, item) {
can.onimport.tabview(can, path, item.path)
@ -178,7 +178,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
}, true)
}, function() { can.base.isFunc(cb) && cb() })
can.run(can.request({}, {fields: "index"})._event, [ctx.ACTION, ctx.COMMAND, "search", "command"], function(msg) {
can.run(can.request({}, {fields: "index"}), [ctx.ACTION, ctx.COMMAND, "search", "command"], function(msg) {
can.onappend.tree(can, msg.Table(), ctx.INDEX, ice.PT, function(event, item) {
can.onimport.tabview(can, can.Option(nfs.PATH), item.index, ctx.INDEX)
}, project.module)

View File

@ -36,21 +36,21 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, args, cb) { var
show(msg)
},
nfs.TAGS, function(cmds) { msg.Option(kit.Dict(ice.MSG_HANDLE, ice.TRUE, ice.MSG_FIELDS, "file,line,text"))
can.run(msg._event, [ctx.ACTION, mdb.SEARCH, can.parse, cmds[0], can.Option(nfs.PATH)], function(msg) { var sub = msg._can
can.run(msg, [ctx.ACTION, mdb.SEARCH, can.parse, cmds[0], can.Option(nfs.PATH)], function(msg) { var sub = msg._can
can.page.style(can, sub._output, html.MAX_HEIGHT, can.ConfHeight()/4), show(msg, msg._word = cmds[0])
can.page.ClassList.has(sub, sub._target, html.SELECT) || sub._legend.click()
can.onmotion.focus(can, msg._can._inputs["word"]._target)
}, true)
},
nfs.GREP, function(cmds) { msg.Option(kit.Dict(ice.MSG_HANDLE, ice.TRUE, ice.MSG_FIELDS, "file,line,text", nfs.PATH, can.Option(nfs.PATH)))
can.run(msg._event, [ctx.ACTION, nfs.GREP, cmds[0]], function(msg) { var sub = msg._can
can.run(msg, [ctx.ACTION, nfs.GREP, cmds[0]], function(msg) { var sub = msg._can
can.page.style(can, sub._output, html.MAX_HEIGHT, can.ConfHeight()/4), show(msg, msg._word = cmds[0])
can.page.ClassList.has(sub, sub._target, html.SELECT) || sub._legend.click()
can.onmotion.focus(can, msg._can._inputs["word"]._target)
}, true)
},
"last", function(cmds) { history.pop(), show(history.pop()) },
))) { return } can.run(msg._event, cmds, function(msg) { show(msg) }, true) }))
))) { return } can.run(msg, cmds, function(msg) { show(msg) }, true) }))
can.onimport.toolkit(can, {index: SEARCH}, function(sub) {
can.ui.search = sub, can.base.isFunc(cb) && cb(sub)
can.ui.search._show = show

View File

@ -134,7 +134,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.core.Value(item, "auto.cmd") && can.core.Timer300ms(function() {
var msg = sub.request({}, can.core.Value(item, "opts")); msg.Option(ice.MSG_HANDLE, ice.TRUE)
sub.Update(msg._event, [ctx.ACTION, can.core.Value(item, "auto.cmd")])
sub.Update(msg, [ctx.ACTION, can.core.Value(item, "auto.cmd")])
})
}, can._output, target)
},

View File

@ -7,10 +7,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
_location: function(can, msg, _arg) { location.href = _arg; return true },
_replace: function(can, msg, _arg) { location.replace(_arg); return true },
_history: function(can, msg) { history.back(); return true },
_confirm: function(can, msg, _arg) { can.user.confirm(_arg) && can.runAction(can.request({}, msg)._event, "confirm"); return true },
_confirm: function(can, msg, _arg) { can.user.confirm(_arg) && can.runAction(can.request({}, msg), "confirm"); return true },
_refresh: function(can, msg) {
can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() {
can.Update(can.request({}, {_count: parseInt(msg.Option("_count"))-1})._event)
can.Update(can.request({}, {_count: parseInt(msg.Option("_count"))-1}))
})
return true
},
@ -90,23 +90,21 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
})
Volcanos("onaction", {help: "交互操作", list: [
"刷新数据", "切换全屏", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", [
"其它", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据", "删除工具",
"其它", "刷新页面", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据", "删除工具",
],
], _init: function(can, msg, list, cb, target) {},
_engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input([], true))) },
"刷新数据": function(event, can) { can.Update({}, can.Input([], true)) },
"切换全屏": function(event, can) { var sub = can._outputs[can._outputs.length-1]
if (can.page.ClassList.neg(can, can._target, "Full")) {
sub._height_bak = sub.ConfHeight(), sub._width_bak = sub.ConfWidth()
var height = window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT
can.user.isMobile && (height -= 2*html.ACTION_HEIGHT)
if (can.page.ClassList.neg(can, can._target, "Full")) { sub._height_bak = sub.ConfHeight(), sub._width_bak = sub.ConfWidth()
var height = window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT; can.user.isMobile && (height -= 2*html.ACTION_HEIGHT)
can.page.style(can, can._output, html.HEIGHT, sub.ConfHeight(height), html.MIN_WIDTH, sub.ConfWidth(window.innerWidth))
can.core.CallFunc([sub, "onimport.layout"], {can: sub})
} else {
sub.ConfHeight(sub._height_bak), sub.ConfWidth(sub._width_bak)
can.core.CallFunc([sub, "onimport.layout"], {can: sub})
can.page.style(can, can._output, html.HEIGHT, "", html.MIN_WIDTH, "")
can.core.CallFunc([sub, "onimport.layout"], {can: sub})
}
},
"共享工具": function(event, can) { var meta = can.Conf()
@ -133,6 +131,9 @@ Volcanos("onaction", {help: "交互操作", list: [
},
"生成图片": function(event, can) { can.onmotion.toimage(event, can, can._name) },
"刷新页面": function(event, can) { var sub = can.core.Value(can._outputs, "-1")
can.core.CallFunc([sub, chat.ONIMPORT, "_init"], {can: sub, msg: sub._msg, cb: function(msg) {}, target: can._output})
},
"清空参数": function(event, can) { can.page.SelectArgs(can, can._option, "", function(item) { return item.value = "" }) },
"扩展参数": function(event, can) { can.onmotion.toggle(can, can._action) },
"复制数据": function(event, can) { can.user.copy(event, can, can.onexport.table(can)||can.onexport.board(can)) },
@ -146,10 +147,6 @@ Volcanos("onaction", {help: "交互操作", list: [
"保存参数": function(event, can) { can.search(event, ["River.ondetail.保存参数"]) },
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
"刷新页面": function(event, can) { var sub = can.core.Value(can._outputs, "-1"), msg = sub._msg
can.core.CallFunc([sub, chat.ONIMPORT, "_init"], {can: sub, msg: msg, list: msg.result||msg.append||[], cb: function(msg) {
}, target: can._output})
},
"摄像头": function(event, can) {
var constraints = {audio: false, video: {width: 200, height: 200}}
@ -177,10 +174,12 @@ Volcanos("onaction", {help: "交互操作", list: [
})
},
actions: function(event, can) { can.onmotion.toggle(can, can._action) },
clear: function(event, can, name) { can.onmotion.clear(can, can._output) },
close: function(event, can) { can.page.Remove(can, can._target) },
upload: function(event, can) { can.user.upload(event, can) },
actions: function(event, can) { can.onmotion.toggle(can, can._action) },
next: function(event, can) { can.Update(event, [ctx.ACTION, mdb.NEXT, can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""]) },
prev: function(event, can) { can.Update(event, [ctx.ACTION, mdb.PREV, can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""]) },
change: function(event, can, name, value, cb) {
return can.page.SelectArgs(can, can._option, "", function(input) {
if (input.name == name && value != input.value) { input.value = value
@ -190,36 +189,19 @@ Volcanos("onaction", {help: "交互操作", list: [
})
},
next: function(event, can) {
can.Update(event, [ctx.ACTION, "next", can.Status("total")||0, can.Option("limit")||can.Action("limit")||"", can.Option("offend")||can.Action("offend")||""])
},
prev: function(event, can) {
can.Update(event, [ctx.ACTION, "prev", can.Status("total")||0, can.Option("limit")||can.Action("limit")||"", can.Option("offend")||can.Action("offend")||""])
},
getClipboardData: function(event, can, button) {
function add(text) {
can.run(event, can.base.Simple(ctx.ACTION, button, can.base.ParseJSON(text)), function(msg) {
can.user.toastSuccess(can), can.Update()
}, true)
}
if (navigator.clipboard) {
navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) })
} else {
can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(ev, button, data, list, args) { add(list[0]) })
}
},
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
getLocation: function(event, can, button) {
can.user.agent.getLocation(function(data) { can.request(event, data)
can.user.input(event, can, [mdb.TYPE, mdb.NAME, mdb.TEXT, "latitude", "longitude"], function(ev, bu, data, list, args) {
can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) {
can.user.toastSuccess(can), can.Update()
}, true)
can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) { can.user.toastSuccess(can, button) }, true)
})
})
},
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
getClipboardData: function(event, can, button) {
function add(text) { can.run(event, can.base.Simple(ctx.ACTION, button, can.base.ParseJSON(text)), function(msg) { can.user.toastSuccess(can, button) }, true) }
navigator.clipboard? navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) }):
can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(ev, button, data, list, args) { add(list[0]) })
},
})
Volcanos("onexport", {help: "导出数据", list: [],
table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return }
@ -228,7 +210,5 @@ Volcanos("onexport", {help: "导出数据", list: [],
})
return res.join(ice.NL)
},
board: function(can) { var msg = can._msg
return msg.Result()
},
board: function(can) { var msg = can._msg; return msg.Result() },
})

View File

@ -1,32 +1,25 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action)
var cbs = can.onimport[can._args["style"]]; if (can.base.isFunc(cbs)) {
can.page.ClassList.add(can, target, can._args["style"])
var cbs = can.onimport[can._args[ctx.STYLE]]; if (can.base.isFunc(cbs)) {
can.page.ClassList.add(can, target, can._args[ctx.STYLE])
return cbs(can, msg, target)
}
can.onmotion.clear(can, target)
can.onappend.table(can, msg, null, target)
can.onappend.board(can, msg, target)
can.onmotion.story.auto(can, target)
can.base.isFunc(cb) && cb(msg)
},
_process: function(can, msg) {
msg.Option(ice.MSG_TOAST) && can.user.toast(can, msg.Option(ice.MSG_TOAST))
return can.core.CallFunc([can.onimport, msg.Option(ice.MSG_PROCESS)], [can, msg])
},
card: function(can, msg, target) {
can.page.Appends(can, target, msg.Table(function(value) {
return {view: "item", list: [
{view: ["title", "div", value.name]},
{view: ["content", "div", value.text]},
{view: "operate", inner: value.action, onclick: function(event) {
can.request(event, value)
can.run(event, [ctx.ACTION, event.target.name])
return {view: html.ITEM, list: [
{view: [wiki.TITLE, html.DIV, value.name]},
{view: [wiki.CONTENT, html.DIV, value.text]},
{view: html.ACTION, inner: value.action, onclick: function(event) {
can.run(can.request(event, value), [ctx.ACTION, event.target.name])
}},
]}
}))
},
})
Volcanos("onaction", {help: "控件交互", list: []})
Volcanos("onexport", {help: "导出数据", list: []})

View File

@ -125,6 +125,7 @@ var wiki = {
TITLE: "title", BRIEF: "brief", REFER: "refer", SPARK: "spark",
ORDER: "order", TABLE: "table", CHART: "chart", IMAGE: "image", VIDEO: "video",
FIELD: "field", SHELL: "shell", LOCAL: "local", PARSE: "parse",
CONTENT: "content",
NAVMENU: "navmenu", PREMENU: "premenu",
@ -225,7 +226,7 @@ var html = {
OPACITY: "opacity",
STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", MONOSPACE: "monospace",
SCROLL: "scroll", HEIGHT: "height", WIDTH: "width", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom",
MIN_HEIGHT: "min-height", MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y",
MIN_HEIGHT: "min-height", MAX_HEIGHT: "max-height", MAX_WIDTH: "max-width", MIN_WIDTH: "min-width", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y",
PLUGIN_MARGIN: 10, ACTION_HEIGHT: 29, ACTION_MARGIN: 200,
TOGGLE: "toggle",
@ -278,13 +279,13 @@ function shy(help, meta, list, cb) {
var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: {}, pack: {}, libs: [], cache: {}}, function(name, can, libs, cb) {
var meta = arguments.callee.meta, list = arguments.callee.list
if (typeof name == lang.OBJECT) { var Config = name; Config.plugin = Config.plugin||chat.plugin_list
Config.panels = Config.panels||chat.panel_list, Config.main = Config.main||{name: "Header"}
Config.panels = Config.panels||chat.panel_list
meta.libs = Config.libs||chat.libs, meta.iceberg = Config.iceberg||meta.iceberg
// 预加载
libs = []; for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i]
panel && (libs = libs.concat(panel.list = panel.list||["/panel/"+panel.name+".css", "/panel/"+panel.name+".js"]))
}; libs = libs.concat(Config.plugin, Config.main.list||[])
}; libs = libs.concat(Config.plugin)
// 根模块
_can_name = "", name = Config.name||"chat", cb = can||function(can) {
@ -330,7 +331,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
function next() { can._load(name, each), can.require(libs.slice(1), cb, each) }
meta.cache[name]? next(): (_can_path = libs[0], meta._load(name, next))
},
request: function(event) { event = event||{}
request: function(event) { event = event||{}, event = event._event||event
var msg = event._msg||can.misc.Message(event, can); event._msg = msg
function set(key, value) { msg.Option(key) || value == "" || msg.Option(key, value) }
@ -345,10 +346,10 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
},
actions: function(event, button) { can.run(event, [ctx.ACTION, button], null, true) },
runAction: function(event, action, args, cb) { can.request(event, {_handle: ice.TRUE}, can.Option())
runAction: function(event, action, args, cb, silent) { can.request(event, {_handle: ice.TRUE}, can.Option())
can.run(event, can.misc.concat(can, [ctx.ACTION, action], args), cb||function(msg) {
can.user.toastSuccess(can, action)
}, true)
}, silent)
},
search: function(event, cmds, cb) {
@ -359,11 +360,11 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
},
get: function(name, key, cb) { return can.search({}, [can.core.Keys(name, chat.ONEXPORT, key)], cb) },
set: function(name, key, value) { var msg = can.request({}); msg.Option(key, value)
return can.search(msg._event, [[name, chat.ONIMPORT, key]])
return can.search(msg, [[name, chat.ONIMPORT, key]])
},
setHeaderMenu: function(list, cb) { can._menu && can.page.Remove(can, can._menu)
var msg = can.request({}, {trans: can.onaction._trans})
return can._menu = can.search(msg._event, [["Header", chat.ONIMPORT, "menu"], can._name].concat(list), cb)
return can._menu = can.search(msg, [["Header", chat.ONIMPORT, "menu"], can._name].concat(list), cb)
},
setHeader: function(key, value) { return can.set("Header", key, value) },
getHeader: function(key, cb) { return can.get("Header", key, cb) },

View File

@ -38,7 +38,7 @@ Volcanos({
var msg = can.request({}, {tid: sender.tab.id, url: sender.url})
can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) })
msg.__daemon = can.core.Keys(html.CHROME, sender.tab.id)
can.run(msg._event, req.detail||[], cb)
can.run(msg, req.detail||[], cb)
return true
})
chrome.history.onVisited.addListener(function(item) {