mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt frame.js
This commit is contained in:
parent
7ffca63865
commit
7324ee211a
10
frame.js
10
frame.js
@ -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([can, "onimport._process"], [can, msg, cmds, cb])) { return }
|
||||
typeof cb == "function" && cb(msg)
|
||||
}, silent)
|
||||
})
|
||||
return true
|
||||
})
|
||||
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]
|
||||
},
|
||||
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) {
|
||||
return {text: [value, "td"]}
|
||||
}); table && can.page.Modify(can, table, {className: "content"})
|
||||
list && can.page.RangeTable(can, table, list)
|
||||
return table
|
||||
},
|
||||
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 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) {
|
||||
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.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) {
|
||||
var list = []; can.onengine.listen(can, name, function(width, height) {
|
||||
|
@ -98,7 +98,7 @@ Volcanos("core", {help: "核心模块",
|
||||
})
|
||||
|
||||
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
|
||||
}),
|
||||
Split: shy("分词器", function(str) { if (!str || !str.length) { return [] }
|
||||
|
@ -118,7 +118,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
// 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 }
|
||||
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
|
||||
@ -140,6 +140,7 @@ Volcanos("user", {help: "用户模块", agent: {
|
||||
}]} ]}
|
||||
}) }])
|
||||
|
||||
view && can.page.Modify(can, ui.first, view)
|
||||
event.stopPropagation()
|
||||
event.preventDefault()
|
||||
return ui
|
||||
|
@ -4,7 +4,7 @@ Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js",
|
||||
{name: "Search", help: "搜索框", pos: "auto"},
|
||||
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
|
||||
{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: [
|
||||
"/plugin/state.js",
|
||||
"/plugin/input.js",
|
||||
|
@ -12,8 +12,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
||||
})
|
||||
},
|
||||
_plugin: function(can, river, storm, sub, item) {
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event); cmds = cmds || []
|
||||
return can.run(event, [river, storm, item.id||item.index||item.key+"."+item.name].concat(cmds), function(msg) {
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
||||
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)
|
||||
})
|
||||
}, 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) {
|
||||
if (word[0] == "*" || word[0] == "plugin") {
|
||||
can.onexport.plugin(can, msg)
|
||||
}
|
||||
if (word[0] == "*" || word[0] == "plugin") { can.onexport.plugin(can, msg) }
|
||||
})
|
||||
|
||||
can._target.ontouchstart = function(event) {
|
||||
@ -86,9 +84,23 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
|
||||
can.run({}, ["search", "Header.onimport.menu", "action",
|
||||
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
||||
], function(event, key) {
|
||||
can.core.CallFunc([can.onaction, key], {event: event, can: can, key: key})
|
||||
})
|
||||
], function(event, key) { can.onaction._layout(can, 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) {
|
||||
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: [],
|
||||
args: function(can, msg, list, cb, target) {
|
||||
|
@ -1,3 +0,0 @@
|
||||
fieldset.Debug>div.output td {
|
||||
padding:2px;
|
||||
}
|
@ -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: []})
|
||||
|
||||
|
@ -14,27 +14,20 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.toast = can.page.Append(can, target, [{view: ["toast", "div", ""]}]).first
|
||||
},
|
||||
_state: function(can, msg, target) {
|
||||
can.core.List(can.Conf("state"), function(item) {
|
||||
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)],
|
||||
list: [{text: item}, {text: ": "}, {text: [can.Conf(item)||"", "span", item]}],
|
||||
}])
|
||||
can.core.List(can.Conf("state")|["ncmd"], function(item) {
|
||||
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)], list: [
|
||||
{text: [item, "label"]}, {text: [": ", "label"]}, {text: [can.Conf(item)||"", "span", item]},
|
||||
]}])
|
||||
})
|
||||
},
|
||||
|
||||
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) {
|
||||
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) {
|
||||
ncmd: function(can, target) {
|
||||
can.page.Select(can, target, "span.ncmd", function(item) {
|
||||
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) {
|
||||
|
134
pane/Header.js
134
pane/Header.js
@ -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) {
|
||||
can._trans = {
|
||||
"river": "菜单",
|
||||
"search": "搜索",
|
||||
"setting": "设置",
|
||||
"pack": "打包页面",
|
||||
"white": "白色主题",
|
||||
"black": "黑色主题",
|
||||
"white": "白色主题",
|
||||
"print": "打印主题",
|
||||
"background": "清除背景",
|
||||
"void": "清除背景",
|
||||
"pack": "打包页面",
|
||||
"logout": "退出",
|
||||
}
|
||||
can.onmotion.clear(can)
|
||||
can.onimport._title(can, msg, target)
|
||||
can.onimport._state(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._menu(can, msg, target)
|
||||
can.onimport._background(can, msg, target)
|
||||
// can.onengine._daemon(can, can.user.title())
|
||||
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) {
|
||||
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.page.Append(can, target, [{view: [TITLE, "div", item],
|
||||
click: function(event) { can.onaction.title(event, can) },
|
||||
}])
|
||||
can.page.Append(can, target, [{view: ["title", "div", item], onclick: function(event) {
|
||||
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) {
|
||||
can.misc.WSS(can, {type: "chrome", name: name}, cb||function(event, msg, cmd, arg) {
|
||||
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) {
|
||||
can.core.List(can.Conf(STATE)||["time", USERNAME], function(item) {
|
||||
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)
|
||||
_background: function(can, msg) {
|
||||
can.onlayout.background(can, msg.Option("background"), document.body)
|
||||
},
|
||||
_agent: function(can, msg, target) {
|
||||
if (can.user.isMobile) {
|
||||
@ -70,12 +62,20 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.onaction.Footer(can)
|
||||
} else if (can.user.isExtension) {
|
||||
can.onaction.River(can)
|
||||
} else if (can.user.Search(can, POD)) {
|
||||
} else if (can.user.Search(can, "pod")) {
|
||||
can.onaction.River(can)
|
||||
can.onaction.Footer(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) {
|
||||
can.require(["https://res.wx.qq.com/open/js/jweixin-1.6.0.js"], function(can) {
|
||||
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")
|
||||
can.onlayout.topic(can)
|
||||
},
|
||||
background: function(event, can, url) {
|
||||
can.run(event, ["action", "background", url], function(msg) {
|
||||
can.onimport._background(can, msg)
|
||||
})
|
||||
},
|
||||
|
||||
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") {
|
||||
return {view: ["menu", "div", item], onclick: function(event) {
|
||||
typeof cb == "function" && cb(event, item)
|
||||
@ -135,11 +126,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
} else if (typeof item == "object") {
|
||||
return item
|
||||
}
|
||||
}) }])
|
||||
}) }]).first
|
||||
},
|
||||
})
|
||||
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.run({}, ["search", "Search.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.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) {
|
||||
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)
|
||||
})
|
||||
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"])
|
||||
can.page.Modify(can, ui.first, {style: {top: can._target.offsetHeight}})
|
||||
},
|
||||
logout: function(event, 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: ""}})
|
||||
})
|
||||
},
|
||||
logout: function(event, can) { can.user.logout(can) },
|
||||
|
||||
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) {
|
||||
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)})
|
||||
@ -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"]) },
|
||||
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) },
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
height: function(can) { return can._target.offsetHeight },
|
||||
})
|
||||
|
||||
})()
|
||||
|
104
pane/River.js
104
pane/River.js
@ -1,32 +1,21 @@
|
||||
(function() { const RIVER = "river", STORM = "storm", POD = "pod"
|
||||
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_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._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.onmotion.clear(can), can.sublist = {}
|
||||
var select; msg.Table(function(value, index, array) {
|
||||
var view = can.onappend.item(can, "item", value, function(event, item) {
|
||||
// 左键点击
|
||||
// 左键选中
|
||||
can.onaction.storm(event, can, value.hash)
|
||||
}, 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.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}})
|
||||
}, {style: {left: can._target.offsetWidth}})
|
||||
}, target)
|
||||
|
||||
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(), typeof cb == "function" && cb(msg)
|
||||
},
|
||||
})
|
||||
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) {
|
||||
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) {
|
||||
if (word[0] == "*" || word[0] == "storm") { can.onexport.storm(can, msg) }
|
||||
})
|
||||
|
||||
can.onengine.listen(can, "action.touch", function() {
|
||||
can.page.Select(can, document.body, "div.carte", function(item) {
|
||||
can.page.Remove(can, item)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
can.onengine.listen(can, "search", function(msg, word) {
|
||||
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) {
|
||||
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, "")
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
can.run({}, ["search", "Header.onimport.menu", "river",
|
||||
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备"],
|
||||
["访问", "访问研发", "访问应用", "访问工具", "访问用户", "访问设备", "访问任务"],
|
||||
["共享", "共享群组", "共享应用", "共享工具", "共享用户", "共享设备"],
|
||||
], function(event, item) {
|
||||
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf("river"), can.Conf("storm")])
|
||||
})
|
||||
},
|
||||
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) {
|
||||
// 左键点击
|
||||
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) {
|
||||
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.page.Modify(can, ui.first, {style: {left: can._target.offsetWidth}})
|
||||
}, {style: {left: can._target.offsetWidth}})
|
||||
}}
|
||||
}) }]).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) {
|
||||
var msg = can.request(event, {river: can.Conf(RIVER, river), storm: can.Conf(STORM, storm)})
|
||||
can.onengine.signal(can, "storm.select", msg)
|
||||
can.onengine.signal(can, "storm.select", can.request(event, {
|
||||
river: can.Conf("river", river), storm: can.Conf("storm", storm),
|
||||
}))
|
||||
|
||||
can.page.Select(can, can._output, "div.item.select", function(item) {
|
||||
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.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: ["共享群组", "添加用户", "添加设备", "添加应用", "重命名群组", "删除群组"],
|
||||
"创建群组": function(event, can) { can.onaction.create(event, can) },
|
||||
@ -244,5 +217,28 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
width: function(can) { return can._target.offsetWidth },
|
||||
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, "")
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
})
|
||||
})()
|
||||
|
@ -4,56 +4,47 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
if (event.key == "Escape") { can.onmotion.hide(can) }
|
||||
|
||||
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)
|
||||
}
|
||||
}]},
|
||||
{view: "content"}, {view: "display", list: [{type: "table"}]},
|
||||
])
|
||||
typeof cb == "function" && cb(msg)
|
||||
{view: "content"}, {view: ["display", "table"]}, {view: "preview"},
|
||||
]), typeof cb == "function" && cb(msg)
|
||||
},
|
||||
_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)
|
||||
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) {
|
||||
if (event.shiftKey) { var msg = can.request(event, line)
|
||||
can.onappend.plugin(can, {index: line.ctx+"."+line.cmd}, function(story, meta) {
|
||||
story.run = function(event, cmds, cb, silent) {
|
||||
can.run(event, ["command", "run", meta.index].concat(cmds), function(msg) {
|
||||
return can.onappend.plugin(can, {index: line.ctx+"."+line.cmd}, function(sub) {
|
||||
sub.run = function(event, cmds, cb) {
|
||||
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
|
||||
typeof cb == "function" && cb(msg)
|
||||
})
|
||||
}
|
||||
}, can.ui.display)
|
||||
return
|
||||
}, can.ui.preview)
|
||||
}
|
||||
if (line.ctx == "web.chat" && line.cmd == "/search") {
|
||||
can.onimport.select(can, msg, [line.type, line.name, line.text], can.cb)
|
||||
return
|
||||
return can.onimport.select(can, msg, [line.type, line.name, line.text], can.cb)
|
||||
}
|
||||
if (typeof line.text == "function") {
|
||||
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]
|
||||
}), data: {index: index}, onclick: function(event) {
|
||||
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.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.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) {
|
||||
var msg = can.request({}, {fields: fields.join(","), word: cmds})
|
||||
msg = can.request({}, {fields: fields.join(","), word: cmds})
|
||||
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.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]
|
||||
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)
|
||||
}
|
||||
|
||||
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.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.onimport._word(can, msg, cmds, fields)
|
||||
},
|
||||
@ -85,10 +76,10 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
|
||||
can.onimport._init(can, msg, list, cb, can._output)
|
||||
},
|
||||
"关闭": 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() },
|
||||
|
||||
choice: function(event, can, index) {
|
||||
select: function(event, can, index) {
|
||||
if (can.list && can.list[index]) { can.onmotion.hide(can)
|
||||
if (typeof can.list[index].text == "function") {
|
||||
can.list[index].text(event)
|
||||
|
@ -1,18 +1,16 @@
|
||||
Volcanos("onfigure", {help: "控件详情", list: [],
|
||||
province: {onclick: function(event, can, item, target, figure) {
|
||||
Volcanos("onfigure", {help: "控件详情", list: [], 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, [
|
||||
{type: "button", name: "清空", onclick: function(event) { target.value = "" }},
|
||||
{type: "button", name: "关闭", onclick: function(event) { can.page.Remove(can, figure.fieldset) }},
|
||||
], figure.action)
|
||||
|
||||
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);
|
||||
china_chart.setOption({geo: {map: 'china'}}), china_chart.on('click', function (params) {
|
||||
target.value = params.name, msg.Option("_refresh") && run()
|
||||
can.page.Remove(can, figure.fieldset)
|
||||
})
|
||||
})
|
||||
}},
|
||||
})
|
||||
}}, })
|
||||
|
||||
|
@ -260,8 +260,10 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
||||
can.onkeymap && can.onkeymap.selectLine(can, line, item)
|
||||
})
|
||||
|
||||
if (can.current) {
|
||||
var pos = can.current.offset()-can.current.line.offsetTop
|
||||
can.current.scroll(0, -pos)
|
||||
}
|
||||
},
|
||||
searchLine: function(event, can, value) { value = value.trim()
|
||||
can.page.Modify(can, can.ui.search, {style: {display: ""}})
|
||||
|
@ -5,15 +5,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
||||
},
|
||||
_progress: function(can, msg, cmds, cb, silent) {
|
||||
var size = msg.Append("size") || msg.Append("count")
|
||||
if (size != "" && size == msg.Append("total")) {
|
||||
return false
|
||||
}
|
||||
if (size != "" && size == msg.Append("total")) { return false }
|
||||
|
||||
can.user.toast(can, {
|
||||
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"),
|
||||
progress: parseInt(msg.Append("step")),
|
||||
width: 400,
|
||||
progress: parseInt(msg.Append("step")), width: 400,
|
||||
})
|
||||
|
||||
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})
|
||||
can.onappend._output(can, can.Conf(), sub._event, can.Pack())
|
||||
})
|
||||
return true
|
||||
},
|
||||
_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) {
|
||||
var res = can.request(event); can.core.Item(can.Option(), function(key, value) {
|
||||
res.Option(key) || res.Option(key, value)
|
||||
})
|
||||
can.run(event, (msg["_prefix"]||[]).concat(cmds), cb, true)
|
||||
}
|
||||
})
|
||||
}) })
|
||||
return true
|
||||
},
|
||||
})
|
||||
|
@ -7,7 +7,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
|
||||
can.onmotion.clear(can)
|
||||
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())
|
||||
|
||||
can.core.Timer(100, function() { can.sub = sub._outputs[0]
|
||||
|
@ -6,7 +6,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
|
||||
can.onmotion.clear(can)
|
||||
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())
|
||||
|
||||
can.core.Timer(100, function() { can.sub = sub._outputs[0]
|
||||
|
@ -1,6 +1,6 @@
|
||||
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.onimport._process(can, msg)) { return typeof cb == "function" && cb(can, msg) }
|
||||
|
||||
can.onmotion.clear(can)
|
||||
can.ui = can.onlayout.display(can)
|
||||
@ -50,6 +50,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
_process: function(can, msg) {
|
||||
var cb = can.onimport[msg.Option("_process")]
|
||||
return typeof cb == "function" && cb(can, msg)
|
||||
@ -136,7 +137,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}, data: {"className": "args"}},
|
||||
]}
|
||||
},
|
||||
|
||||
})
|
||||
Volcanos("onaction", {help: "控件交互", list: []})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
||||
|
@ -18,19 +18,18 @@ Volcanos("chrome", {
|
||||
})
|
||||
return
|
||||
}
|
||||
if (cmds[1] == "") { // 当前标签
|
||||
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
|
||||
cmds[1] = tabs[0].id
|
||||
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
|
||||
msg.Copy(res), typeof cb == "function" && cb(msg)
|
||||
})
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (cmds[1] == "") { // 当前标签
|
||||
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) { cmds[1] = tabs[0].id
|
||||
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
|
||||
msg.Copy(res), typeof cb == "function" && cb(msg)
|
||||
})
|
||||
})
|
||||
} else {
|
||||
chrome.tabs.sendMessage(parseInt(cmds[1]), msg, function(res) {
|
||||
msg.Copy(res), typeof cb == "function" && cb(msg)
|
||||
})
|
||||
}
|
||||
},
|
||||
bookmark: function(msg, cmds, cb) {
|
||||
chrome.bookmarks.getSubTree(cmds[0]||"0", function(labs) {
|
||||
@ -42,7 +41,7 @@ Volcanos("chrome", {
|
||||
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.user.toast = function(message, title) {chrome.notifications.create(null, {
|
||||
message: message, title: title||can._name, iconUrl: "/favicon.ico", type: "basic",
|
||||
|
@ -31,7 +31,7 @@ Volcanos("chrome", {
|
||||
}, [], function(can) { can._load("chrome")
|
||||
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]) })
|
||||
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])
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -1,13 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="/page/index.css">
|
||||
</head>
|
||||
<body style="min-width:800px; min-height:600px; overflow:auto">
|
||||
</head>
|
||||
<body style="min-width:800px; min-height:600px; overflow:auto">
|
||||
<script src="/proto.js"></script>
|
||||
<script src="/frame.js"></script>
|
||||
<script src="/publish/chrome/popup.js"></script>
|
||||
</body>
|
||||
<html>
|
||||
|
||||
</body>
|
||||
|
@ -1,10 +1,10 @@
|
||||
Volcanos({name: "demo", volcano: "/frame.js", iceberg: "http://localhost:9020/chat/", intshell: "plug.sh",
|
||||
libs: ["/lib/base", "/lib/core", "/lib/misc", "/lib/page", "/lib/user"], panes: [
|
||||
Volcanos({name: "demo", iceberg: "http://localhost:9020/chat/", volcano: "/frame.js",
|
||||
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: "River", help: "群聊组", pos: "left"},
|
||||
{name: "Search", help: "搜索框", pos: "auto"},
|
||||
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
|
||||
{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: [
|
||||
"/plugin/state.js", "/plugin/input.js", "/plugin/table.js",
|
||||
],
|
||||
|
@ -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)
|
||||
},
|
||||
})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user