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

add iframe

This commit is contained in:
shylinux@163.com 2022-09-23 23:37:33 +08:00
parent 0139cd75aa
commit 85521f7dd1
17 changed files with 143 additions and 87 deletions

View File

@ -139,6 +139,7 @@ Volcanos(chat.ONDAEMON, {help: "推荐引擎", _init: function(can, name) { if (
},
grow: function(can, msg, sub, arg) { sub.onimport._grow(sub, msg, can.page.Color(arg.join(""))) },
exit: function(can, msg, sub) { can.user.close() },
close: function(can, msg, sub) { can.user.close() },
})
Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list, cb, target, field) {
meta.name = (meta.name||"").split(ice.SP)[0].split(ice.PT).pop()
@ -187,10 +188,11 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
can.page.Modify(can, sub._legend, kit.Dict(can.Conf("legend_event")||chat.ONMOUSEENTER, function(event) {
can.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([["所有"].concat(can.core.Item(meta.feature._trans))]), function(event, item, meta) {
var cb = can.core.Value(sub, [chat._OUTPUTS_CURRENT, chat.ONACTION, item])
if (can.base.isFunc(cb)) { return cb(event, can.core.Value(sub, chat._OUTPUTS_CURRENT), item) }
var _sub = can.core.Value(sub, chat._OUTPUTS_CURRENT)
var cb = can.core.Value(_sub, [chat.ONACTION, item])
if (can.base.isFunc(cb)) { return cb(event, _sub, item) }
var cb = meta[item]||meta[chat._ENGINE]
if (can.base.isFunc(cb)) { return cb(event, sub, item) }
if (can.base.isFunc(cb)) { return cb(event, sub, item, _sub) }
})
})), can.base.isFunc(cb) && cb(sub)
}); return sub
@ -274,7 +276,8 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
var process = msg._can == can || msg._can == sub
if (process && can.core.CallFunc([sub, chat.ONIMPORT, ice.MSG_PROCESS], {can: sub, msg: msg})) { return }
if (process && can.core.CallFunc([can, chat.ONIMPORT, ice.MSG_PROCESS], {can: can, msg: msg})) { return }
!silent && can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)||meta.display||meta.feature.display, can._output, can._action)
if (cmds && cmds[0] == ctx.ACTION && msg.Result() == "" && msg.Length() == 0) { return can.Update() }
!silent && can.onappend._output(can, msg, meta.display||msg.Option(ice.MSG_DISPLAY)||meta.feature.display, can._output, can._action)
})
},
_output: function(can, msg, display, output, action, cb) { display = display||chat.PLUGIN_TABLE_JS, output = output||can._output
@ -301,6 +304,10 @@ Volcanos(chat.ONAPPEND, {help: "渲染引擎", _init: function(can, meta, list,
action === false || table.onappend._action(table, msg.Option(ice.MSG_ACTION)||can.Conf(ice.MSG_ACTION), action)
action === false || table.onappend._status(table, msg.Option(ice.MSG_STATUS))
// action === false || table.onimport.tool(table, can.base.Obj(msg.Option(ice.MSG_TOOLKIT)))
var mode= ["float", "full", "cmd"]; for (var i in mode) {
if (can.page.ClassList.has(can, can._target, mode[i])) { table.onlayout[mode[i]](table); break }
}
can.base.isFunc(cb) && cb(msg)
}, target: output||can._output})
})

View File

