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) { 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)||{} }
if (can.user.isExtension) { Volcanos.meta.args = JSON.parse(localStorage.getItem(ctx.ARGS))||{} }
if (can.user.isExtension) { Volcanos.meta.args = JSON.parse(localStorage.getItem("args"))||{} }
can.core.Next(list, function(item, next) { item.type = chat.PANEL can.core.Next(list, function(item, next) { item.type = chat.PANEL
can.onappend._init(can, item, item.list, function(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.core.ItemCB(panel.onaction, function(key, cb) {
can.onengine.listen(can, key, function(msg) { can.core.CallFunc(cb, {can: panel, msg: msg}) }) 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) }), panel.onaction._init(panel, item, item.list, next, panel._target)
can.onmotion.float.auto(can, panel._output)
// panel.onkeypop._build(panel)
}, target) }, target)
}, function() { can.misc.Log(can.user.title(), ice.RUN, can) }, function() { can.misc.Log(can.user.title(), ice.RUN, can)
can.require(["/frame.js"], null, function(can, name, sub) { can[name] = sub }) can.require([can.volcano], 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.onmotion._init(can, target), can.onkeypop._init(can)
can.onlayout.topic(can), can.onengine.signal(can, chat.ONMAIN, can.request()) can.ondaemon._init(can), can.onengine.signal(can, chat.ONMAIN, can.request())
can.base.isFunc(cb) && cb() 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) { _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) { 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) fun && (sub = mod, mod = fun, fun = mod[value], key = value)
}); if (!sub || !mod || !fun) { can.misc.Warn("not found", cmds) }); if (!sub || !mod || !fun) { can.misc.Warn(ice.ErrNotFound, cmds)
return can.base.isFunc(cb) && cb(msg.Echo("warn: ", "not found: ", cmds)) return can.base.isFunc(cb) && cb(msg.Echo(ice.ErrWarn, ice.ErrNotFound, cmds))
} }
return can.core.CallFunc(fun, { 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 } 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})) 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) 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, "缺失数据") var res = Volcanos.meta.pack[key]; res? msg.Copy(res): can.user.toast(can, "缺失数据")
return can.base.isFunc(cb) && cb(msg) 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) 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) { 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) 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) 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 } 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.base.isFunc(can.ondaemon[cmd])? can.core.CallFunc(can.ondaemon[cmd], {
"can": can, "msg": msg, "cmd": cmd, "arg": arg, "cb": function() { msg.Reply() }, "can": can, "msg": msg, "cmd": cmd, "arg": arg, "cb": function() { msg.Reply() },
}): can.onengine._search({}, can, msg, can, ["_search", cmd].concat(arg), function() { }): can.onengine._search({}, can, msg, can, ["_search", cmd].concat(arg), function() {
msg.Reply() 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: [""], }, _list: [""],
pwd: function(can, msg, arg) { pwd: function(can, msg, arg) {
can.ondaemon._list[0] = arg[0] can.ondaemon._list[0] = arg[0]
@ -142,7 +131,6 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
Status: function(key, value) { Status: function(key, value) {
if (sub.base.isObject(key)) { return sub.core.Item(key, sub.Status), key } if (sub.base.isObject(key)) { return sub.core.Item(key, sub.Status), key }
sub.page.Select(sub, status, "div."+key+">span", function(item) { sub.page.Select(sub, status, "div."+key+">span", function(item) {
return value == undefined? (value = item.innerHTML): (item.innerHTML = value) return value == undefined? (value = item.innerHTML): (item.innerHTML = value)
}); return 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) silent || cmds[0] == ctx.ACTION || sub.base.Eq(sub._history[sub._history.length-1], cmds) || sub._history.push(cmds)
return cmds return cmds
}, },
Clone: function() { Clone: function() { meta.args = sub.page.SelectArgs(sub, option, "")
meta.args = sub.page.SelectArgs(sub, option, "") can.onappend._init(can, meta, list, function(sub) { can.base.isFunc(cb) && cb(sub, true)
can.onappend._init(can, meta, list, function(sub) {
can.core.Timer(10, function() { for (var k in sub._inputs) { can.onmotion.focus(can, sub._inputs[k]._target); break } }) 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) }, target)
}, },
}, list, function(sub) { sub.Conf(meta), meta.feature = sub.base.Obj(meta.feature, {}) }, 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.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"])) 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) can.base.isFunc(cb) && cb(sub)
}); return sub }); return sub
}, },
@ -303,8 +288,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
}, },
table: function(can, msg, cb, target, sort) { 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) { 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 (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) {
if (key == kit.MDB_VALUE) { key = line.key } if (key == mdb.VALUE) { key = line.key }
line = {}, can.core.List(array, function(item) { line[item.key] = item.value }) 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 return
} }
can.sup.onaction.change(event, can.sup, key, value) 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) { var item = can.core.List(can.Conf("feature.insert"), function(item) {
if (item.name == key) { return item } if (item.name == key) { return item }
})[0]||{name: key, value: value} })[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 } 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) { can.core.ItemCB(can.onfigure[input], function(key, on) {
target[key] = function(event) { target[key] = function(event) {
can.onappend._init(can, {type: html.INPUT, name: input, pos: chat.FLOAT}, [], function(sub) { sub.Conf(meta) 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: { story: {
_hash: { _hash: {
spark: function(can, meta, target) { spark: function(can, meta, target) {
if (meta[kit.MDB_NAME] == "inner") { if (meta[mdb.NAME] == "inner") {
target.title = "点击复制", target.onclick = function(event) { target.title = "点击复制", target.onclick = function(event) {
can.user.copy(event, can, target.innerText) 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) { Push: function(key, value, detail) {
if (can.base.isObject(key)) { if (can.base.isObject(key)) {
value = value || can.core.Item(key), can.core.List(value, function(item) { 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]||"") msg.Push(item, key[item]||"")
}) })
return msg return msg

View File

@ -12,8 +12,8 @@ Volcanos("user", {help: "用户操作", agent: {
} ); } );
}, },
openLocation: function(msg) { openLocation: function(msg) {
window.open("https://map.baidu.com/search/"+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(kit.MDB_TEXT))) +"/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd="+encodeURIComponent(msg.Option(mdb.TEXT)))
}, },
chooseImage: function(cb) { chooseImage: function(cb) {
typeof cb == lang.FUNCTION && cb([]) typeof cb == lang.FUNCTION && cb([])
@ -114,9 +114,9 @@ Volcanos("user", {help: "用户操作", agent: {
share: function(can, msg, cmd) { share: function(can, msg, cmd) {
can.run(msg._event, cmd||[ctx.ACTION, chat.SHARE], function(msg) { can.run(msg._event, cmd||[ctx.ACTION, chat.SHARE], function(msg) {
can.user.toast(can, {height: 300, width: 500, can.user.toast(can, {height: 300, width: 500,
title: msg.Append(kit.MDB_NAME), duration: -1, title: msg.Append(mdb.NAME), duration: -1,
content: msg.Append(kit.MDB_TEXT), action: [cli.CLOSE], content: msg.Append(mdb.TEXT), action: [cli.CLOSE],
}), can.user.copy(msg._event, can, msg.Append(kit.MDB_NAME)) }), can.user.copy(msg._event, can, msg.Append(mdb.NAME))
}) })
}, },
login: function(can, cb, method) { 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.user.title(can.misc.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
can.onaction.layout(can, "auto") 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.user.mod.isCmd = true, can.page.ClassList.add(can, can._target, "cmd")
can.page.Select(can, document.body, "fieldset.panel", function(item) { can.page.Select(can, document.body, "fieldset.panel", function(item) {
item != can._target && can.onmotion.hidden(can, 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) { }, onmouseenter: function(event) {
var list = msg.Table() 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.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) { _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 } 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, "/share/local/avatar", 160)]) 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.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]) 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) { _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) can.set("River", html.HEIGHT, -1), can.set("Action", html.HEIGHT, -1)
}, },
webpack: function(event, can) { 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.Item(Volcanos.meta.pack, function(key, msg) {
can.core.List(["_event", "_can", "_xhr", ice.MSG_SESSID, ""], function(key) { delete(msg[key]) }) 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) { usernick: function(event, can) {
can.onaction.carte(event, can, ["shareuser", "setnick", [aaa.LANGUAGE, aaa.CHINESE, aaa.ENGLISH], cli.CLEAR, aaa.LOGOUT]) 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) { 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) { 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) { 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) { create: function(event, can) {
can.user.trans(can, {"public": "公开群", "protected": "内部群", "private": "私有群"}) can.user.trans(can, {"public": "公开群", "protected": "内部群", "private": "私有群"})
can.user.input(event, can, [ can.user.input(event, can, [
{name: kit.MDB_TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"}, {name: 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.NAME, value: "hi", _trans: "群名"}, {name: mdb.TEXT, value: "hello", _trans: "简介"},
], function(event, button, meta, list, args) { ], function(event, button, meta, list, args) {
can.run(event, [ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.run(event, [ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
can.misc.Search(can, {river: msg.Result()}) 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) { can.onaction.create(event, can) },
"共享群组": function(event, can, button, river) { "共享群组": function(event, can, button, river) {
can.user.input(event, can, [{name: chat.TILTE, value: river, _trans: "标题"}], function(event, button, meta, list) { 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) { can.ondetail.create(event, can, button, river) },
"共享应用": function(event, can, button, river, storm) { "共享应用": function(event, can, button, river, storm) {
can.user.input(event, can, [{name: chat.TILTE, value: storm, _trans: "标题"}], function(event, button, meta, list) { 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, chat.STORM, storm, chat.RIVER, river,
]) ])
}) })
}, },
"添加工具": function(event, can, button, river, storm) { "添加工具": function(event, can, button, river, storm) {
can.user.select(event, can, ctx.COMMAND, "context,command", function(item, next) { 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() next()
}) })
}, function() { }, function() {
@ -179,15 +179,15 @@ Volcanos("ondetail", {help: "菜单交互",
}, },
"共享工具": function(event, can, button, river, storm) { "共享工具": function(event, can, button, river, storm) {
can.user.select(event, can, mdb.PLUGIN, "name,context,command,argument", function(item, next) { 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, can.user.share(can, can.request(event), [river, ctx.ACTION, chat.SHARE, mdb.TYPE, chat.FIELD,
kit.MDB_NAME, item[2], kit.MDB_TEXT, item[3], chat.TITLE, item[0], chat.RIVER, river, chat.STORM, storm, mdb.NAME, item[2], mdb.TEXT, item[3], chat.TITLE, item[0], chat.RIVER, river, chat.STORM, storm,
]) ])
}) })
}, },
"添加设备": function(event, can, button, river) { "添加设备": function(event, can, button, river) {
can.user.select(event, can, web.SPACE, "type,name,text", function(item, next) { 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() next()
}) })
}) })
@ -203,7 +203,7 @@ Volcanos("ondetail", {help: "菜单交互",
"创建空间": function(event, can, button, river, storm) { can.request(event, {action: button}) "创建空间": 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.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) { 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) can.user.toast(can, link), can.user.open(link)
}) })
}) })
@ -221,8 +221,8 @@ Volcanos("ondetail", {help: "菜单交互",
}) })
}, },
"重命名群组": function(event, can, button, river) { "重命名群组": function(event, can, button, river) {
can.user.input(event, can, [kit.MDB_NAME], function(event, button, meta, list) { can.user.input(event, can, [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.run(can.request(event, {hash: river})._event, [ctx.ACTION, mdb.MODIFY, mdb.NAME, meta.name], function(msg) {
can.misc.Search(can, {river: river}) can.misc.Search(can, {river: river})
}) })
}) })
@ -241,7 +241,7 @@ Volcanos("ondetail", {help: "菜单交互",
}) })
}, },
"重命名应用": function(event, can, button, river, storm) { "重命名应用": 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.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}) can.misc.Search(can, {river: river, storm: storm})
}) })
@ -257,8 +257,8 @@ Volcanos("ondetail", {help: "菜单交互",
create: function(event, can, button, river) { create: function(event, can, button, river) {
can.user.trans(can, {"public": "公开应用", "protected": "群组应用", "private": "个人应用"}) can.user.trans(can, {"public": "公开应用", "protected": "群组应用", "private": "个人应用"})
can.user.input(event, can, [ can.user.input(event, can, [
{name: kit.MDB_TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"}, {name: 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.NAME, value: "hi", _trans: "名称"}, {name: mdb.TEXT, value: "hello", _trans: "简介"},
], function(event, button, meta, list, args) { ], function(event, button, meta, list, args) {
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) { can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
can.misc.Search(can, {river: river, storm: msg.Result()}) 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) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.list = msg.Table(), can.onmotion.clear(can, can.ui.content) 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) var table = can.onappend.table(can, msg, function(value, key, index, line, array) { can.Status(mdb.TOTAL, index+1)
return {text: [key == kit.MDB_TEXT && can.base.isFunc(line.text) && line.text.help || value, html.TD], onclick: function(event) { 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.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) { }, 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) } 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, {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.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)}) 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) 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) }, refresh: function(event, can) { can.run(event) },
onclick: function(event, can) { 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) { 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) { 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) { can.onkeypop.input(event, can, event.target); switch (event.key) {
case lang.ENTER: case lang.ENTER:
switch (can.Conf(kit.MDB_TYPE)) { switch (can.Conf(mdb.TYPE)) {
case html.TEXTAREA: if (!event.ctrlKey) { return } case html.TEXTAREA: if (!event.ctrlKey) { return }
case html.TEXT: event.target.setSelectionRange(0, -1); break case html.TEXT: event.target.setSelectionRange(0, -1); break
}; can.run(event), event.stopPropagation(), event.preventDefault(); 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) show(msg)
}): can.page.Remove(can, can._target) }): 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) 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) 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) { china_chart.setOption({geo: {map: 'china'}}), china_chart.on('click', function (params) {
target.value = params.name, can.page.Remove(can, can._target) 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) 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()) "保存": 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) can.user.toastSuccess(can)
}, true) }, true)
}, },

