1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-03-16 23:05:26 +08:00
parent a0d8bc8764
commit 1ca5eea8e1
7 changed files with 34 additions and 21 deletions

View File

@ -432,7 +432,13 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
meta.inputs = can.base.getValid(meta.inputs, can.base.Obj(value.list))||[], meta.feature = can.base.getValid(meta.feature, can.base.Obj(value.meta))||{}
meta.args = can.base.getValid(can.base.Obj(meta.args), can.base.Obj(meta.arg), can.base.Obj(value.args), can.base.Obj(value.arg))||[]
can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) {
sub.run = function(event, cmds, cb) { can.runActionCommand(sub.request(event), sub._index, cmds, cb) }
sub.run = function(event, cmds, cb) {
if (can.base.isFunc(value)) {
can.onengine._plugin(event, can._root, can.request(event), value.can, [meta.index].concat(cmds), cb)
} else {
can.runActionCommand(sub.request(event), sub._index, cmds, cb)
}
}
sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip)
}, target||can._output, field)
},
@ -629,7 +635,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
can.user.copy(event, can, target.innerText), can.base.isFunc(cb) && cb(event)
can.onkeymap.prevent(event)
} },
move: function(can, target, layout, cb) { var begin; layout = layout||{}
move: function(can, target, layout) { var begin; layout = layout||{}
can.page.style(can, target, layout), target.onmousedown = function(event) {
if (event.target != target && !event.ctrlKey) { return } can.onkeymap.prevent(event)
layout.height = target.offsetHeight, layout.width = target.offsetWidth

View File

@ -148,7 +148,7 @@ div.tabs span.icon:hover { background-color:aliceblue; color:black; }
div.tabs>div:hover span.icon { visibility:visible; }
div.action>div.tabs:hover span.icon { visibility:visible; }
div.tabs>div.select span.icon { visibility:visible; }
div.code { position:sticky; left:0; }
// div.code { position:sticky; left:0; }
div.plug { font-style:italic; }
div.item.text { position:relative; }
div.item.text>span.icon.delete { font-size:20px; line-height:28px; position:absolute; top:2px; right:10px; visibility:hidden; }

View File

@ -37,11 +37,11 @@ Volcanos("misc", {
default: delete(msg[key])
} },
Copy: function(res) { if (!res) { return msg }
res.append && (msg.append = res.append) && res.append.forEach(function(key) {
res.append && res.append.length > 0 && (msg.append = res.append) && res.append.forEach(function(key) {
var i = msg.option && msg.option.indexOf(key); if (i > -1) { msg.option[i] = "", delete(msg[key]) }
res[key] && (msg[key] = (msg[key]||[]).concat(res[key]))
}), res.result && (msg.result = (msg.result||[]).concat(res.result))
res.option && (msg.option = res.option) && res.option.forEach(function(key) { res[key] && (msg[key] = res[key]) })
}), res.result && res.result.length > 0 && (msg.result = (msg.result||[]).concat(res.result))
res.option && res.option.length > 0 && (msg.option = res.option) && res.option.forEach(function(key) { res[key] && (msg[key] = res[key]) })
res._option && (msg._option = res._option) && res._option.forEach(function(key) { res[key] && (msg[key] = res[key]) })
return msg
},

View File

@ -36,6 +36,17 @@ Volcanos(chat.ONACTION, {_init: function(can) { can.ui = {}, can.db = {} },
onlayout: function(can, layout) { can.onmotion.toggle(can, can._target, !layout || layout == html.TABS) },
onaction_cmd: function(can) { can.onappend.style(can, html.HIDE) },
oncommand_focus: function(can) { can.page.Select(can, can._output, ["div.cmd", html.INPUT], function(target) { can.onmotion.focus(can, target) }) },
ondebugs: function(can, msg) { can.runAction({}, msg.Option(ctx.ACTION), [msg.Option(ctx.INDEX)], function(_msg) {
_msg.Table(function(item) { item.mode = chat.FLOAT
can.onappend.plugin(can, item, function(sub) {
sub.run = function(event, cmds, cb) { can.run(event, [ctx.ACTION, msg.Option(ctx.ACTION), ice.RUN].concat(cmds), cb) }
can.getActionSize(function(left, top, width, height) { sub.onimport.size(sub, sub.ConfHeight(height/2), sub.ConfWidth(width), true)
can.onmotion.move(can, sub._target, {left: left||0, top: (top||0)+height/4})
}), sub.onaction.close = function() { can.page.Remove(can, sub._target) }
}, document.body)
})
}) },
})
Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight },
ntip: function(can) { can.onexport._float(can, NTIP, "can.toast") },

View File

@ -24,6 +24,7 @@ fieldset.inner>div.output>div.project>div.zone fieldset.plug { position:static;
fieldset.inner>div.output>div.layout.flow>div.layout>div.content * { font-family:monospace; font-size:14px; outline:none; }
fieldset.inner>div.output>div.layout.flow>div.tabs { font-family:monospace; font-size:14px; display:none; }
fieldset.inner>div.output>div.layout.flow>div.path { font-family:monospace; font-size:14px; display:none; }
fieldset.inner>div.output>div.layout.flow>div.display div.status>div { padding:5px; float:left; }
fieldset.inner>div.output>div.layout.flow { position:relative; }
fieldset.inner.cmd>div.output>div.project { border-right:dimgray solid 1px; }
fieldset.inner.cmd>div.output div.profile { border-left:dimgray solid 1px; }

View File

@ -23,10 +23,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.cl
if (can.misc.sessionStorage(can, TABVIEW_HIDE) == html.HIDE) { can.onmotion.hidden(can, can.ui.project), can.onmotion.hidden(can, can.ui.tabs) }
case chat.FULL: // no break
default: can.onimport.project(can, paths), can.onimport._tabs(can)
var last = can.misc.localStorage(can, CURRENT_FILE);
can.onmotion.delay(can, function() { can.core.Next(files.slice(1), function(file, next) { can.onimport._tabview(can, paths[0], file, "", next) }, function() {
if (can.user.isWebview) { var last = can.misc.localStorage(can, CURRENT_FILE); if (last) {
var ls = can.core.Split(last, ice.DF); ls.length > 0 && can.onimport._tabview(can, ls[0], ls[1], ls[2])
} }
if (can.user.isWebview && last) { var ls = can.core.Split(last, ice.DF); ls.length > 0 && can.onimport._tabview(can, ls[0], ls[1], ls[2]) }
}) })
} var args = can.misc.SearchHash(can); can.db.tabview[can.onexport.keys(can)] = msg
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE), function() { if (!can.user.isWebview && args.length > 0 && can.isCmdMode()) {

View File

@ -19,12 +19,12 @@ Volcanos(chat.ONIMPORT, {
var msg = can.request(); msg.Echo(sub.Conf(ice.MSG_RESULT)), can.onappend._output(sub, msg, sub.Conf(ctx.DISPLAY))
})(); return }; var opt = can.base.Obj(item[ice.OPT], [])
sub.run = function(event, cmds, cb) { var res = can.request(event, can.Option(), opts); for (var i = 0; i < opt.length; i += 2) { res.Option(opt[i], opt[i+1]) }
can.run(event, (msg.Option("_index") == can._index? msg[ice.MSG_PREFIX]||[]: [ice.RUN, msg.Option("_index")]).concat(cmds), cb, true)
can.run(event, (msg.Option("_index") == can._index || can._index.indexOf("can.") == 0? msg[ice.MSG_PREFIX]||[]: [ice.RUN, msg.Option("_index")]).concat(cmds), cb, true)
sub.onimport.size(sub, height, can.ConfWidth(), true)
}
}) })
},
_float: function(can, msg) { var arg = msg._arg; msg.Table(function(item) { can.onappend._plugin(can, item, {index: item.index, args: arg.slice(1), mode: chat.FLOAT}, function(sub, meta) {
_float: function(can, msg) { var arg = msg._arg; msg.Table(function(item) { can.onappend._plugin(can, item, {index: item.index, args: arg? arg.slice(1): [], mode: chat.FLOAT}, function(sub, meta) {
sub.run = function(event, cmds, cb) { can.runAction(can.request(event, {path: msg.Option(nfs.PATH), text: msg.Option(mdb.TEXT)}), [ice.RUN, arg[0]], cmds, cb) }
can.getActionSize(function(left, top, width, height) { left = left||0, top = !can.Mode()? 120: 0, can.onmotion.move(can, sub._target, {left: left, top: top})
sub.onimport.size(sub, can.base.Max(height, can.page.height())-top-(can.user.isMobile&&!can.user.isLandscape()? 2*html.ACTION_HEIGHT: 0), width, true)
@ -63,7 +63,7 @@ Volcanos(chat.ONIMPORT, {
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) {
@ -113,17 +113,13 @@ Volcanos(chat.ONACTION, {list: [
"清空数据": function(event, can) { can.onmotion.clear(can, can._output) },
"删除工具": function(event, can) { can.page.Remove(can, can._target) },
"查看文档": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ice.HELP, index: can.Conf(ctx.INDEX)})) },
"查看脚本": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SCRIPT, index: can.Conf(ctx.INDEX)})) },
"查看源码": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SOURCE, index: can.Conf(ctx.INDEX)})) },
"查看配置": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ctx.CONFIG, index: can.Conf(ctx.INDEX)})) },
"查看日志": function(event, can) { var sub = can._outputs[0]; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) },
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
"查看文档": function(event, can) { can.runAction(event, ctx.CONFIG, [ice.HELP]) },
"查看脚本": function(event, can) { can.runAction(event, ctx.CONFIG, [nfs.SCRIPT]) },
"查看源码": function(event, can) { can.runAction(event, ctx.CONFIG, [nfs.SOURCE]) },
"查看配置": function(event, can) { can.runAction(event, ctx.CONFIG, [mdb.SELECT]) },
"清理配置": function(event, can) { can.runActionInputs(event, [ctx.ACTION, mdb.PRUNES]) },
"导出配置": function(event, can) { can.runAction(event, mdb.EXPORT) },
"导入配置": function(event, can) { can.runAction(event, mdb.IMPORT) },
"删除配置": function(event, can) { can.runAction(event, ctx.CONFIG, [mdb.REMOVE], function() { can.user.toastProcess(can), can.onmotion.delay(can, function() { can.user.toastSuccess(can), can.Update() }, 1000) }) },
refresh: function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT); if (sub) { sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.onimport.layout(sub) } },
close: function(event, can) {
if (can.isCmdMode()) {