mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt pane
This commit is contained in:
parent
0752a913b8
commit
9ff9c2469e
16
frame.js
16
frame.js
@ -53,6 +53,7 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta,
|
||||
return typeof cb == "function" && cb(msg)
|
||||
}
|
||||
|
||||
pane.run(event, ["search", "Footer.onimport.ncmd"])
|
||||
can.misc.Run(event, can, {names: pane._name}, cmds, function(msg) {
|
||||
delete(msg._event), delete(msg._can)
|
||||
Volcanos.meta.pack[pane._name+","+cmds.join(",")] = msg
|
||||
@ -212,15 +213,16 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta,
|
||||
})
|
||||
Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, list, cb, target, field) {
|
||||
meta.name = meta.name.split(" ")[0]
|
||||
field = field || can.onappend.field(can, target, meta.type||"plugin", meta).first
|
||||
field = field || can.onappend.field(can, target, meta.type, meta).first
|
||||
var legend = can.page.Select(can, field, "legend")[0]
|
||||
var option = can.page.Select(can, field, "form.option")[0]
|
||||
var action = can.page.Select(can, field, "div.action")[0]
|
||||
var output = can.page.Select(can, field, "div.output")[0]
|
||||
var status = can.page.Select(can, field, "div.status")[0]
|
||||
option.dataset.id = meta.id
|
||||
meta.id && (option.dataset.id = meta.id)
|
||||
|
||||
// 添加插件
|
||||
list = Volcanos.meta.libs.concat(list)
|
||||
var sub = Volcanos(meta.name, { _help: meta.name, _follow: can._follow+"."+meta.name,
|
||||
_legend: legend, _option: option, _action: action, _output: output, _status: status,
|
||||
_target: field, _inputs: {}, _outputs: [], _history: [],
|
||||
@ -779,5 +781,15 @@ Volcanos("onmotion", {help: "动态交互", list: [], _init: function(can) {
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
toggle: function(can, msg, list, cb, target) {
|
||||
can.page.Toggle(can, target)
|
||||
},
|
||||
autosize: function(can, msg, list, cb, target) {
|
||||
can.page.Select(can, target, "div.output", function(item, index) {
|
||||
index == 0 && (item.style.height = "")
|
||||
})
|
||||
target.style.height = ""
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -6,6 +6,7 @@ body {
|
||||
fieldset {
|
||||
color:cyan;
|
||||
padding:2px;
|
||||
margin:0; border:0;
|
||||
}
|
||||
legend {
|
||||
margin-left:10px;
|
||||
@ -301,6 +302,9 @@ body.white select:hover {
|
||||
body.white fieldset {
|
||||
/* color:black; */
|
||||
}
|
||||
body.white fieldset.pane {
|
||||
margin:0; border:0;
|
||||
}
|
||||
body.white fieldset.plugin {
|
||||
margin:0; border:0;
|
||||
border-top:solid 2px #CCCCFF;
|
||||
|
20
lib/user.js
20
lib/user.js
@ -111,6 +111,14 @@ var user = Volcanos("user", {help: "用户模块", agent: {
|
||||
event.preventDefault()
|
||||
return ui
|
||||
},
|
||||
select: function(event, can, type, fields, cb, cbs) {
|
||||
var msg = can.request(event, {fields: fields||"pod,name,text"})
|
||||
can.run(msg._event, ["search", "Search.onimport.select", type, "", ""], function(list) {
|
||||
can.core.Next(list, cb, cbs||function() {
|
||||
can.user.toast(can, "添加成功")
|
||||
})
|
||||
})
|
||||
},
|
||||
input: function(event, can, form, cb) { // form [ string, {_input: }, array, object, button ]
|
||||
function cbs(event, button) {
|
||||
var data = {}; var list = can.page.Select(can, ui.table, "select,input,textarea", function(item) {
|
||||
@ -285,11 +293,23 @@ var user = Volcanos("user", {help: "用户模块", agent: {
|
||||
}
|
||||
},
|
||||
|
||||
topic: function(can, name) {
|
||||
can.page.Modify(can, document.body, {className: name})
|
||||
},
|
||||
jumps: function(can, url) { location.href = url },
|
||||
logout: function(can) {
|
||||
if (can.user.confirm("logout?")) {
|
||||
can.user.Cookie(can, "sessid", "")
|
||||
can.user.reload(true)
|
||||
}
|
||||
},
|
||||
|
||||
isWeiXin: navigator.userAgent.indexOf("MicroMessenger") > -1,
|
||||
isMobile: navigator.userAgent.indexOf("Mobile") > -1,
|
||||
isIPhone: navigator.userAgent.indexOf("iPhone") > -1,
|
||||
isMacOSX: navigator.userAgent.indexOf("Mac OS X") > -1,
|
||||
isWindows: navigator.userAgent.indexOf("Windows") > -1,
|
||||
isLocalFile: location && location.protocol && location.protocol == "file:",
|
||||
isExtension: location && location.protocol && location.protocol == "chrome-extension:",
|
||||
})
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
const RIVER = "river", STORM = "storm"
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
var river = can.Conf("river"), storm = can.Conf("storm")
|
||||
can._output.innerHTML = "", can.core.Next(msg.Table(), function(value, next) {
|
||||
@ -8,7 +9,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
return
|
||||
}
|
||||
|
||||
value.index && can.run({}, ["action", "command", value.index], function(msg) {
|
||||
can.run({}, ["action", "command", value.index || value.ctx+"."+value.cmd], function(msg) {
|
||||
value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
||||
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])
|
||||
can.onimport._plugin(can, river, storm, value), next()
|
||||
@ -19,8 +20,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
_plugin: function(can, river, storm, value) { value.name = value.name.split(" ")[0]
|
||||
value.action = value.id || value.index || value.key+"."+value.name
|
||||
value.width = can._target.offsetWidth
|
||||
value.type = "plugin"
|
||||
|
||||
can.onappend._init(can, value, Volcanos.meta.libs.concat(["/plugin/state.js"]), function(sub) {
|
||||
can.onappend._init(can, value, ["/plugin/state.js"], function(sub) {
|
||||
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event); cmds = cmds || []
|
||||
return can.run(event, can.onengine[cmds[0]]? cmds: [river, storm, value.action].concat(cmds), function(msg) {
|
||||
return typeof cb == "function" && cb(msg)
|
||||
@ -35,10 +37,17 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
||||
var position = can.Conf("action", msg.Option("action", can.Cache(river+"."+storm, can._output)||""))
|
||||
if (position) { can._output.scrollTo(0, position-1); return }
|
||||
|
||||
msg.Clear("option"), can.run(msg._event, [river, storm], function(sup) {
|
||||
can.run({}, [river, storm], function(msg) {
|
||||
can.onimport._init(can, msg, list, cb, target)
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
||||
Volcanos("onexport", {help: "导出数据", list: [],
|
||||
args: function(can, msg, list, cb, target) {
|
||||
can.core.Next(can.page.Select(can, target, "div.output>fieldset.plugin>form.option"), function(item, next) {
|
||||
var list = can.page.Select(can, item, '.args', function(item) { return item.value||"" })
|
||||
item.dataset.args = JSON.stringify(list), cb(item, next)
|
||||
})
|
||||
},
|
||||
})
|
||||
|
||||
|
@ -1,31 +1,31 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can._output.innerHTML = ""
|
||||
can.onimport._title(can, msg)
|
||||
can.onimport._state(can, msg)
|
||||
typeof cb == "function" && cb()
|
||||
target.innerHTML = ""
|
||||
can.onimport._title(can, msg, target)
|
||||
can.onimport._state(can, msg, target)
|
||||
typeof cb == "function" && cb(msg)
|
||||
},
|
||||
_title: function(can, msg) {
|
||||
_title: function(can, msg, target) {
|
||||
can.core.List(msg.result, function(title) {
|
||||
can.page.Append(can, can._output, [{view: ["title", "div", title]}])
|
||||
can.page.Append(can, target, [{view: ["title", "div", title]}])
|
||||
})
|
||||
},
|
||||
_state: function(can, msg) {
|
||||
_state: function(can, msg, target) {
|
||||
can.core.List(can.Conf("state"), function(item) {
|
||||
can.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(item)],
|
||||
can.page.Append(can, target, [{view: ["state "+item, "div", can.Conf(item)],
|
||||
list: [{text: item}, {text: ": "}, {text: [can.Conf(item)||"", "span", item]}],
|
||||
click: function(event) { can.onaction[item](event, can, item) },
|
||||
}])
|
||||
})
|
||||
},
|
||||
|
||||
ncmd: function(can, msg, list, cb, target) {
|
||||
can.page.Select(can, target, "span.ncmd", function(item) {
|
||||
item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+""
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can.run({}, [], function(msg) {
|
||||
can.onimport._init(can, msg, list, cb, target)
|
||||
})
|
||||
},
|
||||
ncmd: function(can, msg, list, cb, target) {
|
||||
can.page.Select(can, can._target, "span.ncmd", function(item) {
|
||||
item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+""
|
||||
can.onimport._init(can, msg, list, cb, can._output)
|
||||
})
|
||||
},
|
||||
})
|
||||
|
@ -1,35 +1,35 @@
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can._output.innerHTML = ""
|
||||
can.onimport._title(can, msg)
|
||||
can.onimport._state(can, msg)
|
||||
can.onimport._search(can, msg)
|
||||
can.onimport._agent(can, msg)
|
||||
typeof cb == "function" && cb()
|
||||
target.innerHTML = ""
|
||||
can.onimport._title(can, msg, target)
|
||||
can.onimport._state(can, msg, target)
|
||||
can.onimport._search(can, msg, target)
|
||||
can.onimport._agent(can, msg, target)
|
||||
typeof cb == "function" && cb(msg)
|
||||
},
|
||||
_title: function(can, msg) {
|
||||
_title: function(can, msg, target) {
|
||||
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(title) {
|
||||
can.page.Append(can, can._output, [{view: ["title", "div", title],
|
||||
click: function(event) { can.onaction["title"](event, can, "title") },
|
||||
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) },
|
||||
}])
|
||||
})
|
||||
},
|
||||
_search: function(can, msg) {
|
||||
can.user.isMobile || (can.search = can.page.Append(can, can._output, [{view: "search", list: [{type: "input", data: {placeholder: "search"}, onkeydown: function(event) {
|
||||
_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) {
|
||||
switch (event.key) {
|
||||
case "Enter": can.run(event, ["search", "Search.onimport.input", "*", event.target.value]); break
|
||||
}
|
||||
}, }], }]).input)
|
||||
|
||||
var ui = can.page.Append(can, can._output, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, "pod")? ["River"]: ["pack"], function(item) {
|
||||
var ui = can.page.Append(can, target, can.core.List(can.user.isMobile || can.user.isExtension || can.user.Search(can, "pod")? ["River"]: ["pack"], function(item) {
|
||||
return {view: "item", list: [{type: "input", data: {type: "button", name: item, value: item.toLowerCase()}, onclick: function(event) {
|
||||
var cb = can.onaction[item]; typeof cb == "function" && cb(event, can, item)
|
||||
var cb = can.onaction[item]; typeof cb == "function" && (item == "River"? cb(can): cb(event, can, item))
|
||||
}, }]}
|
||||
}))
|
||||
},
|
||||
_state: function(can, msg) {
|
||||
_state: function(can, msg, target) {
|
||||
can.core.List(can.Conf("state")||["time", USERNAME], function(item) {
|
||||
can.page.Append(can, can._output, [{view: ["state "+item, "div", can.Conf(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) {
|
||||
@ -39,15 +39,15 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
}])
|
||||
})
|
||||
},
|
||||
_agent: function(can, msg) {
|
||||
if (can.user.isExtension) {
|
||||
can.onaction.River({}, can)
|
||||
} else if (can.user.isMobile) {
|
||||
can.onaction.River({}, can)
|
||||
can.onaction.Footer({}, can)
|
||||
_agent: function(can, msg, target) {
|
||||
if (can.user.isMobile) {
|
||||
can.onaction.River(can)
|
||||
can.onaction.Footer(can)
|
||||
} else if (can.user.isExtension) {
|
||||
can.onaction.River(can)
|
||||
} else if (can.user.Search(can, "pod")) {
|
||||
can.onaction.River({}, can)
|
||||
can.onaction.Footer({}, can)
|
||||
can.onaction.River(can)
|
||||
can.onaction.Footer(can)
|
||||
}
|
||||
can.user.isWeiXin && can.onimport._weixin(can)
|
||||
},
|
||||
@ -84,8 +84,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
if (can.user.Search(can, "pod")) { return }
|
||||
|
||||
var h = parseInt(can.base.Time(null, "%H"))
|
||||
var topic = h<7 || h>17? "black": "white"
|
||||
can.onaction[topic]({}, can, topic)
|
||||
can.user.topic(can, h<7 || h>17? "black": "white")
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
@ -94,39 +93,26 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
can.Conf(USERNAME, msg.Option("user.nick")||msg.Option("user.name"))
|
||||
can.Conf(USERNAME).length > 10 && can.Conf(USERNAME, can.Conf(USERNAME).slice(0, 10))
|
||||
|
||||
can.onimport._init(can, msg, msg.append, function() {
|
||||
can.onimport._init(can, msg, list, function(msg) {
|
||||
can.run({}, ["search", "River.onaction._init"])
|
||||
can.run({}, ["search", "Footer.onaction._init"])
|
||||
}, target)
|
||||
}, can._output)
|
||||
}) }
|
||||
|
||||
can.page.Modify(can, target, {
|
||||
className: can.user.Search(can, "topic") || (can.user.Search(can, "pod") || can.base.isNight() ? "black": "white"),
|
||||
})
|
||||
can.user.topic(can, can.user.Search(can, "topic") || (can.user.Search(can, "pod") || can.base.isNight() ? "black": "white"))
|
||||
|
||||
location.protocol == "file:"? init(): can.run({}, ["check"], function(msg) {
|
||||
can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) {
|
||||
msg.Result()? init(): can.user.login(can, init)
|
||||
})
|
||||
},
|
||||
title: function(event, can, key) {
|
||||
var args = {}; can.core.List(["pod", "topic"], function(key) {
|
||||
title: function(event, can) {
|
||||
var args = {}; can.core.List(["pod", "topic", "title"], function(key) {
|
||||
var value = can.user.Search(can, key); value && (args[key] = value)
|
||||
})
|
||||
location.href = can.user.Share(can, args, true)
|
||||
},
|
||||
username: function(event, can, key) {
|
||||
if (can.user.confirm("logout?")) {
|
||||
can.user.Cookie(can, "sessid", "")
|
||||
can.user.reload(true)
|
||||
}
|
||||
can.user.jumps(can, can.user.Share(can, args, true))
|
||||
},
|
||||
username: function(event, can) { can.user.logout(can) },
|
||||
|
||||
white: function(event, can, key) {
|
||||
can.page.Modify(can, document.body, {className: key})
|
||||
},
|
||||
black: function(event, can, key) {
|
||||
can.page.Modify(can, document.body, {className: key})
|
||||
},
|
||||
pack: function(event, can, key) {
|
||||
can.core.Item(Volcanos.meta.pack, function(key, msg) {
|
||||
delete(msg._event), delete(msg._can)
|
||||
@ -141,17 +127,8 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
||||
})
|
||||
},
|
||||
|
||||
River: function(event, can, key) {
|
||||
can.page.Select(can, document.body, "fieldset.River", function(item) {
|
||||
can.page.Modify(can, item, {style: {display: item.style.display == "none"? "block": "none"}})
|
||||
})
|
||||
},
|
||||
Footer: function(event, can, key) {
|
||||
can.page.Select(can, document.body, "fieldset.Action", function(item) {
|
||||
can.page.Select(can, item, "div.output")[0].style.height = ""
|
||||
item.style.height = ""
|
||||
})
|
||||
},
|
||||
River: function(can) { can.run({}, ["search", "River.onmotion.toggle"]) },
|
||||
Footer: function(can) { can.run({}, ["search", "River.onmotion.autosize"]) },
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
||||
|
||||
|
169
pane/River.js
169
pane/River.js
@ -1,17 +1,18 @@
|
||||
const RIVER = "river", STORM = "storm"
|
||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||
can._main_river = can.user.Search(can, RIVER) || (can.user.isExtension || can.user.isMobile? "product": "project")
|
||||
can._main_storm = can.user.Search(can, STORM) || (can.user.isExtension || can.user.isMobile? "office": "studio")
|
||||
|
||||
can._output.innerHTML = "", can.sublist = {}
|
||||
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 || can.user.isExtension? "office": "studio")
|
||||
|
||||
target.innerHTML = "", can.sublist = {}
|
||||
var select; msg.Table(function(value, index, array) {
|
||||
var view = can.onappend.item(can, can._output, "item", value, function(event, item) {
|
||||
var view = can.onappend.item(can, target, "item", value, function(event, item) {
|
||||
// 左键点击
|
||||
can.onimport.storm(event, can, value.hash)
|
||||
can.onaction.storm(event, can, value.hash)
|
||||
}, function(event) {
|
||||
// 右键点击
|
||||
can.onappend.menu(can, msg, value)
|
||||
can.user.carte(can, {}, can.ondetail.list, function(ev, item, meta) {
|
||||
can.ondetail[item](event, can, item, value.hash)
|
||||
})
|
||||
})
|
||||
|
||||
if (index == 0 || [value.hash, value.name].indexOf(can._main_river) > -1) { select = view }
|
||||
@ -19,10 +20,14 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
|
||||
typeof cb == "function" && cb(msg)
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: function(can, msg, list, cb, target) {
|
||||
can.run({}, [], function(msg) {
|
||||
can.onimport._init(can, msg, list, cb, can._output)
|
||||
})
|
||||
},
|
||||
storm: function(event, can, river) {
|
||||
var list = can.sublist[river]; if (list) {
|
||||
return can.page.Modify(can, list, {style: {display: list.style.display == "none"? "": "none"}})
|
||||
}
|
||||
var list = can.sublist[river]; if (list) { return can.page.Toggle(can, list) }
|
||||
|
||||
can.run({}, [river, "tool"], function(msg) {
|
||||
var select = 0; list = can.page.Append(can, can._output, [{view: "sublist", list: msg.Table(function(storm, index) {
|
||||
@ -30,12 +35,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
|
||||
return {text: [storm.name, "div", "subitem"], onclick: function(event) {
|
||||
// 左键点击
|
||||
can.onimport.action(event, can, river, storm.hash)
|
||||
storm.name != "main" && can.user.title(can.user.Search(can, "pod") || storm.name)
|
||||
can.onaction.action(event, can, river, storm.hash)
|
||||
can.user.title(can.user.Search(can, "pod") || storm.name)
|
||||
}, oncontextmenu: function(event) {
|
||||
// 右键点击
|
||||
can.user.carte(can, {}, ["添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
|
||||
can.ondetail[item](event, can, item, storm)
|
||||
can.user.carte(can, {}, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(ev, item, meta) {
|
||||
can.ondetail[item](event, can, item, storm.hash, river)
|
||||
})
|
||||
}}
|
||||
}) }]).sublist, select < list.children.length && list.children[select].click()
|
||||
@ -54,12 +59,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
can.page.ClassList.del(can, item, "select")
|
||||
}), can.page.ClassList.add(can, event.target, "select")
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: function(can, msg, list, cb, target) {
|
||||
can.run({}, [], function(msg) {
|
||||
can.onimport._init(can, msg, list, cb, target)
|
||||
})
|
||||
},
|
||||
create: function(event, can) {
|
||||
can.user.input(event, can, [
|
||||
["类型", "public", "protected", "private"],
|
||||
@ -75,112 +74,98 @@ Volcanos("onaction", {help: "控件交互", list: ["创建", "刷新"], _init: f
|
||||
"创建": function(event, can) { can.onaction.create(event, can) },
|
||||
"刷新": function(event, can) { can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)}) },
|
||||
})
|
||||
Volcanos("ondetail", {help: "菜单交互", list: ["添加用户", "添加设备", "添加应用", "重命名群组", "删除群组"],
|
||||
"添加用户": function(event, can, river, button) {
|
||||
can.run(event, ["search", "Search.onimport.select", "user", "", ""], function(list) {
|
||||
can.core.Next(list, function(item, next) {
|
||||
can.run({}, [can.Conf(RIVER), "user", "action", "insert", "username", item[5]], function(msg) {
|
||||
next()
|
||||
Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户", "添加设备", "添加应用", "重命名群组", "删除群组"],
|
||||
"共享群组": function(event, can, button, river) {
|
||||
can.user.input(event, can, [
|
||||
{_input: "text", name: "name", value: river},
|
||||
], function(event, button, meta, list) {
|
||||
var msg = can.request(event)
|
||||
can.user.share(can, msg, [river, "action", "share", "type", "river", "name", meta.name])
|
||||
return true
|
||||
})
|
||||
}, function() {
|
||||
can.user.toast(can, "添加成功")
|
||||
},
|
||||
"添加用户": function(event, can, button, river) {
|
||||
can.user.select(event, can, "user", "pod,name,text", function(item, next) {
|
||||
can.run({}, [river, "user", "action", "insert", "username", item[2]], function(msg) {
|
||||
next()
|
||||
})
|
||||
})
|
||||
},
|
||||
"添加设备": function(event, can, value) {
|
||||
can.run(event, ["search", "Search.onimport.select", "space", "", ""], function(list) {
|
||||
can.core.Next(list, function(item, next) {
|
||||
can.run({}, [can.Conf(RIVER), "node", "action", "insert", "type", item[3], "name", item[4]], function(msg) {
|
||||
"添加设备": function(event, can, button, river) {
|
||||
can.user.select(event, can, "space", "pod,type,name,text", function(item, next) {
|
||||
can.run({}, [river, "node", "action", "insert", "type", item[1], "name", item[2]], function(msg) {
|
||||
next()
|
||||
})
|
||||
}, function() {
|
||||
can.user.toast(can, "添加成功")
|
||||
})
|
||||
})
|
||||
},
|
||||
"添加应用": function(event, can, river, button) {
|
||||
"添加应用": function(event, can, button, river) {
|
||||
can.user.input(event, can, [
|
||||
["类型", "public", "protected", "private"],
|
||||
{_input: "text", name: "名称", value: "hi"},
|
||||
{_input: "text", name: "简介", value: "hello"},
|
||||
], function(event, button, meta, list) {
|
||||
can.run(event, [can.Conf(RIVER), "tool", "action", "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) {
|
||||
can.user.Search(can, {river: can.Conf(RIVER), storm: msg.Result()})
|
||||
can.run({}, [river, "tool", "action", "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) {
|
||||
can.user.Search(can, {river: river, storm: msg.Result()})
|
||||
})
|
||||
})
|
||||
},
|
||||
"重命名群组": function(event, can, river, button) {
|
||||
"重命名群组": function(event, can, button, river) {
|
||||
can.user.input(event, can, ["name"], function(event, button, meta, list) {
|
||||
var msg = can.request(event); msg.Option("hash", river.hash)
|
||||
var msg = can.request(event, {hash: river})
|
||||
can.run(event, ["action", "modify", "name", meta.name], function(msg) {
|
||||
can.user.Search(can, {river: can.Conf(RIVER)})
|
||||
can.user.Search(can, {river: river})
|
||||
})
|
||||
})
|
||||
},
|
||||
"删除群组": function(event, can, river, button) {
|
||||
can.run(event, ["remove", "hash", river.hash], function(msg) {
|
||||
"删除群组": function(event, can, button, river) {
|
||||
can.run(event, ["remove", "hash", river], function(msg) {
|
||||
can.user.Search(can, {})
|
||||
})
|
||||
},
|
||||
|
||||
"添加工具": function(event, can, button, storm) {
|
||||
can.run(event, ["search", "Search.onimport.select", "command", "", ""], function(list) {
|
||||
can.core.Next(list, function(item, next) {
|
||||
can.run({}, [can.Conf(RIVER), "tool", "action", "insert", "hash", can.Conf(STORM)].concat(["pod", item[0], "ctx", item[5], "cmd", item[4]]), function(msg) {
|
||||
next()
|
||||
})
|
||||
}, function() {
|
||||
// can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)})
|
||||
})
|
||||
})
|
||||
},
|
||||
"保存参数": function(event, can, button, storm) {
|
||||
can.core.Next(can.page.Select(can, document.body, "fieldset.Action>div.output>fieldset.plugin>form.option"), function(item, next) {
|
||||
var list = can.page.Select(can, item, '.args', function(item) { return item.value||"" })
|
||||
|
||||
var msg = can.request({}); msg.Option("hash", storm.hash), msg.Option("id", item.dataset.id)
|
||||
can.run(msg._event, [can.Conf(RIVER), "tool", "action", "modify", "arg", JSON.stringify(list)], function(msg) {
|
||||
next()
|
||||
})
|
||||
}, function() {
|
||||
can.user.toast(can, "保存成功", STORM)
|
||||
})
|
||||
},
|
||||
"重命名应用": function(event, can, button, storm) {
|
||||
can.user.input(event, can, ["name"], function(event, button, meta, list) {
|
||||
var msg = can.request(event); msg.Option("hash", storm.hash)
|
||||
can.run(event, [can.Conf(RIVER), "tool", "action", "modify", "name", meta.name], function(msg) {
|
||||
can.user.Search(can, {river: can.Conf(RIVER), storm: can.Conf(STORM)})
|
||||
})
|
||||
})
|
||||
},
|
||||
"删除应用": function(event, can, button, storm) {
|
||||
var msg = can.request(event); msg.Option("hash", storm.hash)
|
||||
can.run(event, [can.Conf(RIVER), "tool", "action", "remove"], function(msg) {
|
||||
can.user.Search(can, {river: can.Conf(RIVER)})
|
||||
})
|
||||
},
|
||||
|
||||
"共享应用": function(event, can, button, storm) {
|
||||
"共享应用": function(event, can, button, storm, river) {
|
||||
can.user.input(event, can, [
|
||||
{_input: "text", name: "name", value: storm},
|
||||
{_input: "text", name: "username", value: "@key=hi"},
|
||||
{_input: "text", name: "userrole", value: "@key=void"},
|
||||
{_input: "text", name: "title", value: storm.name},
|
||||
], function(event, button, meta, list) {
|
||||
var msg = can.request(event)
|
||||
can.user.share(can, msg, [can.Conf(RIVER), "action", "share",
|
||||
"username", meta.username, "userrole", meta.userrole, "title", meta.title, "storm", storm.hash])
|
||||
can.user.share(can, msg, [river, "action", "share", "type", "storm", "name", meta.name,
|
||||
"storm", storm, "username", meta.username, "userrole", meta.userrole,
|
||||
])
|
||||
return true
|
||||
})
|
||||
},
|
||||
"共享群组": function(event, can, value) {
|
||||
can.user.input(event, can, ["name"], function(event, button, meta, list) {
|
||||
var msg = can.request(event)
|
||||
msg.Option()
|
||||
can.user.share(can, msg, [value.hash, "action", "share", "name", meta.name])
|
||||
return true
|
||||
"添加工具": function(event, can, button, storm, river) {
|
||||
can.user.select(event, can, "command", "pod,name,text", function(item, next) {
|
||||
can.run({}, [river, "tool", "action", "insert", "hash", storm].concat(["pod", item[0], "ctx", item[2], "cmd", item[1]]), function(msg) {
|
||||
next()
|
||||
})
|
||||
}, function() {
|
||||
can.user.Search(can, {river: river, storm: storm})
|
||||
})
|
||||
},
|
||||
"保存参数": function(event, can, button, storm, river) {
|
||||
can.run(event, ["search", "Action.onexport.args"], function(item, next) {
|
||||
var msg = can.request({}, {hash: storm, id: item.dataset.id})
|
||||
can.run({}, [river, "tool", "action", "modify", "arg", item.dataset.args], function(msg) {
|
||||
next()
|
||||
})
|
||||
})
|
||||
},
|
||||
"重命名应用": function(event, can, button, storm, river) {
|
||||
can.user.input(event, can, ["name"], function(event, button, meta, list) {
|
||||
var msg = can.request(event, {hash: storm})
|
||||
can.run(event, [river, "tool", "action", "modify", "name", meta.name], function(msg) {
|
||||
can.user.Search(can, {river: river, storm: storm})
|
||||
})
|
||||
})
|
||||
},
|
||||
"删除应用": function(event, can, button, storm, river) {
|
||||
var msg = can.request(event, {hash: storm})
|
||||
can.run(event, [river, "tool", "action", "remove"], function(msg) {
|
||||
can.user.Search(can, {river: river})
|
||||
})
|
||||
|
||||
},
|
||||
})
|
||||
Volcanos("onexport", {help: "导出数据", list: []})
|
||||
|
@ -57,16 +57,23 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
||||
can.ui.input.focus()
|
||||
search(cmd[1])
|
||||
},
|
||||
|
||||
select: function(can, msg, cmd, cb) { can._output.innerHTML = ""
|
||||
var fields = (msg.Option("fields")||"pod,ctx,cmd,type,name,text").split(",")
|
||||
|
||||
function search(word, cb) { cmd[1] = word
|
||||
can.run({}, cmd, function(msg) { can.ui.content.innerHTML = ""
|
||||
var msg = can.request({})
|
||||
msg.Option("fields", fields.join(","))
|
||||
can.run(msg._event, cmd, function(msg) { can.ui.content.innerHTML = ""
|
||||
can.onappend.table(can, msg, can.ui.content, "table", function(value, key, index, line) {
|
||||
can.Status("count", index+1)
|
||||
return {text: [value, "td"], onclick: function(event) {
|
||||
can.Status("index", index)
|
||||
can.Status("value", value)
|
||||
|
||||
can.page.Append(can, can.ui.table, [{td: [line.pod, line.ctx, line.cmd, line.type, line.name, line.text], data: {index: index}, onclick: function(event) {
|
||||
can.page.Append(can, can.ui.table, [{td: can.core.List(fields, function(item) {
|
||||
return line[item]
|
||||
}), data: {index: index}, onclick: function(event) {
|
||||
can.page.Remove(can, event.target.parentNode)
|
||||
}}])
|
||||
}}
|
||||
@ -77,9 +84,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
||||
|
||||
can.cb = function() {
|
||||
typeof cb == "function" && cb(can.page.Select(can, can.ui.display, "tr", function(tr) {
|
||||
return can.page.Select(can, tr, "td", function(td) {
|
||||
return td.innerHTML
|
||||
})
|
||||
return can.page.Select(can, tr, "td", function(td) { return td.innerHTML })
|
||||
}).slice(1))
|
||||
can.onaction.close(can)
|
||||
}, can.ui = can.page.Append(can, can._output, [
|
||||
@ -90,7 +95,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
||||
}
|
||||
}) }
|
||||
}]},
|
||||
{view: "content"}, {view: "display", list: [{type: "table", list: [{th: ["pod", "ctx", "cmd", "type", "name", "text"]}]}]},
|
||||
{view: "content"}, {view: "display", list: [{type: "table", list: [{th: fields}]}]},
|
||||
])
|
||||
can.page.Modify(can, can._target, {style: {display: "block"}})
|
||||
can.ui.input.focus()
|
||||
|
17
proto.js
17
proto.js
@ -16,6 +16,7 @@ var Volcanos = shy("火山架", {libs: [], pack: {}, order: 1, cache: {}, index:
|
||||
if (typeof name == "object") { var Config = name
|
||||
meta.volcano = Config.volcano, meta.libs = Config.libs
|
||||
var Preload = Config.libs; Config.panes.forEach(function(pane) {
|
||||
pane.type= "pane"
|
||||
pane.list = pane.list || ["/pane/"+pane.name+".css", "/pane/"+pane.name+".js"]
|
||||
Preload = Preload.concat(pane.list)
|
||||
}); Preload = Preload.concat(Config.plugin)
|
||||
@ -88,14 +89,19 @@ var Volcanos = shy("火山架", {libs: [], pack: {}, order: 1, cache: {}, index:
|
||||
target.appendChild(style)
|
||||
}
|
||||
},
|
||||
request: function(event, msg, proto) { event = event || {}
|
||||
if (!msg && event._msg) { return event._msg }
|
||||
request: function(event, option) { event = event || {}
|
||||
if (event._msg) {
|
||||
can.core.Item(option, function(key, value) {
|
||||
msg.Option(key, value)
|
||||
})
|
||||
return event._msg
|
||||
}
|
||||
|
||||
var ls = (can._name||can._help).split("/")
|
||||
event._pane = ls[ls.length-1]
|
||||
|
||||
event._msg = msg = msg || {}, msg._event = event, msg._can = can
|
||||
msg.__proto__ = proto || { _name: meta.order++, _create_time: new Date(),
|
||||
var msg = {}; event._msg = msg, msg._event = event, msg._can = can
|
||||
msg.__proto__ = { _name: meta.order++, _create_time: new Date(),
|
||||
Option: function(key, val) {
|
||||
if (key == undefined) { return msg && msg.option || [] }
|
||||
if (typeof key == "object") { can.core.Item(key, msg.Option) }
|
||||
@ -172,6 +178,9 @@ var Volcanos = shy("火山架", {libs: [], pack: {}, order: 1, cache: {}, index:
|
||||
return msg
|
||||
},
|
||||
}
|
||||
can.core.Item(option, function(key, value) {
|
||||
msg.Option(key, value)
|
||||
})
|
||||
return msg
|
||||
},
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user