forked from x/volcanos
opt some
This commit is contained in:
parent
6893d781b3
commit
5bf4b85ca0
@ -176,7 +176,7 @@ Volcanos("user", {help: "用户操作", info: {}, agent: {
|
||||
})
|
||||
},
|
||||
"授权": function() {
|
||||
can.misc.WSS(can, {type: html.CHROME, cmd: "sso", "user.web": location.href}, function(event, msg, cmd, arg) { if (!msg) { return }
|
||||
can.misc.WSS(can, {type: html.CHROME, cmd: "sso", "back": location.href}, function(event, msg, cmd, arg) { if (!msg) { return }
|
||||
if (cmd == "pwd") {
|
||||
return location.href = arg[1]
|
||||
}
|
||||
|
@ -1,21 +1,21 @@
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { if (msg.Result() == "" && msg.Length() == 0) { can.onmotion.hidden(can, can._output); return }
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||
if (msg.Result() == "" && msg.Length() == 0) { can.onmotion.hidden(can, can._output); return }
|
||||
can.onmotion.toggle(can, can._output, true)
|
||||
if (msg.Option(nfs.FILE)) {
|
||||
msg.Option(nfs.PATH) && can.Option(nfs.PATH, msg.Option(nfs.PATH))
|
||||
can.Option(nfs.FILE, msg.Option(nfs.FILE))
|
||||
msg.Option(nfs.LINE) && can.Option(nfs.LINE, msg.Option(nfs.LINE))
|
||||
}
|
||||
if (can.Option(nfs.PATH) == "man") {
|
||||
// msg.result = [msg.Option(mdb.TEXT)]
|
||||
}
|
||||
|
||||
var paths = can.core.Split(can.Option(nfs.PATH), ice.FS); can.Option(nfs.PATH, paths[0])
|
||||
var files = can.core.Split(can.Option(nfs.FILE), ice.FS); can.Option(nfs.FILE, files[0])
|
||||
can.tabview = can.tabview||{}, can.history = can.history||[], can.toolkit = {}, can.extentions = {}
|
||||
can.profile_size = {}, can.display_size = {}
|
||||
can.core.List(paths.concat(msg.modules||[], can.sup.paths||[]), function(p) {
|
||||
if (paths.indexOf(p) == -1) { paths.push(p) }
|
||||
}), can.sup.paths = paths
|
||||
|
||||
can.tabview = can.tabview||{}, can.history = can.history||[], can.toolkit = {}, can.extentions = {}
|
||||
can.profile_size = {}, can.display_size = {}
|
||||
|
||||
can.page.ClassList.add(can, can._fields, "inner")
|
||||
can.onmotion.clear(can), can.onlayout.profile(can)
|
||||
can.page.styleWidth(can, can.ui.project, 240)
|
||||
@ -51,8 +51,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
}
|
||||
})
|
||||
},
|
||||
_input: function(can) {
|
||||
},
|
||||
_input: function(can) {},
|
||||
_project: function(can, target) {
|
||||
target._toggle = function(event, show) { can.onimport.layout(can) }
|
||||
},
|
||||
@ -392,7 +391,8 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", list: ["keyword", "prefix", "line
|
||||
case code.FUNCTION: return wrap(type, text)
|
||||
default:
|
||||
var t = can.core.Item(p.regexp, function(reg, type) {
|
||||
if ((new RegExp(reg)).test(text)) { return type }
|
||||
var m = text.match(new RegExp(reg))
|
||||
if (m && m.length > 0 && m[0] == text) { return type}
|
||||
}); if (t && t.length > 0) { return wrap(t[0], text) }
|
||||
return wrap(type, text)
|
||||
}
|
||||
@ -654,6 +654,47 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮",
|
||||
"2": code.CONSTANT,
|
||||
},
|
||||
},
|
||||
sh: {
|
||||
// render: {},
|
||||
split: {
|
||||
operator: "=",
|
||||
},
|
||||
prefix: {
|
||||
"#": code.COMMENT,
|
||||
},
|
||||
suffix: {
|
||||
" {": code.COMMENT,
|
||||
},
|
||||
regexp: {
|
||||
"[A-Z0-9_]+": code.CONSTANT,
|
||||
},
|
||||
keyword: {
|
||||
"local": code.KEYWORD,
|
||||
"export": code.KEYWORD,
|
||||
"require": code.KEYWORD,
|
||||
"source": code.KEYWORD,
|
||||
"return": code.KEYWORD,
|
||||
"exit": code.KEYWORD,
|
||||
".": code.KEYWORD,
|
||||
|
||||
"if": code.KEYWORD,
|
||||
"then": code.KEYWORD,
|
||||
"elif": code.KEYWORD,
|
||||
"else": code.KEYWORD,
|
||||
"fi": code.KEYWORD,
|
||||
|
||||
"case": code.KEYWORD,
|
||||
"in": code.KEYWORD,
|
||||
"esac": code.KEYWORD,
|
||||
|
||||
"eval": code.FUNCTION,
|
||||
"test": code.FUNCTION,
|
||||
"echo": code.FUNCTION,
|
||||
"mkdir": code.FUNCTION,
|
||||
"cat": code.FUNCTION,
|
||||
"rm": code.FUNCTION,
|
||||
},
|
||||
}, configure: {link: "sh"},
|
||||
go: {
|
||||
render: {},
|
||||
keyword: {
|
||||
@ -703,30 +744,6 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮",
|
||||
"complex": code.FUNCTION, "real": code.FUNCTION, "imag": code.FUNCTION,
|
||||
},
|
||||
},
|
||||
zml: {
|
||||
prefix: {
|
||||
"# ": code.COMMENT,
|
||||
},
|
||||
keyword: {
|
||||
"return": code.KEYWORD,
|
||||
|
||||
"head": code.KEYWORD,
|
||||
"left": code.KEYWORD,
|
||||
"main": code.KEYWORD,
|
||||
"foot": code.KEYWORD,
|
||||
"tabs": code.KEYWORD,
|
||||
|
||||
"index": code.FUNCTION,
|
||||
"action": code.FUNCTION,
|
||||
"args": code.FUNCTION,
|
||||
"type": code.FUNCTION,
|
||||
"style": code.FUNCTION,
|
||||
"width": code.FUNCTION,
|
||||
|
||||
"auto": "constant",
|
||||
"username": "constant",
|
||||
},
|
||||
},
|
||||
js: {
|
||||
split: {
|
||||
operator: "{[(.,:;!|<*>)]}",
|
||||
@ -858,4 +875,28 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮",
|
||||
"fixed": "constant",
|
||||
},
|
||||
},
|
||||
zml: {
|
||||
prefix: {
|
||||
"# ": code.COMMENT,
|
||||
},
|
||||
keyword: {
|
||||
"return": code.KEYWORD,
|
||||
|
||||
"head": code.KEYWORD,
|
||||
"left": code.KEYWORD,
|
||||
"main": code.KEYWORD,
|
||||
"foot": code.KEYWORD,
|
||||
"tabs": code.KEYWORD,
|
||||
|
||||
"index": code.FUNCTION,
|
||||
"action": code.FUNCTION,
|
||||
"args": code.FUNCTION,
|
||||
"type": code.FUNCTION,
|
||||
"style": code.FUNCTION,
|
||||
"width": code.FUNCTION,
|
||||
|
||||
"auto": "constant",
|
||||
"username": "constant",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
@ -79,7 +79,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar
|
||||
|
||||
var color = item.status == "start"? "": "gray"
|
||||
can.page.Append(can, target, [{view: html.ITEM, list: [{text: [item.name, html.DIV], style: {color: color}, onmouseenter: carte}], onclick: function() {
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), item.name, web.DREAM) // 显示空间
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys(can.misc.Search(can, "pod"), item.name), web.DREAM) // 显示空间
|
||||
}}])
|
||||
})
|
||||
})
|
||||
@ -277,7 +277,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [],
|
||||
},
|
||||
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.dreams.refresh()
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option(mdb.NAME), web.DREAM) // 显示空间
|
||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.core.Keys(can.misc.Search(can, "pod"), msg.Option(mdb.NAME)), web.DREAM) // 显示空间
|
||||
can.user.toastSuccess(can)
|
||||
})
|
||||
},
|
||||
|
@ -2,6 +2,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
|
||||
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) })
|
||||
can.onimport.layout(can), can.onappend._status(can), can.onimport._connect(can, item)
|
||||
can.isCmdMode() && can.misc.Search(can, "hash") && can.onaction.full({}, can)
|
||||
})
|
||||
},
|
||||
_connect: function(can, item) { item.extra = can.base.Obj(item.extra, {})
|
||||
@ -19,10 +20,11 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { can.o
|
||||
term.open(can._output), term.focus()
|
||||
},
|
||||
_resize: function(can, item, size) {
|
||||
can.runAction(can.request({}, size, item), "resize", function() { can.onexport.term(can) })
|
||||
can.runAction(can.request({}, size, item), "resize", [], function() { can.onexport.term(can) })
|
||||
},
|
||||
_input: function(can, item, val) {
|
||||
can.runAction(can.request({}, item, {"log.disable": ice.TRUE}), "input", [btoa(val)], function() {})
|
||||
// can.runAction(can.request({}, item, {}), "input", [btoa(val)], function() {})
|
||||
},
|
||||
layout: function(can) {
|
||||
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+(can.ConfHeight() == window.innerHeight? 10: 0), html.WIDTH, can.ConfWidth()+20, html.MAX_WIDTH, "")
|
||||
|
@ -1,7 +1,6 @@
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, conf, cb, target) {},
|
||||
_process: function(can, msg) {
|
||||
msg.OptionStatus() && can.onmotion.clear(can, can._status) && can.onappend._status(can, can.base.Obj(msg.OptionStatus()))
|
||||
return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, sub: can, msg: msg})
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _process: function(can, msg) {
|
||||
msg.OptionStatus() && can.onmotion.clear(can, can._status) && can.onappend._status(can, msg.OptionStatus())
|
||||
return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, msg: msg})
|
||||
},
|
||||
|
||||
_location: function(can, msg, _arg) { can.user.jumps(_arg); return true },
|
||||
@ -23,64 +22,57 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, conf, cb, ta
|
||||
_display: function(can, msg) {
|
||||
return can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)), true
|
||||
},
|
||||
_inner: function(can, msg) {
|
||||
can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.story.auto(can)
|
||||
can.page.style(can, can._output, html.DISPLAY, html.BLOCK)
|
||||
return true
|
||||
},
|
||||
_field: function(can, msg) { var opts = {}
|
||||
can.page.Select(can, can._option, "input.args", function(target) {
|
||||
can.page.Select(can, can._option, html.INPUT_ARGS, function(target) {
|
||||
var value = msg.Option(target.name); target.name && value && (opts[target.name] = value)
|
||||
})
|
||||
msg.Table(function(item) { item.type = chat.STORY, can.onappend._plugin(can, item, {type: chat.STORY, index: item.index, args: can.base.Obj(item[ice.ARG], [])}, function(sub, meta) {
|
||||
sub.Conf(can.base.Obj(item.conf))
|
||||
if (sub.Conf("mode") == "simple") { (function() {
|
||||
var msg = can.request(); msg.Echo(sub.Conf("result")), sub.ConfHeight(can.ConfHeight()/2)
|
||||
can.onappend._output(sub, msg, msg.Option(ice.MSG_DISPLAY)||sub.Conf("feature.display"))
|
||||
msg.Table(function(item) { can.onappend._plugin(can, item, {type: chat.STORY, index: item.index, args: can.base.Obj(item[ice.ARG], [])}, function(sub, meta) {
|
||||
sub.Conf(can.base.Obj(item.conf)); if (sub.isSimpleMode()) { (function() { sub.ConfHeight(can.ConfHeight()/2)
|
||||
var msg = can.request(); msg.Echo(sub.Conf(ice.MSG_RESULT))
|
||||
can.onappend._output(sub, msg, sub.Conf("feature.display"))
|
||||
})(); return }
|
||||
|
||||
var opt = can.base.Obj(item[ice.OPT], [])
|
||||
sub.ConfHeight(can.ConfHeight())
|
||||
sub.ConfWidth(can.ConfWidth()-4*html.PLUGIN_MARGIN)
|
||||
sub.run = function(event, cmds, cb, silent) {
|
||||
var res = can.request(event, can.Option(), {pid: msg.Option("pid")}, opts)
|
||||
sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()-4*html.PLUGIN_MARGIN)
|
||||
sub.run = function(event, cmds, cb) {
|
||||
var res = can.request(event, can.Option(), opts, {pid: msg.Option("pid")})
|
||||
for (var i = 0; i < opt.length; i += 2) { res.Option(opt[i], opt[i+1]) }
|
||||
can.run(event, (msg[ice.MSG_PREFIX]||[]).concat(cmds), cb, true)
|
||||
}
|
||||
}) })
|
||||
return true
|
||||
},
|
||||
_inner: function(can, msg) {
|
||||
can.onappend.table(can, msg)
|
||||
can.onappend.board(can, msg)
|
||||
can.onmotion.story.auto(can)
|
||||
can.page.style(can, can._output, html.DISPLAY, html.BLOCK)
|
||||
return true
|
||||
},
|
||||
_float: function(can, msg) { var _arg = msg._arg
|
||||
msg.Table(function(item) { can.onappend._plugin(can, item, {type: "float", index: item.index, args: _arg.slice(1), mode: "float"}, function(sub, meta) {
|
||||
msg.Table(function(item) { can.onappend._plugin(can, item, {type: chat.FLOAT, index: item.index, args: _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, msg._arg[0]], cmds, cb) }
|
||||
sub.Mode("float"), can.getActionSize(function(left, top, width, height) { left = left||0
|
||||
sub.Mode(chat.FLOAT), can.getActionSize(function(left, top, width, height) { left = left||0
|
||||
var top = can.Mode() == undefined? 120: 0; if (can.user.isMobile) { top = can.user.isLandscape()? 0: 48 }
|
||||
sub.ConfHeight(height-top-2*html.ACTION_HEIGHT-(can.user.isMobile&&!can.user.isLandscape()? 2*html.ACTION_HEIGHT: 0)), sub.ConfWidth(width)
|
||||
can.page.style(can, sub._output, "max-height", window.innerHeight - top, "overflow", "auto")
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, window.innerHeight - top, html.OVERFLOW, ice.AUTO)
|
||||
can.onmotion.move(can, sub._target, {position: html.FIXED, left: left, top: top})
|
||||
})
|
||||
}, document.body) })
|
||||
return true
|
||||
},
|
||||
|
||||
_hold: function(can, msg, _arg) { _arg && can.user.toast(can, _arg); return true },
|
||||
_hold: function(can, msg, _arg) { return _arg && can.user.toast(can, _arg), true },
|
||||
_back: function(can) { can._history.pop()
|
||||
for (var his = can._history.pop(); his; his = can._history.pop()) { if (his[0] == ctx.ACTION) { continue }
|
||||
var index = 0
|
||||
for (var index = 0, his = can._history.pop(); his; his = can._history.pop()) { if (his[0] == ctx.ACTION) { continue }
|
||||
can.page.SelectArgs(can, can._option, "", function(item) { item.value = his[index++]||"" })
|
||||
can.page.SelectArgs(can, can._action, "", function(item) { item.value = his[index++]||"" })
|
||||
can.Update(); break
|
||||
}
|
||||
!his && can.Update()
|
||||
} !his && can.Update()
|
||||
return true
|
||||
},
|
||||
_rich: function(can, msg, _arg) {
|
||||
if (can.page.Select(can, can._output, [html.TABLE_CONTENT, html.TBODY], function(table) {
|
||||
var head = can.page.Select(can, can._output, [html.TABLE_CONTENT, html.TH], function(th) { return th.innerText })
|
||||
can.page.Append(can, table, msg.Table(function(value) {
|
||||
return {row: can.core.List(head, function(key) { return value[key] })}
|
||||
}))
|
||||
can.page.Append(can, table, msg.Table(function(value) { return {row: can.core.List(head, function(key) { return value[key] })} }))
|
||||
return true
|
||||
}).length == 0) { can.onappend.table(can, msg) }
|
||||
return true
|
||||
@ -112,7 +104,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
||||
_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._outputs[can._outputs.length-1]
|
||||
"切换全屏": 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()
|
||||
@ -149,7 +141,7 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
||||
},
|
||||
"生成图片": function(event, can) { can.onmotion.toimage(event, can, can._name) },
|
||||
|
||||
"刷新页面": function(event, can) { var sub = can.core.Value(can._outputs, "-1")
|
||||
"刷新页面": 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.保存参数"]) },
|
||||
@ -162,18 +154,17 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [
|
||||
})
|
||||
},
|
||||
"清空数据": function(event, can) { can.onmotion.clear(can, can._output) },
|
||||
"删除工具": function(event, can) { can.page.Remove(can, can._target) },
|
||||
"删除配置": function(event, can) { can.runAction(event, "config", ["reset"]) },
|
||||
"查看配置": function(event, can) { can.runAction(event, "config", ["select"], function(msg) {
|
||||
can.onappend.board(can, msg)
|
||||
}) },
|
||||
|
||||
"查看文档": function(event, can) { can.runAction(event, "config", ["help"]) },
|
||||
"查看脚本": function(event, can) { can.runAction(event, "config", ["script"]) },
|
||||
"查看源码": function(event, can) { can.runAction(event, "config", ["source"]) },
|
||||
"帮助文档": function(event, can) { can.runAction(event, "help") },
|
||||
"查看配置": function(event, can) { can.runAction(event, "config", ["select"], function(msg) {
|
||||
can.onappend.board(can, msg)
|
||||
}) },
|
||||
"删除配置": function(event, can) { can.runAction(event, "config", ["reset"]) },
|
||||
"删除工具": function(event, can) { can.page.Remove(can, can._target) },
|
||||
|
||||
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
|
||||
|
||||
"摄像头": function(event, can) {
|
||||
var constraints = {audio: false, video: {width: 200, height: 200}}
|
||||
var ui = can.page.Append(can, can._output, [{view: ctx.ACTION}, {view: "capture", list: [{type: "video", _init: function(item) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) {
|
||||
can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "", html.MAX_WIDTH, "")
|
||||
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()})
|
||||
|
1
proto.js
1
proto.js
@ -242,6 +242,7 @@ var html = {
|
||||
BACKGROUND: "background", SELECT: "select", HIDDEN: "hidden",
|
||||
DISPLAY: "display", BLOCK: "block", NONE: "none", FIXED: "fixed",
|
||||
OPACITY: "opacity",
|
||||
OVERFLOW: "overflow",
|
||||
STROKE_WIDTH: "stroke-width", STROKE: "stroke", FILL: "fill", FONT_SIZE: "font-size", FONT_FAMILY: "font-family", MONOSPACE: "monospace",
|
||||
SCROLL: "scroll", HEIGHT: "height", WIDTH: "width", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom",
|
||||
SPEED: "speed", PADDING: "padding", MARGIN: "margin",
|
||||
|
Loading…
x
Reference in New Issue
Block a user