@ -41,6 +41,10 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg
})
return len
},
TableDetail: function() { var item = {hash: can.Option(mdb.HASH)}
msg.Table(function(value) { can.core.Value(item, value.key, value.value) })
return item
},
Table: function(cb) {
return can.core.List(msg.Length(), function(value, index, array) { var one = {}, res
can.core.List(msg.append, function(key) { one[key] = (msg[key]&&msg[key][index]||"") })

View File

@ -304,7 +304,8 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
_engine: function(event, can, button) { action.submit(event, can, button) },
submit: function(event, can, button) { var data = {}, args = [], list = []
list = can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) {
return item.name && item.value && args.push(item.name, item.value), data[item.name] = item.value
// return item.name && item.value && args.push(item.name, item.value), data[item.name] = item.value
return item.name && args.push(item.name, item.value||""), data[item.name] = item.value||""
})
var msg = can.request(event, {_handle: ice.TRUE})
!can.core.CallFunc(cb, {event: event, button: button, data: data, list: list, args: args}) && action.cancel()

View File

@ -58,6 +58,9 @@ fieldset.full { background-color:#073947f2; padding:0; margin:0; left:0; top:0;
fieldset.story>legend { margin:10px 0; }
fieldset.plug>legend { float:left; margin-right:5px; }
fieldset.float>legend { float:left; margin-right:5px; }
body.white fieldset.float>div.status { color:white; }
fieldset.story.float>div.status { display:none; }
fieldset.plugin.float>div.status { display:none; }
fieldset.full>legend { float:left; margin:0; margin-right:5px; }
fieldset.plugin>form.option input[type=button][name=close]{ display:none; }
fieldset.word>div.output>fieldset.story>form.option input[type=button][name=close]{ display:none; }
@ -70,6 +73,7 @@ fieldset.output div.toggle { display:none; }
fieldset.story>legend { float:left; margin:0px; margin-right:5px; }
fieldset.story { margin-top:10px; }
fieldset.story.full { margin-top:0px; }
fieldset.input.key { overflow:auto; }
fieldset.input.key div.action { display:none; }

View File

@ -116,9 +116,8 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [cli.CLOSE, cli.CLEAR, cli.
var cmd = line.cmd == ctx.COMMAND? can.core.Keys(line.type, line.name.split(ice.SP)[0]): can.core.Keys(line.ctx, line.cmd)
can.onappend.plugin(can, {type: "story", index: cmd||msg.Option(mdb.INDEX), args: cmd == "web.wiki.word"? [line.name]: args}, function(sub, meta) {
sub.run = function(event, cmds, cb) { can.runActionCommand(event, meta.index, cmds, cb) }
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ConfWidth()))
sub.ConfHeight(can.ConfHeight()-2*html.ACTION_HEIGHT-117)
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight())
can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(can.base.Min(320, can.ConfHeight()-2*html.ACTION_HEIGHT-html.ACTION_HEIGHT-can.ui.content.offsetHeight-can.ui.display.offsetHeight)-1))
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth(can.ConfWidth()-1))
sub.Focus()
}, can.ui.profile)
},

View File