View File

@ -14,8 +14,8 @@ Volcanos("onaction", {source: function(can, msg) {
openLocation: function(msg) { wx.openLocation({ openLocation: function(msg) { wx.openLocation({
latitude: parseInt(msg.Option("latitude"))/100000, latitude: parseInt(msg.Option("latitude"))/100000,
longitude: parseInt(msg.Option("longitude"))/100000, longitude: parseInt(msg.Option("longitude"))/100000,
name: msg.Option(kit.MDB_NAME), address: msg.Option(kit.MDB_TEXT), name: msg.Option(mdb.NAME), address: msg.Option(mdb.TEXT),
scale: msg.Option("scale")||14, infoUrl: msg.Option(kit.MDB_LINK), 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) { 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) can.base.isFunc(cb) && cb(res.localIds)

View File

@ -300,8 +300,8 @@ Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏"],
{name: "name", value: "hello"}, {name: "name", value: "hello"},
], function(event, button, meta, list) { ], function(event, button, meta, list) {
can.run(event, [ctx.ACTION, code.FAVOR, can.run(event, [ctx.ACTION, code.FAVOR,
ctx.ACTION, mdb.INSERT, kit.MDB_ZONE, meta.zone||"", ctx.ACTION, mdb.INSERT, mdb.ZONE, meta.zone||"",
kit.MDB_TYPE, can.parse, kit.MDB_NAME, meta.name||"", kit.MDB_TEXT, (value||"").trimRight(), 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), nfs.PATH, can.Option(nfs.PATH), nfs.FILE, can.Option(nfs.FILE), nfs.LINE, can.Option(nfs.LINE),
], function(msg) { ], function(msg) {
can.user.toastSuccess(can) 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 } _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) { 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)) 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.ui.display)
can.page.Modify(can, can.ui.display, {style: {display: html.BLOCK}}) 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) 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: [ 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) { ].concat(can.core.List(list, function(key) {
return key = figure.data.size[key]||key, {td: [key, target.Value(key)], ondblclick: function(event) { 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) { 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"]) }, ["/plugin/local/wiki/draw.css"])
Volcanos("onfigure", {help: "图形绘制", list: [], Volcanos("onfigure", {help: "图形绘制", list: [],
_get: function(can, item, name) { _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") } _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()) item.Value(html.CLASS, (item.Value(html.CLASS)+ice.SP+item.Value("pid", pid)).trim())
return pid return pid
}, },
@ -155,7 +155,7 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
text: { // <text x="60" y="10">hi<text> text: { // <text x="60" y="10">hi<text>
data: {points: 1, size: {}, copy: [html.INNER]}, data: {points: 1, size: {}, copy: [html.INNER]},
draw: function(event, can, point, style) { if (point.length < 1 || event.type == "mousemove") { return } 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 return text? {x: p0.x, y: p0.y, inner: text}: null
}, },
show: function(can, target, figure) { return can.onexport._position(can, target, figure) } 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.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.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, {})) text.Value(can.onexport._text(can, item.target, figure, {}))
}) })
can.onfigure._move(can, item.target, item.ship) can.onfigure._move(can, item.target, item.ship)
@ -348,7 +348,7 @@ Volcanos("onaction", {help: "组件菜单", list: [
}, },
_auto: function(can, target) { _auto: function(can, target) {
if (can.point.length > 0) { return } 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) var pos = can.onexport.cursor(event, can, event.target)
if (target == can.svg) { 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 } 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")) 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.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) } 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) 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) }, copy: function(event, can) { can.onfigure._copy(event, can, event.target) },
label: function(event, can) { var target = 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) def = item.Value(html.INNER)
}) })
can.user.prompt(html.LABEL, function(text) { 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 figure = can.onfigure._get(can, target)
var data = can.onexport._text(can, target, figure, {inner: text}) var data = can.onexport._text(can, target, figure, {inner: text})
var item = can.onfigure._push(can, html.TEXT, data, target.Group()) 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) }, def)
}, },
modify: function(event, can) { can.onimport._profile(can, event.target) }, 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) 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, item)
}) })
can.page.Remove(can, target) can.page.Remove(can, target)
@ -481,7 +481,7 @@ Volcanos("onexport", {help: "导出数据", list: ["group", "figure", "index", "
content: function(can, svg) { content: function(can, svg) {
return ['<svg vertion="1.1" xmlns="https://www.w3.org/2000/svg" text-anchor="middle" dominant-baseline="middle"'].concat( 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) + '"': "" 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("") }): [" 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() "共享工具": 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 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, var msg = can.request(event, {arg: [mdb.TYPE, chat.FIELD,
kit.MDB_NAME, meta.index, kit.MDB_TEXT, JSON.stringify(can.Input([], true)), 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), chat.TITLE, list[0], chat.RIVER, can.Conf(chat.RIVER), chat.STORM, can.Conf(chat.STORM),
]}) ]})
can.search(event, ["Header.onaction.share"]) can.search(event, ["Header.onaction.share"])
@ -213,12 +213,12 @@ Volcanos("onaction", {help: "交互操作", list: [
if (navigator.clipboard) { if (navigator.clipboard) {
navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) }) navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) })
} else { } 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) { getLocation: function(event, can, button) {
can.user.agent.getLocation(function(data) { can.request(event, data) 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.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) {
can.user.toastSuccess(can), can.Update() can.user.toastSuccess(can), can.Update()
}, true) }, true)

View File

@ -143,11 +143,11 @@ Volcanos("ondetail", {help: "用户交互", list: [],
can.request(event, node.meta) can.request(event, node.meta)
} }
var msg = can.request(event, can.Option()) 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) { if (msg.Length() == 0) {
return can.ondetail.plugin(can, tree, {}, "web.code.inner", [can.dir_root, tree.file, tree.line], [ctx.ACTION, "inner"]) 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]) can.ondetail.plugin(can, tree, value, value.index, [], [ctx.ACTION, ice.RUN, value.index])
}); return } }); return }

View File

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