1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00

opt status

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-12-24 00:18:18 +08:00
parent 35842bd525
commit 8d6cf1d3a1
10 changed files with 90 additions and 76 deletions

View File

@ -286,6 +286,7 @@ var http = {
Accept: "Accept", ContentType: "Content-Type", ApplicationJSON: "application/json", ApplicationFORM: "application/x-www-form-urlencoded", Accept: "Accept", ContentType: "Content-Type", ApplicationJSON: "application/json", ApplicationFORM: "application/x-www-form-urlencoded",
} }
var html = {value: { var html = {value: {
HEADER_HEIGHT: 48,
RIVER_WIDTH: 230, PROJECT_WIDTH: 230, RIVER_WIDTH: 230, PROJECT_WIDTH: 230,
ACTION_HEIGHT: 32, STATUS_HEIGHT: 32, 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, 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", CLASS: "class", DARK: "dark", LIGHT: "light", WHITE: "white", BLACK: "black",
FILTER: "filter", TOGGLE: "toggle", EXPAND: "expand", SPEED: "speed", HOVER: "hover", HOVER_SELECT: "hover,select", FILTER: "filter", TOGGLE: "toggle", EXPAND: "expand", SPEED: "speed", HOVER: "hover", HOVER_SELECT: "hover,select",
NOT_HIDE: ":not(.hide)", NOT_HIDE: ":not(.hide)",
PICKER: "picker",
PAGE: "page", TABS: "tabs", MENU: "menu", NODE: "node", PLUG: "plug", PAGE: "page", TABS: "tabs", MENU: "menu", NODE: "node", PLUG: "plug",
ZONE: "zone", LIST: "list", ITEM: "item", NAME: "name", ICON: "icon", VIEW: "view", ZONE: "zone", LIST: "list", ITEM: "item", NAME: "name", ICON: "icon", VIEW: "view",

View File

@ -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)) 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: [ 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]}, {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) ], onclick: function(event) {
if (can.base.isIn(item.name, cli.COST, nfs.SIZE)) { if (item.name == mdb.COUNT) {
can.onappend._float(can, {title: "msg", index: ice.CAN_PLUGIN, display: "/plugin/story/json.js"}, [], function(sub) { 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) } 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) { } 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+" $'"]) 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) { 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 } if (!can.page.ClassList.set(can, tr, html.HIDE, index > 0 && tr.innerText.indexOf(event.target.value) == -1)) { return tr }
}).length }).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 } if (!can.page.ClassList.set(can, target, html.HIDE, target.innerText.indexOf(event.target.value) == -1)) { return target }
}).length }).length
can.user.toast(can, "filter out "+count+" lines") 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) { _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) { 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.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) }, can._root._target)
}, },
figure: function(can, meta, target, cb) { if (meta.type == html.SELECT || meta.type == html.BUTTON) { return } 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) 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]) }) 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() } } 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.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) }) 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 }, 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]) 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) 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() {}) }, 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 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} 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.onmouseup = function(event) { begin = null, delete(window._mousemove) }
target.onmousemove = function(event) { target.onmousemove = function(event) {
if (begin) { var dy = event.y - begin.y, dx = event.x - begin.x if (begin) { var dy = event.y - begin.y, dx = event.x - begin.x
switch (action) { 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.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 case html.BOTTOM: cb? cb(begin.height + dy, begin.width): can.page.style(can, target, html.HEIGHT, begin.height + dy); break
default: default:
can.page.style(can, target, 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) html.TOP, can.base.Min(begin.top + dy, top||0, window.innerHeight-html.ACTION_HEIGHT)
) )
} can.onkeymap.prevent(event) } 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.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 (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 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)
} }
} }
}, },

View File

