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

opt frame.js

This commit is contained in:
shaoying 2021-01-21 18:41:29 +08:00
parent 7ffca63865
commit 7324ee211a
22 changed files with 212 additions and 315 deletions

View File

@ -285,7 +285,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
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) typeof cb == "function" && cb(msg)
}, silent) })
return true return true
}) })
return return
@ -398,10 +398,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
return can.page.Append(can, target, [{view: ["item "+item.type], list: [input]}])[item.name] return can.page.Append(can, target, [{view: ["item "+item.type], list: [input]}])[item.name]
}, },
table: function(can, msg, cb, target) { table: function(can, msg, cb, target, list) {
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value) { var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value) {
return {text: [value, "td"]} return {text: [value, "td"]}
}); table && can.page.Modify(can, table, {className: "content"}) }); table && can.page.Modify(can, table, {className: "content"})
list && can.page.RangeTable(can, table, list)
return table return table
}, },
board: function(can, text, target) { text = can.page.Display(text || "") board: function(can, text, target) { text = can.page.Display(text || "")
@ -413,7 +414,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
var list = can.core.Split(key, "@=", "@=") var list = can.core.Split(key, "@=", "@=")
var pkey = list[0], pval = list[1]||"" var pkey = list[0], pval = list[1]||""
target.type != "button" && target.value.startsWith("@") && (target.value = pval||"") target.type != "button" && target.value && target.value.startsWith("@") && (target.value = pval||"")
pkey && can.require(["/plugin/input/"+pkey+".js"], function(can) { pkey && can.require(["/plugin/input/"+pkey+".js"], function(can) {
can.onfigure && can.core.Item(can.onfigure[pkey], function(key, cb) { if (key.startsWith("on")) { can.onfigure && can.core.Item(can.onfigure[pkey], function(key, cb) { if (key.startsWith("on")) {
@ -490,6 +491,9 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
can.onmotion.move(can, ui.fieldset, layout) can.onmotion.move(can, ui.fieldset, layout)
can.page.Remove(can, ui.legend) can.page.Remove(can, ui.legend)
}, },
background: function(can, url, target) { target = target || document.body
can.page.Modify(can, target, {style: {background: url == "" || url == "void"? "": 'url("'+url+'")'}})
},
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) {

View File

@ -98,7 +98,7 @@ Volcanos("core", {help: "核心模块",
}) })
var res = func.apply(mod||can, list) var res = func.apply(mod||can, list)
if (!echo && typeof cb == "function") { res && msg.Echo(res), cb(msg) } if (!echo && typeof cb == "function") { res && msg.Echo(res), arguments.callee.apply(this, [cb, {msg: msg, res: res}]) }
return res return res
}), }),
Split: shy("分词器", function(str) { if (!str || !str.length) { return [] } Split: shy("分词器", function(str) { if (!str || !str.length) { return [] }

View File

@ -118,7 +118,7 @@ Volcanos("user", {help: "用户模块", agent: {
// TODO // TODO
}) })
}, },
carte: function(event, can, meta, list, cb) { carte: function(event, can, meta, list, cb, view) {
meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return } meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return }
cb = cb||function(ev, item, meta) { cb = cb||function(ev, item, meta) {
var cb = meta[item] || can.ondetail&&can.ondetail[item] || can.onaction&&can.onaction[item] || can.onkeymap&&can.onkeymap._remote var cb = meta[item] || can.ondetail&&can.ondetail[item] || can.onaction&&can.onaction[item] || can.onkeymap&&can.onkeymap._remote
@ -140,6 +140,7 @@ Volcanos("user", {help: "用户模块", agent: {
}]} ]} }]} ]}
}) }]) }) }])
view && can.page.Modify(can, ui.first, view)
event.stopPropagation() event.stopPropagation()
event.preventDefault() event.preventDefault()
return ui return ui

View File

