mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
add wifi
This commit is contained in:
parent
25c2e34512
commit
bfabe57ea3
@ -320,6 +320,7 @@ div.output>div.project:not(.toggle) { border-right:var(--box-border); width:var(
|
|||||||
body.mobile div.project:not(.toggle) { border-right:var(--box-border); width:120px; flex:0 0 120px; }
|
body.mobile div.project:not(.toggle) { border-right:var(--box-border); width:120px; flex:0 0 120px; }
|
||||||
div.profile:not(.toggle) { border-left:var(--box-border); width:50%; }
|
div.profile:not(.toggle) { border-left:var(--box-border); width:50%; }
|
||||||
div.display:not(.toggle) { border-top:var(--box-border); }
|
div.display:not(.toggle) { border-top:var(--box-border); }
|
||||||
|
div.output div.code input[type=button][name=login] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||||
/* table card */
|
/* table card */
|
||||||
div.output.card>div.item.stop { color:var(--disable-fg-color); }
|
div.output.card>div.item.stop { color:var(--disable-fg-color); }
|
||||||
div.output.card>div.item { background:var(--plugin-bg-color); padding:10px; border:var(--box-border); border-radius:var(--plugin-radius); margin:10px; width:320px; float:left; box-shadow:var(--box-shadow); }
|
div.output.card>div.item { background:var(--plugin-bg-color); padding:10px; border:var(--box-border); border-radius:var(--plugin-radius); margin:10px; width:320px; float:left; box-shadow:var(--box-shadow); }
|
||||||
|
@ -31,8 +31,9 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
}).length == 0) { can.onappend.table(can, msg) } },
|
}).length == 0) { can.onappend.table(can, msg) } },
|
||||||
_grow: function(can, msg, arg) { var sub = can.sub
|
_grow: function(can, msg, arg) { var sub = can.sub
|
||||||
if (sub && sub.onimport && sub.onimport.grow) { return sub.onimport.grow(sub, msg, arg) }
|
if (sub && sub.onimport && sub.onimport.grow) { return sub.onimport.grow(sub, msg, arg) }
|
||||||
arg = can.page.Color(arg); if (can.page.Select(can, can._output, html.DIV_CODE, function(div) {
|
arg = can.page.Color(arg); if (can.page.SelectOne(can, can._output, html.DIV_CODE, function(div) {
|
||||||
return can.page.style(can, div, html.MAX_HEIGHT, can.onexport.outputHeight(can)), can.page.Append(can, div, [{text: arg}]), can._output.scrollTop = div.offsetTop, div.scrollBy(0, 10000), true
|
return can.page.style(can, div, html.MAX_HEIGHT, can.onexport.outputHeight(can)),
|
||||||
|
can.page.Append(can, div, [{text: arg}]), can._output.scrollTop = div.offsetTop, div.scrollBy(0, 10000), true
|
||||||
}).length == 0) { can.onappend.board(can, arg) }
|
}).length == 0) { can.onappend.board(can, arg) }
|
||||||
},
|
},
|
||||||
_open: function(can, msg, arg) { can.user.opens(arg), can.Update() },
|
_open: function(can, msg, arg) { can.user.opens(arg), can.Update() },
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
Volcanos(chat.ONIMPORT, {
|
Volcanos(chat.ONIMPORT, {
|
||||||
_init: function(can, msg) { can.onappend.style(can, "stats", can._output)
|
_init: function(can, msg) { can.onappend.style(can, "stats", can._output)
|
||||||
var units = {}, stats = {}; msg.Table(function(value) { units[value.name] = value.units
|
var stats = {}, units = {}, index = {}; msg.Table(function(value) { units[value.name] = value.units
|
||||||
stats[value.name] = parseFloat(stats[value.name]||"0") + parseFloat(value.value)
|
stats[value.name] = parseFloat(stats[value.name]||"0") + parseFloat(value.value)
|
||||||
|
index[value.name] = value.index
|
||||||
})
|
})
|
||||||
function fmts(value) { var ls = []
|
function fmts(value) { var ls = []
|
||||||
while (value > 0) { ls.push(value%1000)
|
while (value > 0) { ls.push(value%1000)
|
||||||
@ -12,6 +13,8 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
can.core.Item(stats, function(name, value) { can.page.Append(can, can._output, [{view: [[html.ITEM, name]], list: [
|
can.core.Item(stats, function(name, value) { can.page.Append(can, can._output, [{view: [[html.ITEM, name]], list: [
|
||||||
{view: mdb.VALUE, list: [{text: can.base.trimSuffix(fmts(parseFloat(value).toFixed(2))+"", ".00")}, {text: [units[name], "", "units"]}]},
|
{view: mdb.VALUE, list: [{text: can.base.trimSuffix(fmts(parseFloat(value).toFixed(2))+"", ".00")}, {text: [units[name], "", "units"]}]},
|
||||||
{view: [mdb.NAME, "", can.user.trans(can, name, null, html.INPUT)]},
|
{view: [mdb.NAME, "", can.user.trans(can, name, null, html.INPUT)]},
|
||||||
]}]) }), can.isCmdMode() && can.onappend.table(can, msg)
|
], onclick: function() {
|
||||||
|
can.onappend.plugin(can, {index: index[name], style: html.FLOAT})
|
||||||
|
}}]) }), can.isCmdMode() && can.onappend.table(can, msg)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -5,7 +5,8 @@ const page = require("utils/lib/page.js")
|
|||||||
const user = require("utils/lib/user.js")
|
const user = require("utils/lib/user.js")
|
||||||
|
|
||||||
App({
|
App({
|
||||||
data: {}, conf: {serve: "https://2021.shylinux.com", appid: "wxf4e5104d83476ed6"},
|
data: {}, conf: {serve: "https://2021.shylinux.com", appid: "wxf4e5104d83476ed6",
|
||||||
|
module: "shylinux.com/x/volcanos", version: "v0.2.1"},
|
||||||
base: base, core: core, misc: misc, page: page, user: user,
|
base: base, core: core, misc: misc, page: page, user: user,
|
||||||
onLaunch: function() { console.log("app load", this.conf) },
|
onLaunch: function() { console.log("app load", this.conf) },
|
||||||
})
|
})
|
||||||
|
@ -6,13 +6,16 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
msg.Dump(can), can.user.toast(can, "加载成功")
|
msg.Dump(can), can.user.toast(can, "加载成功")
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onaction", {list: ["刷新", "扫码", "登录"],
|
Volcanos("onaction", {list: ["刷新", "扫码", "登录", "网络"],
|
||||||
"刷新": function(event, can) { can.onaction.refresh(event, can) },
|
"刷新": function(event, can) { can.onaction.refresh(event, can) },
|
||||||
"扫码": function(event, can) { can.user.agent.scanQRCode(can) },
|
"扫码": function(event, can) { can.user.agent.scanQRCode(can) },
|
||||||
"登录": function(event, can) {
|
"登录": function(event, can) {
|
||||||
can.user.info = {}, can.misc.localStorage(can, ice.MSG_SESSID, can.conf.sessid = "")
|
can.user.info = {}, can.misc.localStorage(can, ice.MSG_SESSID, can.conf.sessid = "")
|
||||||
can.user.userinfo(can, function() { can.onaction.refresh(event, can) })
|
can.user.userinfo(can, function() { can.onaction.refresh(event, can) })
|
||||||
},
|
},
|
||||||
|
"网络": function(event, can) {
|
||||||
|
can.user.agent.connectWifi(can, "CMCC-UQJ7", "RZGR9FGF")
|
||||||
|
},
|
||||||
refresh: function(event, can) { can.run(event, [], function(msg) { can.onimport._init(can, msg) }) },
|
refresh: function(event, can) { can.run(event, [], function(msg) { can.onimport._init(can, msg) }) },
|
||||||
onaction: function(event, can, button, data) { var name = data.name;
|
onaction: function(event, can, button, data) { var name = data.name;
|
||||||
(can.onaction[name]||function(event) { can.run(event, [ctx.ACTION, name]) })(event, can)
|
(can.onaction[name]||function(event) { can.run(event, [ctx.ACTION, name]) })(event, can)
|
||||||
|
@ -7,16 +7,17 @@
|
|||||||
"miniprogram": {
|
"miniprogram": {
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"name": "",
|
"name": "cli.runtime",
|
||||||
"pathName": "pages/action/action",
|
"pathName": "pages/action/action",
|
||||||
"query": "cmd=web.code.h2.h2",
|
"query": "index=cli.runtime&serve=http%3A%2F%2F192.168.10.12%3A9020&debug=true",
|
||||||
"launchMode": "default",
|
"launchMode": "default",
|
||||||
"scene": null
|
"scene": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pages/action/action",
|
"name": "web.dream",
|
||||||
"pathName": "pages/action/action",
|
"pathName": "pages/action/action",
|
||||||
"query": "river= e0a1eb&storm=c23ae3&title=hi.scan",
|
"query": "index=web.dream&serve=http%3A%2F%2F192.168.10.12%3A9020&debug=true",
|
||||||
|
"launchMode": "default",
|
||||||
"scene": 1001
|
"scene": 1001
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -11,6 +11,8 @@ var kit = {proto: function(sub, sup) { return sub.__proto__ = sup, sub },
|
|||||||
}
|
}
|
||||||
var ice = {
|
var ice = {
|
||||||
TB: "\t", SP: " ", DF: ":", EQ: "=", AT: "@", QS: "?", PS: "/", PT: ".", FS: ",", NL: "\n", LT: "<", GT: ">",
|
TB: "\t", SP: " ", DF: ":", EQ: "=", AT: "@", QS: "?", PS: "/", PT: ".", FS: ",", NL: "\n", LT: "<", GT: ">",
|
||||||
|
OK: "ok", TRUE: "true", FALSE: "false", SUCCESS: "success", FAILURE: "failure", PROCESS: "process",
|
||||||
|
|
||||||
HTTP: "http", HELP: "help",
|
HTTP: "http", HELP: "help",
|
||||||
MAIN: "main", AUTO: "auto",
|
MAIN: "main", AUTO: "auto",
|
||||||
LIST: "list", BACK: "back",
|
LIST: "list", BACK: "back",
|
||||||
|
@ -57,6 +57,24 @@ Volcanos("misc", {
|
|||||||
for (var i = 1; i < ls.length; i += 2) { if (can.base.isIn(ls[i], [ice.POD, ice.CMD])) { args[ls[i]] = ls[i+1] } }
|
for (var i = 1; i < ls.length; i += 2) { if (can.base.isIn(ls[i], [ice.POD, ice.CMD])) { args[ls[i]] = ls[i+1] } }
|
||||||
return args
|
return args
|
||||||
},
|
},
|
||||||
|
WSS: function(can) {
|
||||||
|
var url = can.base.MergeURL(can.db.serve.replace("http", "ws")+"/space/", mdb.TYPE, "weixin", mdb.NAME, "weixin", mdb.TEXT, can.base.MergeURL(nfs.PS+can.ui.route, can.db), can.conf)
|
||||||
|
var socket = wx.connectSocket({url: url, header:{"content-type": "application/json"}})
|
||||||
|
console.log("wss connect", url, socket)
|
||||||
|
socket.onOpen(function(res) { console.log("wss open", res) })
|
||||||
|
socket.onClose(function(res) { console.log("wss close", res)
|
||||||
|
if (can._socket) { can._socket = socket = can.misc.WSS(can) }
|
||||||
|
})
|
||||||
|
socket.onMessage(function(res) {
|
||||||
|
var msg = can.request(), data = can.base.Obj(res.data); msg.Copy(data), msg.detail = data.detail, console.log("wss recv", msg)
|
||||||
|
switch (msg.detail[0]) {
|
||||||
|
case "pwd": can._daemon = msg.detail[1]; break
|
||||||
|
}
|
||||||
|
msg.Echo("hello world")
|
||||||
|
delete(msg._hand), console.log("wss send", msg), socket.sendSocketMessage({data: JSON.stringify(msg)})
|
||||||
|
})
|
||||||
|
return socket
|
||||||
|
},
|
||||||
requests: function(can, msg, cmd, data, cb) {
|
requests: function(can, msg, cmd, data, cb) {
|
||||||
can.misc.request(can, msg, cmd, data, function(msg) { cb && cb(msg) })
|
can.misc.request(can, msg, cmd, data, function(msg) { cb && cb(msg) })
|
||||||
},
|
},
|
||||||
|
@ -20,19 +20,32 @@ Volcanos("user", {
|
|||||||
scanQRCode: function(can, cb) {
|
scanQRCode: function(can, cb) {
|
||||||
wx.scanCode({success: function(res) { var data = can.base.ParseJSON(res.result)
|
wx.scanCode({success: function(res) { var data = can.base.ParseJSON(res.result)
|
||||||
if (data.type == web.LINK && data._origin) { can.base.Copy(data, can.misc.ParseURL(can, res.result)) }
|
if (data.type == web.LINK && data._origin) { can.base.Copy(data, can.misc.ParseURL(can, res.result)) }
|
||||||
|
console.log("scan", data)
|
||||||
if (cb && cb(data)) { return }
|
if (cb && cb(data)) { return }
|
||||||
if (data.type == web.LINK && data._origin) { delete(data.type), delete(data.name), delete(data.text)
|
if (data.type == web.LINK && data._origin) { delete(data.type), delete(data.name), delete(data.text)
|
||||||
var serve = /(https?:\/\/[^/]+)([^?#])*/.exec(data._origin)[1]; data.serve = serve, delete(data._origin)
|
var ls = new RegExp("(https?://[^/]+)([^?#]*)([^#]*)(.*)").exec(data._origin); delete(data._origin)
|
||||||
|
data.serve = ls[1]; if (ls[2].indexOf("/pages/") == 0) { data.pages = ls[2] }
|
||||||
}
|
}
|
||||||
if (data.cmd||data.index||data.share) {
|
if (data.cmd||data.index||data.share) {
|
||||||
can.user.jumps(can.base.MergeURL(chat.PAGES_ACTION, data))
|
can.user.jumps(can.base.MergeURL(data.pages||chat.PAGES_ACTION, data))
|
||||||
} else if (data.pod||data.space||data.serve) {
|
} else if (data.pod||data.space||data.serve) {
|
||||||
can.user.jumps(can.base.MergeURL(chat.PAGES_RIVER, data))
|
can.user.jumps(can.base.MergeURL(data.pages||chat.PAGES_RIVER, data))
|
||||||
} else {
|
} else {
|
||||||
can.misc.request(can, can.request(), chat.WX_LOGIN_SCAN, data)
|
can.misc.request(can, can.request(), chat.WX_LOGIN_SCAN, data)
|
||||||
}
|
}
|
||||||
}})
|
}})
|
||||||
},
|
},
|
||||||
|
connectWifi: function(can, ssid, password, cb, cbs) { wx.showLoading()
|
||||||
|
wx.startWifi({success: function(res) {
|
||||||
|
wx.connectWifi({SSID: ssid, password: password, success: function(res) { wx.hideLoading()
|
||||||
|
console.log("wifi", res), cb && cb(res)
|
||||||
|
}, fail: function(res) {
|
||||||
|
console.log("wifi", res), cbs && cbs(res)
|
||||||
|
}})
|
||||||
|
}, fail: function(res) {
|
||||||
|
console.log("wifi", res), cbs && cbs(res)
|
||||||
|
}})
|
||||||
|
},
|
||||||
}, info: {},
|
}, info: {},
|
||||||
jumps: function(url, cb) { wx.navigateTo({url: url, success: cb}) },
|
jumps: function(url, cb) { wx.navigateTo({url: url, success: cb}) },
|
||||||
title: function(text, cb) { text && wx.setNavigationBarTitle({title: text, success: cb}) },
|
title: function(text, cb) { text && wx.setNavigationBarTitle({title: text, success: cb}) },
|
||||||
|
@ -1,16 +1,13 @@
|
|||||||
const {ctx, nfs, code, chat} = require("const.js")
|
const {ice, ctx, mdb, nfs, code, chat} = require("const.js")
|
||||||
|
|
||||||
function shy(help, meta, list, cb) { var arg = arguments, i = 0; function next(type) {
|
function shy(help, meta, list, cb) { var arg = arguments, i = 0; function next(type) {
|
||||||
if (type == code.OBJECT) { if (typeof arg[i] == code.OBJECT && arg[i].length == undefined) { return arg[i++] }
|
if (type == code.OBJECT) { if (typeof arg[i] == code.OBJECT && arg[i].length == undefined) { return arg[i++] }
|
||||||
} else if (type == code.ARRAY) { if (typeof arg[i] == code.OBJECT && arg[i].length != undefined) { return arg[i++] }
|
} else if (type == code.ARRAY) { if (typeof arg[i] == code.OBJECT && arg[i].length != undefined) { return arg[i++] }
|
||||||
} else if (i < arg.length && (!type || type == typeof arg[i])) { return arg[i++] }
|
} else if (i < arg.length && (!type || type == typeof arg[i])) { return arg[i++] }
|
||||||
} return cb = typeof arg[arg.length-1] == code.FUNCTION? arg[arg.length-1]: function() {}, cb.help = next(code.STRING)||"", cb.meta = next(code.OBJECT)||{}, cb.list = next(code.ARRAY)||[], cb }
|
} return cb = typeof arg[arg.length-1] == code.FUNCTION? arg[arg.length-1]: function() {}, cb.help = next(code.STRING)||"", cb.meta = next(code.OBJECT)||{}, cb.list = next(code.ARRAY)||[], cb }
|
||||||
|
|
||||||
function Volcanos(name, list) {
|
function Volcanos(name, list) {
|
||||||
if (Volcanos._page) { Volcanos._page[name] = list }
|
if (Volcanos._page) { Volcanos._page[name] = list }
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
|
||||||
Volcanos._init = function() {
|
Volcanos._init = function() {
|
||||||
var can = {__proto__: Volcanos._page,
|
var can = {__proto__: Volcanos._page,
|
||||||
request: function(event) { event = event||{}, event = event._event||event
|
request: function(event) { event = event||{}, event = event._event||event
|
||||||
@ -34,13 +31,19 @@ Volcanos._init = function() {
|
|||||||
onLoad: function(options) { can.ui = this, can.db = options, can.db.serve = can.db.serve||can.conf.serve
|
onLoad: function(options) { can.ui = this, can.db = options, can.db.serve = can.db.serve||can.conf.serve
|
||||||
can.core.Item(can.db, function(key, value) { can.db[key] = decodeURIComponent(value) })
|
can.core.Item(can.db, function(key, value) { can.db[key] = decodeURIComponent(value) })
|
||||||
can.user.title(can.db.title||can.db.pod||can.db.space||(can.db.serve||can.conf.serve).split("://")[1])
|
can.user.title(can.db.title||can.db.pod||can.db.space||(can.db.serve||can.conf.serve).split("://")[1])
|
||||||
console.log("app show", can.ui.route, options), can.ui.setData({conf: can.db})
|
console.log("app show", can.ui.route, options)
|
||||||
can.user.login(can, function() { can.onaction.refresh({}, can) })
|
if (can.db.ssid && can.db.password != "******") {
|
||||||
|
can.user.agent.connectWifi(can, can.db.ssid, can.db.password||"", function() { can.db.password = "******"
|
||||||
|
can.ui.setData({conf: can.db}), can.user.login(can, function() { can.onaction.refresh({}, can) })
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
can.ui.setData({conf: can.db}), can.user.login(can, function() { can.onaction.refresh({}, can) })
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onShow: function() {},
|
onShow: function() { can.misc.WSS(can) },
|
||||||
onReady: function() {},
|
onReady: function() {},
|
||||||
onHide: function() {},
|
onHide: function() { can._socket && can._socket.close(), delete(can._socket) },
|
||||||
onUnload: function() {},
|
onUnload: function() { can._socket && can._socket.close(), delete(can._socket) },
|
||||||
onReachBottom: function() {},
|
onReachBottom: function() {},
|
||||||
onPullDownRefresh: function() { this.onLoad(can.db) },
|
onPullDownRefresh: function() { this.onLoad(can.db) },
|
||||||
onShareAppMessage: function() {}
|
onShareAppMessage: function() {}
|
||||||
@ -49,5 +52,4 @@ Volcanos._init = function() {
|
|||||||
can.core.CallFunc(cb, [event, can, key, event.target.dataset])
|
can.core.CallFunc(cb, [event, can, key, event.target.dataset])
|
||||||
} }), Page(page)
|
} }), Page(page)
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {shy, Volcanos}
|
module.exports = {shy, Volcanos}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user