@ -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 i { position:absolute; right:var(--input-padding); cursor:pointer; }
table.content th:not(.select) i { display:none; } table.content th:not(.select) i { display:none; }
table.content th.select { border:var(--notice-bg-color) solid 1px; } 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="1"] i.bi-sort-down-alt { display:none; }
table.content th.select[data-asc="0"] i.bi-sort-up { display:none; } table.content th.select[data-asc="0"] i.bi-sort-up { display:none; }
table.content td { padding:var(--table-padding); } 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>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.select>span.icon { visibility:visible; }
div.tabs:hover>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>legend { font-style:italic; }
fieldset.plugin>form.option>div.button.icons>input { display:none; } fieldset.plugin>form.option>div.button.icons>input { display:none; }
fieldset.plugin>div.action>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.plug>form.option>div.icon:first-child { margin-left:var(--input-margin); }
fieldset>form.option>div.text>span.value { fieldset>form.option>div.text>span.value {
line-height:calc(var(--action-height) - 2 * var(--input-padding)); 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.plug>form.option>div.text>span.value { display:none; }
fieldset:not(.float)>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; } 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].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].danger { border:var(--danger-bg-color) solid 1px; }
input[type=button].notice { border:var(--notice-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:hover { background-color:var(--tr-hover-bg-color) !important; }
table.content tr.select { background-color:var(--tr-hover-bg-color); } 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); } 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.Action>div.output { overflow-x:hidden; }
body.mobile fieldset.word>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 { 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>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.word.float>div.output>div.project { top:var(--action-height); }
body.mobile fieldset.web.code.inner.cmd>div.output { overflow:hidden; } 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 .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.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.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 { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; }
fieldset.can.data>div.output div.item { display:flex; gap:5px; } 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>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.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.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.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.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.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.story[data-type=spark] { margin:0; }
fieldset.Search>div.output>div.profile { border-left:none; width:unset; } fieldset.Search>div.output>div.profile { border-left:none; width:unset; }
fieldset.Action.tabs table.content { width:100%; } 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 { 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>img { margin-right:var(--input-margin); }
fieldset.plug.dream.zone>div.output>div.item>span { line-height:var(--action-height); } 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>div.carte.header.avatar img { width:370px; }
body>fieldset.story.web.chat.wx.agent { position:fixed; left:0; bottom:0; } 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); } body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); }

View File

@ -110,20 +110,23 @@ Volcanos("page", {
function show(value, deep) { deep = deep == undefined? 2: 0; switch (typeof value) { function show(value, deep) { deep = deep == undefined? 2: 0; switch (typeof value) {
case code.OBJECT: if (!value) { return {} } case code.OBJECT: if (!value) { return {} }
if (value._path) { return {value: "@\""+value._path+"\""} } 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 (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)+"]"} } 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)+"}"} 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.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.NUMBER: return {open: "n", close: "n", value: value}
case code.BOOLEAN: return {open: "b", close: "b", 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} default: return {value: value}
} } var loaded = false, _show = show(value); _show.open = _show.open||open, _show.close = _show.close||close } } 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: [ 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]}, {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 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 (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) 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) { 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) }) 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) 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"}}]) }}, {view: [[html.LIST, _show.type||typeof(value), html.HIDE]]}]); return ui
return ui
}, },
AppendView: function(can, target, tag, list, loaded, cb) { AppendView: function(can, target, tag, list, loaded, cb) {
function field(target) { return target? can.core.List(target.attributes, function(item) { 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}]}: 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)}]}
{type: html.SPAN, list: [{text: lex.SP}, {text: item.name}, {text: mdb.EQ}, {className: code.STRING, text: "\""+item.value+"\""}]}
}): [] } }): [] }
var ui = {}; tag = tag||target.tagName.toLowerCase(), isclose = tag != mdb.META && tag != web.LINK, _field = field(target) 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: [ return {view: mdb.VIEW, list: [
{view: [[html.ITEM, target.tagName && target.tagName.toLowerCase()]], 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 }}, {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.LT)}, {className: code.KEYWORD, text: tag}, {type: html.SPAN, list: _field}, {className: code.KEYWORD, text: can.page.trans(can, ice.GT)},
{className: code.KEYWORD, text: can.page.trans(can, ice.GT)}, inner && {text: inner, _init: function(target) { ui.inner = target }}, inner? {text: [inner, "", code.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 }}, target.innerText? {text: target.innerText, _init: function(target) { ui.inner = target }}:
], onclick: function(event) { ui.toggle.innerText = (can.onmotion.toggle(can, ui.list)? can.page.unicode.open: can.page.unicode.close)+lex.SP 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) 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 { 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) })) 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) } } loaded = true, can.base.isFunc(cb) && cb(target)
}, onmouseenter: function() { }, onmouseenter: function() { can.page.Select(can, document.body, nfs.PT+html.PICKER, function(target) { can.page.ClassList.del(can, target, html.PICKER) })
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, html.PICKER, target)
!can.page.tagis(target, nfs.SCRIPT) && can.onappend.style(can, "picker", target)
}, _init: function(target) { can.onmotion.delay(can, function() { loaded && target.click() }) }}, }, _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}, inner && {view: [[html.LIST, html.HIDE]], _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.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) { AppendStyle: function(can, style) {
@ -303,7 +307,7 @@ Volcanos("page", {
back: "◀", reback: "▶", back: "◀", reback: "▶",
push: "⇈", pull: "⇊", push: "⇈", pull: "⇊",
lt: "", gt: "", lt: "", gt: "",
inner: "..", inner: "...",
favor: "\u2606", favor: "\u2606",
}, },
inputs: function(can, list, type) { var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) { inputs: function(can, list, type) { var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) {

View File

@ -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) 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) }), 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) { 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.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() }): 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"} }))) ].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 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 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(): 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() 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 view: shy("网页元素", [mdb.KEY], function(can, msg, arg, cb) { var can = msg._can
if (can.Conf("_target")) { 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]) { } else if (arg[0]) {
can.page.Append(can, can._output, [can.page.AppendView(can, can.page.SelectOne(can, document.body, arg[0]))]) can.page.Append(can, can._output, [can.page.AppendView(can, can.page.SelectOne(can, document.body, arg[0]))])
} else { } 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", ""): "")) 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)) } 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) { runtime: shy("网页环境", [mdb.KEY], function(can, msg, arg) {

