mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt proto
This commit is contained in:
parent
7597f8654a
commit
a301b690ad
38
frame.js
38
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) {
|
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)
|
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.core.Next(list, function(item, next) { item.type = "panel"
|
||||||
can.onappend._init(can, item, item.list, function(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)
|
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.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}) })
|
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")
|
can.onmotion.float.auto(can, panel._output, "carte", "input")
|
||||||
}, target)
|
}, target)
|
||||||
}, function() { can.onlayout.topic(can)
|
}, function() { can.misc.Log(can.user.title(), cli.RUN, can)
|
||||||
can.misc.Log(can.user.title(), cli.RUN, can)
|
|
||||||
can.base.Copy(can.onengine.river, can.Conf(chat.RIVER))
|
|
||||||
can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeypop._init(can, target)
|
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()
|
can.base.isFunc(cb) && cb()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_search: function(event, can, msg, panel, cmds, cb) {
|
_search: function(event, can, msg, panel, cmds, cb) {
|
||||||
var sub, mod = can, fun = can, key = ""; can.core.List(cmds[1].split("."), function(value) {
|
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)
|
fun && (sub = mod, mod = fun, fun = mod[value], key = value)
|
||||||
}); if (!sub || !mod || !fun) {
|
}); if (!sub || !mod || !fun) { can.misc.warn("not found", cmds)
|
||||||
// can.misc.narn("not found", cmds)
|
|
||||||
return can.base.isFunc(cb) && cb(msg.Echo("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 },
|
_engine: function(event, can, msg, panel, cmds, cb) { return false },
|
||||||
_remote: function(event, can, msg, panel, cmds, cb) {
|
_remote: function(event, can, msg, panel, cmds, cb) {
|
||||||
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
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(",")
|
var key = panel._name+"."+cmds.join(",")
|
||||||
if (can.user.isLocalFile) { var msg = can.request(event); msg.Clear("append")
|
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)
|
return can.base.isFunc(cb) && cb(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
can.search(can.request({}, {
|
var names = msg.Option("_names")||panel._names||((can.Conf("iceberg")||"/chat/")+panel._name)
|
||||||
time: can.base.Time(null, "%H:%M:%S"), follow: panel._follow, msg: msg, commands: cmds,
|
can.misc.Run(event, can, {names: names, daemon: can.core.Keys(can.ondaemon._list[0], msg._daemon)}, cmds, function(msg) {
|
||||||
})._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) {
|
|
||||||
Volcanos.meta.pack[key] = msg, delete(msg._handle), delete(msg._toast)
|
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 }
|
if (msg.result && msg.result[0] == "warn: ") { can.user.toast(can, msg.Result(), "", 10000); return }
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
@ -62,15 +57,12 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
listen: shy("监听事件", {}, [], function(can, name, cb) {
|
listen: shy("监听事件", {}, [], function(can, name, cb) {
|
||||||
arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(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.misc.Log("signal", name, msg)
|
||||||
can.core.List(can.onengine.listen.meta[name], function(cb) {
|
can.core.List(can.onengine.listen.meta[name], function(cb) {
|
||||||
can.core.CallFunc(cb, {msg: msg})
|
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 }
|
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 }
|
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() }
|
if (target._keys.length == 0) { event.stopPropagation(), event.preventDefault() }
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
var _can_name = ""
|
_can_name = ""
|
||||||
|
@ -142,9 +142,8 @@ Volcanos("base", {help: "数据类型",
|
|||||||
return now
|
return now
|
||||||
},
|
},
|
||||||
Time: function(time, fmt) { var now = this.Date(time)
|
Time: function(time, fmt) { var now = this.Date(time)
|
||||||
var list = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
|
||||||
var list = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
|
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("%y", now.getFullYear())
|
||||||
fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2))
|
fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2))
|
||||||
fmt = fmt.replace("%d", this.Number(now.getDate(), 2))
|
fmt = fmt.replace("%d", this.Number(now.getDate(), 2))
|
||||||
|
@ -78,7 +78,7 @@ Volcanos("core", {help: "数据结构",
|
|||||||
begin > 0 && (s? push({type: "string", text: str.slice(begin), left: s, right: ""}): push(str.slice(begin)))
|
begin > 0 && (s? push({type: "string", text: str.slice(begin), left: s, right: ""}): push(str.slice(begin)))
|
||||||
return res
|
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"]||[]
|
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"]
|
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 }
|
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 }
|
if (item == "cb") { echo = true }
|
||||||
list.push(arg)
|
list.push(arg)
|
||||||
})
|
})
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js",
|
Volcanos({name: "chat", panels: [
|
||||||
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panels: [
|
|
||||||
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username", "avatar"]},
|
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username", "avatar"]},
|
||||||
{name: "Search", help: "搜索框", pos: "auto"},
|
{name: "Search", help: "搜索框", pos: "auto"},
|
||||||
{name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]},
|
{name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]},
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
|
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) {
|
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.feature = can.base.Obj(item.feature||item.meta)
|
||||||
item.inputs = can.base.Obj(item.inputs||item.list)
|
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.onappend.plugin(can, item, function(sub, meta) {
|
||||||
can.onimport._plugin(can, river, storm, sub, meta), next()
|
can.onimport._plugin(can, river, storm, sub, meta), next()
|
||||||
})
|
})
|
||||||
}, function() {
|
}, 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)
|
!can.user.isMobile && can.onimport._menu(can, msg)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
can._menu && can.page.Remove(can, can._menu)
|
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"), [
|
can.base.Obj(msg.Option("menus"), [
|
||||||
// ["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
// ["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
||||||
["help", "tutor", "manual", "service", "devops", "refer"],
|
["help", "tutor", "manual", "service", "devops", "refer"],
|
||||||
@ -55,8 +55,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
},
|
},
|
||||||
_share: function(can, share) {
|
_share: function(can, share) {
|
||||||
share && can.run({}, ["_share", share], function(msg) {
|
share && can.run({}, ["_share", share], function(msg) {
|
||||||
can.user.topic(can, can.user.Search(can, can._TOPIC)||msg.Option(can._TOPIC)||"white")
|
can.user.topic(can, can.user.Search(can, chat.TOPIC)||msg.Option(chat.TOPIC)||"white")
|
||||||
can.user.title(can.user.Search(can, can._TITLE)||msg.Option(can._TITLE))
|
can.user.title(can.user.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
|
||||||
can.onaction.layout(can, "auto")
|
can.onaction.layout(can, "auto")
|
||||||
|
|
||||||
if (msg["index"].length == 1) { can.user.mod.isCmd = true
|
if (msg["index"].length == 1) { can.user.mod.isCmd = true
|
||||||
@ -69,18 +69,18 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
} else {
|
} else {
|
||||||
can.Conf({width: window.innerWidth, height: window.innerHeight})
|
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)
|
can.onimport._init(can, msg)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, page, msg, can, cmds, cb) {
|
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 river = list[cmds[0]]
|
||||||
var storm = river && river.storm[cmds[1]]
|
var storm = river && river.storm[cmds[1]]
|
||||||
if (!storm || cmds.length != 2) { return false }
|
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)
|
can.run(event, cmds, cb)
|
||||||
} else {
|
} else {
|
||||||
can.core.List(storm.action, function(value) {
|
can.core.List(storm.action, function(value) {
|
||||||
@ -101,12 +101,6 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
}
|
}
|
||||||
can.base.isFunc(cb) && cb()
|
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) {
|
onmain: function(can, msg) {
|
||||||
var cmds = location.pathname.split("/").slice(1)
|
var cmds = location.pathname.split("/").slice(1)
|
||||||
if (cmds[0] == cli.CMD) {
|
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}) },
|
onresize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
||||||
onsearch: function(can, msg, word) {
|
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)
|
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) }
|
function key(name) { return can.core.Keys(can.Conf(chat.RIVER), can.Conf(chat.STORM), name) }
|
||||||
can.page.Cache(key(can._ACTION), can._action, can._output.scrollTop+1)
|
can.page.Cache(key(ctx.ACTION), can._action, can._output.scrollTop+1)
|
||||||
can.page.Cache(key(can._OUTPUT), can._output, 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) // 转场
|
can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) // 转场
|
||||||
var position = can.page.Cache(key(can._ACTION), can._action)
|
var position = can.page.Cache(key(ctx.ACTION), can._action)
|
||||||
var position = can.page.Cache(key(can._OUTPUT), can._output)
|
var position = can.page.Cache(key(chat.OUTPUT), can._output)
|
||||||
if (position) { can._output.scrollTo(0, position-1); return }
|
if (position) { can._output.scrollTo(0, position-1); return }
|
||||||
|
|
||||||
can.run({}, [river, storm], function(msg) {
|
can.run({}, [river, storm], function(msg) {
|
||||||
@ -149,7 +143,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
"自由布局": "free",
|
"自由布局": "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._action, {className: "action "+layout})
|
||||||
can.page.Modify(can, can._output, {className: "output "+layout})
|
can.page.Modify(can, can._output, {className: "output "+layout})
|
||||||
|
|
||||||
@ -176,23 +170,23 @@ Volcanos("onexport", {help: "导出数据", list: [],
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
size: function(can, msg) {
|
size: function(can, msg) {
|
||||||
msg.Option(can._TOP, can._target.offsetTop)
|
msg.Option(chat.TOP, can._target.offsetTop)
|
||||||
msg.Option(can._LEFT, can._target.offsetLeft)
|
msg.Option(chat.LEFT, can._target.offsetLeft)
|
||||||
msg.Option(can._WIDTH, can._target.offsetWidth)
|
msg.Option(chat.WIDTH, can._target.offsetWidth)
|
||||||
msg.Option(can._HEIGHT, can._target.offsetHeight)
|
msg.Option(chat.HEIGHT, can._target.offsetHeight)
|
||||||
msg.Option(can._SCROLL, can.user.isMobile? can._target.parentNode.parentNode.scrollTop: can._output.scrollTop)
|
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) {
|
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) {
|
can.page.Select(can, can._output, "fieldset.plugin>legend", function(item) {
|
||||||
if (item.innerHTML.indexOf(word[1]) == -1) { return }
|
if (item.innerHTML.indexOf(word[1]) == -1) { return }
|
||||||
|
|
||||||
var meta = item.parentNode.Meta
|
var meta = item.parentNode.Meta
|
||||||
var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" })
|
var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" })
|
||||||
|
|
||||||
var data = {ctx: "web.chat", cmd: can._ACTION,
|
var data = {ctx: "web.chat", cmd: ctx.ACTION,
|
||||||
type: can._PLUGIN, name: item.innerHTML, text: shy("跳转", function(event) {
|
type: mdb.PLUGIN, name: item.innerHTML, text: shy("跳转", function(event) {
|
||||||
var input = can.page.Select(can, item.parentNode, "input.args")[0]
|
var input = can.page.Select(can, item.parentNode, "input.args")[0]
|
||||||
input && input.focus()
|
input && input.focus()
|
||||||
}), argument: JSON.stringify(list),
|
}), argument: JSON.stringify(list),
|
||||||
|
@ -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.page.Modify(can, can.toast, [time.split(" ").pop(), title, content].join(" "))
|
||||||
can._toast.Push({time: time, fileline: fileline, title: title, content: content})
|
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()
|
ncmd: function(can, msg, follow, cmds) { const NCMD = "ncmd"; can._cmds = can._cmds || can.request()
|
||||||
can._cmds.Push({time: time, follow: follow, commands: commands})
|
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) {
|
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+"")+""
|
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) {
|
_cmd: function(can) {
|
||||||
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
||||||
var commands = can.base.Obj(line.commands); switch (line.follow) {
|
var cmds = can.base.Obj(line.cmds); switch (line.follow) {
|
||||||
case "chat.Action": commands = commands.slice(2); break
|
case "chat.Action": cmds = cmds.slice(2); break
|
||||||
case "chat.Footer": commands = commands.slice(2); break
|
case "chat.Footer": cmds = cmds.slice(2); break
|
||||||
}
|
}
|
||||||
switch (commands[0]) {
|
switch (cmds[0]) {
|
||||||
case "web.wiki.word": commands = commands.slice(5); break
|
case "web.wiki.word": cmds = cmds.slice(5); break
|
||||||
}
|
}
|
||||||
|
|
||||||
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
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) {
|
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}})
|
can.page.Modify(can, sub._output, {style: {"max-width": width}})
|
||||||
|
@ -52,7 +52,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) {
|
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) {
|
cmds.length == 0 && can.core.Item(list, function(key, value) {
|
||||||
msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表
|
msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表
|
||||||
}); if (cmds.length != 1 && cmds[1] != chat.TOOL) { return false }
|
}); 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 },
|
width: function(can) { return can._target.offsetWidth },
|
||||||
storm: function(can, msg, word) {
|
storm: function(can, msg, word) {
|
||||||
var fields = (msg.Option(ice.MSG_FIELDS)||"ctx,cmd,type,name,text").split(",")
|
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) {
|
can.core.Item(value.storm, function(storm, item) {
|
||||||
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }
|
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }
|
||||||
|
|
||||||
|
87
proto.js
87
proto.js
@ -6,6 +6,7 @@ const kit = {
|
|||||||
MDB_TYPE: "type",
|
MDB_TYPE: "type",
|
||||||
MDB_NAME: "name",
|
MDB_NAME: "name",
|
||||||
MDB_TEXT: "text",
|
MDB_TEXT: "text",
|
||||||
|
MDB_HELP: "help",
|
||||||
|
|
||||||
MDB_LINK: "link",
|
MDB_LINK: "link",
|
||||||
MDB_VALUE: "value",
|
MDB_VALUE: "value",
|
||||||
@ -49,8 +50,8 @@ const web = {
|
|||||||
const aaa = {
|
const aaa = {
|
||||||
USERNAME: "username",
|
USERNAME: "username",
|
||||||
USERNICK: "usernick",
|
USERNICK: "usernick",
|
||||||
AVATAR: "avatar",
|
|
||||||
BACKGROUND: "background",
|
BACKGROUND: "background",
|
||||||
|
AVATAR: "avatar",
|
||||||
|
|
||||||
LOGIN: "login",
|
LOGIN: "login",
|
||||||
LOGOUT: "logout",
|
LOGOUT: "logout",
|
||||||
@ -58,9 +59,9 @@ const aaa = {
|
|||||||
}
|
}
|
||||||
const mdb = {
|
const mdb = {
|
||||||
CREATE: "create",
|
CREATE: "create",
|
||||||
|
REMOVE: "remove",
|
||||||
INSERT: "insert",
|
INSERT: "insert",
|
||||||
MODIFY: "modify",
|
MODIFY: "modify",
|
||||||
REMOVE: "remove",
|
|
||||||
PLUGIN: "plugin",
|
PLUGIN: "plugin",
|
||||||
|
|
||||||
HASH: "hash",
|
HASH: "hash",
|
||||||
@ -105,6 +106,14 @@ const chat = {
|
|||||||
TOOL: "tool",
|
TOOL: "tool",
|
||||||
NODE: "node",
|
NODE: "node",
|
||||||
|
|
||||||
|
LAYOUT: "layout",
|
||||||
|
OUTPUT: "output",
|
||||||
|
SCROLL: "scroll",
|
||||||
|
HEIGHT: "height",
|
||||||
|
WIDTH: "width",
|
||||||
|
TOP: "top",
|
||||||
|
LEFT: "left",
|
||||||
|
|
||||||
HEADER: "header",
|
HEADER: "header",
|
||||||
TOPIC: "topic",
|
TOPIC: "topic",
|
||||||
TITLE: "title",
|
TITLE: "title",
|
||||||
@ -147,8 +156,8 @@ const html = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function shy(help, meta, list, cb) {
|
function shy(help, meta, list, cb) {
|
||||||
var index = 0, args = arguments; function next(check) {
|
var index = 0, args = arguments; function next(type) {
|
||||||
if (index < args.length && (!check || check == typeof args[index])) {
|
if (index < args.length && (!type || type == typeof args[index])) {
|
||||||
return args[index++]
|
return args[index++]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,12 +168,10 @@ function shy(help, meta, list, cb) {
|
|||||||
cb.list = next("object") || []
|
cb.list = next("object") || []
|
||||||
return cb
|
return cb
|
||||||
}; var _can_name = ""
|
}; 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
|
var meta = arguments.callee.meta, list = arguments.callee.list
|
||||||
if (typeof name == "object") { var Config = name; _can_name = ""
|
if (typeof name == "object") { var Config = name; Config.panels = Config.panels||[], Config.main = Config.main||{}
|
||||||
meta.libs = Config.libs, meta.volcano = Config.volcano
|
meta.libs = ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"]
|
||||||
Config.panels = Config.panels||[]
|
|
||||||
Config.main = Config.main||{}
|
|
||||||
|
|
||||||
// 预加载
|
// 预加载
|
||||||
var Preload = (Config.preload||[]).concat(Config.main.list)
|
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)
|
}; Preload = Preload.concat(Config.plugin)
|
||||||
|
|
||||||
// 根模块
|
// 根模块
|
||||||
name = Config.name, can = {_follow: Config.name, _target: document.body}
|
name = Config.name, can = {_follow: Config.name, _target: Config.target||document.body}
|
||||||
libs = Preload.concat(Config.libs, Config.volcano), cb = function(can) {
|
libs = Preload.concat(Config.libs||meta.libs, Config.volcano||meta.volcano), cb = function(can) {
|
||||||
can.onengine._init(can, can.Conf(Config), Config.panels, function(msg) {
|
can.onengine._init(can, can.Conf(Config), Config.panels, Config._init, can._target)
|
||||||
can.base.isFunc(Config._init) && Config._init(can)
|
}, _can_name = "", can._root = can
|
||||||
}, can._target)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var proto = {__proto__: meta, _name: name, _load: function(name, cb) { // 加载缓存
|
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 cache = meta.cache[name]||[]; for (list.reverse(); list.length > 0; list) {
|
||||||
var sub = list.pop(); sub != can && cache.push(sub)
|
var sub = list.pop(); sub != can && cache.push(sub)
|
||||||
}; meta.cache[name] = cache
|
}; 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) }
|
function next() { can._load(libs[0], each), can.require(libs.slice(1), cb, each) }
|
||||||
meta.cache[libs[0]]? next(): meta._load(libs[0], next)
|
meta.cache[libs[0]]? next(): meta._load(libs[0], next)
|
||||||
},
|
},
|
||||||
request: function(event, option) { event = event || {}
|
request: function(event, option) { event = event||{}
|
||||||
event._msg = event._msg || can.misc.Message(event, can)
|
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.core.List(arguments, function(option, index) { if (index == 0) { return }
|
||||||
can.base.isFunc(option.Option)? can.core.List(option.Option(), function(key) {
|
can.base.isFunc(option.Option)? can.core.List(option.Option(), function(key) {
|
||||||
set(key, option.Option(key))
|
set(key, option.Option(key))
|
||||||
}): can.core.Item(can.base.isFunc(option)? option(): option, set)
|
}): can.core.Item(can.base.isFunc(option)? option(): option, set)
|
||||||
|
}); return msg
|
||||||
}); return event._msg
|
|
||||||
},
|
},
|
||||||
|
|
||||||
get: function(name, key) { var event = {}
|
set: function(name, key, value) {
|
||||||
return can.search(event, [name+".onexport."+key])
|
var msg = can.request({}); msg.Option(key, value)
|
||||||
},
|
return can.search(msg._event, [name+".onimport."+key])
|
||||||
set: function(name, key, value) { var event = {}
|
|
||||||
var msg = can.request(event); msg.Option(key, value)
|
|
||||||
return can.search(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) },
|
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: {},
|
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) { // 加入缓存
|
if (_can_name) { // 加入缓存
|
||||||
meta.cache[_can_name] = meta.cache[_can_name] || []
|
meta.cache[_can_name] = meta.cache[_can_name]||[]
|
||||||
meta.cache[_can_name].push(can)
|
meta.cache[_can_name].push(can)
|
||||||
} else { // 加入队列
|
} else { // 加入队列
|
||||||
list.push(can)
|
list.push(can)
|
||||||
@ -249,20 +246,20 @@ Volcanos.meta._load = function(url, cb) {
|
|||||||
case "css":
|
case "css":
|
||||||
var item = document.createElement(kit.MDB_LINK)
|
var item = document.createElement(kit.MDB_LINK)
|
||||||
item.rel = "stylesheet", item.type = "text/css"
|
item.rel = "stylesheet", item.type = "text/css"
|
||||||
item.href = url; item.onload = cb
|
item.onload = cb, item.href = url
|
||||||
document.head.appendChild(item)
|
break
|
||||||
return item
|
|
||||||
case "js":
|
case "js":
|
||||||
var item = document.createElement(ssh.SCRIPT)
|
var item = document.createElement(ssh.SCRIPT)
|
||||||
item.src = url, item.onload = cb
|
item.onload = cb, item.src = url
|
||||||
document.body.appendChild(item)
|
break
|
||||||
return item
|
default: return
|
||||||
}
|
}
|
||||||
|
return document.body.appendChild(item), item
|
||||||
}
|
}
|
||||||
function cmd(tool) {
|
function cmd(tool) {
|
||||||
Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js", preload: [],
|
Volcanos({name: "chat", panels: [
|
||||||
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"],
|
{name: "cmd", help: "工作台", pos: "main", tool: tool},
|
||||||
panels: [{name: "cmd", help: "工作台", pos: "main", tool: tool}], main: {name: "cmd", list: []}, plugin: [
|
], main: {name: "cmd", list: []}, plugin: [
|
||||||
"/plugin/state.js",
|
"/plugin/state.js",
|
||||||
"/plugin/input.js",
|
"/plugin/input.js",
|
||||||
"/plugin/table.js",
|
"/plugin/table.js",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user