@ -4,7 +4,7 @@ Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js",
{name: "Search", help: "搜索框", pos: "auto"}, {name: "Search", help: "搜索框", pos: "auto"},
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]}, {name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
{name: "Action", help: "工作台", pos: "main"}, {name: "Action", help: "工作台", pos: "main"},
{name: "Footer", help: "状态条", pos: "foot", state: ["ncmd", "keys"]}, {name: "Footer", help: "状态条", pos: "foot", state: ["ncmd"]},
], main: {name: "Header", engine: "remote", list: ["/publish/order.js"]}, plugin: [ ], main: {name: "Header", engine: "remote", list: ["/publish/order.js"]}, plugin: [
"/plugin/state.js", "/plugin/state.js",
"/plugin/input.js", "/plugin/input.js",

View File

@ -12,8 +12,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
}) })
}, },
_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); cmds = cmds || [] sub.run = function(event, cmds, cb) { var msg = sub.request(event)
return can.run(event, [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) {
typeof cb == "function" && cb(msg) typeof cb == "function" && cb(msg)
}) })
}, can._plugins = (can._plugins||[]).concat([sub]) }, can._plugins = (can._plugins||[]).concat([sub])
@ -70,9 +70,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
}) })
can.onengine.listen(can, "search", function(msg, word) { can.onengine.listen(can, "search", function(msg, word) {
if (word[0] == "*" || word[0] == "plugin") { if (word[0] == "*" || word[0] == "plugin") { can.onexport.plugin(can, msg) }
can.onexport.plugin(can, msg)
}
}) })
can._target.ontouchstart = function(event) { can._target.ontouchstart = function(event) {
@ -86,9 +84,23 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
can.run({}, ["search", "Header.onimport.menu", "action", can.run({}, ["search", "Header.onimport.menu", "action",
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"], ["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
], function(event, key) { ], function(event, key) { can.onaction._layout(can, key) })
can.core.CallFunc([can.onaction, key], {event: event, can: can, key: key}) },
}) _layout: function(can, key) {
var trans = {
"默认布局": "auto",
"流动布局": "flow",
"网格布局": "grid",
"标签布局": "tabs",
"自由布局": "free",
}
can.page.Modify(can, can._action, {className: "action "+trans[key]})
can.page.Modify(can, can._output, {className: "output "+trans[key]})
if (key == "标签布局") {
can.onmotion.select(can, can._output, "fieldset.plugin", 0)
can.onmotion.select(can, can._action, "div.item", 0)
}
}, },
_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("river")+"."+can.Conf("storm")+"."+name}
@ -109,29 +121,6 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
} }
}) })
}, },
"默认布局": function(event, can) {
can.page.Modify(can, can._action, {className: "action auto"})
can.page.Modify(can, can._output, {className: "output auto"})
},
"流动布局": function(event, can) {
can.page.Modify(can, can._action, {className: "action flow"})
can.page.Modify(can, can._output, {className: "output flow"})
},
"网格布局": function(event, can) {
can.page.Modify(can, can._action, {className: "action grid"})
can.page.Modify(can, can._output, {className: "output grid"})
},
"标签布局": function(event, can) {
can.page.Modify(can, can._action, {className: "action tabs"})
can.page.Modify(can, can._output, {className: "output tabs"})
can.onmotion.select(can, can._output, "fieldset.plugin", 0)
can.onmotion.select(can, can._action, "div.item", 0)
},
"自由布局": function(event, can) {
can.page.Modify(can, can._action, {className: "action free"})
can.page.Modify(can, can._output, {className: "output free"})
},
}) })
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
args: function(can, msg, list, cb, target) { args: function(can, msg, list, cb, target) {

View File

@ -1,3 +0,0 @@
fieldset.Debug>div.output td {
padding:2px;
}

View File

@ -1,20 +0,0 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can.require(["/require/github.com/Tencent/vConsole/dist/vconsole.min.js"], function(can) {
var v = new VConsole();
console.log(v);
})
},
})
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
can.onimport._init(can, msg, list, cb, target)
can.user.log = function() {
can.page.Append(can, can._output, [{td: [
can.base.Time(),
can.base.FileLine(),
].concat(can.core.List(arguments))}])
}
},
})
Volcanos("onexport", {help: "导出数据", list: []})

View File