View File

@ -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; } 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); } 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); 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.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); } body:not(.windows) fieldset.inner>div.output>div.layout>div.path { font-family:var(--code-font-family); font-size:var(--code-font-size); }

View File

@ -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.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 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 { 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; } fieldset.vimer>div.output>div.layout>div.layout div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; }

View File

@ -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) { can.requests(event, {action: ice.HELP}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
"查看报文": function(event, can) { var msg = can._msg "查看脚本": function(event, can) { can.onappend._float(can, web.CODE_INNER, can.misc.SplitPath(can, can.sub._path)) },
can.onappend._float(can, {title: "msg", index: ice.CAN_PLUGIN, display: "/plugin/story/json.js"}, [], function(sub) { "查看源码": function(event, can) { can.requests(event, {action: nfs.SOURCE}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
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, {index: "can.toast"}, [can.ConfIndex()]) }, "查看通知": 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.data", _target: can}) },
"会话存储": function(event, can) { can.onappend._float(can, {index: "can.sessionStorage"}, [can.ConfIndex()]) }, "会话存储": 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, {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) { var msg = can._msg
"查看源码": function(event, can) { can.requests(event, {action: nfs.SOURCE}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, 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) { 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) { 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) }, "删除工具": function(event, can) { can.onaction._close(event, can) },
refresh: function(event, can) { can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), true, can.Mode()) }, refresh: function(event, can) { can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), true, can.Mode()) },

View File

@ -1,8 +1,8 @@
div.json div.item { white-space:pre; } div.output.json { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; }
div.json div.item:hover { background-color:transparent; color:unset; } div.output.json div.item { cursor:text; }
div.json div.item div.item { padding-left:15px; border:transparent solid 1px; border-left:lightblue dashed 1px; margin-left:5px; } div.output.json div.item:hover { background-color:transparent; color:unset; }
div.json div.item div.item:hover { border:var(--box-border); } 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.json div.item label.nonce { color:#9cbeca4f; } div.output.json div.item div.item:hover { border:var(--box-border); }
div.json div.item span.string { color:orange; } div.output.json div.item span.key { cursor:pointer; }
div.json label { user-select:none; } div.output.json div.item span.string { color:var(--code-string); }
body:not(.windows) div.json { font-family:monospace; } div.output.json div.item label.nonce { color:var(--disable-fg-color); user-select:none; }

View File

@ -6,26 +6,26 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
switch (typeof data) { switch (typeof data) {
case code.OBJECT: if (data == null) { can.page.Append(can, target, [{text: "null"}]); break } 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}]) 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() 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}])
can.page.Append(can, target, [{text: end}])
} }
function format(data) { return can.page.trans(can, JSON.stringify(data)) } function format(data) { return can.page.trans(can, JSON.stringify(data)) }
function toggle(list) { return list && can.onmotion.toggle(can, list) } 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 } 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 (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) { 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 = [], can.core.List(data, function(item, index) { inner.push({text: [format(item), "", [code.STRING, code.INNER]]}, index < data.length-1 && {text: [", ", "", [code.INNER]]}) })
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() wrap("[", "]", data.length > 0, function() { can.core.List(data, function(value, index) { var item = _item()
show(value, item, index, data.length) show(value, item, index, data.length)
}) }, inner) }) }, inner)
} else { var length = can.core.Item(data).length, count = 0 } else { var length = can.core.Item(data).length, count = 0
wrap("{", "}", length > 0, function() { can.core.Item(data, function(key, value) { var item = _item() 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) { can.page.Append(can, item, [{text: [format(key), "", mdb.KEY], onclick: function(event) { var display = !toggle(sub)
var display = !toggle(sub); can.page.SelectChild(can, sub.parentNode, "span.inner", function(target) { can.onmotion.toggle(can, target, display) }) 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) 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 } break
case code.STRING: can.page.Append(can, target, [{text: [format(data), "", code.STRING]}]); break case code.STRING: can.page.Append(can, target, [{text: [format(data), "", code.STRING]}]); break