mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt chat
This commit is contained in:
parent
e4fb65d9a0
commit
f5631ab80a
78
frame.js
78
frame.js
@ -14,6 +14,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
can.onengine.listen(can, key, function(msg) { can.core.CallFunc(item, {can: panel, msg: msg}) })
|
can.onengine.listen(can, key, function(msg) { can.core.CallFunc(item, {can: panel, msg: msg}) })
|
||||||
} }), panel.const(panel.onaction._const||[]), panel._trans = panel.onaction._trans
|
} }), panel.const(panel.onaction._const||[]), panel._trans = panel.onaction._trans
|
||||||
panel.onaction._init(panel, item, item.list, next, panel._target)
|
panel.onaction._init(panel, item, item.list, next, panel._target)
|
||||||
|
can.onmotion.float.auto(can, panel._output, "carte", "input")
|
||||||
}, target)
|
}, target)
|
||||||
}, function() { can.onlayout.topic(can)
|
}, function() { can.onlayout.topic(can)
|
||||||
can.misc.Log(can.user.title(), cli.RUN, can)
|
can.misc.Log(can.user.title(), cli.RUN, can)
|
||||||
@ -114,8 +115,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
value == undefined? (value = item.value): (item.value = value)
|
value == undefined? (value = item.value): (item.value = value)
|
||||||
}); return value
|
}); return value
|
||||||
},
|
},
|
||||||
Update: function() {
|
Update: function(event, cmds, cb, silent) {
|
||||||
sub.onappend._output(sub, sub.Conf(), {}, sub.Pack())
|
sub.onappend._output(sub, sub.Conf(), event||{}, cmds||sub.Input(), cb, silent)
|
||||||
},
|
},
|
||||||
Action: function(key, value) {
|
Action: function(key, value) {
|
||||||
if (typeof key == "object") { return sub.core.Item(key, sub.Action), key }
|
if (typeof key == "object") { return sub.core.Item(key, sub.Action), key }
|
||||||
@ -143,7 +144,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.base.isFunc(cb) && cb(sub)
|
can.base.isFunc(cb) && cb(sub)
|
||||||
}, target)
|
}, target)
|
||||||
},
|
},
|
||||||
Pack: function(cmds, silent) {
|
Input: function(cmds, silent) {
|
||||||
cmds = cmds && cmds.length > 0? cmds: sub.page.Select(sub, option, "textarea.args,input.args,select.args", function(item) {
|
cmds = cmds && cmds.length > 0? cmds: sub.page.Select(sub, option, "textarea.args,input.args,select.args", function(item) {
|
||||||
return item.name && item.value || ""
|
return item.name && item.value || ""
|
||||||
}); for (var i = cmds.length-1; i >= 0; i--) {
|
}); for (var i = cmds.length-1; i >= 0; i--) {
|
||||||
@ -185,7 +186,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
return msg.Option("_handle", "true"), can.core.CallFunc(table.onaction[cmds[1]], {event: event, can: table, msg: msg})
|
return msg.Option("_handle", "true"), can.core.CallFunc(table.onaction[cmds[1]], {event: event, can: table, msg: msg})
|
||||||
}
|
}
|
||||||
|
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
return can.Update(event, can.Input(cmds, silent), cb, silent)
|
||||||
}, can._inputs[item.name] = input
|
}, can._inputs[item.name] = input
|
||||||
|
|
||||||
can.core.Item(input.onaction, function(key, value) {
|
can.core.Item(input.onaction, function(key, value) {
|
||||||
@ -202,7 +203,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
can.core.List(list, function(item) { can.onappend.input(can, item == ""? /*空白*/ {type: "space"}:
|
can.core.List(list, function(item) { can.onappend.input(can, item == ""? /*空白*/ {type: "space"}:
|
||||||
typeof item == "string"? /*按键*/ {type: html.BUTTON, value: item, onclick: function(event) {
|
typeof item == "string"? /*按键*/ {type: html.BUTTON, value: item, onclick: function(event) {
|
||||||
var cb = meta[item]||meta["_engine"]
|
var cb = meta[item]||meta["_engine"]
|
||||||
cb? can.core.CallFunc(cb, [event, can, item]): can.run(event, [ctx.ACTION,item].concat(can.sup.Pack()))
|
cb? can.core.CallFunc(cb, [event, can, item]): can.run(event, [ctx.ACTION,item].concat(can.sup.Input()))
|
||||||
|
|
||||||
}}: item.length > 0? /*列表*/ {type: "select", name: item[0], values: item.slice(1), onchange: function(event) {
|
}}: item.length > 0? /*列表*/ {type: "select", name: item[0], values: item.slice(1), onchange: function(event) {
|
||||||
var which = item[event.target.selectedIndex+1]
|
var which = item[event.target.selectedIndex+1]
|
||||||
@ -226,8 +227,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
var input = msg.Option("_handle") != "true" && cmds && cmds[0] == ctx.ACTION && feature && feature[cmds[1]]; if (input) {
|
var input = msg.Option("_handle") != "true" && cmds && cmds[0] == ctx.ACTION && feature && feature[cmds[1]]; if (input) {
|
||||||
can.user.input(event, can, input, function(ev, button, data, list, args) {
|
can.user.input(event, can, input, function(ev, button, data, list, args) {
|
||||||
var msg = can.request(event, {_handle: "true"}, can.Option())
|
var msg = can.request(event, {_handle: "true"}, can.Option())
|
||||||
can.onappend._output(can, meta, event, cmds.slice(0, 2).concat(args), function(msg) {
|
can.Update(event, cmds.slice(0, 2).concat(args), function(msg) {
|
||||||
can.onappend._output(can, meta, {}, can.Pack(), cb)
|
can.Update({}, can.Input(), cb)
|
||||||
}, true)
|
}, true)
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
@ -253,7 +254,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
return msg.Option("_handle", "true"), can.core.CallFunc(table.onaction[cmds[1]], {event: event, can: table, msg: msg})
|
return msg.Option("_handle", "true"), can.core.CallFunc(table.onaction[cmds[1]], {event: event, can: table, msg: msg})
|
||||||
}
|
}
|
||||||
|
|
||||||
return can.onappend._output(can, meta, event, can.Pack(cmds, silent), cb, silent)
|
return can.Update(event, can.Input(cmds, silent), cb, silent)
|
||||||
}, can._outputs.push(table), table._msg = msg
|
}, can._outputs.push(table), table._msg = msg
|
||||||
|
|
||||||
table._display = display
|
table._display = display
|
||||||
@ -305,7 +306,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
|
|
||||||
var title = can.Conf(["feature", "title", item.name].join("."))||""
|
var title = can.Conf(["feature", "title", item.name].join("."))||""
|
||||||
var input = {type: html.INPUT, name: item.name, data: item, dataset: {}}
|
var input = {type: html.INPUT, name: item.name, data: item, dataset: {}, _init: item._init, style: item.style}
|
||||||
item.value == "auto" && (item.value = "", item.action = "auto")
|
item.value == "auto" && (item.value = "", item.action = "auto")
|
||||||
item.action == "auto" && (input.dataset.action = "auto")
|
item.action == "auto" && (input.dataset.action = "auto")
|
||||||
title && (input.title = title)
|
title && (input.title = title)
|
||||||
@ -457,21 +458,44 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
float: function(can, msg, cb) {
|
float: function(can, msg, cb) {
|
||||||
var ui = can.onappend.field(can, "story toast float", {}, document.body)
|
var ui = can.onappend.field(can, "story toast float", {}, document.body)
|
||||||
|
ui.close = function() { can.page.Remove(can, ui.first), can.onengine.signal(can, "keymap.focus") }
|
||||||
|
can.onmotion.float.auto(can, ui.output, "carte", "input")
|
||||||
|
|
||||||
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
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.output, {style: {"max-width": width, "max-height": height-28}})
|
||||||
can.page.Modify(can, ui.first, {style: {top: top, left: left}})
|
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) },
|
can.onappend._action(can, ["关闭", "刷新", {input: "text", placeholder: "filter", style: {position: ""}, _init: function(input) {
|
||||||
"刷新": function(event) { can.page.Remove(can, ui.first), can.toast.click() },
|
can.onengine.signal(can, "keymap.focus", can.request({}, {cb: function(event) {
|
||||||
|
if (event.target.tagName == "INPUT") { return }
|
||||||
|
if (event.key == "Escape") { ui.close(); return }
|
||||||
|
if (event.key == " ") { input.focus()
|
||||||
|
event.stopPropagation(), event.preventDefault()
|
||||||
|
}
|
||||||
|
}}))
|
||||||
|
}, onkeydown: function(event) {
|
||||||
|
can.onkeypop.input(event, can)
|
||||||
|
if (event.key != "Enter") { return }
|
||||||
|
event.target.setSelectionRange(0, -1)
|
||||||
|
can.page.Select(can, ui.output, "tr", function(tr, index) { if (index == 0) { return }
|
||||||
|
can.page.Modify(can, tr, {style: {display: "none"}})
|
||||||
|
can.page.Select(can, tr, "td", function(td) {
|
||||||
|
if (td.innerText.indexOf(event.target.value) > -1) {
|
||||||
|
can.page.Modify(can, tr, {style: {display: ""}})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}}], ui.action, { "关闭": ui.close,
|
||||||
|
"刷新": function(event) { ui.close(), can.toast.click() },
|
||||||
})
|
})
|
||||||
can.onappend.table(can, msg, function(value, key, index, line, list) {
|
can.onappend.table(can, msg, function(value, key, index, line, list) {
|
||||||
return {text: [value, "td"], onclick: function(event) {
|
return {text: [value, "td"], onclick: function(event) {
|
||||||
can.base.isFunc(cb) && cb(value, key, index, line, list)
|
can.base.isFunc(cb) && cb(value, key, index, line, list)
|
||||||
}}
|
}}
|
||||||
}, ui.output)
|
}, ui.output)
|
||||||
|
can.onappend.board(can, msg.Result(), ui.output)
|
||||||
return ui
|
return ui
|
||||||
},
|
},
|
||||||
}, [], function(can) {})
|
}, [], function(can) {})
|
||||||
@ -655,7 +679,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
if (back.length > 120 || back.indexOf("\n") > -1) {
|
if (back.length > 120 || back.indexOf("\n") > -1) {
|
||||||
return can.onmotion.modifys(can, target, cb)
|
return can.onmotion.modifys(can, target, cb)
|
||||||
}
|
}
|
||||||
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: back, style: {width: target.offsetWidth > 400? 400: target.offsetWidth-20}, onkeydown: function(event) {
|
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {width: target.offsetWidth > 400? 400: target.offsetWidth-20}, onkeydown: function(event) {
|
||||||
switch (event.key) {
|
switch (event.key) {
|
||||||
case "Enter":
|
case "Enter":
|
||||||
target.innerHTML = event.target.value
|
target.innerHTML = event.target.value
|
||||||
@ -924,15 +948,13 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
|
|||||||
return status
|
return status
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, target) {
|
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
|
||||||
var focus = []; can.onengine.listen(can, "keymap.focus", function(cb) {
|
var focus = can.onkeypop._focus
|
||||||
cb? focus.push(cb): focus.pop()
|
// can.onengine.listen(can, "keymap.focus", function(cb) { cb? focus.push(cb): focus.pop() })
|
||||||
})
|
can.onengine.listen(can, "keymap.focus", function(cb) { cb? focus.push(cb): can.onkeypop._focus.length = 0 })
|
||||||
can.onkeypop._build(can)
|
can.onkeypop._build(can)
|
||||||
target.onkeydown = function(event) {
|
target.onkeydown = function(event) { if (focus.length > 0) { return focus[focus.length-1](event) }
|
||||||
if (focus.length > 0) { return focus[focus.length-1](event) }
|
event.target == target && can.page.Select(can, target, "fieldset.Action>div.output", function(item) {
|
||||||
if (event.target != target) { return }
|
|
||||||
can.page.Select(can, target, "fieldset.Action>div.output", function(item) {
|
|
||||||
target._keys = can.onkeypop._parse(event, can, "normal", target._keys||[], item)
|
target._keys = can.onkeypop._parse(event, can, "normal", target._keys||[], item)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -947,7 +969,6 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
_parse: function(event, can, mode, list, target) { list = list||[], list.push(event.key)
|
_parse: function(event, can, mode, list, target) { list = list||[], list.push(event.key)
|
||||||
// can.Status("按键", list.join(""))
|
|
||||||
for (var pre = 0; pre < list.length; pre++) {
|
for (var pre = 0; pre < list.length; pre++) {
|
||||||
if ("0" <= list[pre] && list[pre] <= "9") { continue } break
|
if ("0" <= list[pre] && list[pre] <= "9") { continue } break
|
||||||
}; var count = parseInt(list.slice(0, pre).join(""))||1
|
}; var count = parseInt(list.slice(0, pre).join(""))||1
|
||||||
@ -955,7 +976,6 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
|
|||||||
function repeat(cb, count) { list = []
|
function repeat(cb, count) { list = []
|
||||||
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
|
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
|
||||||
event.stopPropagation(), event.preventDefault()
|
event.stopPropagation(), event.preventDefault()
|
||||||
// can.Status("按键", list.join(""))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var map = can.onkeypop._mode[mode]
|
var map = can.onkeypop._mode[mode]
|
||||||
@ -987,6 +1007,11 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
|
|||||||
s: function(event, can, target) { can.search(event, ["River.ondetail.添加应用"]) },
|
s: function(event, can, target) { can.search(event, ["River.ondetail.添加应用"]) },
|
||||||
t: function(event, can, target) { can.search(event, ["River.ondetail.添加工具"]) },
|
t: function(event, can, target) { can.search(event, ["River.ondetail.添加工具"]) },
|
||||||
|
|
||||||
|
":": function(event, can, target) {
|
||||||
|
can.page.Select(can, document.body, "fieldset.panel.Footer input.cmd", function(target) {
|
||||||
|
target.focus()
|
||||||
|
})
|
||||||
|
},
|
||||||
" ": function(event, can, target) {
|
" ": function(event, can, target) {
|
||||||
can.page.Select(can, document.body, "fieldset.panel.Header div.search input", function(target) {
|
can.page.Select(can, document.body, "fieldset.panel.Header div.search input", function(target) {
|
||||||
target.focus()
|
target.focus()
|
||||||
@ -994,6 +1019,12 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
|
|||||||
},
|
},
|
||||||
enter: function(event, can, target) { can.misc.Log("enter") },
|
enter: function(event, can, target) { can.misc.Log("enter") },
|
||||||
escape: function(event, can, target) {
|
escape: function(event, can, target) {
|
||||||
|
can.page.Select(can, document.body, "fieldset.float", function(item) {
|
||||||
|
can.page.Remove(can, item)
|
||||||
|
})
|
||||||
|
can.page.Select(can, document.body, "fieldset.auto", function(item) {
|
||||||
|
can.onmotion.hidden(can, item)
|
||||||
|
})
|
||||||
can.search(event, ["Search.onaction.hide"])
|
can.search(event, ["Search.onaction.hide"])
|
||||||
can.misc.Log("enter")
|
can.misc.Log("enter")
|
||||||
},
|
},
|
||||||
@ -1010,7 +1041,6 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _init: function(can, targe
|
|||||||
var his = target._history || []
|
var his = target._history || []
|
||||||
his.push(target.value)
|
his.push(target.value)
|
||||||
|
|
||||||
// can.misc.Log("input", target, his)
|
|
||||||
target.setSelectionRange(0, -1)
|
target.setSelectionRange(0, -1)
|
||||||
target._current = his.length
|
target._current = his.length
|
||||||
target._history = his
|
target._history = his
|
||||||
|
@ -74,9 +74,8 @@ Volcanos("core", {help: "数据结构",
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 剩余字符
|
// 剩余字符
|
||||||
begin > 0 && (s? push({type: "string", text: str.slice(begin), left: s, right: ""})
|
// begin > 0 && (s? push({type: "string", text: str.slice(begin), left: s, right: ""})
|
||||||
: push(str.slice(begin)))
|
begin > 0 && (s? push({type: "string", text: str.slice(begin), left: s, right: ""}): push(str.slice(begin)))
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}),
|
}),
|
||||||
CallFunc: shy("调用器", function(func, args, mod) { args = args || {}
|
CallFunc: shy("调用器", function(func, args, mod) { args = args || {}
|
||||||
@ -89,7 +88,7 @@ Volcanos("core", {help: "数据结构",
|
|||||||
|
|
||||||
// 解析参数
|
// 解析参数
|
||||||
var list = [], echo = false, cb = args["cb"]
|
var list = [], echo = false, cb = args["cb"]
|
||||||
this.List(func.toString().split(")")[0].split("(")[1].split(","), function(item, index) { item = item.trim()
|
this.List(func.toString().split(")")[0].split("(")[1].split(","), function(item, index) { item = item.trim(); if (item == "") { return }
|
||||||
var arg = args[item] || msg&&msg.Option&&msg.Option(item) || can&&can.Conf&&can.Conf(item) || cmds[index] || args[index] || null
|
var arg = args[item] || msg&&msg.Option&&msg.Option(item) || can&&can.Conf&&can.Conf(item) || cmds[index] || args[index] || null
|
||||||
if (item == "cb") { echo = true }
|
if (item == "cb") { echo = true }
|
||||||
list.push(arg)
|
list.push(arg)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Volcanos("page", {help: "网页模块", ClassList: {
|
Volcanos("page", {help: "用户界面", ClassList: {
|
||||||
has: function(can, obj, key) { var list = obj.className? obj.className.split(" "): []
|
has: function(can, obj, key) { var list = obj.className? obj.className.split(" "): []
|
||||||
return list.indexOf(key) > -1
|
return list.indexOf(key) > -1
|
||||||
},
|
},
|
||||||
@ -15,7 +15,7 @@ Volcanos("page", {help: "网页模块", ClassList: {
|
|||||||
condition? this.add(can, obj, key): this.del(can, obj, key)
|
condition? this.add(can, obj, key): this.del(can, obj, key)
|
||||||
},
|
},
|
||||||
neg: function(can, obj, key) {
|
neg: function(can, obj, key) {
|
||||||
this.has(can, obj, key)? this.del(can, obj, key): this.add(can, obj, key)
|
return (this.has(can, obj, key)? this.del(can, obj, key): this.add(can, obj, key)).indexOf > -1
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Select: shy("选择节点", function(can, target, key, cb, interval, cbs) { if (key == ".") { return [] }
|
Select: shy("选择节点", function(can, target, key, cb, interval, cbs) { if (key == ".") { return [] }
|
||||||
|
@ -111,6 +111,7 @@ input[name=text] {
|
|||||||
width:160px;
|
width:160px;
|
||||||
}
|
}
|
||||||
input[type=text] {
|
input[type=text] {
|
||||||
|
height:21px; font-size:16px;
|
||||||
box-shadow: 4px 4px 10px 1px #626bd0;
|
box-shadow: 4px 4px 10px 1px #626bd0;
|
||||||
background-color:cyan; color:black;
|
background-color:cyan; color:black;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
@ -295,7 +296,7 @@ div.carte div.item {
|
|||||||
div.carte div.item:hover {
|
div.carte div.item:hover {
|
||||||
background:red;
|
background:red;
|
||||||
}
|
}
|
||||||
div.input {
|
body>div.input {
|
||||||
position:fixed;
|
position:fixed;
|
||||||
background-color:#0d4142a6;
|
background-color:#0d4142a6;
|
||||||
z-index:50;
|
z-index:50;
|
||||||
@ -303,7 +304,7 @@ div.input {
|
|||||||
div.input textarea {
|
div.input textarea {
|
||||||
box-shadow: 4px 4px 10px 1px #626bd0;
|
box-shadow: 4px 4px 10px 1px #626bd0;
|
||||||
border:2px inset #14a58e;
|
border:2px inset #14a58e;
|
||||||
width:145px; height:60px;
|
width:165px; height:60px;
|
||||||
background-color: cyan;
|
background-color: cyan;
|
||||||
padding:4px;
|
padding:4px;
|
||||||
|
|
||||||
|
@ -107,6 +107,7 @@ Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js",
|
|||||||
]},
|
]},
|
||||||
"research": {name: "测试 research", index: [
|
"research": {name: "测试 research", index: [
|
||||||
"web.code.favor", "web.code.bench", "web.code.pprof",
|
"web.code.favor", "web.code.bench", "web.code.pprof",
|
||||||
|
"web.code.case",
|
||||||
]},
|
]},
|
||||||
}},
|
}},
|
||||||
"operate": {name: "运维群", storm: {
|
"operate": {name: "运维群", storm: {
|
||||||
|
@ -25,7 +25,19 @@ fieldset.Action>div.action div.item.select {
|
|||||||
background-color:#2e515f;
|
background-color:#2e515f;
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset.Action div.output {
|
fieldset.Action div.output fieldset.plugin.fixed {
|
||||||
|
position:fixed;
|
||||||
|
left:0px;
|
||||||
|
top:0px;
|
||||||
|
margin:0px;
|
||||||
|
padding:0px;
|
||||||
|
background-color:black;
|
||||||
|
z-index:10;
|
||||||
|
height: -webkit-fill-available;
|
||||||
|
width: -webkit-fill-available;
|
||||||
|
overflow: auto;
|
||||||
|
background-color: #061c3cd9;
|
||||||
|
|
||||||
}
|
}
|
||||||
fieldset.Action div.output.tabs {
|
fieldset.Action div.output.tabs {
|
||||||
margin-top:28px;
|
margin-top:28px;
|
||||||
|
@ -11,7 +11,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
})
|
})
|
||||||
}, function() {
|
}, function() {
|
||||||
can.onaction.layout(can, can.user.Search(can, can._LAYOUT)||can.Conf(can._LAYOUT))
|
can.onaction.layout(can, can.user.Search(can, can._LAYOUT)||can.Conf(can._LAYOUT))
|
||||||
!can.user.isMobile && can.onimport._menu(can)
|
!can.user.isMobile && can.onimport._menu(can, msg)
|
||||||
})
|
})
|
||||||
|
|
||||||
can.onmotion.float.auto(can, can._output, "carte")
|
can.onmotion.float.auto(can, can._output, "carte")
|
||||||
@ -38,7 +38,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
meta.id && (sub._option.dataset.id = meta.id)
|
meta.id && (sub._option.dataset.id = meta.id)
|
||||||
sub._target.Meta = meta
|
sub._target.Meta = meta
|
||||||
},
|
},
|
||||||
_menu: function(can) {
|
_menu: function(can, msg) {
|
||||||
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,
|
||||||
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
["布局", "默认布局", "流动布局", "网格布局", "标签布局", "自由布局"],
|
||||||
|
@ -6,6 +6,9 @@ fieldset.Footer div.toast {
|
|||||||
position:static;
|
position:static;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
|
fieldset.Footer>div.output {
|
||||||
|
height:32px; overflow:hidden;
|
||||||
|
}
|
||||||
fieldset.Footer>div.output>div {
|
fieldset.Footer>div.output>div {
|
||||||
height:22px; padding:5px;
|
height:22px; padding:5px;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
@ -25,3 +28,10 @@ fieldset.Footer>div.output div.state {
|
|||||||
float:right;
|
float:right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldset.Footer>div.output input[name=cmd] {
|
||||||
|
background-color:black; color:white;
|
||||||
|
width:120px; height:25px;
|
||||||
|
}
|
||||||
|
fieldset.Footer>div.output input[name=cmd]:focus {
|
||||||
|
width:320px;
|
||||||
|
}
|
||||||
|
@ -2,49 +2,45 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onmotion.clear(can)
|
can.onmotion.clear(can)
|
||||||
can.onimport._title(can, msg, target)
|
can.onimport._title(can, msg, target)
|
||||||
can.onimport._state(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
|
can.onimport._cli(can, msg, target)
|
||||||
can.onimport._toast(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) { const TITLE = "title"
|
_title: function(can, msg, target) { const TITLE = chat.TITLE
|
||||||
!can.user.isMobile && can.core.List(msg.result, function(item) {
|
!can.user.isMobile && can.core.List(msg.result, function(item) {
|
||||||
can.page.Append(can, target, [{view: [TITLE, "div", item], title: "联系站长"}])
|
can.page.Append(can, target, [{view: [TITLE, html.DIV, item], title: "联系站长"}])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_state: function(can, msg, target) { const STATE = "state"
|
_state: function(can, msg, target) { const STATE = "state"
|
||||||
can.core.List(can.base.Obj(msg.Option(STATE), can.Conf(STATE)||["ncmd"]), function(item) {
|
can.core.List(can.base.Obj(can.Conf(STATE)||msg.Option(STATE), ["ncmd"]), function(item) {
|
||||||
can.page.Append(can, target, [{view: [STATE+" "+item, html.DIV, can.Conf(item)], list: [
|
can.page.Append(can, target, [{view: [STATE+" "+item, html.DIV, can.Conf(item)], list: [
|
||||||
{text: [item, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [can.Conf(item)||"", html.SPAN, item]},
|
{text: [item, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [can.Conf(item)||"", html.SPAN, item]},
|
||||||
], onclick: function(event) {
|
], onclick: function(event) {
|
||||||
can.show = can.show? (can.page.Remove(can, can.show), null): can.onimport._cmd(can)
|
can.show = can.show? (can.page.Remove(can, can.show), null): can.onaction._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, [ctx.ACTION, cli.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) {
|
||||||
can.show = can.show? (can.page.Remove(can, can.show), null): can.onappend.float(can, can._toast).first
|
can.show = can.show? (can.page.Remove(can, can.show), null): can.onappend.float(can, can._toast).first
|
||||||
}}]).first
|
}}]).first
|
||||||
},
|
},
|
||||||
|
_cli: function(can, msg, target) {
|
||||||
|
can.page.Append(can, target, [{input: ["cmd", function(event) {
|
||||||
|
can.onkeypop.input(event, can); if (event.key != "Enter") { return }
|
||||||
|
switch (event.target.value) {
|
||||||
|
case "close": can.cli && can.cli.close(); break
|
||||||
|
case "clear": can.cli && can.cli.close(); break
|
||||||
|
default:
|
||||||
|
can.run(event, [cli.RUN].concat(can.core.Split(event.target.value+" ")), function(msg) {
|
||||||
|
can.cli && can.cli.close()
|
||||||
|
can.cli = can.onappend.float(can, msg, function(value, key, index, line, list) {
|
||||||
|
|
||||||
|
}), can.page.Modify(can, can.cli.first, {style: {bottom: 32, top: ""}})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}]}])
|
||||||
|
},
|
||||||
|
|
||||||
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(" "))
|
||||||
@ -63,6 +59,31 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
|||||||
onlogin: function(can, msg) {
|
onlogin: 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) })
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_cmd: function(can) {
|
||||||
|
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
||||||
|
var commands = can.base.Obj(line.commands); switch (line.follow) {
|
||||||
|
case "chat.Action": commands = commands.slice(2); break
|
||||||
|
case "chat.Footer": commands = commands.slice(2); break
|
||||||
|
}
|
||||||
|
switch (commands[0]) {
|
||||||
|
case "web.wiki.word": commands = commands.slice(5); break
|
||||||
|
}
|
||||||
|
|
||||||
|
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
||||||
|
can.onappend.plugin(can, {index: commands[0], args: commands.slice(1), width: width, height: height-100}, function(sub) {
|
||||||
|
sub.run = function(event, cmds, cb) {
|
||||||
|
can.run(event, [ctx.ACTION, cli.RUN, commands[0]].concat(cmds), cb)
|
||||||
|
}
|
||||||
|
|
||||||
|
can.page.Modify(can, sub._output, {style: {"max-width": width}})
|
||||||
|
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
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: [],
|
Volcanos("onexport", {help: "导出数据", list: [],
|
||||||
height: function(can) { return can._target.offsetHeight },
|
height: function(can) { return can._target.offsetHeight },
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.Conf(aaa.USERNAME, msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNAME))
|
can.Conf(aaa.USERNAME, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNAME))
|
||||||
can.Conf(aaa.BACKGROUND, msg.Option(aaa.BACKGROUND))
|
can.Conf(aaa.BACKGROUND, msg.Option(aaa.BACKGROUND))
|
||||||
can.Conf(aaa.AVATAR, msg.Option(aaa.AVATAR))
|
can.Conf(aaa.AVATAR, msg.Option(aaa.AVATAR))
|
||||||
|
|
||||||
@ -10,9 +10,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onimport._state(can, msg, target)
|
can.onimport._state(can, msg, target)
|
||||||
can.onimport._search(can, msg, target)
|
can.onimport._search(can, msg, target)
|
||||||
can.onimport._background(can, msg, target)
|
can.onimport._background(can, msg, target)
|
||||||
can.onimport._menu(can, msg, target)
|
can.onimport._menus(can, msg, target)
|
||||||
|
|
||||||
can.onmotion.float.auto(can, can._output, "carte", "input")
|
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
},
|
},
|
||||||
_agent: function(can, msg, target) {
|
_agent: function(can, msg, target) {
|
||||||
@ -35,7 +33,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.user.Search(can, chat.GRANT, "")
|
can.user.Search(can, chat.GRANT, "")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) { const TITLE = "title"
|
_title: function(can, msg, target) { const TITLE = chat.TITLE
|
||||||
can.user.title(can.user.Search(can, TITLE)||can.user.Search(can, cli.POD))
|
can.user.title(can.user.Search(can, TITLE)||can.user.Search(can, cli.POD))
|
||||||
!can.user.isMobile && can.core.List(msg.result||["github.com/shylinux/contexts"], function(item) {
|
!can.user.isMobile && can.core.List(msg.result||["github.com/shylinux/contexts"], function(item) {
|
||||||
can.page.Append(can, target, [{view: [TITLE, html.DIV, item], title: "返回主页", onclick: function(event) {
|
can.page.Append(can, target, [{view: [TITLE, html.DIV, item], title: "返回主页", onclick: function(event) {
|
||||||
@ -44,7 +42,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
_state: function(can, msg, target) { const STATE = "state"
|
_state: function(can, msg, target) { const STATE = "state"
|
||||||
can.core.List(can.base.Obj(msg.Option(STATE), can.Conf(STATE)||["time", aaa.USERNAME]), function(item) {
|
can.core.List(can.base.Obj(can.Conf(STATE)||msg.Option(STATE), [kit.MDB_TIME, aaa.USERNAME]), function(item) {
|
||||||
if (item == aaa.AVATAR) {
|
if (item == aaa.AVATAR) {
|
||||||
can.page.Append(can, target, [{view: [STATE+" "+item], list: [{img: can.Conf(item)}], onmouseenter: function(event) {
|
can.page.Append(can, target, [{view: [STATE+" "+item], list: [{img: can.Conf(item)}], onmouseenter: function(event) {
|
||||||
can.onaction.carte(event, can, [can.page.Format(html.IMG, can.Conf(item), 160)])
|
can.onaction.carte(event, can, [can.page.Format(html.IMG, can.Conf(item), 160)])
|
||||||
@ -55,7 +53,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.page.Append(can, target, [{view: [STATE+" "+item, html.DIV, (can.Conf(item)||"").slice(0, 10)], onmouseenter: function(event) {
|
can.page.Append(can, target, [{view: [STATE+" "+item, html.DIV, (can.Conf(item)||"").slice(0, 10)], onmouseenter: function(event) {
|
||||||
can.core.CallFunc([can.onaction, item], [event, can, item])
|
can.core.CallFunc([can.onaction, item], [event, can, item])
|
||||||
}, _init: function(target) {
|
}, _init: function(target) {
|
||||||
item == "time" && can.onimport._time(can, target)
|
item == kit.MDB_TIME && can.onimport._time(can, target)
|
||||||
}}])
|
}}])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -69,15 +67,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
// can.onmotion.autosize(can, ui.input, 240, 120)
|
// can.onmotion.autosize(can, ui.input, 240, 120)
|
||||||
},
|
},
|
||||||
_background: function(can, msg) {
|
_background: function(can, msg) {
|
||||||
if (can.user.isExtension) { return }
|
|
||||||
if (can.user.isLocalFile) { return }
|
if (can.user.isLocalFile) { return }
|
||||||
|
if (can.user.isExtension) { return }
|
||||||
can.onlayout.background(can, msg.Option(aaa.BACKGROUND), document.body)
|
can.onlayout.background(can, msg.Option(aaa.BACKGROUND), document.body)
|
||||||
},
|
},
|
||||||
_menu: function(can, msg, target) {
|
_menus: function(can, msg, target) {
|
||||||
can.onimport.menu(can, can.user.isMobile||can.user.isExtension||can.user.Search(can, cli.POD)? [chat.HEADER, chat.RIVER]:
|
var menus = can.base.Obj(can.Conf(chat.MENUS)||msg.Option(chat.MENUS), [chat.HEADER, ["setting", "black", "white", "print"]])
|
||||||
[chat.HEADER, ["setting", "black", "white", "print", "pack"]], function(event, item) {
|
can.onimport.menu(can, can.user.isMobile||can.user.isExtension||can.user.Search(can, cli.POD)? [chat.HEADER, chat.RIVER]: menus, function(event, item) {
|
||||||
can.core.CallFunc([can.onaction, item], [event, can, item])
|
can.core.CallFunc(can.onaction[item]||function(event, can) {
|
||||||
})
|
can.run(event, [item], function(msg) { can.user.toast(can, "执行成功", can.user.trans(can, item)) })
|
||||||
|
}, {event: event, can: can, button: item})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
_weixin: function(can, msg) { can.run({}, [ctx.ACTION, chat.AGENT], function(msg) {
|
_weixin: function(can, msg) { can.run({}, [ctx.ACTION, chat.AGENT], function(msg) {
|
||||||
@ -152,9 +152,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta, list, cb, target) {
|
Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta, list, cb, target) {
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
},
|
},
|
||||||
_const: [
|
|
||||||
"title",
|
|
||||||
],
|
|
||||||
_trans: {
|
_trans: {
|
||||||
"river": "菜单",
|
"river": "菜单",
|
||||||
"search": "搜索",
|
"search": "搜索",
|
||||||
@ -163,24 +160,20 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
"black": "黑色主题",
|
"black": "黑色主题",
|
||||||
"white": "白色主题",
|
"white": "白色主题",
|
||||||
"print": "打印主题",
|
"print": "打印主题",
|
||||||
"clear": "清除背景",
|
|
||||||
"pack": "打包页面",
|
|
||||||
|
|
||||||
"shareuser": "共享用户",
|
"shareuser": "共享用户",
|
||||||
"usernick": "修改昵称",
|
"clear": "清除背景",
|
||||||
"logout": "退出登录",
|
|
||||||
},
|
},
|
||||||
onmain: function(can, msg) {
|
onmain: function(can, msg) {
|
||||||
function init() { can.run({}, [], function(msg) {
|
function init() { can.run({}, [], function(msg) {
|
||||||
can.onimport._init(can, msg, [], function(msg) {
|
can.base.Copy(can.onaction._trans, can.base.Obj(msg.Option(chat.TRANS), {}))
|
||||||
can.onengine.signal(can, "onlogin", msg)
|
can.onimport._init(can, msg, [], function(msg) { can.onengine.signal(can, "onlogin", msg) }, can._output)
|
||||||
}, can._output)
|
|
||||||
|
|
||||||
can.search({}, ["River.onmotion.toggle"])
|
can.search({}, ["River.onmotion.toggle"])
|
||||||
}) }; can.search({}, ["River.onmotion.hidden"])
|
}) }; can.search({}, ["River.onmotion.hidden"])
|
||||||
|
|
||||||
// 登录检查
|
// 登录检查
|
||||||
can.user.isLocalFile? init(): can.run({}, ["check"], function(msg) {
|
can.user.isLocalFile? init(): can.run({}, [chat.CHECK], function(msg) {
|
||||||
can.Conf(aaa.USERNAME, msg.Option(ice.MSG_USERNAME))? init():
|
can.Conf(aaa.USERNAME, msg.Option(ice.MSG_USERNAME))? init():
|
||||||
msg.Option("sso")? can.user.jumps(msg.Option("sso")): can.user.login(can, init)
|
msg.Option("sso")? can.user.jumps(msg.Option("sso")): can.user.login(can, init)
|
||||||
})
|
})
|
||||||
@ -190,7 +183,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
|
|
||||||
title: function(event, can) {
|
title: function(event, can) {
|
||||||
var args = {}; can.core.List([chat.TITLE, "topic", "layout"], function(key) {
|
var args = {}; can.core.List([chat.TITLE, chat.TOPIC, "layout"], function(key) {
|
||||||
var value = can.user.Search(can, key); value && (args[key] = value)
|
var value = can.user.Search(can, key); value && (args[key] = value)
|
||||||
})
|
})
|
||||||
can.user.jumps(can.user.MergeURL(can, args, true))
|
can.user.jumps(can.user.MergeURL(can, args, true))
|
||||||
@ -211,7 +204,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
can.set("River", "height", -1)
|
can.set("River", "height", -1)
|
||||||
can.set("Action", "height", -1)
|
can.set("Action", "height", -1)
|
||||||
},
|
},
|
||||||
pack: function(event, can) {
|
webpack: function(event, can) {
|
||||||
can.user.input(event, can, [
|
can.user.input(event, can, [
|
||||||
{name: "name", value: can.user.title()},
|
{name: "name", value: can.user.title()},
|
||||||
], function(ev, button, meta, list) {
|
], function(ev, button, meta, list) {
|
||||||
|
@ -8,8 +8,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
(index == 0 || item.hash == can._main_river) && (select = target)
|
(index == 0 || item.hash == can._main_river) && (select = target)
|
||||||
})
|
})
|
||||||
})), select && select.click()
|
})), select && select.click()
|
||||||
|
|
||||||
can.onmotion.float.auto(can, target, "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"
|
||||||
@ -22,11 +20,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can._main_storm = can.user.Search(can, chat.STORM) || msg.Option(ice.MSG_STORM) || Volcanos.meta.args.storm || can._main_storm
|
can._main_storm = can.user.Search(can, chat.STORM) || msg.Option(ice.MSG_STORM) || Volcanos.meta.args.storm || can._main_storm
|
||||||
},
|
},
|
||||||
_menu: function(can, msg) {
|
_menu: function(can, msg) {
|
||||||
can.search({}, ["Header.onimport.menu", chat.RIVER,
|
can.user.Search(can, cli.POD) || can.search({}, ["Header.onimport.menu"].concat(can.base.Obj(msg.Option(chat.MENUS), can.ondetail.menus)), function(event, item) {
|
||||||
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
|
|
||||||
!can.user.isMobile && ["访问", "内部系统", "访问应用", "访问工具", "访问用户", "访问设备", "工作任务"],
|
|
||||||
["共享", "共享群组", "共享应用", "共享工具", "共享主机"],
|
|
||||||
], function(event, item) {
|
|
||||||
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf(chat.RIVER), can.Conf(chat.STORM)])
|
can.core.CallFunc([can.ondetail, item], [event, can, item, can.Conf(chat.RIVER), can.Conf(chat.STORM)])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -35,8 +29,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onaction.storm(event, can, meta.hash)
|
can.onaction.storm(event, can, meta.hash)
|
||||||
|
|
||||||
}, onmouseenter: function(event) {
|
}, onmouseenter: function(event) {
|
||||||
if (can.user.isMobile) { return }
|
!can.user.isMobile && 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)
|
}, _init: function(target) { cb(target)
|
||||||
@ -49,8 +42,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.user.title(can._main_title || meta.name)
|
can.user.title(can._main_title || meta.name)
|
||||||
|
|
||||||
}, onmouseenter: function(event) {
|
}, onmouseenter: function(event) {
|
||||||
if (can.user.isMobile) { return }
|
!can.user.isMobile && can.onaction.carte(event, can, can.ondetail.sublist, 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)
|
||||||
})
|
})
|
||||||
}, _init: function(target) {
|
}, _init: function(target) {
|
||||||
@ -139,6 +131,12 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户", "添加应用", "添加设备", "重命名群组", "删除群组"],
|
Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户", "添加应用", "添加设备", "重命名群组", "删除群组"],
|
||||||
|
sublist: ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"],
|
||||||
|
menus: [chat.RIVER,
|
||||||
|
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
|
||||||
|
["共享", "共享群组", "共享应用", "共享工具", "共享主机"],
|
||||||
|
],
|
||||||
|
|
||||||
"创建群组": function(event, can) { can.onaction.create(event, can) },
|
"创建群组": function(event, can) { can.onaction.create(event, can) },
|
||||||
|
|
||||||
"共享群组": function(event, can, button, river) {
|
"共享群组": function(event, can, button, river) {
|
||||||
@ -155,13 +153,6 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"添加设备": function(event, can, button, river) {
|
|
||||||
can.user.select(event, can, web.SPACE, "type,name,text", function(item, next) {
|
|
||||||
can.run({}, [river, chat.NODE, ctx.ACTION, mdb.INSERT, kit.MDB_TYPE, item[0], kit.MDB_NAME, item[1]], function(msg) {
|
|
||||||
next()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
"添加应用": function(event, can, button, river) {
|
"添加应用": function(event, can, button, river) {
|
||||||
can.user.trans(can, {"public": "公开应用", "protected": "群组应用", "private": "个人应用"})
|
can.user.trans(can, {"public": "公开应用", "protected": "群组应用", "private": "个人应用"})
|
||||||
can.user.input(event, can, [
|
can.user.input(event, can, [
|
||||||
@ -173,6 +164,13 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
"添加设备": function(event, can, button, river) {
|
||||||
|
can.user.select(event, can, web.SPACE, "type,name,text", function(item, next) {
|
||||||
|
can.run({}, [river, chat.NODE, ctx.ACTION, mdb.INSERT, kit.MDB_TYPE, item[0], kit.MDB_NAME, item[1]], function(msg) {
|
||||||
|
next()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
"重命名群组": function(event, can, button, river) {
|
"重命名群组": function(event, can, button, river) {
|
||||||
can.user.input(event, can, [kit.MDB_NAME], function(event, button, meta, list) {
|
can.user.input(event, can, [kit.MDB_NAME], function(event, button, meta, list) {
|
||||||
var msg = can.request(event, {hash: river})
|
var msg = can.request(event, {hash: river})
|
||||||
@ -257,7 +255,7 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
"共享主机": function(event, can, button, river, storm) {
|
"共享主机": function(event, can, button, river, storm) {
|
||||||
can.run(event, [ctx.ACTION, aaa.INVITE], function(msg) {
|
can.run(event, [ctx.ACTION, aaa.INVITE], function(msg) {
|
||||||
can.user.toast(can, {
|
can.user.toast(can, {
|
||||||
title: "共享主机", duration: -1, width: -100,
|
title: "共享主机", duration: -1, width: -300,
|
||||||
content: msg.Result(), action: [cli.CLOSE],
|
content: msg.Result(), action: [cli.CLOSE],
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -281,8 +279,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户
|
|||||||
{name: "template", value: "@key"},
|
{name: "template", value: "@key"},
|
||||||
], function(event, button, data, list, args) {
|
], function(event, button, data, list, args) {
|
||||||
can.run(event, [ctx.ACTION, cli.START].concat(args), function(msg) {
|
can.run(event, [ctx.ACTION, cli.START].concat(args), function(msg) {
|
||||||
can.user.open(can.user.MergeURL(can, {pod: can.core.Keys(can.user.Search(can, cli.POD), msg.Option(kit.MDB_NAME))}))
|
var link = can.user.MergeURL(can, {_path: "/chat/pod/"+can.core.Keys(can.user.Search(can, cli.POD), msg.Option(kit.MDB_NAME))})
|
||||||
can.user.toast(can, can.user.MergeURL(can, {pod: msg.Option(kit.MDB_NAME)}))
|
can.user.toast(can, link), can.user.open(link)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -11,6 +11,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
_word: function(can, msg, cmds, fields) { can.type = cmds[0]
|
_word: function(can, msg, cmds, fields) { can.type = cmds[0]
|
||||||
var res = 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")})
|
||||||
|
|
||||||
|
if (cmds[1] == "clear") { can.onaction["清空"]({}, can); return }
|
||||||
can.onengine.signal(can, "onsearch", res)
|
can.onengine.signal(can, "onsearch", res)
|
||||||
can.run(res._event, cmds, function(res) {
|
can.run(res._event, cmds, function(res) {
|
||||||
can.list = res.Table()
|
can.list = res.Table()
|
||||||
|
@ -10,7 +10,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
|
|||||||
},
|
},
|
||||||
|
|
||||||
"执行": function(event, can) {
|
"执行": function(event, can) {
|
||||||
var title = can.sup._name+" "+can.sup.Pack([], true)
|
var title = can.sup._name+" "+can.sup.Input([], true)
|
||||||
var toast = can.user.toast(can, "执行中...", title, -1)
|
var toast = can.user.toast(can, "执行中...", title, -1)
|
||||||
can.run(event, [], function() { toast.close(), can.user.toast(can, "执行成功...", title) })
|
can.run(event, [], function() { toast.close(), can.user.toast(can, "执行成功...", title) })
|
||||||
},
|
},
|
||||||
@ -25,7 +25,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
|
|||||||
if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1) }
|
if (can.Conf("type") == "text") { event.target.setSelectionRange(0, -1) }
|
||||||
},
|
},
|
||||||
onclick: function(event, can) {
|
onclick: function(event, can) {
|
||||||
if (can.Conf("type") == "button") { can.run(event, [ctx.ACTION, can.Conf("name")].concat(can.sup.Pack())) }
|
if (can.Conf("type") == "button") { can.run(event, [ctx.ACTION, can.Conf("name")].concat(can.sup.Input())) }
|
||||||
},
|
},
|
||||||
|
|
||||||
onkeydown: function(event, can) { var target = event.target
|
onkeydown: function(event, can) { var target = event.target
|
||||||
|
@ -297,7 +297,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
|
|||||||
can.onaction.rerankLine(can)
|
can.onaction.rerankLine(can)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "控件交互", list: ["项目"],
|
Volcanos("onaction", {help: "控件交互", list: ["项目", "autogen"],
|
||||||
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
|
save: function(event, can) { var msg = can.request(event, {content: can.onexport.content(can)})
|
||||||
can.run(event, [ctx.ACTION, "save", can.parse, can.Option("file"), can.Option("path")], function(msg) {
|
can.run(event, [ctx.ACTION, "save", can.parse, can.Option("file"), can.Option("path")], function(msg) {
|
||||||
can.user.toast(can, "保存成功")
|
can.user.toast(can, "保存成功")
|
||||||
|
@ -11,13 +11,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
|||||||
location.href = msg._arg[0]
|
location.href = msg._arg[0]
|
||||||
},
|
},
|
||||||
_rewrite: function(can, msg) { can.Option(msg._arg[0], msg._arg[1])
|
_rewrite: function(can, msg) { can.Option(msg._arg[0], msg._arg[1])
|
||||||
can.onappend._output(can, can.Conf(), {}, can.Pack())
|
can.Update()
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
_refresh: function(can, msg) {
|
_refresh: function(can, msg) {
|
||||||
can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() {
|
can.core.Timer(parseInt(msg.Option("_delay")||"500"), function() {
|
||||||
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
|
var sub = can.request({}, {_count: parseInt(msg.Option("_count"))-1})
|
||||||
can.onappend._output(can, can.Conf(), sub._event, can.Pack())
|
can.Update()
|
||||||
})
|
})
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
@ -52,10 +52,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
|||||||
if (his[0] == ctx.ACTION) { continue }
|
if (his[0] == ctx.ACTION) { continue }
|
||||||
can.page.Select(can, can._option, "textarea.args,input.args,select.args", function(item, index) {
|
can.page.Select(can, can._option, "textarea.args,input.args,select.args", function(item, index) {
|
||||||
item.value = his[index]||""
|
item.value = his[index]||""
|
||||||
}), can.onappend._output(can, can.Conf(), {}, can.Pack())
|
}), can.Update()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
!his && can.onappend._output(can, can.Conf(), {}, can.Pack())
|
!his && can.Update()
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -77,11 +77,23 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互操作", list: [
|
Volcanos("onaction", {help: "交互操作", list: [
|
||||||
"共享工具", "保存参数", "清空参数", "刷新数据", ["其它 ->", "生成链接", "复制数据", "下载数据", "清空数据", "删除工具", "摄像头"],
|
"共享工具", "保存参数", "清空参数", "刷新数据", ["其它 ->", "全屏", "生成链接", "复制数据", "下载数据", "清空数据", "删除工具", "摄像头"],
|
||||||
], _init: function(can, msg, list, cb, target) {
|
], _init: function(can, msg, list, cb, target) {
|
||||||
},
|
},
|
||||||
_engine: function(event, can, button) {
|
_engine: function(event, can, button) {
|
||||||
can.onappend._output(can, can.Conf(), event, [ctx.ACTION, button].concat(can.Pack([], true)))
|
can.Update(event, [ctx.ACTION, button].concat(can.Input([], true)))
|
||||||
|
},
|
||||||
|
"共享工具": function(event, can) { var meta = can.Conf()
|
||||||
|
var ui = can.user.input(event, can, [{name: "name", value: meta.name}], function(event, button, data, list, args) {
|
||||||
|
var msg = can.request(event, {arg: [
|
||||||
|
kit.MDB_TYPE, "field",
|
||||||
|
kit.MDB_NAME, list[0], kit.MDB_TEXT, JSON.stringify(can.Input([], true)),
|
||||||
|
// "river", meta.ctx||meta.key||"", "storm", meta.index||meta.cmd||meta.name,
|
||||||
|
"storm", meta.index,
|
||||||
|
]})
|
||||||
|
can.search(event, ["Header.onaction.share"])
|
||||||
|
})
|
||||||
|
can.onlayout.figure(event, can, ui._target, true)
|
||||||
},
|
},
|
||||||
"保存参数": function(event, can) { var meta = can.Conf()
|
"保存参数": function(event, can) { var meta = can.Conf()
|
||||||
var msg = can.request(event, {river: can.Conf("river"), storm: can.Conf("storm"), id: meta.id})
|
var msg = can.request(event, {river: can.Conf("river"), storm: can.Conf("storm"), id: meta.id})
|
||||||
@ -92,30 +104,21 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
"清空参数": function(event, can) {
|
"清空参数": function(event, can) {
|
||||||
can.page.Select(can, can._option, '.args', function(item) { return item.value = "" })
|
can.page.Select(can, can._option, '.args', function(item) { return item.value = "" })
|
||||||
},
|
},
|
||||||
"共享工具": function(event, can) { var meta = can.Conf()
|
"刷新数据": function(event, can) {
|
||||||
var ui = can.user.input(event, can, [{name: "name", value: meta.name}], function(event, button, data, list, args) {
|
can.Update({}, can.Input([], true))
|
||||||
var msg = can.request(event, {arg: [
|
|
||||||
kit.MDB_TYPE, "field",
|
|
||||||
kit.MDB_NAME, list[0], kit.MDB_TEXT, JSON.stringify(can.Pack([], true)),
|
|
||||||
// "river", meta.ctx||meta.key||"", "storm", meta.index||meta.cmd||meta.name,
|
|
||||||
"storm", meta.index,
|
|
||||||
]})
|
|
||||||
can.search(event, ["Header.onaction.share"])
|
|
||||||
})
|
|
||||||
can.onlayout.figure(event, can, ui._target, true)
|
|
||||||
},
|
},
|
||||||
|
"全屏": function(event, can) {
|
||||||
|
if (can.page.ClassList.neg(can, can._target, "fixed")) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
"生成链接": function(event, can) { var meta = can.Conf()
|
"生成链接": function(event, can) { var meta = can.Conf()
|
||||||
var args = can.Option(); args._path = "/chat/cmd/"+(meta.index||can.core.Keys(meta.ctx, meta.cmd))
|
var args = can.Option(); args._path = "/chat/cmd/"+(meta.index||can.core.Keys(meta.ctx, meta.cmd))
|
||||||
args._path == "/chat/cmd/web.wiki.word" && (args = {_path: "/chat/cmd/"+args.path})
|
args._path == "/chat/cmd/web.wiki.word" && (args = {_path: "/chat/cmd/"+args.path})
|
||||||
var msg = can.request(event, {link: can.user.MergeURL(can, args)})
|
var msg = can.request(event, {link: can.user.MergeURL(can, args)})
|
||||||
can.search(event, ["Header.onaction.share"])
|
can.search(event, ["Header.onaction.share"])
|
||||||
},
|
},
|
||||||
"删除工具": function(event, can) {
|
|
||||||
can.page.Remove(can, can._target)
|
|
||||||
},
|
|
||||||
"刷新数据": function(event, can) { var meta = can.Conf()
|
|
||||||
can.onappend._output(can, meta, {}, can.Pack([], true))
|
|
||||||
},
|
|
||||||
"复制数据": function(event, can) { var meta = can.Conf(), msg = can._msg
|
"复制数据": function(event, can) { var meta = can.Conf(), msg = can._msg
|
||||||
var res = [msg.append && msg.append.join(",")]; msg.Table(function(line, index, array) {
|
var res = [msg.append && msg.append.join(",")]; msg.Table(function(line, index, array) {
|
||||||
res.push(can.core.Item(line, function(key, value) { return value }).join(","))
|
res.push(can.core.Item(line, function(key, value) { return value }).join(","))
|
||||||
@ -135,6 +138,9 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
"清空数据": function(event, can) {
|
"清空数据": function(event, can) {
|
||||||
can.onmotion.clear(can, can._output)
|
can.onmotion.clear(can, can._output)
|
||||||
},
|
},
|
||||||
|
"删除工具": function(event, can) {
|
||||||
|
can.page.Remove(can, can._target)
|
||||||
|
},
|
||||||
"摄像头": function(event, can) {
|
"摄像头": function(event, can) {
|
||||||
var constraints = {audio: false, video: {width: 200, height: 200}}
|
var constraints = {audio: false, video: {width: 200, height: 200}}
|
||||||
var ui = can.page.Append(can, can._output, [{view: ctx.ACTION}, {view: "capture", list: [{type: "video", _init: function(item) {
|
var ui = can.page.Append(can, can._output, [{view: ctx.ACTION}, {view: "capture", list: [{type: "video", _init: function(item) {
|
||||||
@ -164,7 +170,7 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
change: function(event, can, name, value, cb) {
|
change: function(event, can, name, value, cb) {
|
||||||
return can.page.Select(can, can._option, "input.args", function(input) {
|
return can.page.Select(can, can._option, "input.args", function(input) {
|
||||||
if (input.name == name && value != input.value) { input.value = value
|
if (input.name == name && value != input.value) { input.value = value
|
||||||
var data = input.dataset || {}; data.action == "auto" && can.onappend._output(can, can.Conf(), event, can.Pack(), cb)
|
var data = input.dataset || {}; data.action == "auto" && can.Update(event, can.Input(), cb)
|
||||||
return input
|
return input
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -215,8 +221,8 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
|
openLocation: function(event, can) { can.user.agent.openLocation(can.request(event)) },
|
||||||
|
|
||||||
"参数": function(event, can) { can.onmotion.Toggle(can, can._action) },
|
"参数": function(event, can) { can.onmotion.Toggle(can, can._action) },
|
||||||
"关闭": function(event, can) { can.page.Remove(can, can._target) },
|
|
||||||
"清空": function(event, can, name) { can.onmotion.clear(can, can._output) },
|
"清空": function(event, can, name) { can.onmotion.clear(can, can._output) },
|
||||||
|
"关闭": function(event, can) { can.page.Remove(can, can._target) },
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: []})
|
Volcanos("onexport", {help: "导出数据", list: []})
|
||||||
var _can_name = ""
|
var _can_name = ""
|
||||||
|
16
proto.js
16
proto.js
@ -86,15 +86,10 @@ const wiki = {
|
|||||||
SHELL: "shell",
|
SHELL: "shell",
|
||||||
}
|
}
|
||||||
const chat = {
|
const chat = {
|
||||||
TITLE: "title",
|
|
||||||
RIVER: "river",
|
RIVER: "river",
|
||||||
STORM: "storm",
|
STORM: "storm",
|
||||||
FIELD: "field",
|
FIELD: "field",
|
||||||
|
|
||||||
AGENT: "agent",
|
|
||||||
SHARE: "share",
|
|
||||||
GRANT: "grant",
|
|
||||||
|
|
||||||
PUBLIC: "public",
|
PUBLIC: "public",
|
||||||
PROTECTED: "protected",
|
PROTECTED: "protected",
|
||||||
PRIVATE: "private",
|
PRIVATE: "private",
|
||||||
@ -102,7 +97,16 @@ const chat = {
|
|||||||
USER: "user",
|
USER: "user",
|
||||||
TOOL: "tool",
|
TOOL: "tool",
|
||||||
NODE: "node",
|
NODE: "node",
|
||||||
|
|
||||||
HEADER: "header",
|
HEADER: "header",
|
||||||
|
TOPIC: "topic",
|
||||||
|
TITLE: "title",
|
||||||
|
MENUS: "menus",
|
||||||
|
TRANS: "trans",
|
||||||
|
AGENT: "agent",
|
||||||
|
CHECK: "check",
|
||||||
|
SHARE: "share",
|
||||||
|
GRANT: "grant",
|
||||||
}
|
}
|
||||||
const team = {
|
const team = {
|
||||||
TASK: "task",
|
TASK: "task",
|
||||||
@ -166,7 +170,7 @@ var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var proto = {_name: name, _load: function(name, cb) { // 加载缓存
|
var proto = {__proto__: meta, _name: name, _load: function(name, cb) { // 加载缓存
|
||||||
var cache = meta.cache[name] || []; for (list.reverse(); list.length > 0; list) {
|
var cache = meta.cache[name] || []; for (list.reverse(); list.length > 0; list) {
|
||||||
var sub = list.pop(); sub != can && cache.push(sub)
|
var sub = list.pop(); sub != can && cache.push(sub)
|
||||||
}; meta.cache[name] = cache
|
}; meta.cache[name] = cache
|
||||||
|
Loading…
x
Reference in New Issue
Block a user