@ -14,27 +14,20 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.toast = can.page.Append(can, target, [{view: ["toast", "div", ""]}]).first can.toast = can.page.Append(can, target, [{view: ["toast", "div", ""]}]).first
}, },
_state: function(can, msg, target) { _state: function(can, msg, target) {
can.core.List(can.Conf("state"), function(item) { can.core.List(can.Conf("state")|["ncmd"], function(item) {
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)], can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)], list: [
list: [{text: item}, {text: ": "}, {text: [can.Conf(item)||"", "span", item]}], {text: [item, "label"]}, {text: [": ", "label"]}, {text: [can.Conf(item)||"", "span", item]},
}]) ]}])
}) })
}, },
toast: function(can, msg, text) { toast: function(can, msg, text) {
can.page.Modify(can, can.toast, {innerHTML: text}) can.page.Modify(can, can.toast, text)
}, },
keys: function(can, msg, list, cb, target) { ncmd: function(can, target) {
can.page.Select(can, target, "span.keys", function(item) {
item.innerHTML = list[0]||""
})
typeof cb == "function" && cb(msg)
},
ncmd: function(can, msg, list, cb, target) {
can.page.Select(can, target, "span.ncmd", function(item) { can.page.Select(can, target, "span.ncmd", function(item) {
item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+"" item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+""
}) })
typeof cb == "function" && 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

@ -1,41 +1,51 @@
(function() { const TITLE = "title", TOPIC = "topic", POD = "pod", STATE = "state", USERNAME = "username"
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
can._trans = { can._trans = {
"river": "菜单", "river": "菜单",
"search": "搜索", "search": "搜索",
"setting": "设置", "setting": "设置",
"pack": "打包页面",
"white": "白色主题",
"black": "黑色主题", "black": "黑色主题",
"white": "白色主题",
"print": "打印主题", "print": "打印主题",
"background": "清除背景", "void": "清除背景",
"pack": "打包页面",
"logout": "退出", "logout": "退出",
} }
can.onmotion.clear(can) can.onmotion.clear(can)
can.onimport._title(can, msg, target) can.onimport._title(can, msg, target)
can.onimport._state(can, msg, target) can.onimport._state(can, msg, target)
can.onimport._search(can, msg, target) can.onimport._search(can, msg, target)
// can.onengine._daemon(can, can.user.title())
can.onimport._background(can, msg, target)
can.onimport._agent(can, msg, target) can.onimport._agent(can, msg, target)
can.onimport._menu(can, msg, target) can.onimport._menu(can, msg, target)
can.onimport._background(can, msg, target)
// can.onengine._daemon(can, can.user.title())
typeof cb == "function" && cb(msg) typeof cb == "function" && cb(msg)
}, },
_background: function(can, msg, target) { if (!msg.Option("background")) { return }
if (msg.Option("background") == "void") {
can.page.Modify(can, document.body, {style: {background: ''}})
} else {
can.page.Modify(can, document.body, {style: {background: 'url("'+msg.Option("background")+'")'}})
}
},
_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, "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], can.page.Append(can, target, [{view: ["title", "div", item], onclick: function(event) {
click: function(event) { can.onaction.title(event, can) }, can.onaction.title(event, can)
}]) }}])
}) })
}, },
_state: function(can, msg, target) {
can.core.List(can.Conf("state")||["time", "username"], function(item) {
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)], onclick: function(event) {
can.core.CallFunc([can.onaction, item], [event, can, item])
}, _init: function(target) {
item == "time" && can.core.Timer({interval: 1000, length: -1}, function() {
can.onimport.time(can, target)
}) && can.onappend.figure(can, {}, "@date", target)
}}])
})
},
_search: function(can, msg, target) {
can.user.isMobile || (can.search = can.page.Append(can, target, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
can.onkeypop.input(event, can); switch (event.key) {
case "Enter": can.run(event, ["search", "Search.onimport.select", "*", event.target.value]); break
}
}, }], }]).input)
},
_daemon: function(can, name, cb) { _daemon: function(can, name, cb) {
can.misc.WSS(can, {type: "chrome", name: name}, cb||function(event, msg, cmd, arg) { can.misc.WSS(can, {type: "chrome", name: name}, cb||function(event, msg, cmd, arg) {
msg && can.run(event, ["search"].concat(msg["detail"]||[]), function(msg) { msg && can.run(event, ["search"].concat(msg["detail"]||[]), function(msg) {
@ -43,26 +53,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
}) })
}, },
_state: function(can, msg, target) { _background: function(can, msg) {
can.core.List(can.Conf(STATE)||["time", USERNAME], function(item) { can.onlayout.background(can, msg.Option("background"), document.body)
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)],
click: function(event) { can.onaction[item](event, can, item) },
_init: function(target) {
item == "time" && can.core.Timer({interval: 1000, length: -1}, function(event) {
can.onimport.time(can, target)
})
},
}])
})
},
_search: function(can, msg, target) {
can.user.isMobile || (can.search = can.page.Append(can, target, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
can.onkeypop.input(event, can)
switch (event.key) {
case "Enter": can.run(event, ["search", "Search.onimport.select", "*", event.target.value]); break
}
}, }], }]).input)
}, },
_agent: function(can, msg, target) { _agent: function(can, msg, target) {
if (can.user.isMobile) { if (can.user.isMobile) {
@ -70,12 +62,20 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onaction.Footer(can) can.onaction.Footer(can)
} else if (can.user.isExtension) { } else if (can.user.isExtension) {
can.onaction.River(can) can.onaction.River(can)
} else if (can.user.Search(can, POD)) { } else if (can.user.Search(can, "pod")) {
can.onaction.River(can) can.onaction.River(can)
can.onaction.Footer(can) can.onaction.Footer(can)
} }
can.user.isWeiXin && can.onimport._weixin(can) can.user.isWeiXin && can.onimport._weixin(can)
}, },
_menu: function(can, msg, target) {
can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, "pod")? ["river", "setting"]: ["setting"], function(item) {
return {view: ["menus", "div", item], onclick: function(event) {
can.core.CallFunc([can.onaction, item], [event, can, item])
}}
}))
},
_weixin: function(can, msg) { can.run({}, ["action", "wx"], function(msg) { _weixin: function(can, msg) { can.run({}, ["action", "wx"], function(msg) {
can.require(["https://res.wx.qq.com/open/js/jweixin-1.6.0.js"], function(can) { can.require(["https://res.wx.qq.com/open/js/jweixin-1.6.0.js"], function(can) {
can.user.agent = { __proto__: can.user.agent, can.user.agent = { __proto__: can.user.agent,
@ -101,26 +101,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}) })
}) }) }) })
}, },
_menu: function(can, msg, target) {
can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, POD)? ["river", "setting"]: ["setting"], function(item) {
return {view: ["menus", "div", item], onclick: function(event) {
var cb = can.onaction[item]; typeof cb == "function" && cb(event, can, item)
}}
}))
},
time: function(can, target) { time: function(can, target) { can.onlayout.topic(can)
target.innerHTML = can.base.Time(null, "%w %H:%M:%S") target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
can.onlayout.topic(can)
}, },
background: function(event, can, url) { background: function(event, can, url) {
can.run(event, ["action", "background", url], function(msg) { can.run(event, ["action", "background", url], function(msg) {
can.onimport._background(can, msg) can.onimport._background(can, msg)
}) })
}, },
menu: function(can, cmds, cb) { // type item... menu: function(can, cmds, cb) { // type item...
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) typeof cb == "function" && cb(event, item)
@ -135,11 +126,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
} else if (typeof item == "object") { } else if (typeof item == "object") {
return item return item
} }
}) }]) }) }]).first
}, },
}) })
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
function init() { can.run({}, [], function(msg) { can.Conf(USERNAME, msg.Option("user.nick")||msg.Option("user.name")) function init() { can.run({}, [], function(msg) {
can.Conf("username", msg.Option("user.nick")||msg.Option("user.name"))
can.onimport._init(can, msg, list, function(msg) { can.onimport._init(can, msg, list, function(msg) {
can.run({}, ["search", "Search.onaction._init"]) can.run({}, ["search", "Search.onaction._init"])
can.run({}, ["search", "Action.onaction._init"]) can.run({}, ["search", "Action.onaction._init"])
@ -150,11 +142,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) { msg.Result()? init(): msg.Option("sso")? can.user.jumps(msg.Option("sso")): can.user.login(can, init) }) 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)
})
}, },
title: function(event, can) { title: function(event, can) {
var args = {}; can.core.List([POD, TOPIC, TITLE], function(key) { var args = {}; can.core.List(["pod", "topic", "title"], 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))
@ -163,17 +157,17 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
var ui = can.user.carte(event, can, can.onaction, ["logout"]) var ui = can.user.carte(event, can, can.onaction, ["logout"])
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}}) can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
}, },
logout: function(event, can) { logout: function(event, can) { can.user.logout(can) },
can.user.logout(can)
},
time: function(event, can) {
can.require(["/plugin/input/date.js"], function(can) {
event.target.value = ""
var ui = can.onfigure.date.onclick(event, can)
can.page.Modify(can, ui.fieldset, {style: {right: 0, top: can._target.offsetHeight, left: ""}})
})
},
river: function(event, can) { can.run(event, ["search", "River.onmotion.toggle"]) },
setting: function(event, can) {
var ui = can.user.carte(event, can, can.onaction, ["black", "white", "print", "void", "pack"])
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
},
black: function(event, can, button) { can.onlayout.topic(can, button) },
white: function(event, can, button) { can.onlayout.topic(can, button) },
print: function(event, can, button) { can.onlayout.topic(can, "white print") },
void: function(event, can, button) { can.onimport.background(event, can, button) },
pack: function(event, can) { pack: function(event, can) {
can.core.Item(Volcanos.meta.pack, function(key, msg) { delete(msg._event), delete(msg._can) }) can.core.Item(Volcanos.meta.pack, function(key, msg) { delete(msg._event), delete(msg._can) })
var msg = can.request(event, {name: "demo", content: JSON.stringify(Volcanos.meta.pack)}) var msg = can.request(event, {name: "demo", content: JSON.stringify(Volcanos.meta.pack)})
@ -184,23 +178,9 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
}) })
}, },
river: function(event, can) { can.run(event, ["search", "River.onmotion.toggle"]) },
setting: function(event, can) {
var ui = can.user.carte(event, can, can.onaction, ["pack", "white", "black", "print", "background"])
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
},
black: function(event, can, button) { can.onlayout.topic(can, button) },
white: function(event, can, button) { can.onlayout.topic(can, button) },
print: function(event, can, button) { can.onlayout.topic(can, "white print") },
background: function(event, can, button) {
can.onimport.background(event, can, "void")
},
River: function(can) { can.run({}, ["search", "River.onmotion.toggle"]) }, River: function(can) { can.run({}, ["search", "River.onmotion.toggle"]) },
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) }, Footer: function(can) { can.run({}, ["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,32 +1,21 @@
(function() { const RIVER = "river", STORM = "storm", POD = "pod"
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) || (can.user.isMobile||can.user.isExtension? "product": "project") can._main_river = can.user.Search(can, "river") || (can.user.isMobile||can.user.isExtension? "product": "project")
can._main_storm = can.user.Search(can, STORM) || (can.user.isMobile? "office": can.user.isExtension? "chrome": "studio") can._main_storm = can.user.Search(can, "storm") || (can.user.isMobile? "office": can.user.isExtension? "chrome": "studio")
can.run({}, ["search", "Header.onimport.menu", "river",
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备"],
["访问", "访问研发", "访问应用", "访问工具", "访问用户", "访问设备", "访问任务"],
["共享", "共享群组", "共享应用", "共享工具", "共享用户", "共享设备"],
], function(event, item) {
var cb = can.ondetail[item]; typeof cb == "function" && cb(event, can, item, can.Conf(RIVER), can.Conf(STORM))
})
can.onmotion.clear(can), can.sublist = {} can.onmotion.clear(can), can.sublist = {}
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) {
// 左键点击 // 左键选中
can.onaction.storm(event, can, value.hash) can.onaction.storm(event, can, value.hash)
}, function(event) { }, function(event) {
// 右键点击 // 右键菜单
var ui = can.user.carte(event, can, can.ondetail, can.ondetail.list, function(ev, item, meta) { can.user.carte(event, can, can.ondetail, can.ondetail.list, function(ev, item, meta) {
can.ondetail[item](event, can, item, value.hash) can.ondetail[item](event, can, item, value.hash)
}); can.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}}) }, {style: {left: can._target.offsetWidth}})
}, 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() }), select && select.click(), typeof cb == "function" && cb(msg)
typeof cb == "function" && cb(msg)
}, },
}) })
Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, can, msg, pane, cmds, cb) { Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, can, msg, pane, cmds, cb) {
@ -41,42 +30,24 @@ Volcanos("onengine", {help: "解析引擎", list: [], engine: function(event, ca
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) { Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) {
can.run({}, [], function(msg) { can.run({}, [], function(msg) { can.onimport._init(can, msg, list, cb, can._output) })
can.onimport._init(can, msg, list, cb, can._output)
can.onengine.listen(can, "search", function(msg, word) {
if (word[0] == "*" || word[0] == "storm") { can.onexport.storm(can, msg) }
}) })
can.onengine.listen(can, "action.touch", function() { can.onengine.listen(can, "action.touch", function() {
can.page.Select(can, document.body, "div.carte", function(item) { can.page.Select(can, document.body, "div.carte", function(item) {
can.page.Remove(can, item) can.page.Remove(can, item)
}) })
}) })
can.onengine.listen(can, "search", function(msg, word) { can.run({}, ["search", "Header.onimport.menu", "river",
if (word[0] != "*" && word[0] != "storm") { return } ["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备"],
["访问", "访问研发", "访问应用", "访问工具", "访问用户", "访问设备", "访问任务"],
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",") ["共享", "共享群组", "共享应用", "共享工具", "共享用户", "共享设备"],
can.core.Item(can.onengine.river, function(river, value) { ], function(event, item) {
can.core.Item(value.storm, function(storm, item) { can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf("river"), can.Conf("storm")])
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }
can.core.List(fields, function(key) {
switch (key) {
case "ctx": msg.Push(key, "web.chat"); break
case "cmd": msg.Push(key, "storm"); break
case "type": msg.Push(key, river); break
case "name": msg.Push(key, storm); break
case "text":
// msg.Push(key, can.user.MergeURL(can, {river: river, storm: storm}))
// break
msg.Push(key, shy("跳转", function(event) {
can.onaction.action(event, can, river, storm)
})); break
default: msg.Push(key, "")
}
})
})
})
}) })
}, },
storm: function(event, can, river) { storm: function(event, can, river) {
@ -89,14 +60,15 @@ 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.user.Search(can, "pod") || 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.user.Search(can, "pod") || storm.name)
// 右键点击 // 右键点击
var ui = can.user.carte(event, can, can.ondetail, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) { can.user.carte(event, can, can.ondetail, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
can.ondetail[item](event, can, item, river, storm.hash) can.ondetail[item](event, can, item, river, storm.hash)
}); can.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}}) }, {style: {left: can._target.offsetWidth}})
}} }}
}) }]).first, list.children.length > 0 && list.children[select].click() }) }]).first, list.children.length > 0 && list.children[select].click()
@ -105,8 +77,9 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
}) })
}, },
action: function(event, can, river, storm) { action: function(event, can, river, storm) {
var msg = can.request(event, {river: can.Conf(RIVER, river), storm: can.Conf(STORM, storm)}) can.onengine.signal(can, "storm.select", can.request(event, {
can.onengine.signal(can, "storm.select", msg) river: can.Conf("river", river), storm: can.Conf("storm", storm),
}))
can.page.Select(can, can._output, "div.item.select", function(item) { can.page.Select(can, can._output, "div.item.select", function(item) {
can.page.ClassList.del(can, item, "select") can.page.ClassList.del(can, item, "select")
@ -125,7 +98,7 @@ 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) { can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)}) }, "刷新": function(event, can) { can.user.Search(can, {river: can.Conf("river"), storm: can.Conf("storm")}) },
}) })
Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户", "添加设备", "添加应用", "重命名群组", "删除群组"], Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户", "添加设备", "添加应用", "重命名群组", "删除群组"],
"创建群组": function(event, can) { can.onaction.create(event, can) }, "创建群组": function(event, can) { can.onaction.create(event, can) },
@ -244,5 +217,28 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
Volcanos("onexport", {help: "导出数据", list: [], Volcanos("onexport", {help: "导出数据", list: [],
width: function(can) { return can._target.offsetWidth }, width: function(can) { return can._target.offsetWidth },
height: function(can) { return can._target.offsetHeight }, height: function(can) { return can._target.offsetHeight },
storm: function(can, msg) {
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
can.core.Item(can.onengine.river, function(river, value) {
can.core.Item(value.storm, function(storm, item) {
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }
can.core.List(fields, function(key) {
switch (key) {
case "ctx": msg.Push(key, "web.chat"); break
case "cmd": msg.Push(key, "storm"); break
case "type": msg.Push(key, river); break
case "name": msg.Push(key, storm); break
case "text":
// msg.Push(key, can.user.MergeURL(can, {river: river, storm: storm}))
// break
msg.Push(key, shy("跳转", function(event) {
can.onaction.action(event, can, river, storm)
})); break
default: msg.Push(key, "")
}
})
})
})
},
}) })
})()

