mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt panel
This commit is contained in:
parent
654153ebd6
commit
680189e78d
147
frame.js
147
frame.js
@ -1,5 +1,9 @@
|
|||||||
var _can_name = "/frame.js"
|
var _can_name = "/frame.js"
|
||||||
Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) {
|
Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, list, cb, target) {
|
||||||
|
can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds || []
|
||||||
|
return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb)
|
||||||
|
}
|
||||||
|
|
||||||
can.core.Next(list, function(item, next) { item.type = "panel"
|
can.core.Next(list, function(item, next) { item.type = "panel"
|
||||||
can.onappend._init(can, item, item.list, function(panel) {
|
can.onappend._init(can, item, item.list, function(panel) {
|
||||||
panel.run = function(event, cmds, cb) { var msg = panel.request(event); cmds = cmds || []
|
panel.run = function(event, cmds, cb) { var msg = panel.request(event); cmds = cmds || []
|
||||||
@ -41,6 +45,10 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
return can.base.isFunc(cb) && cb(msg)
|
return can.base.isFunc(cb) && cb(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
can.search(can.request({}, {
|
||||||
|
time: can.base.Time(null, "%H:%M:%S"), follow: panel._follow, msg: msg, commands: cmds,
|
||||||
|
})._event, ["Footer.onimport.ncmd"])
|
||||||
|
|
||||||
can.misc.Run(event, can, {names: (can.Conf("iceberg")||"/chat/")+panel._name, daemon: can.ondaemon._list[0]+"."+msg._daemon}, cmds, function(msg) {
|
can.misc.Run(event, can, {names: (can.Conf("iceberg")||"/chat/")+panel._name, daemon: can.ondaemon._list[0]+"."+msg._daemon}, cmds, function(msg) {
|
||||||
Volcanos.meta.pack[key] = msg, delete(msg._handle), delete(msg._toast)
|
Volcanos.meta.pack[key] = msg, delete(msg._handle), delete(msg._toast)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
@ -148,36 +156,24 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
sub.page.ClassList.add(sub, field, meta.style||meta.feature.style||"")
|
sub.page.ClassList.add(sub, field, meta.style||meta.feature.style||"")
|
||||||
sub.page.ClassList.add(sub, field, meta.index? meta.index.split(".").pop(): meta.name)
|
sub.page.ClassList.add(sub, field, meta.index? meta.index.split(".").pop(): meta.name)
|
||||||
|
|
||||||
can.base.isFunc(cb) && cb(sub)
|
|
||||||
meta.option = can.base.Obj(meta.option||"{}", {})
|
|
||||||
meta.inputs && sub.onappend._option(sub, meta, sub._option)
|
|
||||||
|
|
||||||
sub.page.Modify(sub, sub._legend, {
|
sub.page.Modify(sub, sub._legend, {
|
||||||
onmouseenter: function(event) { sub.user.carte(event, sub, sub.onaction, sub.onaction.list) },
|
onmouseenter: function(event) { sub.user.carte(event, sub, sub.onaction, sub.onaction.list) },
|
||||||
})
|
})
|
||||||
|
|
||||||
|
meta.inputs && sub.onappend._option(sub, meta, sub._option)
|
||||||
|
can.base.isFunc(cb) && cb(sub)
|
||||||
}); return sub
|
}); return sub
|
||||||
},
|
},
|
||||||
_option: function(can, meta, option) { var index = -1, args = can.base.Obj(meta.args||meta.arg, [])
|
_option: function(can, meta, option) { var index = -1, args = can.base.Obj(meta.args||meta.arg, [])
|
||||||
function add(item, next) { item._input != "button" && item.type != "button" && index++
|
function add(item, next) { item._input != "button" && item.type != "button" && index++
|
||||||
Volcanos(item.name, {_follow: can._follow+"."+item.name,
|
Volcanos(item.name, {_follow: can.core.Keys(can._follow, item.name), _target: can.onappend.input(can, item, args[index], option),
|
||||||
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||||
// _target: can.onappend.input(can, item, args[index]||meta.option[item.name], option),
|
|
||||||
_target: can.onappend.input(can, item, args[index], option),
|
|
||||||
Option: can.Option, Action: can.Action, Status: can.Status,
|
Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
CloneInput: function() { add(item)._target.focus() },
|
CloneInput: function() { add(item)._target.focus() }, CloneField: function() { can.Clone() },
|
||||||
CloneField: function() { can.Clone() },
|
|
||||||
}, [item.display||"/plugin/input.js"].concat(Volcanos.meta.volcano, Volcanos.meta.libs), function(input) {
|
}, [item.display||"/plugin/input.js"].concat(Volcanos.meta.volcano, Volcanos.meta.libs), function(input) {
|
||||||
input.Conf(item), input.sup = can, input.run = function(event, cmds, cb, silent) {
|
input.Conf(item), input.sup = can, input.run = function(event, cmds, cb, silent) { var msg = can.request(event)
|
||||||
var msg = can.request(event)
|
|
||||||
var sub = can.core.Value(can, "_outputs.-1")
|
|
||||||
if (msg.Option("_handle") != "true" && sub && cmds && cmds[0] == "action" && sub.onaction && sub.onaction[cmds[1]]) {
|
|
||||||
msg.Option("_handle", "true")
|
|
||||||
return sub.onaction[cmds[1]](event, sub)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && input.onaction[cmds[1]]) {
|
if (msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && input.onaction[cmds[1]]) {
|
||||||
msg.Option("_handle", "true")
|
return msg.Option("_handle", "true"), can.core.CallFunc(input.onaction[cmds[1]], {event: event, can: input, msg: msg})
|
||||||
return input.onaction[cmds[1]](event, input)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
||||||
@ -217,28 +213,18 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
return can.onaction[cmds[1]](event, can, cmds[1])
|
return can.onaction[cmds[1]](event, can, cmds[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
can._daemon == undefined && (can._daemon = can.ondaemon._list.push(can)-1)
|
|
||||||
msg._daemon = msg._daemon||can._daemon
|
|
||||||
|
|
||||||
var feature = can.Conf("feature")
|
var feature = can.Conf("feature")
|
||||||
var input = msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && feature && feature[cmds[1]]; if (input) {
|
var input = msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && feature && feature[cmds[1]]; if (input) {
|
||||||
can.user.input(event, can, input, function(ev, button, data, list) {
|
can.user.input(event, can, input, function(ev, button, data, list, args) {
|
||||||
cmds = cmds.slice(0, 2), can.core.Item(data, function(key, value) {
|
var msg = can.request(event, {_handle: "true"}, can.Option())
|
||||||
key && value && cmds.push(key, value)
|
can.onappend._output(can, meta, event, cmds.slice(0, 2).concat(args), cb, true)
|
||||||
})
|
|
||||||
|
|
||||||
var msg = can.request(event, can.Option()); msg.Option("_handle", "true")
|
|
||||||
can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")
|
|
||||||
if (can.core.CallFunc([sub, "onimport._process"], [sub, msg, cmds, cb])) { return }
|
|
||||||
if (can.core.CallFunc([can, "onimport._process"], [can, msg, cmds, cb])) { return }
|
|
||||||
can.base.isFunc(cb) && cb(msg)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")
|
can._daemon == undefined && (can._daemon = can.ondaemon._list.push(can)-1), msg._daemon = msg._daemon||can._daemon
|
||||||
can._msg = msg
|
|
||||||
|
return can.run(event, cmds, function(msg) { var sub = can.core.Value(can, "_outputs.-1")||{}; can._msg = msg, sub._msg = msg
|
||||||
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 }
|
||||||
if (can.base.isFunc(cb) && can.core.CallFunc(cb, {can: can, msg: msg})) { return }
|
if (can.base.isFunc(cb) && can.core.CallFunc(cb, {can: can, msg: msg})) { return }
|
||||||
@ -246,16 +232,13 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
var display = msg.Option("_display") || meta.display || meta.feature.display || "/plugin/table.js"
|
var display = msg.Option("_display") || meta.display || meta.feature.display || "/plugin/table.js"
|
||||||
|
|
||||||
Volcanos(display, {_follow: can._follow+"."+display,
|
Volcanos(display, {_follow: can._follow+"."+display, _target: can._output, _fields: can._target,
|
||||||
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
_option: can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||||
_target: can._output, _fields: can._target,
|
|
||||||
Option: can.Option, Action: can.Action, Status: can.Status,
|
Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
}, [display].concat(Volcanos.meta.volcano, Volcanos.meta.libs), function(table) {
|
}, [display].concat(Volcanos.meta.volcano, Volcanos.meta.libs), function(table) {
|
||||||
table.Conf(can.Conf()), table.sup = can, table.run = function(event, cmds, cb, silent) {
|
table.Conf(can.Conf()), table.sup = can, table.run = function(event, cmds, cb, silent) { var msg = can.request(event)
|
||||||
var msg = can.request(event)
|
|
||||||
if (msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && table.onaction[cmds[1]]) {
|
if (msg.Option("_handle") != "true" && cmds && cmds[0] == "action" && table.onaction[cmds[1]]) {
|
||||||
msg.Option("_handle", "true")
|
return msg.Option("_handle", "true"), can.core.CallFunc(table.onaction[cmds[1]], {event: event, can: table, msg: msg})
|
||||||
return table.onaction[cmds[1]](event, table)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
||||||
@ -264,19 +247,11 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
table.onimport && table.onimport._init && table.onimport._init(table, msg, msg.result||[], function(msg) {
|
table.onimport && table.onimport._init && table.onimport._init(table, msg, msg.result||[], function(msg) {
|
||||||
can.page.Modify(can, can._action, ""), can.page.Modify(can, can._status, "")
|
can.page.Modify(can, can._action, ""), can.page.Modify(can, can._status, "")
|
||||||
table.onaction && table.onappend._action(table, can.base.Obj(msg.Option("_action"), meta._action||table.onaction.list))
|
table.onaction && table.onappend._action(table, can.base.Obj(msg.Option("_action"), meta._action||table.onaction.list))
|
||||||
table.ondetail && table.onappend._detail(table, can.base.Obj(msg.Option("_detail"), meta._detail||table.ondetail.list))
|
|
||||||
table.onexport && table.onappend._status(table, can.base.Obj(msg.Option("_status"), meta._export||table.onexport.list))
|
table.onexport && table.onappend._status(table, can.base.Obj(msg.Option("_status"), meta._export||table.onexport.list))
|
||||||
}, can._output)
|
}, can._output)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_detail: function(can, list, target) { target = target || can._output
|
|
||||||
list.length > 0 && (target.oncontextmenu = function(event) {
|
|
||||||
can.user.carte(event, can, can.ondetail||can.onaction||{}, list, function(ev, item, meta) {
|
|
||||||
(can.ondetail[item]||can.onaction[item])(event, can, item)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
_status: function(can, list, status) { status = status || can._status
|
_status: function(can, list, status) { status = status || can._status
|
||||||
can.core.List(list, function(item) { item = typeof item == "object"? item: {name: item}
|
can.core.List(list, function(item) { item = typeof item == "object"? item: {name: item}
|
||||||
can.page.Append(can, status, [{view: "item "+item.name, title: item.name, list: [
|
can.page.Append(can, status, [{view: "item "+item.name, title: item.name, list: [
|
||||||
@ -419,18 +394,18 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
meta.name = meta.name||value.name||"story"
|
meta.name = meta.name||value.name||"story"
|
||||||
meta.help = meta.help||value.help||"story"
|
meta.help = meta.help||value.help||"story"
|
||||||
meta.width = meta.width||can.Conf("width")
|
|
||||||
meta.height = meta.height||can.Conf("height")
|
|
||||||
meta.type = meta.type||"story"
|
meta.type = meta.type||"story"
|
||||||
|
|
||||||
|
meta.width = meta.width||can.Conf("width")
|
||||||
|
meta.height = meta.height||can.Conf("height")
|
||||||
|
|
||||||
can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) {
|
can.onappend._init(can, meta, ["/plugin/state.js"], function(sub) {
|
||||||
meta.type == "story" && sub.page.Remove(sub, sub._legend)
|
|
||||||
sub.base.isFunc(cb) && cb(sub, meta)
|
sub.base.isFunc(cb) && cb(sub, meta)
|
||||||
}, target||can._output)
|
}, target||can._output)
|
||||||
},
|
},
|
||||||
plugin: function(can, meta, cb, target) { meta = meta || {}
|
plugin: function(can, meta, cb, target) { meta = meta || {}
|
||||||
meta.inputs && meta.inputs.length > 0? can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cb, target):
|
meta.inputs && meta.inputs.length > 0? can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, cb, target):
|
||||||
can.run({}, ["action", "command", meta.index||meta.ctx+"."+meta.cmd], function(msg) { msg.Table(function(value) {
|
can.run({}, ["action", "command", meta.index||can.core.Keys(meta.ctx, meta.cmd)], function(msg) { msg.Table(function(value) {
|
||||||
can.onappend._plugin(can, value, meta, cb, target)
|
can.onappend._plugin(can, value, meta, cb, target)
|
||||||
}) }, true)
|
}) }, true)
|
||||||
},
|
},
|
||||||
@ -443,39 +418,60 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.base.isFunc(cb) && cb(sub)
|
can.base.isFunc(cb) && cb(sub)
|
||||||
}, target)
|
}, target)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
float: function(can, msg, cb) {
|
||||||
|
var ui = can.onappend.field(can, "story toast float", {}, document.body)
|
||||||
|
|
||||||
|
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
||||||
|
can.page.Modify(can, ui.output, {style: {"max-width": width, "max-height": height-28}})
|
||||||
|
can.page.Modify(can, ui.first, {style: {top: top, left: left}})
|
||||||
|
})
|
||||||
|
|
||||||
|
can.onappend._action(can, ["关闭", "刷新"], ui.action, {
|
||||||
|
"关闭": function(event) { can.page.Remove(can, ui.first) },
|
||||||
|
"刷新": function(event) { can.page.Remove(can, ui.first), can.toast.click() },
|
||||||
|
})
|
||||||
|
can.onappend.table(can, msg, function(value, key, index, line, list) {
|
||||||
|
return {text: [value, "td"], onclick: function(event) {
|
||||||
|
can.base.isFunc(cb) && cb(value, key, index, line, list)
|
||||||
|
}}
|
||||||
|
}, ui.output)
|
||||||
|
return ui
|
||||||
|
},
|
||||||
}, [], function(can) {})
|
}, [], function(can) {})
|
||||||
Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, target) { target = document.body
|
Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, target) { target = target||document.body
|
||||||
|
var list = []; document.body.onresize = function() {
|
||||||
|
can.core.Delay(list, 1000, function() { can.onlayout._init(can, target) })
|
||||||
|
}
|
||||||
|
|
||||||
var width = window.innerWidth, height = window.innerHeight
|
var width = window.innerWidth, height = window.innerHeight
|
||||||
can.user.isMobile && can.page.ClassList.add(can, target, "mobile")
|
|
||||||
can.user.isMobile && can.page.ClassList.set(can, target, "landscape", width > height)
|
|
||||||
|
|
||||||
document.body.onresize = function() { can.onlayout._init(can, target) }
|
|
||||||
|
|
||||||
can.page.Select(can, target, ["fieldset.head", "fieldset.foot"], function(field) {
|
can.page.Select(can, target, ["fieldset.head", "fieldset.foot"], function(field) {
|
||||||
height -= field.offsetHeight
|
height -= field.offsetHeight
|
||||||
})
|
})
|
||||||
|
|
||||||
can.page.Select(can, target, "fieldset.left", function(field, index) {
|
can.page.Select(can, target, "fieldset.left", function(field, index) {
|
||||||
can.page.Modify(can, field, {style: {height: height}})
|
|
||||||
can.user.isMobile || (width -= field.offsetWidth)
|
can.user.isMobile || (width -= field.offsetWidth)
|
||||||
})
|
|
||||||
can.page.Select(can, target, "fieldset.left>div.output", function(output) {
|
can.page.Modify(can, field, {style: {height: height}})
|
||||||
can.page.Modify(can, output, {style: {height: height-32}})
|
can.page.Select(can, target, "fieldset.left>div.output", function(output) {
|
||||||
|
can.page.Modify(can, output, {style: {height: height-32}})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
if (can.user.isMobile) {
|
can.page.Select(can, target, "fieldset.main", function(field, index) {
|
||||||
can.page.Select(can, target, "fieldset.main", function(field, index) {
|
if (can.user.isMobile) {
|
||||||
can.user.isMobile && can.page.Modify(can, field, {style: {"padding-top": width > height? "0px": ""}})
|
can.page.Modify(can, field, {style: {"padding-top": can.user.isLandscape? "0px": ""}})
|
||||||
})
|
} else {
|
||||||
} else {
|
height -= can.page.Select(can, field, "div.action")[0].offsetHeight
|
||||||
can.page.Select(can, target, "fieldset.main", function(field, index) {
|
|
||||||
can.page.Modify(can, field, {style: {height: height}})
|
can.page.Modify(can, field, {style: {height: height}})
|
||||||
})
|
can.page.Select(can, target, "fieldset.main>div.output", function(output) {
|
||||||
can.page.Select(can, target, "fieldset.main>div.output", function(output) {
|
can.page.Modify(can, output, {style: {height: height}})
|
||||||
can.page.Modify(can, output, {style: {height: height}})
|
})
|
||||||
})
|
}
|
||||||
}
|
})
|
||||||
can.onengine.signal(can, "resize", can.request({}, {width: width, height: height}))
|
|
||||||
|
can.onengine.signal(can, "onresize", can.request({}, {width: width, height: height}))
|
||||||
},
|
},
|
||||||
topic: function(can, topic) { topic && (can._topic = topic)
|
topic: function(can, topic) { topic && (can._topic = topic)
|
||||||
can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, "pod")||can.base.isNight())? "black": "white"))
|
can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, "pod")||can.base.isNight())? "black": "white"))
|
||||||
@ -693,6 +689,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
layout.left = begin.left + event.x - begin.x
|
layout.left = begin.left + event.x - begin.x
|
||||||
can.page.Modify(can, target, {style: {left: layout.left, top: layout.top}})
|
can.page.Modify(can, target, {style: {left: layout.left, top: layout.top}})
|
||||||
}
|
}
|
||||||
|
event.stopPropagation(), event.preventDefault()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
show: function(can, time, cb, target) { target = target || can._target
|
show: function(can, time, cb, target) { target = target || can._target
|
||||||
|
@ -138,7 +138,13 @@ Volcanos("core", {help: "数据结构",
|
|||||||
}, i, list): typeof cbs == "function" && cbs(list)
|
}, i, list): typeof cbs == "function" && cbs(list)
|
||||||
}
|
}
|
||||||
|
|
||||||
list = typeof list == "object"? list: [list]
|
switch (typeof list) {
|
||||||
|
case "undefined": list = []; break
|
||||||
|
case "object": break
|
||||||
|
default: list = [list]
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
list && list.length > 0 && typeof cb == "function"? next(0): typeof cbs == "function" && cbs(list)
|
list && list.length > 0 && typeof cb == "function"? next(0): typeof cbs == "function" && cbs(list)
|
||||||
}),
|
}),
|
||||||
Timer: shy("定时器, value, [1,2,3,4], {interval, length}", function(interval, cb, cbs) {
|
Timer: shy("定时器, value, [1,2,3,4], {interval, length}", function(interval, cb, cbs) {
|
||||||
|
@ -100,9 +100,10 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
try { xhr.send(data) } catch(e) { can.misc.Log(e) }
|
try { xhr.send(data) } catch(e) { can.misc.Log(e) }
|
||||||
},
|
},
|
||||||
Run: function(event, can, dataset, cmds, cb) {
|
Run: function(event, can, dataset, cmds, cb) {
|
||||||
|
var skip = {_handle: true}
|
||||||
var msg = can.request(event||{})
|
var msg = can.request(event||{})
|
||||||
var form = {cmds: cmds||msg.cmd}; msg.option && msg.option.forEach(function(item) {
|
var form = {cmds: cmds||msg.cmd}; msg.option && msg.option.forEach(function(item) {
|
||||||
msg[item] && (form[item] = msg[item])
|
!skip[item] && msg[item] && (form[item] = msg[item])
|
||||||
})
|
})
|
||||||
|
|
||||||
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(),
|
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(),
|
||||||
|
@ -145,6 +145,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
return typeof item == "string"? {view: "item", list: [{text: can.user.trans(can, item), click: function(event) {
|
return typeof item == "string"? {view: "item", list: [{text: can.user.trans(can, item), click: function(event) {
|
||||||
can.user.isMobile && can.page.Remove(can, ui._target)
|
can.user.isMobile && can.page.Remove(can, ui._target)
|
||||||
can.base.isFunc(cb) && cb(event, item, meta)
|
can.base.isFunc(cb) && cb(event, item, meta)
|
||||||
|
// can.onmotion.float.del(can, "carte")
|
||||||
}, onmouseenter: function(event) {
|
}, onmouseenter: function(event) {
|
||||||
carte._float && can.page.Remove(can, carte._float._target)
|
carte._float && can.page.Remove(can, carte._float._target)
|
||||||
} }] }: {view: "item", list: [{text: can.user.trans(can, item[0])}], onmouseenter: function(event) {
|
} }] }: {view: "item", list: [{text: can.user.trans(can, item[0])}], onmouseenter: function(event) {
|
||||||
@ -162,7 +163,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
var msg = can.request(event, can.Option())
|
var msg = can.request(event, can.Option())
|
||||||
var ui = can.page.Append(can, document.body, [{view: ["input"], style: {left: 0, top: 0}, list: [
|
var ui = can.page.Append(can, document.body, [{view: ["input"], style: {left: 0, top: 0}, list: [
|
||||||
{view: ["option", "table"], list: can.core.List(form, function(item) {
|
{view: ["option", "table"], list: can.core.List(form, function(item) {
|
||||||
item._input == "select" && (item = {select: [[item.name].concat(item.values)], data: item, name: item.name})
|
(item._input == "select"||item.values) && (item = {select: [[item.name].concat(item.values)], data: item, name: item.name})
|
||||||
item = typeof item == "string"? {input: item, name: item}: item.length > 0? {select: [item], name: item[0]}: item
|
item = typeof item == "string"? {input: item, name: item}: item.length > 0? {select: [item], name: item[0]}: item
|
||||||
item.type = item.type||"input", item.type == "input" && (item.data=item.data||{}, item.data.type = item.data.type||"text")
|
item.type = item.type||"input", item.type == "input" && (item.data=item.data||{}, item.data.type = item.data.type||"text")
|
||||||
|
|
||||||
@ -176,7 +177,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
can.onappend.figure(can, item, item.value, function() {}, target)
|
can.onappend.figure(can, item, item.value, function() {}, target)
|
||||||
target.value = target.value || msg.Option(item.name)
|
target.value = target.value || msg.Option(item.name) || item.value
|
||||||
}
|
}
|
||||||
|
|
||||||
return {type: "tr", list: [{type: "td", list: [{text: item.name||""}]}, {type: "td", list: [item]} ]}
|
return {type: "tr", list: [{type: "td", list: [{text: item.name||""}]}, {type: "td", list: [item]} ]}
|
||||||
|
@ -285,6 +285,12 @@ div.input {
|
|||||||
background-color:#0d4142a6;
|
background-color:#0d4142a6;
|
||||||
z-index:50;
|
z-index:50;
|
||||||
}
|
}
|
||||||
|
div.input textarea {
|
||||||
|
width:145px;
|
||||||
|
padding:4px;
|
||||||
|
margin:2px;
|
||||||
|
height:45px;
|
||||||
|
}
|
||||||
div.input div.item {
|
div.input div.item {
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
@ -443,6 +449,9 @@ fieldset>div.output div.project div.list {
|
|||||||
margin-left:10px;
|
margin-left:10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body>fieldset.float table {
|
||||||
|
color:white;
|
||||||
|
}
|
||||||
body>fieldset.input table {
|
body>fieldset.input table {
|
||||||
color:white;
|
color:white;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js",
|
|||||||
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panels: [
|
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panels: [
|
||||||
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username", "avatar"]},
|
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username", "avatar"]},
|
||||||
{name: "Search", help: "搜索框", pos: "auto"},
|
{name: "Search", help: "搜索框", pos: "auto"},
|
||||||
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
|
{name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]},
|
||||||
{name: "Action", help: "工作台", pos: "main"},
|
{name: "Action", help: "工作台", pos: "main"},
|
||||||
{name: "Footer", help: "状态条", pos: "foot", state: ["ncmd"]},
|
{name: "Footer", help: "状态条", pos: "foot", state: ["ncmd"]},
|
||||||
], main: {name: "Header", list: ["/publish/order.js"]}, plugin: [
|
], main: {name: "Header", list: ["/publish/order.js"]}, plugin: [
|
||||||
|
182
panel/Action.js
182
panel/Action.js
@ -1,70 +1,62 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg) {
|
||||||
var river = can.Conf(can._RIVER), storm = can.Conf(can._STORM)
|
var river = can.Conf(can._RIVER), storm = can.Conf(can._STORM)
|
||||||
can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) {
|
can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next) {
|
||||||
item.width = parseInt(can.Conf(can._WIDTH)), item.height = parseInt(can.Conf(can._HEIGHT))
|
item.width = parseInt(can.Conf(can._WIDTH))-40, item.height = parseInt(can.Conf(can._HEIGHT))-40
|
||||||
item.feature = can.base.Obj(item.feature||item.meta)
|
item.feature = can.base.Obj(item.feature||item.meta)
|
||||||
item.inputs = can.base.Obj(item.inputs||item.list)
|
item.inputs = can.base.Obj(item.inputs||item.list)
|
||||||
item.type = can._PLUGIN
|
item.type = can._PLUGIN
|
||||||
|
|
||||||
can.onappend.plugin(can, item, function(sub, meta) {
|
can.onappend.plugin(can, item, function(sub, meta) {
|
||||||
can.onimport._plugin(can, river, storm, sub, meta), next()
|
can.onimport._plugin(can, river, storm, sub, meta), next()
|
||||||
sub._option.dataset = sub._option.dataset || {}
|
|
||||||
item.id && (sub._option.dataset.id = item.id)
|
|
||||||
sub._target.Meta = item
|
|
||||||
})
|
})
|
||||||
}, function() {
|
}, function() {
|
||||||
can.onaction._layout(can, can.Conf(can._LAYOUT)||can.user.Search(can, can._LAYOUT))
|
can.onaction.layout(can, can.user.Search(can, can._LAYOUT)||can.Conf(can._LAYOUT))
|
||||||
|
!can.user.isMobile && can.onimport._menu(can)
|
||||||
})
|
})
|
||||||
|
|
||||||
can.onmotion.float.auto(can, can._output, "carte")
|
can.onmotion.float.auto(can, can._output, "carte")
|
||||||
},
|
},
|
||||||
_plugin: function(can, river, storm, sub, item) {
|
_plugin: function(can, river, storm, sub, meta) {
|
||||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
||||||
var toast = msg.Option("_toast") && can.user.toast(can, msg.Option("_toast"), "", 1000000)
|
var toast = msg.Option("_toast") && can.user.toast(can, msg.Option("_toast"), "", -1)
|
||||||
return can.run(event, (can.onengine[cmds[0]]? []: [river, storm, item.id||item.index||item.key+"."+item.name]).concat(cmds), function(msg) {
|
return can.run(event, (can.onengine[cmds[0]]? []: [river, storm, meta.id||meta.index||can.core.Keys(meta.key, meta.name)]).concat(cmds), function(msg) {
|
||||||
toast && toast.close(), can.base.isFunc(cb) && cb(msg)
|
toast && toast.close(), can.base.isFunc(cb) && cb(msg)
|
||||||
})
|
})
|
||||||
}, can._plugins = (can._plugins||[]).concat([sub])
|
}, can._plugins = (can._plugins||[]).concat([sub])
|
||||||
|
|
||||||
can.page.Modify(can, sub._output, {style: {"max-width": item.width-40}})
|
can.page.Append(can, can._action, [{view: ["item", "div", meta.name], onclick: function(event) {
|
||||||
can.onengine.listen(can, "action.resize", function(width, height) {
|
|
||||||
can.page.Modify(can, sub._output, {style: {"max-width": width-40}})
|
|
||||||
item.width = width
|
|
||||||
})
|
|
||||||
|
|
||||||
can.page.Append(can, can._action, [{view: ["item", "div", item.name], onclick: function(event) {
|
|
||||||
can.onmotion.select(can, can._output, "fieldset.plugin", sub._target)
|
can.onmotion.select(can, can._output, "fieldset.plugin", sub._target)
|
||||||
can.onmotion.select(can, can._action, "div.item", event.target)
|
can.onmotion.select(can, can._action, "div.item", event.target)
|
||||||
}}])
|
}}])
|
||||||
},
|
|
||||||
_share: function(can, msg, share) {
|
can.page.Modify(can, sub._output, {style: {"max-width": meta.width}})
|
||||||
can.Conf(can._WIDTH, window.innerWidth)
|
can.onengine.listen(can, "onaction_resize", function(width, height) {
|
||||||
can.Conf(can._HEIGHT, window.innerHeight)
|
can.page.Modify(can, sub._output, {style: {"max-width": meta.width = width-40}})
|
||||||
can.user.topic(can, can.user.Search(can, can._TOPIC)||msg.Option(can._TOPIC)||"white")
|
})
|
||||||
can.user.title(can.user.Search(can, can._TITLE)||msg.Option(can._TITLE))
|
|
||||||
can.Conf(can._RIVER, "_share"), can.Conf(can._STORM, share)
|
sub._option.dataset = sub._option.dataset || {}
|
||||||
can.onimport._init(can, msg)
|
meta.id && (sub._option.dataset.id = meta.id)
|
||||||
can.onaction._layout(can, "flow")
|
sub._target.Meta = meta
|
||||||
},
|
},
|
||||||
_menu: function(can) {
|
_menu: function(can) {
|
||||||
if (can.user.isMobile) { return }
|
|
||||||
can._menu && can.page.Remove(can, can._menu)
|
can._menu && can.page.Remove(can, can._menu)
|
||||||
can._menu = can.search({}, ["Header.onimport.menu", can._ACTION,
|
can._menu = can.search({}, ["Header.onimport.menu", can._ACTION,
|
||||||
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
||||||
], function(event, key) { can.onaction._layout(can, key) })
|
], function(event, layout) { can.onaction.layout(can, layout) })
|
||||||
},
|
},
|
||||||
|
_share: function(can, share) {
|
||||||
|
share && can.run({}, ["_share", share], function(msg) {
|
||||||
|
can.user.topic(can, can.user.Search(can, can._TOPIC)||msg.Option(can._TOPIC)||"white")
|
||||||
|
can.user.title(can.user.Search(can, can._TITLE)||msg.Option(can._TITLE))
|
||||||
|
can.onaction.layout(can, "auto")
|
||||||
|
|
||||||
height: function(can, height) {
|
can.Conf({width: window.innerWidth, height: window.innerHeight})
|
||||||
can.page.Modify(can, can._target, {style: {
|
can.Conf(can._RIVER, "_share"), can.Conf(can._STORM, share)
|
||||||
height: can.Conf(can._HEIGHT, height),
|
can.onimport._init(can, msg)
|
||||||
}})
|
})
|
||||||
can.page.Modify(can, can._output, {style: {
|
|
||||||
height: can.Conf(can._HEIGHT, height-(can.Conf(can._LAYOUT)=="tabs"? 28: 10)),
|
|
||||||
}})
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onengine", {help: "解析引擎", list: [],
|
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, page, msg, can, cmds, cb) {
|
||||||
_engine: function(event, page, msg, can, cmds, cb) {
|
|
||||||
var river = can.onengine.river[cmds[0]]
|
var river = can.onengine.river[cmds[0]]
|
||||||
var storm = river && river.storm[cmds[1]]
|
var storm = river && river.storm[cmds[1]]
|
||||||
if (!storm || cmds.length != 2) { return false }
|
if (!storm || cmds.length != 2) { return false }
|
||||||
@ -85,27 +77,9 @@ Volcanos("onengine", {help: "解析引擎", list: [],
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
var share = can.user.Search(can, can._SHARE); if (share) {
|
|
||||||
can.run({}, ["_share", share], function(msg) { msg.Length()>0? can.onimport._share(can, msg, share):
|
|
||||||
can.onengine._engine({}, can, msg, can, [msg.Option("sess.river"), msg.Option("sess.storm")], function(msg) {
|
|
||||||
can.onimport._share(can, msg, share)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
var list = []; can.onengine.listen(can, "resize", function(width, height) {
|
|
||||||
can.Conf({width: width, height: height}), can.core.Delay(list, 1000, function() {
|
|
||||||
can.onengine.signal(can, "action.resize", can.request({}, {
|
|
||||||
width: can.Conf(can._WIDTH), height: can.Conf(can._HEIGHT),
|
|
||||||
}))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
can._target.ontouchstart = function(event) {
|
can._target.ontouchstart = function(event) {
|
||||||
can.onengine.signal(can, "onaction_touch", can.request(event))
|
can.onengine.signal(can, "onaction_touch", can.request(event))
|
||||||
can.onmotion.float.del(can, "carte")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
},
|
},
|
||||||
_const: [
|
_const: [
|
||||||
@ -114,15 +88,35 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
"title", "topic", "layout", "width", "height", "top", "left", "scroll",
|
"title", "topic", "layout", "width", "height", "top", "left", "scroll",
|
||||||
"plugin",
|
"plugin",
|
||||||
],
|
],
|
||||||
|
onmain: function(can, msg) {
|
||||||
|
can.onimport._share(can, can.user.Search(can, can._SHARE))
|
||||||
|
},
|
||||||
|
onresize: function(can, msg, width, height) { var args = {width: width, height: height}
|
||||||
|
can.Conf(args), can.onengine.signal(can, "onaction_resize", can.request({}, args))
|
||||||
|
},
|
||||||
onsearch: function(can, msg, word) {
|
onsearch: function(can, msg, word) {
|
||||||
if (word[0] == "*" || word[0] == can._PLUGIN) { can.onexport.plugin(can, msg, word) }
|
if (word[0] == "*" || word[0] == can._PLUGIN) { can.onexport.plugin(can, msg, word) }
|
||||||
},
|
},
|
||||||
onstorm_select: function(can, msg, river, storm) {
|
onstorm_select: function(can, msg, river, storm) { can.onlayout._init(can)
|
||||||
can.onaction._select(can, msg, river, storm)
|
function key(name) { return can.core.Keys(can.Conf(can._RIVER), can.Conf(can._STORM), name) }
|
||||||
can.onimport._menu(can)
|
can.page.Cache(key(can._ACTION), can._action, can._output.scrollTop+1)
|
||||||
|
can.page.Cache(key(can._OUTPUT), can._output, can._output.scrollTop+1)
|
||||||
|
|
||||||
|
can.Conf(can._RIVER, river), can.Conf(can._STORM, storm) // 转场
|
||||||
|
var position = can.page.Cache(key(can._ACTION), can._action)
|
||||||
|
var position = can.page.Cache(key(can._OUTPUT), can._output)
|
||||||
|
if (position) { can._output.scrollTo(0, position-1); return }
|
||||||
|
|
||||||
|
can.run({}, [river, storm], function(msg) {
|
||||||
|
if (msg.Length() == 0) { // 添加工具
|
||||||
|
can.onengine.signal(can, "onaction_notool", can.request({}, {river: river, storm: storm}))
|
||||||
|
} else {
|
||||||
|
can.onimport._init(can, msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
_layout: function(can, key) { if (!key) { return }
|
|
||||||
|
layout: function(can, layout) { if (!layout) { return }
|
||||||
var trans = {
|
var trans = {
|
||||||
"默认布局": "auto",
|
"默认布局": "auto",
|
||||||
"流动布局": "flow",
|
"流动布局": "flow",
|
||||||
@ -131,42 +125,23 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
"自由布局": "free",
|
"自由布局": "free",
|
||||||
}
|
}
|
||||||
|
|
||||||
key = trans[key]||key, can.Conf(can._LAYOUT, key)
|
layout = trans[layout]||layout, can.Conf(can._LAYOUT, layout)
|
||||||
can.page.Modify(can, can._action, {className: "action "+key})
|
can.page.Modify(can, can._action, {className: "action "+layout})
|
||||||
can.page.Modify(can, can._output, {className: "output "+key})
|
can.page.Modify(can, can._output, {className: "output "+layout})
|
||||||
|
|
||||||
if (key == "tabs") {
|
if (layout == "tabs" && !can.tabs) {
|
||||||
can.onmotion.select(can, can._output, "fieldset.plugin", 0)
|
can.onmotion.select(can, can._output, "fieldset.plugin", 0)
|
||||||
can.onmotion.select(can, can._action, "div.item", 0)
|
can.onmotion.select(can, can._action, "div.item", 0)
|
||||||
|
can.tabs = true
|
||||||
}
|
}
|
||||||
if (key == "free") {
|
if (layout == "free" && !can.free) {
|
||||||
can.page.Select(can, can._target, "div.output>fieldset.plugin", function(item, index) {
|
can.page.Select(can, can._target, "div.output>fieldset.plugin", function(item, index) {
|
||||||
can.onmotion.move(can, item, {left: 10*index, top: 10*index})
|
can.page.Modify(can, item, {style: {left: 20*index, top: 20*index}})
|
||||||
})
|
can.onmotion.move(can, item, {left: 20*index, top: 20*index})
|
||||||
|
}), can.free = true
|
||||||
}
|
}
|
||||||
|
|
||||||
var header = can.get("Header", "height")
|
can.onlayout._init(can)
|
||||||
var footer = can.get("Footer", "height")
|
|
||||||
can.set("Action", "height", window.innerHeight-header-footer)
|
|
||||||
},
|
|
||||||
_select: function(can, msg, river, storm) {
|
|
||||||
function key(name) { return can.Conf(can._RIVER)+"."+can.Conf(can._STORM)+"."+name}
|
|
||||||
can.page.Cache(key(can._ACTION), can._action, can._output.scrollTop+1)
|
|
||||||
can.page.Cache(key(can._OUTPUT), can._output, can._output.scrollTop+1)
|
|
||||||
|
|
||||||
can.Conf(can._RIVER, river), can.Conf(can._STORM, storm) // 转场
|
|
||||||
var position = can.page.Cache(key(can._OUTPUT), can._output)
|
|
||||||
var position = can.page.Cache(key(can._ACTION), can._action)
|
|
||||||
if (position) { can._output.scrollTo(0, position-1); return }
|
|
||||||
|
|
||||||
can.run({}, [river, storm], function(msg) {
|
|
||||||
if (msg.Length() > 0) {
|
|
||||||
can.onimport._init(can, msg)
|
|
||||||
} else {
|
|
||||||
var msg = can.request({}, {river: river, storm: storm})
|
|
||||||
can.search(msg._event, ["River.ondetail.添加工具"])
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: [],
|
Volcanos("onexport", {help: "导出数据", list: [],
|
||||||
@ -190,30 +165,15 @@ Volcanos("onexport", {help: "导出数据", list: [],
|
|||||||
if (item.innerHTML.indexOf(word[1]) == -1) { return }
|
if (item.innerHTML.indexOf(word[1]) == -1) { return }
|
||||||
|
|
||||||
var meta = item.parentNode.Meta
|
var meta = item.parentNode.Meta
|
||||||
can.core.List(fields, function(key) {
|
var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" })
|
||||||
switch (key) {
|
|
||||||
case "context":
|
var data = {ctx: "web.chat", cmd: can._ACTION,
|
||||||
msg.Push(key, meta.ctx||meta.key||"")
|
type: can._PLUGIN, name: item.innerHTML, text: shy("跳转", function(event) {
|
||||||
break
|
var input = can.page.Select(can, item.parentNode, "input.args")[0]
|
||||||
case "command":
|
input && input.focus()
|
||||||
msg.Push(key, meta.index||meta.cmd||meta.name)
|
}),
|
||||||
break
|
context: meta.ctx||meta.key||"", command: meta.index||meta.cmd||meta.name, argument: JSON.stringify(list),
|
||||||
case "argument":
|
}; can.core.List(fields, function(key) { msg.Push(key, data[key]||"") })
|
||||||
var list = can.page.Select(can, item.nextSibling, '.args', function(item) { return item.value||"" })
|
|
||||||
msg.Push(key, JSON.stringify(list))
|
|
||||||
break
|
|
||||||
case "ctx": msg.Push(key, "web.chat"); break
|
|
||||||
case "cmd": msg.Push(key, can._ACTION); break
|
|
||||||
case "type": msg.Push(key, can._PLUGIN); break
|
|
||||||
case "name": msg.Push(key, item.innerHTML); break
|
|
||||||
case "text":
|
|
||||||
msg.Push(key, shy("跳转", function() {
|
|
||||||
var input = can.page.Select(can, item.parentNode, "input.args")[0]
|
|
||||||
input && input.focus()
|
|
||||||
})); break
|
|
||||||
default: msg.Push(key, "")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -1,56 +1,66 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.onmotion.clear(can)
|
can.onmotion.clear(can)
|
||||||
can.onimport._title(can, msg, target)
|
can.onimport._title(can, msg, target)
|
||||||
can.onimport._toast(can, msg, target)
|
|
||||||
can.onimport._state(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
|
can.onimport._toast(can, msg, target)
|
||||||
|
|
||||||
|
can.onmotion.float.auto(can, can._output, "carte", "input")
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) {
|
_title: function(can, msg, target) { const TITLE = "title"
|
||||||
can.user.isMobile || can.core.List(msg.result, function(title) {
|
!can.user.isMobile && can.core.List(msg.result, function(item) {
|
||||||
can.page.Append(can, target, [{view: ["title", "div", title]}])
|
can.page.Append(can, target, [{view: [TITLE, "div", item], title: "联系站长"}])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
_state: function(can, msg, target) { const STATE = "state"
|
||||||
|
can.core.List(can.base.Obj(msg.Option(STATE), 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]},
|
||||||
|
], onclick: function(event) {
|
||||||
|
can.show = can.show? (can.page.Remove(can, can.show), null): can.onimport._cmd(can)
|
||||||
|
}}])
|
||||||
|
})
|
||||||
|
},
|
||||||
|
_cmd: function(can) {
|
||||||
|
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
||||||
|
var commands = can.base.Obj(line.commands)
|
||||||
|
commands.length > 2 && can.onappend.plugin(can, {index: commands[2]}, function(sub) {
|
||||||
|
sub.run = function(event, cmds, cb) {
|
||||||
|
can.run(event, ["action", "command", "run", commands[2]].concat(cmds), cb)
|
||||||
|
}
|
||||||
|
|
||||||
|
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
||||||
|
can.page.Modify(can, sub._output, {style: {"max-width": width, "max-height": height-28}})
|
||||||
|
can.page.Modify(can, sub._target, {style: {top: top+100, left: left}})
|
||||||
|
can.page.Modify(can, sub._legend, {style: {display: "block"}})
|
||||||
|
can.page.ClassList.add(can, sub._target, "float")
|
||||||
|
})
|
||||||
|
|
||||||
|
}, document.body)
|
||||||
|
|
||||||
|
}).first
|
||||||
|
},
|
||||||
_toast: function(can, msg, target) {
|
_toast: function(can, msg, target) {
|
||||||
can.toast = can.page.Append(can, target, [{view: "toast", onclick: function(event) {
|
can.toast = can.page.Append(can, target, [{view: "toast", onclick: function(event) {
|
||||||
var ui = can.onappend.field(can, "story toast float", {}, document.body)
|
can.show = can.show? (can.page.Remove(can, can.show), null): can.onappend.float(can, can._toast).first
|
||||||
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
|
||||||
can.page.Modify(can, ui.output, {style: {"max-width": width, "max-height": height-28}})
|
|
||||||
can.page.Modify(can, ui.first, {style: {top: top, left: left}})
|
|
||||||
} )
|
|
||||||
|
|
||||||
can.onappend._action(can, ["关闭", "刷新"], ui.action, {
|
|
||||||
"关闭": function(event) { can.page.Remove(can, ui.first) },
|
|
||||||
"刷新": function(event) { can.page.Remove(can, ui.first), can.toast.click() },
|
|
||||||
})
|
|
||||||
can.onappend.table(can, can._toast, function(value) {
|
|
||||||
return {text: [value, "td"], onclick: function(event) {
|
|
||||||
|
|
||||||
}}
|
|
||||||
}, ui.output)
|
|
||||||
}}]).first
|
}}]).first
|
||||||
},
|
},
|
||||||
_state: function(can, msg, target) {
|
|
||||||
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, title, content, fileline, time) { can._toast = can._toast || can.request()
|
toast: function(can, msg, title, content, fileline, time) { can._toast = can._toast || can.request()
|
||||||
can.page.Modify(can, can.toast, [time.split(" ").pop(), title, content].join(" "))
|
can.page.Modify(can, can.toast, [time.split(" ").pop(), title, content].join(" "))
|
||||||
can._toast.Push({time: time, fileline: fileline, title: title, content: content})
|
can._toast.Push({time: time, fileline: fileline, title: title, content: content})
|
||||||
},
|
},
|
||||||
ncmd: function(can, target) {
|
ncmd: function(can, msg, time, follow, commands) { const NCMD = "ncmd"; can._cmds = can._cmds || can.request()
|
||||||
can.page.Select(can, target, "span.ncmd", function(item) {
|
can._cmds.Push({time: time, follow: follow, commands: commands})
|
||||||
item.innerHTML = can.Conf("ncmd", parseInt(can.Conf("ncmd")||"0")+1+"")+""
|
can.page.Select(can, can._output, can.core.Keys("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) {
|
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
},
|
},
|
||||||
onlogin: function(can, msg) {
|
onmain: function(can, msg) {
|
||||||
can.run({}, [], function(msg) { can.onimport._init(can, msg, [], null, can._output) })
|
can.run({}, [], function(msg) { can.onimport._init(can, msg, [], null, can._output) })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -27,18 +27,18 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}
|
}
|
||||||
can.user.isWeiXin && can.onimport._weixin(can)
|
can.user.isWeiXin && can.onimport._weixin(can)
|
||||||
},
|
},
|
||||||
_grant: function(can, msg, target) { const GRANT = "grant"
|
_grant: function(can, msg, target) { const GRANT = "grant", SPACE = "space"
|
||||||
if (can.user.Search(can, GRANT)) {
|
if (can.user.Search(can, GRANT)) {
|
||||||
if (can.user.confirm(GRANT+" "+can.user.Search(can, GRANT))) {
|
if (can.user.confirm(GRANT+" "+can.user.Search(can, GRANT))) {
|
||||||
can.run(event, [can._ACTION, GRANT, "space", can.user.Search(can, GRANT)])
|
can.run(event, [can._ACTION, GRANT, SPACE, can.user.Search(can, GRANT)])
|
||||||
}
|
}
|
||||||
can.user.Search(can, GRANT, "")
|
can.user.Search(can, GRANT, "")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) {
|
_title: function(can, msg, target) { const TITLE = "title"
|
||||||
can.user.title(can.user.Search(can, 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: [can._TITLE, "div", item], title: "返回主页", onclick: function(event) {
|
can.page.Append(can, target, [{view: [TITLE, "div", item], title: "返回主页", onclick: function(event) {
|
||||||
can.onaction.title(event, can)
|
can.onaction.title(event, can)
|
||||||
}}])
|
}}])
|
||||||
})
|
})
|
||||||
@ -200,19 +200,11 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
river: function(event, can) { can.onaction.River(can) },
|
river: function(event, can) { can.onaction.River(can) },
|
||||||
black: function(event, can, button) {
|
black: function(event, can, button) {
|
||||||
can.onlayout.topic(can, button)
|
can.onlayout.topic(can, button)
|
||||||
|
can.onlayout._init(can)
|
||||||
var header = can.get("Header", "height")
|
|
||||||
var footer = can.get("Footer", "height")
|
|
||||||
can.set("River", "height", window.innerHeight-header-footer)
|
|
||||||
can.set("Action", "height", window.innerHeight-header-footer)
|
|
||||||
},
|
},
|
||||||
white: function(event, can, button) {
|
white: function(event, can, button) {
|
||||||
can.onlayout.topic(can, button)
|
can.onlayout.topic(can, button)
|
||||||
|
can.onlayout._init(can)
|
||||||
var header = can.get("Header", "height")
|
|
||||||
var footer = can.get("Footer", "height")
|
|
||||||
can.set("River", "height", window.innerHeight-header-footer)
|
|
||||||
can.set("Action", "height", window.innerHeight-header-footer)
|
|
||||||
},
|
},
|
||||||
print: function(event, can, button) {
|
print: function(event, can, button) {
|
||||||
can.onlayout.topic(can, "white print")
|
can.onlayout.topic(can, "white print")
|
||||||
|
198
panel/River.js
198
panel/River.js
@ -1,20 +1,15 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.base.isFunc(cb) && cb(msg)
|
if (msg.Option("sess.river") == "_share") { return can.onmotion.hidden(can) }
|
||||||
can.onmotion.clear(can), can.sublist = {}
|
can.onmotion.clear(can), can.river_list = {}, can.storm_list = {}
|
||||||
if (msg.Option("sess.river") == "_share") { return can.onmotion.hide(can) }
|
|
||||||
|
|
||||||
can.onimport._main(can, msg)
|
can.onimport._main(can, msg), can.onimport._menu(can, msg)
|
||||||
can.onimport._menu(can, msg)
|
var select; can.page.Append(can, can._output, msg.Table(function(item, index) {
|
||||||
|
return can.onimport._river(can, item, function(target) {
|
||||||
|
(index == 0 || item.hash == can._main_river) && (select = target)
|
||||||
|
})
|
||||||
|
})), select && select.click()
|
||||||
|
|
||||||
var select; msg.Table(function(value, index, array) {
|
can.onmotion.float.auto(can, target, "carte", "input")
|
||||||
var item = can.onimport._river(can, value)
|
|
||||||
if (index == 0 || [value.hash, value.name].indexOf(can._main_river) > -1) { select = item }
|
|
||||||
})
|
|
||||||
|
|
||||||
select && select.click()
|
|
||||||
|
|
||||||
can.onlayout._init(can)
|
|
||||||
can.onmotion.float.auto(can, can._output, "carte", "input")
|
|
||||||
},
|
},
|
||||||
_main: function(can, msg) {
|
_main: function(can, msg) {
|
||||||
can._main_river = "project", can._main_storm = "studio"
|
can._main_river = "project", can._main_storm = "studio"
|
||||||
@ -34,76 +29,52 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
], function(event, item) {
|
], function(event, item) {
|
||||||
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf(can._RIVER), can.Conf(can._STORM)])
|
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf(can._RIVER), can.Conf(can._STORM)])
|
||||||
})
|
})
|
||||||
|
|
||||||
can.page.Modify(can, can._output, {onmouseover: function(event) {
|
|
||||||
can.menu && can.page.Remove(can, can.menu.first)
|
|
||||||
}})
|
|
||||||
},
|
},
|
||||||
|
_river: function(can, meta, cb) {
|
||||||
_river: function(can, meta) {
|
return {text: [meta.name, "div", "item"], onclick: function(event) {
|
||||||
var item = can.onappend.item(can, "item", meta, function(event) {
|
|
||||||
// 左键选中
|
|
||||||
can.onaction.storm(event, can, meta.hash)
|
can.onaction.storm(event, can, meta.hash)
|
||||||
}, function(event) {
|
|
||||||
// 右键菜单
|
}, onmouseenter: function(event) {
|
||||||
can.onaction.carte(event, can, can.ondetail.list, function(event, button, module) {
|
can.onaction.carte(event, can, can.ondetail.list, function(event, button, module) {
|
||||||
module[button](event, can, button, meta.hash)
|
module[button](event, can, button, meta.hash)
|
||||||
})
|
})
|
||||||
})
|
}, _init: function(target) { cb(target)
|
||||||
|
can.river_list[meta.hash] = target
|
||||||
!can.user.isMobile && can.page.Modify(can, item, {onmouseenter: function(event) {
|
}}
|
||||||
can.onaction.carte(event, can, can.ondetail.list, function(event, button, module) {
|
|
||||||
module[button](event, can, item, meta.hash)
|
|
||||||
})
|
|
||||||
}})
|
|
||||||
return item
|
|
||||||
},
|
},
|
||||||
_storm: function(can, meta, river) {
|
_storm: function(can, meta, river) {
|
||||||
return {text: [meta.name, "div", "item"], onclick: function(event) {
|
return {text: [meta.name, "div", "item"], onclick: function(event) {
|
||||||
// 左键点击
|
|
||||||
can.onaction.action(event, can, river, meta.hash)
|
can.onaction.action(event, can, river, meta.hash)
|
||||||
can.user.title(can._main_title || meta.name)
|
can.user.title(can._main_title || meta.name)
|
||||||
|
|
||||||
can.onmotion.select(can, event.target.parentNode, "div.item", event.target)
|
|
||||||
}, onmouseenter: function(event) {
|
}, onmouseenter: function(event) {
|
||||||
can.onaction.carte(event, can, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(event, button, module) {
|
can.onaction.carte(event, can, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(event, button, module) {
|
||||||
module[button](event, can, button, river, meta.hash)
|
module[button](event, can, button, river, meta.hash)
|
||||||
})
|
})
|
||||||
}, oncontextmenu: function(event) {
|
}, _init: function(target) {
|
||||||
can.onaction.action(event, can, river, meta.hash)
|
can.storm_list[can.core.Keys(river, meta.hash)] = target
|
||||||
can.user.title(can._main_title || meta.name)
|
|
||||||
|
|
||||||
// 右键点击
|
|
||||||
can.onaction.carte(event, can, ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"], function(event, button, module) {
|
|
||||||
module[button](event, can, button, river, meta.hash)
|
|
||||||
})
|
|
||||||
}}
|
}}
|
||||||
},
|
},
|
||||||
|
|
||||||
height: function(can, height) {
|
|
||||||
can.page.Modify(can, can._target, {style: {
|
|
||||||
height: can.Conf(can._HEIGHT, height),
|
|
||||||
}})
|
|
||||||
can.page.Modify(can, can._output, {style: {
|
|
||||||
height: can.Conf(can._HEIGHT, height-10),
|
|
||||||
}})
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) {
|
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) {
|
||||||
cmds.length == 0 && can.core.Item(can.onengine.river, function(key, value) {
|
cmds.length == 0 && can.core.Item(can.onengine.river, function(key, value) {
|
||||||
msg.Push({hash: key, name: value.name})
|
msg.Push({hash: key, name: value.name}) // 群组列表
|
||||||
}); if (cmds.length != 1 && cmds[1] != "tool") { return false }
|
}); if (cmds.length != 1 && cmds[1] != "tool") { return false }
|
||||||
|
|
||||||
var river = can.onengine.river[cmds[0]]; if (!river) { return false }
|
var river = can.onengine.river[cmds[0]]; if (!river) { return false }
|
||||||
can.core.Item(river.storm, function(key, value) {
|
can.core.Item(river.storm, function(key, value) {
|
||||||
msg.Push({hash: key, name: value.name})
|
msg.Push({hash: key, name: value.name}) // 应用列表
|
||||||
}), can.base.isFunc(cb) && cb(msg); return true
|
}), can.base.isFunc(cb) && cb(msg); return true
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
},
|
},
|
||||||
_const: ["title", "river", "storm"],
|
_const: ["title", "river", "storm", "action"],
|
||||||
|
_trans: {
|
||||||
|
create: "创建", refresh: "刷新",
|
||||||
|
"public": "公开群", "protected": "内部群", "private": "私有群",
|
||||||
|
},
|
||||||
onlogin: function(can, msg) {
|
onlogin: function(can, msg) {
|
||||||
can.onappend._action(can, can.Conf("action")||can.onaction.list)
|
can.onappend._action(can, can.Conf("action")||can.onaction.list)
|
||||||
can.run({}, [], function(msg) { can.onimport._init(can, msg, [], null, can._output) })
|
can.run({}, [], function(msg) { can.onimport._init(can, msg, [], null, can._output) })
|
||||||
@ -112,43 +83,13 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
if (word[0] == "*" || word[0] == can._STORM) { can.onexport.storm(can, msg, word) }
|
if (word[0] == "*" || word[0] == can._STORM) { can.onexport.storm(can, msg, word) }
|
||||||
},
|
},
|
||||||
onaction_touch: function(can, msg) {
|
onaction_touch: function(can, msg) {
|
||||||
|
can.onmotion.float.del(can, "carte")
|
||||||
can.user.isMobile && can.onmotion.hidden(can)
|
can.user.isMobile && can.onmotion.hidden(can)
|
||||||
},
|
},
|
||||||
|
onaction_notool: function(can, msg, river, storm) {
|
||||||
storm: function(event, can, river) {
|
can.ondetail["添加工具"](msg._event, can, "添加工具", river, storm)
|
||||||
var list = can.sublist[river]; if (list) { return can.onmotion.Toggle(can, list) }
|
|
||||||
|
|
||||||
can.run({}, [river, "tool"], function(msg) {
|
|
||||||
var select = 0; list = can.page.Append(can, can._output, [{view: "list", list: msg.Table(function(meta, index) {
|
|
||||||
river == can._main_river && meta.hash == can._main_storm && (select = index)
|
|
||||||
return can.onimport._storm(can, meta, river)
|
|
||||||
}) }]).first, list.children.length > 0 && list.children[select].click()
|
|
||||||
|
|
||||||
event.target.nextSibling && can._output.insertBefore(list, event.target.nextSibling)
|
|
||||||
can.sublist[river] = list
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
action: function(event, can, river, storm) {
|
|
||||||
// can.onlayout._init(can)
|
|
||||||
can.onengine.signal(can, "onstorm_select", can.request(event, {
|
|
||||||
river: can.Conf(can._RIVER, river), storm: can.Conf(can._STORM, storm),
|
|
||||||
}))
|
|
||||||
|
|
||||||
can.page.Select(can, can._output, "div.item.select", function(item) {
|
|
||||||
can.page.ClassList.del(can, item, "select")
|
|
||||||
}), can.page.ClassList.add(can, event.target, "select")
|
|
||||||
},
|
|
||||||
create: function(event, can) {
|
|
||||||
can.user.input(event, can, [
|
|
||||||
["类型", "public", "protected", "private"],
|
|
||||||
{name: "群名", value: "hi"},
|
|
||||||
{name: "简介", value: "hello"},
|
|
||||||
], function(event, button, meta, list) {
|
|
||||||
can.run(event, ["action", "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) {
|
|
||||||
can.user.Search(can, {river: msg.Result()})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
carte: function(event, can, list, cb) {
|
carte: function(event, can, list, cb) {
|
||||||
var carte = can.user.carte(event, can, can.ondetail, list, cb)
|
var carte = can.user.carte(event, can, can.ondetail, list, cb)
|
||||||
can.page.Modify(can, carte._target, {style: {
|
can.page.Modify(can, carte._target, {style: {
|
||||||
@ -156,9 +97,41 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
top: carte._target.offsetTop-event.target.offsetHeight,
|
top: carte._target.offsetTop-event.target.offsetHeight,
|
||||||
}})
|
}})
|
||||||
},
|
},
|
||||||
|
storm: function(event, can, river) { can.sublist = can.sublist||{}
|
||||||
|
can.onmotion.select(can, can._output, "div.item", can.river_list[river])
|
||||||
|
var list = can.sublist[river]; if (list) { return can.onmotion.Toggle(can, list) }
|
||||||
|
|
||||||
"创建": function(event, can) { can.onaction.create(event, can) },
|
can.run({}, [river, "tool"], function(msg) {
|
||||||
"刷新": function(event, can) {
|
var select = 0; list = can.page.Append(can, can._output, [{view: "list", list: msg.Table(function(item, index) {
|
||||||
|
river == can._main_river && item.hash == can._main_storm && (select = index)
|
||||||
|
return can.onimport._storm(can, item, river)
|
||||||
|
}) }]).first, list.children.length > 0 && list.children[select].click()
|
||||||
|
|
||||||
|
event.target.nextSibling && can._output.insertBefore(list, event.target.nextSibling)
|
||||||
|
can.sublist[river] = list
|
||||||
|
})
|
||||||
|
},
|
||||||
|
action: function(event, can, river, storm) {
|
||||||
|
can.page.Modify(can, can.sublist[river], {style: {display: "block"}})
|
||||||
|
can.onmotion.select(can, can._output, "div.item", can.river_list[river])
|
||||||
|
can.onmotion.select(can, can._output, "div.list div.item", can.storm_list[can.core.Keys(river, storm)])
|
||||||
|
|
||||||
|
can.onengine.signal(can, "onstorm_select", can.request(event, {
|
||||||
|
river: can.Conf(can._RIVER, river), storm: can.Conf(can._STORM, storm),
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
|
||||||
|
create: function(event, can) {
|
||||||
|
can.user.input(event, can, [
|
||||||
|
{name: "type", values: ["public", "protected", "private"]},
|
||||||
|
{name: "name", value: "hi"}, {type: "textarea", name: "text", value: "hello"},
|
||||||
|
], function(event, button, meta, list, args) {
|
||||||
|
can.run(event, [can._ACTION, "create"].concat(args), function(msg) {
|
||||||
|
can.user.Search(can, {river: msg.Result()})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
refresh: function(event, can) {
|
||||||
can.user.Search(can, {
|
can.user.Search(can, {
|
||||||
river: can.Conf(can._RIVER), storm: can.Conf(can._STORM),
|
river: can.Conf(can._RIVER), storm: can.Conf(can._STORM),
|
||||||
topic: can.search(event, ["Header.onexport.topic"]),
|
topic: can.search(event, ["Header.onexport.topic"]),
|
||||||
@ -173,19 +146,19 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
can.user.input(event, can, [
|
can.user.input(event, can, [
|
||||||
{name: "name", value: river},
|
{name: "name", value: river},
|
||||||
], function(event, button, meta, list) {
|
], function(event, button, meta, list) {
|
||||||
can.user.share(can, can.request(event), [river, "action", "share", "type", can._RIVER, "name", meta.name])
|
can.user.share(can, can.request(event), [river, can._ACTION, "share", "type", can._RIVER, "name", meta.name])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"添加用户": function(event, can, button, river) {
|
"添加用户": function(event, can, button, river) {
|
||||||
can.user.select(event, can, "user", "usernick,username", function(item, next) {
|
can.user.select(event, can, "user", "usernick,username", function(item, next) {
|
||||||
can.run({}, [river, "user", "action", "insert", "username", item[0]], function(msg) {
|
can.run({}, [river, "user", can._ACTION, "insert", "username", item[0]], function(msg) {
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"添加设备": function(event, can, button, river) {
|
"添加设备": function(event, can, button, river) {
|
||||||
can.user.select(event, can, "space", "type,name,text", function(item, next) {
|
can.user.select(event, can, "space", "type,name,text", function(item, next) {
|
||||||
can.run({}, [river, "node", "action", "insert", "type", item[0], "name", item[1]], function(msg) {
|
can.run({}, [river, "node", can._ACTION, "insert", "type", item[0], "name", item[1]], function(msg) {
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -196,7 +169,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
{name: "名称", value: "hi"},
|
{name: "名称", value: "hi"},
|
||||||
{name: "简介", value: "hello"},
|
{name: "简介", value: "hello"},
|
||||||
], function(event, button, meta, list) {
|
], function(event, button, meta, list) {
|
||||||
can.run({}, [river, "tool", "action", "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) {
|
can.run({}, [river, "tool", can._ACTION, "create"].concat(["type", list[0], "name", list[1], "text", list[2]]), function(msg) {
|
||||||
can.user.Search(can, {river: river, storm: msg.Result()})
|
can.user.Search(can, {river: river, storm: msg.Result()})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -204,7 +177,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
"重命名群组": function(event, can, button, river) {
|
"重命名群组": function(event, can, button, river) {
|
||||||
can.user.input(event, can, ["name"], function(event, button, meta, list) {
|
can.user.input(event, can, ["name"], function(event, button, meta, list) {
|
||||||
var msg = can.request(event, {hash: river})
|
var msg = can.request(event, {hash: river})
|
||||||
can.run(event, ["action", "modify", "name", meta.name], function(msg) {
|
can.run(event, [can._ACTION, "modify", "name", meta.name], function(msg) {
|
||||||
can.user.Search(can, {river: river})
|
can.user.Search(can, {river: river})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -220,14 +193,14 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
{name: "name", value: storm},
|
{name: "name", value: storm},
|
||||||
], function(event, button, meta, list) {
|
], function(event, button, meta, list) {
|
||||||
var msg = can.request(event)
|
var msg = can.request(event)
|
||||||
can.user.share(can, msg, [river, "action", "share", "type", can._STORM, "name", meta.name,
|
can.user.share(can, msg, [river, can._ACTION, "share", "type", can._STORM, "name", meta.name,
|
||||||
can._STORM, storm, can._RIVER, river,
|
can._STORM, storm, can._RIVER, river,
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"添加工具": function(event, can, button, river, storm) {
|
"添加工具": function(event, can, button, river, storm) {
|
||||||
can.user.select(event, can, "command", "context,command", function(item, next) {
|
can.user.select(event, can, "command", "context,command", function(item, next) {
|
||||||
can.run({}, [river, "tool", "action", "insert", "hash", storm].concat(["pod", "", "ctx", item[0], "cmd", item[1]]), function(msg) {
|
can.run({}, [river, "tool", can._ACTION, "insert", "hash", storm].concat(["pod", "", "ctx", item[0], "cmd", item[1]]), function(msg) {
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
}, function() {
|
}, function() {
|
||||||
@ -237,7 +210,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
"保存参数": function(event, can, button, river, storm) {
|
"保存参数": function(event, can, button, river, storm) {
|
||||||
can.search(event, ["Action.onexport.args"], function(item, next, index, array) {
|
can.search(event, ["Action.onexport.args"], function(item, next, index, array) {
|
||||||
var msg = can.request({}, {hash: storm, id: item.dataset.id})
|
var msg = can.request({}, {hash: storm, id: item.dataset.id})
|
||||||
can.run(msg._event, [river, "tool", "action", "modify", "arg", item.dataset.args], function(msg) {
|
can.run(msg._event, [river, "tool", can._ACTION, "modify", "arg", item.dataset.args], function(msg) {
|
||||||
can.user.toast(can, (index+1)+"/"+array.length, "保存参数", 10000, (index+1)/array.length)
|
can.user.toast(can, (index+1)+"/"+array.length, "保存参数", 10000, (index+1)/array.length)
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
@ -246,14 +219,14 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
"重命名应用": function(event, can, button, river, storm) {
|
"重命名应用": function(event, can, button, river, storm) {
|
||||||
var msg = can.request(event, {hash: storm})
|
var msg = can.request(event, {hash: storm})
|
||||||
can.user.input(event, can, ["name"], function(ev, button, meta, list, args) {
|
can.user.input(event, can, ["name"], function(ev, button, meta, list, args) {
|
||||||
can.run(event, [river, "tool", "action", "modify"].concat(args), function(msg) {
|
can.run(event, [river, "tool", can._ACTION, "modify"].concat(args), function(msg) {
|
||||||
can.user.Search(can, {river: river, storm: storm})
|
can.user.Search(can, {river: river, storm: storm})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"删除应用": function(event, can, button, river, storm) {
|
"删除应用": function(event, can, button, river, storm) {
|
||||||
var msg = can.request(event, {hash: storm})
|
var msg = can.request(event, {hash: storm})
|
||||||
can.run(event, [river, "tool", "action", "remove"], function(msg) {
|
can.run(event, [river, "tool", can._ACTION, "remove"], function(msg) {
|
||||||
can.user.Search(can, {river: river})
|
can.user.Search(can, {river: river})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -281,7 +254,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
},
|
},
|
||||||
|
|
||||||
"共享主机": function(event, can, button, river, storm) {
|
"共享主机": function(event, can, button, river, storm) {
|
||||||
can.run(event, ["action", "invite"], function(msg) {
|
can.run(event, [can._ACTION, "invite"], function(msg) {
|
||||||
can.user.toast(can, {
|
can.user.toast(can, {
|
||||||
title: "共享主机", duration: -1, width: -100,
|
title: "共享主机", duration: -1, width: -100,
|
||||||
content: msg.Result(), action: ["close"],
|
content: msg.Result(), action: ["close"],
|
||||||
@ -290,7 +263,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
},
|
},
|
||||||
"共享工具": function(event, can, button, river, storm) {
|
"共享工具": function(event, can, button, river, storm) {
|
||||||
can.user.select(event, can, "plugin", "name,context,command,argument", function(item, next) {
|
can.user.select(event, can, "plugin", "name,context,command,argument", function(item, next) {
|
||||||
can.user.share(can, can.request(event), [river, "action", "share", "type", "field",
|
can.user.share(can, can.request(event), [river, can._ACTION, "share", "type", "field",
|
||||||
can._RIVER, item[1], can._STORM, item[2],
|
can._RIVER, item[1], can._STORM, item[2],
|
||||||
"name", item[0], "text", item[3],
|
"name", item[0], "text", item[3],
|
||||||
])
|
])
|
||||||
@ -306,7 +279,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
{name: "repos", value: "@key"},
|
{name: "repos", value: "@key"},
|
||||||
{name: "template", value: "@key"},
|
{name: "template", value: "@key"},
|
||||||
], function(event, button, data, list, args) {
|
], function(event, button, data, list, args) {
|
||||||
can.run(event, ["action", "start"].concat(args), function(msg) {
|
can.run(event, [can._ACTION, "start"].concat(args), function(msg) {
|
||||||
can.user.open(can.user.MergeURL(can, {pod: can.core.Keys(can.user.Search(can, "pod"), msg.Option("name"))}))
|
can.user.open(can.user.MergeURL(can, {pod: can.core.Keys(can.user.Search(can, "pod"), msg.Option("name"))}))
|
||||||
can.user.toast(can, can.user.MergeURL(can, {pod: msg.Option("name")}))
|
can.user.toast(can, can.user.MergeURL(can, {pod: msg.Option("name")}))
|
||||||
})
|
})
|
||||||
@ -315,28 +288,17 @@ 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 },
|
|
||||||
storm: function(can, msg, word) {
|
storm: function(can, msg, word) {
|
||||||
var fields = (msg.Option("fields")||"ctx,cmd,type,name,text").split(",")
|
var fields = (msg.Option("fields")||"ctx,cmd,type,name,text").split(",")
|
||||||
can.core.Item(can.onengine.river, function(river, value) {
|
can.core.Item(can.onengine.river, function(river, value) {
|
||||||
can.core.Item(value.storm, function(storm, item) {
|
can.core.Item(value.storm, function(storm, item) {
|
||||||
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }
|
if (word[1] != "" && word[1] != storm && word[1] != item.name) { return }
|
||||||
|
|
||||||
can.core.List(fields, function(key) {
|
var data = {ctx: "web.chat", cmd: can._STORM,
|
||||||
switch (key) {
|
type: river, name: storm, text: shy("跳转", function(event) {
|
||||||
case "ctx": msg.Push(key, "web.chat"); break
|
can.onaction.action(event, can, river, storm)
|
||||||
case "cmd": msg.Push(key, can._STORM); break
|
}),
|
||||||
case "type": msg.Push(key, river); break
|
}; can.core.List(fields, function(key) { msg.Push(key, data[key]||"") })
|
||||||
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, "")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -9,11 +9,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
})); table && can.page.Modify(can, can.ui.display, {style: {width: table.offsetWidth}})
|
})); table && can.page.Modify(can, can.ui.display, {style: {width: table.offsetWidth}})
|
||||||
},
|
},
|
||||||
_word: function(can, msg, cmds, fields) { can.type = cmds[0]
|
_word: function(can, msg, cmds, fields) { can.type = cmds[0]
|
||||||
var sub = can.request({}, {word: cmds, fields: fields.join(","), sort: msg.Option("sort"), index: msg.Option("index")})
|
var res = can.request({}, {word: cmds, fields: fields.join(","), sort: msg.Option("sort"), index: msg.Option("index")})
|
||||||
can.onengine.signal(can, "onsearch", sub)
|
can.onengine.signal(can, "onsearch", res)
|
||||||
|
|
||||||
can.run(sub._event, cmds, function(sub) { can.list = sub.Table()
|
can.run(res._event, cmds, function(res) { can.list = res.Table()
|
||||||
can.onimport._init(can, sub, fields)
|
can.onimport._init(can, res, fields)
|
||||||
}), can.ui.word.setSelectionRange(0, -1)
|
}), can.ui.word.setSelectionRange(0, -1)
|
||||||
|
|
||||||
can.onmotion.show(can), can.ui.input.focus()
|
can.onmotion.show(can), can.ui.input.focus()
|
||||||
@ -60,50 +60,32 @@ Volcanos("onaction", {help: "交互操作", list: ["关闭", "清空", "完成"]
|
|||||||
"清空": function(event, can) { can.onmotion.clear(can, can.ui.preview) },
|
"清空": function(event, can) { can.onmotion.clear(can, can.ui.preview) },
|
||||||
"完成": function(event, can) { can.base.isFunc(can.cb) && can.cb() },
|
"完成": function(event, can) { can.base.isFunc(can.cb) && can.cb() },
|
||||||
|
|
||||||
select: function(event, can, index) {
|
select: function(event, can, index) { var line = can.list[index]
|
||||||
|
if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) }
|
||||||
|
|
||||||
// if (line.ctx == "web.chat" && line.cmd == "/search") {
|
if (line.ctx == "web.chat" && line.cmd == "/search") {
|
||||||
// return 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)
|
||||||
// }
|
|
||||||
|
|
||||||
if (can.list && can.list[index]) {
|
|
||||||
var text = can.list[index].text || ""
|
|
||||||
if (can.base.isFunc(text)) {
|
|
||||||
can.list[index].text(event)
|
|
||||||
} else { var line = can.list[index]
|
|
||||||
var fields = can.page.Select(can, can.ui.display, "th", function(item) { return item.innerText })
|
|
||||||
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.display, "tr").length-1)
|
|
||||||
}}]), can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
can.onmotion.hide(can)
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
return false
|
|
||||||
|
var fields = can.page.Select(can, can.ui.display, "th", function(item) { return item.innerText })
|
||||||
|
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.display, "tr").length-1)
|
||||||
|
}}]), can.Status("selected", can.page.Select(can, can.ui.display, "tr").length-1)
|
||||||
},
|
},
|
||||||
|
|
||||||
plugin: function(event, can, index) { var line = can.list[index]
|
plugin: function(event, can, index) { var line = can.list[index]
|
||||||
var cmd = line.cmd == "command"? can.core.Keys(line.text, line.name): can.core.Keys(line.ctx, line.cmd)
|
if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) }
|
||||||
|
|
||||||
can.onappend.plugin(can, {type: "plugin", index: cmd||msg.Option("index"), option: line}, function(sub, meta) {
|
var cmd = line.cmd == "command"? can.core.Keys(line.text, line.name): can.core.Keys(line.ctx, line.cmd)
|
||||||
|
can.onappend.plugin(can, {type: "plugin", index: cmd||msg.Option("index")}, function(sub, meta) {
|
||||||
sub.run = function(event, cmds, cb) { var msg = can.request(event, line)
|
sub.run = function(event, cmds, cb) { var msg = can.request(event, line)
|
||||||
can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) {
|
can.run(event, ["action", "command", "run", meta.index].concat(cmds), cb)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}, can.ui.preview)
|
}, can.ui.preview)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("ondetail", {help: "交互操作", list: ["删除"], _init: function(can, msg, list, cb, target) {
|
|
||||||
},
|
|
||||||
"删除": function(event, sub) {
|
|
||||||
sub.page.Remove(sub, sub._target)
|
|
||||||
},
|
|
||||||
})
|
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["selected", "count"],
|
Volcanos("onexport", {help: "导出数据", list: ["selected", "count"],
|
||||||
select: function(can) {
|
select: function(can) {
|
||||||
return can.page.Select(can, can.ui.display, "tr", function(tr) {
|
return can.page.Select(can, can.ui.display, "tr", function(tr) {
|
||||||
|
@ -6,6 +6,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
can.ui = can.onlayout.display(can, target)
|
can.ui = can.onlayout.display(can, target)
|
||||||
can.onappend.table(can, can.path, null, can.ui.content)
|
can.onappend.table(can, can.path, null, can.ui.content)
|
||||||
|
can.dir_root = msg.Option("dir_root")
|
||||||
|
|
||||||
can.Action("height", msg.Option("height")||"100")
|
can.Action("height", msg.Option("height")||"100")
|
||||||
can.Action("limit", msg.Option("limit")||"6")
|
can.Action("limit", msg.Option("limit")||"6")
|
||||||
@ -16,7 +17,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onimport.page(can, can.list)
|
can.onimport.page(can, can.list)
|
||||||
},
|
},
|
||||||
_file: function(can, path, index) { var p = location.href.indexOf("http") == 0? "": "http://localhost:9020"
|
_file: function(can, path, index) { var p = location.href.indexOf("http") == 0? "": "http://localhost:9020"
|
||||||
return path.indexOf("http") == 0? path: p+can.base.Path("/share/local", can._msg.Option("dir_root")||"", path)
|
return path.indexOf("http") == 0? path: p+can.base.Path("/share/local", can.dir_root||"", path)
|
||||||
},
|
},
|
||||||
file: function(can, path, index) { path = can.onimport._file(can, path, index)
|
file: function(can, path, index) { path = can.onimport._file(can, path, index)
|
||||||
var cb = can.onfigure[can.base.Ext(path)]; can.Status("file", path)
|
var cb = can.onfigure[can.base.Ext(path)]; can.Status("file", path)
|
||||||
|
@ -41,17 +41,16 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
field: function(can, data, target) { var item = can.base.Obj(data.meta)
|
field: function(can, data, target) { var item = can.base.Obj(data.meta)
|
||||||
item.width = parseInt(can.Conf("width"))-20, item.height = parseInt(can.Conf("height"))
|
item.width = parseInt(can.Conf("width")), item.height = parseInt(can.Conf("height"))
|
||||||
item.type = "story"
|
item.type = "story"
|
||||||
can.onappend._init(can, item, ["/plugin/state.js"], function(sub) {
|
can.onappend._init(can, item, ["/plugin/state.js"], function(sub) {
|
||||||
sub.run = function(event, cmds, cb, silent) {
|
sub.run = function(event, cmds, cb, silent) {
|
||||||
can.run(event, (cmds && cmds[0] == "_search"? []: ["action", "story", data.type, data.name, data.text]).concat(cmds), cb, true)
|
can.run(event, (cmds && can.onengine[cmds[0]]? []: ["action", "story", data.type, data.name, data.text]).concat(cmds), cb, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
can.page.Modify(can, sub._output, {style: {"max-width": item.width-40}})
|
can.page.Modify(can, sub._output, {style: {"max-width": item.width}})
|
||||||
can.onengine.listen(can, "action.resize", function(width, height) {
|
can.onengine.listen(can, "onaction_resize", function(width, height) {
|
||||||
can.page.Modify(can, sub._output, {style: {"max-width": width-60}})
|
can.page.Modify(can, sub._output, {style: {"max-width": sub.Conf("width", item.width=width-60)}})
|
||||||
sub.Conf("width", item.width = width-20)
|
|
||||||
})
|
})
|
||||||
}, can._output, target)
|
}, can._output, target)
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user