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

opt debug

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-12-22 17:48:53 +08:00
parent 467b944d68
commit 7babe206ea
9 changed files with 69 additions and 36 deletions

View File

@ -119,8 +119,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
value && (value = can.user.trans(sub, value, null, html.INPUT))
return can.page.SelectArgs(can, action, key, value)[0]
},
Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT))
return can.page.SelectArgs(can, option, key, value)[0] },
Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT)); return can.page.SelectArgs(can, option, key, value)[0] },
Update: function(event, cmds, cb, silent) { event = event||{}, sub.request(event, {_toast: event.isTrusted? ice.PROCESS: ""},
can.core.Value(sub, "sub.db._checkbox"))._caller(), sub.onappend._output0(sub, sub.Conf(), event||{}, cmds||sub.Input([], !silent), cb, silent); return true },
Focus: function() { can.page.SelectOne(can, option, html.INPUT_ARGS, function(target) { target.focus() }) },
@ -187,7 +186,10 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
item.type == html.BUTTON && item.action == ice.AUTO && can.base.isUndefined(can._delay_init) && (auto = sub._target), next()
can.Conf(ice.AUTO) == item.name && (auto = sub._target)
})
}; var auto; can.core.Next(can.core.Value(can, [chat.ONIMPORT, mdb.LIST])||meta.inputs, add, function() { skip || can.Conf(ice.AUTO) == "delay" || auto && auto.click() })
}; var auto; can.core.Next(can.core.Value(can, [chat.ONIMPORT, mdb.LIST])||meta.inputs, add, function() {
skip || can.Conf(ice.AUTO) == "delay" || auto && auto.click()
meta._help && add({type: html.BUTTON, name: ice.HELP, onclick: function(event) { can.onappend._float(can, {index: web.WIKI_WORD}, [meta._help]) }}, function() {})
})
},
_action: function(can, list, action, meta, hold) { 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)
@ -278,9 +280,12 @@ 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 (item.name == ice.LOG_TRACEID) {
], 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) {
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+" $'"])
}
}}])
@ -565,9 +570,11 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (meta.style == html.FLOAT || value.style == html.FLOAT) { can.onlayout._float(sub) }
}, target||can._output, field)
},
_float: function(can, index, args, cb) { can.onappend.plugin(can, {index: index, args: args, mode: chat.FLOAT}, function(sub) {
sub.onmotion.float(sub), sub.onaction.close = function() { can.page.Remove(can, sub._target) }, cb && cb(sub)
}, can._root._target) },
_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.onmotion.float(sub), sub.onaction.close = function() { can.page.Remove(can, sub._target) }, cb && cb(sub)
}, can._root._target)
},
figure: function(can, meta, target, cb) { if (meta.type == html.SELECT || meta.type == html.BUTTON) { return }
var input = meta.action||(can.base.isIn(meta.name, mdb.ICON, mdb.ICONS)? meta.name: mdb.KEY), path = chat.PLUGIN_INPUT+input+nfs._JS; can.require([path], function(can) {
function _cb(sub, value, old) { if (value == old) { return } target.value = value, can.base.isFunc(cb) && cb(sub, value, old) }

View File

@ -50,7 +50,10 @@ input { font-family:var(--input-font-family); }
body { font-family:var(--body-font-family); }
body { background-color:var(--body-bg-color); color:var(--body-fg-color); }
body.windows { --code-font-family:"Courier New"; }
body.cmd { --plug-width:1200px; --plug-height:480px; }
body.cmd {
background-color:var(--plugin-bg-color);
--plug-width:1200px; --plug-height:480px;
}
body.width1 { /* 320-640 手机竖屏 */
--svg-font-size:13px;
--river-width:280px;; --project-width:120px; --input-width:80px;

View File

@ -91,8 +91,17 @@ Volcanos("core", {
function next(i) { i < list.length? typeof cb == code.FUNCTION && cb(list[i], function() { next(i+1) }, i, list): typeof cbs == code.FUNCTION && cbs(list) }
return next(0), list
},
Item: function(obj, cb) { var list = []
for (var k in obj) { var res = typeof cb == code.FUNCTION? cb(k, obj[k], list): k; res != undefined && list.push(res) }
Item: function(obj, cb) { var list = [], keys = []
if (obj && obj.detail && obj.option) {
obj["detail"] && keys.push("detail")
obj["option"] && keys.push("option")
keys = keys.concat(obj.option, obj.append)
obj["append"] && keys.push("append")
obj["result"] && keys.push("result")
} else {
for (var k in obj) { keys.push(k) }
}
for (var i = 0; i < keys.length; i++) { var k = keys[i]; var res = typeof cb == code.FUNCTION? cb(k, obj[k], list): k; res != undefined && list.push(res) }
return list
},
ItemKeys: function(obj, cb) { var list = [], keys = []; for (var k in obj) { keys.push(k) } keys.sort()

View File

@ -211,6 +211,8 @@ Volcanos("misc", {
return args
},
SplitPath: function(can, path) {
if (path.indexOf("/require/") == 0) { return [path] }
if (path.indexOf("/plugin/") == 0) { return ["usr/volcanos/", path.split("?")[0]] }
var ls = path.split(nfs.PS); if (ls.length == 1) { return [nfs.PWD, ls[0]] }
if (ls[0] == ice.USR) { return [ls.slice(0, 2).join(nfs.PS)+nfs.PS, ls.slice(2).join(nfs.PS)] }
return [ls.slice(0, 1).join(nfs.PS)+nfs.PS, ls.slice(1).join(nfs.PS)]

View File

@ -16,7 +16,10 @@ Volcanos("page", {
if (can.base.isUndefined(target)) { return can.page.SelectArgs(can, can._option, "").concat(can.page.SelectArgs(can, can._action, "")) }
if (can.base.isUndefined(key)) { var value = {}; can.page.SelectArgs(can, target, "", function(item) { item.name && item.value && (value[item.name] = item.value) }); return [value] }
if (can.base.isObject(key)) { return can.core.Item(key, function(key, value) { can.page.SelectArgs(can, target, key, value) }), [key] }
if (!can.base.isFunc(cb)) { var value = cb; cb = function(item) { return item.name && (can.base.isUndefined(value)? item.value: (item.value = value))||"" } }
if (!can.base.isFunc(cb)) { var value = cb; cb = function(target) {
can.base.isUndefined(value) || can.page.Select(can, target.parentNode, "span.value", function(target) { target.innerText = value })
return target.name && (can.base.isUndefined(value)? target.value: (target.value = value))||""
} }
if (key.indexOf(nfs.PT) > -1) { return [""] } key && can.base.isString(cb) && can.page.Select(can, target, "div.item."+key+">span.value", cb)
return can.page.Select(can, target, key? "select[name="+key+"],"+"input.select[type=button][name="+key+"],"+"input[type=text][name="+key+"],"+"textarea[name="+key+"]": ".args", cb)
},

View File

@ -6,7 +6,8 @@ const PROFILE_ARGS = "profile:args:", DISPLAY_ARGS = "display:args:"
const CURRENT_FILE = "web.code.inner:currentFile", SELECT_LINE = "selectLine"
const VIEW_CREATE = "tabview.view.create", VIEW_REMOVE = "tabview.view.remove", LINE_SELECT = "tabview.line.select"
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Split(can.Option(nfs.PATH), mdb.FS); can.Option(nfs.PATH, paths[0])
can.Mode(msg.Option("mode")||can.Mode()), can.Option(nfs.FILE) == lex.SP && can.Option(nfs.FILE, "")
can.core.List([nfs.PATH, nfs.FILE, nfs.LINE], function(key) { msg.Option(key) && can.Option(key, msg.Option(key)) })
can.Mode(msg.Option("mode")||can.Mode()), (msg.Option(nfs.FILE) == lex.SP || can.Option(nfs.FILE) == lex.SP) && can.Option(nfs.FILE, "")
if (can.Mode() == ice.MSG_RESULT) { msg.result = msg.result||[can._output.innerHTML], can.Mode(chat.SIMPLE), can.sup.Mode(chat.SIMPLE) }
can.core.List(paths.concat(can.core.Split(msg.Option(nfs.REPOS))), function(p) {
if (can.base.beginWith(p, nfs.USR_LOCAL_WORK) || can.base.endWith(p, "-dict/") || can.base.isIn(p, nfs.USR_LEARNING, nfs.USR_INTSHELL,

View File

@ -1,8 +1,5 @@
Volcanos(chat.ONIMPORT, {
_process: function(can, msg) {
// msg.OptionStatus() && can.onmotion.clear(can, can._status) && can.onappend._status(can, msg.OptionStatus())
if (can.onimport[msg.OptionProcess()]) { return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, sub: can.sub, msg: msg, arg: msg.Option("_arg")}), true }
},
_process: function(can, msg) { if (can.onimport[msg.OptionProcess()]) { return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, sub: can.sub, msg: msg, arg: msg.Option("_arg")}), true } },
_location: function(can, msg, arg) { can.user.jumps(arg) },
_replace: function(can, msg, arg) { location.replace(arg) },
_history: function(can, msg) { history.length == 1? can.user.close(): history.back() },
@ -81,12 +78,10 @@ Volcanos(chat.ONIMPORT, {
} can.Update(event) },
})
Volcanos(chat.ONACTION, {list: [
"刷新数据", "刷新界面", "切换浮动", "切换全屏",
"共享工具", "打开链接", "生成链接", // "生成脚本", // "生成图片", // "远程控制",
"刷新数据", "刷新界面", "切换浮动", "切换全屏", "共享工具", "打开链接", "生成链接",
["视图", "参数", "操作", "状态", "专注", "项目", "预览", "演示"],
["数据", "保存参数", "清空参数", "复制数据", "下载数据", "添加工具", "清空数据"],
["调试", "查看文档", "查看脚本", "查看源码", "查看配置", "删除工具"],
// ["调试", "打包页面", "查看文档", "查看脚本", "查看源码", "查看配置", "查看日志", "添加工具"],
["调试", "查看文档", "查看脚本", "查看源码", "查看配置", "查看数据", "查看日志", "删除工具"],
],
_engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input())) },
_switch: function(can, sub, mode, save, load) {
@ -148,10 +143,17 @@ 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: nfs.SCRIPT}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
"查看脚本": 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.requests(event, {action: ctx.CONFIG}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) },
"查看日志": function(event, can) { var sub = can.sub; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) },
"查看数据": 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) { 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.onaction._close(event, can) },
refresh: function(event, can) { can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), true, can.Mode()) },

View File

@ -1,3 +1,4 @@
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); }

View File

@ -1,30 +1,35 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can, target)
can.onappend.table(can, msg)
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can, target), can.onappend.table(can, msg)
can.onappend.style(can, nfs.JSON, can._output), can.onimport.show(can, can.base.Obj(msg.Result(), {}), target)
},
show: function(can, data, target) {
function show(data, target, index, total) { var list
switch (typeof data) {
case code.OBJECT: if (data == null) { can.page.Append(can, target, [{text: "null"}]); break }
function wrap(begin, end, add, cb) {
can.page.Append(can, target, [{text: begin}])
add && can.page.Append(can, target, [{text: ["...", html.LABEL, "nonce"]}]), cb()
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}])
}
function toggle(list) { list && can.onmotion.toggle(can, list) }
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)) {
if (can.base.isArray(data)) { var inner = ""
if (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, "inner"]]}, index < data.length-1 && {text: [", ", "", ["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: ['"'+key+'"'], onclick: function(event) { toggle(sub) }}, {text: ": "}])
var sub = show(value, item, count++, length)
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); can.onmotion.hidden(can, sub)
}) })
} break
case code.STRING: can.page.Append(can, target, [{text: ['"'+data+'"', "", code.STRING]}]); break
default: can.page.Append(can, target, [{text: [''+data+'', "", code.CONSTANT]}])
case code.STRING: can.page.Append(can, target, [{text: [format(data), "", code.STRING]}]); break
default: can.page.Append(can, target, [{text: [format(data), "", code.CONSTANT]}])
} (index < total-1) && can.page.Append(can, target, [{text: mdb.FS}]); return list
}; show(data, can.page.Append(can, target, [html.ITEM])._target, 0, 0)
},