1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-26 01:04:06 +08:00

opt share

This commit is contained in:
shaoying 2021-05-01 18:54:44 +08:00
parent 6a76d45482
commit 00848267cf
27 changed files with 239 additions and 174 deletions

View File

@ -213,7 +213,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
}) })
can.onappend._init(can, meta, list, function(sub) { can.onappend._init(can, meta, list, function(sub) {
can.core.Timer(10, function() { for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break } }) can.core.Timer(10, function() { for (var k in sub._inputs) { sub._inputs[k]._target.focus(); break } })
typeof cb == "function" && cb(sub) can.base.isFunc(cb) && cb(sub)
}, target) }, target)
}, },
Pack: function(cmds, slient) { Pack: function(cmds, slient) {
@ -231,7 +231,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
sub.page.ClassList.add(sub, field, meta.style||meta.feature.style||"") sub.page.ClassList.add(sub, field, meta.style||meta.feature.style||"")
sub.page.ClassList.add(sub, field, meta.index? meta.index.split(".").pop(): meta.name) sub.page.ClassList.add(sub, field, meta.index? meta.index.split(".").pop(): meta.name)
typeof cb == "function" && cb(sub) can.base.isFunc(cb) && cb(sub)
meta.option = can.base.Obj(meta.option||"{}", {}) meta.option = can.base.Obj(meta.option||"{}", {})
meta.inputs && sub.onappend._option(sub, meta, sub._option) meta.inputs && sub.onappend._option(sub, meta, sub._option)
}); return sub }); return sub
@ -308,7 +308,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1") can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")
if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return } if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return }
if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return } if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return }
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}) })
}) })
return return
@ -317,7 +317,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1") return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")
if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return } if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return }
if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return } if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return }
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
if (silent) { return } if (silent) { return }
var display = msg.Option("_display") || meta.display || meta.feature.display || "/plugin/table.js" var display = msg.Option("_display") || meta.display || meta.feature.display || "/plugin/table.js"
@ -380,7 +380,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split) var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split)
node[name] || (node[name] = can.page.Append(can, node[last], [{view: ["item", "div", value+(index==array.length-1?"":split)], onclick: function(event) { node[name] || (node[name] = can.page.Append(can, node[last], [{view: ["item", "div", value+(index==array.length-1?"":split)], onclick: function(event) {
index < array.length - 1? can.onmotion.toggle(can, node[name]): typeof cb == "function" && cb(event, item) index < array.length - 1? can.onmotion.toggle(can, node[name]): can.base.isFunc(cb) && cb(event, item)
}}, {view: "list", style: {display: "none"}}]).last) }}, {view: "list", style: {display: "none"}}]).last)
}) })
}); return node }); return node
@ -506,7 +506,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) { can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) {
meta.type == "story" && sub.page.Remove(sub, sub._legend) meta.type == "story" && sub.page.Remove(sub, sub._legend)
typeof cb == "function" && cb(sub, meta) can.base.isFunc(cb) && cb(sub, meta)
sub._legend.onclick = function(event) {
var list = can.page.Select(can, sub._option, '.args', function(item) { return item.value||"" })
can.user.share(can, can.request(event), ["action", "share", "type", "field",
"text", JSON.stringify(list),
"river", meta.ctx||meta.key||"", "storm", meta.index||meta.cmd||meta.name])
}
}, target||can._output) }, target||can._output)
}, },
plugin: function(can, meta, cb, target) { meta = meta || {} plugin: function(can, meta, cb, target) { meta = meta || {}
@ -521,7 +527,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
sub.onmotion.hidden(sub, sub._option) sub.onmotion.hidden(sub, sub._option)
sub.onmotion.hidden(sub, sub._action) sub.onmotion.hidden(sub, sub._action)
sub.onmotion.hidden(sub, sub._status) sub.onmotion.hidden(sub, sub._status)
typeof cb == "function" && cb(sub) can.base.isFunc(cb) && cb(sub)
}, target) }, target)
}, },
}, [], function(can) {}) }, [], function(can) {})
@ -577,7 +583,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can) {
resize: function(can, name, cb) { resize: function(can, name, cb) {
var list = []; can.onengine.listen(can, name, function(width, height) { var list = []; can.onengine.listen(can, name, function(width, height) {
can.Conf({width: width, height: height}), can.core.Delay(list, 100, function() { can.Conf({width: width, height: height}), can.core.Delay(list, 100, function() {
typeof cb == "function" && cb(event) can.base.isFunc(cb) && cb(event)
}) })
}) })
}, },
@ -649,10 +655,10 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
} }
var map = can.onkeypop._mode[mode] var map = can.onkeypop._mode[mode]
var cb = map && map[event.key]; if (typeof cb == "function" && event.key.length > 1) { var cb = map && map[event.key]; if (can.base.isFunc(cb) && event.key.length > 1) {
repeat(cb, count); return list repeat(cb, count); return list
} }
var cb = map && map[event.key.toLowerCase()]; if (typeof cb == "function" && event.key.length > 1) { var cb = map && map[event.key.toLowerCase()]; if (can.base.isFunc(cb) && event.key.length > 1) {
repeat(cb, count); return list repeat(cb, count); return list
} }
@ -797,7 +803,7 @@ Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can, targe
can.page.Modify(can, target, {style: {opacity: 1-(index+1)/time.length}}) can.page.Modify(can, target, {style: {opacity: 1-(index+1)/time.length}})
}, function() { }, function() {
can.page.Modify(can, target, {style: {display: "none"}}) can.page.Modify(can, target, {style: {display: "none"}})
typeof cb == "function" && cb can.base.isFunc(cb) && cb()
}) })
}, },
@ -883,7 +889,7 @@ Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can, targe
can.page.Select(can, target, "div.output", function(item, index) { can.page.Select(can, target, "div.output", function(item, index) {
index == 0 && (item.style.height = "") index == 0 && (item.style.height = "")
}), target.style.height = "" }), target.style.height = ""
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, },
move: function(can, target, layout) { var begin move: function(can, target, layout) { var begin

View File

@ -1,4 +1,5 @@
Volcanos("base", {help: "数据类型", Volcanos("base", {help: "数据类型",
isFunc: function(cb) { return typeof cb == "function" },
Int: function(value, def) { return parseInt(value)||def||0 }, Int: function(value, def) { return parseInt(value)||def||0 },
Obj: function(value, def) { Obj: function(value, def) {
try { try {

View File

@ -94,12 +94,10 @@ Volcanos("user", {help: "用户模块", agent: {
}, },
share: function(can, msg, cmd) { share: function(can, msg, cmd) {
can.run(msg._event, cmd||["action", "share"], function(msg) { can.run(msg._event, cmd||["action", "share"], function(msg) {
var src = can.user.MergeURL(can, {_path: "/share/"+msg.Result()}, true)
var ui = can.user.toast(can, { var ui = can.user.toast(can, {
title: can.page.Format("a", "/share/"+msg.Result()+"?share="+msg.Result()), title: msg.Append("name"), content: msg.Append("text"),
content: can.page.Format("img", src+"/share"),
button: ["close"], duration: 100000, button: ["close"], duration: 100000,
width: 300, height: 300, height: 300,
}) })
}) })
}, },
@ -122,7 +120,6 @@ Volcanos("user", {help: "用户模块", agent: {
can.misc.WSS(can, {type: "chrome"}, function(event, msg, cmd, arg) { if (!msg) { return } can.misc.WSS(can, {type: "chrome"}, function(event, msg, cmd, arg) { if (!msg) { return }
if (cmd == "pwd") { if (cmd == "pwd") {
can.user.toast(can, arg[2], arg[1], 1000000) can.user.toast(can, arg[2], arg[1], 1000000)
// can.user.share(can, can.request(event, {name: arg[0]}), ["action", "apply"])
msg.Reply() msg.Reply()
return return
} }
@ -279,8 +276,15 @@ Volcanos("user", {help: "用户模块", agent: {
}, },
logout: function(can) { logout: function(can) {
if (can.user.confirm("logout?")) { if (can.user.confirm("logout?")) {
can.user.Cookie(can, "sessid", "") can.run({}, ["action", "logout"], function(msg) {
can.user.reload(true) can.user.Cookie(can, "sessid", "")
if (can.user.Search(can, "share")) {
can.user.Search(can, "share", "")
} else {
can.user.reload(true)
}
})
} }
}, },

View File

@ -266,7 +266,7 @@ div.story[data-type=spark] span:hover {
fieldset>form.option>div.item { fieldset>form.option>div.item {
float:left; margin-right:3px; float:left; margin-right:3px;
min-height:26px; vertical-align:middle; min-height:25px; vertical-align:middle;
} }
fieldset>form.option>div.item label { fieldset>form.option>div.item label {
display:none; display:none;

View File

@ -1,25 +1,26 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
var river = can.Conf("river"), storm = can.Conf("storm") var river = can.Conf(can._RIVER), storm = can.Conf(can._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("width")), item.height = parseInt(can.Conf("height")) item.width = parseInt(can.Conf(can._WIDTH)), item.height = parseInt(can.Conf(can._HEIGHT))
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 = "plugin" item.type = can._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()
sub._option.dataset = sub._option.dataset || {} sub._option.dataset = sub._option.dataset || {}
item.id && (sub._option.dataset.id = item.id) item.id && (sub._option.dataset.id = item.id)
sub._target.Meta = item
}) })
}, function() { }, function() {
can.onaction._layout(can, can.Conf("layout")||can.user.Search(can, "layout")) can.onaction._layout(can, can.Conf(can._LAYOUT)||can.user.Search(can, can._LAYOUT))
}) })
}, },
_plugin: function(can, river, storm, sub, item) { _plugin: function(can, river, storm, sub, item) {
sub.run = function(event, cmds, cb) { var msg = sub.request(event) sub.run = function(event, cmds, cb) { var msg = sub.request(event)
var toast = msg.Option("_toast") && can.user.toast(can, msg.Option("_toast"), "", 1000000) var toast = msg.Option("_toast") && can.user.toast(can, msg.Option("_toast"), "", 1000000)
return can.run(event, (can.onengine[cmds[0]]? []: [river, storm, item.id||item.index||item.key+"."+item.name]).concat(cmds), function(msg) { return can.run(event, (can.onengine[cmds[0]]? []: [river, storm, item.id||item.index||item.key+"."+item.name]).concat(cmds), function(msg) {
toast && toast.Close(), typeof cb == "function" && cb(msg) toast && toast.Close(), can.base.isFunc(cb) && cb(msg)
}) })
}, can._plugins = (can._plugins||[]).concat([sub]) }, can._plugins = (can._plugins||[]).concat([sub])
@ -35,20 +36,27 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
}}]) }}])
}, },
_share: function(can, msg, share) { _share: function(can, msg, share) {
can.user.topic(can, can.user.Search(can, "topic")||msg.Option("topic")||"white") can.Conf(can._WIDTH, window.innerWidth)
can.user.title(can.user.Search(can, "title")||msg.Option("title")) can.Conf(can._HEIGHT, window.innerHeight)
can.Conf("river", "_share"), can.Conf("storm", share) can.user.topic(can, can.user.Search(can, can._TOPIC)||msg.Option(can._TOPIC)||"white")
can.user.title(can.user.Search(can, can._TITLE)||msg.Option(can._TITLE))
can.Conf(can._RIVER, "_share"), can.Conf(can._STORM, share)
can.onimport._init(can, msg) can.onimport._init(can, msg)
}, },
_menu: function(can) {
!can.user.isMobile && can.run({}, [can._SEARCH, "Header.onimport.menu", can._ACTION,
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
], function(event, key) { can.onaction._layout(can, key) })
},
}) })
Volcanos("onengine", {help: "解析引擎", list: [], Volcanos("onengine", {help: "解析引擎", list: [],
engine: function(event, can, msg, panel, cmds, cb) { engine: function(event, page, msg, can, cmds, cb) {
var river = can.onengine.river[cmds[0]] var river = can.onengine.river[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 = ["action", "command"].concat(storm.index) if (storm.index) { cmds = [can._ACTION, "command"].concat(storm.index)
can.misc.Runs(event, can, {names: panel._name}, cmds, cb) can.misc.Runs(event, can, {names: can._name}, cmds, cb)
} else { } else {
can.core.List(storm.action, function(value) { can.core.List(storm.action, function(value) {
msg.Push("name", value.name||"") msg.Push("name", value.name||"")
@ -57,13 +65,20 @@ Volcanos("onengine", {help: "解析引擎", list: [],
msg.Push("feature", JSON.stringify(value.feature||{})) msg.Push("feature", JSON.stringify(value.feature||{}))
msg.Push("index", value.index||"") msg.Push("index", value.index||"")
msg.Push("args", value.args||"[]") msg.Push("args", value.args||"[]")
}), typeof cb == "function" && cb(msg) }), can.base.isFunc(cb) && cb(msg)
} }
return true return true
}, },
}) })
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
var share = can.user.Search(can, "share"); if (share) { can.const(
"output", "fields",
"search", "action", "share", "river", "storm",
"title", "topic", "layout", "width", "height",
"plugin",
)
var share = can.user.Search(can, can._SHARE); if (share) {
can.run({}, ["_share", share], function(msg) { msg.Length()>0? can.onimport._share(can, msg, share): can.run({}, ["_share", share], function(msg) { msg.Length()>0? can.onimport._share(can, msg, share):
can.onengine.engine({}, can, msg, can, [msg.Option("sess.river"), msg.Option("sess.storm")], function(msg) { can.onengine.engine({}, can, msg, can, [msg.Option("sess.river"), msg.Option("sess.storm")], function(msg) {
can.onimport._share(can, msg, share) can.onimport._share(can, msg, share)
@ -75,8 +90,8 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
can.onaction._select(can, msg, river, storm) can.onaction._select(can, msg, river, storm)
}) })
can.onengine.listen(can, "search", function(msg, word) { can.onengine.listen(can, can._SEARCH, function(msg, word) {
if (word[0] == "*" || word[0] == "plugin") { can.onexport.plugin(can, msg, word) } if (word[0] == "*" || word[0] == can._PLUGIN) { can.onexport.plugin(can, msg, word) }
}) })
can._target.ontouchstart = function(event) { can._target.ontouchstart = function(event) {
@ -86,13 +101,11 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
var list = []; can.onengine.listen(can, "resize", function(width, height) { var list = []; can.onengine.listen(can, "resize", function(width, height) {
can.Conf({width: width, height: height}), can.core.Delay(list, 1000, function() { can.Conf({width: width, height: height}), can.core.Delay(list, 1000, function() {
can.onengine.signal(can, "action.resize", can.request({}, { can.onengine.signal(can, "action.resize", can.request({}, {
width: can.Conf("width"), height: can.Conf("height"), width: can.Conf(can._WIDTH), height: can.Conf(can._HEIGHT),
})) }))
}) })
}) })
!can.user.isMobile && can.run({}, ["search", "Header.onimport.menu", "action", can.onimport._menu(can)
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
], function(event, key) { can.onaction._layout(can, key) })
}, },
_layout: function(can, key) { if (!key) { return } _layout: function(can, key) { if (!key) { return }
var trans = { var trans = {
@ -103,7 +116,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
"自由布局": "free", "自由布局": "free",
} }
key = trans[key]||key, can.Conf("layout", key) key = trans[key]||key, can.Conf(LAYOUT, key)
can.page.Modify(can, can._action, {className: "action "+key}) can.page.Modify(can, can._action, {className: "action "+key})
can.page.Modify(can, can._output, {className: "output "+key}) can.page.Modify(can, can._output, {className: "output "+key})
@ -113,13 +126,13 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
} }
}, },
_select: function(can, msg, river, storm) { _select: function(can, msg, river, storm) {
function key(name) { return can.Conf("river")+"."+can.Conf("storm")+"."+name} function key(name) { return can.Conf(can._RIVER)+"."+can.Conf(can._STORM)+"."+name}
can.page.Cache(key("action"), can._action, can._output.scrollTop+1) can.page.Cache(key(can._ACTION), can._action, can._output.scrollTop+1)
can.page.Cache(key("output"), can._output, can._output.scrollTop+1) can.page.Cache(key(can._OUTPUT), can._output, can._output.scrollTop+1)
can.Conf("river", river), can.Conf("storm", storm) // 转场 can.Conf(can._RIVER, river), can.Conf(can._STORM, storm) // 转场
var position = can.page.Cache(key("output"), can._output) var position = can.page.Cache(key(can._OUTPUT), can._output)
var position = can.page.Cache(key("action"), can._action) var position = can.page.Cache(key(can._ACTION), can._action)
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) {
@ -127,7 +140,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
can.onimport._init(can, msg) can.onimport._init(can, msg)
} else { } else {
var msg = can.request({}, {river: river, storm: storm}) var msg = can.request({}, {river: river, storm: storm})
can.run(msg._event, ["search", "River.ondetail.添加工具"]) can.run(msg._event, [can._SEARCH, "River.ondetail.添加工具"])
} }
}) })
}, },
@ -142,20 +155,31 @@ Volcanos("onexport", {help: "导出数据", list: [],
size: function(can, msg) { size: function(can, msg) {
msg.Option("top", can._target.offsetTop) msg.Option("top", can._target.offsetTop)
msg.Option("left", can._target.offsetLeft) msg.Option("left", can._target.offsetLeft)
msg.Option("width", can._target.offsetWidth) msg.Option(can._WIDTH, can._target.offsetWidth)
msg.Option("height", can._target.offsetHeight) msg.Option(can._HEIGHT, can._target.offsetHeight)
}, },
layout: function(can, msg) { return can.Conf("layout") }, layout: function(can, msg) { return can.Conf(LAYOUT) },
plugin: function(can, msg, word) { plugin: function(can, msg, word) {
var fields = (msg.Option("fields")||"ctx,cmd,type,name,text").split(",") var fields = (msg.Option(can._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
can.core.List(fields, function(key) { can.core.List(fields, function(key) {
switch (key) { switch (key) {
case "context":
msg.Push(key, meta.ctx||meta.key||"")
break
case "command":
msg.Push(key, meta.index||meta.cmd||meta.name)
break
case "argument":
var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" })
msg.Push(key, JSON.stringify(list))
break
case "ctx": msg.Push(key, "web.chat"); break case "ctx": msg.Push(key, "web.chat"); break
case "cmd": msg.Push(key, "action"); break case "cmd": msg.Push(key, can._ACTION); break
case "type": msg.Push(key, "plugin"); break case "type": msg.Push(key, can._PLUGIN); break
case "name": msg.Push(key, item.innerHTML); break case "name": msg.Push(key, item.innerHTML); break
case "text": case "text":
msg.Push(key, shy("跳转", function() { msg.Push(key, shy("跳转", function() {

View File

@ -3,7 +3,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onimport._title(can, msg, target) can.onimport._title(can, msg, target)
can.onimport._toast(can, msg, target) can.onimport._toast(can, msg, target)
can.onimport._state(can, msg, target) can.onimport._state(can, msg, target)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, },
_title: function(can, msg, target) { _title: function(can, msg, target) {
can.user.isMobile || can.core.List(msg.result, function(title) { can.user.isMobile || can.core.List(msg.result, function(title) {

View File

@ -1,9 +1,9 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
if (can.user.Search(can, "grant")) { const GRANT = "grant"; if (can.user.Search(can, GRANT)) {
if (can.user.confirm("grant "+can.user.Search(can, "grant"))) { if (can.user.confirm(GRANT+" "+can.user.Search(can, GRANT))) {
can.run(event, ["action", "grant", "space", can.user.Search(can, "grant")]) can.run(event, [can._ACTION, GRANT, "space", can.user.Search(can, GRANT)])
} }
can.user.Search(can, "grant", "") can.user.Search(can, GRANT, "")
return return
} }
@ -32,22 +32,22 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onimport._agent(can, msg, target) can.onimport._agent(can, msg, target)
can.onimport._menu(can, msg, target) can.onimport._menu(can, msg, target)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
can.page.Modify(can, can._output, {onmouseover: function(event) { can.page.Modify(can, can._output, {onmouseover: function(event) {
can.menu && can.page.Remove(can, can.menu.first) can.menu && can.page.Remove(can, can.menu.first)
}}) }})
}, },
_title: function(can, msg, target) { _title: function(can, msg, target) {
can.user.title(can.user.Search(can, "title")||can.user.Search(can, "pod")) can.user.title(can.user.Search(can, can._TITLE)||can.user.Search(can, "pod"))
!can.user.isMobile && can.core.List(msg.result||["github.com/shylinux/contexts"], function(item) { !can.user.isMobile && can.core.List(msg.result||["github.com/shylinux/contexts"], function(item) {
can.page.Append(can, target, [{view: ["title", "div", item], onclick: function(event) { can.page.Append(can, target, [{view: [can._TITLE, "div", item], onclick: function(event) {
can.onaction.title(event, can) can.onaction.title(event, can)
}}]) }}])
}) })
}, },
_state: function(can, msg, target) { _state: function(can, msg, target) {
can.core.List(can.base.Obj(msg.Option("state"), can.Conf("state")||["time", "username"]), function(item) { can.core.List(can.base.Obj(msg.Option("state"), can.Conf("state")||["time", can._USERNAME]), function(item) {
if (item == "avatar") { if (item == can._AVATAR) {
can.page.Append(can, target, [{view: ["state "+item], list: [{img: can.Conf(item), onmouseenter: function(event) { can.page.Append(can, target, [{view: ["state "+item], list: [{img: can.Conf(item), onmouseenter: function(event) {
can.onaction.carte(event, can, [can.page.Format("img", can.Conf(item), 160)]) can.onaction.carte(event, can, [can.page.Format("img", can.Conf(item), 160)])
}}]}]) }}]}])
@ -62,22 +62,22 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
}, },
_search: function(can, msg, target) { _search: function(can, msg, target) {
var ui = can.page.Append(can, target, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) { var ui = can.page.Append(can, target, [{view: can._SEARCH, list: [{type: "input", data: {placeholder: can._SEARCH}, onkeydown: function(event) {
can.onkeypop.input(event, can); switch (event.key) { can.onkeypop.input(event, can); switch (event.key) {
case "Enter": can.run(event, ["search", "Search.onimport.select", "*", event.target.value]); break case "Enter": can.run(event, [can._SEARCH, "Search.onimport.select", "*", event.target.value]); break
} }
}}] }]); can.onmotion.autosize(can, ui.input, 240, 120) }}] }]); can.onmotion.autosize(can, ui.input, 240, 120)
can.user.isMobile && can.page.Modify(can, ui.first, {style: {float: "right"}}) can.user.isMobile && can.page.Modify(can, ui.first, {style: {float: "right"}})
}, },
_avatar: function(can, msg) { _avatar: function(can, msg) {
!can.user.isLocalFile && can.page.Modify(can, "div.output div.state.avatar>img", {src: can.Conf("avatar", msg.Option("avatar"))}) !can.user.isLocalFile && can.page.Modify(can, "div.output div.state.avatar>img", {src: can.Conf(can._AVATAR, msg.Option(can._AVATAR))})
}, },
_background: function(can, msg) { _background: function(can, msg) {
!can.user.isLocalFile && can.onlayout.background(can, msg.Option("background"), document.body) !can.user.isLocalFile && can.onlayout.background(can, msg.Option(can._BACKGROUND), document.body)
}, },
_daemon: function(can, msg, target) { _daemon: function(can, msg, target) {
can.misc.WSS(can, {type: "chrome", name: can.user.Search(can, "daemon")||""}, function(event, msg, cmd, arg) { if (!msg) { return } can.misc.WSS(can, {type: "chrome", name: can.user.Search(can, "daemon")||""}, function(event, msg, cmd, arg) { if (!msg) { return }
can.run(event, ["search"].concat(msg["detail"]||[]), function(msg) { can.run(event, [can._SEARCH].concat(msg["detail"]||[]), function(msg) {
msg.Reply() msg.Reply()
}) })
}) })
@ -95,13 +95,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.user.isWeiXin && can.onimport._weixin(can) can.user.isWeiXin && can.onimport._weixin(can)
}, },
_menu: function(can, msg, target) { _menu: function(can, msg, target) {
can.onimport.menu(can, can.user.isMobile||can.user.isExtension||can.user.Search(can, "pod")? ["header", "river"]: can.onimport.menu(can, can.user.isMobile||can.user.isExtension||can.user.Search(can, "pod")? ["header", can._RIVER]:
["header", ["setting", "black", "white", "print", "pack"]], function(event, item) { ["header", ["setting", "black", "white", "print", "pack"]], function(event, item) {
can.core.CallFunc([can.onaction, item], [event, can, item]) can.core.CallFunc([can.onaction, item], [event, can, item])
}) })
}, },
_weixin: function(can, msg) { can.run({}, ["action", "agent"], function(msg) { _weixin: function(can, msg) { can.run({}, [can._ACTION, "agent"], function(msg) {
can.require(can.base.Obj(msg.Option("script")), function(can) { can.require(can.base.Obj(msg.Option("script")), function(can) {
wx.config({debug: msg.Option("debug") == "true", wx.config({debug: msg.Option("debug") == "true",
appId: msg.Option("appid"), signature: msg.Option("signature"), appId: msg.Option("appid"), signature: msg.Option("signature"),
@ -109,10 +109,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
jsApiList: can.core.Item({ jsApiList: can.core.Item({
scanQRCode: function(cb) { wx.scanQRCode({needResult: cb? 1: 0, scanType: ["qrCode","barCode"], success: function (res) { scanQRCode: function(cb) { wx.scanQRCode({needResult: cb? 1: 0, scanType: ["qrCode","barCode"], success: function (res) {
typeof cb == "function" && cb(res.resultStr) can.base.isFunc(cb) && cb(res.resultStr)
} }) }, } }) },
getLocation: function(cb) { wx.getLocation({type: "gcj02", success: function (res) { getLocation: function(cb) { wx.getLocation({type: "gcj02", success: function (res) {
typeof cb == "function" && cb({type: "gcj02", name: "当前位置", text: "当前位置", latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000) }) can.base.isFunc(cb) && cb({type: "gcj02", name: "当前位置", text: "当前位置", latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000) })
} }) }, } }) },
openLocation: function(msg) { wx.openLocation({ openLocation: function(msg) { wx.openLocation({
latitude: parseInt(msg.Option("latitude"))/100000, latitude: parseInt(msg.Option("latitude"))/100000,
@ -121,7 +121,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
scale: msg.Option("scale")||14, infoUrl: msg.Option("link"), scale: msg.Option("scale")||14, infoUrl: msg.Option("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) {
typeof cb == "function" && cb(res.localIds) can.base.isFunc(cb) && cb(res.localIds)
} }) }, } }) },
}, function(key, value) { return can.user.agent[key] = value, key }), }, function(key, value) { return can.user.agent[key] = value, key }),
}) })
@ -139,7 +139,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(cmds.slice(1), function(item) { return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(cmds.slice(1), function(item) {
if (typeof item == "string") { if (typeof item == "string") {
return {view: ["menu", "div", item], onclick: function(event) { return {view: ["menu", "div", item], onclick: function(event) {
typeof cb == "function" && cb(event, item) can.base.isFunc(cb) && cb(event, item)
}} }}
} else if (item.length > 0) { } else if (item.length > 0) {
@ -153,32 +153,38 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) }]).first }) }]).first
}, },
avatar: function(event, can, url) { avatar: function(event, can, url) {
can.run(event, ["action", "avatar", url], function(msg) { can.run(event, [can._ACTION, can._AVATAR, url], function(msg) {
can.onimport._avatar(can, msg) can.onimport._avatar(can, msg)
}) })
}, },
background: function(event, can, url) { background: function(event, can, url) {
can.run(event, ["action", "background", url], function(msg) { can.run(event, [can._ACTION, can._BACKGROUND, url], function(msg) {
can.onimport._background(can, msg) can.onimport._background(can, msg)
}) })
}, },
}) })
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
can.const(
"search", "action", "share", "title", "river", "storm",
"grant",
"username", "background", "avatar",
)
function init() { can.run({}, [], function(msg) { function init() { can.run({}, [], function(msg) {
can.Conf("username", msg.Option("user.nick")||msg.Option("user.name")) can.Conf(can._USERNAME, msg.Option("user.nick")||msg.Option("user.name")||can.Conf(can._USERNAME))
can.Conf("background", msg.Option("background")) can.Conf(can._BACKGROUND, msg.Option(can._BACKGROUND))
can.Conf("avatar", msg.Option("avatar")) can.Conf(can._AVATAR, msg.Option(can._AVATAR))
can.onimport._init(can, msg, list, function(msg) { can.onimport._init(can, msg, list, function(msg) {
can.onengine.listen(can, "storm.select", function(msg, river, storm) { can.onengine.listen(can, "storm.select", function(msg, river, storm) {
can.Conf("river", river), can.Conf("storm", storm) can.Conf(can._RIVER, river), can.Conf(can._STORM, storm)
}) })
can.run(msg._event, ["search", "Footer.onaction._init"]) can.run(msg._event, [can._SEARCH, "Footer.onaction._init"])
can.run(msg._event, ["search", "Action.onaction._init"]) can.run(msg._event, [can._SEARCH, "Action.onaction._init"])
can.run(msg._event, ["search", "River.onaction._init"]) can.run(msg._event, [can._SEARCH, "River.onaction._init"])
can.run(msg._event, ["search", "Search.onaction._init"]) can.run(msg._event, [can._SEARCH, "Search.onaction._init"])
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, can._output) }, can._output)
can.page.Select(can, document.body, "fieldset.River", function(item) { can.page.Select(can, document.body, "fieldset.River", function(item) {
@ -191,12 +197,13 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
can.onlayout.topic(can) can.onlayout.topic(can)
can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) { can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) {
msg.Result()? init(): msg.Option("sso")? can.user.jumps(msg.Option("sso")): can.user.login(can, init) can.Conf(can._USERNAME, msg.Result())? init():
msg.Option("sso")? can.user.jumps(msg.Option("sso")): can.user.login(can, init)
}) })
}, },
title: function(event, can) { title: function(event, can) {
var args = {}; can.core.List(["pod", "title", "topic", "layout"], function(key) { var args = {}; can.core.List(["pod", can._TITLE, "topic", "layout"], function(key) {
var value = can.user.Search(can, key); value && (args[key] = value) var value = can.user.Search(can, key); value && (args[key] = value)
}) })
can.user.jumps(can.user.MergeURL(can, args, true)) can.user.jumps(can.user.MergeURL(can, args, true))
@ -220,7 +227,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
}) })
var msg = can.request(event, { var msg = can.request(event, {
name: meta.name, content: JSON.stringify(Volcanos.meta.pack), name: meta.name, content: JSON.stringify(Volcanos.meta.pack),
river: can.Conf("river"), storm: can.Conf("storm"), river: can.Conf(can._RIVER), storm: can.Conf(can._STORM),
}) })
var toast = can.user.toast(can, "打包中...", "webpack", 1000000) var toast = can.user.toast(can, "打包中...", "webpack", 1000000)
@ -235,13 +242,13 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
can.onlayout.figure(event, can, can.menu.first) can.onlayout.figure(event, can, can.menu.first)
}, },
shareuser: function(event, can) { shareuser: function(event, can) {
can.user.share(can, can.request(event), ["action", "share", "type", "login"]) can.user.share(can, can.request(event), [can._ACTION, can._SHARE, "type", "login"])
}, },
usernick: function(event, can) { usernick: function(event, can) {
can.user.input(event, can, [{_input: "text", name: "usernick", value: can.Conf("username")}], function(ev, button, data, list, args) { can.user.input(event, can, [{_input: "text", name: "usernick", value: can.Conf(can._USERNAME)}], function(ev, button, data, list, args) {
can.run(event, ["usernick", list[0]], function(msg) { can.run(event, ["usernick", list[0]], function(msg) {
can.page.Select(can, can._output, "div.username", function(item) { can.page.Select(can, can._output, "div.username", function(item) {
can.page.Modify(can, item, can.Conf("username", list[0])) can.page.Modify(can, item, can.Conf(can._USERNAME, list[0]))
}), can.user.toast(can, "修改成功") }), can.user.toast(can, "修改成功")
}, true) }, true)
}) })
@ -249,8 +256,8 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
clear: function(event, can, button) { can.onimport.background(event, can, "") }, clear: function(event, can, button) { can.onimport.background(event, can, "") },
logout: function(event, can) { can.user.logout(can) }, logout: function(event, can) { can.user.logout(can) },
River: function(can) { can.run({}, ["search", "River.onmotion.toggle"]) }, River: function(can) { can.run({}, [can._SEARCH, "River.onmotion.toggle"]) },
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) }, Footer: function(can) { can.run({}, [can._SEARCH, "River.onmotion.autosize"]) },
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
height: function(can) { return can._target.offsetHeight }, height: function(can) { return can._target.offsetHeight },

View File

@ -1,12 +1,17 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can._main_river = can.user.Search(can, "river") || Volcanos.meta.args.river || "project" can._main_river = "project", can._main_storm = "studio"
can._main_storm = can.user.Search(can, "storm") || Volcanos.meta.args.storm || "studio"
if (can.user.isExtension) { can._main_river = "product", can._main_storm = "chrome" } if (can.user.isExtension) { can._main_river = "product", can._main_storm = "chrome" }
if (can.user.isMobile) { can._main_river = "product", can._main_storm = "office" } if (can.user.isMobile) { can._main_river = "product", can._main_storm = "office" }
if (can.user.isWeiXin) { can._main_river = "service", can._main_storm = "wx" } if (can.user.isWeiXin) { can._main_river = "service", can._main_storm = "wx" }
can._main_river = can.user.Search(can, can._RIVER) || msg.Option("sess.river") || Volcanos.meta.args.river || can._main_river
can._main_storm = can.user.Search(can, can._STORM) || msg.Option("sess.storm") || Volcanos.meta.args.storm || can._main_storm
can._main_title = can.user.Search(can, can._TITLE) || msg.Option("sess.title") || Volcanos.meta.args.title || can.user.Search(can, "pod") || can._main_title
can.base.isFunc(cb) && cb(msg)
can.onmotion.clear(can), can.sublist = {} can.onmotion.clear(can), can.sublist = {}
if (msg.Option("sess.river") == "_share") { return can.onmotion.hide(can) }
can.onimport._menu(can)
var select; msg.Table(function(value, index, array) { var select; msg.Table(function(value, index, array) {
var view = can.onappend.item(can, "item", value, function(event, item) { var view = can.onappend.item(can, "item", value, function(event, item) {
// 左键选中 // 左键选中
@ -19,7 +24,16 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, target) }, target)
if (index == 0 || [value.hash, value.name].indexOf(can._main_river) > -1) { select = view } if (index == 0 || [value.hash, value.name].indexOf(can._main_river) > -1) { select = view }
}), select && select.click(), typeof cb == "function" && cb(msg) }), select && select.click()
},
_menu: function(can) {
can.run({}, [can._SEARCH, "Header.onimport.menu", can._RIVER,
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
!can.user.isMobile && ["访问", "内部系统", "访问应用", "访问工具", "访问用户", "访问设备", "工作任务"],
["共享", "共享群组", "共享应用", "共享工具", "共享主机"],
], function(event, item) {
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf(can._RIVER), can.Conf(can._STORM)])
})
}, },
}) })
Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, can, msg, panel, cmds, cb) { Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, can, msg, panel, cmds, cb) {
@ -30,14 +44,17 @@ Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, ca
var river = can.onengine.river[cmds[0]]; if (!river) { return false } var river = can.onengine.river[cmds[0]]; if (!river) { return false }
can.core.Item(river.storm, function(key, value) { can.core.Item(river.storm, function(key, value) {
msg.Push({hash: key, name: value.name}) msg.Push({hash: key, name: value.name})
}), typeof cb == "function" && cb(msg); return true }), can.base.isFunc(cb) && cb(msg); return true
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) {
can.const(
"search", "title", "river", "storm",
)
can.run({}, [], function(msg) { can.onimport._init(can, msg, list, cb, can._output) }) can.run({}, [], function(msg) { can.onimport._init(can, msg, list, cb, can._output) })
can.onengine.listen(can, "search", function(msg, word) { can.onengine.listen(can, can._SEARCH, function(msg, word) {
if (word[0] == "*" || word[0] == "storm") { can.onexport.storm(can, msg, word) } if (word[0] == "*" || word[0] == can._STORM) { can.onexport.storm(can, msg, word) }
}) })
can.onengine.listen(can, "action.touch", function() { can.onengine.listen(can, "action.touch", function() {
@ -46,14 +63,6 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
can.page.Remove(can, item) can.page.Remove(can, item)
}) })
}) })
can.run({}, ["search", "Header.onimport.menu", "river",
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
!can.user.isMobile && ["访问", "内部系统", "访问应用", "访问工具", "访问用户", "访问设备", "工作任务"],
["共享", "共享群组", "共享应用", "共享工具", "共享设备"],
], function(event, item) {
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf("river"), can.Conf("storm")])
})
}, },
storm: function(event, can, river) { storm: function(event, can, river) {
var list = can.sublist[river]; if (list) { return can.page.Toggle(can, list) } var list = can.sublist[river]; if (list) { return can.page.Toggle(can, list) }
@ -65,10 +74,10 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
return {text: [storm.name, "div", "item"], onclick: function(event) { return {text: [storm.name, "div", "item"], onclick: function(event) {
// 左键点击 // 左键点击
can.onaction.action(event, can, river, storm.hash) can.onaction.action(event, can, river, storm.hash)
can.user.title(can.user.Search(can, "pod") || storm.name) can.user.title(can._main_title || storm.name)
}, oncontextmenu: function(event) { }, oncontextmenu: function(event) {
can.onaction.action(event, can, river, storm.hash) can.onaction.action(event, can, river, storm.hash)
can.user.title(can.user.Search(can, "pod") || storm.name) can.user.title(can._main_title || storm.name)
// 右键点击 // 右键点击
can.user.carte(event, can, can.ondetail, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) { can.user.carte(event, can, can.ondetail, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
@ -83,7 +92,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
}, },
action: function(event, can, river, storm) { can.onlayout._init(can) action: function(event, can, river, storm) { can.onlayout._init(can)
can.onengine.signal(can, "storm.select", can.request(event, { can.onengine.signal(can, "storm.select", can.request(event, {
river: can.Conf("river", river), storm: can.Conf("storm", storm), river: can.Conf(can._RIVER, river), storm: can.Conf(can._STORM, storm),
})) }))
can.page.Select(can, can._output, "div.item.select", function(item) { can.page.Select(can, can._output, "div.item.select", function(item) {
@ -110,9 +119,9 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
"创建": function(event, can) { can.onaction.create(event, can) }, "创建": function(event, can) { can.onaction.create(event, can) },
"刷新": function(event, can) { "刷新": function(event, can) {
can.user.Search(can, { can.user.Search(can, {
river: can.Conf("river"), storm: can.Conf("storm"), river: can.Conf(can._RIVER), storm: can.Conf(can._STORM),
topic: can.run(event, ["search", "Header.onexport.topic"]), topic: can.run(event, [can._SEARCH, "Header.onexport.topic"]),
layout: can.run(event, ["search", "Action.onexport.layout"]), layout: can.run(event, [can._SEARCH, "Action.onexport.layout"]),
}) })
}, },
}) })
@ -124,7 +133,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
{_input: "text", name: "name", value: river}, {_input: "text", name: "name", value: river},
], function(event, button, meta, list) { ], function(event, button, meta, list) {
var msg = can.request(event) var msg = can.request(event)
can.user.share(can, msg, [river, "action", "share", "type", "river", "name", meta.name]) can.user.share(can, msg, [river, "action", "share", "type", can._RIVER, "name", meta.name])
}) })
}, },
"添加用户": function(event, can, button, river) { "添加用户": function(event, can, button, river) {
@ -171,8 +180,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
{_input: "text", name: "name", value: storm}, {_input: "text", name: "name", value: storm},
], function(event, button, meta, list) { ], function(event, button, meta, list) {
var msg = can.request(event) var msg = can.request(event)
can.user.share(can, msg, [river, "action", "share", "type", "storm", "name", meta.name, can.user.share(can, msg, [river, "action", "share", "type", can._STORM, "name", meta.name,
"storm", storm, can._STORM, storm, can._RIVER, river,
]) ])
}) })
}, },
@ -186,7 +195,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
}) })
}, },
"保存参数": function(event, can, button, river, storm) { "保存参数": function(event, can, button, river, storm) {
can.run(event, ["search", "Action.onexport.args"], function(item, next, index, array) { can.run(event, [can._SEARCH, "Action.onexport.args"], function(item, next, index, array) {
var msg = can.request({}, {hash: storm, id: item.dataset.id}) var msg = can.request({}, {hash: storm, id: item.dataset.id})
can.run(msg._event, [river, "tool", "action", "modify", "arg", item.dataset.args], function(msg) { can.run(msg._event, [river, "tool", "action", "modify", "arg", item.dataset.args], function(msg) {
can.user.toast(can, "保存"+(index+1)+"/"+array.length) can.user.toast(can, "保存"+(index+1)+"/"+array.length)
@ -214,7 +223,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
}, },
"访问应用": function(event, can, button, river, storm) { "访问应用": function(event, can, button, river, storm) {
var msg = can.request(event, {sort: ","}) var msg = can.request(event, {sort: ","})
can.user.select(event, can, "storm", "type,name,text") can.user.select(event, can, can._STORM, "type,name,text")
}, },
"访问工具": function(event, can, button, river, storm) { "访问工具": function(event, can, button, river, storm) {
var msg = can.request(event, {sort: ","}) var msg = can.request(event, {sort: ","})
@ -231,14 +240,22 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
can.user.select(event, can, "task", "time,zone,id,type,name,text") can.user.select(event, can, "task", "time,zone,id,type,name,text")
}, },
"共享设备": function(event, can, button, river, storm) { "共享主机": function(event, can, button, river, storm) {
can.run(event, ["action", "invite"], function(msg) { can.run(event, ["action", "invite"], function(msg) {
var toast = can.user.toast(can, { var toast = can.user.toast(can, {
title: "共享设备", content: msg.Result(), title: "共享主机", content: msg.Result(),
button: ["close"], duration: -1, width: -100, button: ["close"], duration: -1, width: -100,
}) })
}) })
}, },
"共享工具": function(event, can, button, river, storm) {
can.user.select(event, can, "plugin", "name,context,command,argument", function(item, next) {
can.user.share(can, can.request(event), [river, "action", "share", "type", "field",
can._RIVER, item[1], can._STORM, item[2],
"name", item[0], "text", item[3],
])
})
},
"创建空间": function(event, can, button, river, storm) { "创建空间": function(event, can, button, river, storm) {
can.user.input(event, {__proto__: can, run: function(event, cmds, cb, silent) { can.user.input(event, {__proto__: can, run: function(event, cmds, cb, silent) {
@ -268,7 +285,7 @@ Volcanos("onexport", {help: "导出数据", list: [],
can.core.List(fields, function(key) { can.core.List(fields, function(key) {
switch (key) { switch (key) {
case "ctx": msg.Push(key, "web.chat"); break case "ctx": msg.Push(key, "web.chat"); break
case "cmd": msg.Push(key, "storm"); break case "cmd": msg.Push(key, can._STORM); break
case "type": msg.Push(key, river); break case "type": msg.Push(key, river); break
case "name": msg.Push(key, storm); break case "name": msg.Push(key, storm); break
case "text": case "text":

View File

@ -9,17 +9,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
} }
}]}, }]},
{view: "content"}, {view: ["display", "table"]}, {view: "preview"}, {view: "content"}, {view: ["display", "table"]}, {view: "preview"},
]), typeof cb == "function" && cb(msg) ]), can.base.isFunc(cb) && cb(msg)
can.page.ClassList.add(can, can.ui.display, "content") can.page.ClassList.add(can, can.ui.display, "content")
}, },
_table: function(can, msg, fields) { can.onmotion.clear(can, can.ui.content) _table: function(can, msg, fields) { can.onmotion.clear(can, can.ui.content)
var table = can.onappend.table(can, msg, function(value, key, index, line) { can.Status("count", index+1) var table = can.onappend.table(can, msg, function(value, key, index, line) { can.Status("count", index+1)
return {text: [key == "text" && typeof line.text == "function" && line.text.help || value, "td"], onclick: function(event) { return {text: [key == "text" && can.base.isFunc(line.text) && line.text.help || value, "td"], onclick: function(event) {
if (event.shiftKey) { event.stopPropagation(), event.preventDefault() if (event.shiftKey) { event.stopPropagation(), event.preventDefault()
return can.onappend.plugin(can, {index: line.ctx? line.ctx+"."+line.cmd: msg.Option("index"), option: line}, function(sub, meta) { return can.onappend.plugin(can, {index: line.ctx? line.ctx+"."+line.cmd: msg.Option("index"), option: line}, function(sub, meta) {
sub.run = function(event, cmds, cb) { var msg = can.request(event, line) sub.run = function(event, cmds, cb) { var msg = can.request(event, line)
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) { can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}) })
} }
}, can.ui.preview) }, can.ui.preview)
@ -48,7 +48,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
select: function(can, msg, cmds, cb) { can.ui.word.value = cmds[1] select: function(can, msg, cmds, cb) { can.ui.word.value = cmds[1]
var fields = (cmds[2]||msg.Option("fields")||"ctx,cmd,type,name,text").split(",") var fields = (cmds[2]||msg.Option("fields")||"ctx,cmd,type,name,text").split(",")
can.page.Appends(can, can.ui.display, [{th: fields}]), can.cb = function() { can.page.Appends(can, can.ui.display, [{th: fields}]), can.cb = function() {
typeof cb == "function" && cb(can.onexport.select(can)), can.onmotion.hide(can) can.base.isFunc(cb) && cb(can.onexport.select(can)), can.onmotion.hide(can)
} }
can.input = function(event, word) { cmds[1] = word can.input = function(event, word) { cmds[1] = word
@ -69,12 +69,12 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
}, },
"关闭": function(event, can) { can.onmotion.hide(can) }, "关闭": function(event, can) { can.onmotion.hide(can) },
"清空": function(event, can) { can.onmotion.clear(can, can.ui.display), can.onmotion.clear(can, can.ui.preview) }, "清空": function(event, can) { can.onmotion.clear(can, can.ui.display), can.onmotion.clear(can, can.ui.preview) },
"完成": function(event, can) { typeof can.cb == "function" && can.cb() }, "完成": function(event, can) { can.base.isFunc(can.cb) && can.cb() },
select: function(event, can, index) { select: function(event, can, index) {
if (can.list && can.list[index]) { if (can.list && can.list[index]) {
var text = can.list[index].text || "" var text = can.list[index].text || ""
if (typeof text == "function") { if (can.base.isFunc(text)) {
can.list[index].text(event) can.list[index].text(event)
} else { var line = can.list[index] } else { var line = can.list[index]
var fields = can.page.Select(can, can.ui.display, "th", function(item) { return item.innerText }) var fields = can.page.Select(can, can.ui.display, "th", function(item) { return item.innerText })

View File

@ -2,7 +2,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, list, cb, target) { Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, list, cb, target) {
typeof cb == "function" && cb(); switch (meta.type) { can.base.isFunc(cb) && cb(); switch (meta.type) {
case "textarea": case "textarea":
case "text": case "text":
!target.placeholder && (target.placeholder = can.user.trans(can, meta.name) || "") !target.placeholder && (target.placeholder = can.user.trans(can, meta.name) || "")

View File

@ -11,7 +11,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, can.ui.content) }, can.ui.content)
can.onappend.board(can, msg.Result(), can.ui.display) can.onappend.board(can, msg.Result(), can.ui.display)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, },
}) })
Volcanos("onaction", {help: "操作数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "操作数据", list: [], _init: function(can, msg, list, cb, target) {

View File

@ -11,7 +11,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
can.onimport.tabview(can, msg.Option("path"), msg.Option("file"), msg.Option("line")||1) can.onimport.tabview(can, msg.Option("path"), msg.Option("file"), msg.Option("line")||1)
can.onimport.project(can, msg.Option("path")) can.onimport.project(can, msg.Option("path"))
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, },
_content: function(can, target) { _content: function(can, target) {
var height = can.Conf("height")-320; height < 240 && (height = 240) var height = can.Conf("height")-320; height < 240 && (height = 240)
@ -54,7 +54,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
} } } }
can.run(event, ["action", "favor"].concat(cmds), function(msg) { can.run(event, ["action", "favor"].concat(cmds), function(msg) {
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
can.core.Timer(10, function() { can.core.Timer(10, function() {
can.onappend._action(sub, ["关闭"], sub._action, { can.onappend._action(sub, ["关闭"], sub._action, {
"关闭": function(event) { can.onmotion.hidden(sub, sub._target) }, "关闭": function(event) { can.onmotion.hidden(sub, sub._target) },
@ -83,7 +83,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
can.Option({path: path, file: file, line: line||parseInt(can._msg.Option("line"))||1}) can.Option({path: path, file: file, line: line||parseInt(can._msg.Option("line"))||1})
can._msg.Option("line", can.Option("line")) can._msg.Option("line", can.Option("line"))
return can.onsyntax._init(can, can._msg), typeof cb == "function" && cb() return can.onsyntax._init(can, can._msg), can.base.isFunc(cb) && cb()
} }
can.run({}, [path, file], function(msg) { can.run({}, [path, file], function(msg) {

View File

@ -3,7 +3,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onimport.inner_init(can, msg, list, function() { can.onimport.inner_init(can, msg, list, function() {
can.onimport._input(can), can.onimport._output(can) can.onimport._input(can), can.onimport._output(can)
can.keylist = [], can.onkeymap._init(can, "insert") can.keylist = [], can.onkeymap._init(can, "insert")
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, target) }, target)
}, function(can, name, sub) { }, function(can, name, sub) {
sub._name == "onimport" && (can.onimport.inner_init = sub._init) sub._name == "onimport" && (can.onimport.inner_init = sub._init)
@ -116,12 +116,12 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
} }
var p = can.onsyntax[can.parse] var p = can.onsyntax[can.parse]
var cb = (p && p.keymap || can.onkeymap[can.mode])[event.key]; if (typeof cb == "function") { var cb = (p && p.keymap || can.onkeymap[can.mode])[event.key]; if (can.base.isFunc(cb)) {
return repeat(cb, can.count) return repeat(cb, can.count)
} }
var map = can.onkeymap[can.mode]._engine; for (var i = can.keylist.length-1; i > pre-1; i--) { var map = can.onkeymap[can.mode]._engine; for (var i = can.keylist.length-1; i > pre-1; i--) {
var cb = map[can.keylist[i]]; if (typeof cb == "function") { var cb = map[can.keylist[i]]; if (can.base.isFunc(cb)) {
return repeat(cb, can.count) return repeat(cb, can.count)
}; if (typeof cb == "object") { map = cb; continue }; break }; if (typeof cb == "object") { map = cb; continue }; break
} }
@ -137,7 +137,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
can.onmotion.clear(can, can.ui.output) can.onmotion.clear(can, can.ui.output)
var ls = can.core.Split(line, " ", ",") var ls = can.core.Split(line, " ", ",")
var cb = can.onkeymap._engine[ls[0]]; if (typeof cb == "function") { var cb = can.onkeymap._engine[ls[0]]; if (can.base.isFunc(cb)) {
can.onmotion.hidden(can, can.ui.display) can.onmotion.hidden(can, can.ui.display)
can.onkeymap._normal(can) can.onkeymap._normal(can)
cb(event, can, line, ls) cb(event, can, line, ls)

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.onmotion.clear(can, target) can.onmotion.clear(can, target)
can.ui = can.onlayout.profile(can) can.ui = can.onlayout.profile(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
can.onmotion.hidden(can, can._action) can.onmotion.hidden(can, can._action)
can.onimport[can.Option("scale")||"week"](can, msg) can.onimport[can.Option("scale")||"week"](can, msg)
can.page.Modify(can, can.ui.profile, {style: {display: "block"}}) can.page.Modify(can, can.ui.profile, {style: {display: "block"}})
@ -88,7 +88,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
sub.run = function(event, cmds, cb) { sub.run = function(event, cmds, cb) {
var msg = can.request(event, {"task.zone": task.zone, "task.id": task.id}) var msg = can.request(event, {"task.zone": task.zone, "task.id": task.id})
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) { can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}, true) }, true)
} }
}, can.ui.display) }, can.ui.display)

View File

@ -1,6 +1,6 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb) {
can.ui = can.onlayout.display(can) can.ui = can.onlayout.display(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
can.table = can.onappend.table(can, msg, function(value, key, index, line) { can.table = can.onappend.table(can, msg, function(value, key, index, line) {
return {text: [value, "td"], oncontextmenu: function(event) { return {text: [value, "td"], oncontextmenu: function(event) {

View File

@ -3,7 +3,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onkeypop._build(can) can.onkeypop._build(can)
can.onmotion.hidden(can, can._action) can.onmotion.hidden(can, can._action)
can.ui = can.onlayout.profile(can) can.ui = can.onlayout.profile(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
// 交互数据 // 交互数据
can.svg = null, can.group = null can.svg = null, can.group = null
@ -50,7 +50,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
var figure = can.onfigure._get(can, target) var figure = can.onfigure._get(can, target)
key = figure && figure.data && figure.data.size && figure.data.size[key] || key key = figure && figure.data && figure.data.size && figure.data.size[key] || key
if (figure && figure.data && typeof figure.data[key] == "function") { if (figure && figure.data && can.base.isFunc(figure.data[key])) {
return figure.data[key](can, value, key, target) return figure.data[key](can, value, key, target)
} }

View File

@ -14,7 +14,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
case "TR": case "TR":
case "TABLE": case "TABLE":
}} }}
return typeof cb == "function" && cb(msg), table; return can.base.isFunc(cb) && cb(msg), table;
} }
// can.page.Append(can, action, [{type: "script", src: "https://cdn.bootcss.com/echarts/4.2.0-rc.2/echarts.js"}]); // can.page.Append(can, action, [{type: "script", src: "https://cdn.bootcss.com/echarts/4.2.0-rc.2/echarts.js"}]);

View File

@ -7,7 +7,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onmotion.hidden(can, can._action) can.onmotion.hidden(can, can._action)
can.ui = can.onlayout.display(can, target) can.ui = can.onlayout.display(can, target)
can.onappend.table(can, can.path, null, can.ui.content) can.onappend.table(can, can.path, null, can.ui.content)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
var feature = can.Conf("feature") || {} var feature = can.Conf("feature") || {}
can.Action("倍速", can.rate = parseInt(msg.Option("rate"))||feature["rate"]||1) can.Action("倍速", can.rate = parseInt(msg.Option("rate"))||feature["rate"]||1)
@ -25,7 +25,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, },
file: function(can, path, index) { path = can.onimport._file(can, path, index) file: function(can, path, index) { path = can.onimport._file(can, path, index)
var cb = can.onfigure[can.base.Ext(path)]; can.Status("file", path) var cb = can.onfigure[can.base.Ext(path)]; can.Status("file", path)
typeof cb == "function" && can.page.Append(can, can.ui.content, [cb(can, path, index)]) can.base.isFunc(cb) && can.page.Append(can, can.ui.content, [cb(can, path, index)])
}, },
}, ["/plugin/local/wiki/feel.css"]) }, ["/plugin/local/wiki/feel.css"])
Volcanos("onfigure", {help: "组件菜单", list: [], Volcanos("onfigure", {help: "组件菜单", list: [],

View File

@ -1,6 +1,6 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.onmotion.clear(can) can.onmotion.clear(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
if (msg.Length() > 0) { return can.onappend.table(can, msg) } if (msg.Length() > 0) { return can.onappend.table(can, msg) }
can.page.Modify(can, target, msg.Result()) can.page.Modify(can, target, msg.Result())

View File

@ -1,16 +1,17 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.onmotion.clear(can) can.onmotion.clear(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
if (msg.Option("branch")) { return can.onappend.table(can, msg) } if (msg.Option("branch")) { return can.onappend.table(can, msg) }
can.dir_root = msg.Option("dir_root") can.dir_root = msg.Option("dir_root")
can._tree = can.onimport._tree(can, msg.Table(), "path", "/") can._tree = can.onimport._tree(can, msg.Table(), "path", "/")
if (!can._tree[""]) { return }
can._tree[""].name = can.dir_root.split("/").pop() can._tree[""].name = can.dir_root.split("/").pop()
can.size = 30, can.margin = 30 can.size = 30, can.margin = 30
can.onappend.plugins(can, {index: "web.wiki.draw"}, function(sub) { can.onappend.plugins(can, {index: "web.wiki.draw"}, function(sub) {
sub.run = function(event, cmds, cb) { sub.Action("go", "run") sub.run = function(event, cmds, cb) { sub.Action("go", "run")
typeof cb == "function" && cb(sub.request()) can.base.isFunc(cb) && cb(sub.request())
can.core.Timer(100, function() { can.draw = sub._outputs[0] can.core.Timer(100, function() { can.draw = sub._outputs[0]
can.draw.onmotion.hidden(can.draw, can.draw.ui.project) can.draw.onmotion.hidden(can.draw, can.draw.ui.project)
@ -82,7 +83,7 @@ Volcanos("onaction", {help: "用户操作", list: ["编辑", ["view", "横向",
if (x+tree.width > can.width) { can.width = x+tree.width } if (x+tree.width > can.width) { can.width = x+tree.width }
can.core.Item(can.ondetail, function(key, value) { can.core.Item(can.ondetail, function(key, value) {
if (key.indexOf("on") == 0 && typeof value == "function") { if (key.indexOf("on") == 0 && can.base.isFunc(value)) {
tree.view[key] = function(event) { value(event, can, tree) } tree.view[key] = function(event) { value(event, can, tree) }
} }
}) })

View File

@ -1,6 +1,6 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.onmotion.clear(can) can.onmotion.clear(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
if (msg.Option("branch")) { return can.onappend.table(can, msg) } if (msg.Option("branch")) { return can.onappend.table(can, msg) }
can.msg = msg, can.data = msg.Table(), can.onimport._sum(can) can.msg = msg, can.data = msg.Table(), can.onimport._sum(can)
@ -9,7 +9,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onappend.plugins(can, {index: "web.wiki.draw"}, function(sub) { can.onappend.plugins(can, {index: "web.wiki.draw"}, function(sub) {
sub.run = function(event, cmds, cb) { sub.Action("go", "run") sub.run = function(event, cmds, cb) { sub.Action("go", "run")
typeof cb == "function" && cb(sub.request()) can.base.isFunc(cb) && cb(sub.request())
can.core.Timer(100, function() { can.draw = sub._outputs[0] can.core.Timer(100, function() { can.draw = sub._outputs[0]
can.draw.onmotion.hidden(can.draw, can.draw.ui.project) can.draw.onmotion.hidden(can.draw, can.draw.ui.project)
@ -90,7 +90,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["编辑", ["view", "趋势图
}) })
can.core.Item(can.ondetail, function(key, value) { can.core.Item(can.ondetail, function(key, value) {
if (key.indexOf("on") == 0 && typeof value == "function") { if (key.indexOf("on") == 0 && can.base.isFunc(value)) {
line.view[key] = function(event) { value(event, can, line) } line.view[key] = function(event) { value(event, can, line) }
} }
}) })
@ -140,7 +140,7 @@ Volcanos("onaction", {help: "组件菜单", list: ["编辑", ["view", "趋势图
}) })
can.core.Item(can.ondetail, function(key, value) { can.core.Item(can.ondetail, function(key, value) {
if (key.indexOf("on") == 0 && typeof value == "function") { if (key.indexOf("on") == 0 && can.base.isFunc(value)) {
line.view[key] = function(event) { value(event, can, line) } line.view[key] = function(event) { value(event, can, line) }
} }
}) })

View File

@ -1,9 +1,9 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
if (can.sup.onimport._process(can.sup, msg)) { return typeof cb == "function" && cb(can, msg) } if (can.sup.onimport._process(can.sup, msg)) { return can.base.isFunc(cb) && cb(can, msg) }
if (can.onimport._process(can, msg)) { return typeof cb == "function" && cb(can, msg) } if (can.onimport._process(can, msg)) { return can.base.isFunc(cb) && cb(can, msg) }
can.onmotion.clear(can) can.onmotion.clear(can)
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
can.page.Append(can, target, [can.onimport._control(can, msg)]) can.page.Append(can, target, [can.onimport._control(can, msg)])
can.onappend.table(can, msg, function(value, key, index, line, array) { can.onappend.table(can, msg, function(value, key, index, line, array) {
@ -32,7 +32,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
_process: function(can, msg) { _process: function(can, msg) {
var cb = can.onimport[msg.Option("_process")] var cb = can.onimport[msg.Option("_process")]
return typeof cb == "function" && cb(can, msg) return can.base.isFunc(cb) && cb(can, msg)
}, },
_follow: function(can, msg) { _follow: function(can, msg) {
if (msg.Option("cache.status") == "stop") { return can.user.toast(can, msg.Option("cache.action")+" done!")} if (msg.Option("cache.status") == "stop") { return can.user.toast(can, msg.Option("cache.action")+" done!")}
@ -64,7 +64,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
_control: function(can, msg) { _control: function(can, msg) {
var cb = can.onimport[msg.Option("_control")] var cb = can.onimport[msg.Option("_control")]
return typeof cb == "function" && cb(can, msg) return can.base.isFunc(cb) && cb(can, msg)
}, },
_page: function(can, msg) { var ui = {} _page: function(can, msg) { var ui = {}
return {view: ["control", "div"], list: [ return {view: ["control", "div"], list: [

View File

@ -64,9 +64,14 @@ var Volcanos = shy("火山架", {args: {}, pack: {}, libs: [], cache: {}}, [], f
event._msg = event._msg || can.misc.Message(event, can) event._msg = event._msg || can.misc.Message(event, can)
can.core.List(arguments, function(option, index) { can.core.List(arguments, function(option, index) {
index > 0 && can.core.Item(typeof option == "function"? option(): option, event._msg.Option) index > 0 && can.core.Item(can.base.isFunc(option)? option(): option, event._msg.Option)
}); return event._msg }); return event._msg
}, },
const: function() {
can.core.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 || {}; for (var k in proto) { can.hasOwnProperty(k) || (can[k] = proto[k]) } }; can = can || {}; for (var k in proto) { can.hasOwnProperty(k) || (can[k] = proto[k]) }

View File

@ -5,7 +5,7 @@ Volcanos("chrome", {
can.core.List(wins, function(win) { win.wid = win.id can.core.List(wins, function(win) { win.wid = win.id
msg.Push(win, ["wid", "state", "left", "top", "width", "height"]) msg.Push(win, ["wid", "state", "left", "top", "width", "height"])
}) })
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}) })
return return
} }
@ -14,7 +14,7 @@ Volcanos("chrome", {
can.core.List(tabs, function(tab) { tab.tid = tab.id can.core.List(tabs, function(tab) { tab.tid = tab.id
msg.Push(tab, ["tid", "active", "width", "height", "index", "title", "url"]) msg.Push(tab, ["tid", "active", "width", "height", "index", "title", "url"])
}) })
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}) })
return return
} }
@ -22,12 +22,12 @@ Volcanos("chrome", {
if (cmds[1] == "") { // 当前标签 if (cmds[1] == "") { // 当前标签
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { cmds[1] = tabs[0].id chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { cmds[1] = tabs[0].id
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) { chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
msg.Copy(res), typeof cb == "function" && cb(msg) msg.Copy(res), can.base.isFunc(cb) && cb(msg)
}) })
}) })
} else { } else {
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) { chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
msg.Copy(res), typeof cb == "function" && cb(msg) msg.Copy(res), can.base.isFunc(cb) && cb(msg)
}) })
} }
}, },
@ -38,7 +38,7 @@ Volcanos("chrome", {
msg.Push(labs[i], ["pid", "id", "index", "title", "url"]) msg.Push(labs[i], ["pid", "id", "index", "title", "url"])
labs = labs.concat(labs[i].children||[]) labs = labs.concat(labs[i].children||[])
} }
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}) })
}, },
}, ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], function(can) { }, ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], function(can) {

View File

@ -3,7 +3,7 @@ const kit = require("utils/kit.js")
App({ App({
data: {}, conf: {serve: "https://shylinux.com/chat", space: ""}, data: {}, conf: {serve: "https://shylinux.com/chat", space: ""},
requests: function(cmd, data, cb) { wx.showLoading() requests: function(cmd, data, cb) { wx.showLoading()
this.request(cmd, data, function(msg) { wx.hideLoading(), typeof cb == "function" && cb(msg) }) this.request(cmd, data, function(msg) { wx.hideLoading(), can.base.isFunc(cb) && cb(msg) })
}, },
request: function(cmd, data, cb) { var app = this; data.sessid = app.conf.sessid, data.pod = app.conf.space request: function(cmd, data, cb) { var app = this; data.sessid = app.conf.sessid, data.pod = app.conf.space
wx.request({method: "POST", url: app.conf.serve+"/"+cmd, data: data, success: function(res) { var msg = res.data wx.request({method: "POST", url: app.conf.serve+"/"+cmd, data: data, success: function(res) { var msg = res.data
@ -22,7 +22,7 @@ App({
var line = {}; kit.List(msg.key, function(key, index) { var line = {}; kit.List(msg.key, function(key, index) {
line[key] = msg.value[index] line[key] = msg.value[index]
}) })
typeof cb == "function" && cb(line, 0, 1) can.base.isFunc(cb) && cb(line, 0, 1)
return res.push(line), res return res.push(line), res
} }

View File

@ -74,7 +74,7 @@ Page({
var option = event._option||{}; option.cmds = cmds var option = event._option||{}; option.cmds = cmds
app.requests("action?="+field.name, option, function(msg) { app.requests("action?="+field.name, option, function(msg) {
field.msg = msg, page.setData({list: page.data.list}) field.msg = msg, page.setData({list: page.data.list})
typeof cb == "function" && cb(msg) can.base.isFunc(cb) && cb(msg)
}) })
}, },
onInput: function(event) { var page = this, data = event.target.dataset onInput: function(event) { var page = this, data = event.target.dataset
@ -106,7 +106,7 @@ Page({
case "刷新": // 执行命令 case "刷新": // 执行命令
case "查看": page.run(event, data.order); break case "查看": page.run(event, data.order); break
default: default:
var cb = page.plugin[input.name]; typeof cb == "function"? cb(event, page, data.order, input.name): var cb = page.plugin[input.name]; can.base.isFunc(cb)? cb(event, page, data.order, input.name):
page.run(event, data.order, ["action", input.name].concat(kit.List(field.inputs, function(input) { page.run(event, data.order, ["action", input.name].concat(kit.List(field.inputs, function(input) {
if (input._input != "button") { return input.value } if (input._input != "button") { return input.value }
}))) })))
@ -124,7 +124,7 @@ Page({
} }
event._option = option event._option = option
var cb = page.plugin[input.name]; typeof cb == "function"? cb(event, page, data.order, input.name): var cb = page.plugin[input.name]; can.base.isFunc(cb)? cb(event, page, data.order, input.name):
page.run(event, data.order, ["action", input.name]) page.run(event, data.order, ["action", input.name])
return return
} }

View File

@ -51,9 +51,9 @@ module.exports = {
}, },
List: function(list, cb, cbs) {var res = [], val; List: function(list, cb, cbs) {var res = [], val;
for (var i = 0; i < list.length; i++) { for (var i = 0; i < list.length; i++) {
typeof cb == "function"? (val = cb(list[i], i, list)) != undefined && res.push(val): res.push(list[i]) can.base.isFunc(cb)? (val = cb(list[i], i, list)) != undefined && res.push(val): res.push(list[i])
} }
return typeof cbs == "function" && cbs(res), res return can.base.isFunc(cbs) && cbs(res), res
}, },
Item: function(list, cb, cbs) { Item: function(list, cb, cbs) {
for (var k in list) { cb(k, list[k]) } for (var k in list) { cb(k, list[k]) }
@ -93,10 +93,10 @@ module.exports = {
interval = typeof interval == "object"? interval || []: [interval] interval = typeof interval == "object"? interval || []: [interval]
var timer = {stop: false}; function loop(timer, i) { var timer = {stop: false}; function loop(timer, i) {
if (timer.stop || i >= interval.length && interval.length >= 0) { if (timer.stop || i >= interval.length && interval.length >= 0) {
return typeof cbs == "function" && cbs(timer, interval) return can.base.isFunc(cbs) && cbs(timer, interval)
} }
return typeof cb == "function" && cb(timer, interval.interval||interval[i], i, interval)? return can.base.isFunc(cb) && cb(timer, interval.interval||interval[i], i, interval)?
typeof cbs == "function" && cbs(timer, interval): setTimeout(function() { loop(timer, i+1) }, interval.interval||interval[i+1]) can.base.isFunc(cbs) && cbs(timer, interval): setTimeout(function() { loop(timer, i+1) }, interval.interval||interval[i+1])
} }
setTimeout(function() { loop(timer, 0) }, interval.interval||interval[0]) setTimeout(function() { loop(timer, 0) }, interval.interval||interval[0])
return timer return timer