View File

@ -4,56 +4,47 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
if (event.key == "Escape") { can.onmotion.hide(can) } if (event.key == "Escape") { can.onmotion.hide(can) }
if (event.key == "Enter") { event.stopPropagation(), event.preventDefault() if (event.key == "Enter") { event.stopPropagation(), event.preventDefault()
if (event.ctrlKey && can.onaction.choice(event, can, 0)) { return } if (event.ctrlKey && can.onaction.select(event, can, 0)) { return }
can.input(event, event.target.value) can.input(event, event.target.value)
} }
}]}, }]},
{view: "content"}, {view: "display", list: [{type: "table"}]}, {view: "content"}, {view: ["display", "table"]}, {view: "preview"},
]) ]), typeof cb == "function" && cb(msg)
typeof cb == "function" && cb(msg)
}, },
_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.onappend.table(can, msg, function(value, key, index, line) { can.Status("count", index+1)
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" && typeof line.text == "function" && line.text.help || value, "td"], onclick: function(event) {
if (event.shiftKey) { var msg = can.request(event, line) if (event.shiftKey) { var msg = can.request(event, line)
can.onappend.plugin(can, {index: line.ctx+"."+line.cmd}, function(story, meta) { return can.onappend.plugin(can, {index: line.ctx+"."+line.cmd}, function(sub) {
story.run = function(event, cmds, cb, silent) { sub.run = function(event, cmds, cb) {
can.run(event, ["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) typeof cb == "function" && cb(msg)
}) })
} }
}, can.ui.display) }, can.ui.preview)
return
} }
if (line.ctx == "web.chat" && line.cmd == "/search") { if (line.ctx == "web.chat" && line.cmd == "/search") {
can.onimport.select(can, msg, [line.type, line.name, line.text], can.cb) return can.onimport.select(can, msg, [line.type, line.name, line.text], can.cb)
return
} }
if (typeof line.text == "function") { if (typeof line.text == "function") {
return can.onmotion.hide(can), line.text(event) return can.onmotion.hide(can), line.text(event)
} }
can.page.Append(can, can.ui.table, [{td: can.core.List(fields, function(item) { can.page.Append(can, can.ui.display, [{td: can.core.List(fields, function(item) {
return line[item] return line[item]
}), data: {index: index}, onclick: function(event) { }), data: {index: index}, onclick: function(event) {
can.page.Remove(can, event.target.parentNode) can.page.Remove(can, event.target.parentNode)
can.Status("selected", can.page.Select(can, can.ui.table, "tr").length-1) can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
}}]) }}]), can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
can.Status("selected", can.page.Select(can, can.ui.table, "tr").length-1)
}} }}
}, can.ui.content) }, can.ui.content, [fields.indexOf("pod"), fields.indexOf("ctx"), fields.indexOf("cmd"),
fields.indexOf("type"), fields.indexOf("name"), fields.indexOf("text")])
fields.indexOf("ctx") > -1 && can.page.RangeTable(can, table, [fields.indexOf("ctx"),
fields.indexOf("cmd"), fields.indexOf("type"), fields.indexOf("name")])
can.page.Modify(can, can.ui.table, {style: {width: table.offsetWidth}})
}, },
_word: function(can, msg, cmds, fields) { _word: function(can, msg, cmds, fields) {
var msg = can.request({}, {fields: fields.join(","), word: cmds}) msg = can.request({}, {fields: fields.join(","), word: cmds})
can.onengine.signal(can, "search", msg) can.onengine.signal(can, "search", msg)
can.onmotion.clear(can, can.ui.content)
can.run(msg._event, cmds, function(msg) { can.list = msg.Table() can.run(msg._event, cmds, function(msg) { can.list = msg.Table()
can.onimport._table(can, msg, fields) can.onimport._table(can, msg, fields)
}) })
@ -62,21 +53,21 @@ 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")||"pod,ctx,cmd,type,name,text").split(",") var fields = (cmds[2]||msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
can.page.Appends(can, can.ui.table, [{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) typeof cb == "function" && cb(can.onexport.select(can)), can.onmotion.hide(can)
} }
can.run({}, ["search", "Header.onexport.height"], function(res) {
can.page.Modify(can, can._target, {style: {top: res}})
})
can.run({}, ["search", "River.onexport.width"], function(res) {
can.page.Modify(can, can._target, {style: {left: res}})
})
can.input = function(event, word) { cmds[1] = word can.input = function(event, word) { cmds[1] = word
can.onimport._word(can, msg, cmds, fields) can.onimport._word(can, msg, cmds, fields)
} }
can.page.Select(can, document.body, "fieldset.pane.Header", function(item) {
can.page.Modify(can, can._target, {style: {top: item.offsetHeight}})
})
can.page.Select(can, document.body, "fieldset.pane.River", function(item) {
can.page.Modify(can, can._target, {style: {left: item.offsetWidth}})
})
can.onmotion.show(can), can.ui.input.focus() can.onmotion.show(can), can.ui.input.focus()
can.onimport._word(can, msg, cmds, fields) can.onimport._word(can, msg, cmds, fields)
}, },
@ -85,10 +76,10 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
can.onimport._init(can, msg, list, cb, can._output) can.onimport._init(can, msg, list, cb, can._output)
}, },
"关闭": function(event, can) { can.onmotion.hide(can) }, "关闭": function(event, can) { can.onmotion.hide(can) },
"清空": function(event, can) { can.onmotion.clear(can, can.ui.table), can.onmotion.clear(can, can.ui.display) }, "清空": function(event, can) { can.onmotion.clear(can, can.ui.display), can.onmotion.clear(can, can.ui.display) },
"完成": function(event, can) { typeof can.cb == "function" && can.cb() }, "完成": function(event, can) { typeof can.cb == "function" && can.cb() },
choice: function(event, can, index) { select: function(event, can, index) {
if (can.list && can.list[index]) { can.onmotion.hide(can) if (can.list && can.list[index]) { can.onmotion.hide(can)
if (typeof can.list[index].text == "function") { if (typeof can.list[index].text == "function") {
can.list[index].text(event) can.list[index].text(event)

View File

@ -1,18 +1,16 @@
Volcanos("onfigure", {help: "控件详情", list: [], Volcanos("onfigure", {help: "控件详情", list: [], province: {onclick: function(event, can, item, target, figure) {
province: {onclick: function(event, can, item, target, figure) { can.require(["/require/github.com/shylinux/echarts/echarts.js","/require/github.com/shylinux/echarts/china.js"], function() {
can.onappend._action(can, [ can.onappend._action(can, [
{type: "button", name: "清空", onclick: function(event) { target.value = "" }}, {type: "button", name: "清空", onclick: function(event) { target.value = "" }},
{type: "button", name: "关闭", onclick: function(event) { can.page.Remove(can, figure.fieldset) }}, {type: "button", name: "关闭", onclick: function(event) { can.page.Remove(can, figure.fieldset) }},
], figure.action) ], figure.action)
can.page.Modify(can, figure.fieldset, {style: {left: 120}}) can.page.Modify(can, figure.fieldset, {style: {left: 120}})
can.require(["/require/github.com/shylinux/echarts/echarts.js","/require/github.com/shylinux/echarts/china.js"], function() { var china_chart = echarts.init(can.page.Append(can, figure.output, [{type: "div", style: {width: "600px", height: "400px"}}]).first);
var china_chart = echarts.init(can.page.Append(can, figure.output, [{type: "div", 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, msg.Option("_refresh") && run()
target.value = params.name, msg.Option("_refresh") && run() can.page.Remove(can, figure.fieldset)
can.page.Remove(can, figure.fieldset)
})
}) })
}}, })
}) }}, })

View File

@ -260,8 +260,10 @@ Volcanos("onaction", {help: "控件交互", list: [],
can.onkeymap && can.onkeymap.selectLine(can, line, item) can.onkeymap && can.onkeymap.selectLine(can, line, item)
}) })
var pos = can.current.offset()-can.current.line.offsetTop if (can.current) {
can.current.scroll(0, -pos) var pos = can.current.offset()-can.current.line.offsetTop
can.current.scroll(0, -pos)
}
}, },
searchLine: function(event, can, value) { value = value.trim() searchLine: function(event, can, value) { value = value.trim()
can.page.Modify(can, can.ui.search, {style: {display: ""}}) can.page.Modify(can, can.ui.search, {style: {display: ""}})

View File

@ -5,15 +5,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
}, },
_progress: function(can, msg, cmds, cb, silent) { _progress: function(can, msg, cmds, cb, silent) {
var size = msg.Append("size") || msg.Append("count") var size = msg.Append("size") || msg.Append("count")
if (size != "" && size == msg.Append("total")) { if (size != "" && size == msg.Append("total")) { return false }
return false
}
can.user.toast(can, { can.user.toast(can, {
title: can._name+" "+msg.Append("step")+"% ", duration: 1100, title: can._name+" "+msg.Append("step")+"% ", duration: 1100,
text: "执行进度: "+can.base.Size(size||0)+"/"+can.base.Size(msg.Append("total")||"1000")+"\n"+msg.Append("name"), text: "执行进度: "+can.base.Size(size||0)+"/"+can.base.Size(msg.Append("total")||"1000")+"\n"+msg.Append("name"),
progress: parseInt(msg.Append("step")), progress: parseInt(msg.Append("step")), width: 400,
width: 400,
}) })
can.page.Select(can, can._output, "td", function(td) { can.page.Select(can, can._output, "td", function(td) {
@ -33,16 +30,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1}) var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
can.onappend._output(can, can.Conf(), sub._event, can.Pack()) can.onappend._output(can, can.Conf(), sub._event, can.Pack())
}) })
return true
}, },
_field: function(can, msg) { _field: function(can, msg) {
can.onappend._plugin(can, msg, {}, function(sub, meta) { msg.Table(function(item) { can.onappend._plugin(can, item, {}, function(sub, meta) {
sub.run = function(event, cmds, cb, silent) { sub.run = function(event, cmds, cb, silent) {
var res = can.request(event); can.core.Item(can.Option(), function(key, value) { var res = can.request(event); can.core.Item(can.Option(), function(key, value) {
res.Option(key) || res.Option(key, value) res.Option(key) || res.Option(key, value)
}) })
can.run(event, (msg["_prefix"]||[]).concat(cmds), cb, true) can.run(event, (msg["_prefix"]||[]).concat(cmds), cb, true)
} }
}) }) })
return true return true
}, },
}) })

