1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00
This commit is contained in:
harveyshao 2022-11-12 00:33:42 +08:00
parent 6d8459e767
commit a2aabed8c0
36 changed files with 102 additions and 96 deletions

View File

@ -34,7 +34,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+panel._name) var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+panel._name)
can.misc.Run(event, can, {names: names, daemon: msg._daemon}, cmds, function(msg) { toast && toast.close(), toast = true can.misc.Run(event, can, {names: names, daemon: msg._daemon}, cmds, function(msg) { toast && toast.close(), toast = true
can.base.isFunc(cb) && cb(msg), Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(ice.FS))] = msg can.base.isFunc(cb) && cb(msg)//, Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(ice.FS))] = msg
}) })
}, },
_static: function(event, can, msg, panel, cmds, cb) { if (!can.user.isLocalFile) { return false } _static: function(event, can, msg, panel, cmds, cb) { if (!can.user.isLocalFile) { return false }
@ -54,7 +54,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
if (can.base.isUndefined(name) || !can.base.isString(name) || name.indexOf("can.") == -1) { return } if (can.base.isUndefined(name) || !can.base.isString(name) || name.indexOf("can.") == -1) { return }
if (can.base.isUndefined(command)) { return arguments.callee.meta[can.base.trimPrefix(name, "can.")] } if (can.base.isUndefined(command)) { return arguments.callee.meta[can.base.trimPrefix(name, "can.")] }
var type = html.TEXT; command.list = can.core.List(command.list, function(item) { return can.base.isString(item) && (item = can.core.SplitInput(item, type)), type = item.type, item }) var type = html.TEXT; command.list = can.core.List(command.list, function(item) { return can.base.isString(item) && (item = can.core.SplitInput(item, type)), type = item.type, item })
command.can = can, command.name = name, arguments.callee.meta[can.base.trimPrefix(name, "can.")] = command command.can = can, command.meta.name = name, arguments.callee.meta[can.base.trimPrefix(name, "can.")] = command
}), }),
listen: shy(function(can, name, cb) { arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb) }), listen: shy(function(can, name, cb) { arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb) }),
signal: function(can, name, msg) { msg = msg||can.request(); var _msg = name == chat.ONREMOTE? msg.Option("_msg"): msg signal: function(can, name, msg) { msg = msg||can.request(); var _msg = name == chat.ONREMOTE? msg.Option("_msg"): msg
@ -162,6 +162,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
}, },
_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 meta.feature[cmds[1]](can, msg, cmds.slice(2)) }
return can.user.input(event, can, meta.feature[cmds[1]], function(args) { can.Update(can.request(event, {_handle: ice.TRUE}, can.Option()), cmds.slice(0, 2).concat(args)) }) return can.user.input(event, can, meta.feature[cmds[1]], function(args) { can.Update(can.request(event, {_handle: ice.TRUE}, can.Option()), cmds.slice(0, 2).concat(args)) })
} }
return can.onengine._plugin(event, can, msg, can, cmds, cb) || can.run(event, cmds, cb||function(msg) { if (silent) { return } return can.onengine._plugin(event, can, msg, can, cmds, cb) || can.run(event, cmds, cb||function(msg) { if (silent) { return }
@ -249,10 +250,10 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), []), cb, target) }, tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), []), cb, target) },
_plugin: function(can, value, meta, cb, target, field) { can.base.Copy(meta, value, true) _plugin: function(can, value, meta, cb, target, field) { can.base.Copy(meta, value, true)
meta.name = meta.name||value&&value.meta&&value.meta.name||""
meta.type = meta.type||chat.STORY, meta.height = meta.height||can.ConfHeight(), meta.width = meta.width||can.ConfWidth() meta.type = meta.type||chat.STORY, meta.height = meta.height||can.ConfHeight(), meta.width = meta.width||can.ConfWidth()
meta.args = can.base.getValid(can.base.Obj(meta.args), can.base.Obj(meta.arg), can.base.Obj(value.args), can.base.Obj(value.arg))||[] meta.args = can.base.getValid(can.base.Obj(meta.args), can.base.Obj(meta.arg), can.base.Obj(value.args), can.base.Obj(value.arg))||[]
meta.inputs = can.base.getValid(meta.inputs, can.base.Obj(value.list))||[], meta.feature = can.base.getValid(meta.feature, can.base.Obj(value.meta))||{} meta.inputs = can.base.getValid(meta.inputs, can.base.Obj(value.list))||[], meta.feature = can.base.getValid(meta.feature, can.base.Obj(value.meta))||{}
if (can.misc.Debug(can, chat.PLUGIN, meta.index, meta.args, meta)) { debugger }
can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) { can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) {
sub.run = function(event, cmds, cb) { can.runActionCommand(event, sub._index, cmds, cb) } sub.run = function(event, cmds, cb) { can.runActionCommand(event, sub._index, cmds, cb) }
sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip) sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip)
@ -261,7 +262,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN
var res = {}; function _cb(sub, meta, skip) { kit.proto(res, sub), cb && cb(sub, meta, skip) } if (can.misc.Debug(can, chat.PLUGIN, meta.index, meta.args, meta)) { debugger } var res = {}; function _cb(sub, meta, skip) { kit.proto(res, sub), cb && cb(sub, meta, skip) } if (can.misc.Debug(can, chat.PLUGIN, meta.index, meta.args, meta)) { debugger }
if (meta.inputs && meta.inputs.length > 0 || meta.meta) { can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, _cb, target, field); return res } if (meta.inputs && meta.inputs.length > 0 || meta.meta) { can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, _cb, target, field); return res }
var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, _cb, target, field); return res } var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) {
_cb(sub, meta, skip), can.onmotion.delay(can, function() { value.meta && value.meta._init && value.meta._init(sub, meta) })
}, target, field); return res }
can.runAction(can.request({}, meta), ctx.COMMAND, [meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) })}); return res can.runAction(can.request({}, meta), ctx.COMMAND, [meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) })}); return res
}, },
_float: function(can, index, args) { _float: function(can, index, args) {

View File

@ -48,6 +48,7 @@ Volcanos("core", {
} return begin >= 0 && (s? push({type: lang.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res } return begin >= 0 && (s? push({type: lang.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res
}, },
SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item } type = type||html.TEXT; switch (item) { SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item } type = type||html.TEXT; switch (item) {
case ice.RUN: return {type: type = html.BUTTON, name: item}
case mdb.LIST: return {type: type = html.BUTTON, name: item, action: ice.AUTO} case mdb.LIST: return {type: type = html.BUTTON, name: item, action: ice.AUTO}
case ice.BACK: return {type: type = html.BUTTON, name: item} case ice.BACK: return {type: type = html.BUTTON, name: item}
case mdb.NAME: return {type: type = html.TEXT, name: item} case mdb.NAME: return {type: type = html.TEXT, name: item}

View File

@ -1,3 +1,4 @@
Volcanos.meta.cache["/lib/lunar.js"] = []
var calendar = { // @1900-2100区间内的公历转农历 var calendar = { // @1900-2100区间内的公历转农历
solar2lunar: function(date) { var y = date.getFullYear(), m = date.getMonth()+1, d = date.getDate() solar2lunar: function(date) { var y = date.getFullYear(), m = date.getMonth()+1, d = date.getDate()
var day = (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(1900,0,31))/86400000 var day = (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(1900,0,31))/86400000

View File

@ -142,9 +142,6 @@ Volcanos("page", {ClassList: {
inputs: function(can, list) { inputs: function(can, list) {
var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) { var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) {
case "": _list.push(""); break case "": _list.push(""); break
case ice.RUN:
_list.push({type: html.BUTTON, name: ice.RUN})
break
case ice.AUTO: case ice.AUTO:
_list.push({type: html.BUTTON, name: ice.LIST}) _list.push({type: html.BUTTON, name: ice.LIST})
_list.push({type: html.BUTTON, name: ice.BACK}) _list.push({type: html.BUTTON, name: ice.BACK})

View File

@ -45,7 +45,7 @@ Volcanos("user", {info: {}, agent: {
can.user.mod.isCmd && name.push(chat.SIMPLE) can.user.mod.isCmd && name.push(chat.SIMPLE)
can.page.styleClass(can, can._root._target, name.join(ice.SP)) can.page.styleClass(can, can._root._target, name.join(ice.SP))
}, },
language: function(can) { return can.misc.Search(can, "language") }, language: function(can) { return can.misc.Search(can, "language")||can.user.info.language },
trans: function(can, text, list) { if (can.base.isFunc(text)) { text = text.name||"" } trans: function(can, text, list) { if (can.base.isFunc(text)) { text = text.name||"" }
if (can.base.isObject(text)) { return can.core.Item(text, function(k, v) { can.core.Value(can._trans, k, v) }) } if (can.base.isObject(text)) { return can.core.Item(text, function(k, v) { can.core.Value(can._trans, k, v) }) }
if (can.user.language(can) == "en") { return text } if (can.base.isString(list)) { return list } if (can.user.language(can) == "en") { return text } if (can.base.isString(list)) { return list }

View File

@ -203,7 +203,7 @@ Volcanos(chat.ONPLUGIN, {
"command": shy("插件列表", {}, [], function(can, msg, arg) { var meta = can.onengine.plugin.meta "command": shy("插件列表", {}, [], function(can, msg, arg) { var meta = can.onengine.plugin.meta
can.core.Item(arg[0] == ""? meta: meta[arg[0]]? kit.Dict(arg[0], meta[arg[0]]): {}, function(name, command) { can.core.Item(arg[0] == ""? meta: meta[arg[0]]? kit.Dict(arg[0], meta[arg[0]]): {}, function(name, command) {
msg.Push(kit.Dict(ice.CTX, ice.CAN, ice.CMD, ctx.COMMAND, msg.Push(kit.Dict(ice.CTX, ice.CAN, ice.CMD, ctx.COMMAND,
mdb.TYPE, ice.CAN, mdb.NAME, name, mdb.TEXT, command.help, mdb.TYPE, ice.CAN, mdb.NAME, name||command.name, mdb.TEXT, command.help,
ctx.CONTEXT, ice.CAN, ctx.COMMAND, name, ctx.INDEX, can.core.Keys(ice.CAN, name), ctx.CONTEXT, ice.CAN, ctx.COMMAND, name, ctx.INDEX, can.core.Keys(ice.CAN, name),
), msg.Option(ice.MSG_FIELDS).split(ice.FS)) ), msg.Option(ice.MSG_FIELDS).split(ice.FS))
}) })

View File

@ -6,7 +6,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
}, },
_title: function(can, msg, target) { can.user.isMobile || can.core.List(msg.result, function(item) { can.page.Append(can, target, [{view: [chat.TITLE, html.DIV, item], title: "联系站长"}]) }) }, _title: function(can, msg, target) { can.user.isMobile || can.core.List(msg.result, function(item) { can.page.Append(can, target, [{view: [chat.TITLE, html.DIV, item], title: "联系站长"}]) }) },
_state: function(can, msg, target) { _state: function(can, msg, target) {
can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), ["ncmd", "ntip"]), function(item) { can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), ["ntip", "ncmd"]).reverse(), function(item) {
can.page.Append(can, target, [{view: [can.base.join([chat.STATE, item]), html.DIV, can.Conf(item)], list: [ can.page.Append(can, target, [{view: [can.base.join([chat.STATE, item]), html.DIV, can.Conf(item)], list: [
{text: [item, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [can.Conf(item)||"", html.SPAN, item]}, {text: [item, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [can.Conf(item)||"", html.SPAN, item]},
], onclick: function(event) { can.onexport[item](can) }}]) ], onclick: function(event) { can.onexport[item](can) }}])
@ -45,14 +45,14 @@ Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight
return {text: [value, html.TD], onclick: function(event) { can.base.isFunc(cb) && cb(value, key, index, line, list) }} return {text: [value, html.TD], onclick: function(event) { can.base.isFunc(cb) && cb(value, key, index, line, list) }}
}, ui.output), can.onappend.board(can, msg.Result(), ui.output); return ui }, ui.output), can.onappend.board(can, msg.Result(), ui.output); return ui
}, },
ntip: function(can) { can.onexport.float(can, can._tips, "ntip", function(value, key, index, line) { can.onappend._float(can, "web.code.inner", ["usr/volcanos/"].concat(line.fileline.split(ice.DF))) }) }, ntip: function(can) { can.onexport.float(can, can._tips, "ntip", function(value, key, index, line) { can.onappend._float(can, web.CODE_INNER, [ice.USR_VOLCANOS].concat(line.fileline.split(ice.DF))) }) },
ncmd: function(can) { can.onexport.float(can, can._cmds, "ncmd", function(value, key, index, line) { ncmd: function(can) { can.onexport.float(can, can._cmds, "ncmd", function(value, key, index, line) {
var cmds = can.base.Obj(line.cmds); switch (line.follow) { var cmds = can.base.Obj(line.cmds); switch (line.follow) {
case "can.Action": cmds = cmds.slice(2); break case "can.Action": cmds = cmds.slice(2); break
case "can.Footer": cmds = cmds.slice(2); break case "can.Footer": cmds = cmds.slice(2); break
} }
switch (cmds[0]) { switch (cmds[0]) {
case "web.wiki.word": cmds = cmds.slice(5); break case web.WIKI_WORD: cmds = cmds.slice(5); break
} }
can.onappend._float(can, cmds[0], cmds.slice(1)) can.onappend._float(can, cmds[0], cmds.slice(1))
}) }, }) },

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
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)
@ -12,7 +12,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target)
}) })
}, },
_state: function(can, msg, target) { if (can.user.isMobile) { return } _state: function(can, msg, target) { if (can.user.isMobile) { return }
can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), [aaa.USERNICK, mdb.TIME]).reverse(), function(item) { can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), [aaa.AVATAR, aaa.USERNICK, mdb.TIME]).reverse(), function(item) {
if (item == aaa.AVATAR ) { if (can.user.isLocalFile) { return } if (item == aaa.AVATAR ) { if (can.user.isLocalFile) { return }
can.page.Append(can, target, [{view: can.base.join([chat.STATE, item]), list: [{img: ice.SP}], onmouseenter: function(event) { can.page.Append(can, target, [{view: can.base.join([chat.STATE, item]), list: [{img: ice.SP}], onmouseenter: function(event) {
can.onaction.carte(event, can, [can.page.Format(html.IMG, can.onexport.avatar(can), 160)]) can.onaction.carte(event, can, [can.page.Format(html.IMG, can.onexport.avatar(can), 160)])
@ -66,8 +66,8 @@ Volcanos(chat.ONACTION, {
}, },
onmain: function(can, msg) { can.onimport.topic(can) onmain: function(can, msg) { can.onimport.topic(can)
can.run({}, [], function(msg) { if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) { can.run({}, [], function(msg) { if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) {
return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN), msg.Option("login.dev")) return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN), msg.Option("login.dev"))
} can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.language = can.misc.Search(can, aaa.LANGUAGE)||msg.Option(aaa.LANGUAGE) } can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.language = can.misc.Search(can, aaa.LANGUAGE)||msg.Option(aaa.LANGUAGE)
can.user.info.background = msg.Option(aaa.BACKGROUND), can.user.info.avatar = msg.Option(aaa.AVATAR) can.user.info.background = msg.Option(aaa.BACKGROUND), can.user.info.avatar = msg.Option(aaa.AVATAR)
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.onmotion.clear(can), can.onimport._init(can, msg, can._output), can.ondaemon._init(can), can.onengine.signal(can, chat.ONLOGIN, msg) can.onmotion.clear(can), can.onimport._init(can, msg, can._output), can.ondaemon._init(can), can.onengine.signal(can, chat.ONLOGIN, msg)
@ -107,8 +107,8 @@ Volcanos(chat.ONACTION, {
password: function(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}], function(list) { password: function(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}], function(list) {
if (list[0] != list[1]) { return can.user.toast(can, "密码不一致"), ui.focus(), true } can.runAction(event, aaa.PASSWORD, [list[0]]) if (list[0] != list[1]) { return can.user.toast(can, "密码不一致"), ui.focus(), true } can.runAction(event, aaa.PASSWORD, [list[0]])
}) }, }) },
chinese: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "zh") }, chinese: function(event, can) { can.runAction(event, aaa.LANGUAGE, ["zh"], function(msg) { can.user.reload() }) },
english: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "en") }, english: function(event, can) { can.runAction(event, aaa.LANGUAGE, ["en"], function(msg) { can.user.reload() }) },
clear: function(event, can) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, "") }, 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) },
}) })
@ -118,20 +118,22 @@ Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight
avatar: function(can) { return can.user.info.avatar == "void"? "": can.user.info.avatar }, avatar: function(can) { return can.user.info.avatar == "void"? "": can.user.info.avatar },
}) })
Volcanos(chat.ONPLUGIN, { Volcanos(chat.ONPLUGIN, {
"title": shy("标题", {}, [chat.TITLE, ice.RUN], function(can, msg, cmds) { can.user.title(cmds[0]) }), title: shy("标题", {}, [chat.TITLE, ice.LIST], function(can, msg, cmds) { msg.Echo(can.user.title(cmds[0])) }),
"topic": shy("主题", {}, ["topic:select=white,black", ice.RUN], function(can, msg, cmds) { can.onimport.topic(can, cmds[0]) }), topic: shy("主题", {
"cookie": shy("参数", {}, [mdb.NAME, mdb.VALUE, ice.AUTO], function(can, msg, cmds) { _init: function(can) { can.Option(chat.TOPIC, can.getHeader(chat.TOPIC)) },
can.core.Item(can.misc.Cookie(can), function(key, value) { if (cmds[0] && key != cmds[0]) { return } }, ["topic:select=white,black", ice.RUN], function(can, msg, cmds) { msg.Echo(can.onimport.topic(can, cmds[0])) }),
msg.Push(mdb.NAME, key), msg.Push(mdb.VALUE, value) alert: shy("提示", {}, [mdb.TEXT, ice.LIST], function(can, msg, cmds) { cmds && cmds[0] && can.user.alert(cmds[0]) }),
}) location: shy("地址", {
}),
"alert": shy("提示", {}, [mdb.TEXT, ice.AUTO], function(can, msg, cmds) { cmds && cmds[0] && can.user.alert(cmds[0]) }),
"log": shy("日志", {}, [mdb.TEXT, ice.AUTO], function(can, msg, cmds) { can.misc.Log(cmds) }),
"location": shy("地址", {
copy: function(can, msg, cmds) { can.user.copy(msg._event, can, location.href) }, copy: function(can, msg, cmds) { can.user.copy(msg._event, can, location.href) },
}, [mdb.LINK, ice.AUTO, ice.COPY], function(can, msg, cmds, cb) { }, [mdb.LINK, ice.LIST, ice.COPY], function(can, msg, cmds, cb) {
can.run(can.request({}, mdb.LINK, location.href), [web.SHARE], function(res) { can.run(can.request({}, mdb.LINK, location.href), [web.SHARE], function(res) {
msg.Echo(res.Append(mdb.TEXT)).Echo(ice.NL).Echo(can.page.Format(html.A, res.Append(mdb.NAME))), can.base.isFunc(cb) && cb(msg) msg.Echo(res.Append(mdb.TEXT)).Echo(ice.NL).Echo(can.page.Format(html.A, res.Append(mdb.NAME))), can.base.isFunc(cb) && cb(msg)
}) })
}), }),
cookie: shy("参数", {}, [mdb.NAME, mdb.VALUE, ice.LIST, ice.BACK], function(can, msg, cmds) {
can.core.Item(can.misc.Cookie(can), function(key, value) { if (cmds[0] && key != cmds[0]) { return }
msg.Push(mdb.NAME, key), msg.Push(mdb.VALUE, value)
})
}),
log: shy("日志", {}, [mdb.TEXT, ice.LIST], function(can, msg, cmds) { can.misc.Log(cmds) }),
}) })