@ -1,4 +1,4 @@
Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
Volcanos(chat.ONFIGURE, {help: "控件详情", key: {
_init: function(event, can, cbs, target, name, value) {
can.runAction(event, mdb.INPUTS, [name, value||target.value], function(msg) {
can.onfigure.key._show(can, msg, cbs, target, name)

View File

@ -0,0 +1,11 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) {
can.current = msg.TableDetail(), can.onimport.layout(can), can.base.isFunc(cb) && cb(msg)
},
layout: function(can) { var item = can.current; can.onmotion.clear(can)
can.page.Append(can, can._output, [{type: html.IFRAME, src: item.link, height: can.ConfHeight()-4, width: can.ConfWidth(), style: {border: 0}}])
},
})
Volcanos(chat.ONACTION, {help: "操作数据",
open: function(can) { can.user.open(can.current.link) },
})
Volcanos(chat.ONEXPORT, {help: "导出数据"})

View File

@ -45,6 +45,7 @@ fieldset>div.status legend.select { background-color:green; }
fieldset>div.status legend:hover { background-color:green; }
fieldset.inner>div.status { height:31px; overflow:auto; }
fieldset.panel>div.status { display:none; overflow:auto; }
fieldset.Search.panel>div.status { display:block; overflow:auto; }
fieldset.inner.simple>legend { display:none; }
fieldset.inner.simple>form.option { display:none; }
fieldset.inner.simple>div.status { display:none; }

View File

@ -413,7 +413,6 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
can.ui._content = can.ui.content, can.ui._profile_output = can.ui.profile_output
can.tabview = can.tabview||{}, can.history = can.history||[], can.toolkit = {}, can.extentions = {}
can.profile_size = {}, can.display_size = {}
can.base.isFunc(cb) && cb(msg)
switch (can.Mode()) {
case "simple": can.onmotion.hidden(can, can.ui.project); break
@ -438,7 +437,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
if (can.isCmdMode() && hash) { var args = can.core.Split(decodeURIComponent(hash).slice(1))
can.onmotion.delay(can, function() { can.onimport.tabview(can, args[args.length-3]||can.Option(nfs.PATH), args[args.length-2]||can.Option(nfs.FILE), args[args.length-1]) })
}
})
}), can.base.isFunc(cb) && cb(msg)
},
_toolkit: function(can, target) {
can.ui.toolkit = can.onappend.field(can, "toolkit", {}, can._output)
@ -462,7 +461,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
can.page.styleWidth(can, can.ui.display_output, width-can.ui.project.offsetWidth)
var displayHeight = can.display_size[can.onexport.keys(can)]
can.page.style(can, can.ui.display_output, html.HEIGHT, displayHeight||200)
can.page.style(can, can.ui.display_output, html.HEIGHT, displayHeight||"")
if (can.isCmdMode()) {
if (can.ui.display.display != html.NONE) {

View File

@ -109,7 +109,7 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮",
},
},
sh: {
// render: {},
render: {},
split: {
operator: "=",
},
@ -239,6 +239,19 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮",
"=>": code.KEYWORD,
},
},
py: {
prefix: {
"#!": code.COMMENT,
"# ": code.COMMENT,
},
keyword: {
"import": code.KEYWORD,
"from": code.KEYWORD,
"return": code.KEYWORD,
"print": code.FUNCTION,
},
},
js: {
render: {},
split: {

View File

@ -1,8 +1,8 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = []
can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(msg._event, can) })
// can.core.Item(can.onkeymap._mode.plugin, function(key, value) { can.onkeymap._mode.normal[key] = can.onkeymap._mode.normal[key]||value })
can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can)
can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(msg._event, can) })
can.page.ClassList.add(can, can._fields, code.VIMER), can.base.isFunc(cb) && cb(msg)
can.onengine.plugin(can, can.onplugin)
}, target) }, function(can, name, sub) { name == chat.ONIMPORT && (can.onimport.inner_init = sub._init)
@ -60,7 +60,7 @@ Volcanos(chat.ONFIGURE, {help: "索引导航",
dream: function(can, target, zone) { var call = arguments.callee
can.runAction({}, ice.RUN, [web.DREAM], function(msg) { msg.Table(function(item) { var color = item.status == cli.START? "": "gray"
can.page.style(can, can.onimport.item(can, item, function(event) {
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys(can.misc.Search(can, ice.POD), item.name), web.DREAM)
can.onimport.tabview(can, can.Option(nfs.PATH), item.name, web.DREAM)
}, function(event) {
return shy({}, kit.Dict(cli.START, [cli.OPEN, cli.STOP], cli.STOP, [cli.START, nfs.TRASH])[item.status], function(event, button) {
can.runAction(can.request({}, item), ice.RUN, [web.DREAM, ctx.ACTION, button], function(msg) {
@ -298,7 +298,7 @@ Volcanos(chat.ONACTION, {help: "控件交互",
},
dream: function(event, can, button) {
can.onaction._runs(can.request(event, {name: can.base.trimSuffix(can.Option(nfs.FILE).split(ice.PS).pop(), ice.PT+can.base.Ext(can.Option(nfs.FILE)))}), can, button, function(msg) { can.ui.dream.refresh()
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys(can.misc.Search(can, ice.POD), msg.Option(mdb.NAME)), web.DREAM)
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(mdb.NAME), web.DREAM)
can.user.toastSuccess(can)
})
},
@ -386,7 +386,7 @@ Volcanos(chat.ONACTION, {help: "控件交互",
filter()
}
},
_selectLine: function(event, can) {
_selectLine: function(event, can) { if (!can.current) { return }
can.page.Select(can, can.current.line, "td.text", function(td) { var target = can.ui.current; target.value = td.innerText
can.current.line.appendChild(target), can.page.style(can, target, html.LEFT, td.offsetLeft-1, html.WIDTH, can.ui.content.style.width)
if (event && event.type) {

View File

@ -1,11 +1,10 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.onmotion.clear(can)
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { can.onmotion.clear(can)
can.requireModules(["xterm/css/xterm.css", "xterm", "xterm-addon-fit", "xterm-addon-web-links"], function() {
var item = {hash: can.Option(mdb.HASH)}; msg.Table(function(value) { can.core.Value(item, value.key, value.value) })
item.text && can.onmotion.delay(can, function() { can.onimport._input(can, item.text+ice.NL) })
can.onimport.layout(can), can.onappend._status(can), can.onappend.tools(can, msg, function(sub) {
can.onimport._connect(can, item), can.onappend.tools(can, msg, function(sub) {
sub._item_click = function(value, key) { can.onimport._input(can, value+ice.NL) }
}), can.isCmdMode() && can.Option(mdb.HASH) && can.Option(mdb.HASH) == can.misc.Search(can, mdb.HASH) && can.runAction({}, "full")
can.onimport._connect(can, item)
}), can.base.isFunc(cb) && cb(msg), can.onappend._status(can)
})
},
_connect: function(can, item) { var term = new Terminal({tabStopWidth: 4, cursorBlink: true})
@ -15,13 +14,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
term.onTitleChange(function(title) { can.isCmdMode() && can.user.title(title) })
term.onResize(function(size) { can.onimport._resize(can, size) })
term.onData(function(data) {
console.log(data)
can.onimport._input(can, data)
})
term.onKey(function(data) {
console.log(data)
})
term.onData(function(data) { can.onimport._input(can, data) })
term.onCursorMove(function() { can.onexport.term(can) })
can._current = term, term._item = item
@ -33,21 +26,20 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
_input: function(can, data) { if (!can._current) { return }
can.runAction(can.request({}, can._current._item), "input", [btoa(data)], function() {})
},
layout: function(can) {
if (can.isCmdMode()) { can._current && can.onimport._title(can, can._current._item.name)
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+10, html.WIDTH, can.ConfWidth()+20, html.MAX_WIDTH, "")
} else {
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth(), html.MAX_WIDTH, "")
}
can.onmotion.delay(can, function() { can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "") }, 500)
can._current && can._current._fit.fit()
},
grow: function(can, msg) { can._current.write(msg.Option(mdb.TEXT)) },
})
Volcanos(chat.ONACTION, {help: "操作数据",
refresh: function(event, can, button) {
can.onimport.layout(can), can._current.focus()
Volcanos(chat.ONLAYOUT, {help: "界面布局",
_init: function(can) {
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+10, html.WIDTH, can.ConfWidth()+20, html.MAX_WIDTH, "")
can.onmotion.delay(can, function() { can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "") }, 500)
can._current && can._current._fit.fit(), can.onexport.term(can)
},
cmd: function(can) { can._current && can.onimport._title(can, can._current._item.name), can.ConfWidth(can.ConfWidth()-10)
can.Option(mdb.HASH) && can.Option(mdb.HASH) == can.misc.Search(can, mdb.HASH)? can.sup.onaction.full({}, can.sup): can.onlayout._init(can)
},
})
Volcanos(chat.ONACTION, {help: "操作数据",
refresh: function(event, can, button) { can.onlayout._init(can), can._current.focus() },
"波浪线": function(event, can, button) { can.onimport._input(can, "~"), can._current.focus() },
"反引号": function(event, can, button) { can.onimport._input(can, "`"), can._current.focus() },
})

View File

@ -96,33 +96,63 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _process: function(can, msg) {
},
})
Volcanos(chat.ONACTION, {help: "交互操作", list: [
"刷新数据", "切换全屏", "keyboard", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片", [
"其它", "刷新页面", "保存参数", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据",
"刷新页面", "刷新数据", "共享工具", "切换浮动", "切换全屏", "远程控制", "打开链接", "生成链接", "生成脚本", "生成图片", [
"其它", "保存参数", "清空参数", "扩展参数", "复制数据", "下载数据", "清空数据",
"查看文档", "查看脚本", "查看源码", "查看配置", "删除配置", "删除工具",
],
],
_engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input([], true))) },
"刷新数据": function(event, can) { can.Update({}, can.Input([], true)) },
"切换全屏": function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
if (can.page.ClassList.neg(can, can._target, "full")) {
var height = window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT; can.user.isMobile && (height -= 2*html.ACTION_HEIGHT)
can._mode_bak = can.Mode(), can._height_bak = sub.ConfHeight(), can._width_bak = sub.ConfWidth()
sub.Mode("full"), can.Mode("full"), can.ConfHeight(height), can.ConfWidth(window.innerWidth)
can.page.style(can, can._output, html.HEIGHT, sub.ConfHeight(height), html.MIN_WIDTH, sub.ConfWidth(window.innerWidth))
_switch: function(can, sub, mode, save, load) {
if (can.page.ClassList.neg(can, can._target, mode)) {
can._mode_bak = can.Mode(), can._height_bak = can.ConfHeight()||"", can._width_bak = can.ConfWidth()||""
can._output_bak = {}, can.core.List([html.HEIGHT, html.MAX_HEIGHT, html.WIDTH, html.MAX_WIDTH], function(key) {
can._output_bak[key] = can._output.style[key]
})
save(), sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth())
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth(), html.MAX_WIDTH, can.ConfWidth())
sub.Mode(can.Mode(mode)), sub.onlayout[mode](sub)
} else {
can.Mode(can._mode_bak||""), can.ConfHeight(can._height_bak), can.ConfWidth(can._width_bak)
sub.Mode(can._mode_bak||""), sub.ConfHeight(can._height_bak), sub.ConfWidth(can._width_bak)
can.page.style(can, can._output, html.HEIGHT, "", html.MIN_WIDTH, "")
can.page.style(can, can._output, can._output_bak)
load(), sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth())
sub.Mode(can.Mode()), sub.onlayout._init(sub)
}
can.core.CallFunc([sub, chat.ONIMPORT, html.LAYOUT], {can: sub})
},
"刷新页面": function(event, can, button, sub) {
can.core.CallFunc([sub.onimport, "_init"], {can: sub, msg: sub._msg, cb: function(msg) { can.user.toastSuccess(can) }, target: can._output})
},
"刷新数据": function(event, can) {
can.Update({}, can.Input([], true))
},
"共享工具": function(event, can) { var meta = can.Conf()
can.onmotion.share(event, can, [{name: chat.TITLE, value: meta.name}, {name: chat.TOPIC, values: [cli.WHITE, cli.BLACK]}], [
mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)),
])
},
"keyboard": function(event, can) {
"切换浮动": function(event, can, button, sub) {
can.onaction._switch(can, sub, "float", function() {
can.onmotion.move(can, can._target, {left: window.innerWidth/2, top: window.innerHeight/2})
can.ConfHeight(window.innerHeight/2), html.WIDTH, can.ConfWidth(window.innerWidth/2)
}, function() {
can.page.style(can, can._target, html.LEFT, "", html.TOP, "")
})
},
"切换全屏": function(event, can, button, sub) {
can.onaction._switch(can, sub, "full", function() {
if (sub.isCmdMode()) {
can.onmotion.hidden(can, can._legend), can.onmotion.hidden(can, can._option), can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can._status)
can.ConfHeight(window.innerHeight), can.ConfWidth(window.innerWidth)
} else {
can.ConfHeight(window.innerHeight - (can._status.innerText? 2: 1)*html.ACTION_HEIGHT - (can.user.isMobile? 2*html.ACTION_HEIGHT: 0)), can.ConfWidth(window.innerWidth)
}
}, function() {
if (sub.isCmdMode()) {
can.onmotion.toggle(can, can._legend, true), can.onmotion.toggle(can, can._option, true), can.onmotion.toggle(can, can._action, true), can.onmotion.toggle(can, can._status, true)
}
})
},
"远程控制": function(event, can) {
can.base.isUndefined(can._daemon) && can.ondaemon._list[0] && (can._daemon = can.ondaemon._list.push(can)-1)
can.request(event, kit.Dict(ctx.INDEX, can._index, ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], can._daemon)))
@ -152,16 +182,15 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
},
"生成图片": function(event, can) { can.onmotion.toimage(event, can, can._name) },
"刷新页面": function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
can.core.CallFunc([sub, chat.ONIMPORT, "_init"], {can: sub, msg: sub._msg, cb: function(msg) {}, target: can._output})
},
"保存参数": function(event, can) { can.search(event, ["River.ondetail.保存参数"]) },
"清空参数": function(event, can) { can.page.SelectArgs(can, can._option, "", function(item) { return item.value = "" }) },
"扩展参数": function(event, can) { can.onmotion.toggle(can, can._action) },
"复制数据": function(event, can) { can.user.copy(event, can, can.onexport.table(can)||can.onexport.board(can)) },
"下载数据": function(event, can) { var meta = can.Conf()
"复制数据": function(event, can, button, sub) {
can.user.copy(event, can, sub.onexport.table(sub)||sub.onexport.board(sub))
},
"下载数据": function(event, can, button, sub) { var meta = can.Conf()
can.user.input(event, can, [{name: "filename", value: meta.name}], function(list) {
can.user.downloads(can, can.onexport.table(can), list[0], nfs.CSV)||can.user.downloads(can, can.onexport.board(can), meta.name, nfs.TXT)
can.user.downloads(can, sub.onexport.table(sub), list[0], nfs.CSV)||can.user.downloads(can, sub.onexport.board(sub), meta.name, nfs.TXT)
})
},
"清空数据": function(event, can) { can.onmotion.clear(can, can._output) },
@ -202,16 +231,8 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
})
},
full: function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
if (can.isCmdMode()) {
can.onmotion.hidden(can, can._legend), can.onmotion.hidden(can, can._option), can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can._status)
can.ConfHeight(window.innerHeight), can.ConfWidth(window.innerWidth)
sub.ConfHeight(window.innerHeight), sub.ConfWidth(window.innerWidth)
sub.onimport.layout(sub)
} else {
can.onaction["切换全屏"](event, can)
}
},
keyboard: function(event, can) { can.onaction["远程控制"](event, can, "远程控制", can.core.Value(can, chat._OUTPUTS_CURRENT)) },
full: function(event, can) { can.onaction["切换全屏"](event, can, "切换全屏", can.core.Value(can, chat._OUTPUTS_CURRENT)) },
refresh: function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
if (!sub) { return }
sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.onimport.layout(sub)
@ -256,12 +277,3 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
})
},
})
Volcanos(chat.ONEXPORT, {help: "导出数据",
table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return }
var res = [msg.append && msg.append.join(ice.FS)]; msg.Table(function(line, index, array) {
res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS))
})
return res.join(ice.NL)
},
board: function(can) { var msg = can._msg; return msg.Result() },
})