View File

@ -7,7 +7,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onmotion.clear(can) can.onmotion.clear(can)
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, silent) { sub.run = function(event, cmds, cb) {
typeof cb == "function" && cb(sub.request()) typeof cb == "function" && cb(sub.request())
can.core.Timer(100, function() { can.sub = sub._outputs[0] can.core.Timer(100, function() { can.sub = sub._outputs[0]

View File

@ -6,7 +6,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onmotion.clear(can) can.onmotion.clear(can)
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, silent) { sub.run = function(event, cmds, cb) {
typeof cb == "function" && cb(sub.request()) typeof cb == "function" && cb(sub.request())
can.core.Timer(100, function() { can.sub = sub._outputs[0] can.core.Timer(100, function() { can.sub = sub._outputs[0]

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) {
if (can.onimport._process(can, msg)) { return typeof cb == "function" && cb(can, msg) }
if (can.sup.onimport._process(can.sup, msg)) { return typeof cb == "function" && cb(can, msg) } if (can.sup.onimport._process(can.sup, msg)) { return typeof cb == "function" && cb(can, msg) }
if (can.onimport._process(can, msg)) { return typeof cb == "function" && cb(can, msg) }
can.onmotion.clear(can) can.onmotion.clear(can)
can.ui = can.onlayout.display(can) can.ui = can.onlayout.display(can)
@ -50,6 +50,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 typeof cb == "function" && cb(can, msg)
@ -136,7 +137,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}, data: {"className": "args"}}, }, data: {"className": "args"}},
]} ]}
}, },
}) })
Volcanos("onaction", {help: "控件交互", list: []}) Volcanos("onaction", {help: "控件交互", list: []})
Volcanos("onexport", {help: "导出数据", list: []}) Volcanos("onexport", {help: "导出数据", list: []})