View File

@ -52,7 +52,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list
plugin: function(event, can, index) { var line = can.list[index]; if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) } plugin: function(event, can, index) { var line = can.list[index]; if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) }
var cmd = line.cmd == ctx.COMMAND? can.core.Keys(line.type, line.name.split(ice.SP)[0]): can.core.Keys(line.ctx, line.cmd) var cmd = line.cmd == ctx.COMMAND? can.core.Keys(line.type, line.name.split(ice.SP)[0]): can.core.Keys(line.ctx, line.cmd)
can.onappend.plugin(can, {index: cmd||msg.Option(mdb.INDEX), args: cmd == "web.wiki.word"? [line.name]: []}, function(sub, meta) { can.onmotion.delay(can, function() { sub.Focus() }, 20) can.onappend.plugin(can, {index: cmd||msg.Option(mdb.INDEX), args: cmd == web.WIKI_WORD? [line.name]: []}, function(sub, meta) { can.onmotion.delay(can, function() { sub.Focus() }, 20)
sub.onimport.size(sub, can.base.Min(320, can.ConfHeight()-html.ACTION_HEIGHT-can.ui.content.offsetHeight-can.ui.display.offsetHeight)-2*html.ACTION_HEIGHT-1, can.ConfWidth()-1, true) sub.onimport.size(sub, can.base.Min(320, can.ConfHeight()-html.ACTION_HEIGHT-can.ui.content.offsetHeight-can.ui.display.offsetHeight)-2*html.ACTION_HEIGHT-1, can.ConfWidth()-1, true)
}, can.ui.profile) }, can.ui.profile)
}, },

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
var meta = {}; msg.Table(function(value) { meta[value.key] = value.value }) var meta = {}; msg.Table(function(value) { meta[value.key] = value.value })
can._list = can.base.Obj(meta.text, {meta: {name: meta.name||html.DIV}, list: []}) can._list = can.base.Obj(meta.text, {meta: {name: meta.name||html.DIV}, list: []})
can.sup._keys = can.sup._keys||can._list.meta.name can.sup._keys = can.sup._keys||can._list.meta.name
@ -53,7 +53,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
can.onimport._item(can, can._list.meta.name, can._list, can.ui.project, width, height) can.onimport._item(can, can._list.meta.name, can._list, can.ui.project, width, height)
}, },
}, [""]) }, [""])
Volcanos(chat.ONACTION, {help: "操作数据", Volcanos(chat.ONACTION, {
"添加": function(event, can) { "添加": function(event, can) {
can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(data) { 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: []})

View File

@ -1,11 +1,10 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) {
can.current = msg.TableDetail(), can.onimport.layout(can), can.base.isFunc(cb) && cb(msg) can.current = msg.TableDetail(), can.onimport.layout(can), can.base.isFunc(cb) && cb(msg)
}, },
layout: function(can) { var item = can.current; can.onmotion.clear(can), can.onimport.title(can, item.name||item.link) layout: function(can) { var item = can.current; can.onmotion.clear(can), can.onimport.title(can, item.name||item.link)
can.page.Append(can, can._output, [{type: html.IFRAME, src: item.link, height: can.ConfHeight(), width: can.ConfWidth(), style: {border: 0}}]) can.page.Append(can, can._output, [{type: html.IFRAME, src: item.link, height: can.ConfHeight(), width: can.ConfWidth(), style: {border: 0}}])
}, },
}) })
Volcanos(chat.ONACTION, {help: "操作数据", Volcanos(chat.ONACTION, {
open: function(can) { can.user.open(can.current.link) }, open: function(can) { can.user.open(can.current.link) },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据"})

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { Volcanos(chat.ONIMPORT, {_init: function(can, msg) {
can.onappend.table(can, msg), can.onappend.board(can, msg) can.onappend.table(can, msg), can.onappend.board(can, msg)
var meta = {}; msg.Table(function(value, key) { meta[value.key] = value.value }) var meta = {}; msg.Table(function(value, key) { meta[value.key] = value.value })
can.require(["/plugin/input/keyboard.js"], function() { can.require(["/plugin/input/keyboard.js"], function() {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.onmotion.clear(can), can.onlayout.profile(can), can.base.isFunc(cb) && cb(msg) can.onmotion.clear(can), can.onlayout.profile(can), can.base.isFunc(cb) && cb(msg)
!can.isCmdMode() && can.ConfHeight(window.innerHeight - 5*html.ACTION_HEIGHT - 5*html.PLUGIN_MARGIN) !can.isCmdMode() && can.ConfHeight(window.innerHeight - 5*html.ACTION_HEIGHT - 5*html.PLUGIN_MARGIN)
can.user.isMobile && can.ConfHeight(window.innerHeight-html.ACTION_HEIGHT) can.user.isMobile && can.ConfHeight(window.innerHeight-html.ACTION_HEIGHT)
@ -242,7 +242,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
return new myInfoWindow({map: can.map, position: can.onimport.point(can, item), meta: meta}) return new myInfoWindow({map: can.map, position: can.onimport.point(can, item), meta: meta})
}, },
}) })
Volcanos(chat.ONACTION, {help: "操作数据", list: [["mode", "select", "insert"], Volcanos(chat.ONACTION, {list: [["mode", "select", "insert"],
{type: html.TEXT, name: "zoom", value: 17, range: [3, 21]}, {type: html.TEXT, name: "zoom", value: 17, range: [3, 21]},
{type: html.TEXT, name: "pitch", value: 30, range: [0, 80, 5]}, {type: html.TEXT, name: "pitch", value: 30, range: [0, 80, 5]},
{type: html.TEXT, name: "rotation", value: "0", range: [0, 360, 10]}, {type: html.TEXT, name: "rotation", value: "0", range: [0, 360, 10]},
@ -290,7 +290,7 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: [["mode", "select", "insert
return can.base.Copy({left: rect.left+event.point.x, bottom: rect.top+event.point.y, latitude: parseInt(event.latLng.lat*100000), longitude: parseInt(event.latLng.lng*100000)}, item, true) return can.base.Copy({left: rect.left+event.point.x, bottom: rect.top+event.point.y, latitude: parseInt(event.latLng.lat*100000), longitude: parseInt(event.latLng.lng*100000)}, item, true)
}, },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["nation", "province", "city", "latitude", "longitude", "type", "name", "text"], Volcanos(chat.ONEXPORT, {list: ["nation", "province", "city", "latitude", "longitude", "type", "name", "text"],
point: function(can, point, item) { return can.base.Copy({latitude: parseInt(point.lat*100000), longitude: parseInt(point.lng*100000)}, item, true) }, point: function(can, point, item) { return can.base.Copy({latitude: parseInt(point.lat*100000), longitude: parseInt(point.lng*100000)}, item, true) },
center: function(can) { return can.onexport.point(can, can.map.getCenter()) }, center: function(can) { return can.onexport.point(can, can.map.getCenter()) },
current: function(can) { current: function(can) {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.ui = can.onlayout.display(can, target) can.ui = can.onlayout.display(can, target)
can.ui.canvas = can.page.Append(can, can.ui.display, [{type: "canvas", width: 320, height: 240, style: {display: "none"}}])._target can.ui.canvas = can.page.Append(can, can.ui.display, [{type: "canvas", width: 320, height: 240, style: {display: "none"}}])._target
@ -14,7 +14,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, ta
can.base.isFunc(cb) && cb(msg) can.base.isFunc(cb) && cb(msg)
}, },
}) })
Volcanos(chat.ONACTION, {help: "操作数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONACTION, {_init: function(can, msg, cb, target) {
}, },
open: function(event, can) { open: function(event, can) {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.onmotion.clear(can) can.onmotion.clear(can)
can.from = can.onimport._plugin(can, nfs.DIR, html.LEFT, "from", "to") can.from = can.onimport._plugin(can, nfs.DIR, html.LEFT, "from", "to")
can.to = can.onimport._plugin(can, nfs.DIR, html.RIGHT, "to", "from") can.to = can.onimport._plugin(can, nfs.DIR, html.RIGHT, "to", "from")
@ -21,7 +21,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
}) })
}, },
}) })
Volcanos(chat.ONACTION, {help: "操作数据", Volcanos(chat.ONACTION, {
send: function(can, from, to, event, cmds, cb) { var _from = can[from], _to = can[to] send: function(can, from, to, event, cmds, cb) { var _from = can[from], _to = can[to]
var path = can.request(event).Option(nfs.PATH) var path = can.request(event).Option(nfs.PATH)
var msg = can.request(event, {_handle: ice.TRUE, var msg = can.request(event, {_handle: ice.TRUE,

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", Volcanos(chat.ONIMPORT, {
_tabs: function(can) { _tabs: function(can) {
can.ui._tabs = can.page.insertBefore(can, ["tabs"], can.ui._content), can.ui._path = can.page.insertBefore(can, ["path"], can.ui._content) can.ui._tabs = can.page.insertBefore(can, ["tabs"], can.ui._content), can.ui._path = can.page.insertBefore(can, ["path"], can.ui._content)
can.page.Append(can, can.ui._tabs, [{view: [["time", "select"]], style: {"float": html.RIGHT}, _init: function(target) { can.page.Append(can, can.ui._tabs, [{view: [["time", "select"]], style: {"float": html.RIGHT}, _init: function(target) {
@ -98,7 +98,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
return can.Status("跳转数", can.history.length), record return can.Status("跳转数", can.history.length), record
}, },
}, [""]) }, [""])
Volcanos(chat.ONFIGURE, {help: "索引导航", Volcanos(chat.ONFIGURE, {
source: function(can, target, zone, path) { var total = 0 source: function(can, target, zone, path) { var total = 0
function show(target, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) { var list = msg.Table() function show(target, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) { var list = msg.Table()
can.onimport.tree(can, list, nfs.PATH, ice.PS, function(event, item) { can.onimport.tabview(can, path, item.path) }, target) can.onimport.tree(can, list, nfs.PATH, ice.PS, function(event, item) { can.onimport.tabview(can, path, item.path) }, target)
@ -114,7 +114,7 @@ Volcanos(chat.ONFIGURE, {help: "索引导航",
}, target), zone._total(total) }, target), zone._total(total)
}, },
}) })
Volcanos(chat.ONSYNTAX, {help: "语法高亮", _init: function(can, msg, cb) { Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) {
if (can.onmotion.cache(can, function(cache_data) { if (can.onmotion.cache(can, function(cache_data) {
can.file && (cache_data[can.file] = {current: can.current, max: can.max, profile_display: can.ui.profile.style.display, display_display: can.ui.display.style.display}) can.file && (cache_data[can.file] = {current: can.current, max: can.max, profile_display: can.ui.profile.style.display, display_display: can.ui.display.style.display})
can.file = can.onexport.keys(can, can.Option(nfs.PATH), can.Option(nfs.FILE)) can.file = can.onexport.keys(can, can.Option(nfs.PATH), can.Option(nfs.FILE))
@ -189,10 +189,10 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", _init: function(can, msg, cb) {
return line return line
}, },
}) })
Volcanos(chat.ONENGINE, {help: "搜索引擎", Volcanos(chat.ONENGINE, {
listen: shy("监听事件", function(can, key, cb) { arguments.callee.meta[key] = (arguments.callee.meta[key]||[]).concat(cb) }), listen: shy("监听事件", function(can, key, cb) { arguments.callee.meta[key] = (arguments.callee.meta[key]||[]).concat(cb) }),
}) })
Volcanos(chat.ONACTION, {help: "控件交互", Volcanos(chat.ONACTION, {
appendLine: function(can, value) { appendLine: function(can, value) {
var ui = can.page.Append(can, can.ui._content, [{type: html.TR, list: [ var ui = can.page.Append(can, can.ui._content, [{type: html.TR, list: [
{view: ["line unselectable", html.TD, ++can.max], onclick: function(event) { {view: ["line unselectable", html.TD, ++can.max], onclick: function(event) {
@ -246,7 +246,7 @@ Volcanos(chat.ONACTION, {help: "控件交互",
}, },
back: function(can) { can.history.pop(); var last = can.history.pop(); last && can.onimport.tabview(can, last.path, last.file, last.line) }, back: function(can) { can.history.pop(); var last = can.history.pop(); last && can.onimport.tabview(can, last.path, last.file, last.line) },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数"], Volcanos(chat.ONEXPORT, {list: ["文件数", "解析器", "文件名", "当前行", "跳转数"],
hash: function(can) { if (!can.isCmdMode()) { return } hash: function(can) { if (!can.isCmdMode()) { return }
var list = []; if (can.Option(nfs.PATH) != can.misc.Search(can, nfs.PATH)) { list.push(can.Option(nfs.PATH)) } var list = []; if (can.Option(nfs.PATH) != can.misc.Search(can, nfs.PATH)) { list.push(can.Option(nfs.PATH)) }
if (list.length > 0 || can.Option(nfs.FILE) != can.misc.Search(can, nfs.FILE)) { list.push(can.Option(nfs.FILE)) } if (list.length > 0 || can.Option(nfs.FILE) != can.misc.Search(can, nfs.FILE)) { list.push(can.Option(nfs.FILE)) }
@ -260,7 +260,7 @@ Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "解析器",
line: function(can, line) { return parseInt(can.core.Value(can.page.Select(can, line, "td.line")[0], "innerText")) }, line: function(can, line) { return parseInt(can.core.Value(can.page.Select(can, line, "td.line")[0], "innerText")) },
}) })
Volcanos(chat.ONIMPORT, {help: "导入数据", Volcanos(chat.ONIMPORT, {
_profile: function(can, target) { _profile: function(can, target) {
var ui = can.onimport._panel(can, target, kit.Dict( var ui = can.onimport._panel(can, target, kit.Dict(
mdb.LINK, function(event) { mdb.LINK, function(event) {
@ -335,7 +335,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
} }
}, },
}, [""]) }, [""])
Volcanos(chat.ONACTION, {help: "控件交互", _trans: {link: "链接", width: "宽度", height: "高度"}, Volcanos(chat.ONACTION, {_trans: {link: "链接", width: "宽度", height: "高度"},
"搜索": function(event, can) { "搜索": function(event, can) {
can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, cli.MAKE, nfs.GREP]], function(data) { can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, cli.MAKE, nfs.GREP]], function(data) {
can.ui.search.Update({}, [ctx.ACTION, data.action, data.name]) can.ui.search.Update({}, [ctx.ACTION, data.action, data.name])
@ -369,7 +369,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", _trans: {link: "链接", width: "
}, },
}) })
Volcanos(chat.ONIMPORT, {help: "导入数据", Volcanos(chat.ONIMPORT, {
_keydown: function(can) { if (!can.isCmdMode()) { return } _keydown: function(can) { if (!can.isCmdMode()) { return }
can.onkeymap._build(can), can._root.onengine.listen(can, chat.ONKEYDOWN, function(event) { can.onkeymap._build(can), can._root.onengine.listen(can, chat.ONKEYDOWN, function(event) {
if (event.ctrlKey && event.key >= "0" && event.key <= "9") { if (event.ctrlKey && event.key >= "0" && event.key <= "9") {
@ -379,7 +379,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据",
}) })
}, },
}) })
Volcanos(chat.ONKEYMAP, {help: "导入数据", Volcanos(chat.ONKEYMAP, {
_mode: { _mode: {
plugin: { plugin: {
Escape: shy("切换模式", function(event, can) { can.onaction.clear(event, can) }), Escape: shy("切换模式", function(event, can) { can.onaction.clear(event, can) }),
@ -394,7 +394,7 @@ Volcanos(chat.ONKEYMAP, {help: "导入数据",
}, _engine: {}, }, _engine: {},
}) })
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.onmotion.clear(can), can.page.ClassList.add(can, can._fields, code.INNER), can.onlayout.profile(can) can.onmotion.clear(can), can.page.ClassList.add(can, can._fields, code.INNER), can.onlayout.profile(can)
can.onimport._profile(can, can.ui.profile), can.onimport._display(can, can.ui.display) can.onimport._profile(can, can.ui.profile), can.onimport._display(can, can.ui.display)
if (msg.Result() == "" && can.Option(nfs.LINE) == "1") { return } if (msg.Result() == "" && can.Option(nfs.LINE) == "1") { return }
@ -516,7 +516,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
}) })
}, },
}, [""]) }, [""])
Volcanos(chat.ONACTION, {help: "控件交互", list: [], Volcanos(chat.ONACTION, {list: [],
sess: function(event, can) { can.onexport.sess(can), can.user.toastSuccess(can) }, sess: function(event, can) { can.onexport.sess(can), can.user.toastSuccess(can) },
listTags: function(event, can, button) { var list = [] listTags: function(event, can, button) { var list = []
can.core.Item(can.request(event), function(key, value) { if (key.indexOf("_") == 0) { return } can.core.Item(can.request(event), function(key, value) { if (key.indexOf("_") == 0) { return }
@ -534,7 +534,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [],
can.runAction(can.request(event, {text: can.base.Format(list)}), button) can.runAction(can.request(event, {text: can.base.Format(list)}), button)
}, },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据", Volcanos(chat.ONEXPORT, {
sess: function(can) { can.misc.localStorage(can, "web.code.inner.sess", {"plug": can.onexport.plug(can), "exts": can.onexport.exts(can), "tabs": can.onexport.tabs(can)}) }, sess: function(can) { can.misc.localStorage(can, "web.code.inner.sess", {"plug": can.onexport.plug(can), "exts": can.onexport.exts(can), "tabs": can.onexport.tabs(can)}) },
tabs: function(can) { return can.core.Item(can.tabview, function(key, msg) { return key+ice.DF+can.Option(nfs.LINE) }) }, tabs: function(can) { return can.core.Item(can.tabview, function(key, msg) { return key+ice.DF+can.Option(nfs.LINE) }) },
plug: function(can) { return can.core.Item(can.toolkit) }, plug: function(can) { return can.core.Item(can.toolkit) },

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, cb) { Volcanos(chat.ONIMPORT, {_init: function(can, cb) {
can.onimport.toolkit(can, {index: "web.code.favor"}, function(sub) { can.onimport.toolkit(can, {index: "web.code.favor"}, function(sub) {
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(

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { var SESS = "web.code.sess" Volcanos(chat.ONIMPORT, {_init: function(can, args, cb) { var SESS = "web.code.sess"
can.onimport.toolkit(can, {index: SESS}, function(sub) { can.onimport.toolkit(can, {index: SESS}, function(sub) {
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(

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONSYNTAX, {help: "语法高亮", Volcanos(chat.ONSYNTAX, {
makefile: { makefile: {
prefix: { prefix: {
"#": code.COMMENT, "#": code.COMMENT,

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { Volcanos(chat.ONIMPORT, {_init: function(can, args, cb) {
can.onimport.toolkit(can, {index: "web.code.template"}, function(sub) { can.onimport.toolkit(can, {index: "web.code.template"}, function(sub) {
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(

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = [] can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = []
can.page.ClassList.add(can, can._fields, code.VIMER) can.page.ClassList.add(can, can._fields, code.VIMER)
can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can) can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can)
@ -25,7 +25,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
]); can.ui.current = ui.current, can.ui.complete = ui.complete ]); can.ui.current = ui.current, can.ui.complete = ui.complete
}, },
}, [""]) }, [""])
Volcanos(chat.ONFIGURE, {help: "索引导航", Volcanos(chat.ONFIGURE, {
create: function(can, target, zone, path) { create: function(can, target, zone, path) {
can.isCmdMode()? can.onappend._action(can, can.base.Obj(can._msg.Option(ice.MSG_ACTION)).concat( can.isCmdMode()? can.onappend._action(can, can.base.Obj(can._msg.Option(ice.MSG_ACTION)).concat(
["查找", "git", "首页", "官网" , "文档" , "百度"], window.webview? ["浏览器", "录屏", "编辑器", "日志"]: [], ["查找", "git", "首页", "官网" , "文档" , "百度"], window.webview? ["浏览器", "录屏", "编辑器", "日志"]: [],
@ -98,7 +98,7 @@ Volcanos(chat.ONFIGURE, {help: "索引导航",
}) })
}, },
}) })
Volcanos(chat.ONKEYMAP, {help: "键盘交互", Volcanos(chat.ONKEYMAP, {
_model: function(can, value) { can.Status("模式", can.mode = value) _model: function(can, value) { can.Status("模式", can.mode = value)
can.page.styleClass(can, can.ui.current, ["current", can.mode]), value can.page.styleClass(can, can.ui.current, ["current", can.mode]), value
can.page.styleClass(can, can.ui.complete, [code.COMPLETE, can.mode]), value can.page.styleClass(can, can.ui.complete, [code.COMPLETE, can.mode]), value
@ -237,7 +237,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
}, },
}, _engine: {}, }, _engine: {},
}) })
Volcanos(chat.ONACTION, {help: "控件交互", Volcanos(chat.ONACTION, {
_daemon: function(event, can, arg) { _daemon: function(event, can, arg) {
switch (arg[0]) { switch (arg[0]) {
case web.DREAM: case web.DREAM:
@ -498,8 +498,8 @@ Volcanos(chat.ONACTION, {help: "控件交互",
can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p) can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p)
}, },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]}) Volcanos(chat.ONEXPORT, {list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]})
Volcanos(chat.ONPLUGIN, {help: "注册插件", Volcanos(chat.ONPLUGIN, {
"code.vimer.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(can, msg, cmds) { "code.vimer.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(can, msg, cmds) {
can.core.Item(can.onkeymap._mode, function(mode, value) { can.core.Item(can.onkeymap._mode, function(mode, value) {
(!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) { (!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { can.onmotion.clear(can) Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.onmotion.clear(can)
can.onlayout._init(can) can.onlayout._init(can)
can.requireModules(["xterm/css/xterm.css", "xterm", "xterm-addon-fit", "xterm-addon-web-links"], function() { can.requireModules(["xterm/css/xterm.css", "xterm", "xterm-addon-fit", "xterm-addon-web-links"], function() {
var item = {hash: can.Option(mdb.HASH)}; msg.Table(function(value) { can.core.Value(item, value.key, value.value) }) var item = {hash: can.Option(mdb.HASH)}; msg.Table(function(value) { can.core.Value(item, value.key, value.value) })
@ -31,7 +31,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { c
}, },
grow: function(can, msg) { can._current.write(msg.Option(mdb.TEXT)) }, grow: function(can, msg) { can._current.write(msg.Option(mdb.TEXT)) },
}) })
Volcanos(chat.ONLAYOUT, {help: "界面布局", Volcanos(chat.ONLAYOUT, {
_init: function(can) { _init: function(can) {
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+8, html.WIDTH, can.ConfWidth()+18, html.MAX_WIDTH, "") can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+8, html.WIDTH, can.ConfWidth()+18, html.MAX_WIDTH, "")
can._current && can._current._fit.fit(), can.onexport.term(can) can._current && can._current._fit.fit(), can.onexport.term(can)
@ -40,12 +40,12 @@ Volcanos(chat.ONLAYOUT, {help: "界面布局",
// can.Option(mdb.HASH) && can.Option(mdb.HASH) == can.misc.Search(can, mdb.HASH)? can.sup.onaction.full({}, can.sup): can.onlayout._init(can) // can.Option(mdb.HASH) && can.Option(mdb.HASH) == can.misc.Search(can, mdb.HASH)? can.sup.onaction.full({}, can.sup): can.onlayout._init(can)
}, },
}) })
Volcanos(chat.ONACTION, {help: "操作数据", Volcanos(chat.ONACTION, {
refresh: function(event, can, button) { can.onlayout._init(can), can._current.focus() }, refresh: function(event, can, button) { can.onlayout._init(can), can._current.focus() },
"波浪线": function(event, can, button) { can.onimport._input(can, "~"), can._current.focus() }, "波浪线": function(event, can, button) { can.onimport._input(can, "~"), can._current.focus() },
"反引号": function(event, can, button) { can.onimport._input(can, "`"), can._current.focus() }, "反引号": function(event, can, button) { can.onimport._input(can, "`"), can._current.focus() },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据", list: [mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"], Volcanos(chat.ONEXPORT, {list: [mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"],
term: function(can) { var term = can._current||{}, item = term._item; if (!item) { return } term: function(can) { var term = can._current||{}, item = term._item; if (!item) { return }
can.core.List(can.onexport.list, function(key) { can.core.List(can.onexport.list, function(key) {
can.Status(key, can.base.getValid(item[key], term[key], term.buffer.active[key], "")) can.Status(key, can.base.getValid(item[key], term[key], term.buffer.active[key], ""))

View File

@ -329,7 +329,7 @@ Volcanos(chat.ONFIGURE, {
}, },
}, },
}, []) }, [])
Volcanos(chat.ONKEYMAP, {help: "键盘交互", Volcanos(chat.ONKEYMAP, {
_mode: { _mode: {
normal: { normal: {
Escape: function(event, can) { can._undo && can._undo(), can.points = [] }, Escape: function(event, can) { can._undo && can._undo(), can.points = [] },

View File

@ -1,4 +1,4 @@
Volcanos("heart", {help: "心形", Volcanos("heart", {
data: {name: "path", size: {}, data: {name: "path", size: {},
copy: ["d", "name", "meta", "tt", "xx", "yy"], copy: ["d", "name", "meta", "tt", "xx", "yy"],
x: function(event, can, value, cmd, target) { x: function(event, can, value, cmd, target) {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONFIGURE, {help: "图形绘制", Volcanos(chat.ONFIGURE, {
path2v: { // <path d="M x0,y0 Q x2,y2 x3,y3 T x1,y1"/> path2v: { // <path d="M x0,y0 Q x2,y2 x3,y3 T x1,y1"/>
data: {name: "path", size: {}, copy: []}, data: {name: "path", size: {}, copy: []},
draw: function(event, can, point) { draw: function(event, can, point) {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", Volcanos(chat.ONIMPORT, {
init: function(can, msg, cb, output, action, option) {output.innerHTML = ""; init: function(can, msg, cb, output, action, option) {output.innerHTML = "";
if (!msg.result || msg.result.length == 0) { if (!msg.result || msg.result.length == 0) {
var table = can.page.AppendTable(can, msg, output, msg.append); var table = can.page.AppendTable(can, msg, output, msg.append);

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target) { can.onmotion.clear(can) Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can)
can.page.Modify(can, target, msg.Result()) can.page.Modify(can, target, msg.Result())
can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{} can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{}
can.core.CallFunc([can.onimport, meta.type||target.tagName.toLowerCase()], [can, meta, target]) can.core.CallFunc([can.onimport, meta.type||target.tagName.toLowerCase()], [can, meta, target])
@ -117,7 +117,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target)
}) })
}, },
}, [""]) }, [""])
Volcanos(chat.ONKEYMAP, {help: "键盘交互", Volcanos(chat.ONKEYMAP, {
_mode: { _mode: {
normal: { normal: {
"n": function(event, can) { can.ondetail.next(can.sub) }, "n": function(event, can) { can.ondetail.next(can.sub) },
@ -132,7 +132,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互",
}, },
}, _engine: {}, }, _engine: {},
}) })
Volcanos(chat.ONACTION, {help: "控件交互", Volcanos(chat.ONACTION, {
_trans: {view: "视图"}, _trans: {view: "视图"},
play: function(event, can) { var list = [], current = [] play: function(event, can) { var list = [], current = []
can.page.Select(can, can._output, wiki.STORY_ITEM, function(item) { can.page.Select(can, can._output, wiki.STORY_ITEM, function(item) {
@ -186,7 +186,7 @@ Volcanos(chat.ONACTION, {help: "控件交互",
} }
}, },
}) })
Volcanos(chat.ONDETAIL, {help: "交互操作", list: ["删除"], Volcanos(chat.ONDETAIL, {list: ["删除"],
show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT) show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT)
sub.page.Select(sub, sub.ui.content, html.DIV_PAGE, function(page, index) { sub.page.Select(sub, sub.ui.content, html.DIV_PAGE, function(page, index) {
if (index == which || page == which) { if (index == which || page == which) {

View File

@ -215,7 +215,7 @@ Volcanos(chat.ONEXPORT, {
actionHeight: function(can) { return can._action.style.display == html.NONE || can._action.innerHTML == ""? 0: html.ACTION_HEIGHT }, actionHeight: function(can) { return can._action.style.display == html.NONE || can._action.innerHTML == ""? 0: html.ACTION_HEIGHT },
record: function(can, line) {}, record: function(can, line) {},
link: function(can) { var meta = can.Conf(), args = can.Option() link: function(can) { var meta = can.Conf(), args = can.Option()
args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path) args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == web.WIKI_WORD && (args.cmd = args.path)
return can.misc.MergePodCmd(can, args, true) return can.misc.MergePodCmd(can, args, true)
}, },
}) })

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.page.ClassList.add(can, target, "form") can.page.ClassList.add(can, target, "form")
msg.Push("type", "text") msg.Push("type", "text")
msg.Push("name", "name") msg.Push("name", "name")

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.page.ClassList.add(can, target, "json") can.page.ClassList.add(can, target, "json")
can.onmotion.clear(can, target) can.onmotion.clear(can, target)
can.onappend.table(can, msg), can.onimport.show(can, can.base.Obj(msg.Result(), {}), target) can.onappend.table(can, msg), can.onimport.show(can, can.base.Obj(msg.Result(), {}), target)
@ -43,7 +43,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
}; show(data, can.page.Append(can, target, [{view: html.ITEM}]).item, 0, 0) }; show(data, can.page.Append(can, target, [{view: html.ITEM}]).item, 0, 0)
}, },
}, [""]) }, [""])
Volcanos(chat.ONACTION, {help: "组件菜单", list: ["展开", "折叠", "复制"], Volcanos(chat.ONACTION, {list: ["展开", "折叠", "复制"],
"展开": function(event, can) { "展开": function(event, can) {
can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_LIST], function(list) { can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_LIST], function(list) {
can.onmotion.toggle(can, list, true) can.onmotion.toggle(can, list, true)

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.onmotion.clear(can, target), can.base.isFunc(cb) && cb(msg) can.onmotion.clear(can, target), can.base.isFunc(cb) && cb(msg)
can.requireModules(["gifshot/dist/gifshot.js"], function() { can.requireModules(["gifshot/dist/gifshot.js"], function() {
@ -27,7 +27,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
return src return src
}, },
}) })
Volcanos(chat.ONACTION, {help: "操作数据", list: ["录屏", "摄像"], Volcanos(chat.ONACTION, {list: ["录屏", "摄像"],
"录屏": function(event, can) { "录屏": function(event, can) {
can.onimport._layout(can, function(target) { can.onimport._layout(can, function(target) {
navigator.mediaDevices.getDisplayMedia({video: {height: can.ConfHeight()*3/4}}).then(function(stream) { can.stream = stream navigator.mediaDevices.getDisplayMedia({video: {height: can.ConfHeight()*3/4}}).then(function(stream) { can.stream = stream
@ -71,7 +71,7 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: ["录屏", "摄像"],
can.onmotion.clear(can, can.ui.output), can.onimport._action(can) can.onmotion.clear(can, can.ui.output), can.onimport._action(can)
}, },
}) })
Volcanos(chat.ONDETAIL, {help: "操作数据", list: ["关闭", "抓拍", "录制"], Volcanos(chat.ONDETAIL, {list: ["关闭", "抓拍", "录制"],
"成图": function(event, can) { "成图": function(event, can) {
gifshot.createGIF({ gifshot.createGIF({
'video': [URL.createObjectURL(new Blob(can.ui.blobs, {type : 'video/webm'}))], 'video': [URL.createObjectURL(new Blob(can.ui.blobs, {type : 'video/webm'}))],
@ -89,4 +89,4 @@ Volcanos(chat.ONDETAIL, {help: "操作数据", list: ["关闭", "抓拍", "录
can.user.download(can, URL.createObjectURL(new Blob(can.ui.blobs, {type: "video/webm"})), "record.webm") can.user.download(can, URL.createObjectURL(new Blob(can.ui.blobs, {type: "video/webm"})), "record.webm")
}, },
}) })
Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["total"]}) Volcanos(chat.ONEXPORT, {list: ["total"]})

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: ["{", "}", html.HEAD, html.LEFT, html.MAIN, html.FOOT], Volcanos(chat.ONAPPEND, {list: ["{", "}", html.HEAD, html.LEFT, html.MAIN, html.FOOT],
_parse: function(can, text, name, height) { var stack = [{_deep: -1, list: []}], finish = false _parse: function(can, text, name, height) { var stack = [{_deep: -1, list: []}], finish = false
can.core.List(can.core.Split(text, ice.NL, ice.NL, ice.NL), function(line) { if (line == "" || finish) { return } can.core.List(can.core.Split(text, ice.NL, ice.NL, ice.NL), function(line) { if (line == "" || finish) { return }
var deep = 0; for (var i = 0; i < line.length; i++) { if (line[i] == ice.SP) { deep++ } else if (line[i] == ice.TB) { deep += 4 } else { break } } var deep = 0; for (var i = 0; i < line.length; i++) { if (line[i] == ice.SP) { deep++ } else if (line[i] == ice.TB) { deep += 4 } else { break } }

View File

@ -68,7 +68,7 @@ Volcanos(chat.ONDETAIL, {
} }
for (var node = tree; node; node = node.last) { can.request(event, node.meta) } for (var node = tree; node; node = node.last) { can.request(event, node.meta) }
can.run(can.request(event, can.Option()), can.base.Obj(can.Conf(lex.PREFIX), []).concat([can.Option("repos")||"", tree.file||"", tree.name]), function(msg) { can.run(can.request(event, can.Option()), can.base.Obj(can.Conf(lex.PREFIX), []).concat([can.Option("repos")||"", tree.file||"", tree.name]), function(msg) {
if (msg.Length() == 0) { return can.ondetail.plugin(can, "web.code.inner", [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line], code.INNER) } if (msg.Length() == 0) { return can.ondetail.plugin(can, web.CODE_INNER, [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line], code.INNER) }
if (msg.Append(mdb.INDEX)) { msg.Table(function(value) { can.ondetail.plugin(can, value.index, []) }); return } if (msg.Append(mdb.INDEX)) { msg.Table(function(value) { can.ondetail.plugin(can, value.index, []) }); return }
if (msg.Option(lex.SPLIT)) { if (msg.Option(lex.SPLIT)) {

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) {
can.onimport.select(can, msg) can.onimport.select(can, msg)
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg)
can.onappend.table(can, msg), can.onappend.board(can, msg) can.onappend.table(can, msg), can.onappend.board(can, msg)
@ -24,7 +24,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
])) ]))
}, },
}) })
Volcanos(chat.ONACTION, {help: "控件交互", Volcanos(chat.ONACTION, {
next: function(event, can) { var msg = can._msg next: function(event, can) { var msg = can._msg
msg.Table(function(line, index) { msg.Table(function(line, index) {
if (line.link == location.href) { if (line.link == location.href) {

View File

@ -51,6 +51,8 @@ var ice = {
ErrNotRight: "not right: ", ErrNotRight: "not right: ",
ErrNotFound: "not found: ", ErrNotFound: "not found: ",
ErrNotValid: "not valid: ", ErrNotValid: "not valid: ",
USR_VOLCANOS: "usr/volcanos/",
} }
var ctx = { var ctx = {
@ -78,6 +80,9 @@ var web = {
GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE",
Accept: "Accept", ContentType: "Content-Type", Accept: "Accept", ContentType: "Content-Type",
ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded",
CODE_INNER: "web.code.inner",
WIKI_WORD: "web.wiki.word",
} }
var mdb = { var mdb = {
DICT: "dict", META: "meta", HASH: "hash", LIST: "list", DICT: "dict", META: "meta", HASH: "hash", LIST: "list",
@ -141,9 +146,7 @@ var chat = {
HEADER: "Header", ACTION: "Action", HEADER: "Header", ACTION: "Action",
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"],
panel_list: [ panel_list: [
{name: "Header", pos: "head", state: ["avatar", "usernick", "time"]}, {name: "Header", pos: "head"}, {name: "River", pos: "left"}, {name: "Action", pos: "main"}, {name: "Search", pos: "auto"}, {name: "Footer", pos: "foot"},
{name: "River", pos: "left"}, {name: "Action", pos: "main"}, {name: "Search", pos: "auto"},
{name: "Footer", pos: "foot", state: ["ncmd", "ntip"]},
], ],
plugin_list: [ plugin_list: [
"/plugin/state.js", "/plugin/state.js",
@ -329,7 +332,7 @@ try { if (typeof(window) == lang.OBJECT) { // chrome
Volcanos.meta.target = document.body, Volcanos.meta._height = window.innerHeight, Volcanos.meta._width = window.innerWidth Volcanos.meta.target = document.body, Volcanos.meta._height = window.innerHeight, Volcanos.meta._width = window.innerWidth
Volcanos.meta._load = function(url, cb) { switch (url.split("?")[0].split(ice.PT).pop().toLowerCase()) { Volcanos.meta._load = function(url, cb) { switch (url.split("?")[0].split(ice.PT).pop().toLowerCase()) {
case nfs.CSS: var item = document.createElement(mdb.LINK); item.rel = "stylesheet", item.href = url, item.onload = cb, document.head.appendChild(item); break case nfs.CSS: var item = document.createElement(mdb.LINK); item.rel = "stylesheet", item.href = url, item.onload = cb, document.head.appendChild(item); break
default: var item = document.createElement(nfs.SCRIPT); item.src = url, item.onerror = cb, item.onload = cb, document.body.appendChild(item) case nfs.JS: var item = document.createElement(nfs.SCRIPT); item.src = url, item.onerror = cb, item.onload = cb, document.body.appendChild(item); break
} } } }
Volcanos.meta._init = function(can) { Volcanos.meta._init = function(can) {
var last = can.page.width() < can.page.height(); window.onresize = function(event) { var last = can.page.width() < can.page.height(); window.onresize = function(event) {

View File

@ -23,7 +23,7 @@ try { if (typeof(global) == lang.OBJECT) { // nodejs
} } catch (e) { console.log(e) } } } catch (e) { console.log(e) }
_can_name = "./frame.js" _can_name = "./frame.js"
Volcanos("onappend", {help: "渲染引擎", Volcanos("onappend", {
table: function(can, msg) { table: function(can, msg) {
var max = {}; msg.Table(function(value, index, array) { var max = {}; msg.Table(function(value, index, array) {
for (var k in value) { if (value[k].length > (max[k]||0)) { for (var k in value) { if (value[k].length > (max[k]||0)) {