mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt status
This commit is contained in:
parent
35842bd525
commit
8d6cf1d3a1
2
const.js
2
const.js
@ -286,6 +286,7 @@ var http = {
|
||||
Accept: "Accept", ContentType: "Content-Type", ApplicationJSON: "application/json", ApplicationFORM: "application/x-www-form-urlencoded",
|
||||
}
|
||||
var html = {value: {
|
||||
HEADER_HEIGHT: 48,
|
||||
RIVER_WIDTH: 230, PROJECT_WIDTH: 230,
|
||||
ACTION_HEIGHT: 32, STATUS_HEIGHT: 32,
|
||||
PLUG_WIDTH: 800, PLUG_HEIGHT: 480, STORY_HEIGHT: 480, FLOAT_HEIGHT: 480, FLOAT_WIDTH: 1200, DESKTOP_WIDTH: 1200, DESKTOP_HEIGHT: 684,
|
||||
@ -328,6 +329,7 @@ var html = {value: {
|
||||
CLASS: "class", DARK: "dark", LIGHT: "light", WHITE: "white", BLACK: "black",
|
||||
FILTER: "filter", TOGGLE: "toggle", EXPAND: "expand", SPEED: "speed", HOVER: "hover", HOVER_SELECT: "hover,select",
|
||||
NOT_HIDE: ":not(.hide)",
|
||||
PICKER: "picker",
|
||||
|
||||
PAGE: "page", TABS: "tabs", MENU: "menu", NODE: "node", PLUG: "plug",
|
||||
ZONE: "zone", LIST: "list", ITEM: "item", NAME: "name", ICON: "icon", VIEW: "view",
|
||||
|
41
frame.js
41
frame.js
@ -280,13 +280,23 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
msg && item.name == nfs.SIZE && (item.value = can.base.Size(item.value||msg._xhr.responseText.length))
|
||||
can.page.Append(can, status, [{view: html.ITEM, list: [
|
||||
{text: [can.page.Color(can.user.trans(can, item.name, null, html.INPUT)), html.LABEL]}, {text: [": ", html.LABEL]}, {text: [(item.value == undefined? "": (item.value+"").trim())+"", html.SPAN, item.name]},
|
||||
], onclick: function(event) { can.user.copy(event, can, item.value)
|
||||
if (can.base.isIn(item.name, cli.COST, nfs.SIZE)) {
|
||||
can.onappend._float(can, {title: "msg", index: ice.CAN_PLUGIN, display: "/plugin/story/json.js"}, [], function(sub) {
|
||||
], onclick: function(event) {
|
||||
if (item.name == mdb.COUNT) {
|
||||
can.onappend._float(can, {index: ctx.CONFIG}, [can.ConfIndex()])
|
||||
} else if (can.base.isIn(item.name, mdb.TIME, cli.COST)) {
|
||||
can.onappend._float(can, {index: "can.toast"}, [can.ConfIndex()])
|
||||
} else if (can.base.isIn(item.name, nfs.SIZE)) {
|
||||
can.onappend._float(can, {title: "msg(报文)", index: ice.CAN_PLUGIN, display: "/plugin/story/json.js"}, [], function(sub) {
|
||||
sub.run = function(event, cmds, cb) { var _msg = can.request(event); _msg.result = [JSON.stringify(msg)], cb(_msg) }
|
||||
})
|
||||
} else if (item.name == ice.LOG_TRACEID) {
|
||||
can.onappend._float(can, web.CODE_XTERM, ["sh", item.value, "grep "+item.value+" var/log/bench.log | grep -v grep | grep -v '"+item.value+" $'"])
|
||||
} else if (can.base.isIn(item.name, html.HEIGHT)) {
|
||||
can.onappend._float(can, {index: "can.view", _target: can._fields||can._target})
|
||||
} else if (can.base.isIn(item.name, html.WIDTH)) {
|
||||
can.onappend._float(can, {index: "can.data", _target: can})
|
||||
} else {
|
||||
can.user.copy(event, can, item.value)
|
||||
}
|
||||
}}])
|
||||
})
|
||||
@ -316,7 +326,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
var count = can.page.Select(can, can._output, html.TR, function(tr, index) {
|
||||
if (!can.page.ClassList.set(can, tr, html.HIDE, index > 0 && tr.innerText.indexOf(event.target.value) == -1)) { return tr }
|
||||
}).length
|
||||
count += can.page.SelectChild(can, can.ui.content||can._output, html.DIV_ITEM, function(target) {
|
||||
count += can.page.SelectChild(can, can.ui && can.ui.content? can.ui.content: can._output, html.DIV_ITEM, function(target) {
|
||||
if (!can.page.ClassList.set(can, target, html.HIDE, target.innerText.indexOf(event.target.value) == -1)) { return target }
|
||||
}).length
|
||||
can.user.toast(can, "filter out "+count+" lines")
|
||||
@ -573,12 +583,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
},
|
||||
_float: function(can, index, args, cb) {
|
||||
can.onappend.plugin(can, typeof index == code.OBJECT? (index.mode = chat.FLOAT, index.args = args, index): {index: index, args: args, mode: chat.FLOAT}, function(sub) {
|
||||
sub._target.onclick = function(event) { can.page.Select(can, document.body, html.FIELDSET_FLOAT, function(target) { can.page.style(can, target, "z-index", target == sub._target? 10: 9) }) }
|
||||
sub.onmotion.float(sub), sub.onaction.close = function() { can.page.Remove(can, sub._target) }, cb && cb(sub)
|
||||
sub._target.onclick = function(event) {
|
||||
can.page.Select(can, document.body, "fieldset.float", function(target) {
|
||||
can.page.style(can, target, "z-index", target == sub._target? 10: 9)
|
||||
})
|
||||
}
|
||||
}, can._root._target)
|
||||
},
|
||||
figure: function(can, meta, target, cb) { if (meta.type == html.SELECT || meta.type == html.BUTTON) { return }
|
||||
@ -785,10 +791,11 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
var last = can._delay_list.meta[key]||0, self = can._delay_list.meta[key] = can._delay_list.list.push(cb)
|
||||
return can.core.Timer(interval||30, function() { cb(self, last, can._delay_list.meta[key]) })
|
||||
},
|
||||
float: function(can) { var height = can.base.Max(html.FLOAT_HEIGHT, can.page.height()/2), width = can.base.Max(html.FLOAT_WIDTH, can.page.width()-html.RIVER_WIDTH)
|
||||
float: function(can) { var height = can.base.Max(html.FLOAT_HEIGHT, can.page.height()/2), width = can.base.Max(html.FLOAT_WIDTH, can.page.width()-html.RIVER_WIDTH), top = html.HEADER_HEIGHT, left = html.RIVER_WIDTH
|
||||
if (can.user.mod.isCmd) { height = can.base.Max(can.page.height()/2-html.ACTION_HEIGHT, can.page.height(), 320), width = can.page.width()/2, top = html.ACTION_HEIGHT, left = 0 }
|
||||
if (can.user.isMobile) { if (can.user.isLandscape()) { height = can.page.height()*3/4, width = can.page.width()*3/4 } else { width = can.page.width() } }
|
||||
can.onimport.size(can, height, width, true), can.onmotion.move(can, can._target, {left: can.page.width()-width, top: can.page.height()/4})
|
||||
can.onmotion.resize(can, can._target, function(height, width) { can.onimport.size(can, height, width, true) })
|
||||
can.onimport.size(can, height, width, true), can.onmotion.move(can, can._target, {left: can.page.width()-width, top: (can.page.height()-height)/2})
|
||||
can.onmotion.resize(can, can._target, function(height, width) { can.onimport.size(can, height, width, true) }, top, left)
|
||||
},
|
||||
clear: function(can, target) { return can.page.Modify(can, target||can._output, ""), target },
|
||||
cache: function(can, next) { var list = can.base.getValid(can.base.Obj(can.core.List(arguments).slice(2)), [can._output])
|
||||
@ -820,20 +827,20 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
can.core.Timer(time, function(event, value, index) { can.page.style(can, target, html.OPACITY, (index+1)/time.length) }, cb)
|
||||
},
|
||||
move: function(can, target, layout) { layout && can.page.style(can, target, layout), can.onmotion.resize(can, target, function() {}) },
|
||||
resize: function(can, target, cb, top) { var begin, action
|
||||
resize: function(can, target, cb, top, left) { var begin, action
|
||||
target.onmousedown = function(event) { if (event.which != 1 || event.target != target && !(can.page.ClassList.has(can, event.target, html.STATUS) && can.page.tagis(event.target, html.DIV))) { return } window._mousemove = target
|
||||
begin = {left: target.offsetLeft, top: target.offsetTop, height: target.offsetHeight, width: target.offsetWidth, x: event.x, y: event.y}
|
||||
}, target.onmouseup = function(event) { begin = null, delete(window._mousemove) }
|
||||
target.onmousemove = function(event) {
|
||||
if (begin) { var dy = event.y - begin.y, dx = event.x - begin.x
|
||||
switch (action) {
|
||||
case html.LEFT: can.page.style(can, target, html.LEFT, can.base.Min(begin.left + dx, 0, window.innerWidth-target.offsetWidth)), dx = -dx
|
||||
case html.LEFT: can.page.style(can, target, html.LEFT, can.base.Min(begin.left + dx, left||0, window.innerWidth-target.offsetWidth)), dx = -dx
|
||||
case html.RIGHT: cb? cb(begin.height, begin.width + dx): can.page.style(can, target, html.WIDTH, begin.width + dx); break
|
||||
case html.TOP: can.page.style(can, target, html.TOP, can.base.Min(begin.top + dy, top, window.innerHeight-target.offsetHeight)), dy = -dy
|
||||
case html.TOP: can.page.style(can, target, html.TOP, can.base.Min(begin.top + dy, top||0, window.innerHeight-target.offsetHeight)), dy = -dy
|
||||
case html.BOTTOM: cb? cb(begin.height + dy, begin.width): can.page.style(can, target, html.HEIGHT, begin.height + dy); break
|
||||
default:
|
||||
can.page.style(can, target,
|
||||
html.LEFT, can.base.Min(begin.left + dx, 0, window.innerWidth-target.offsetWidth),
|
||||
html.LEFT, can.base.Min(begin.left + dx, left||0, window.innerWidth-target.offsetWidth),
|
||||
html.TOP, can.base.Min(begin.top + dy, top||0, window.innerHeight-html.ACTION_HEIGHT)
|
||||
)
|
||||
} can.onkeymap.prevent(event)
|
||||
@ -842,7 +849,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
} else if (target.offsetWidth-margin < p.x) { cursor = "ew-resize", action = html.RIGHT
|
||||
} else if (target.offsetHeight-margin < p.y || can.page.ClassList.has(can, event.target, html.STATUS) && can.page.tagis(event.target, html.DIV)) { cursor = "ns-resize", action = html.BOTTOM
|
||||
} else if (p.y < margin) { cursor = "ns-resize", action = html.TOP
|
||||
} else { cursor = "", action = "" } can.page.style(can, target, "cursor", cursor)
|
||||
} else { cursor = event.target == target? "move": "", action = "" } can.page.style(can, target, "cursor", cursor)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
18
index.css
18
index.css
@ -100,7 +100,6 @@ table.content th span { cursor:pointer; }
|
||||
table.content th i { position:absolute; right:var(--input-padding); cursor:pointer; }
|
||||
table.content th:not(.select) i { display:none; }
|
||||
table.content th.select { border:var(--notice-bg-color) solid 1px; }
|
||||
/* table.content th.select { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } */
|
||||
table.content th.select[data-asc="1"] i.bi-sort-down-alt { display:none; }
|
||||
table.content th.select[data-asc="0"] i.bi-sort-up { display:none; }
|
||||
table.content td { padding:var(--table-padding); }
|
||||
@ -287,7 +286,6 @@ div.tabs>span { font-style:italic; }
|
||||
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; }
|
||||
/* div.action>div.item.icons.start>span.icon { font-size:30px; line-height:28px; } */
|
||||
fieldset.plugin>legend { font-style:italic; }
|
||||
fieldset.plugin>form.option>div.button.icons>input { display:none; }
|
||||
fieldset.plugin>div.action>div.button.icons>input { display:none; }
|
||||
@ -307,7 +305,7 @@ fieldset.plug>div.action>div.button.icons>input { display:none; }
|
||||
fieldset.plug>form.option>div.icon:first-child { margin-left:var(--input-margin); }
|
||||
fieldset>form.option>div.text>span.value {
|
||||
line-height:calc(var(--action-height) - 2 * var(--input-padding));
|
||||
white-space:pre; padding:var(--input-padding) var(--button-padding); max-width:320px; height:var(--action-height); overflow:auto; }
|
||||
white-space:pre; padding:var(--input-padding) var(--button-padding); max-width:320px; height:var(--action-height); overflow:auto; }
|
||||
fieldset.plug>form.option>div.text>span.value { display:none; }
|
||||
fieldset:not(.float)>form.option>div.text>span.value { display:none; }
|
||||
fieldset.float:not(.plug)>form.option>div.text:not(.filter)>input { display:none; }
|
||||
@ -432,7 +430,6 @@ input[type=button].danger:hover { background-color:var(--danger-bg-color); color
|
||||
input[type=button].notice:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||
input[type=button].danger { border:var(--danger-bg-color) solid 1px; }
|
||||
input[type=button].notice { border:var(--notice-bg-color) solid 1px; }
|
||||
/* input[type=button][name=login] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } */
|
||||
table.content tr:hover { background-color:var(--tr-hover-bg-color) !important; }
|
||||
table.content tr.select { background-color:var(--tr-hover-bg-color); }
|
||||
table.content th { background-color:var(--th-bg-color); color:var(--th-fg-color); }
|
||||
@ -522,7 +519,6 @@ body.mobile fieldset.Action.cmd { margin-top:0; }
|
||||
body.mobile fieldset.Action>div.output { overflow-x:hidden; }
|
||||
body.mobile fieldset.word>div.output { overflow-x:hidden; }
|
||||
body.mobile fieldset.word>div.output div.story.flex { display:block; }
|
||||
/* body.mobile fieldset.word>div.output div.story.flex>* { padding:unset; } */
|
||||
body.mobile fieldset.word>div.output>fieldset.story>form.option>div.text { display:none; }
|
||||
body.mobile fieldset.word.float>div.output>div.project { top:var(--action-height); }
|
||||
body.mobile fieldset.web.code.inner.cmd>div.output { overflow:hidden; }
|
||||
@ -602,15 +598,20 @@ fieldset.web.chat.location>div.output .amap-controls { z-index:unset; }
|
||||
fieldset.web.chat.location>div.output .amap-maptypecontrol { z-index:unset; }
|
||||
fieldset.web.chat.location>div.output>div.layout>div.layout>div.profile { background-color:var(--plugin-bg-color); position:absolute; right:0; width:360px; z-index:9; border-left:none; }
|
||||
fieldset.web.chat.iframe>form.option input[name=hash] { width:var(--river-width); }
|
||||
fieldset.can.data>div.output { font-family:var(--code-font-family); font-size:14px; white-space:pre; }
|
||||
fieldset.can.data>div.output div.item { display:flex; gap:5px; }
|
||||
fieldset.can.data>div.output { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; }
|
||||
fieldset.can.data>div.output div.item:not(.hide) { display:flex; gap:5px; }
|
||||
fieldset.can.data>div.output div.view div.item:not(.hide) { display:block; }
|
||||
fieldset.can.data>div.output div.item>span.icon { color:var(--disable-fg-color); }
|
||||
fieldset.can.data>div.output div.item.string>span.value { color:var(--code-string); }
|
||||
fieldset.can.data>div.output div.item.number>span.value { color:var(--code-constant); }
|
||||
fieldset.can.data>div.output div.item.object>span.value { color:var(--disable-fg-color); }
|
||||
fieldset.can.data>div.output div.item.target>span.value { color:var(--disable-fg-color); }
|
||||
fieldset.can.data>div.output div.item.function>span.value { color:var(--disable-fg-color); }
|
||||
fieldset.can.view { font-size:14px; }
|
||||
fieldset.can.data>div.output div.list.function { font-style:italic; border-left:blue solid 5px; margin-left:20px; }
|
||||
fieldset.can.view>div.output { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; }
|
||||
fieldset.can.view>div.output div.item>span.toggle { width:var(--code-font-size); display:inline-block; }
|
||||
fieldset.can.view>div.output div.item>span.inner { color:var(--disable-fg-color); }
|
||||
fieldset.can.view>div.output div.list { border-left:var(--disable-fg-color) dashed 1px; padding-left:10px; margin-left:4px; }
|
||||
fieldset.Search div.story[data-type=spark] { margin:0; }
|
||||
fieldset.Search>div.output>div.profile { border-left:none; width:unset; }
|
||||
fieldset.Action.tabs table.content { width:100%; }
|
||||
@ -627,7 +628,6 @@ fieldset.plug>div.output table.content { width:100%; }
|
||||
fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:var(--input-padding); }
|
||||
fieldset.plug.dream.zone>div.output>div.item>img { margin-right:var(--input-margin); }
|
||||
fieldset.plug.dream.zone>div.output>div.item>span { line-height:var(--action-height); }
|
||||
/* body>div.input.vimer.plug td:first-child { display:none; } */
|
||||
body>div.carte.header.avatar img { width:370px; }
|
||||
body>fieldset.story.web.chat.wx.agent { position:fixed; left:0; bottom:0; }
|
||||
body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); }
|
||||
|
42
lib/page.js
42
lib/page.js
@ -110,20 +110,23 @@ Volcanos("page", {
|
||||
function show(value, deep) { deep = deep == undefined? 2: 0; switch (typeof value) {
|
||||
case code.OBJECT: if (!value) { return {} }
|
||||
if (value._path) { return {value: "@\""+value._path+"\""} }
|
||||
if (value.tagName) { return {type: nfs.TARGET, value: "$ "+value.tagName.toLowerCase()+(value.className? nfs.PT+value.className.replaceAll(lex.SP, nfs.PT):"")} }
|
||||
if (value.tagName) { return {type: nfs.TARGET, value: "$"+value.tagName.toLowerCase()+(value.className? nfs.PT+value.className.replaceAll(lex.SP, nfs.PT):"")} }
|
||||
if (deep < 0) { return {value: value.length == undefined? "{"+can.page.unicode.inner+"}": "["+can.page.unicode.inner+"]"} }
|
||||
if (value.length != undefined) { return {value: (value.length > 3? value.length+lex.SP: "")+"["+can.core.List(value, function(value, index) { if (index < 6) { return short(show(value, deep-1).value, index+1) } }).join(mdb.FS)+"]"} }
|
||||
return {value: "{"+can.core.Item(value, function(key, val, list) { if (value.hasOwnProperty(key) && val && list.length < 7) { return short(key+nfs.DF+show(val, deep-1).value, list.length) } }).join(mdb.FS)+"}"}
|
||||
case code.STRING: return {open: "s", close: "s", value: "\""+(deep == 2? value.replaceAll("\n", "\\n"): short(value))+"\""}
|
||||
case code.NUMBER: return {open: "n", close: "n", value: value}
|
||||
case code.BOOLEAN: return {open: "b", close: "b", value: value}
|
||||
case code.FUNCTION: return {open: "f", close: "f", value: deep == 2? (""+value).split(lex.NL)[0]: "function(..) {..}"}
|
||||
case code.FUNCTION: return {open: "f", close: "f", value: deep == 2? (""+value).split(lex.NL)[0]: "function(...) {...}"}
|
||||
default: return {value: value}
|
||||
} } var loaded = false, _show = show(value); _show.open = _show.open||open, _show.close = _show.close||close
|
||||
var ui = can.page.Append(can, target, [!key && value.tagName? can.page.AppendView(can, value): {view: [[html.ITEM, _show.type||typeof(value)], key == ""? html.SPAN: html.DIV], list: [
|
||||
{view: [mdb.ICON, html.SPAN, _show.close+lex.SP]}, {view: [mdb.NAME, html.SPAN, key || key === 0? key+lex.SP: ""]}, {view: [mdb.VALUE, html.SPAN, _show.value]},
|
||||
], onclick: function() { cb && cb(prefix, value); if (typeof value != code.OBJECT) { return }
|
||||
], onclick: function() {
|
||||
cb && cb(prefix, value); if (!can.base.isIn(typeof value, code.OBJECT, code.FUNCTION)) { return }
|
||||
ui.icon.innerText = (can.onmotion.toggle(can, ui.list)? _show.open: _show.close)+lex.SP
|
||||
if (typeof value == code.FUNCTION) { return ui.list.innerText = value.toString() }
|
||||
|
||||
if (loaded) { return } loaded = true, ui.icon.innerText = _show.open+lex.SP
|
||||
if (value.tagName) { can.page.Append(can, ui.list, [can.page.AppendView(can, value)]), can.onappend.style(can, mdb.VIEW, ui.list)
|
||||
can.core.List(can.core.Item(target, function(key, value) { if (["textContent", "innerHTML", "outerHTML"].indexOf(key) > -1 || typeof value == code.FUNCTION || key.toUpperCase() == key) { return } return key }).sort(), function(key) {
|
||||
@ -137,33 +140,34 @@ Volcanos("page", {
|
||||
value.hasOwnProperty(key) && val) { return key } }).sort(), function(key) { can.page.AppendData(can, ui.list, can.core.Keys(prefix, key), key, value[key], cb) })
|
||||
var key = "__proto__"; value[key] && can.core.Item(value[key]).length > 0 && can.page.AppendData(can, ui.list, can.core.Keys(prefix, key), key, value[key], cb)
|
||||
}
|
||||
}}, {view: [[html.LIST, html.HIDE]], style: {"margin-left": "20px"}}])
|
||||
return ui
|
||||
}}, {view: [[html.LIST, _show.type||typeof(value), html.HIDE]]}]); return ui
|
||||
},
|
||||
AppendView: function(can, target, tag, list, loaded, cb) {
|
||||
function field(target) { return target? can.core.List(target.attributes, function(item) {
|
||||
return item.value == "" || item.value == item.name? {type: html.SPAN, list: [{text: lex.SP}, {text: item.name}]}:
|
||||
{type: html.SPAN, list: [{text: lex.SP}, {text: item.name}, {text: mdb.EQ}, {className: code.STRING, text: "\""+item.value+"\""}]}
|
||||
return item.value == ""? undefined: {type: html.SPAN, list: [{text: lex.SP}, {text: item.name}, {text: mdb.EQ}, {className: code.STRING, text: JSON.stringify(item.value)}]}
|
||||
}): [] }
|
||||
var ui = {}; tag = tag||target.tagName.toLowerCase(), isclose = tag != mdb.META && tag != web.LINK, _field = field(target)
|
||||
var inner = target.innerHTML? can.page.unicode.inner: ""; if (target && target.tagName) { target.innerText == target.innerHTML && (inner = target.innerText) }
|
||||
var inner = target.children.length > 0 && target.innerText != target.innerHTML? can.page.unicode.inner: ""
|
||||
return {view: mdb.VIEW, list: [
|
||||
{view: [[html.ITEM, target.tagName && target.tagName.toLowerCase()]], list: [
|
||||
{text: (target.children.length > 0? can.page.unicode.close: lex.SP)+lex.SP, _init: function(target) { ui.toggle = target }},
|
||||
{className: code.KEYWORD, text: can.page.trans(can, ice.LT)}, {className: code.KEYWORD, text: tag}, {type: html.SPAN, list: _field},
|
||||
{className: code.KEYWORD, text: can.page.trans(can, ice.GT)}, inner && {text: inner, _init: function(target) { ui.inner = target }},
|
||||
isclose && {className: code.KEYWORD, text: can.page.trans(can, ice.LT+nfs.PS+tag+ice.GT), _init: function(target) { ui._close = target }},
|
||||
], onclick: function(event) { ui.toggle.innerText = (can.onmotion.toggle(can, ui.list)? can.page.unicode.open: can.page.unicode.close)+lex.SP
|
||||
{text: [(inner? can.page.unicode.close: ""), "", html.TOGGLE], _init: function(target) { ui.toggle = target }},
|
||||
{className: code.KEYWORD, text: can.page.trans(can, ice.LT)}, {className: code.KEYWORD, text: tag}, {type: html.SPAN, list: _field}, {className: code.KEYWORD, text: can.page.trans(can, ice.GT)},
|
||||
inner? {text: [inner, "", code.INNER], _init: function(target) { ui.inner = target }}:
|
||||
target.innerText? {text: target.innerText, _init: function(target) { ui.inner = target }}:
|
||||
null,
|
||||
{className: code.KEYWORD, text: can.page.trans(can, ice.LT+nfs.PS+tag+ice.GT), _init: function(target) { ui._close = target }},
|
||||
], onclick: inner && function(event) {
|
||||
ui.toggle.innerText = (can.onmotion.toggle(can, ui.list)? can.page.unicode.open: can.page.unicode.close)+lex.SP
|
||||
if (target.children.length == 0) { return }
|
||||
ui.inner && can.onmotion.toggle(can, ui.inner), can.onmotion.toggle(can, ui.close), can.onmotion.toggle(can, ui._close)
|
||||
if (!loaded) { if (can.page.tagis(target, ctx.STYLE, nfs.SCRIPT)) { can.page.Append(can, ui.list, [{text: target.innerHTML}]) } else {
|
||||
can.page.Append(can, ui.list, can.core.List(target.children, function(node) { return can.page.AppendView(can, node, "", null, false, cb) }))
|
||||
} } loaded = true, can.base.isFunc(cb) && cb(target)
|
||||
}, onmouseenter: function() {
|
||||
can.page.Select(can, document.body, ".picker", function(target) { can.page.ClassList.del(can, target, "picker") })
|
||||
!can.page.tagis(target, nfs.SCRIPT) && can.onappend.style(can, "picker", target)
|
||||
}, onmouseenter: function() { can.page.Select(can, document.body, nfs.PT+html.PICKER, function(target) { can.page.ClassList.del(can, target, html.PICKER) })
|
||||
!can.page.tagis(target, nfs.SCRIPT) && can.onappend.style(can, html.PICKER, target)
|
||||
}, _init: function(target) { can.onmotion.delay(can, function() { loaded && target.click() }) }},
|
||||
isclose && {view: [[html.LIST, html.HIDE]], style: {"margin-left": "20px"}, _init: function(target) { ui.list = target }, list: list},
|
||||
isclose && {view: [[html.ITEM, html.HIDE]], list: [{text: " "}, {className: code.KEYWORD, text: can.page.trans(can, ice.LT+nfs.PS+tag+ice.GT)}], _init: function(target) { ui.close = target }},
|
||||
inner && {view: [[html.LIST, html.HIDE]], _init: function(target) { ui.list = target }, list: list},
|
||||
inner && {view: [[html.ITEM, html.HIDE]], list: [{text: ["", "", html.TOGGLE]}, {className: code.KEYWORD, text: can.page.trans(can, ice.LT+nfs.PS+tag+ice.GT)}], _init: function(target) { ui.close = target }},
|
||||
]}
|
||||
},
|
||||
AppendStyle: function(can, style) {
|
||||
@ -303,7 +307,7 @@ Volcanos("page", {
|
||||
back: "◀", reback: "▶",
|
||||
push: "⇈", pull: "⇊",
|
||||
lt: "❮", gt: "❯",
|
||||
inner: "..",
|
||||
inner: "...",
|
||||
favor: "\u2606",
|
||||
},
|
||||
inputs: function(can, list, type) { var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) {
|
||||
|
@ -72,7 +72,7 @@ Volcanos(chat.ONPLUGIN, {
|
||||
if (!can.base.contains(item, arg[1]) || list[item]) { return } list[item] = true; msg.Push(arg[0], item)
|
||||
}) }),
|
||||
create: shy([wiki.CONTENT, wiki.TITLE], function(can, content, title) { can.user.toast(can, content, title) }),
|
||||
}, [html.FILTER, ice.LIST, mdb.CREATE], function(can, msg, arg) {
|
||||
}, [html.FILTER, ice.LIST, mdb.CREATE], function(can, msg, arg) { if (!can.db[NTIP]) { return }
|
||||
arg[0]? can.db[NTIP].Table(function(value) {
|
||||
msg.append = [mdb.TIME, "title", "content"], (value.title == arg[0] || value.content.indexOf(arg[0]) > -1) && msg.Push(value)
|
||||
}): msg.Copy(can.db[NTIP]), msg.StatusTimeCount()
|
||||
@ -110,13 +110,15 @@ Volcanos(chat.ONPLUGIN, {
|
||||
].concat(can.core.List([log.INFO, log.WARN, log.ERROR, chat.ONREMOTE, html.WSS], function(item) { return {name: item, value: stat[item]||"0"} })))
|
||||
}),
|
||||
data: shy("网页数据", [mdb.KEY], function(can, msg, arg, cb) { var can = msg._can
|
||||
can.onappend.style(can, "view")
|
||||
var root = can.Conf("_target")||can._root
|
||||
arg[0]? can.page.AppendData(can, can._output, arg[0], arg[0].split(nfs.PT).pop(), can.core.Value(root, arg[0]), function(prefix, value) { can.Option(mdb.KEY, prefix) })._target.click():
|
||||
can.page.AppendData(can, can._output, "", root._name, root, function(prefix, value) { can.Option(mdb.KEY, prefix) })._target.click()
|
||||
}),
|
||||
view: shy("网页元素", [mdb.KEY], function(can, msg, arg, cb) { var can = msg._can
|
||||
if (can.Conf("_target")) {
|
||||
can.page.Append(can, can._output, [can.page.AppendView(can, can.Conf("_target"))])
|
||||
var ui = can.page.Append(can, can._output, [can.page.AppendView(can, can.Conf("_target"))])
|
||||
can.onmotion.delay(can, function() { can.page.SelectOne(can, ui._target, "div.item", function(target) { target.click() }) })
|
||||
} else if (arg[0]) {
|
||||
can.page.Append(can, can._output, [can.page.AppendView(can, can.page.SelectOne(can, document.body, arg[0]))])
|
||||
} else {
|
||||
@ -126,7 +128,8 @@ Volcanos(chat.ONPLUGIN, {
|
||||
list.push(p.tagName.toLowerCase()+(p.className? nfs.PT+p.className.replaceAll(lex.SP, nfs.PT).replace(".picker", ""): ""))
|
||||
} can.Option(mdb.KEY, list.reverse().join(ice.GT))
|
||||
}),
|
||||
], true)]); can.onmotion.delay(can, function() { can.page.Select(can, ui._target, "div.item.head,div.item.body", function(target) { target.click() }) })
|
||||
], true)]);
|
||||
can.onmotion.delay(can, function() { can.page.Select(can, ui._target, "div.item.head,div.item.body", function(target) { target.click() }) })
|
||||
}
|
||||
}),
|
||||
runtime: shy("网页环境", [mdb.KEY], function(can, msg, arg) {
|
||||
|
@ -70,6 +70,5 @@ body.light tr.line.insert { background-color:#ffeef0; } body.light tr.line.delet
|
||||
body.white tr.line.insert { background-color:#ffeef0; } body.white tr.line.delete { background-color:#e6ffed; }
|
||||
fieldset.inner:not(.monaco)>div.output div.content>tr.line * { font-family:var(--code-font-family); font-size:var(--code-font-size); }
|
||||
body:not(.windows) fieldset.inner>div.output>div.project * { font-family:var(--code-font-family); font-size:var(--code-font-size); }
|
||||
/* body:not(.windows) fieldset.inner>div.output>div.project * { font-family:var(--code-font-family); } */
|
||||
body:not(.windows) fieldset.inner>div.output>div.layout>div.tabs { font-family:var(--code-font-family); font-size:var(--code-font-size); }
|
||||
body:not(.windows) fieldset.inner>div.output>div.layout>div.path { font-family:var(--code-font-family); font-size:var(--code-font-size); }
|
||||
|
@ -1,5 +1,4 @@
|
||||
fieldset.vimer>div.output>div.layout>div.layout>div.layout div.content { border-left:var(--box-border); border-top:var(--box-border); }
|
||||
/* fieldset.vimer>div.output>div.layout>div.layout div.content input.current { background-color:transparent; color:transparent; padding-left:var(--input-padding); height:var(--code-line-height); position:absolute; } */
|
||||
fieldset.vimer>div.output>div.layout>div.layout input.current { background-color:transparent; color:transparent; padding-left:var(--input-padding); height:var(--code-line-height); position:absolute; }
|
||||
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete { background-color:unset; padding-top:0; display:none; position:absolute; height:1px; overflow:visible; }
|
||||
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; }
|
||||
|
@ -83,7 +83,7 @@ Volcanos(chat.ONACTION, {list: [
|
||||
["数据", "保存参数", "清空参数", "复制数据", "下载数据", "添加工具", "清空数据"],
|
||||
["调试",
|
||||
"查看文档", "查看脚本", "查看源码",
|
||||
"查看视图", "查看数据", "查看通知",
|
||||
"查看通知", "查看视图", "查看数据",
|
||||
"会话存储", "本地存储",
|
||||
"查看报文", "查看配置", "查看日志",
|
||||
"删除工具",
|
||||
@ -147,22 +147,22 @@ Volcanos(chat.ONACTION, {list: [
|
||||
})
|
||||
},
|
||||
|
||||
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
|
||||
"查看文档": function(event, can) { can.requests(event, {action: ice.HELP}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
|
||||
"查看报文": function(event, can) { var msg = can._msg
|
||||
can.onappend._float(can, {title: "msg", index: ice.CAN_PLUGIN, display: "/plugin/story/json.js"}, [], function(sub) {
|
||||
sub.run = function(event, cmds, cb) { var _msg = can.request(event); _msg.result = [JSON.stringify(msg)], cb(_msg) }
|
||||
})
|
||||
},
|
||||
"查看脚本": function(event, can) { can.onappend._float(can, web.CODE_INNER, can.misc.SplitPath(can, can.sub._path)) },
|
||||
"查看源码": function(event, can) { can.requests(event, {action: nfs.SOURCE}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
|
||||
"查看通知": function(event, can) { can.onappend._float(can, {index: "can.toast"}, [can.ConfIndex()]) },
|
||||
"查看视图": function(event, can) { can.onappend._float(can, {index: "can.view", _target: can._target}) },
|
||||
"查看视图": function(event, can) { can.onappend._float(can, {index: "can.view", _target: can._fields||can._target}) },
|
||||
"查看数据": function(event, can) { can.onappend._float(can, {index: "can.data", _target: can}) },
|
||||
"会话存储": function(event, can) { can.onappend._float(can, {index: "can.sessionStorage"}, [can.ConfIndex()]) },
|
||||
"本地存储": function(event, can) { can.onappend._float(can, {index: "can.localStorage"}, [can.ConfIndex()]) },
|
||||
"查看脚本": function(event, can) { can.onappend._float(can, web.CODE_INNER, can.misc.SplitPath(can, can.sub._path)) },
|
||||
"查看源码": function(event, can) { can.requests(event, {action: nfs.SOURCE}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
|
||||
"查看报文": function(event, can) { var msg = can._msg
|
||||
can.onappend._float(can, {title: "msg(报文)", index: ice.CAN_PLUGIN, display: "/plugin/story/json.js"}, [], function(sub) {
|
||||
sub.run = function(event, cmds, cb) { var _msg = can.request(event); _msg.result = [JSON.stringify(msg)], cb(_msg) }
|
||||
})
|
||||
},
|
||||
"查看配置": function(event, can) { can.requests(event, {action: ctx.CONFIG}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
|
||||
"查看日志": function(event, can) { var logid = can.Status("log.id"); can.onappend._float(can, web.CODE_XTERM, ["sh", logid, "grep "+logid+" var/log/bench.log | grep -v grep | grep -v '"+logid+" $'"]) },
|
||||
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
|
||||
"删除工具": function(event, can) { can.onaction._close(event, can) },
|
||||
|
||||
refresh: function(event, can) { can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), true, can.Mode()) },
|
||||
|
@ -1,8 +1,8 @@
|
||||
div.json div.item { white-space:pre; }
|
||||
div.json div.item:hover { background-color:transparent; color:unset; }
|
||||
div.json div.item div.item { padding-left:15px; border:transparent solid 1px; border-left:lightblue dashed 1px; margin-left:5px; }
|
||||
div.json div.item div.item:hover { border:var(--box-border); }
|
||||
div.json div.item label.nonce { color:#9cbeca4f; }
|
||||
div.json div.item span.string { color:orange; }
|
||||
div.json label { user-select:none; }
|
||||
body:not(.windows) div.json { font-family:monospace; }
|
||||
div.output.json { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; }
|
||||
div.output.json div.item { cursor:text; }
|
||||
div.output.json div.item:hover { background-color:transparent; color:unset; }
|
||||
div.output.json div.item div.item { border:transparent solid 1px; border-left:var(--disable-fg-color) dashed 1px; padding-left:15px; margin-left:5px; }
|
||||
div.output.json div.item div.item:hover { border:var(--box-border); }
|
||||
div.output.json div.item span.key { cursor:pointer; }
|
||||
div.output.json div.item span.string { color:var(--code-string); }
|
||||
div.output.json div.item label.nonce { color:var(--disable-fg-color); user-select:none; }
|
||||
|
@ -6,26 +6,26 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
||||
switch (typeof data) {
|
||||
case code.OBJECT: if (data == null) { can.page.Append(can, target, [{text: "null"}]); break }
|
||||
function wrap(begin, end, add, cb, inner) { can.page.Append(can, target, [{text: begin}])
|
||||
add && can.page.Append(can, target, inner||[{text: ["...", html.LABEL, "nonce"]}]), cb()
|
||||
can.page.Append(can, target, [{text: end}])
|
||||
add && can.page.Append(can, target, inner||[{text: [can.page.unicode.inner, html.LABEL, ["nonce", html.HIDE]]}]), cb(), can.page.Append(can, target, [{text: end}])
|
||||
}
|
||||
function format(data) { return can.page.trans(can, JSON.stringify(data)) }
|
||||
function toggle(list) { return list && can.onmotion.toggle(can, list) }
|
||||
function _item() { return can.page.Append(can, list = list || can.page.Append(can, target, [html.LIST])._target, [html.ITEM])._target }
|
||||
if (can.base.isArray(data)) { var inner = ""
|
||||
if (hidden && can.core.List(data, function(item) { if (can.base.isIn(typeof item, code.STRING, code.NUMBER, code.BOOLEAN)) { return item } }).length == data.length) {
|
||||
inner = [], can.core.List(data, function(item, index) {
|
||||
inner.push({text: [format(item), "", [code.STRING, code.INNER]]}, index < data.length-1 && {text: [", ", "", [code.INNER]]})
|
||||
})
|
||||
inner = [], can.core.List(data, function(item, index) { inner.push({text: [format(item), "", [code.STRING, code.INNER]]}, index < data.length-1 && {text: [", ", "", [code.INNER]]}) })
|
||||
}
|
||||
wrap("[", "]", data.length > 0, function() { can.core.List(data, function(value, index) { var item = _item()
|
||||
show(value, item, index, data.length)
|
||||
}) }, inner)
|
||||
} else { var length = can.core.Item(data).length, count = 0
|
||||
wrap("{", "}", length > 0, function() { can.core.Item(data, function(key, value) { var item = _item()
|
||||
can.page.Append(can, item, [{text: [format(key)], onclick: function(event) {
|
||||
var display = !toggle(sub); can.page.SelectChild(can, sub.parentNode, "span.inner", function(target) { can.onmotion.toggle(can, target, display) })
|
||||
}}, {text: ": "}]); var sub = show(value, item, count++, length); hidden && sub && can.onmotion.hidden(can, sub)
|
||||
can.page.Append(can, item, [{text: [format(key), "", mdb.KEY], onclick: function(event) { var display = !toggle(sub)
|
||||
sub && can.page.SelectChild(can, sub.parentNode, "span.inner", function(target) { can.onmotion.toggle(can, target, display) })
|
||||
sub && can.page.SelectChild(can, sub.parentNode, "label.nonce", function(target) { can.onmotion.toggle(can, target, display) })
|
||||
}}, {text: ": "}]); key == ice.MSG_STATUS && (value = can.base.Obj(value[0])||value)
|
||||
var sub = show(value, item, count++, length); hidden && sub && can.onmotion.hidden(can, sub)
|
||||
key == ice.MSG_STATUS && (can.page.SelectChild(can, item, "label.nonce", function(target) { can.onmotion.toggle(can, target, true) }))
|
||||
}) })
|
||||
} break
|
||||
case code.STRING: can.page.Append(can, target, [{text: [format(data), "", code.STRING]}]); break
|
||||
|
Loading…
x
Reference in New Issue
Block a user