View File

@ -18,19 +18,18 @@ Volcanos("chrome", {
}) })
return return
} }
if (cmds[1] == "") { // 当前标签 if (cmds[1] == "") { // 当前标签
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { cmds[1] = tabs[0].id
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), typeof cb == "function" && cb(msg)
}) })
}) })
return } else {
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
msg.Copy(res), typeof cb == "function" && cb(msg)
})
} }
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
msg.Copy(res), typeof cb == "function" && cb(msg)
})
}, },
bookmark: function(msg, cmds, cb) { bookmark: function(msg, cmds, cb) {
chrome.bookmarks.getSubTree(cmds[0]||"0", function(labs) { chrome.bookmarks.getSubTree(cmds[0]||"0", function(labs) {
@ -42,7 +41,7 @@ Volcanos("chrome", {
typeof cb == "function" && cb(msg) typeof cb == "function" && cb(msg)
}) })
}, },
}, ["/lib/base", "/lib/core", "/lib/misc", "/lib/page", "/lib/user"], function(can) { }, ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], function(can) {
can.Conf({iceberg: "http://localhost:9020/"}) can.Conf({iceberg: "http://localhost:9020/"})
can.user.toast = function(message, title) {chrome.notifications.create(null, { can.user.toast = function(message, title) {chrome.notifications.create(null, {
message: message, title: title||can._name, iconUrl: "/favicon.ico", type: "basic", message: message, title: title||can._name, iconUrl: "/favicon.ico", type: "basic",

View File

@ -31,7 +31,7 @@ Volcanos("chrome", {
}, [], function(can) { can._load("chrome") }, [], function(can) { can._load("chrome")
chrome.extension.onMessage.addListener(function(req, sender, cb) { chrome.extension.onMessage.addListener(function(req, sender, cb) {
var msg = can.request(); can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) }) var msg = can.request(); can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) })
can.core.CallFunc([can, req.detail[3]||"spide"], {can: can, msg: msg, cmds: req.detail.slice(4), cb: cb}) can.core.CallFunc([can, req.detail[3]||"spide"], [can, msg, req.detail.slice(4), cb])
}) })
}) })

