1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-02-29 20:14:34 +08:00
parent 78db3a2b2f
commit c69eeac9f7
5 changed files with 49 additions and 36 deletions

View File

@ -74,14 +74,24 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
Volcanos(chat.ONDAEMON, {_init: function(can, name, type, cbs) { if (can.user.isLocalFile) { return } Volcanos(chat.ONDAEMON, {_init: function(can, name, type, cbs) { if (can.user.isLocalFile) { return }
return can.misc.WSS(can, {type: type||web.PORTAL, name: name||can.misc.Search(can, cli.DAEMON)||""}, function(event, msg, cmd, arg, cb) { return can.misc.WSS(can, {type: type||web.PORTAL, name: name||can.misc.Search(can, cli.DAEMON)||""}, function(event, msg, cmd, arg, cb) {
if (cbs && can.core.CallFunc(cbs, {event: event, msg: msg, cmd: cmd, arg: arg, cb: cb})) { return } if (cbs && can.core.CallFunc(cbs, {event: event, msg: msg, cmd: cmd, arg: arg, cb: cb})) { return }
var sub = can.ondaemon._list[can.core.Keys(msg[ice.MSG_TARGET])]||can; can.base.isFunc(sub.ondaemon[cmd])? var sub = can.ondaemon._list[can.core.Keys(msg[ice.MSG_TARGET])]||can;
can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}): sub.sub && can.base.isFunc(sub.sub.ondaemon[cmd])? can.core.CallFunc(sub.sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}):
can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), cb) can.base.isFunc(sub.ondaemon[cmd])? can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}):
can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), cb)
}) })
}, _list: [""], pwd: function(can, arg) { can.misc.sessionStorage(can, "can.daemon", can._wss_name = can.ondaemon._list[0] = arg[0]) }, }, _list: [""], pwd: function(can, arg) { can.misc.sessionStorage(can, "can.daemon", can._wss_name = can.ondaemon._list[0] = arg[0]) },
close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() }, close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() },
toast: function(can, sub, arg, cb) { can.core.CallFunc(can.user.toast, [sub].concat(arg)) }, toast: function(can, sub, arg, cb) { can.core.CallFunc(can.user.toast, [sub].concat(arg)) },
refresh: function(can, sub) { can.base.isFunc(sub.Update) && sub.Update() }, online: function(can, sub) { debugger },
refresh: function(can, msg, sub, arg) {
if (arg[0] == "confirm") {
can.user.toastConfirm(can, arg[1]||"reload?", sub.ConfIndex(), function(event, button) {
can.base.isFunc(sub.Update) && sub.Update()
})
} else {
can.base.isFunc(sub.Update) && sub.Update()
}
},
grant: function(can, msg, sub, arg) { grant: function(can, msg, sub, arg) {
var toast = can.user.toast(can, {duration: arg[1]||10000, content: "grant "+arg[0], action: shy({ var toast = can.user.toast(can, {duration: arg[1]||10000, content: "grant "+arg[0], action: shy({
confirm: function(event) { toast.close(), can.run(can.request(event, {name: arg[0]}), [ctx.ACTION, ctx.RUN, web.SPACE, aaa.LOGIN]) }, confirm: function(event) { toast.close(), can.run(can.request(event, {name: arg[0]}), [ctx.ACTION, ctx.RUN, web.SPACE, aaa.LOGIN]) },

View File

@ -134,7 +134,7 @@ kbd { padding:0 var(--input-padding); }
img.qrcode { width:var(--qrcode-width); } img.qrcode { width:var(--qrcode-width); }
/* output style */ /* output style */
div.title>div.status { line-height:20px; display:flex; } div.title>div.status { line-height:20px; display:flex; }
div.title>div.status>div.item { font-size:var(--status-font-size); font-weight:normal; float:left; padding:0 var(--input-padding); } div.title>div.status>div.item { font-size:var(--status-font-size); font-weight:normal; white-space:pre; padding:0 var(--input-padding); display:flex; float:left; }
div.title>div.status>div.item.restart { background-color:var(--notice-bg-color); color:var(--notice-fg-color) !important; opacity:0.4; } div.title>div.status>div.item.restart { background-color:var(--notice-bg-color); color:var(--notice-fg-color) !important; opacity:0.4; }
div.title>div.status>div.item.access { background-color:var(--danger-bg-color); color:var(--danger-fg-color) !important; opacity:0.4; } div.title>div.status>div.item.access { background-color:var(--danger-bg-color); color:var(--danger-fg-color) !important; opacity:0.4; }
div.title>div.status>div.item:not(:hover) { color:var(--disable-fg-color); } div.title>div.status>div.item:not(:hover) { color:var(--disable-fg-color); }
@ -146,7 +146,7 @@ div.output.card>div.item:hover { background-color:var(--plugin-bg-color); color:
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>div.title { font-size:var(--legend-font-size); font-weight:bold; padding-bottom:var(--input-padding); display:flex; align-items:center; overflow:hidden; } div.output.card>div.item>div.title { font-size:var(--legend-font-size); font-weight:bold; padding-bottom:var(--input-padding); display:flex; align-items:center; overflow:hidden; }
div.output.card>div.item>div.title>div.title>span { padding:var(--input-padding); } div.output.card>div.item>div.title>div.title>span { padding:var(--input-padding); }
div.output.card>div.item>div.title>img { height:var(--header-height); width:var(--header-height); float:left; } div.output.card>div.item>div.title>img { height:var(--header-height); width:var(--header-height); margin:0; float:left; }
div.output.card>div.item>div.title>img.jpg { padding:var(--input-padding); } div.output.card>div.item>div.title>img.jpg { padding:var(--input-padding); }
div.item img.jpg { padding:var(--input-padding); } div.item img.jpg { padding:var(--input-padding); }
div.output.card>div.item>div.content { white-space:pre; font-size:var(--status-font-size); padding:var(--input-padding); height:var(--header-height); } div.output.card>div.item>div.content { white-space:pre; font-size:var(--status-font-size); padding:var(--input-padding); height:var(--header-height); }
@ -195,11 +195,16 @@ div.content>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-to
div.project:not(.toggle) { width:var(--project-width); flex:0 0 var(--project-width); } div.project:not(.toggle) { width:var(--project-width); flex:0 0 var(--project-width); }
div.profile:not(.toggle) { width:50%; flex:0 0 50%; } div.profile:not(.toggle) { width:50%; flex:0 0 50%; }
/* fieldset */ /* fieldset */
fieldset>div.action>div.friend { display:block; margin-left:10px !important; } fieldset>div.action>div.online { display:block; margin-left:10px !important; }
fieldset>div.action>div.friend { display:block; margin-right:10px !important; overflow:hidden; } fieldset>div.action>div.online { display:block; margin-right:10px !important; overflow:hidden; position:relative; }
fieldset>div.action>div.friend img { height:var(--action-height); transition:all 1s; float:right; } fieldset>div.action>div.online span { background-color:var(--hover-bg-color); color:var(--hover-fg-color); font-size:var(--status-font-size); position:absolute; bottom:0; }
fieldset>div.action>div.friend:not(:hover) img:not(:first-child) { margin-right:-20px; } fieldset>div.action>div.online img { height:var(--action-height); transition:margin-right 1s; float:right; }
fieldset>div.action>div.friend:hover img:not(:first-child) { margin-right:var(--input-margin); } fieldset>div.action>div.online img:hover { background-color:var(--hover-bg-color); }
fieldset>div.action>div.online:not(:hover) img:not(:first-child) { margin-right:-20px; }
body.mobile fieldset>div.action>div.online img:not(:first-child) { margin-right:-20px; }
body.width6 fieldset>div.action>div.online:not(:hover) img:not(:first-child) { margin-right:var(--input-margin); }
fieldset>div.action>div.online:hover img:not(:first-child) { margin-right:var(--input-margin); }
fieldset>div.action>div.online:hover { background-color:unset; }
fieldset>form.option>div.item:not(.icon) { margin-right:var(--button-margin); } fieldset>form.option>div.item:not(.icon) { margin-right:var(--button-margin); }
fieldset>div.action>div.item:not(:last-child) { margin-right:var(--button-margin); } fieldset>div.action>div.item:not(:last-child) { margin-right:var(--button-margin); }
fieldset.input>legend { display:none; } fieldset.input>legend { display:none; }
@ -474,7 +479,7 @@ input[type=button] { border-radius:var(--button-radius); }
fieldset>form.option>div.item.select { border-radius:var(--button-radius); } fieldset>form.option>div.item.select { border-radius:var(--button-radius); }
fieldset>form.option>div.item.button { border-radius:var(--button-radius); } fieldset>form.option>div.item.button { border-radius:var(--button-radius); }
fieldset>div.action div.item.button { border-radius:var(--button-radius); } fieldset>div.action div.item.button { border-radius:var(--button-radius); }
fieldset>div.action div.item.button:last-child { margin-right:20px; } fieldset>div.action>div.item.button:last-child { margin-right:20px; }
fieldset>div.action div.item.select:not(.button):not(.cmds) { border-radius:var(--button-radius); border-bottom:var(--notice-bg-color) solid 3px; } fieldset>div.action div.item.select:not(.button):not(.cmds) { border-radius:var(--button-radius); border-bottom:var(--notice-bg-color) solid 3px; }
fieldset:not(.input):not(.panel):not(.full):not(.cmd) { border-radius:var(--plugin-radius); } fieldset:not(.input):not(.panel):not(.full):not(.cmd) { border-radius:var(--plugin-radius); }
fieldset>div.status>legend:not(:hover):not(.select) { border-radius:0; } fieldset>div.status>legend:not(:hover):not(.select) { border-radius:0; }

View File

@ -76,7 +76,7 @@ Volcanos("user", {
return fmt == "%W"? list: can.base.Time(time, (fmt||"%y-%m-%d %H:%M:%S").replace("%w", list[now.getDay()])) return fmt == "%W"? list: can.base.Time(time, (fmt||"%y-%m-%d %H:%M:%S").replace("%w", list[now.getDay()]))
}, },
toastConfirm: function(can, content, title, action) { toastConfirm: function(can, content, title, action) {
if (!action.list || action.list.length == 0) { action = shy({confirm: action}, [html.CANCEL, html.CONFIRM], function() {}) } if (!action.list || action.list.length == 0) { action = shy({confirm: action}, [html.CANCEL, html.CONFIRM]) }
var carte = can.user.toast(can, {content: content, title: title, action: action||[cli.CLOSE], duration: -1}) var carte = can.user.toast(can, {content: content, title: title, action: action||[cli.CLOSE], duration: -1})
can.page.style(can, carte._target, html.TOP, 200, html.BOTTOM, ""); return carte can.page.style(can, carte._target, html.TOP, 200, html.BOTTOM, ""); return carte
}, },
@ -99,7 +99,10 @@ Volcanos("user", {
] }]); can.onengine.signal(can, chat.ONTOAST, can.request({}, {time: can.misc._time(), title: meta.title, content: meta.content})) ] }]); can.onengine.signal(can, chat.ONTOAST, can.request({}, {time: can.misc._time(), title: meta.title, content: meta.content}))
meta.action.meta && can.core.Item(meta.action.meta, function(key, cb) { cb.help && can.core.Value(meta.action.meta, ["_trans", key], cb.help) }) meta.action.meta && can.core.Item(meta.action.meta, function(key, cb) { cb.help && can.core.Value(meta.action.meta, ["_trans", key], cb.help) })
var action = can.onappend._action(can, meta.action.list? meta.action.list.reverse(): meta.action, ui.action, {_trans: meta.action.meta? meta.action.meta._trans: {}, var action = can.onappend._action(can, meta.action.list? meta.action.list.reverse(): meta.action, ui.action, {_trans: meta.action.meta? meta.action.meta._trans: {},
_engine: function(event, button) { can.core.CallFunc(meta.action.meta? meta.action.meta[button]: meta.action, [event, button]) }, _engine: function(event, button) {
can.core.CallFunc(meta.action.meta? meta.action.meta[button]: meta.action, [event, button])
action.close(event)
},
open: function(event) { meta.content.indexOf(ice.HTTP) == 0 && can.user.open(meta.content), meta.title.indexOf(ice.HTTP) == 0 && can.user.open(meta.title) }, open: function(event) { meta.content.indexOf(ice.HTTP) == 0 && can.user.open(meta.content), meta.title.indexOf(ice.HTTP) == 0 && can.user.open(meta.title) },
close: function(event) { action.timer.stop = true, can.page.Remove(can, ui._target) }, close: function(event) { action.timer.stop = true, can.page.Remove(can, ui._target) },
cancel: function(event) { action.timer.stop = true, can.page.Remove(can, ui._target) }, cancel: function(event) { action.timer.stop = true, can.page.Remove(can, ui._target) },

View File

@ -2,6 +2,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { if (can.user.mod.isPod)
can.require(["/plugin/local/code/inner.js"], function(can) { can.onimport._last_init(can, msg, function() { can.require(["/plugin/local/code/inner.js"], function(can) { can.onimport._last_init(can, msg, function() {
can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(can) }) can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(can) })
can.db.undo = [], can.db.redo = [], can.onimport._input(can), cb && cb(msg) can.db.undo = [], can.db.redo = [], can.onimport._input(can), cb && cb(msg)
can.onimport._online(can)
}) }) }) })
}, },
_input: function(can) { var ui = can.page.Append(can, can.ui.content.parentNode, [ _input: function(can) { var ui = can.page.Append(can, can.ui.content.parentNode, [

View File

@ -226,29 +226,23 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
}, sub.onaction.close = function() { can.onmotion.hidden(can, target) }, can.base.isFunc(cb) && cb(sub) }, sub.onaction.close = function() { can.onmotion.hidden(can, target) }, can.base.isFunc(cb) && cb(sub)
}, target, field) }, target, field)
}, },
_online: function(can, delay) { _online: function(can, delay) { can.onmotion.delay(can, function() {
can.onmotion.delay(can, function() { if (!can.ui.online) {
if (!can.ui.friend) { if (can.isCmdMode()) {
if (can.isCmdMode()) { can.ui.online = can.page.Append(can, can._action, ["item online"])._target
can.ui.friend = can.page.Append(can, can._action, ["item friend"])._target } else {
} else { var p = can.page.SelectOne(can, can._action, "div.item._space"); p = p? p.nextSibling: p
var p = can.page.SelectOne(can, can._action, "div.item._space").nextSibling can.ui.online = can.page.insertBefore(can, ["item online"], p, can._action)
can.ui.friend = can.page.insertBefore(can, ["item friend"], p, can._action)
}
} }
can._root.Header.run(can.request({}, {_space: can.ConfSpace(), _index: can.ConfIndex()}), [ctx.ACTION, web.ONLINE], function(msg) { }
can.page.Appends(can, can.ui.friend, msg.Table(function(value, index) { can._root.Header.run(can.request({}, {_space: can.ConfSpace()||can.misc.Search(can, ice.POD), _index: can.ConfIndex()}), [ctx.ACTION, web.ONLINE], function(msg) {
return index < 5 && {img: can.misc.Resource(can, can.page.Appends(can, can.ui.online, msg.Table(function(value, index) {
value.username == can.user.info.username? value.icons: value.avatar||"usr/icons/contexts.png"), return index < 5 && {img: can.misc.Resource(can, value.username == can.user.info.username? value.icons: value.avatar||"usr/icons/contexts.png"),
title: [ title: [[value.usernick, value.username].join(lex.SP), [value.agent, value.system, value.ip].join(lex.SP)].join(lex.NL)}
[value.usernick, value.username].join(" "), }))
[value.agent, value.system, value.ip].join(" "), can.page.Append(can, can.ui.online, [{text: msg.Length()+""}])
].join("\n")} }), can.onimport._online(can, 30000)
})) }, delay) },
})
can.onimport._online(can, 30000)
}, delay)
},
}) })
Volcanos(chat.ONLAYOUT, { Volcanos(chat.ONLAYOUT, {
_init: function(can, height, width) { _init: function(can, height, width) {