View File

@ -1,5 +1,5 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg); if (msg.Length() == 0) { return }
can.onmotion.clear(can); if (msg.Length() == 0) { return }
can.ConfDefault({root: "ice", field: msg.append[0], split: ice.PS})
can.dir_root = msg.Option(nfs.DIR_ROOT)||can.Conf("root")
@ -10,7 +10,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
can.margin = parseInt(can.Action("margin")||30)
can.page.ClassList.add(can, can._fields, "draw")
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() {
can.onimport.layout(can)
can.base.isFunc(cb) && cb(msg)
})
},
_tree: function(can, list, field, split) {

View File

@ -1,14 +1,12 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg); if (msg.Length() == 0) { return }
if (msg.Option("branch")) { return can.onappend.table(can, msg) }
can.onmotion.clear(can)
can.data = msg.Table(), can.onimport._sum(can)
can.Action(html.HEIGHT, msg.Option(html.HEIGHT)||ice.AUTO)
can.Action(html.SPEED, parseInt(msg.Option(html.SPEED)||"100"))
can.page.ClassList.add(can, can._fields, "draw")
can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() {
can.onimport.layout(can)
can.base.isFunc(cb) && cb(msg)
})
},
_sum: function(can) {

View File

@ -1,5 +1,4 @@
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
can.page.style(can, can._output, html.HEIGHT, "")
can.user.isMobile && !can.user.isLandscape() && can.onmotion.hidden(can, can._action)
var cbs = can.onimport[can.Conf(ctx.STYLE)]; if (can.base.isFunc(cbs)) {
can.core.CallFunc(cbs, {can: can, msg: msg, target: target, list: msg.Table()})
@ -7,6 +6,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
return cbs(can, msg, target)
}
can.page.style(can, can._output, html.HEIGHT, "")
can.onmotion.clear(can, target)
can.onappend.table(can, msg, null, target)
can.onappend.board(can, msg, target)
@ -173,6 +173,21 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
})
},
})
Volcanos(chat.ONLAYOUT, {help: "界面布局",
_init: function(can) { can.core.CallFunc([can.onimport, html.LAYOUT], {can: can}) },
float: function(can) { can.onlayout._init(can) },
full: function(can) { can.onlayout._init(can) },
cmd: function(can) { can.onlayout._init(can) },
})
Volcanos(chat.ONACTION, {help: "操作数据",
_trans: {"full": "全屏"},
})
Volcanos(chat.ONEXPORT, {help: "导出数据",
table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return }
var res = [msg.append && msg.append.join(ice.FS)]; msg.Table(function(line, index, array) {
res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS))
})
return res.join(ice.NL)
},
board: function(can) { var msg = can._msg; return msg.Result() },
})

View File

@ -450,7 +450,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", pack:
}
_can_path = _can_name||_can_path
if (can._follow) { libs = libs.concat(meta.libs, meta.volcano) }
if (can._follow) { libs = libs.concat(meta.volcano, meta.libs) }
if (libs && libs.length > 0) { // 解析参数
for (var i = 0; i < libs.length; i++) {
if (libs[i] == undefined) {