mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt chat
This commit is contained in:
parent
87e22b48a7
commit
9fa4537eb3
14
frame.js
14
frame.js
@ -41,7 +41,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
|
|||||||
_engine: function(event, can, msg, panel, cmds, cb) { return false },
|
_engine: function(event, can, msg, panel, cmds, cb) { return false },
|
||||||
_remote: function(event, can, msg, panel, cmds, cb) {
|
_remote: function(event, can, msg, panel, cmds, cb) {
|
||||||
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
||||||
can.search({follow: panel._follow, msg: msg, cmds: cmds}, ["Footer.onimport.ncmd"])
|
can.onengine.signal(can, "onremote", can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds}))
|
||||||
|
|
||||||
var key = can.core.Keys(panel._name, cmds.join(","))
|
var key = can.core.Keys(panel._name, cmds.join(","))
|
||||||
if (can.user.isLocalFile) { var msg = can.request(event); msg.Clear(ice.MSG_APPEND)
|
if (can.user.isLocalFile) { var msg = can.request(event); msg.Clear(ice.MSG_APPEND)
|
||||||
@ -193,7 +193,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
Volcanos(display, {_follow: can.core.Keys(can._follow, display), _display: display, _target: can._output, _fields: can._target,
|
Volcanos(display, {_follow: can.core.Keys(can._follow, display), _display: 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,
|
||||||
Option: can.Option, Action: can.Action, Status: can.Status,
|
Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
}, [display], function(table) { table.Conf(can.Conf())
|
}, [display], function(table) { table.Conf(can.Conf())
|
||||||
table.run = function(event, cmds, cb, silent) { var msg = can.request(event)
|
table.run = function(event, cmds, cb, silent) { var msg = can.request(event)
|
||||||
if (msg.RunAction(event, table, cmds)) { return }
|
if (msg.RunAction(event, table, cmds)) { return }
|
||||||
@ -250,7 +250,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
{view: [html.OPTION, html.FORM]}, {view: [html.ACTION]}, {view: [html.OUTPUT]}, {view: [html.STATUS]},
|
{view: [html.OPTION, html.FORM]}, {view: [html.ACTION]}, {view: [html.OUTPUT]}, {view: [html.STATUS]},
|
||||||
]}])
|
]}])
|
||||||
},
|
},
|
||||||
input: function(can, item, value, target) {
|
input: function(can, item, value, target, style) {
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
case "": return can.page.Append(can, target, [item])
|
case "": return can.page.Append(can, target, [item])
|
||||||
case html.SPACE: return can.page.Append(can, target, [{view: can.base.join([html.ITEM, html.SPACE])}])
|
case html.SPACE: return can.page.Append(can, target, [{view: can.base.join([html.ITEM, html.SPACE])}])
|
||||||
@ -259,7 +259,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
var input = can.page.input(can, item, value)
|
var input = can.page.input(can, item, value)
|
||||||
var br = input.type == html.TEXTAREA? [{type: html.BR}]: []
|
var br = input.type == html.TEXTAREA? [{type: html.BR}]: []
|
||||||
var title = can.Conf(["feature", chat.TITLE, item.name].join(ice.PT))||""; title && (input.title = title)
|
var title = can.Conf(["feature", chat.TITLE, item.name].join(ice.PT))||""; title && (input.title = title)
|
||||||
return can.page.Append(can, target, ([{view: [can.base.join([html.ITEM, item.type])], list: [input]}]).concat(br))[item.name]
|
return can.page.Append(can, target, ([{view: style||can.base.join([html.ITEM, item.type]), list: [input]}]).concat(br))[item.name]
|
||||||
},
|
},
|
||||||
table: function(can, msg, cb, target, sort) {
|
table: function(can, msg, cb, target, sort) {
|
||||||
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
|
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
|
||||||
@ -281,6 +281,10 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
|||||||
return can.run(event, [ctx.ACTION, target.name], function(msg) { can.run() }, true)
|
return can.run(event, [ctx.ACTION, target.name], function(msg) { can.run() }, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key == "hash" && can.user.mod.isDiv) {
|
||||||
|
can.user.jumps("/chat/div/"+value)
|
||||||
|
return
|
||||||
|
}
|
||||||
can.sup.onaction.change(event, can.sup, key, value)
|
can.sup.onaction.change(event, can.sup, key, value)
|
||||||
}, ondblclick: function(event) { if ([kit.MDB_KEY].indexOf(key) > -1) { return }
|
}, ondblclick: function(event) { if ([kit.MDB_KEY].indexOf(key) > -1) { return }
|
||||||
var item = can.core.List(can.Conf("feature.insert"), function(item) {
|
var item = can.core.List(can.Conf("feature.insert"), function(item) {
|
||||||
@ -429,7 +433,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
|||||||
can.page.Modify(can, target||document.body, {style: {background: url == "" || url == "void"? "": 'url("'+url+'")'}})
|
can.page.Modify(can, target||document.body, {style: {background: url == "" || url == "void"? "": 'url("'+url+'")'}})
|
||||||
},
|
},
|
||||||
figure: function(event, can, target, right) { target = target||can._target; if (!event || !event.target) { return }
|
figure: function(event, can, target, right) { target = target||can._target; if (!event || !event.target) { return }
|
||||||
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight; if (right) {
|
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight-5; if (right) {
|
||||||
var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
|
var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,6 +106,15 @@ Volcanos("base", {help: "数据类型",
|
|||||||
Format: function(obj) {
|
Format: function(obj) {
|
||||||
return JSON.stringify(obj)
|
return JSON.stringify(obj)
|
||||||
},
|
},
|
||||||
|
endWith: function(str, end) {
|
||||||
|
return str.lastIndexOf(end) + end.length == str.length
|
||||||
|
},
|
||||||
|
trimSuffix: function(str, end) {
|
||||||
|
if (str.indexOf(end) == -1) {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
return str.slice(0, str.indexOf(end))
|
||||||
|
},
|
||||||
Simple: function() { var res = []
|
Simple: function() { var res = []
|
||||||
for (var i = 0; i < arguments.length; i++) {
|
for (var i = 0; i < arguments.length; i++) {
|
||||||
var arg = arguments[i]; switch (typeof arguments[i]) {
|
var arg = arguments[i]; switch (typeof arguments[i]) {
|
||||||
|
@ -2,7 +2,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
var proto = {_event: event, _can: can,
|
var proto = {_event: event, _can: can,
|
||||||
RunAction: function(event, sub, cmds) { var msg = can.request(event)
|
RunAction: function(event, sub, cmds) { var msg = can.request(event)
|
||||||
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && sub && sub.onaction[cmds[1]]) {
|
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && sub && sub.onaction[cmds[1]]) {
|
||||||
return msg.Option(ice.MSG_HANDLE, ice.TRUE), can.core.CallFunc(sub.onaction[cmds[1]], {event: event, can: sub, msg: msg, cmd: cmds[1]}), true
|
return msg.Option(ice.MSG_HANDLE, ice.TRUE), can.core.CallFunc(sub.onaction[cmds[1]], {event: event, can: sub, msg: msg, cmd: cmds[1], button: cmds[1]}), true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
@ -150,7 +150,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
|
|||||||
var msg = can.request(event); msg.Reply = function() { // 回复命令
|
var msg = can.request(event); msg.Reply = function() { // 回复命令
|
||||||
msg.result = (msg.result||[]).concat(can.core.List(arguments))
|
msg.result = (msg.result||[]).concat(can.core.List(arguments))
|
||||||
|
|
||||||
msg.Option({_handle: true, _target: msg.Option("_source")})
|
msg.Option({_handle: true, _source: (msg["_target"]||[]).reverse().slice(1).join(".")||"",_target: (msg["_source"]||[]).reverse().join(".")})
|
||||||
can.misc.Log("wss", "result", msg.result, msg)
|
can.misc.Log("wss", "result", msg.result, msg)
|
||||||
|
|
||||||
delete(msg._event), delete(msg._can)
|
delete(msg._event), delete(msg._can)
|
||||||
|
16
lib/user.js
16
lib/user.js
@ -1,7 +1,7 @@
|
|||||||
Volcanos("user", {help: "用户操作", agent: {
|
Volcanos("user", {help: "用户操作", agent: {
|
||||||
scanQRCode: function(cb, can) {
|
scanQRCode: function(cb, can) {
|
||||||
can.user.input(event, can, [{type: "textarea"}], function(ev, button, data, list, args) {
|
can.user.input(event, can, [{type: "textarea", name: "text", text: ""}], function(ev, button, data, list, args) {
|
||||||
cb(list[0])
|
cb(list[0], can.base.parseJSON(list[0]))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getLocation: function(cb) {
|
getLocation: function(cb) {
|
||||||
@ -30,7 +30,9 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
isLocalFile: location && location.protocol && location.protocol == "file:",
|
isLocalFile: location && location.protocol && location.protocol == "file:",
|
||||||
mod: {
|
mod: {
|
||||||
isPod: location && location.pathname && (location.pathname.indexOf("/chat/pod/") == 0),
|
isPod: location && location.pathname && (location.pathname.indexOf("/chat/pod/") == 0),
|
||||||
isCmd: location && location.pathname && (location.pathname.indexOf("/chat/cmd/") == 0 || location.pathname.indexOf("/help/") == 0),
|
isDiv: location && location.pathname && (location.pathname.indexOf("/chat/div/") == 0),
|
||||||
|
isCmd: location && location.pathname && (location.pathname.indexOf("/chat/pod/") == 0 && location.pathname.indexOf("/cmd/") > 0 ||
|
||||||
|
location.pathname.indexOf("/chat/cmd/") == 0 || location.pathname.indexOf("/help/") == 0),
|
||||||
},
|
},
|
||||||
|
|
||||||
alert: function(text) { alert(JSON.stringify(text)) },
|
alert: function(text) { alert(JSON.stringify(text)) },
|
||||||
@ -97,10 +99,10 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
}, function() { action.close() }), _target: ui._target, ui: ui,
|
}, function() { action.close() }), _target: ui._target, ui: ui,
|
||||||
}); can.onmotion.story.auto(can, ui._target)
|
}); can.onmotion.story.auto(can, ui._target)
|
||||||
|
|
||||||
can.search(can.request({}, {
|
can.onengine.signal(can, "ontoast", can.request({}, {
|
||||||
title: meta.title, content: meta.content,
|
title: meta.title, content: meta.content,
|
||||||
time: can.base.Time(), fileline: can.misc.FileLine(2, 2),
|
time: can.base.Time(), fileline: can.misc.FileLine(2, 2),
|
||||||
})._event, ["Footer.onimport.toast"])
|
}))
|
||||||
return action
|
return action
|
||||||
},
|
},
|
||||||
share: function(can, msg, cmd) {
|
share: function(can, msg, cmd) {
|
||||||
@ -210,7 +212,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
}, msg, can.Option()); can.run(event, cmds, cb, true)
|
}, msg, can.Option()); can.run(event, cmds, cb, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
target.value = target.value||msg.Option(item.name)||(item.name&&can.Option(item.name))||""
|
target.value = target.value||(item.name&&can.Option(item.name))||""
|
||||||
can.onappend.figure(can, item, target)
|
can.onappend.figure(can, item, target)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +232,7 @@ Volcanos("user", {help: "用户操作", agent: {
|
|||||||
}, _target: ui._target,
|
}, _target: ui._target,
|
||||||
})
|
})
|
||||||
|
|
||||||
can.page.Select(can, ui._target, "input", function(item, index) {
|
can.page.Select(can, ui._target, "textarea,input,select", function(item, index) {
|
||||||
index == 0 && can.onmotion.focus(can, item)
|
index == 0 && can.onmotion.focus(can, item)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -62,9 +62,6 @@ input[type=button] {
|
|||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
font-family:monospace;
|
font-family:monospace;
|
||||||
}
|
}
|
||||||
body.en input[type=button] {
|
|
||||||
letter-spacing:2px;
|
|
||||||
}
|
|
||||||
input[type=button]:hover {
|
input[type=button]:hover {
|
||||||
background-color:gray; color:cyan;
|
background-color:gray; color:cyan;
|
||||||
}
|
}
|
||||||
@ -311,7 +308,6 @@ fieldset.float {
|
|||||||
background-color:#023531cf;
|
background-color:#023531cf;
|
||||||
margin:0px; padding:0px;
|
margin:0px; padding:0px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
z-index:30;
|
|
||||||
}
|
}
|
||||||
fieldset.float>legend {
|
fieldset.float>legend {
|
||||||
display:none;
|
display:none;
|
||||||
@ -323,7 +319,6 @@ body>fieldset.input {
|
|||||||
position:fixed; top:32px;
|
position:fixed; top:32px;
|
||||||
background-color:#0d4142a6;
|
background-color:#0d4142a6;
|
||||||
position:fixed;
|
position:fixed;
|
||||||
z-index:50;
|
|
||||||
}
|
}
|
||||||
body>fieldset.input div.output {
|
body>fieldset.input div.output {
|
||||||
max-height:400px;
|
max-height:400px;
|
||||||
@ -335,10 +330,8 @@ body>fieldset.input td {
|
|||||||
word-break:keep-all;
|
word-break:keep-all;
|
||||||
}
|
}
|
||||||
body>fieldset.input.key {
|
body>fieldset.input.key {
|
||||||
z-index:60;
|
|
||||||
}
|
}
|
||||||
body>fieldset.input.date {
|
body>fieldset.input.date {
|
||||||
z-index:70;
|
|
||||||
}
|
}
|
||||||
body>fieldset.input.date table {
|
body>fieldset.input.date table {
|
||||||
text-align:center;
|
text-align:center;
|
||||||
@ -350,7 +343,7 @@ body>fieldset.input.date table td:hover {
|
|||||||
|
|
||||||
body>div.toast {
|
body>div.toast {
|
||||||
background:#0e3369b3; color:yellow;
|
background:#0e3369b3; color:yellow;
|
||||||
position:fixed; z-index:100;
|
position:fixed;
|
||||||
padding:5px; overflow:auto;
|
padding:5px; overflow:auto;
|
||||||
}
|
}
|
||||||
body>div.toast a {
|
body>div.toast a {
|
||||||
@ -388,7 +381,6 @@ body>div.carte {
|
|||||||
background:#295b61;
|
background:#295b61;
|
||||||
color:white;
|
color:white;
|
||||||
padding:4px;
|
padding:4px;
|
||||||
z-index:30;
|
|
||||||
min-width:80px;
|
min-width:80px;
|
||||||
}
|
}
|
||||||
body>div.carte div.item {
|
body>div.carte div.item {
|
||||||
@ -400,7 +392,6 @@ body>div.carte div.item:hover {
|
|||||||
body>div.input {
|
body>div.input {
|
||||||
position:fixed;
|
position:fixed;
|
||||||
background-color:#0d4142a6;
|
background-color:#0d4142a6;
|
||||||
z-index:50;
|
|
||||||
}
|
}
|
||||||
body>div.input input[type=text] {
|
body>div.input input[type=text] {
|
||||||
width:171px;
|
width:171px;
|
||||||
@ -432,7 +423,6 @@ body>div.upload {
|
|||||||
background:black; color:yellow;
|
background:black; color:yellow;
|
||||||
position:fixed;
|
position:fixed;
|
||||||
padding:5px;
|
padding:5px;
|
||||||
z-index:50;
|
|
||||||
}
|
}
|
||||||
body>div.upload div.item {
|
body>div.upload div.item {
|
||||||
float:left;
|
float:left;
|
||||||
@ -492,6 +482,13 @@ body.white td>input[type=button][name=remove] {
|
|||||||
body.white td>input[type=button][name=create] {
|
body.white td>input[type=button][name=create] {
|
||||||
background-color:blue;
|
background-color:blue;
|
||||||
}
|
}
|
||||||
|
body.white input[name=cmd] {
|
||||||
|
background-color:black; color:white;
|
||||||
|
width:240px;
|
||||||
|
}
|
||||||
|
body.white input[name=cmd]:hover {
|
||||||
|
background-color:white; color:black;
|
||||||
|
}
|
||||||
|
|
||||||
body.white table {
|
body.white table {
|
||||||
color:black;
|
color:black;
|
||||||
@ -599,7 +596,6 @@ body.mobile fieldset.Header.head {
|
|||||||
width:-webkit-fill-available;
|
width:-webkit-fill-available;
|
||||||
height:2em; font-size:24px;
|
height:2em; font-size:24px;
|
||||||
background-color:#000000b8;
|
background-color:#000000b8;
|
||||||
z-index:10;
|
|
||||||
}
|
}
|
||||||
body.mobile fieldset.Header.head div.output {
|
body.mobile fieldset.Header.head div.output {
|
||||||
height:2em;
|
height:2em;
|
||||||
@ -618,7 +614,6 @@ body.mobile fieldset.River.left {
|
|||||||
background-color:#243950bf;
|
background-color:#243950bf;
|
||||||
min-width:240px; font-size:24px;
|
min-width:240px; font-size:24px;
|
||||||
/* width:-webkit-fill-available; */
|
/* width:-webkit-fill-available; */
|
||||||
z-index:10;
|
|
||||||
}
|
}
|
||||||
body.mobile fieldset.River>div.output div.list div.item {
|
body.mobile fieldset.River>div.output div.list div.item {
|
||||||
font-size:24px;
|
font-size:24px;
|
||||||
@ -635,7 +630,6 @@ body.mobile fieldset.Footer.foot {
|
|||||||
height:64px; font-size:24px;
|
height:64px; font-size:24px;
|
||||||
background-color:#000000b8;
|
background-color:#000000b8;
|
||||||
display:none;
|
display:none;
|
||||||
z-index:10;
|
|
||||||
}
|
}
|
||||||
body.mobile.landscape fieldset.Header.head {
|
body.mobile.landscape fieldset.Header.head {
|
||||||
position:unset;
|
position:unset;
|
||||||
@ -655,4 +649,7 @@ body.mobile>div.carte {
|
|||||||
body.mobile>div.input.login input {
|
body.mobile>div.input.login input {
|
||||||
font-size:24px
|
font-size:24px
|
||||||
}
|
}
|
||||||
|
body.en input[type=button] {
|
||||||
|
letter-spacing:2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Volcanos({name: "chat", panels: [
|
Volcanos({name: "chat", panels: [
|
||||||
{name: "Header", help: "标题栏", pos: chat.HEAD, state: ["time", "username", "avatar"]},
|
{name: "Header", help: "标题栏", pos: chat.HEAD, state: ["time", "usernick", "avatar"]},
|
||||||
{name: "Search", help: "搜索框", pos: chat.AUTO},
|
{name: "Search", help: "搜索框", pos: chat.AUTO},
|
||||||
{name: "River", help: "群聊组", pos: chat.LEFT, action: ["create", "refresh"]},
|
{name: "River", help: "群聊组", pos: chat.LEFT, action: ["create", "refresh"]},
|
||||||
{name: "Action", help: "工作台", pos: chat.MAIN},
|
{name: "Action", help: "工作台", pos: chat.MAIN},
|
||||||
|
@ -11,7 +11,6 @@ fieldset.Action>div.action.tabs {
|
|||||||
display:block; height:28px;
|
display:block; height:28px;
|
||||||
padding:0; margin:0;
|
padding:0; margin:0;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
z-index:10;
|
|
||||||
}
|
}
|
||||||
fieldset.Action>div.action div.item {
|
fieldset.Action>div.action div.item {
|
||||||
padding:4px; margin:0;
|
padding:4px; margin:0;
|
||||||
@ -32,7 +31,6 @@ fieldset.Action div.output fieldset.plugin.fixed {
|
|||||||
margin:0px;
|
margin:0px;
|
||||||
padding:0px;
|
padding:0px;
|
||||||
background-color:black;
|
background-color:black;
|
||||||
z-index:10;
|
|
||||||
height: -webkit-fill-available;
|
height: -webkit-fill-available;
|
||||||
width: -webkit-fill-available;
|
width: -webkit-fill-available;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
@ -47,8 +47,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg)
|
|||||||
list[0] == "help"? can.user.open("/help/"+button+".shy"): can.onaction.layout(can, button)
|
list[0] == "help"? can.user.open("/help/"+button+".shy"): can.onaction.layout(can, button)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_share: function(can, share) {
|
_share: function(can, share) { if (!share) { return }
|
||||||
share && can.run({}, ["_share", share], function(msg) {
|
can.run({}, ["_share", share], function(msg) {
|
||||||
can.user.topic(can, can.user.Search(can, chat.TOPIC)||msg.Option(chat.TOPIC))
|
can.user.topic(can, can.user.Search(can, chat.TOPIC)||msg.Option(chat.TOPIC))
|
||||||
can.user.title(can.user.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
|
can.user.title(can.user.Search(can, chat.TITLE)||msg.Option(chat.TITLE))
|
||||||
can.onaction.layout(can, "auto")
|
can.onaction.layout(can, "auto")
|
||||||
@ -94,12 +94,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
}
|
}
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
},
|
},
|
||||||
onmain: function(can, msg) {
|
onmain: function(can, msg) { can.onimport._share(can, can.user.Search(can, web.SHARE)) },
|
||||||
var cmds = location.pathname.split("/").slice(1); if (cmds[0] == ice.CMD) {
|
|
||||||
can.onappend.plugin(can, {index: cmds[1]}, function(sub) { sub.run = function(event, cmds, cb) {} })
|
|
||||||
}
|
|
||||||
can.onimport._share(can, can.user.Search(can, web.SHARE))
|
|
||||||
},
|
|
||||||
onsize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
onsize: function(can, msg, width, height) { can.Conf({width: width, height: height}) },
|
||||||
onsearch: function(can, msg, word) {
|
onsearch: function(can, msg, word) {
|
||||||
if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) }
|
if (word[0] == "*" || word[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, word) }
|
||||||
@ -116,7 +111,7 @@ Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg,
|
|||||||
|
|
||||||
can.run({}, [river, storm], function(msg) {
|
can.run({}, [river, storm], function(msg) {
|
||||||
if (msg.Length() == 0) { // 添加工具
|
if (msg.Length() == 0) { // 添加工具
|
||||||
can.onengine.signal(can, "onaction_notool", can.request({}, {river: river, storm: storm}))
|
can.onengine.signal(can, "onaction_nostorm", can.request({}, {river: river, storm: storm}))
|
||||||
} else {
|
} else {
|
||||||
can.onimport._init(can, msg)
|
can.onimport._init(can, msg)
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
fieldset.plugin>div.legend {
|
fieldset.panel.cmd>div.output>fieldset.plugin {
|
||||||
|
margin:0; padding:0;
|
||||||
|
}
|
||||||
|
fieldset.panel.cmd>div.output>fieldset.plugin>legend {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
fieldset.panel.cmd>div.output>fieldset.plugin>div.legend {
|
||||||
float:left; padding:0 10px; margin-right:3px;
|
float:left; padding:0 10px; margin-right:3px;
|
||||||
height:25px; font-size:18px;
|
height:25px; font-size:18px;
|
||||||
background-color:darkcyan;
|
background-color:darkcyan;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
}
|
}
|
||||||
fieldset.panel.cmd>div.output>fieldset.plugin>legend {
|
body.white fieldset.panel.cmd>div.output>fieldset.plugin>div.legend {
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
fieldset.panel.cmd>div.output>fieldset.plugin {
|
|
||||||
margin:0; padding:0;
|
|
||||||
}
|
|
||||||
body.white fieldset.plugin>div.legend {
|
|
||||||
background-color:honeydew;
|
background-color:honeydew;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
can.onmotion.float.auto(can, can._output, chat.CARTE)
|
can.onmotion.float.auto(can, can._output, chat.CARTE)
|
||||||
can.base.isFunc(cb) && cb()
|
can.base.isFunc(cb) && cb()
|
||||||
},
|
},
|
||||||
onmain: function(can) { can._names = location.pathname
|
onmain: function(can) { can._names = location.pathname
|
||||||
var msg = can.request({}, {_names: location.pathname})
|
var msg = can.request({}, {_names: location.pathname})
|
||||||
can.Conf(chat.TOOL)? can.core.Next(can.Conf(chat.TOOL), function(line, next) {
|
can.Conf(chat.TOOL)? can.core.Next(can.Conf(chat.TOOL), function(line, next) {
|
||||||
|
@ -10,23 +10,26 @@ fieldset.Footer>div.output>div {
|
|||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
}
|
}
|
||||||
fieldset.Footer>div.output>div:hover {
|
fieldset.Footer>div.output>div:hover {
|
||||||
border-bottom:solid 2px red;
|
border-top:solid 2px red;
|
||||||
background-color:#2e515f;
|
background-color:#2e515f;
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset.Footer>div.output div.title {
|
fieldset.Footer>div.output div.title {
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
fieldset.Footer>div.output div.toast {
|
|
||||||
float:right;
|
|
||||||
background-color:darkcyan;
|
|
||||||
}
|
|
||||||
fieldset.Footer>div.output div.state {
|
fieldset.Footer>div.output div.state {
|
||||||
float:right;
|
float:right;
|
||||||
}
|
}
|
||||||
|
fieldset.Footer>div.output div.toast {
|
||||||
|
float:right; background-color:darkcyan;
|
||||||
|
}
|
||||||
|
fieldset.Footer>div.output div.cmd {
|
||||||
|
float:left; padding:0px;
|
||||||
|
}
|
||||||
|
|
||||||
fieldset.Footer>div.output input[name=cmd] {
|
fieldset.Footer>div.output input[name=cmd] {
|
||||||
width:120px; height:25px;
|
width:120px; height:25px;
|
||||||
|
border-radius:0;
|
||||||
}
|
}
|
||||||
fieldset.Footer>div.output input[name=cmd]:focus {
|
fieldset.Footer>div.output input[name=cmd]:focus {
|
||||||
width:320px;
|
width:320px;
|
||||||
|
@ -2,8 +2,8 @@ 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.onimport._cli(can, msg, target)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) {
|
_title: function(can, msg, target) {
|
||||||
@ -17,50 +17,50 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
{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.onaction._cmd(can)
|
can.show = can.show? (can.page.Remove(can, can.show), null): can.onaction._cmd(can)
|
||||||
can.page.Modify(can, can.show, {style: {left: "", top: "", right: 0, bottom: 32}})
|
can.page.Modify(can, can.show, {style: {left: "", top: "", right: 0, bottom: can.onexport.height(can)}})
|
||||||
}}])
|
}}])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_toast: function(can, msg, target) {
|
_toast: function(can, msg, target) {
|
||||||
can.toast = can.page.Append(can, target, [{view: chat.TOAST, onclick: function(event) {
|
can.toast = can.page.Append(can, target, [{view: chat.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
|
||||||
can.page.Modify(can, can.show, {style: {left: "", top: "", right: 0, bottom: 32}})
|
can.page.Modify(can, can.show, {style: {left: "", top: "", right: 0, bottom: can.onexport.height(can)}})
|
||||||
}}]).first
|
}}]).first
|
||||||
},
|
},
|
||||||
_cli: function(can, msg, target) {
|
_cli: function(can, msg, target) {
|
||||||
can.page.Append(can, target, [{input: ["cmd", function(event) {
|
can.onappend.input(can, {type: html.TEXT, name: "cmd", onkeydown: function(event) {
|
||||||
can.onkeypop.input(event, can); if (event.key != "Enter") { return }
|
can.onkeypop.input(event, can); if (event.key != lang.ENTER) { return }
|
||||||
switch (event.target.value) {
|
switch (event.target.value) {
|
||||||
case cli.CLOSE: can.cli && can.cli.close(); break
|
|
||||||
case cli.CLEAR: can.cli && can.cli.close(); break
|
case cli.CLEAR: can.cli && can.cli.close(); break
|
||||||
|
case cli.CLOSE: can.cli && can.cli.close(); break
|
||||||
default:
|
default:
|
||||||
can.run(event, [cli.RUN].concat(can.core.Split(event.target.value, ice.SP)), function(msg) {
|
can.run(event, [cli.RUN].concat(can.core.Split(event.target.value, ice.SP)), function(msg) {
|
||||||
can.cli && can.cli.close()
|
can.cli && can.cli.close()
|
||||||
can.cli = can.onappend.float(can, msg, function(value, key, index, line, list) {
|
can.cli = can.onappend.float(can, msg, function(value, key, index, line, list) {
|
||||||
|
|
||||||
}), can.page.Modify(can, can.cli.first, {style: {bottom: 32, top: ""}})
|
}), can.page.Modify(can, can.cli.first, {style: {bottom: can.onexport.height(can), top: ""}})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}]}])
|
}}, "", target, "title cmd")
|
||||||
},
|
},
|
||||||
|
|
||||||
toast: function(can, msg, title, content, fileline, time) { can._toast = can._toast||can.request()
|
ncmd: function(can, msg, _follow, _cmds) { var NCMD = "ncmd"; can._cmds = can._cmds||can.request()
|
||||||
can.page.Modify(can, can.toast, [time.split(ice.SP).pop(), title, content].join(ice.SP))
|
can._cmds.Push({time: can.base.Time(), follow: _follow, cmds: _cmds})
|
||||||
can._toast.Push({time: time, fileline: fileline, title: title, content: content})
|
|
||||||
},
|
|
||||||
ncmd: function(can, msg, follow, cmds) { var NCMD = "ncmd"; can._cmds = can._cmds || can.request()
|
|
||||||
can._cmds.Push({time: can.base.Time(), follow: follow, cmds: cmds})
|
|
||||||
can.page.Select(can, can._output, can.core.Keys(html.SPAN, NCMD), function(item) {
|
can.page.Select(can, can._output, can.core.Keys(html.SPAN, NCMD), function(item) {
|
||||||
item.innerHTML = can.Conf(NCMD, parseInt(can.Conf(NCMD)||"0")+1+"")+""
|
item.innerHTML = can.Conf(NCMD, parseInt(can.Conf(NCMD)||"0")+1+"")+""
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
toast: function(can, msg, title, content, fileline, time) { can._toast = can._toast||can.request()
|
||||||
|
can.page.Modify(can, can.toast, [time.split(ice.SP).pop(), title, content].join(ice.SP))
|
||||||
|
can._toast.Push({time: time, fileline: fileline, title: title, content: content})
|
||||||
|
},
|
||||||
})
|
})
|
||||||
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) {
|
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) })
|
onremote: function(can, msg) { can.core.CallFunc(can.onimport.ncmd, {can: can, msg: msg}) },
|
||||||
},
|
ontoast: function(can, msg) { can.core.CallFunc(can.onimport.toast, {can: can, msg: msg}) },
|
||||||
|
|
||||||
_cmd: function(can) {
|
_cmd: function(can) {
|
||||||
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
return can.onappend.float(can, can._cmds, function(value, key, index, line, list) {
|
||||||
@ -72,10 +72,10 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, msg,
|
|||||||
case "web.wiki.word": cmds = cmds.slice(5); break
|
case "web.wiki.word": cmds = cmds.slice(5); break
|
||||||
}
|
}
|
||||||
|
|
||||||
can.search({}, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
can.get("Action", "size", function(msg, top, left, width, height) {
|
||||||
can.onappend.plugin(can, {index: cmds[0], args: cmds.slice(1), height: height-100, width: width}, function(sub) {
|
can.onappend.plugin(can, {index: cmds[0], args: cmds.slice(1), height: height-100, width: width}, function(sub) {
|
||||||
sub.run = function(event, cmds, cb) {
|
sub.run = function(event, cmd, cb) {
|
||||||
can.run(event, can.misc.Concat([ctx.ACTION, cli.RUN, cmds[0]], cmds), cb)
|
can.run(event, can.misc.Concat([ctx.ACTION, cli.RUN, cmds[0]], cmd), cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
can.page.Modify(can, sub._target, {style: {top: top+100, left: left}})
|
can.page.Modify(can, sub._target, {style: {top: top+100, left: left}})
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
fieldset.Header {
|
fieldset.Header {
|
||||||
height:32px; padding:0 5px;
|
height:32px; padding:0 5px;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
z-index:10;
|
|
||||||
}
|
}
|
||||||
fieldset.Header>div.output {
|
fieldset.Header>div.output {
|
||||||
z-index:10;
|
height:32px; overflow:hidden;
|
||||||
}
|
}
|
||||||
fieldset.Header>div.output>div {
|
fieldset.Header>div.output>div {
|
||||||
height:22px; padding:5px;
|
height:22px; padding:5px;
|
||||||
@ -18,18 +17,19 @@ fieldset.Header>div.output>div:hover {
|
|||||||
fieldset.Header>div.output>div.title {
|
fieldset.Header>div.output>div.title {
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
fieldset.Header>div.output>div.search {
|
|
||||||
float:left; margin-left:20px;
|
|
||||||
}
|
|
||||||
fieldset.Header>div.output>div.search>input {
|
|
||||||
height:25px; margin-top:-5px;
|
|
||||||
}
|
|
||||||
fieldset.Header>div.output>div.state {
|
fieldset.Header>div.output>div.state {
|
||||||
float:right;
|
float:right;
|
||||||
}
|
}
|
||||||
fieldset.Header>div.output>div.state.avatar>img {
|
fieldset.Header>div.output>div.state.avatar>img {
|
||||||
height:1.4em;
|
height:1.4em;
|
||||||
}
|
}
|
||||||
|
fieldset.Header>div.output>div.search {
|
||||||
|
float:left; margin-left:20px;
|
||||||
|
}
|
||||||
|
fieldset.Header>div.output>div.search>input {
|
||||||
|
height:25px; margin-top:-5px;
|
||||||
|
border-radius:0;
|
||||||
|
}
|
||||||
|
|
||||||
fieldset.Header>div.output div.menu {
|
fieldset.Header>div.output div.menu {
|
||||||
height:21px; padding:5px;
|
height:21px; padding:5px;
|
||||||
@ -40,7 +40,3 @@ fieldset.Header>div.output div.menu:hover {
|
|||||||
border-bottom:solid 2px red;
|
border-bottom:solid 2px red;
|
||||||
background-color:#2e515f;
|
background-color:#2e515f;
|
||||||
}
|
}
|
||||||
fieldset.Header>div.output input[type=text] {
|
|
||||||
border-radius:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
132
panel/header.js
132
panel/header.js
@ -1,7 +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(aaa.USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNAME))
|
can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNICK))
|
||||||
can.Conf(aaa.BACKGROUND, msg.Option(aaa.BACKGROUND))
|
|
||||||
can.Conf(aaa.AVATAR, msg.Option(aaa.AVATAR))
|
|
||||||
|
|
||||||
can.onmotion.clear(can)
|
can.onmotion.clear(can)
|
||||||
can.onimport._agent(can, msg, target)
|
can.onimport._agent(can, msg, target)
|
||||||
@ -24,11 +22,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
} else if (can.user.isExtension) {
|
} else if (can.user.isExtension) {
|
||||||
can.onaction.River(can)
|
can.onaction.River(can)
|
||||||
}
|
}
|
||||||
can.user.isWeiXin && can.onimport._weixin(can)
|
can.run({}, [chat.AGENT], function(msg) { if (!msg.Option(ssh.SCRIPT)) { return }
|
||||||
|
can.require(can.base.Obj(msg.Option(ssh.SCRIPT)), function(can) { can.onaction.source(can, msg) })
|
||||||
|
})
|
||||||
},
|
},
|
||||||
_grant: function(can, msg, target) {
|
_grant: function(can, msg, target) {
|
||||||
if (can.user.Search(can, chat.GRANT)) {
|
if (can.user.Search(can, chat.GRANT)) {
|
||||||
if (can.user.confirm(chat.GRANT+" "+can.user.Search(can, chat.GRANT))) {
|
if (can.user.confirm(chat.GRANT+ice.SP+can.user.Search(can, chat.GRANT))) {
|
||||||
can.run(event, [ctx.ACTION, chat.GRANT, web.SPACE, can.user.Search(can, chat.GRANT)])
|
can.run(event, [ctx.ACTION, chat.GRANT, web.SPACE, can.user.Search(can, chat.GRANT)])
|
||||||
}
|
}
|
||||||
can.user.Search(can, chat.GRANT, "")
|
can.user.Search(can, chat.GRANT, "")
|
||||||
@ -43,93 +43,58 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
_state: function(can, msg, target) {
|
_state: function(can, msg, target) {
|
||||||
can.core.List(can.base.Obj(msg.Option(chat.STATE)||can.Conf(chat.STATE), [kit.MDB_TIME, aaa.USERNAME]), function(item) {
|
can.core.List(can.base.Obj(msg.Option(chat.STATE)||can.Conf(chat.STATE), [kit.MDB_TIME, aaa.USERNICK]), function(item) {
|
||||||
if (item == aaa.AVATAR ) {
|
if (item == aaa.AVATAR ) { if (can.user.isLocalFile) { return }
|
||||||
if (can.user.isExtension || can.user.isLocalFile) { return }
|
|
||||||
can.page.Append(can, target, [{view: can.base.join([chat.STATE, item]), list: [{img: ice.SP}], onmouseenter: function(event) {
|
can.page.Append(can, target, [{view: can.base.join([chat.STATE, item]), list: [{img: ice.SP}], 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, "/share/local/avatar", 160)])
|
||||||
}}])
|
}}]); return
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
can.page.Append(can, target, [{view: [can.base.join([chat.STATE, item]), html.DIV, (can.Conf(item)||"").slice(0, 10)], onmouseenter: function(event) {
|
can.page.Append(can, target, [{view: [can.base.join([chat.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 == kit.MDB_TIME && can.onimport._time(can, target) }}])
|
||||||
item == kit.MDB_TIME && can.onimport._time(can, target)
|
|
||||||
}}])
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_search: function(can, msg, target) {
|
_search: function(can, msg, target) {
|
||||||
var ui = can.page.Append(can, target, [{view: mdb.SEARCH, list: [{type: html.INPUT, data: {type: html.TEXT, placeholder: mdb.SEARCH}, onkeydown: function(event) {
|
var ui = can.onappend.input(can, {type: html.TEXT, name: mdb.SEARCH, onkeydown: function(event) {
|
||||||
can.onkeypop.input(event, can); switch (event.key) {
|
can.onkeypop.input(event, can); switch (event.key) {
|
||||||
case "Enter": can.search(event, ["Search.onimport.select", "*", event.target.value]); break
|
case lang.ENTER: can.onengine.signal(can, "onopensearch", can.request(event, {type: "*", word: event.target.value}))
|
||||||
}
|
}
|
||||||
}}] }])
|
}}, "", target, "title search").parentNode
|
||||||
can.user.isMobile && can.page.Modify(can, ui.first, {style: {float: "right"}})
|
can.user.isMobile && can.page.Modify(can, ui, {style: {float: "right"}})
|
||||||
},
|
},
|
||||||
_background: function(can, msg) {
|
_background: function(can, msg) { if (can.user.isLocalFile) { return }
|
||||||
if (can.user.isExtension || can.user.isLocalFile) { return }
|
|
||||||
// can.onlayout.background(can, msg.Option(aaa.BACKGROUND), document.body)
|
|
||||||
msg.Option(aaa.BACKGROUND) && can.onlayout.background(can, "/share/local/background", document.body)
|
msg.Option(aaa.BACKGROUND) && can.onlayout.background(can, "/share/local/background", document.body)
|
||||||
},
|
},
|
||||||
_avatar: function(can, msg) {
|
_avatar: function(can, msg) { if (can.user.isLocalFile) { return }
|
||||||
if (can.user.isExtension || can.user.isLocalFile) { return }
|
|
||||||
// can.page.Modify(can, "div.output div.state.avatar>img", {src: can.Conf(aaa.AVATAR, msg.Option(aaa.AVATAR))})
|
|
||||||
msg.Option(aaa.AVATAR) && can.page.Modify(can, "div.output div.state.avatar>img", {src: "/share/local/avatar"})
|
msg.Option(aaa.AVATAR) && can.page.Modify(can, "div.output div.state.avatar>img", {src: "/share/local/avatar"})
|
||||||
},
|
},
|
||||||
_menus: function(can, msg, target) {
|
_menus: function(can, msg, target) {
|
||||||
var menus = can.base.Obj(msg.Option(chat.MENUS)||can.Conf(chat.MENUS), [chat.HEADER, ["setting", chat.BLACK, chat.WHITE, chat.PRINT]])
|
var menus = can.base.Obj(msg.Option(chat.MENUS)||can.Conf(chat.MENUS), [chat.HEADER, ["setting", chat.BLACK, chat.WHITE, chat.PRINT]])
|
||||||
can.onimport.menu(can, can.user.mod.isPod||can.user.isMobile||can.user.isExtension? [chat.HEADER, chat.RIVER]: menus, function(event, item) {
|
can.onimport.menu(can, can.user.mod.isPod||can.user.isMobile||can.user.isExtension? [chat.HEADER, chat.RIVER]: menus, function(event, button) {
|
||||||
can.core.CallFunc(can.onaction[item]||function(event, can) {
|
can.core.CallFunc(can.onaction[button]||function(event, can) {
|
||||||
can.run(event, [item], function(msg) { can.user.toast(can, "执行成功", can.user.trans(can, item)) })
|
can.run(event, [button], function(msg) { can.user.toast(can, "执行成功", can.user.trans(can, button)) })
|
||||||
}, {event: event, can: can, button: item})
|
}, {event: event, can: can, button: button})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
_weixin: function(can, msg) { can.run({}, [ctx.ACTION, chat.AGENT], function(msg) {
|
|
||||||
can.require(can.base.Obj(msg.Option(ssh.SCRIPT)), function(can) {
|
|
||||||
wx.config({debug: msg.Option("debug") == ice.TRUE,
|
|
||||||
appId: msg.Option("appid"), signature: msg.Option("signature"),
|
|
||||||
nonceStr: msg.Option("noncestr"), timestamp: msg.Option("timestamp"),
|
|
||||||
|
|
||||||
jsApiList: can.core.Item({
|
|
||||||
scanQRCode: function(cb) { wx.scanQRCode({needResult: cb? 1: 0, scanType: ["qrCode","barCode"], success: function (res) {
|
|
||||||
can.base.isFunc(cb) && cb(res.resultStr)
|
|
||||||
} }) },
|
|
||||||
getLocation: function(cb) { wx.getLocation({type: "gcj02", success: function (res) {
|
|
||||||
can.base.isFunc(cb) && cb({type: "gcj02", name: "当前位置", text: "当前位置", latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000) })
|
|
||||||
} }) },
|
|
||||||
openLocation: function(msg) { wx.openLocation({
|
|
||||||
latitude: parseInt(msg.Option("latitude"))/100000,
|
|
||||||
longitude: parseInt(msg.Option("longitude"))/100000,
|
|
||||||
name: msg.Option(kit.MDB_NAME), address: msg.Option(kit.MDB_TEXT),
|
|
||||||
scale: msg.Option("scale")||14, infoUrl: msg.Option(kit.MDB_LINK),
|
|
||||||
}) },
|
|
||||||
chooseImage: function(cb, count) { wx.chooseImage({count: count||9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success: function (res) {
|
|
||||||
can.base.isFunc(cb) && cb(res.localIds)
|
|
||||||
} }) },
|
|
||||||
}, function(key, value) { return can.user.agent[key] = value, key }),
|
|
||||||
})
|
|
||||||
wx.ready(function() {
|
|
||||||
can.misc.Log("ready")
|
|
||||||
})
|
|
||||||
wx.error(function(err) {
|
|
||||||
can.misc.Log("what", err)
|
|
||||||
})
|
|
||||||
}) })
|
|
||||||
},
|
|
||||||
_time: function(can, target) {
|
_time: function(can, target) {
|
||||||
can.core.Timer({interval: 500}, function() { can.onimport.time(can, target) })
|
can.core.Timer({interval: 500}, function() { can.onimport.time(can, target) })
|
||||||
can.onappend.figure(can, {style: {"min-width": 306}, action: "date"}, target, function(sub) {
|
can.onappend.figure(can, {action: "date", style: {"min-width": 306}}, target, function(sub) {
|
||||||
can.search({}, ["Action.onexport.size"], function(msg, top) {
|
can.get("Action", "size", function(msg, top) {
|
||||||
can.page.Modify(can, sub._target, {style: {top: top, left: window.innerWidth-sub._target.offsetWidth}})
|
can.page.Modify(can, sub._target, {style: {top: top, left: window.innerWidth-sub._target.offsetWidth}})
|
||||||
})
|
})
|
||||||
}), target.onmouseenter = function() { target.click() }
|
}), target.onmouseenter = target.click
|
||||||
},
|
},
|
||||||
|
|
||||||
time: function(can, target) { can.onlayout.topic(can)
|
time: function(can, target) { can.onlayout.topic(can)
|
||||||
target.innerHTML = can.user.time(can, null, "%w %H:%M:%S")
|
target.innerHTML = can.user.time(can, null, "%w %H:%M:%S")
|
||||||
},
|
},
|
||||||
|
background: function(event, can, url) { if (can.user.isLocalFile) { return }
|
||||||
|
can.run(event, [ctx.ACTION, aaa.BACKGROUND, url], function(msg) { can.onimport._background(can, msg) })
|
||||||
|
},
|
||||||
|
avatar: function(event, can, url) { if (can.user.isLocalFile) { return }
|
||||||
|
can.run(event, [ctx.ACTION, aaa.AVATAR, url], function(msg) { can.onimport._avatar(can, msg) })
|
||||||
|
},
|
||||||
menu: function(can, cmds, cb) {
|
menu: function(can, cmds, cb) {
|
||||||
return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(cmds.slice(1), function(item) {
|
return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(cmds.slice(1), function(item) {
|
||||||
if (can.base.isString(item)) {
|
if (can.base.isString(item)) {
|
||||||
@ -137,7 +102,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.base.isFunc(cb) && cb(event, item, cmds)
|
can.base.isFunc(cb) && cb(event, item, cmds)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
} else if (item.length > 0) {
|
} else if (can.base.isArray(item)) {
|
||||||
return {view: [html.MENU, html.DIV, can.user.trans(can, item[0])], onmouseenter: function(event) {
|
return {view: [html.MENU, html.DIV, can.user.trans(can, item[0])], onmouseenter: function(event) {
|
||||||
can.onaction.carte(event, can, item.slice(1), function(event, button) {
|
can.onaction.carte(event, can, item.slice(1), function(event, button) {
|
||||||
can.base.isFunc(cb) && cb(event, button, item)
|
can.base.isFunc(cb) && cb(event, button, item)
|
||||||
@ -149,16 +114,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
}
|
}
|
||||||
}) }]).first
|
}) }]).first
|
||||||
},
|
},
|
||||||
avatar: function(event, can, url) {
|
|
||||||
!can.user.isLocalFile && can.run(event, [ctx.ACTION, aaa.AVATAR, url], function(msg) {
|
|
||||||
can.onimport._avatar(can, msg)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
background: function(event, can, url) {
|
|
||||||
!can.user.isLocalFile && can.run(event, [ctx.ACTION, aaa.BACKGROUND, url], function(msg) {
|
|
||||||
can.onimport._background(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()
|
||||||
@ -182,6 +137,7 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
"print": "打印主题",
|
"print": "打印主题",
|
||||||
|
|
||||||
"shareuser": "共享用户",
|
"shareuser": "共享用户",
|
||||||
|
"setnick": "设置昵称",
|
||||||
"language": "语言地区",
|
"language": "语言地区",
|
||||||
"chinese": "中文",
|
"chinese": "中文",
|
||||||
"clear": "清除背景",
|
"clear": "清除背景",
|
||||||
@ -196,13 +152,12 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
// 登录检查
|
// 登录检查
|
||||||
can.user.isLocalFile? init(): can.run({}, [chat.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.USERNICK, msg.Option(ice.MSG_USERNICK))? init():
|
||||||
msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, init, msg.Option(aaa.LOGIN))
|
msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)):
|
||||||
|
can.user.login(can, init, msg.Option(aaa.LOGIN))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
onstorm_select: function(can, msg, river, storm) {
|
onstorm_select: function(can, msg, river, storm) { can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm) },
|
||||||
can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)
|
|
||||||
},
|
|
||||||
|
|
||||||
title: function(event, can) {
|
title: function(event, can) {
|
||||||
var args = {}; can.core.List([chat.TITLE, chat.TOPIC, chat.LAYOUT], function(key) {
|
var args = {}; can.core.List([chat.TITLE, chat.TOPIC, chat.LAYOUT], function(key) {
|
||||||
@ -235,26 +190,25 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
carte: function(event, can, list, cb) { can.user.carte(event, can, can.onaction, list, cb) },
|
carte: function(event, can, list, cb) { can.user.carte(event, can, can.onaction, list, cb) },
|
||||||
share: function(event, can, arg) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE].concat(arg||[])) },
|
share: function(event, can, arg) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE].concat(arg||[])) },
|
||||||
|
|
||||||
username: function(event, can) {
|
usernick: function(event, can) {
|
||||||
can.onaction.carte(event, can, ["shareuser", aaa.USERNICK, [aaa.LANGUAGE, aaa.ENGLISH, aaa.CHINESE], "clear", aaa.LOGOUT])
|
can.onaction.carte(event, can, ["shareuser", "setnick", [aaa.LANGUAGE, aaa.CHINESE, aaa.ENGLISH], cli.CLEAR, aaa.LOGOUT])
|
||||||
},
|
},
|
||||||
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, kit.MDB_TYPE, aaa.LOGIN]) },
|
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, kit.MDB_TYPE, aaa.LOGIN]) },
|
||||||
usernick: function(event, can) {
|
setnick: function(event, can) {
|
||||||
can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNAME)}], function(ev, button, data, list, args) {
|
can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(ev, button, data, list, args) {
|
||||||
can.run(event, [aaa.USERNICK, list[0]], function(msg) {
|
can.run(event, [aaa.USERNICK, list[0]], function(msg) {
|
||||||
can.page.Select(can, can._output, can.core.Keys(html.DIV, aaa.USERNAME), function(item) {
|
can.page.Select(can, can._output, can.core.Keys(html.DIV, aaa.USERNICK), function(item) {
|
||||||
can.page.Modify(can, item, can.Conf(aaa.USERNAME, list[0]))
|
can.page.Modify(can, item, can.Conf(aaa.USERNICK, list[0]))
|
||||||
}), can.user.toast(can, "修改成功")
|
}), can.user.toast(can, "修改成功")
|
||||||
}, true)
|
}, true)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
english: function(event, can) { can.user.Search(can, aaa.LANGUAGE, "en") },
|
|
||||||
chinese: function(event, can) { can.user.Search(can, aaa.LANGUAGE, "zh") },
|
chinese: function(event, can) { can.user.Search(can, aaa.LANGUAGE, "zh") },
|
||||||
clear: function(event, can, button) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, "") },
|
english: function(event, can) { can.user.Search(can, aaa.LANGUAGE, "en") },
|
||||||
|
clear: function(event, can) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, ""), can.user.reload(true) },
|
||||||
logout: function(event, can) { can.user.logout(can) },
|
logout: function(event, can) { can.user.logout(can) },
|
||||||
|
|
||||||
River: function(can) { can.search({}, ["River.onmotion.toggle"]) },
|
River: function(can) { can.search({}, ["River.onmotion.toggle"]) },
|
||||||
|
@ -25,7 +25,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.core.CallFunc([can.ondetail, button], [event, can, button, can.Conf(chat.RIVER), can.Conf(chat.STORM)])
|
can.core.CallFunc([can.ondetail, button], [event, can, button, can.Conf(chat.RIVER), can.Conf(chat.STORM)])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_carte: function(can, list, river, storm) { if (can.user.mod.isPod||can.user.isMobile) { return }
|
_carte: function(can, list, river, storm) { if (can.user.isMobile) { return }
|
||||||
can.onaction.carte(event, can, list, function(event, button, module) {
|
can.onaction.carte(event, can, list, function(event, button, module) {
|
||||||
module[button](event, can, button, river, storm)
|
module[button](event, can, button, river, storm)
|
||||||
})
|
})
|
||||||
@ -58,7 +58,7 @@ Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, c
|
|||||||
var list = can._root.river
|
var list = can._root.river
|
||||||
cmds.length == 0 && can.core.Item(list, function(key, value) {
|
cmds.length == 0 && can.core.Item(list, function(key, value) {
|
||||||
msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表
|
msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表
|
||||||
}); if (cmds.length != 1 && cmds[1] != chat.TOOL) { return false }
|
}); if (cmds.length != 1 && cmds[1] != chat.STORM) { return false }
|
||||||
|
|
||||||
var river = list[cmds[0]]; if (!river) { return false }
|
var river = list[cmds[0]]; if (!river) { return false }
|
||||||
can.core.Item(river.storm, function(key, value) {
|
can.core.Item(river.storm, function(key, value) {
|
||||||
@ -76,15 +76,14 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
onsearch: function(can, msg, word) {
|
onsearch: function(can, msg, word) {
|
||||||
if (word[0] == "*" || word[0] == chat.STORM) { can.onexport.storm(can, msg, word) }
|
if (word[0] == "*" || word[0] == chat.STORM) { can.onexport.storm(can, msg, word) }
|
||||||
},
|
},
|
||||||
onstorm_select: function(can, msg, river, storm) {
|
onstorm_select: function(can, msg, river, storm) { var args = {river: river, storm: storm}
|
||||||
var args = {river: river, storm: storm}
|
|
||||||
if (can.user.isExtension) { localStorage.setItem("args", JSON.stringify(args)) }
|
if (can.user.isExtension) { localStorage.setItem("args", JSON.stringify(args)) }
|
||||||
},
|
},
|
||||||
onaction_touch: function(can, msg) {
|
onaction_touch: function(can, msg) {
|
||||||
can.onmotion.float.del(can, chat.CARTE)
|
can.onmotion.float.del(can, chat.CARTE)
|
||||||
can.user.isMobile && can.onmotion.hidden(can)
|
can.user.isMobile && can.onmotion.hidden(can)
|
||||||
},
|
},
|
||||||
onaction_notool: function(can, msg, river, storm) {
|
onaction_nostorm: function(can, msg, river, storm) {
|
||||||
can.ondetail["添加工具"](msg._event, can, "添加工具", river, storm)
|
can.ondetail["添加工具"](msg._event, can, "添加工具", river, storm)
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -99,7 +98,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
can.onmotion.select(can, can._output, "div.item", can.river_list[river])
|
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) }
|
var list = can.sublist[river]; if (list) { return can.onmotion.toggle(can, list) }
|
||||||
|
|
||||||
can.run({}, [river, chat.TOOL], function(msg) {
|
can.run({}, [river, chat.STORM], function(msg) {
|
||||||
var select = 0; list = can.page.Append(can, can._output, [{view: html.LIST, list: msg.Table(function(item, index) {
|
var select = 0; list = can.page.Append(can, can._output, [{view: html.LIST, list: msg.Table(function(item, index) {
|
||||||
river == can._main_river && item.hash == can._main_storm && (select = index)
|
river == can._main_river && item.hash == can._main_storm && (select = index)
|
||||||
return can.onimport._storm(can, item, river)
|
return can.onimport._storm(can, item, river)
|
||||||
@ -131,10 +130,8 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
refresh: function(event, can) {
|
refresh: function(event, can) {
|
||||||
var args = {
|
var args = {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM),
|
||||||
river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM),
|
topic: can.get("Header", "topic"), layout: can.get("Action", "layout"),
|
||||||
topic: can.search(event, ["Header.onexport.topic"]),
|
|
||||||
layout: can.search(event, ["Action.onexport.layout"]),
|
|
||||||
}
|
}
|
||||||
if (can.user.isExtension) { localStorage.setItem("args", JSON.stringify(args)) }
|
if (can.user.isExtension) { localStorage.setItem("args", JSON.stringify(args)) }
|
||||||
can.user.Search(can, args)
|
can.user.Search(can, args)
|
||||||
@ -164,7 +161,7 @@ Volcanos("ondetail", {help: "菜单交互",
|
|||||||
},
|
},
|
||||||
"添加工具": function(event, can, button, river, storm) {
|
"添加工具": function(event, can, button, river, storm) {
|
||||||
can.user.select(event, can, ctx.COMMAND, "context,command", function(item, next) {
|
can.user.select(event, can, ctx.COMMAND, "context,command", function(item, next) {
|
||||||
can.run({}, [river, chat.TOOL, ctx.ACTION, mdb.INSERT, kit.MDB_HASH, storm].concat([ice.POD, "", ice.CTX, item[0], ice.CMD, item[1]]), function(msg) {
|
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.INSERT, kit.MDB_HASH, storm].concat([ice.POD, "", ice.CTX, item[0], ice.CMD, item[1]]), function(msg) {
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
}, function() {
|
}, function() {
|
||||||
@ -229,20 +226,20 @@ Volcanos("ondetail", {help: "菜单交互",
|
|||||||
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})
|
||||||
var toast = can.user.toast(can, (index+1)+"/"+array.length, "保存参数", 10000, (index+1)/array.length)
|
var toast = can.user.toast(can, (index+1)+"/"+array.length, "保存参数", 10000, (index+1)/array.length)
|
||||||
can.run(msg._event, [river, chat.TOOL, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) {
|
can.run(msg._event, [river, chat.STORM, ctx.ACTION, mdb.MODIFY, ice.ARG, item.dataset.args], function(msg) {
|
||||||
toast.close(), next()
|
toast.close(), next()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
"重命名应用": function(event, can, button, river, storm) {
|
"重命名应用": function(event, can, button, river, storm) {
|
||||||
can.user.input(event, can, [kit.MDB_NAME], function(ev, button, meta, list, args) {
|
can.user.input(event, can, [kit.MDB_NAME], function(ev, button, meta, list, args) {
|
||||||
can.run(can.request(event, {hash: storm})._event, [river, chat.TOOL, ctx.ACTION, mdb.MODIFY].concat(args), function(msg) {
|
can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.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) {
|
||||||
can.run(can.request(event, {hash: storm})._event, [river, chat.TOOL, ctx.ACTION, mdb.REMOVE], function(msg) {
|
can.run(can.request(event, {hash: storm})._event, [river, chat.STORM, ctx.ACTION, mdb.REMOVE], function(msg) {
|
||||||
can.user.Search(can, {river: river})
|
can.user.Search(can, {river: river})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -254,7 +251,7 @@ Volcanos("ondetail", {help: "菜单交互",
|
|||||||
{name: kit.MDB_TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
|
{name: kit.MDB_TYPE, values: [chat.PUBLIC, chat.PROTECTED, chat.PRIVATE], _trans: "类型"},
|
||||||
{name: kit.MDB_NAME, value: "hi", _trans: "名称"}, {name: kit.MDB_TEXT, value: "hello", _trans: "简介"},
|
{name: kit.MDB_NAME, value: "hi", _trans: "名称"}, {name: kit.MDB_TEXT, value: "hello", _trans: "简介"},
|
||||||
], function(event, button, meta, list, args) {
|
], function(event, button, meta, list, args) {
|
||||||
can.run({}, [river, chat.TOOL, ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
|
can.run({}, [river, chat.STORM, ctx.ACTION, mdb.CREATE].concat(args), function(msg) {
|
||||||
can.user.Search(can, {river: river, storm: msg.Result()})
|
can.user.Search(can, {river: river, storm: msg.Result()})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
fieldset.Search {
|
fieldset.Search {
|
||||||
|
z-index:10;
|
||||||
background:#041a25bd; padding:10px;
|
background:#041a25bd; padding:10px;
|
||||||
position:fixed; z-index:20;
|
position:fixed;
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
body.white fieldset.Search table {
|
body.white fieldset.Search table {
|
||||||
|
@ -14,17 +14,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
var cb = can.onaction[cmds[1]]; if (cb) { cb({}, can); return }
|
var cb = can.onaction[cmds[1]]; if (cb) { cb({}, can); return }
|
||||||
|
|
||||||
var res = can.request({}, {
|
var res = can.request({}, {
|
||||||
word: cmds,
|
word: cmds, fields: fields.join(","), sort: msg.Option("sort"),
|
||||||
fields: fields.join(","),
|
river: msg.Option(chat.RIVER), index: msg.Option("index"),
|
||||||
sort: msg.Option("sort"),
|
|
||||||
index: msg.Option("index"),
|
|
||||||
river: msg.Option("river"),
|
|
||||||
})
|
})
|
||||||
|
|
||||||
can.onengine.signal(can, chat.ONSEARCH, res)
|
can.onengine.signal(can, chat.ONSEARCH, res)
|
||||||
can.run(res._event, cmds, function(res) { can.onimport._init(can, res, fields) })
|
can.run(res._event, cmds, function(res) { can.onimport._init(can, res, fields) })
|
||||||
can.onmotion.show(can), can.ui.input.focus()
|
can.onmotion.show(can), can.ui.input.focus(), can.ui.word.setSelectionRange(0, -1)
|
||||||
can.ui.word.setSelectionRange(0, -1)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
select: function(can, msg, cmds, cb) { can.ui.word.value = cmds[1]
|
select: function(can, msg, cmds, cb) { can.ui.word.value = cmds[1]
|
||||||
@ -37,10 +33,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
can.onimport._word(can, msg, cmds, fields)
|
can.onimport._word(can, msg, cmds, fields)
|
||||||
}, can.onimport._word(can, msg, cmds, fields)
|
}, can.onimport._word(can, msg, cmds, fields)
|
||||||
|
|
||||||
can.search(event, ["Action.onexport.size"], function(msg, top, left, width, height) {
|
can.get("Action", "size", function(msg, top, left, width, height) {
|
||||||
can.page.Modify(can, can._output, {style: {"max-width": width, "max-height": height-75}})
|
can.page.Modify(can, can._output, {style: {"max-width": width, "max-height": height-75}})
|
||||||
can.page.Modify(can, can._target, {style: {top: top, left: left}})
|
can.page.Modify(can, can._target, {style: {top: top, left: left}})
|
||||||
} )
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DONE], _init: function(can, meta, list, cb, target) {
|
Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DONE], _init: function(can, meta, list, cb, target) {
|
||||||
@ -50,9 +46,9 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
|
|||||||
can.onappend._action(can, can.Conf(html.ACTION)||can.onaction.list)
|
can.onappend._action(can, can.Conf(html.ACTION)||can.onaction.list)
|
||||||
can.ui = can.page.Append(can, can._output, [
|
can.ui = can.page.Append(can, can._output, [
|
||||||
{input: ["word", function(event) { can.onkeypop.input(event, can)
|
{input: ["word", function(event) { can.onkeypop.input(event, can)
|
||||||
if (event.key == "Escape") { can.onmotion.hide(can) }
|
if (event.key == lang.ESCAPE) { can.onmotion.hide(can) }
|
||||||
|
|
||||||
if (event.key == "Enter") { event.stopPropagation(), event.preventDefault()
|
if (event.key == lang.ENTER) { event.stopPropagation(), event.preventDefault()
|
||||||
if (event.shiftKey) { var first = can.page.Select(can, can.ui.content, html.TR)[1]
|
if (event.shiftKey) { var first = can.page.Select(can, can.ui.content, html.TR)[1]
|
||||||
return can.onaction[can.type == "*"? chat.PLUGIN: html.SELECT](event, can, first.dataset.index)
|
return can.onaction[can.type == "*"? chat.PLUGIN: html.SELECT](event, can, first.dataset.index)
|
||||||
}
|
}
|
||||||
@ -60,12 +56,14 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
|
|||||||
can.input(event, event.target.value)
|
can.input(event, event.target.value)
|
||||||
}
|
}
|
||||||
}]},
|
}]},
|
||||||
{view: chat.CONTENT}, {view: [chat.DISPLAY, html.TABLE]}, {view: chat.PROFILE},
|
{view: chat.CONTENT}, {view: html.STATUS}, {view: [chat.DISPLAY, html.TABLE]},{view: chat.PROFILE},
|
||||||
]), can.page.ClassList.add(can, can.ui.display, chat.CONTENT)
|
]), can.page.ClassList.add(can, can.ui.display, chat.CONTENT)
|
||||||
},
|
},
|
||||||
close: function(event, can) { can.onmotion.hide(can) },
|
onopensearch: function(can, msg, type, word) { can.onimport.select(can, msg, [type, word]) },
|
||||||
|
|
||||||
clear: function(event, can) { can.onmotion.clear(can, can.ui.profile) },
|
clear: function(event, can) { can.onmotion.clear(can, can.ui.profile) },
|
||||||
done: function(event, can) { can.base.isFunc(can.cb) && can.cb() },
|
done: function(event, can) { can.base.isFunc(can.cb) && can.cb() },
|
||||||
|
close: function(event, can) { can.onmotion.hide(can) },
|
||||||
|
|
||||||
select: function(event, can, index) { var line = can.list[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 (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) }
|
||||||
@ -85,12 +83,12 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
|
|||||||
plugin: function(event, can, index) { var line = can.list[index]
|
plugin: function(event, can, index) { var line = can.list[index]
|
||||||
if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) }
|
if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) }
|
||||||
|
|
||||||
var cmd = line.cmd == "command"? can.core.Keys(line.type, line.name.split(" ")[0]): can.core.Keys(line.ctx, line.cmd)
|
var cmd = line.cmd == ctx.COMMAND? can.core.Keys(line.type, line.name.split(" ")[0]): can.core.Keys(line.ctx, line.cmd)
|
||||||
can.onappend.plugin(can, {type: chat.PLUGIN, index: cmd||msg.Option(kit.MDB_INDEX)}, function(sub, meta) {
|
can.onappend.plugin(can, {type: chat.PLUGIN, index: cmd||msg.Option(kit.MDB_INDEX)}, function(sub, meta) {
|
||||||
can.search({}, "Action.onexport.size", function(msg, width) { sub.Conf(chat.WIDTH, width-60) })
|
can.get("Action", "size", function(msg, width) { sub.Conf(chat.WIDTH, width-60) })
|
||||||
|
|
||||||
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, can.misc.Concat([ctx.ACTION, cli.RUN, meta.index], cmds), cb)
|
can.run(event, can.misc.Concat([ctx.ACTION, cli.RUN, meta.index], cmds), cb, true)
|
||||||
}
|
}
|
||||||
}, can.ui.profile)
|
}, can.ui.profile)
|
||||||
},
|
},
|
||||||
|
@ -1,33 +1,33 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
||||||
var meta = {}; msg.Table(function(value) { meta[value.key] = value.value })
|
var meta = {}; msg.Table(function(value) { meta[value.key] = value.value })
|
||||||
can._meta = can.base.Obj(meta.text, {meta: {name: meta.name}, list: []})
|
can._meta = can.base.Obj(meta.text, {meta: {name: meta.name||"hi"}, list: []})
|
||||||
can.base.isFunc(cb) && cb(msg)
|
can.base.isFunc(cb) && cb(msg)
|
||||||
|
|
||||||
can.ui = can.page.Appends(can, target, [{view: ["layout", "table"], list: [{type: "tr", list: [
|
can.ui = can.page.Appends(can, target, [{view: ["layout", html.TABLE], list: [{type: html.TR, list: [
|
||||||
{type: "td", list: [{view: "project"}]},
|
{type: html.TD, list: [{view: "project"}]},
|
||||||
{type: "td", list: [{view: "display"}]},
|
{type: html.TD, list: [{view: "display"}]},
|
||||||
{type: "td", list: [{view: "profile"}]},
|
{type: html.TD, list: [{view: "profile"}]},
|
||||||
]}] }]), can.ui.project._fieldset = can.ui.display
|
]}] }]), can.ui.project._fieldset = can.ui.display
|
||||||
|
|
||||||
can.onimport._item(can, can._meta, can.ui.project, can.onimport._size(can)).click()
|
can.onimport._item(can, can._meta, can.ui.project, can.onimport._size(can)).click()
|
||||||
},
|
},
|
||||||
_size: function(can) {
|
_size: function(can) {
|
||||||
var width = can.Conf("width")-260, height = can.Conf("height")-100
|
var width = can.Conf(chat.WIDTH)-260, height = can.Conf(chat.HEIGHT)-100
|
||||||
if (can.Conf("auto.cmd")) {
|
if (can.Conf("auto.cmd")) {
|
||||||
|
width = can.Conf(chat.WIDTH), height = can.Conf(chat.HEIGHT)
|
||||||
can.onmotion.hidden(can, can.ui.project)
|
can.onmotion.hidden(can, can.ui.project)
|
||||||
can.onmotion.hidden(can, can.ui.profile)
|
can.onmotion.hidden(can, can.ui.profile)
|
||||||
can.onmotion.hidden(can, can._option)
|
can.onmotion.hidden(can, can._option)
|
||||||
can.onmotion.hidden(can, can._action)
|
can.onmotion.hidden(can, can._action)
|
||||||
width = can.Conf("width"), height = can.Conf("height")
|
|
||||||
}
|
}
|
||||||
if (can.user.mod.isCmd) {
|
if (can.user.mod.isCmd || can.user.mod.isDiv) {
|
||||||
width = window.innerWidth, height = window.innerHeight
|
width = window.innerWidth, height = window.innerHeight
|
||||||
can.page.Modify(can, can._output, {style: {width: width, height: height}})
|
can.page.Modify(can, can._output, {style: {width: width, height: height}})
|
||||||
}
|
}
|
||||||
return width
|
return width
|
||||||
},
|
},
|
||||||
_item: function(can, node, target, width) { width = node.meta.width||width
|
_item: function(can, node, target, width) { width = width||node.meta.width
|
||||||
var ui = can.page.Append(can, target, [{view: ["item", "div", node.meta.name||"some"]}, {view: ["list"]}])
|
var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, node.meta.name||"hi"]}, {view: [html.LIST]}])
|
||||||
ui.list._fieldset = can.onimport._field(can, node.meta, target._fieldset, width)
|
ui.list._fieldset = can.onimport._field(can, node.meta, target._fieldset, width)
|
||||||
|
|
||||||
var msg = can.request({}); msg.Push(node.meta, "", true)
|
var msg = can.request({}); msg.Push(node.meta, "", true)
|
||||||
@ -65,6 +65,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
feature: can.base.Obj(msg.Append("meta")),
|
feature: can.base.Obj(msg.Append("meta")),
|
||||||
inputs: can.base.Obj(msg.Append("list")),
|
inputs: can.base.Obj(msg.Append("list")),
|
||||||
args: meta.args,
|
args: meta.args,
|
||||||
|
name: meta.name,
|
||||||
}, size), ["/plugin/state.js"], function(sub) {
|
}, size), ["/plugin/state.js"], function(sub) {
|
||||||
can.page.Modify(can, sub._output, {style: size})
|
can.page.Modify(can, sub._output, {style: size})
|
||||||
sub.run = function(event, cmds, cb) {
|
sub.run = function(event, cmds, cb) {
|
||||||
|
0
plugin/local/chat/scan.js
Normal file
0
plugin/local/chat/scan.js
Normal file
32
plugin/local/chat/wx.js
Normal file
32
plugin/local/chat/wx.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Volcanos("onaction", {source: function(can, msg) {
|
||||||
|
can.require("https://res.wx.qq.com/open/js/jweixin-1.6.0.js", function(can) {
|
||||||
|
wx.config({debug: msg.Option("debug") == ice.TRUE,
|
||||||
|
appId: msg.Option("appid"), signature: msg.Option("signature"),
|
||||||
|
nonceStr: msg.Option("noncestr"), timestamp: msg.Option("timestamp"),
|
||||||
|
|
||||||
|
jsApiList: can.core.Item({
|
||||||
|
scanQRCode: function(cb) { wx.scanQRCode({needResult: cb? 1: 0, scanType: ["qrCode","barCode"], success: function (res) {
|
||||||
|
can.base.isFunc(cb) && cb(res.resultStr, can.base.parseJSON(res.resultStr))
|
||||||
|
} }) },
|
||||||
|
getLocation: function(cb) { wx.getLocation({type: "gcj02", success: function (res) {
|
||||||
|
can.base.isFunc(cb) && cb({type: "gcj02", name: "当前位置", text: "当前位置", latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000) })
|
||||||
|
} }) },
|
||||||
|
openLocation: function(msg) { wx.openLocation({
|
||||||
|
latitude: parseInt(msg.Option("latitude"))/100000,
|
||||||
|
longitude: parseInt(msg.Option("longitude"))/100000,
|
||||||
|
name: msg.Option(kit.MDB_NAME), address: msg.Option(kit.MDB_TEXT),
|
||||||
|
scale: msg.Option("scale")||14, infoUrl: msg.Option(kit.MDB_LINK),
|
||||||
|
}) },
|
||||||
|
chooseImage: function(cb, count) { wx.chooseImage({count: count||9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success: function (res) {
|
||||||
|
can.base.isFunc(cb) && cb(res.localIds)
|
||||||
|
} }) },
|
||||||
|
}, function(key, value) { return can.user.agent[key] = value, key }),
|
||||||
|
})
|
||||||
|
wx.ready(function() {
|
||||||
|
can.misc.Log("ready")
|
||||||
|
})
|
||||||
|
wx.error(function(err) {
|
||||||
|
can.misc.Log("what", err)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}})
|
@ -1,4 +1,8 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, target) {
|
||||||
|
if (!can.base.endWith(can.Option("path"), "/")) {
|
||||||
|
can.Option("file", can.Option("path").split("/").pop())
|
||||||
|
can.Option("path", can.base.trimSuffix(can.Option("path"), can.Option("file")))
|
||||||
|
}
|
||||||
can.onmotion.clear(can), can.ui = can.onlayout.profile(can)
|
can.onmotion.clear(can), can.ui = can.onlayout.profile(can)
|
||||||
can.onimport._content(can, target)
|
can.onimport._content(can, target)
|
||||||
can.onimport._output(can, target)
|
can.onimport._output(can, target)
|
||||||
|
@ -121,7 +121,7 @@ fieldset.word.float {
|
|||||||
position:fixed; left:0; top:0;
|
position:fixed; left:0; top:0;
|
||||||
background-color:aliceblue;
|
background-color:aliceblue;
|
||||||
background-color:aliceblue;
|
background-color:aliceblue;
|
||||||
color:black; z-index:20;
|
color:black;
|
||||||
}
|
}
|
||||||
fieldset.word.float>div.output {
|
fieldset.word.float>div.output {
|
||||||
background-color:aliceblue;
|
background-color:aliceblue;
|
||||||
|
@ -5,7 +5,13 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, conf,
|
|||||||
},
|
},
|
||||||
|
|
||||||
_location: function(can, msg) { location.href = msg._arg[0] },
|
_location: function(can, msg) { location.href = msg._arg[0] },
|
||||||
_rewrite: function(can, msg) { can.Option(msg._arg[0], msg._arg[1]), can.Update(); return true },
|
_rewrite: function(can, msg) {
|
||||||
|
for (var i = 0; i < msg._arg.length; i += 2) {
|
||||||
|
can.Option(msg._arg[i], msg._arg[i+1])
|
||||||
|
}
|
||||||
|
can.Update()
|
||||||
|
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})
|
||||||
@ -164,40 +170,22 @@ Volcanos("onaction", {help: "交互操作", list: [
|
|||||||
can.Update(event, [ctx.ACTION, "prev", can.Status("total")||0, can.Option("limit"), can.Option("offend")])
|
can.Update(event, [ctx.ACTION, "prev", can.Status("total")||0, can.Option("limit"), can.Option("offend")])
|
||||||
},
|
},
|
||||||
|
|
||||||
scanQRCode: function(event, can, cmd) {
|
getClipboardData: function(event, can, button) {
|
||||||
can.user.agent.scanQRCode(function(text) { var cmds = [ctx.ACTION, cmd]
|
function add(text) {
|
||||||
var data = can.base.parseJSON(text)
|
can.run(event, can.base.Simple(ctx.ACTION, button, can.base.parseJSON(text)), function(msg) {
|
||||||
can.core.Item(data, function(key, value) { cmds.push(key, value) })
|
can.user.toast(can, text, "添加成功"), can.Update()
|
||||||
if (data["auth"]) {
|
}, true)
|
||||||
if (can.user.confirm("auth "+data["auth"])) {
|
}
|
||||||
can.run(event, [ctx.ACTION, "auth", web.SPACE, data["auth"]])
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
can.run(event, cmds, function(msg) { can.user.toast(can, "添加成功"), can.Update() }, true)
|
|
||||||
}, can)
|
|
||||||
},
|
|
||||||
scanQRCode0: function(event, can) { can.user.agent.scanQRCode() },
|
|
||||||
getClipboardData: function(event, can, cmd) {
|
|
||||||
if (navigator.clipboard) {
|
if (navigator.clipboard) {
|
||||||
navigator.clipboard.readText().then(function(text) {
|
navigator.clipboard.readText().then(add).catch(function(err) { can.misc.Log(err) })
|
||||||
can.run(event, can.base.Simple(ctx.ACTION, cmd, can.base.parseJSON(text)), function(msg) {
|
|
||||||
can.user.toast(can, text, "添加成功"), can.Update()
|
|
||||||
}, true)
|
|
||||||
}).catch(function(err) { can.misc.Log(err) })
|
|
||||||
} else {
|
} else {
|
||||||
can.user.input(event, can, [{type: "textarea"}], function(ev, button, data, list, args) {
|
can.user.input(event, can, [{type: "textarea", name: "text"}], function(ev, button, data, list, args) { add(list[0]) })
|
||||||
can.run(event, can.base.Simple(ctx.ACTION, cmd, can.base.parseJSON(list[0])), function(msg) {
|
|
||||||
can.user.toast(can, list[0], "添加成功"), can.Update()
|
|
||||||
}, true)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getLocation: function(event, can, cmd) { var msg = can.request(can)
|
getLocation: function(event, can, button) {
|
||||||
can.user.agent.getLocation(function(res) { can.request(event, res)
|
can.user.agent.getLocation(function(data) { can.request(event, data)
|
||||||
can.user.input(event, can, [kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT, "latitude", "longitude"], function(ev, button, data, list, arg) {
|
can.user.input(event, can, [kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT, "latitude", "longitude"], function(ev, bu, data, list, args) {
|
||||||
can.core.Item(res, function(key, value) { arg.push(key, value) })
|
can.run(event, [ctx.ACTION, button].concat(can.base.Simple(args, data)), function(msg) {
|
||||||
can.run(event, [ctx.ACTION, cmd].concat(arg), function(msg) {
|
|
||||||
can.user.toast(can, "添加成功"), can.Update()
|
can.user.toast(can, "添加成功"), can.Update()
|
||||||
}, true)
|
}, true)
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
fieldset.inner.float {
|
fieldset.inner.float {
|
||||||
/* background-color:#332f1ecf; */
|
/* background-color:#332f1ecf; */
|
||||||
z-index:10;
|
|
||||||
}
|
}
|
||||||
fieldset.inner.float div.output {
|
fieldset.inner.float div.output {
|
||||||
background-color:#332f1ecf;
|
background-color:#332f1ecf;
|
||||||
|
4
proto.js
4
proto.js
@ -143,7 +143,7 @@ var html = {
|
|||||||
}
|
}
|
||||||
var lang = {
|
var lang = {
|
||||||
STRING: "string", OBJECT: "object", FUNCTION: "function",
|
STRING: "string", OBJECT: "object", FUNCTION: "function",
|
||||||
ENTER: "Enter",
|
ESCAPE: "Escape", ENTER: "Enter",
|
||||||
}
|
}
|
||||||
function shy(help, meta, list, cb) {
|
function shy(help, meta, list, cb) {
|
||||||
var index = 0, args = arguments; function next(type) {
|
var index = 0, args = arguments; function next(type) {
|
||||||
@ -213,7 +213,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args:
|
|||||||
set: function(name, key, value) { var msg = can.request({}); msg.Option(key, value)
|
set: function(name, key, value) { var msg = can.request({}); msg.Option(key, value)
|
||||||
return can.search(msg._event, [can.core.Keys(name, "onimport", key)])
|
return can.search(msg._event, [can.core.Keys(name, "onimport", key)])
|
||||||
},
|
},
|
||||||
get: function(name, key) { return can.search({}, [can.core.Keys(name, "onexport", key)]) },
|
get: function(name, key, cb) { return can.search({}, [can.core.Keys(name, "onexport", key)], cb) },
|
||||||
search: function(event, cmds, cb) { return can.run && can.run(event, ["_search"].concat(cmds), cb, true) },
|
search: function(event, cmds, cb) { return can.run && can.run(event, ["_search"].concat(cmds), cb, true) },
|
||||||
|
|
||||||
Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {},
|
Conf: function(key, value) { return can.core.Value(can._conf, key, value) }, _conf: {},
|
||||||
|
@ -35,13 +35,13 @@ Page({
|
|||||||
return page.setData({list: page.data.list})
|
return page.setData({list: page.data.list})
|
||||||
}
|
}
|
||||||
|
|
||||||
app.requests(page.name, {cmds: [item.hash, "tool"]}, function(msg) {
|
app.requests(page.name, {cmds: [item.hash, "storm"]}, function(msg) {
|
||||||
item.list = msg.Table(), page.setData({list: page.data.list})
|
item.list = msg.Table(), page.setData({list: page.data.list})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
onchange: function(event, data) { data = data || event.target.dataset
|
onchange: function(event, data) { data = data || event.target.dataset
|
||||||
var item = this.data.list[data.index]; var tool = item.list[data.i]
|
var item = this.data.list[data.index]; var storm = item.list[data.i]
|
||||||
app.jumps("action/action", {river: item.hash, storm: tool.hash, title: item.name+"."+tool.name})
|
app.jumps("action/action", {river: item.hash, storm: storm.hash, title: item.name+"."+storm.name})
|
||||||
},
|
},
|
||||||
|
|
||||||
onReady: function () {},
|
onReady: function () {},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user