1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-11-21 12:25:26 +08:00
parent 25c2e34512
commit bfabe57ea3
10 changed files with 68 additions and 23 deletions

View File

@ -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; }
div.profile:not(.toggle) { border-left:var(--box-border); width:50%; }
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 */
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); }

View File

@ -31,8 +31,9 @@ Volcanos(chat.ONIMPORT, {
}).length == 0) { can.onappend.table(can, msg) } },
_grow: function(can, msg, arg) { var sub = can.sub
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) {
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
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
}).length == 0) { can.onappend.board(can, arg) }
},
_open: function(can, msg, arg) { can.user.opens(arg), can.Update() },

View File

@ -1,7 +1,8 @@
Volcanos(chat.ONIMPORT, {
_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)
index[value.name] = value.index
})
function fmts(value) { var ls = []
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: [
{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)]},
]}]) }), 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)
},
})

View File

@ -5,7 +5,8 @@ const page = require("utils/lib/page.js")
const user = require("utils/lib/user.js")
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,
onLaunch: function() { console.log("app load", this.conf) },
})

View File

@ -6,13 +6,16 @@ Volcanos(chat.ONIMPORT, {
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.user.agent.scanQRCode(can) },
"登录": function(event, can) {
can.user.info = {}, can.misc.localStorage(can, ice.MSG_SESSID, can.conf.sessid = "")
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) }) },
onaction: function(event, can, button, data) { var name = data.name;
(can.onaction[name]||function(event) { can.run(event, [ctx.ACTION, name]) })(event, can)

View File

@ -7,16 +7,17 @@
"miniprogram": {
"list": [
{
"name": "",
"name": "cli.runtime",
"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",
"scene": null
},
{
"name": "pages/action/action",
"name": "web.dream",
"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
}
]

View File

@ -11,6 +11,8 @@ var kit = {proto: function(sub, sup) { return sub.__proto__ = sup, sub },
}
var ice = {
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",
MAIN: "main", AUTO: "auto",
LIST: "list", BACK: "back",

View File

@ -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] } }
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) {
can.misc.request(can, msg, cmd, data, function(msg) { cb && cb(msg) })
},

View File

@ -20,19 +20,32 @@ Volcanos("user", {
scanQRCode: function(can, cb) {
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)) }
console.log("scan", data)
if (cb && cb(data)) { return }
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) {
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) {
can.user.jumps(can.base.MergeURL(chat.PAGES_RIVER, data))
can.user.jumps(can.base.MergeURL(data.pages||chat.PAGES_RIVER, data))
} else {
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: {},
jumps: function(url, cb) { wx.navigateTo({url: url, success: cb}) },
title: function(text, cb) { text && wx.setNavigationBarTitle({title: text, success: cb}) },

View File

@ -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) {
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 (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 }
function Volcanos(name, list) {
if (Volcanos._page) { Volcanos._page[name] = list }
return list
}
Volcanos._init = function() {
var can = {__proto__: Volcanos._page,
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
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])
console.log("app show", can.ui.route, options), can.ui.setData({conf: can.db})
can.user.login(can, function() { can.onaction.refresh({}, can) })
console.log("app show", can.ui.route, options)
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() {},
onHide: function() {},
onUnload: function() {},
onHide: function() { can._socket && can._socket.close(), delete(can._socket) },
onUnload: function() { can._socket && can._socket.close(), delete(can._socket) },
onReachBottom: function() {},
onPullDownRefresh: function() { this.onLoad(can.db) },
onShareAppMessage: function() {}
@ -49,5 +52,4 @@ Volcanos._init = function() {
can.core.CallFunc(cb, [event, can, key, event.target.dataset])
} }), Page(page)
}
module.exports = {shy, Volcanos}