View File

@ -1,13 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <head>
<head> <meta charset="utf-8">
<meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="/page/index.css">
<link rel="stylesheet" type="text/css" href="/page/index.css"> </head>
</head> <body style="min-width:800px; min-height:600px; overflow:auto">
<body style="min-width:800px; min-height:600px; overflow:auto"> <script src="/proto.js"></script>
<script src="/proto.js"></script> <script src="/frame.js"></script>
<script src="/frame.js"></script> <script src="/publish/chrome/popup.js"></script>
<script src="/publish/chrome/popup.js"></script> </body>
</body>
<html>

View File

@ -1,10 +1,10 @@
Volcanos({name: "demo", volcano: "/frame.js", iceberg: "http://localhost:9020/chat/", intshell: "plug.sh", Volcanos({name: "demo", iceberg: "http://localhost:9020/chat/", volcano: "/frame.js",
libs: ["/lib/base", "/lib/core", "/lib/misc", "/lib/page", "/lib/user"], panes: [ libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panes: [
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username"]}, {name: "Header", help: "标题栏", pos: "head", state: ["time", "username"]},
{name: "River", help: "群聊组", pos: "left"}, {name: "Search", help: "搜索框", pos: "auto"},
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
{name: "Action", help: "工作台", pos: "main"}, {name: "Action", help: "工作台", pos: "main"},
{name: "Search", help: "搜索框", pos: "float"}, {name: "Footer", help: "状态条", pos: "foot", state: ["ncmd"]},
{name: "Footer", help: "状态条", pos: "foot", state: ["ncmd" ]},
], main: {name: "Header", engine: "remote", list: ["/publish/order.js"]}, plugin: [ ], main: {name: "Header", engine: "remote", list: ["/publish/order.js"]}, plugin: [
"/plugin/state.js", "/plugin/input.js", "/plugin/table.js", "/plugin/state.js", "/plugin/input.js", "/plugin/table.js",
], ],

View File

@ -1,28 +0,0 @@
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
can.ui = can.page.Append(can, can._target, [
{view: ["content", "div"]}, {view: ["display", "pre"]},
])
can.onappend.table(can, msg, null, can.ui.content)
can.onappend.board(can, msg.Result(), can.ui.display)
var refresh = msg.Option("_refresh") || can.Conf("feature")["_refresh"]
refresh && can.core.Timer(refresh, function() {
can.run({})
})
return typeof cb == "function" && cb(msg)
},
})
Volcanos("onaction", {help: "控件交互", list: [],
onclick: function(event, can) {
can.run(event, [], function() {})
},
})
Volcanos("ondetail", {help: "控件交互", list: ["编辑", "删除"],
"编辑": function(event, can, key) {
console.log(key)
},
"删除": function(event, can, key) {
console.log(key)
},
})