1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-26 01:04:06 +08:00
This commit is contained in:
harveyshao 2021-10-28 18:49:59 +08:00
parent 87e22b48a7
commit 9fa4537eb3
26 changed files with 235 additions and 257 deletions

View File

@ -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
} }

View File

@ -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]) {

View File

@ -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)

View File

@ -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)
}) })

View File

@ -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;
}

View File

@ -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},

View File

@ -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;

View File

@ -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)
} }

View File

@ -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;
} }

View File

@ -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) {

View File

@ -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;

View File

@ -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}})

View File

@ -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;
}

View File

@ -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"]) },

View File

@ -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()})
}) })
}) })

View File

@ -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 {

View File

@ -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)
}, },

View File

@ -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) {

View File

32
plugin/local/chat/wx.js Normal file
View 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)
})
})
}})

View File

@ -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)

View File

@ -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;

View File

@ -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)
}) })

View File

@ -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;

View File

@ -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: {},

View File

@ -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 () {},