mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
add some
This commit is contained in:
parent
1710964e37
commit
13260d13c8
7
const.js
7
const.js
@ -422,6 +422,9 @@ var icon = {
|
||||
access: "bi bi-file-earmark-lock",
|
||||
sso: "bi bi-shield-check", login: "bi bi-person-check", token: "bi bi-key",
|
||||
username: "bi bi-person-gear", nodename: "bi bi-globe",
|
||||
password: "bi bi-shield-lock",
|
||||
database: "bi bi-database",
|
||||
table: "bi bi-table",
|
||||
domain: "bi bi-globe",
|
||||
origin: "bi bi-globe",
|
||||
server: "bi bi-globe",
|
||||
@ -474,7 +477,9 @@ var icon = {
|
||||
record: "bi bi-record-circle", record1: "bi bi-images", record2: "bi bi-record-circle",
|
||||
|
||||
"client.name": "bi bi-globe",
|
||||
machine: "bi bi-pc-display", port: "bi bi-hash",
|
||||
machine: "bi bi-pc-display",
|
||||
host: "bi bi-pc-display",
|
||||
port: "bi bi-hash",
|
||||
arch: "bi bi-cpu", os: "bi bi-ubuntu",
|
||||
role: "bi bi-person-square",
|
||||
title: "bi bi-textarea-t",
|
||||
|
6
frame.js
6
frame.js
@ -169,6 +169,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
if (event.isTrusted && cmds && cmds.length > 0 && cmds[0] == ctx.ACTION) {
|
||||
can.onengine.signal(can, "onrecord", can.request({}, {cmds: [sub.ConfSpace(), sub.ConfIndex()].concat(cmds||[])}))
|
||||
}
|
||||
sub.request(event, sub.Option())
|
||||
sub.onappend._output0(sub, sub.Conf(), event||{}, cmds||sub.Input([], !silent), cb, silent)
|
||||
return true
|
||||
},
|
||||
@ -251,7 +252,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
_action: function(can, list, action, meta, hold, limit) { meta = meta||can.onaction||{}, action = action||can._action, hold || can.onmotion.clear(can, action)
|
||||
function run(event, button) { can.misc.Event(event, can, function(msg) { var _can = can._fields? can.sup: can; can.requestAction(event, button)
|
||||
var cb = meta[button]||meta[chat._ENGINE]; cb? can.core.CallFunc(cb, {event: event, can: can, button: button}):
|
||||
can.run(event, button == mdb.LIST? []: [ctx.ACTION, button].concat(_can.Input()))
|
||||
can.run(event, can.base.isIn(button, mdb.LIST, web.REFRESH)? []: [ctx.ACTION, button].concat(_can.Input()))
|
||||
}) }
|
||||
var list = can.page.inputs(can, can.base.getValid(can.base.Obj(list), can.core.Value(can, [chat.ONACTION, mdb.LIST]), meta != can.onaction? can.core.Item(meta): [])||[])
|
||||
limit = limit||html.ACTION_BUTTON; if (list.length > limit) {
|
||||
@ -333,7 +334,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
if (action !== false) { can.onkeymap._build(sub)
|
||||
can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
|
||||
sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS), null, msg), can.user.isMobile || sub.onappend.tools(sub, msg)
|
||||
can.core.Item(can.Action(), function(key) { var value = can.misc.sessionStorage(can, [can.ConfIndex(), ctx.ACTION, key]); value && can.Action(key, value[0]) })
|
||||
can.core.Item(can.Action(), function(key) {
|
||||
var value = can.misc.sessionStorage(can, [can.ConfIndex(), ctx.ACTION, key]); value && can.Action(key, msg.Option(key)||value[0]) })
|
||||
if (msg.Option("sess.online") == ice.TRUE) { can.ondaemon._online(can) }
|
||||
} can.onappend.style(sub, sub.Conf(ctx.STYLE)), can.onmotion.story.auto(can, can._output)
|
||||
if (can.onimport.size) {
|
||||
|
15
index.css
15
index.css
@ -190,8 +190,14 @@ div.output>div.code>div.form>input[type=button] { min-width:200px; }
|
||||
div.output>div.code>div.form>input[type=button][name=confirm] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); margin:var(--button-margin) 0; }
|
||||
body.en span[lang^=zh] { display:none; } body.zh span[lang^=en] { display:none; }
|
||||
/* project */
|
||||
div.project div.action { width:100%; }
|
||||
div.project div.list { border-left:var(--disable-fg-color) dashed 1px; margin-left:var(--button-margin); clear:both; }
|
||||
div.project div.action:not(.hide) { width:100%; display:flex; }
|
||||
div.project div.action div.item input { border-right:var(--box-border); }
|
||||
div.project div.action div.item input:hover { border-right:var(--box-notice); }
|
||||
div.project div.action div.item.icons input { display:none; }
|
||||
div.project div.action div.item.icons { background-color:var(--plugin-bg-color); padding:0; }
|
||||
div.project div.list { margin-left:var(--button-margin); clear:both; }
|
||||
body.width6 div.project div.list { margin-left:var(--legend-margin); }
|
||||
// div.project div.list { border-left:var(--disable-fg-color) dashed 1px; }
|
||||
div.project div.list fieldset { position:static; }
|
||||
div.project div.item.select {
|
||||
border-right:var(--box-notice3);
|
||||
@ -381,7 +387,7 @@ body:not(.mobile) fieldset:not(.Action):not(.output):not(.cmd)>div.action:not(.h
|
||||
fieldset.panel>legend, fieldset.panel>div.status { display:none; }
|
||||
fieldset.output>legend, fieldset.output>form.option, fieldset.output>div.action:not(.flex), fieldset.output>div.status, fieldset.output>div.item { display:none; }
|
||||
div.action, div.output, div.status, div.project, div.content, div.profile, div.display, table.content, table.content td, div.list, div.code, div.story, div.float, fieldset.float { overflow:auto; }
|
||||
legend, form.option>div.item, div.action>div.item, div.action>div.tabs, fieldset>div.status>div.item { float:left; display:flex; align-items:center; }
|
||||
legend, form.option>div.item:not(.hide), div.action>div.item, div.action>div.tabs, fieldset>div.status>div.item { float:left; display:flex; align-items:center; }
|
||||
fieldset.story, fieldset>div.output, fieldset>div.status, div.output>div.project div.item, div.content:not(.item), div.code, div.story[data-type=spark] { clear:both; }
|
||||
fieldset.story { position:sticky; left:0; }
|
||||
fieldset.auto, fieldset.full, fieldset.float { position:fixed; }
|
||||
@ -658,6 +664,7 @@ div.item.button._space.icons { flex-grow:1; min-width:var(--button-margin); }
|
||||
div.item.button._space.icons:hover { background-color:unset; cursor:unset; }
|
||||
fieldset.inner fieldset.story div.item.button._space.icons { margin-left:0; flex-grow:1; }
|
||||
div.tabs>span { font-style:italic; white-space:pre; }
|
||||
div.tabs>i:first-child { margin-right:var(--input-margin); margin-bottom:-4px; }
|
||||
div.tabs>span.icon { font-size:var(--icon-font-size); font-style:normal; padding-left:var(--input-padding); visibility:hidden; }
|
||||
div.tabs.select>span.icon { visibility:visible; }
|
||||
div.tabs:hover>span.icon { visibility:visible; }
|
||||
@ -789,6 +796,7 @@ fieldset.Action>div.output>fieldset.ssh.cloud.profile { box-shadow:none; backgro
|
||||
fieldset.Action>div.output>fieldset.ssh.cloud.profile:hover { box-shadow:none; }
|
||||
fieldset.Action>div.output>fieldset.ssh.cloud.profile>div.output { background-color:transparent; }
|
||||
fieldset.Action>div.output>fieldset.plugin>legend { border-top:var(--box-notice3); border-top-left-radius:0; }
|
||||
// body.cmd fieldset.Action>div.output>fieldset.plugin>legend { min-width:var(--project-width); justify-content:center; }
|
||||
fieldset.Action>div.output>fieldset.plugin>legend:not(:hover) { background-color:var(--output-bg-color); }
|
||||
fieldset.Action:not(.horizon):not(.grid)>fieldset.plugin>form.option>div.item.text.path>input { width:var(--project-width); }
|
||||
fieldset.web.code.docker.studio>div.output>fieldset>legend { display:none; }
|
||||
@ -800,6 +808,7 @@ fieldset.web.mall.region>div.output>table.content td:nth-child(4) { text-align:r
|
||||
fieldset.web.mall.region>div.output>table.content td:nth-child(5) { text-align:right; }
|
||||
fieldset.web.mall.region>div.output>fieldset.web.mall.region.float>div.action { display:none; }
|
||||
fieldset.web.dream>div.output>div.item div.content>span { padding:0 var(--input-padding); }
|
||||
fieldset.xterm>form.option>div.item.text.hash input { width:var(--url-input-width); }
|
||||
fieldset.web.dream>div.output>div.item div.content>span.files { background-color:purple; color:var(--notice-fg-color);}
|
||||
fieldset.web.dream>div.output>div.item div.content>span.add { background-color:var(--notice-bg-color); color:var(--notice-fg-color);}
|
||||
fieldset.web.dream>div.output>div.item div.content>span.del { background-color:var(--danger-bg-color); color:var(--danger-fg-color);}
|
||||
|
@ -130,6 +130,9 @@ Volcanos(chat.ONACTION, {list: [
|
||||
can.db._key_list = can.onkeymap._parse(event, can, mdb.PLUGIN, can.db._key_list, can.ui.content)
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONEXPORT, {
|
||||
hash: function(can) { return can.misc.SearchHash(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)) },
|
||||
})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
scrollHold: function(can, count, begin) { var scroll = can.ui.content.scrollLeft; can.ui.current.focus(), count != undefined && can.onkeymap.cursorMove(can.ui.current, count, begin == undefined? count: begin), can.ui.content.scrollLeft = scroll },
|
||||
cursorDown: function(can, target) { var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p) },
|
||||
|
@ -7,7 +7,10 @@ Volcanos(chat.ONIMPORT, {
|
||||
_history: function(can, msg) { history.length == 1? can.user.close(): history.back() },
|
||||
_confirm: function(can, msg, arg) { can.user.toastConfirm(can, arg, "", function() { can.runAction(can.request({}, msg), "confirm") }) },
|
||||
_refresh: function(can, msg, arg) { can.core.Timer(parseInt(arg||"30"), function() { can.Update(can.request({}, {_count: parseInt(msg.Option("_count")||"3")-1})) }) },
|
||||
_rewrite: function(can, msg) { var arg = msg._arg; for (var i = 0; i < arg.length; i += 2) { can.Option(arg[i], arg[i+1]), can.Action(arg[i], arg[i+1]) } can.Update() },
|
||||
_rewrite: function(can, msg) { var arg = msg._arg; for (var i = 0; i < arg.length; i += 2) {
|
||||
can.Option(arg[i], arg[i+1]), can.Action(arg[i], arg[i+1])
|
||||
can.misc.sessionStorage(can, [can.ConfIndex(), ctx.ACTION, arg[i]], arg[i+1])
|
||||
} can.Update() },
|
||||
_display: function(can, msg) { can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)) },
|
||||
_clear: function(can, msg) { can.onmotion.clear(can) },
|
||||
_inner: function(can, sub, msg) { sub = sub||can, can.onmotion.scrollIntoView(can, can.onappend.table(sub, msg)), can.onmotion.scrollIntoView(can, can.onappend.board(sub, msg)), can.onmotion.story.auto(sub) },
|
||||
@ -320,9 +323,14 @@ Volcanos(chat.ONEXPORT, {_output: function(can, msg) {},
|
||||
statusHeight: function(can) {
|
||||
return can.page.ClassList.has(can, can._target, html.OUTPUT) || !can.page.isDisplay(can._status) || (can._target.offsetHeight > 0 && can._status.offsetHeight == 0) ||
|
||||
can._status.innerHTML == "" && !can.page.ClassList.has(can, can._target, html.PLUG)? 0: html.STATUS_HEIGHT },
|
||||
link: function(can) { var args = can.Option(); args.pod = can.ConfSpace()||can.misc.Search(can, ice.POD), args.cmd = can.ConfIndex()
|
||||
link: function(can) {
|
||||
if (can.sub && can.sub.onexport.link) {
|
||||
return can.sub.onexport.link(can.sub)
|
||||
}
|
||||
var args = can.Option(); args.pod = can.ConfSpace()||can.misc.Search(can, ice.POD), args.cmd = can.ConfIndex()
|
||||
can.core.Item(args, function(key, value) { key != ice.POD && !value && delete(args[key]) })
|
||||
return can.misc.MergePodCmd(can, args, true) },
|
||||
return can.misc.MergePodCmd(can, args, true)
|
||||
},
|
||||
args: function(can) { return can.Option() },
|
||||
close: function(can, msg) {},
|
||||
})
|
||||
|
@ -26,14 +26,14 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
||||
can.onimport.layout = can.onimport.layout||function() { var height = can.onlayout.expand(can, target); can.sup.onexport.outputMargin = function() { return height } }
|
||||
can.page.Append(can, target, list), can.onmotion.orderShow(can, target)
|
||||
},
|
||||
filter: function(can, target) {
|
||||
filter: function(can, target, output) { output = output||target
|
||||
return can.onappend.input(can, {icon: icon.SEARCH, type: html.TEXT, name: web.FILTER, placeholder: "search in n items", onkeydown: function() {}, onkeyup: function(event) {
|
||||
if (event.key == code.ENTER) {
|
||||
can.page.Select(can, target, html.DIV_ITEM+":not(.hide)", function(target) { target.click() })
|
||||
can.page.Select(can, output, html.DIV_ITEM+":not(.hide)", function(target) { target.click() })
|
||||
} else if (event.key == code.ESCAPE) { event.currentTarget.value = "", event.currentTarget.blur()
|
||||
can.page.Select(can, target, html.DIV_ITEM, function(target) { can.onmotion.toggle(can, target, true) })
|
||||
} else { if (can.onkeymap.selectCtrlN(event, can, target, html.DIV_ITEM+":not(.filter):not(.hide)")) { return }
|
||||
can.page.Select(can, target, html.DIV_ITEM, function(target) {
|
||||
can.page.Select(can, output, html.DIV_ITEM, function(target) { can.onmotion.toggle(can, target, true) })
|
||||
} else { if (can.onkeymap.selectCtrlN(event, can, output, html.DIV_ITEM+":not(.filter):not(.hide)")) { return }
|
||||
can.page.Select(can, output, html.DIV_ITEM, function(target) {
|
||||
can.onmotion.toggle(can, target, target.innerText.indexOf(event.currentTarget.value) > -1 || target == event.currentTarget.parentNode)
|
||||
})
|
||||
}
|
||||
@ -159,7 +159,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
||||
}, onclick: function(event) {
|
||||
cb(event, item, event.currentTarget._list && can.onmotion.toggle(can, event.currentTarget._list))
|
||||
}, oncontextmenu: function(event) {
|
||||
if (can.base.isFunc(cbs)) { var menu = cbs(event, ui._target); if (menu) { can.user.carteRight(event, can, menu.meta, menu.list, menu) } }
|
||||
if (can.base.isFunc(cbs)) { var menu = cbs(event, event.currentTarget); if (menu) { return can.user.carteRight(event, can, menu.meta, menu.list, menu) } }
|
||||
can.user.carteItem(event, can, item)
|
||||
}}
|
||||
}) }], target.nextSibling, target.parentNode)
|
||||
_select && _select.click()
|
||||
@ -195,7 +196,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
||||
if (!next) { return true } next && next.click()
|
||||
} can.page.Remove(can, target), can.onexport.tabs && can.onexport.tabs(can)
|
||||
}
|
||||
return {view: [[html.TABS, tabs.type, tabs.role, tabs.status]], title: tabs.title||tabs.text, list: [{text: [tabs.nick||tabs.name, html.SPAN, mdb.NAME]}, {icon: mdb.DELETE, onclick: function(event) {
|
||||
return {view: [[html.TABS, tabs.type, tabs.role, tabs.status]], title: tabs.title||tabs.text, list: [tabs.icon && {icon: tabs.icon}, {text: [tabs.nick||tabs.name, html.SPAN, mdb.NAME]}, {icon: mdb.DELETE, onclick: function(event) {
|
||||
tabs._target._close(), can.onkeymap.prevent(event)
|
||||
}}], onclick: function(event) {
|
||||
can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user