1
0
forked from x/volcanos
This commit is contained in:
harveyshao 2022-01-09 03:27:35 +08:00
parent 5302625093
commit fb41d101a0
18 changed files with 100 additions and 112 deletions

View File

@ -2,9 +2,8 @@ _can_name = "/frame.js"
Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) {
can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]
return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb)
}, can.river = can.Conf(chat.RIVER)||{}
if (can.user.isExtension) { Volcanos.meta.args = JSON.parse(localStorage.getItem("args"))||{} }
}
if (can.user.isExtension) { Volcanos.meta.args = JSON.parse(localStorage.getItem(ctx.ARGS))||{} }
can.core.Next(list, function(item, next) { item.type = chat.PANEL
can.onappend._init(can, item, item.list, function(panel) {
@ -15,42 +14,19 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
can.core.ItemCB(panel.onaction, function(key, cb) {
can.onengine.listen(can, key, function(msg) { can.core.CallFunc(cb, {can: panel, msg: msg}) })
}), panel.onaction._init(panel, item, item.list, next, panel._target)
can.onmotion.float.auto(can, panel._output)
// panel.onkeypop._build(panel)
}, target)
}, function() { can.misc.Log(can.user.title(), ice.RUN, can)
can.require(["/frame.js"], null, function(can, name, sub) { can[name] = sub })
can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeypop._init(can)
can.onlayout.topic(can), can.onengine.signal(can, chat.ONMAIN, can.request())
can.require([can.volcano], null, function(can, name, sub) { can[name] = sub })
can.onlayout.topic(can), can.onmotion._init(can, target), can.onkeypop._init(can)
can.ondaemon._init(can), can.onengine.signal(can, chat.ONMAIN, can.request())
can.base.isFunc(cb) && cb()
can.onengine.listen(can, "onsearch", function(msg, word) {
if (word[0] == "*" || word[0] == ctx.COMMAND) { var meta = can.onengine.plugin.meta
var list = word[1] == ""? meta: meta[word[1]]? kit.Dict(word[1], meta[word[1]]): {}
can.core.Item(list, function(name, command) {
name = can.base.trimPrefix(name, "can.")
can.core.List(msg.Option(ice.MSG_FIELDS).split(ice.FS), function(item) {
msg.Push(item, kit.Dict(
"ctx", "onengine",
"cmd", "command",
"type", "can",
"name", name,
"text", command.help,
"context", "can",
"command", name,
)[item]||"")
})
})
}
})
})
},
_search: function(event, can, msg, panel, cmds, cb) {
var sub, mod = can, fun = can, key = ""; can.core.List(cmds[1].split(ice.PT), function(value) {
fun && (sub = mod, mod = fun, fun = mod[value], key = value)
}); if (!sub || !mod || !fun) { can.misc.Warn("not found", cmds)
return can.base.isFunc(cb) && cb(msg.Echo("warn: ", "not found: ", cmds))
}); if (!sub || !mod || !fun) { can.misc.Warn(ice.ErrNotFound, cmds)
return can.base.isFunc(cb) && cb(msg.Echo(ice.ErrWarn, ice.ErrNotFound, cmds))
}
return can.core.CallFunc(fun, {
@ -64,7 +40,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
can.onengine.signal(can, "onremote", can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds}))
var key = can.core.Keys(panel._name, cmds.join(","))
var key = can.core.Keys(panel._name, cmds.join(ice.FS))
if (can.user.isLocalFile) { var msg = can.request(event); msg.Clear(ice.MSG_APPEND)
var res = Volcanos.meta.pack[key]; res? msg.Copy(res): can.user.toast(can, "缺失数据")
return can.base.isFunc(cb) && cb(msg)
@ -73,7 +49,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
var names = msg.Option("_names")||panel._names||((can.Conf("iceberg")||"/chat/")+panel._name)
can.misc.Run(event, can, {names: names, daemon: can.core.Keys(can.ondaemon._list[0], msg._daemon)}, cmds, function(msg) {
Volcanos.meta.pack[key] = msg, delete(msg._handle), delete(msg._toast)
if (msg.result && msg.result[0] == "warn: ") { can.user.toast(can, msg.Result(), "", 10000); return }
if (msg.result && msg.result[0] == ice.ErrWarn) { can.user.toast(can, msg.Result(), "", 10000); return }
can.base.isFunc(cb) && cb(msg)
})
},
@ -105,13 +81,26 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
}),
})
Volcanos("ondaemon", {help: "推荐引擎", list: [], _init: function(can, name) { if (can.user.isLocalFile) { return }
can.misc.WSS(can, {type: "chrome", name: can.misc.Search(can, "daemon")||name||""}, function(event, msg, cmd, arg) { if (!msg) { return }
can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, "daemon")||name||""}, function(event, msg, cmd, arg) { if (!msg) { return }
can.base.isFunc(can.ondaemon[cmd])? can.core.CallFunc(can.ondaemon[cmd], {
"can": can, "msg": msg, "cmd": cmd, "arg": arg, "cb": function() { msg.Reply() },
}): can.onengine._search({}, can, msg, can, ["_search", cmd].concat(arg), function() {
msg.Reply()
})
})
can.onengine.listen(can, "onsearch", function(msg, word) { var meta = can.onengine.plugin.meta
if (word[0] != "*" && word[0] != ctx.COMMAND) { return }
var list = word[1] == ""? meta: meta[word[1]]? kit.Dict(word[1], meta[word[1]]): {}
can.core.Item(list, function(name, command) { name = can.base.trimPrefix(name, "can.")
can.core.List(msg.Option(ice.MSG_FIELDS).split(ice.FS), function(item) {
msg.Push(item, kit.Dict(
"ctx", "onengine", "cmd", "command",
"type", "can", "name", name, "text", command.help,
"context", "can", "command", name,
)[item]||"")
})
})
})
}, _list: [""],
pwd: function(can, msg, arg) {
can.ondaemon._list[0] = arg[0]
@ -142,7 +131,6 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
Status: function(key, value) {
if (sub.base.isObject(key)) { return sub.core.Item(key, sub.Status), key }
sub.page.Select(sub, status, "div."+key+">span", function(item) {
return value == undefined? (value = item.innerHTML): (item.innerHTML = value)
}); return value
@ -155,11 +143,9 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
silent || cmds[0] == ctx.ACTION || sub.base.Eq(sub._history[sub._history.length-1], cmds) || sub._history.push(cmds)
return cmds
},
Clone: function() {
meta.args = sub.page.SelectArgs(sub, option, "")
can.onappend._init(can, meta, list, function(sub) {
Clone: function() { meta.args = sub.page.SelectArgs(sub, option, "")
can.onappend._init(can, meta, list, function(sub) { can.base.isFunc(cb) && cb(sub, true)
can.core.Timer(10, function() { for (var k in sub._inputs) { can.onmotion.focus(can, sub._inputs[k]._target); break } })
can.base.isFunc(cb) && cb(sub, true)
}, target)
},
}, list, function(sub) { sub.Conf(meta), meta.feature = sub.base.Obj(meta.feature, {})
@ -168,9 +154,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
sub.page.Modify(sub, sub._legend, {onmouseenter: function(event) {
sub.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([["所有 ->"].concat(can.core.Item(meta.feature._trans))], ["close"]))
}})
}}), meta.inputs && sub.onappend._option(sub, meta, sub._option)
meta.inputs && sub.onappend._option(sub, meta, sub._option)
can.base.isFunc(cb) && cb(sub)
}); return sub
},
@ -303,8 +288,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
},
table: function(can, msg, cb, target, sort) {
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
if (msg.append.length == 2 && msg.append[0] == kit.MDB_KEY && msg.append[1] == kit.MDB_VALUE) {
if (key == kit.MDB_VALUE) { key = line.key }
if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) {
if (key == mdb.VALUE) { key = line.key }
line = {}, can.core.List(array, function(item) { line[item.key] = item.value })
}
@ -326,7 +311,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
return
}
can.sup.onaction.change(event, can.sup, key, value)
}, ondblclick: function(event) { if ([kit.MDB_KEY].indexOf(key) > -1) { return }
}, ondblclick: function(event) { if ([mdb.KEY].indexOf(key) > -1) { return }
var item = can.core.List(can.Conf("feature.insert"), function(item) {
if (item.name == key) { return item }
})[0]||{name: key, value: value}
@ -352,7 +337,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
},
figure: function(can, meta, target, cb) { if ([html.BUTTON, html.SELECT].indexOf(meta.type) > -1) { return }
var input = meta.action||kit.MDB_KEY; input != "auto" && can.require(["/plugin/input/"+input+".js"], function(can) {
var input = meta.action||mdb.KEY; input != "auto" && can.require(["/plugin/input/"+input+".js"], function(can) {
can.core.ItemCB(can.onfigure[input], function(key, on) {
target[key] = function(event) {
can.onappend._init(can, {type: html.INPUT, name: input, pos: chat.FLOAT}, [], function(sub) { sub.Conf(meta)
@ -555,7 +540,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
story: {
_hash: {
spark: function(can, meta, target) {
if (meta[kit.MDB_NAME] == "inner") {
if (meta[mdb.NAME] == "inner") {
target.title = "点击复制", target.onclick = function(event) {
can.user.copy(event, can, target.innerText)
}

View File

@ -63,7 +63,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
Push: function(key, value, detail) {
if (can.base.isObject(key)) {
value = value || can.core.Item(key), can.core.List(value, function(item) {
detail? msg.Push(kit.MDB_KEY, item).Push(kit.MDB_VALUE, key[item]||""):
detail? msg.Push(mdb.KEY, item).Push(mdb.VALUE, key[item]||""):
msg.Push(item, key[item]||"")
})
return msg

View File

@ -12,8 +12,8 @@ Volcanos("user", {help: "用户操作", agent: {
} );
},
openLocation: function(msg) {
window.open("https://map.baidu.com/search/"+encodeURIComponent(msg.Option(kit.MDB_TEXT))
+"/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd="+encodeURIComponent(msg.Option(kit.MDB_TEXT)))
window.open("https://map.baidu.com/search/"+encodeURIComponent(msg.Option(mdb.TEXT))
+"/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd="+encodeURIComponent(msg.Option(mdb.TEXT)))
},
chooseImage: function(cb) {
typeof cb == lang.FUNCTION && cb([])
@ -114,9 +114,9 @@ Volcanos("user", {help: "用户操作", agent: {
share: function(can, msg, cmd) {
can.run(msg._event, cmd||[ctx.ACTION, chat.SHARE], function(msg) {
can.user.toast(can, {height: 300, width: 500,
title: msg.Append(kit.MDB_NAME), duration: -1,
content: msg.Append(kit.MDB_TEXT), action: [cli.CLOSE],
}), can.user.copy(msg._event, can, msg.Append(kit.MDB_NAME))
title: msg.Append(mdb.NAME), duration: -1,
content: msg.Append(mdb.TEXT), action: [cli.CLOSE],
}), can.user.copy(msg._event, can, msg.Append(mdb.NAME))
})
},
login: function(can, cb, method) {

View File

@ -53,7 +53,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
can.user.title(can.misc.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
can.onaction.layout(can, "auto")
if (msg[kit.MDB_INDEX].length == 1) { can.require(["/panel/cmd.css"])
if (msg[mdb.INDEX].length == 1) { can.require(["/panel/cmd.css"])
can.user.mod.isCmd = true, can.page.ClassList.add(can, can._target, "cmd")
can.page.Select(can, document.body, "fieldset.panel", function(item) {
item != can._target && can.onmotion.hidden(can, item)

View File

@ -42,13 +42,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, onmouseenter: function(event) {
var list = msg.Table()
can.user.carte(event, can, {}, can.core.List(list, function(item) { return item.name }), function(event, item, meta, index) {
can.user.open(list[index].path)
event.shiftKey? can.user.open(list[index].path): can.user.jumps(list[index].path)
})
}}])
})
},
_state: function(can, msg, target) {
can.core.List(can.base.Obj(msg.Option(chat.STATE)||can.Conf(chat.STATE), [kit.MDB_TIME, aaa.USERNICK]), function(item) {
can.core.List(can.base.Obj(msg.Option(chat.STATE)||can.Conf(chat.STATE), [mdb.TIME, aaa.USERNICK]), function(item) {
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.onaction.carte(event, can, [can.page.Format(html.IMG, "/share/local/avatar", 160)])
@ -57,7 +57,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.page.Append(can, target, [{view: [can.base.join([chat.STATE, item]), html.DIV, (can.Conf(item)||"").slice(0, 10)], onmouseenter: function(event) {
can.core.CallFunc([can.onaction, item], [event, can, item])
}, _init: function(target) { item == kit.MDB_TIME && can.onimport._time(can, target) }}])
}, _init: function(target) { item == mdb.TIME && can.onimport._time(can, target) }}])
})
},
_search: function(can, msg, target) {
@ -187,7 +187,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
can.set("River", html.HEIGHT, -1), can.set("Action", html.HEIGHT, -1)
},
webpack: function(event, can) {
can.user.input(event, can, [{name: kit.MDB_NAME, value: can.user.title()}], function(ev, button, meta, list) {
can.user.input(event, can, [{name: mdb.NAME, value: can.user.title()}], function(ev, button, meta, list) {
can.core.Item(Volcanos.meta.pack, function(key, msg) {
can.core.List(["_event", "_can", "_xhr", ice.MSG_SESSID, ""], function(key) { delete(msg[key]) })
})
@ -210,7 +210,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
usernick: function(event, can) {
can.onaction.carte(event, can, ["shareuser", "setnick", [aaa.LANGUAGE, aaa.CHINESE, aaa.ENGLISH], cli.CLEAR, aaa.LOGOUT])
},
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, kit.MDB_TYPE, aaa.LOGIN]) },
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, mdb.TYPE, aaa.LOGIN]) },
setnick: function(event, can) {
var ui = can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(ev, button, data, list, args) {
can.run(event, [aaa.USERNICK, list[0]], function(msg) {

View File

@ -130,8 +130,8 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
create: function(event, can) {
can.user.trans(can, {"public": "公开群", "protected": "内部群", "private": "私有群"})
can.user.input(event, can, [
{name: kit.MDB_TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
{name: kit.MDB_NAME, value: "hi", _trans: "群名"}, {name: kit.MDB_TEXT, value: "hello", _trans: "简介"},
{name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
{name: mdb.NAME, value: "hi", _trans: "群名"}, {name: mdb.TEXT, value: "hello", _trans: "简介"},
], function(event, button, meta, list, args) {
can.run(event, [ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
can.misc.Search(can, {river: msg.Result()})
@ -157,20 +157,20 @@ Volcanos("ondetail", {help: "菜单交互",
"创建群组": function(event, can) { can.onaction.create(event, can) },
"共享群组": function(event, can, button, river) {
can.user.input(event, can, [{name: chat.TILTE, value: river, _trans: "标题"}], function(event, button, meta, list) {
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, kit.MDB_TYPE, chat.RIVER, kit.MDB_NAME, list[0]])
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, mdb.TYPE, chat.RIVER, mdb.NAME, list[0]])
})
},
"添加应用": function(event, can, button, river) { can.ondetail.create(event, can, button, river) },
"共享应用": function(event, can, button, river, storm) {
can.user.input(event, can, [{name: chat.TILTE, value: storm, _trans: "标题"}], function(event, button, meta, list) {
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, kit.MDB_TYPE, chat.STORM, kit.MDB_NAME, list[0],
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, mdb.TYPE, chat.STORM, mdb.NAME, list[0],
chat.STORM, storm, chat.RIVER, river,
])
})
},
"添加工具": function(event, can, button, river, storm) {
can.user.select(event, can, ctx.COMMAND, "context,command", function(item, next) {
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.INSERT, kit.MDB_HASH, storm].concat([ice.POD, "", ice.CTX, item[0], ice.CMD, item[1]]), function(msg) {
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.INSERT, mdb.HASH, storm].concat([ice.POD, "", ice.CTX, item[0], ice.CMD, item[1]]), function(msg) {
next()
})
}, function() {
@ -179,15 +179,15 @@ Volcanos("ondetail", {help: "菜单交互",
},
"共享工具": function(event, can, button, river, storm) {
can.user.select(event, can, mdb.PLUGIN, "name,context,command,argument", function(item, next) {
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, kit.MDB_TYPE, chat.FIELD,
kit.MDB_NAME, item[2], kit.MDB_TEXT, item[3], chat.TITLE, item[0], chat.RIVER, river, chat.STORM, storm,
can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, mdb.TYPE, chat.FIELD,
mdb.NAME, item[2], mdb.TEXT, item[3], chat.TITLE, item[0], chat.RIVER, river, chat.STORM, storm,
])
})
},
"添加设备": function(event, can, button, river) {
can.user.select(event, can, web.SPACE, "type,name,text", function(item, next) {
can.run({}, [river, chat.NODE, ctx.ACTION, mdb.INSERT, kit.MDB_TYPE, item[0], kit.MDB_NAME, item[1]], function(msg) {
can.run({}, [river, chat.NODE, ctx.ACTION, mdb.INSERT, mdb.TYPE, item[0], mdb.NAME, item[1]], function(msg) {
next()
})
})
@ -203,7 +203,7 @@ Volcanos("ondetail", {help: "菜单交互",
"创建空间": function(event, can, button, river, storm) { can.request(event, {action: button})
can.user.input(event, can, [{name: "name", value: "hi"}, {name: "repos"}, {name: "template"}], function(event, button, data, list, args) {
can.run(event, [ctx.ACTION, cli.START].concat(args, chat.RIVER, river), function(msg) {
var link = can.misc.MergeURL(can, {_path: "/chat/pod/"+can.core.Keys(can.misc.Search(can, ice.POD), msg.Option(kit.MDB_NAME))})
var link = can.misc.MergeURL(can, {_path: "/chat/pod/"+can.core.Keys(can.misc.Search(can, ice.POD), msg.Option(mdb.NAME))})
can.user.toast(can, link), can.user.open(link)
})
})
@ -221,8 +221,8 @@ Volcanos("ondetail", {help: "菜单交互",
})
},
"重命名群组": function(event, can, button, river) {
can.user.input(event, can, [kit.MDB_NAME], function(event, button, meta, list) {
can.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.MODIFY, kit.MDB_NAME, meta.name], function(msg) {
can.user.input(event, can, [mdb.NAME], function(event, button, meta, list) {
can.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.MODIFY, mdb.NAME, meta.name], function(msg) {
can.misc.Search(can, {river: river})
})
})
@ -241,7 +241,7 @@ Volcanos("ondetail", {help: "菜单交互",
})
},
"重命名应用": function(event, can, button, river, storm) {
can.user.input(event, can, [kit.MDB_NAME], function(ev, button, meta, list, args) {
can.user.input(event, can, [mdb.NAME], function(ev, button, meta, list, args) {
can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY].concat(args), function(msg) {
can.misc.Search(can, {river: river, storm: storm})
})
@ -257,8 +257,8 @@ Volcanos("ondetail", {help: "菜单交互",
create: function(event, can, button, river) {
can.user.trans(can, {"public": "公开应用", "protected": "群组应用", "private": "个人应用"})
can.user.input(event, can, [
{name: kit.MDB_TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
{name: kit.MDB_NAME, value: "hi", _trans: "名称"}, {name: kit.MDB_TEXT, value: "hello", _trans: "简介"},
{name: mdb.TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
{name: mdb.NAME, value: "hi", _trans: "名称"}, {name: mdb.TEXT, value: "hello", _trans: "简介"},
], function(event, button, meta, list, args) {
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
can.misc.Search(can, {river: river, storm: msg.Result()})

View File

@ -1,7 +1,7 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.list = msg.Table(), can.onmotion.clear(can, can.ui.content)
var table = can.onappend.table(can, msg, function(value, key, index, line, array) { can.Status(kit.MDB_TOTAL, index+1)
return {text: [key == kit.MDB_TEXT && can.base.isFunc(line.text) && line.text.help || value, html.TD], onclick: function(event) {
var table = can.onappend.table(can, msg, function(value, key, index, line, array) { can.Status(mdb.TOTAL, index+1)
return {text: [key == mdb.TEXT && can.base.isFunc(line.text) && line.text.help || value, html.TD], onclick: function(event) {
can.onaction[can.type == "*"||event.ctrlKey? chat.PLUGIN: mdb.SELECT](event, can, index)
}}
}, can.ui.content, can.core.List((msg.Option("sort")||"ctx,cmd,type,name,text").split(ice.FS), function(item) {
@ -88,7 +88,7 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
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)
can.onappend.plugin(can, {type: chat.PLUGIN, index: cmd||msg.Option(kit.MDB_INDEX)}, function(sub, meta) {
can.onappend.plugin(can, {type: chat.PLUGIN, index: cmd||msg.Option(mdb.INDEX)}, function(sub, meta) {
can.getActionSize(function(msg, height, width) { height -= can.ui.content.offsetHeight+204
can.page.Modify(can, sub._output, {style: kit.Dict(html.MAX_HEIGHT, height-26, html.MAX_WIDTH, width-40)})
sub.Conf(html.HEIGHT, height+28), sub.Conf(html.WIDTH, width-60)

View File

@ -18,16 +18,16 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
refresh: function(event, can) { can.run(event) },
onclick: function(event, can) {
if (can.Conf(kit.MDB_TYPE) == html.BUTTON) { can.run(event, [ctx.ACTION, can.Conf(kit.MDB_NAME)].concat(can.sup.Input())) }
if (can.Conf(mdb.TYPE) == html.BUTTON) { can.run(event, [ctx.ACTION, can.Conf(mdb.NAME)].concat(can.sup.Input())) }
},
onchange: function(event, can) {
if (can.Conf(kit.MDB_TYPE) == html.SELECT) { can.run(event) }
if (can.Conf(mdb.TYPE) == html.SELECT) { can.run(event) }
},
onkeydown: function(event, can) {
if (can.Conf(kit.MDB_TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
if (can.Conf(mdb.TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
can.onkeypop.input(event, can, event.target); switch (event.key) {
case lang.ENTER:
switch (can.Conf(kit.MDB_TYPE)) {
switch (can.Conf(mdb.TYPE)) {
case html.TEXTAREA: if (!event.ctrlKey) { return }
case html.TEXT: event.target.setSelectionRange(0, -1); break
}; can.run(event), event.stopPropagation(), event.preventDefault(); break

View File

@ -14,7 +14,7 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {onclick: function(ev
show(msg)
}): can.page.Remove(can, can._target)
}}
}), can.Status(kit.MDB_COUNT, msg.Length())
}), can.Status(mdb.COUNT, msg.Length())
}
show(msg), can.onlayout.figure(event, can)
})

View File

@ -8,7 +8,7 @@ Volcanos("onfigure", {help: "控件详情", list: [], province: {onclick: functi
var china_chart = echarts.init(can.page.Append(can, can._output, [{type: html.DIVk, style: {width: "600px", height: "400px"}}]).first)
china_chart.setOption({geo: {map: 'china'}}), china_chart.on('click', function (params) {
target.value = params.name, can.page.Remove(can, can._target)
}), can.Status(kit.MDB_COUNT, 34)
}), can.Status(mdb.COUNT, 34)
can.onlayout.figure(event, can)
})
}}, })

View File

@ -83,7 +83,7 @@ Volcanos("onaction", {help: "操作数据", list: [],
})
},
"保存": function(event, can) { var msg = can.request(event, can.Option())
can.run(event, [mdb.MODIFY, kit.MDB_TEXT, JSON.stringify(can._meta)], function(msg) {
can.run(event, [mdb.MODIFY, mdb.TEXT, JSON.stringify(can._meta)], function(msg) {
can.user.toastSuccess(can)
}, true)
},

View File

@ -14,8 +14,8 @@ Volcanos("onaction", {source: function(can, msg) {
openLocation: function(msg) { wx.openLocation({
latitude: parseInt(msg.Option("latitude"))/100000,
longitude: parseInt(msg.Option("longitude"))/100000,
name: msg.Option(kit.MDB_NAME), address: msg.Option(kit.MDB_TEXT),
scale: msg.Option("scale")||14, infoUrl: msg.Option(kit.MDB_LINK),
name: msg.Option(mdb.NAME), address: msg.Option(mdb.TEXT),
scale: msg.Option("scale")||14, infoUrl: msg.Option(mdb.LINK),
}) },
chooseImage: function(cb, count) { wx.chooseImage({count: count||9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success: function (res) {
can.base.isFunc(cb) && cb(res.localIds)

View File

@ -300,8 +300,8 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏"],
{name: "name", value: "hello"},
], function(event, button, meta, list) {
can.run(event, [ctx.ACTION, code.FAVOR,
ctx.ACTION, mdb.INSERT, kit.MDB_ZONE, meta.zone||"",
kit.MDB_TYPE, can.parse, kit.MDB_NAME, meta.name||"", kit.MDB_TEXT, (value||"").trimRight(),
ctx.ACTION, mdb.INSERT, mdb.ZONE, meta.zone||"",
mdb.TYPE, can.parse, mdb.NAME, meta.name||"", mdb.TEXT, (value||"").trimRight(),
nfs.PATH, can.Option(nfs.PATH), nfs.FILE, can.Option(nfs.FILE), nfs.LINE, can.Option(nfs.LINE),
], function(msg) {
can.user.toastSuccess(can)

View File

@ -87,7 +87,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
_display: function(can, task) { if (!task["extra.cmd"]) { return }
can.onappend.plugin(can, {type: chat.STORY, ctx: task["extra.ctx"], cmd: task["extra.cmd"], arg: task["extra.arg"]}, function(sub, meta) {
sub.run = function(event, cmds, cb) { var msg = can.request(event, kit.Dict("task.pod", task["pod"], "task.zone", task.zone, "task.id", task.id))
can.run(event, can.misc.concat([ctx.ACTION, ice.RUN, task[kit.MDB_ZONE], task[kit.MDB_ID]], cmds), cb, true)
can.run(event, can.misc.concat([ctx.ACTION, ice.RUN, task[mdb.ZONE], task[mdb.ID]], cmds), cb, true)
}
}, can.ui.display)
can.page.Modify(can, can.ui.display, {style: {display: html.BLOCK}})

View File

@ -93,9 +93,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}})
var figure = can.onfigure._get(can, target)
list = (list||[]).concat(figure.data.copy, [svg.X, svg.Y, kit.MDB_INDEX, kit.MDB_ARGS])
list = (list||[]).concat(figure.data.copy, [svg.X, svg.Y, mdb.INDEX, ctx.ARGS])
can.page.Append(can, can.ui.profile, [{type: html.TABLE, className: "content", list: [
{th: [kit.MDB_KEY, kit.MDB_VALUE]}, {td: [kit.MDB_TYPE, target.tagName]}, {td: ["pid", target.Value("pid")]},
{th: [mdb.KEY, mdb.VALUE]}, {td: [mdb.TYPE, target.tagName]}, {td: ["pid", target.Value("pid")]},
].concat(can.core.List(list, function(key) {
return key = figure.data.size[key]||key, {td: [key, target.Value(key)], ondblclick: function(event) {
can.onmotion.modify(can, event.target, function(event, value, old) {
@ -117,10 +117,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, ["/plugin/local/wiki/draw.css"])
Volcanos("onfigure", {help: "图形绘制", list: [],
_get: function(can, item, name) {
return can.onfigure[name]||can.onfigure[item.getAttribute(kit.MDB_NAME)]||can.onfigure[item.tagName]
return can.onfigure[name]||can.onfigure[item.getAttribute(mdb.NAME)]||can.onfigure[item.tagName]
},
_pid: function(can, item) { if (item.Value("pid")) { return item.Value("pid") }
var pid = "p"+can.svg.Val(kit.MDB_COUNT, can.svg.Val(kit.MDB_COUNT)+1)
var pid = "p"+can.svg.Val(mdb.COUNT, can.svg.Val(mdb.COUNT)+1)
item.Value(html.CLASS, (item.Value(html.CLASS)+ice.SP+item.Value("pid", pid)).trim())
return pid
},
@ -155,7 +155,7 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
text: { // <text x="60" y="10">hi<text>
data: {points: 1, size: {}, copy: [html.INNER]},
draw: function(event, can, point, style) { if (point.length < 1 || event.type == "mousemove") { return }
var p0 = point[0], text = style&&style.inner||can.user.prompt(kit.MDB_TEXT)
var p0 = point[0], text = style&&style.inner||can.user.prompt(mdb.TEXT)
return text? {x: p0.x, y: p0.y, inner: text}: null
},
show: function(can, target, figure) { return can.onexport._position(can, target, figure) }
@ -336,7 +336,7 @@ Volcanos("onaction", {help: "组件菜单", list: [
can.current && can.core.List(can.current.begin, function(item) { var figure = can.onfigure._get(can, item.target)
can.onexport.resize(event, item.target, item, point[0], point[1], can.current.pos)
can.page.Select(can, can.svg, ice.PT+item.target.Value(kit.MDB_TEXT), function(text) {
can.page.Select(can, can.svg, ice.PT+item.target.Value(mdb.TEXT), function(text) {
text.Value(can.onexport._text(can, item.target, figure, {}))
})
can.onfigure._move(can, item.target, item.ship)
@ -348,7 +348,7 @@ Volcanos("onaction", {help: "组件菜单", list: [
},
_auto: function(can, target) {
if (can.point.length > 0) { return }
if (target.tagName == kit.MDB_TEXT) { return }
if (target.tagName == mdb.TEXT) { return }
var pos = can.onexport.cursor(event, can, event.target)
if (target == can.svg) {
@ -414,7 +414,7 @@ Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY,
var cache = can.page.Cache(can._pid, can.ui.display); if (cache) { return }
can.onmotion.clear(can, can.ui.display), can.svg.Value("pid", target.Value("pid"))
var index = target.Value(kit.MDB_INDEX); index && can.onappend.plugin(can, {type: chat.STORY, index: index, args: target.Value(kit.MDB_ARGS)}, function(sub) {
var index = target.Value(mdb.INDEX); index && can.onappend.plugin(can, {type: chat.STORY, index: index, args: target.Value(ctx.ARGS)}, function(sub) {
sub.Conf("height", can.Conf("height")-can.svg.Val("height")-52), sub.Conf("width", can.Conf("width"))
sub.run = function(event, cmds, cb) { can.run(event, can.misc.concat([ice.RUN, index], cmds), cb, true) }
can.onmotion.hidden(can, sub._legend), can.onmotion.hidden(can, can.ui.display, true)
@ -422,7 +422,7 @@ Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY,
},
copy: function(event, can) { can.onfigure._copy(event, can, event.target) },
label: function(event, can) { var target = event.target
var def = target.Value(kit.MDB_TEXT); def && can.page.Select(can, can.svg, ice.PT+def, function(item) {
var def = target.Value(mdb.TEXT); def && can.page.Select(can, can.svg, ice.PT+def, function(item) {
def = item.Value(html.INNER)
})
can.user.prompt(html.LABEL, function(text) {
@ -437,7 +437,7 @@ Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY,
var figure = can.onfigure._get(can, target)
var data = can.onexport._text(can, target, figure, {inner: text})
var item = can.onfigure._push(can, html.TEXT, data, target.Group())
target.Value(kit.MDB_TEXT, can.onfigure._pid(can, item))
target.Value(mdb.TEXT, can.onfigure._pid(can, item))
}, def)
},
modify: function(event, can) { can.onimport._profile(can, event.target) },
@ -448,7 +448,7 @@ Volcanos("ondetail", {help: "组件详情", list: [cli.START, ice.RUN, ice.COPY,
can.page.Remove(can, item)
})
})
target.Value(kit.MDB_TEXT) && can.page.Select(can, can.svg, ice.PT+target.Value(kit.MDB_TEXT), function(item) {
target.Value(mdb.TEXT) && can.page.Select(can, can.svg, ice.PT+target.Value(mdb.TEXT), function(item) {
can.page.Remove(can, item)
})
can.page.Remove(can, target)
@ -481,7 +481,7 @@ Volcanos("onexport", {help: "导出数据", list: ["group", "figure", "index", "
content: function(can, svg) {
return ['<svg vertion="1.1" xmlns="https://www.w3.org/2000/svg" text-anchor="middle" dominant-baseline="middle"'].concat(
svg? can.core.List([html.HEIGHT, html.WIDTH, kit.MDB_COUNT, "pid", "grid", html.STROKE_WIDTH, html.STROKE, html.FILL, html.FONT_SIZE], function(item) {
svg? can.core.List([html.HEIGHT, html.WIDTH, mdb.COUNT, "pid", "grid", html.STROKE_WIDTH, html.STROKE, html.FILL, html.FONT_SIZE], function(item) {
return svg.Value(item)? ice.SP + item + '="' + svg.Value(item) + '"': ""
}): [" height="+((can.Conf(html.HEIGHT)||450)-50)+" width="+(can.Conf(html.WIDTH)||600)]).concat(['>', svg? svg.innerHTML: "", "</svg>"]).join("")
},

View File

@ -81,8 +81,8 @@ Volcanos("onaction", {help: "交互操作", list: [
},
"共享工具": function(event, can) { var meta = can.Conf()
var ui = can.user.input(event, can, [{name: chat.TITLE, value: meta.name}], function(ev, button, data, list) {
var msg = can.request(event, {arg: [kit.MDB_TYPE, chat.FIELD,
kit.MDB_NAME, meta.index, kit.MDB_TEXT, JSON.stringify(can.Input([], true)),
var msg = can.request(event, {arg: [mdb.TYPE, chat.FIELD,
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
chat.TITLE, list[0], chat.RIVER, can.Conf(chat.RIVER), chat.STORM, can.Conf(chat.STORM),
]})
can.search(event, ["Header.onaction.share"])
@ -213,12 +213,12 @@ Volcanos("onaction", {help: "交互操作", list: [
if (navigator.clipboard) {
navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) })
} else {
can.user.input(event, can, [{type: html.TEXTAREA, name: kit.MDB_TEXT}], function(ev, button, data, list, args) { add(list[0]) })
can.user.input(event, can, [{type: html.TEXTAREA, name: mdb.TEXT}], function(ev, button, data, list, args) { add(list[0]) })
}
},
getLocation: function(event, can, button) {
can.user.agent.getLocation(function(data) { can.request(event, data)
can.user.input(event, can, [kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT, "latitude", "longitude"], function(ev, bu, data, list, args) {
can.user.input(event, can, [mdb.TYPE, mdb.NAME, mdb.TEXT, "latitude", "longitude"], function(ev, bu, data, list, args) {
can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) {
can.user.toastSuccess(can), can.Update()
}, true)

View File

@ -143,11 +143,11 @@ Volcanos("ondetail", {help: "用户交互", list: [],
can.request(event, node.meta)
}
var msg = can.request(event, can.Option())
can.run(event, can.base.Obj(can._args.prefix, []).concat([can.Option(kit.MDB_NAME)||"", tree.file||"", tree.name]), function(msg) {
can.run(event, can.base.Obj(can._args.prefix, []).concat([can.Option(mdb.NAME)||"", tree.file||"", tree.name]), function(msg) {
if (msg.Length() == 0) {
return can.ondetail.plugin(can, tree, {}, "web.code.inner", [can.dir_root, tree.file, tree.line], [ctx.ACTION, "inner"])
}
if (msg.Append(kit.MDB_INDEX)) { msg.Table(function(value) {
if (msg.Append(mdb.INDEX)) { msg.Table(function(value) {
can.ondetail.plugin(can, tree, value, value.index, [], [ctx.ACTION, ice.RUN, value.index])
}); return }

View File

@ -59,8 +59,11 @@ var ice = {
MSG_STATUS: "_status",
MSG_DISPLAY: "_display",
MSG_PROCESS: "_process",
PROCESS_AGAIN: "_again",
PROCESS_AGAIN: "_again",
MSG_PREFIX: "_prefix",
ErrWarn: "warn: ",
ErrNotFound: "not found: ",
}
var ctx = {
@ -156,6 +159,7 @@ var chat = {
SSO: "sso", CMD_MARGIN: 53,
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"],
panel_list: [
{name: "Header", help: "标题栏", pos: "head", state: ["time", "usernick", "avatar"]},
{name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]},
@ -235,13 +239,12 @@ function shy(help, meta, list, cb) {
}; var _can_name = "", _can_path = ""
var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: {}, pack: {}, libs: [], cache: {}}, function(name, can, libs, cb) {
var meta = arguments.callee.meta, list = arguments.callee.list
if (typeof name == lang.OBJECT) { var Config = name; Config.panels = Config.panels||chat.panel_list, Config.main = Config.main||{name: "Header"}
Config.plugin = Config.plugin||chat.plugin_list
libs = [], meta.libs = ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"]
meta.iceberg = Config.iceberg||meta.iceberg
if (typeof name == lang.OBJECT) { var Config = name; Config.plugin = Config.plugin||chat.plugin_list
Config.panels = Config.panels||chat.panel_list, Config.main = Config.main||{name: "Header"}
meta.libs = chat.libs, meta.iceberg = Config.iceberg||meta.iceberg
// 预加载
for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i]
libs = []; for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i]
panel && (libs = libs.concat(panel.list = panel.list||["/panel/"+panel.name+".css", "/panel/"+panel.name+".js"]))
}; libs = libs.concat(Config.plugin, Config.main.list)
@ -334,7 +337,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
Volcanos.meta._load = function(url, cb) {
switch (url.split("?")[0].split(ice.PT).pop().toLowerCase()) {
case "css":
var item = document.createElement(kit.MDB_LINK)
var item = document.createElement(mdb.LINK)
item.rel = "stylesheet", item.type = "text/css"
item.onload = cb, item.href = url
return (document.head||document.body).appendChild(item), item