From a301b690addfc84fef33a704d0f4836e8083e3a7 Mon Sep 17 00:00:00 2001 From: shaoying Date: Fri, 15 Oct 2021 14:46:52 +0800 Subject: [PATCH] opt proto --- frame.js | 38 +++++++++------------ lib/base.js | 3 +- lib/core.js | 5 +-- page/index.js | 3 +- panel/action.js | 60 +++++++++++++++------------------- panel/footer.js | 18 +++++----- panel/river.js | 4 +-- proto.js | 87 ++++++++++++++++++++++++------------------------- 8 files changed, 100 insertions(+), 118 deletions(-) diff --git a/frame.js b/frame.js index a6188fa3..7ae051e7 100644 --- a/frame.js +++ b/frame.js @@ -1,34 +1,31 @@ -var _can_name = "/frame.js" +_can_name = "/frame.js" Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) { - can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds || [] + can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[] return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) - } + }, can.river = can.Conf(chat.RIVER)||{} can.core.Next(list, function(item, next) { item.type = "panel" can.onappend._init(can, item, item.list, function(panel) { - panel.run = function(event, cmds, cb) { var msg = panel.request(event); cmds = cmds || [] + panel.run = function(event, cmds, cb) { var msg = panel.request(event); cmds = cmds||[] return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, panel, cmds, cb) - }, can[item.name] = panel + }, can[item.name] = panel, panel._root = can, panel._trans = panel.onaction._trans can.core.Item(panel.onaction, function(key, item) { if (key.indexOf("on") == 0) { can.onengine.listen(can, key, function(msg) { can.core.CallFunc(item, {can: panel, msg: msg}) }) - } }), panel.const(panel.onaction._const||[]), panel._trans = panel.onaction._trans - panel.onaction._init(panel, item, item.list, next, panel._target) + } }), panel.onaction._init(panel, item, item.list, next, panel._target) + can.onmotion.float.auto(can, panel._output, "carte", "input") }, target) - }, function() { can.onlayout.topic(can) - can.misc.Log(can.user.title(), cli.RUN, can) - can.base.Copy(can.onengine.river, can.Conf(chat.RIVER)) + }, function() { can.misc.Log(can.user.title(), cli.RUN, can) can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeypop._init(can, target) - can.onengine.signal(can, "onmain", can.request()) + can.onlayout.topic(can), can.onengine.signal(can, "onmain", can.request()) can.base.isFunc(cb) && cb() }) }, _search: function(event, can, msg, panel, cmds, cb) { var sub, mod = can, fun = can, key = ""; can.core.List(cmds[1].split("."), function(value) { fun && (sub = mod, mod = fun, fun = mod[value], key = value) - }); if (!sub || !mod || !fun) { - // can.misc.narn("not found", cmds) + }); if (!sub || !mod || !fun) { can.misc.warn("not found", cmds) return can.base.isFunc(cb) && cb(msg.Echo("warn: ", "not found: ", cmds)) } @@ -41,6 +38,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, _engine: function(event, can, msg, panel, cmds, cb) { return false }, _remote: function(event, can, msg, panel, cmds, cb) { if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return } + can.search({follow: panel._follow, msg, cmds}, ["Footer.onimport.ncmd"]) var key = panel._name+"."+cmds.join(",") if (can.user.isLocalFile) { var msg = can.request(event); msg.Clear("append") @@ -48,11 +46,8 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, return can.base.isFunc(cb) && cb(msg) } - can.search(can.request({}, { - time: can.base.Time(null, "%H:%M:%S"), follow: panel._follow, msg: msg, commands: cmds, - })._event, ["Footer.onimport.ncmd"]) - - can.misc.Run(event, can, {names: msg.Option("_names")||panel._names||((can.Conf("iceberg")||"/chat/")+panel._name), daemon: can.ondaemon._list[0]+"."+msg._daemon}, cmds, function(msg) { + var names = msg.Option("_names")||panel._names||((can.Conf("iceberg")||"/chat/")+panel._name) + can.misc.Run(event, can, {names: names, daemon: can.core.Keys(can.ondaemon._list[0], msg._daemon)}, cmds, function(msg) { Volcanos.meta.pack[key] = msg, delete(msg._handle), delete(msg._toast) if (msg.result && msg.result[0] == "warn: ") { can.user.toast(can, msg.Result(), "", 10000); return } can.base.isFunc(cb) && cb(msg) @@ -62,15 +57,12 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, listen: shy("监听事件", {}, [], function(can, name, cb) { arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb) }), - signal: shy("触发事件", function(can, name, msg) { msg = msg || can.request() + signal: shy("触发事件", function(can, name, msg) { msg = msg||can.request() can.misc.Log("signal", name, msg) can.core.List(can.onengine.listen.meta[name], function(cb) { can.core.CallFunc(cb, {msg: msg}) }) }), - river: {}, _merge: function(can, sub) { - for (var k in sub[chat.RIVER]) { can.onengine[chat.RIVER] = sub[chat.RIVER]; break } - }, }) Volcanos("ondaemon", {help: "推荐引擎", list: [], _init: function(can, name) { if (can.user.isLocalFile) { return } can.misc.WSS(can, {type: "chrome", name: can.user.Search(can, "daemon")||name||""}, function(event, msg, cmd, arg) { if (!msg) { return } @@ -1082,4 +1074,4 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio if (target._keys.length == 0) { event.stopPropagation(), event.preventDefault() } }, }) -var _can_name = "" +_can_name = "" diff --git a/lib/base.js b/lib/base.js index 4281892a..bf8b95b2 100644 --- a/lib/base.js +++ b/lib/base.js @@ -142,9 +142,8 @@ Volcanos("base", {help: "数据类型", return now }, Time: function(time, fmt) { var now = this.Date(time) - var list = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"] var list = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] - fmt = fmt || "%y-%m-%d %H:%M:%S" + fmt = fmt||"%H:%M:%S" fmt = fmt.replace("%y", now.getFullYear()) fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2)) fmt = fmt.replace("%d", this.Number(now.getDate(), 2)) diff --git a/lib/core.js b/lib/core.js index 0102387c..96b9f263 100644 --- a/lib/core.js +++ b/lib/core.js @@ -78,7 +78,7 @@ Volcanos("core", {help: "数据结构", begin > 0 && (s? push({type: "string", text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))) return res }), - CallFunc: shy("调用器", function(func, args, mod) { args = args || {} + CallFunc: shy("调用器", function(func, args, mod) { args = args||{} var can = args["can"]||args[0], msg = args["msg"]||args[1], cmds = args["cmds"]||[] // 查找调用 @@ -89,7 +89,8 @@ Volcanos("core", {help: "数据结构", // 解析参数 var list = [], echo = false, cb = args["cb"] this.List(func.toString().split(")")[0].split("(")[1].split(","), function(item, index) { item = item.trim(); if (item == "") { return } - var arg = args[item] || msg&&msg.Option&&msg.Option(item) || can&&can.Conf&&can.Conf(item) || cmds[index] || args[index] || null + var arg = msg&&msg.Option&&msg.Option(item) || event&&!(event instanceof Event)&&event[item] || + args[item] || can&&can.Conf&&can.Conf(item) || args[index] || cmds[index] || null if (item == "cb") { echo = true } list.push(arg) }) diff --git a/page/index.js b/page/index.js index f0ca6d3f..b1e1a3fd 100644 --- a/page/index.js +++ b/page/index.js @@ -1,5 +1,4 @@ -Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js", - libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panels: [ +Volcanos({name: "chat", panels: [ {name: "Header", help: "标题栏", pos: "head", state: ["time", "username", "avatar"]}, {name: "Search", help: "搜索框", pos: "auto"}, {name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]}, diff --git a/panel/action.js b/panel/action.js index df6ca3b1..28a66ce8 100644 --- a/panel/action.js +++ b/panel/action.js @@ -1,16 +1,16 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) { - var river = can.Conf(can._RIVER), storm = can.Conf(can._STORM) + var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM) can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) { - item.width = parseInt(can.Conf(can._WIDTH))-40, item.height = parseInt(can.Conf(can._HEIGHT))-40 + item.width = parseInt(can.Conf(chat.WIDTH))-40, item.height = parseInt(can.Conf(chat.HEIGHT))-40 item.feature = can.base.Obj(item.feature||item.meta) item.inputs = can.base.Obj(item.inputs||item.list) - item.type = can._PLUGIN + item.type = mdb.PLUGIN can.onappend.plugin(can, item, function(sub, meta) { can.onimport._plugin(can, river, storm, sub, meta), next() }) }, function() { - can.onaction.layout(can, can.user.Search(can, can._LAYOUT)||can.Conf(can._LAYOUT)) + can.onaction.layout(can, can.user.Search(can, chat.LAYOUT)||can.Conf(chat.LAYOUT)) !can.user.isMobile && can.onimport._menu(can, msg) }) @@ -40,7 +40,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) return } can._menu && can.page.Remove(can, can._menu) - can._menu = can.search({}, ["Header.onimport.menu", can._ACTION].concat( + can._menu = can.search({}, ["Header.onimport.menu", ctx.ACTION].concat( can.base.Obj(msg.Option("menus"), [ // ["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"], ["help", "tutor", "manual", "service", "devops", "refer"], @@ -55,8 +55,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) }, _share: function(can, share) { share && can.run({}, ["_share", share], function(msg) { - can.user.topic(can, can.user.Search(can, can._TOPIC)||msg.Option(can._TOPIC)||"white") - can.user.title(can.user.Search(can, can._TITLE)||msg.Option(can._TITLE)) + can.user.topic(can, can.user.Search(can, chat.TOPIC)||msg.Option(chat.TOPIC)||"white") + can.user.title(can.user.Search(can, chat.TITLE)||msg.Option(chat.TITLE)) can.onaction.layout(can, "auto") if (msg["index"].length == 1) { can.user.mod.isCmd = true @@ -69,18 +69,18 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) } else { can.Conf({width: window.innerWidth, height: window.innerHeight}) } - can.Conf(can._RIVER, "_share"), can.Conf(can._STORM, share) + can.Conf(chat.RIVER, "_share"), can.Conf(chat.STORM, share) can.onimport._init(can, msg) }) }, }) Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, page, msg, can, cmds, cb) { - var list = can.onengine._river||can.onengine.river + var list = can._root.river var river = list[cmds[0]] var storm = river && river.storm[cmds[1]] if (!storm || cmds.length != 2) { return false } - if (storm.index) { cmds = [can._ACTION, ctx.COMMAND].concat(storm.index) + if (storm.index) { cmds = [ctx.ACTION, ctx.COMMAND].concat(storm.index) can.run(event, cmds, cb) } else { can.core.List(storm.action, function(value) { @@ -101,12 +101,6 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, } can.base.isFunc(cb) && cb() }, - _const: [ - "output", "fields", - "action", "share", "river", "storm", - "title", "topic", "layout", "width", "height", "top", "left", "scroll", - "plugin", - ], onmain: function(can, msg) { var cmds = location.pathname.split("/").slice(1) if (cmds[0] == cli.CMD) { @@ -119,16 +113,16 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, }, onresize: function(can, msg, width, height) { can.Conf({width: width, height: height}) }, onsearch: function(can, msg, word) { - if (word[0] == "*" || word[0] == can._PLUGIN) { can.onexport.plugin(can, msg, word) } + if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) } }, onstorm_select: function(can, msg, river, storm) { can.onlayout._init(can) - function key(name) { return can.core.Keys(can.Conf(can._RIVER), can.Conf(can._STORM), name) } - can.page.Cache(key(can._ACTION), can._action, can._output.scrollTop+1) - can.page.Cache(key(can._OUTPUT), can._output, can._output.scrollTop+1) + function key(name) { return can.core.Keys(can.Conf(chat.RIVER), can.Conf(chat.STORM), name) } + can.page.Cache(key(ctx.ACTION), can._action, can._output.scrollTop+1) + can.page.Cache(key(chat.OUTPUT), can._output, can._output.scrollTop+1) - can.Conf(can._RIVER, river), can.Conf(can._STORM, storm) // 转场 - var position = can.page.Cache(key(can._ACTION), can._action) - var position = can.page.Cache(key(can._OUTPUT), can._output) + can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) // 转场 + var position = can.page.Cache(key(ctx.ACTION), can._action) + var position = can.page.Cache(key(chat.OUTPUT), can._output) if (position) { can._output.scrollTo(0, position-1); return } can.run({}, [river, storm], function(msg) { @@ -149,7 +143,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, "自由布局": "free", } - layout = trans[layout]||layout, can.Conf(can._LAYOUT, layout) + layout = trans[layout]||layout, can.Conf(chat.LAYOUT, layout) can.page.Modify(can, can._action, {className: "action "+layout}) can.page.Modify(can, can._output, {className: "output "+layout}) @@ -176,23 +170,23 @@ Volcanos("onexport", {help: "导出数据", list: [], }) }, size: function(can, msg) { - msg.Option(can._TOP, can._target.offsetTop) - msg.Option(can._LEFT, can._target.offsetLeft) - msg.Option(can._WIDTH, can._target.offsetWidth) - msg.Option(can._HEIGHT, can._target.offsetHeight) - msg.Option(can._SCROLL, can.user.isMobile? can._target.parentNode.parentNode.scrollTop: can._output.scrollTop) + msg.Option(chat.TOP, can._target.offsetTop) + msg.Option(chat.LEFT, can._target.offsetLeft) + msg.Option(chat.WIDTH, can._target.offsetWidth) + msg.Option(chat.HEIGHT, can._target.offsetHeight) + msg.Option(chat.SCROLL, can.user.isMobile? can._target.parentNode.parentNode.scrollTop: can._output.scrollTop) }, - layout: function(can, msg) { return can.Conf(can._LAYOUT) }, + layout: function(can, msg) { return can.Conf(chat.LAYOUT) }, plugin: function(can, msg, word) { - var fields = (msg.Option(can._FIELDS)||"ctx,cmd,type,name,text").split(",") + var fields = (msg.Option(ice.MSG_FIELDS)||"ctx,cmd,type,name,text").split(",") can.page.Select(can, can._output, "fieldset.plugin>legend", function(item) { if (item.innerHTML.indexOf(word[1]) == -1) { return } var meta = item.parentNode.Meta var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" }) - var data = {ctx: "web.chat", cmd: can._ACTION, - type: can._PLUGIN, name: item.innerHTML, text: shy("跳转", function(event) { + var data = {ctx: "web.chat", cmd: ctx.ACTION, + type: mdb.PLUGIN, name: item.innerHTML, text: shy("跳转", function(event) { var input = can.page.Select(can, item.parentNode, "input.args")[0] input && input.focus() }), argument: JSON.stringify(list), diff --git a/panel/footer.js b/panel/footer.js index 5a884229..547c97df 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -48,8 +48,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.page.Modify(can, can.toast, [time.split(" ").pop(), title, content].join(" ")) can._toast.Push({time: time, fileline: fileline, title: title, content: content}) }, - ncmd: function(can, msg, time, follow, commands) { const NCMD = "ncmd"; can._cmds = can._cmds || can.request() - can._cmds.Push({time: time, follow: follow, commands: commands}) + ncmd: function(can, msg, follow, cmds) { const NCMD = "ncmd"; can._cmds = can._cmds || can.request() + can._cmds.Push({time: can.base.Time(), follow: follow, cmds: cmds}) can.page.Select(can, can._output, can.core.Keys(html.SPAN, NCMD), function(item) { item.innerHTML = can.Conf(NCMD, parseInt(can.Conf(NCMD)||"0")+1+"")+"" }) @@ -64,18 +64,18 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, _cmd: function(can) { return can.onappend.float(can, can._cmds, function(value, key, index, line, list) { - var commands = can.base.Obj(line.commands); switch (line.follow) { - case "chat.Action": commands = commands.slice(2); break - case "chat.Footer": commands = commands.slice(2); break + var cmds = can.base.Obj(line.cmds); switch (line.follow) { + case "chat.Action": cmds = cmds.slice(2); break + case "chat.Footer": cmds = cmds.slice(2); break } - switch (commands[0]) { - case "web.wiki.word": commands = commands.slice(5); break + switch (cmds[0]) { + case "web.wiki.word": cmds = cmds.slice(5); break } can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) { - can.onappend.plugin(can, {index: commands[0], args: commands.slice(1), width: width, height: height-100}, function(sub) { + can.onappend.plugin(can, {index: cmds[0], args: cmds.slice(1), width: width, height: height-100}, function(sub) { sub.run = function(event, cmds, cb) { - can.run(event, can.misc.Concat([ctx.ACTION, cli.RUN, commands[0]], cmds), cb) + can.run(event, can.misc.Concat([ctx.ACTION, cli.RUN, cmds[0]], cmds), cb) } can.page.Modify(can, sub._output, {style: {"max-width": width}}) diff --git a/panel/river.js b/panel/river.js index 50a8bbbd..2ebdd45f 100644 --- a/panel/river.js +++ b/panel/river.js @@ -52,7 +52,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }, }) Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) { - var list = can.onengine._river||can.onengine.river + var list = can._root.river cmds.length == 0 && can.core.Item(list, function(key, value) { msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表 }); if (cmds.length != 1 && cmds[1] != chat.TOOL) { return false } @@ -292,7 +292,7 @@ Volcanos("onexport", {help: "导出数据", list: [], width: function(can) { return can._target.offsetWidth }, storm: function(can, msg, word) { var fields = (msg.Option(ice.MSG_FIELDS)||"ctx,cmd,type,name,text").split(",") - can.core.Item(can.onengine.river, function(river, value) { + can.core.Item(can._root.river, function(river, value) { can.core.Item(value.storm, function(storm, item) { if (word[1] != "" && word[1] != storm && word[1] != item.name) { return } diff --git a/proto.js b/proto.js index 9b74dcf1..d495fa17 100644 --- a/proto.js +++ b/proto.js @@ -6,6 +6,7 @@ const kit = { MDB_TYPE: "type", MDB_NAME: "name", MDB_TEXT: "text", + MDB_HELP: "help", MDB_LINK: "link", MDB_VALUE: "value", @@ -49,8 +50,8 @@ const web = { const aaa = { USERNAME: "username", USERNICK: "usernick", - AVATAR: "avatar", BACKGROUND: "background", + AVATAR: "avatar", LOGIN: "login", LOGOUT: "logout", @@ -58,9 +59,9 @@ const aaa = { } const mdb = { CREATE: "create", + REMOVE: "remove", INSERT: "insert", MODIFY: "modify", - REMOVE: "remove", PLUGIN: "plugin", HASH: "hash", @@ -105,6 +106,14 @@ const chat = { TOOL: "tool", NODE: "node", + LAYOUT: "layout", + OUTPUT: "output", + SCROLL: "scroll", + HEIGHT: "height", + WIDTH: "width", + TOP: "top", + LEFT: "left", + HEADER: "header", TOPIC: "topic", TITLE: "title", @@ -147,8 +156,8 @@ const html = { } function shy(help, meta, list, cb) { - var index = 0, args = arguments; function next(check) { - if (index < args.length && (!check || check == typeof args[index])) { + var index = 0, args = arguments; function next(type) { + if (index < args.length && (!type || type == typeof args[index])) { return args[index++] } } @@ -159,12 +168,10 @@ function shy(help, meta, list, cb) { cb.list = next("object") || [] return cb }; var _can_name = "" -var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs: [], cache: {}}, [], function(name, can, libs, 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 == "object") { var Config = name; _can_name = "" - meta.libs = Config.libs, meta.volcano = Config.volcano - Config.panels = Config.panels||[] - Config.main = Config.main||{} + if (typeof name == "object") { var Config = name; Config.panels = Config.panels||[], Config.main = Config.main||{} + meta.libs = ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"] // 预加载 var Preload = (Config.preload||[]).concat(Config.main.list) @@ -173,16 +180,14 @@ var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs: }; Preload = Preload.concat(Config.plugin) // 根模块 - name = Config.name, can = {_follow: Config.name, _target: document.body} - libs = Preload.concat(Config.libs, Config.volcano), cb = function(can) { - can.onengine._init(can, can.Conf(Config), Config.panels, function(msg) { - can.base.isFunc(Config._init) && Config._init(can) - }, can._target) - } + name = Config.name, can = {_follow: Config.name, _target: Config.target||document.body} + libs = Preload.concat(Config.libs||meta.libs, Config.volcano||meta.volcano), cb = function(can) { + can.onengine._init(can, can.Conf(Config), Config.panels, Config._init, can._target) + }, _can_name = "", can._root = can } - var proto = {__proto__: meta, _name: name, _load: function(name, cb) { // 加载缓存 - var cache = meta.cache[name] || []; for (list.reverse(); list.length > 0; list) { + can = can||{}, can.__proto__ = {__proto__: meta, _name: name, _load: function(name, cb) { // 加载缓存 + var cache = meta.cache[name]||[]; for (list.reverse(); list.length > 0; list) { var sub = list.pop(); sub != can && cache.push(sub) }; meta.cache[name] = cache @@ -207,37 +212,29 @@ var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs: function next() { can._load(libs[0], each), can.require(libs.slice(1), cb, each) } meta.cache[libs[0]]? next(): meta._load(libs[0], next) }, - request: function(event, option) { event = event || {} - event._msg = event._msg || can.misc.Message(event, can) + request: function(event, option) { event = event||{} + var msg = event._msg||can.misc.Message(event, can); event._msg = msg + function set(key, value) { msg[key] == undefined && msg.Option(key, value) } - function set(key, value) { - if (event._msg[key] == undefined) { - event._msg.Option(key, value) - } - } can.core.List(arguments, function(option, index) { if (index == 0) { return } can.base.isFunc(option.Option)? can.core.List(option.Option(), function(key) { set(key, option.Option(key)) }): can.core.Item(can.base.isFunc(option)? option(): option, set) - - }); return event._msg + }); return msg }, - get: function(name, key) { var event = {} - return can.search(event, [name+".onexport."+key]) - }, - set: function(name, key, value) { var event = {} - var msg = can.request(event); msg.Option(key, value) - return can.search(event, [name+".onimport."+key]) + set: function(name, key, value) { + var msg = can.request({}); msg.Option(key, value) + return can.search(msg._event, [name+".onimport."+key]) }, + get: function(name, key) { return can.search({}, [name+".onexport."+key]) }, search: function(event, cmds, cb) { return can.run && can.run(event, ["_search"].concat(cmds), cb, true) }, - const: function(list) { can.core.List(typeof list == "object"? list: arguments, function(v) { can["_"+v.toUpperCase()] = v }) }, Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {}, - }; can = can || {}; can.__proto__ = proto + } - if (_can_name && location.search.indexOf("debug=true") == -1) { // 加入缓存 - meta.cache[_can_name] = meta.cache[_can_name] || [] + if (_can_name) { // 加入缓存 + meta.cache[_can_name] = meta.cache[_can_name]||[] meta.cache[_can_name].push(can) } else { // 加入队列 list.push(can) @@ -249,20 +246,20 @@ Volcanos.meta._load = function(url, cb) { case "css": var item = document.createElement(kit.MDB_LINK) item.rel = "stylesheet", item.type = "text/css" - item.href = url; item.onload = cb - document.head.appendChild(item) - return item + item.onload = cb, item.href = url + break case "js": var item = document.createElement(ssh.SCRIPT) - item.src = url, item.onload = cb - document.body.appendChild(item) - return item + item.onload = cb, item.src = url + break + default: return } + return document.body.appendChild(item), item } function cmd(tool) { - Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js", preload: [], - libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], - panels: [{name: "cmd", help: "工作台", pos: "main", tool: tool}], main: {name: "cmd", list: []}, plugin: [ + Volcanos({name: "chat", panels: [ + {name: "cmd", help: "工作台", pos: "main", tool: tool}, + ], main: {name: "cmd", list: []}, plugin: [ "/plugin/state.js", "/plugin/input.js", "/plugin/table.js",