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-22 17:31:22 +08:00
parent 17221e83ea
commit 4cac13c155
11 changed files with 69 additions and 56 deletions

View File

@ -24,7 +24,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.requ
if (panel.onengine._static(event, can, msg, panel, cmds, cb)) { return } if (panel.onengine._static(event, can, msg, panel, cmds, cb)) { return }
var toast, _toast = msg.Option(chat._TOAST); if (_toast) { can.onmotion.delay(can, function() { toast = toast||can.user.toastProcess(msg._can, _toast) }, 500) } var toast, _toast = msg.Option(chat._TOAST); if (_toast) { can.onmotion.delay(can, function() { toast = toast||can.user.toastProcess(msg._can, _toast) }, 500) }
msg.option = can.core.List(msg.option, function(item) { return [chat._TOAST, ice.MSG_HANDLE].indexOf(item) > -1 && delete(msg[item])? undefined: item }) msg.option = can.core.List(msg.option, function(item) { return [chat._TOAST, ice.MSG_HANDLE].indexOf(item) > -1 && delete(msg[item])? undefined: item })
msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME), ice.SESS_HEIGHT, panel.Conf(html.HEIGHT), ice.SESS_WIDTH, panel.Conf(html.WIDTH)) msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME), ice.SESS_HEIGHT, panel.Conf(html.HEIGHT)||panel._target.offsetHeight, ice.SESS_WIDTH, panel.Conf(html.WIDTH)||panel.offsetWidth)
if (can.base.isUndefined(msg[ice.MSG_DAEMON])) { var sub = msg._can; can.base.isUndefined(sub._daemon) && can.ondaemon._list[0] && (sub._daemon = can.ondaemon._list.push(sub)-1) if (can.base.isUndefined(msg[ice.MSG_DAEMON])) { var sub = msg._can; can.base.isUndefined(sub._daemon) && can.ondaemon._list[0] && (sub._daemon = can.ondaemon._list.push(sub)-1)
if (sub._daemon) { msg.Option(ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], sub._daemon)) } if (sub._daemon) { msg.Option(ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], sub._daemon)) }
} can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds})) } can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds}))
@ -220,6 +220,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
_legend: can._legend, _option: can._option, _action: can._action, _output: output, _status: can._status, _legend: can._legend, _option: can._option, _action: can._action, _output: output, _status: can._status,
Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status, Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status,
}, [display, chat.PLUGIN_TABLE_JS], function(sub) { sub.Conf(can.Conf()) }, [display, chat.PLUGIN_TABLE_JS], function(sub) { sub.Conf(can.Conf())
var last = can.core.Value(can, chat._OUTPUTS_CURRENT); last && can.core.CallFunc([last, "onaction.hidden"], {can: last})
sub.run = function(event, cmds, cb, silent) { sub.run = function(event, cmds, cb, silent) {
sub.request(event)._caller().RunAction(event, sub, cmds) || can.Update(event, can.Input(cmds, !silent), cb, silent) sub.request(event)._caller().RunAction(event, sub, cmds) || can.Update(event, can.Input(cmds, !silent), cb, silent)
}, can._outputs = can._outputs||[], can._outputs.push(sub), sub.sup = can }, can._outputs = can._outputs||[], can._outputs.push(sub), sub.sup = can
@ -228,6 +229,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) { if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) {
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) }) can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) })
} }
can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) { can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) {
action === false || can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action) action === false || can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
action === false || sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS)), can.user.isMobile || sub.onappend.tools(sub, msg) action === false || sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS)), can.user.isMobile || sub.onappend.tools(sub, msg)
@ -358,8 +361,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
function run(event, cmd, arg) { can.misc.Event(event, can, function(msg) { can.run(can.request(event, line, can.Option()), [ctx.ACTION, cmd].concat(arg)) }) } function run(event, cmd, arg) { can.misc.Event(event, can, function(msg) { can.run(can.request(event, line, can.Option()), [ctx.ACTION, cmd].concat(arg)) }) }
if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) { if (key == mdb.VALUE) { key = line.key } line = {}, can.core.List(array, function(item) { line[item.key] = item.value }) } if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) { if (key == mdb.VALUE) { key = line.key } line = {}, can.core.List(array, function(item) { line[item.key] = item.value }) }
return {text: [value, html.TD], onclick: function(event) { var target = event.target return {text: [value, html.TD], onclick: function(event) { var target = event.target
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) { if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) { can.request(event, {action: target.name})
meta && meta[target.name]? can.user.input(can.request(event, {action: target.name}), can, meta[target.name], function(args) { run(event, target.name, args) }): run(event, target.name) meta && meta[target.name]? can.user.input(event, can, meta[target.name], function(args) { run(event, target.name, args) }): run(event, target.name)
} else { can.sup.onimport.change(event, can.sup, key, event.target.innerText) || can.sup.onexport.record(can.sup, value, key, line, event) } } else { can.sup.onimport.change(event, can.sup, key, event.target.innerText) || can.sup.onexport.record(can.sup, value, key, line, event) }
}, ondblclick: function(event) { if ([mdb.KEY, mdb.HASH, mdb.ID].indexOf(key) > -1) { return } }, ondblclick: function(event) { if ([mdb.KEY, mdb.HASH, mdb.ID].indexOf(key) > -1) { return }
var item = can.core.List(can.Conf([ctx.FEATURE, mdb.INSERT]), function(item) { if (item.name == key) { return item } })[0]||{name: key, value: value} var item = can.core.List(can.Conf([ctx.FEATURE, mdb.INSERT]), function(item) { if (item.name == key) { return item } })[0]||{name: key, value: value}

View File

@ -300,7 +300,7 @@ fieldset.plugin.parse.cmd>div.status { display:none; }
fieldset.plugin.inner.cmd>legend { display:none; } fieldset.plugin.inner.cmd>legend { display:none; }
fieldset.plugin.inner.cmd>div.action { display:none; } fieldset.plugin.inner.cmd>div.action { display:none; }
fieldset.plugin.inner.cmd>form.option { display:none; } fieldset.plugin.inner.cmd>form.option { display:none; }
fieldset.plugin.inner.cmd fieldset.xterm>form.option>div.item.text>input { width:320px; } // fieldset.plugin.inner.cmd fieldset.xterm>form.option>div.item.text>input { width:320px; }
fieldset.plan div.output table.content { height:100%; width:100%; } fieldset.plan div.output table.content { height:100%; width:100%; }
fieldset.xterm div.output { border-left:gray solid 1px; border-top:gray solid 1px; } fieldset.xterm div.output { border-left:gray solid 1px; border-top:gray solid 1px; }
fieldset.xterm div.output.select { border:blue solid 1px; } fieldset.xterm div.output.select { border:blue solid 1px; }

View File

@ -68,8 +68,10 @@ Volcanos("misc", {
}); return msg }, }); return msg },
Event: function(event, can, cb) { for (var i = 3; i < arguments.length; i++) { can.request(event, arguments[i]) } cb(can.request(event)) }, Event: function(event, can, cb) { for (var i = 3; i < arguments.length; i++) { can.request(event, arguments[i]) } cb(can.request(event)) },
Run: function(event, can, dataset, cmds, cb) { var msg = can.request(event), _can = msg._can; _can._fields && _can.sup && (_can = _can.sup) Run: function(event, can, dataset, cmds, cb) { var msg = can.request(event), _can = msg._can; _can._fields && _can.sup && (_can = _can.sup)
var form = {cmds: cmds}; can.core.List(msg.option, function(key) { msg[key] && (form[key] = msg[key]) }) var form = {cmds: cmds}; can.core.List(msg.option, function(key) {
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), "_name", _can._name, "_index", _can._index), form, cb) !can.base.isIn(key, "log.caller") && msg[key] && (form[key] = msg[key])
})
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), ice.MSG_INDEX, _can._index), form, cb)
}, },
POST: function(can, msg, url, form, cb) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr POST: function(can, msg, url, form, cb) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr
xhr.open(msg._method||web.POST, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return } xhr.open(msg._method||web.POST, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return }
@ -90,6 +92,7 @@ Volcanos("misc", {
var url = location.protocol.replace(ice.HTTP, "ws")+"//"+location.host+"/space/" var url = location.protocol.replace(ice.HTTP, "ws")+"//"+location.host+"/space/"
if (url.indexOf(html.CHROME) == 0) { url = "ws://localhost:9020/space/" } if (url.indexOf(html.CHROME) == 0) { url = "ws://localhost:9020/space/" }
try { var socket = new WebSocket(can.base.MergeURL(url, args)); _msg = _msg || can.request()._caller() } catch {} try { var socket = new WebSocket(can.base.MergeURL(url, args)); _msg = _msg || can.request()._caller() } catch {}
can._socket = socket
socket.onclose = function() { can.misc.Log(html.WSS, cli.CLOSE, args) socket.onclose = function() { can.misc.Log(html.WSS, cli.CLOSE, args)
can.base.isFunc(onclose)? onclose(socket): can.core.Timer(can.base.random(3000, 100), function() { can.base.isFunc(onclose)? onclose(socket): can.core.Timer(can.base.random(3000, 100), function() {
args.name = args.name||can._wss_name, can.misc.WSS(can, args, cb, onopen, onerror, onclose, _msg) args.name = args.name||can._wss_name, can.misc.WSS(can, args, cb, onopen, onerror, onclose, _msg)

View File

@ -32,7 +32,7 @@ Volcanos(chat.ONACTION, {_init: function(can, target) {
}, },
onsize: function(can, msg, height, width) { can.Conf({height: height-can.Conf(html.MARGIN_Y), width: width-can.Conf(html.MARGIN_X)}) }, onsize: function(can, msg, height, width) { can.Conf({height: height-can.Conf(html.MARGIN_Y), width: width-can.Conf(html.MARGIN_X)}) },
onmain: function(can, msg) { can.onimport._share(can, can.misc.Search(can, web.SHARE)) }, onmain: function(can, msg) { can.onimport._share(can, can.misc.Search(can, web.SHARE)) },
onlogin: function(can, msg) { can.ondaemon._init(can), can.onimport._menu(can, msg), can.onkeymap._build(can) onlogin: function(can, msg) { can.onimport._menu(can, msg), can.onkeymap._build(can)
can._root.River && can.onmotion.delay(can, function() { if (can.Mode()) { return } var gt = can.page.unicode.next, lt = can.page.unicode.prev, river = can._root.River._target can._root.River && can.onmotion.delay(can, function() { if (can.Mode()) { return } var gt = can.page.unicode.next, lt = can.page.unicode.prev, river = can._root.River._target
var target = can.page.Append(can, can._target, [{view: [[html.TOGGLE, chat.PROJECT], "", can.page.isDisplay(river)? lt: gt], onclick: function(event) { var target = can.page.Append(can, can._target, [{view: [[html.TOGGLE, chat.PROJECT], "", can.page.isDisplay(river)? lt: gt], onclick: function(event) {
can.page.Modify(can, target, (can._river_show = can.onmotion.toggle(can, river))? lt: gt), can.onaction.layout(can) can.page.Modify(can, target, (can._river_show = can.onmotion.toggle(can, river))? lt: gt), can.onaction.layout(can)

View File

@ -2,6 +2,7 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(NKEY, can.core.Item(can.misc.localStorage(can)).length) Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(NKEY, can.core.Item(can.misc.localStorage(can)).length)
can.onimport._title(can, msg, target), can.onimport._command(can, msg, target) can.onimport._title(can, msg, target), can.onimport._command(can, msg, target)
can.onimport._state(can, msg, target), can.onimport._toast(can, msg, target) can.onimport._state(can, msg, target), can.onimport._toast(can, msg, target)
can.ondaemon._init(can)
}, },
_title: function(can, msg, target) { can.user.isMobile || can.core.List(can.Conf(chat.TITLE)||msg.result, function(item) { _title: function(can, msg, target) { can.user.isMobile || can.core.List(can.Conf(chat.TITLE)||msg.result, function(item) {
if (can.base.contains(item, ice.AT)) { item = '<a href="mailto:'+item+'">'+item+'</a>' } if (can.base.contains(item, ice.AT)) { item = '<a href="mailto:'+item+'">'+item+'</a>' }

View File

@ -1,7 +1,7 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onmotion.clear(can, can.ui.content) Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onmotion.clear(can, can.ui.content)
var table = can.onappend.table(can, msg, function(value, key, index, data) { return {text: [can.base.isFunc(value) && value.help || value, html.TD], onclick: function(event) { var table = can.onappend.table(can, msg, function(value, key, index, data) { return {text: [can.base.isFunc(value) && value.help || value, html.TD], onclick: function(event) {
can.page.tagis(event.target, html.A) || can.onaction[can.db.type == mdb.FOREACH || event.ctrlKey? mdb.PLUGIN: mdb.SELECT](event, can, data) can.page.tagis(event.target, html.A) || can.onaction[can.db.type == mdb.FOREACH || event.ctrlKey? mdb.PLUGIN: mdb.SELECT](event, can, data)
}} }, can.ui.content, can.base.getValid(msg.Option(ice.MSG_FIELDS).split(ice.FS), msg.append)); can.onmotion.story.auto(can), can.onimport._size(can) }} }, can.ui.content, msg.append); can.onmotion.story.auto(can), can.onimport._size(can)
can.onmotion.toggle(can, can._status, can.db.type != mdb.FOREACH) && can.onappend._status(can, can.base.Obj(msg.Option(ice.MSG_STATUS), []).concat({name: mdb.SELECT, value: "0"})) can.onmotion.toggle(can, can._status, can.db.type != mdb.FOREACH) && can.onappend._status(can, can.base.Obj(msg.Option(ice.MSG_STATUS), []).concat({name: mdb.SELECT, value: "0"}))
can.onmotion.focus(can, can.ui.filter), msg.Length() == 1 && can.ui.profile.innerHTML == "" && can.page.Select(can, table, html.TD)[0].click() can.onmotion.focus(can, can.ui.filter), msg.Length() == 1 && can.ui.profile.innerHTML == "" && can.page.Select(can, table, html.TD)[0].click()
}, },
@ -49,7 +49,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list
var meta = {index: cmd||msg.Option(mdb.INDEX), args: cmd == web.WIKI_WORD? [data.name]: []} var meta = {index: cmd||msg.Option(mdb.INDEX), args: cmd == web.WIKI_WORD? [data.name]: []}
if (data.type == cli.OPENS) { return can.runAction(event, cli.OPENS, [data.text], null, true) } if (data.type == cli.OPENS) { return can.runAction(event, cli.OPENS, [data.text], null, true) }
if (data.type == ssh.SHELL) { meta = {index: web.CODE_XTERM, args: [data.text]} } if (data.type == ssh.SHELL) { meta = {index: web.CODE_XTERM, args: [data.text]} }
if (data.type == ctx.INDEX) { meta = {index: data.text.split(",")[0], args: data.text.split(",").slice(1) } } if (data.type == ctx.INDEX) { meta = {index: data.text.split(ice.FS)[0], args: data.text.split(ice.FS).slice(1) } }
if (data.type == nfs.FILE) { meta = {index: web.CODE_VIMER, args: can.misc.SplitPath(can, data.text)} } if (data.type == nfs.FILE) { meta = {index: web.CODE_VIMER, args: can.misc.SplitPath(can, data.text)} }
can.onappend.plugin(can, meta, function(sub) { can._plugins = (can._plugins||[]).concat(sub), sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth(), true), sub.Focus() }, can.ui.profile) can.onappend.plugin(can, meta, function(sub) { can._plugins = (can._plugins||[]).concat(sub), sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth(), true), sub.Focus() }, can.ui.profile)
}, },

View File

@ -263,7 +263,8 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) {
} }, } },
_index: function(can, msg, cb) { if (msg._content) { return can.base.isFunc(cb) && cb(msg._content) } if (can.onsyntax._space(can, msg, cb)) { return } _index: function(can, msg, cb) { if (msg._content) { return can.base.isFunc(cb) && cb(msg._content) } if (can.onsyntax._space(can, msg, cb)) { return }
var index = msg.Option(ctx.INDEX).split(ice.FS), item = {type: chat.STORY, index: index[0], args: index.slice(1)} var index = msg.Option(ctx.INDEX).split(ice.FS), item = {type: chat.STORY, index: index[0], args: index.slice(1)}
if (can.base.isIn(item.index, web.CODE_XTERM, web.WIKI_WORD)) { item.style = html.OUTPUT } if (can.base.isIn(item.index, web.WIKI_WORD)) { item.style = html.OUTPUT }
// if (can.base.isIn(item.index, web.CODE_XTERM, web.WIKI_WORD)) { item.style = html.OUTPUT }
can.onimport.plug(can, item, function(sub) { sub.onimport.size(sub, can.ui.content.offsetHeight, can.ui.content.offsetWidth, true) can.onimport.plug(can, item, function(sub) { sub.onimport.size(sub, can.ui.content.offsetHeight, can.ui.content.offsetWidth, true)
sub.onimport._open = function(sub, msg, arg) { can.onimport.tabview(can, "", arg, web.SPACE), sub.Update() } sub.onimport._open = function(sub, msg, arg) { can.onimport.tabview(can, "", arg, web.SPACE), sub.Update() }
sub.onaction.close = function() { can.onaction.back(can), msg._tab._close() } sub.onaction.close = function() { can.onaction.back(can), msg._tab._close() }
@ -290,7 +291,7 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) {
case code.CONSTANT: case code.CONSTANT:
case code.OBJECT: return wrap(text, type) case code.OBJECT: return wrap(text, type)
default: var t = can.core.Item(p.regexp, function(reg, type) { var m = text.match(new RegExp(reg)); if (m && m.length > 0 && m[0] == text) { return type} }) default: var t = can.core.Item(p.regexp, function(reg, type) { var m = text.match(new RegExp(reg)); if (m && m.length > 0 && m[0] == text) { return type} })
return t && t.length > 0? wrap(text, t[0]): type? wrap(text, type): text return t && t.length > 0? wrap(text, t[0]): type? wrap(text, type): wrap(text, "_")
} }
}).join("")); return line }).join("")); return line
}, },
@ -327,9 +328,15 @@ Volcanos(chat.ONACTION, {list: ["调试", "首页", "官网", "源码", "百度"
scrollIntoView: function(can, offset) { var current = can.onexport.line(can, can.current.line), window = can.current.window(); offset = offset||parseInt(window/4)+2 scrollIntoView: function(can, offset) { var current = can.onexport.line(can, can.current.line), window = can.current.window(); offset = offset||parseInt(window/4)+2
can.ui.content.scrollTo(0, parseInt(current/window)*can.ui.content.offsetHeight+(parseInt(current%window)-offset-1)*can.current.line.offsetHeight) can.ui.content.scrollTo(0, parseInt(current/window)*can.ui.content.offsetHeight+(parseInt(current%window)-offset-1)*can.current.line.offsetHeight)
}, },
searchLine: function(event, can, value) { can.runAction(can.request(event, {name: value, text: can.current.text()}, can.Option()), code.NAVIGATE, [], function(msg) { searchLine: function(event, can, value) {
msg.Append(nfs.FILE)? can.onimport.tabview(can, msg.Append(nfs.PATH), msg.Append(nfs.FILE), msg.Append(nfs.LINE)): can.user.toastFailure(can, "not found "+value) var offset = 0; can.page.Select(can, can.ui.content, "tr.line", function(tr) {
}) }, tr == can.current.line && can.page.Select(can, tr, "td.text>span", function(span) { offset += span.innerText.length
span == event.target && can.runAction(can.request(event, {name: value, text: can.current.text(), offset: offset-1}, can.Option()), code.NAVIGATE, [], function(msg) {
msg.Append(nfs.FILE)? can.onimport.tabview(can, msg.Append(nfs.PATH), msg.Append(nfs.FILE), msg.Append(nfs.LINE)): can.user.toastFailure(can, "not found "+value)
})
}), can.page.Select(can, tr, "td.text", function(td) { offset += td.innerText.length+1 })
})
},
favorLine: function(event, can, value) { can.user.input(event, can, [{name: mdb.ZONE, value: "hi"}, {name: mdb.NAME, value: "hello"}], function(data) { favorLine: function(event, can, value) { can.user.input(event, can, [{name: mdb.ZONE, value: "hi"}, {name: mdb.NAME, value: "hello"}], function(data) {
can.runAction(event, code.FAVOR, [ctx.ACTION, mdb.INSERT, mdb.ZONE, data.zone||"", can.runAction(event, code.FAVOR, [ctx.ACTION, mdb.INSERT, mdb.ZONE, data.zone||"",
mdb.TYPE, can.db.parse, mdb.NAME, data.name||"", mdb.TEXT, (value||"").trimRight(), mdb.TYPE, can.db.parse, mdb.NAME, data.name||"", mdb.TEXT, (value||"").trimRight(),

View File

@ -23,7 +23,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireModules
var target = connect(item, output||can.page.insertBefore(can, [html.OUTPUT], can._status)); output = null var target = connect(item, output||can.page.insertBefore(can, [html.OUTPUT], can._status)); output = null
main = main||target main = main||target
} }
}), can.onaction.select(can, main) }), main && can.onaction.select(can, main)
}, },
_tabs: function(can, item, output) { if (output != output._root && output._root) { return output._tabs = output._root._tabs } _tabs: function(can, item, output) { if (output != output._root && output._root) { return output._tabs = output._root._tabs }
var tabs = can.onimport.tabs(can, [{name: item.name||item.type||item.hash}], function() { var tabs = can.onimport.tabs(can, [{name: item.name||item.type||item.hash}], function() {
@ -81,15 +81,21 @@ Volcanos(chat.ONKEYMAP, {
sub.select(), sub.onexport.record = function(_, value) { can.onimport._input(can, can._output._term, value+ice.NL) } sub.select(), sub.onexport.record = function(_, value) { can.onimport._input(can, can._output._term, value+ice.NL) }
}, can._fields) }) }, }, can._fields) }) },
f: function(event, can) { f: function(event, can) {
var input = can.user.input({target: can._output._tabs}, can, [{type: mdb.TEXT, name: mdb.NAME, select: function(item) { var input = can.user.input({target: can._output._tabs}, can, [{type: mdb.TEXT, name: nfs.FILE, select: function(item) {
input.submit(event, can, "submit") var ls = item.split(ice.DF); switch (ls[0]) {
}, run: function(event, cmds, cb) { var msg = can.request(event) case "tabs": can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { target.innerText == ls[1] && target.click() }); break
can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { msg.Push(mdb.NAME, target.innerText) }) case web.LAYOUT: can.Option(mdb.HASH, ls[1]), can.Update(); break
cb(msg) case ctx.INDEX: can.onimport.tool(can, [ls[1]], function(sub) { sub.select() }); break
}}], function(list) { case ssh.SHELL: can.onaction.tabnew(can.request({}, {_handle: ice.TRUE, type: ls[1]}), can); break
default: can.onimport._input(can, can._output._term, item+ice.NL)
}) } input.cancel()
}, run: function(event, cmds, cb) { can.run(event, cmds, function(msg) { var _msg = can.request()
function push(type, name) { _msg.Push(nfs.FILE, can.core.List(arguments).join(ice.DF)) }
can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { push("tabs", target.innerText) })
_msg.Copy(msg), can.core.Item(can.onengine.plugin.meta, function(key, value) { push(ctx.INDEX, "can."+key) }), cb(_msg)
}) }}], function(list) {})
}, },
Escape: function(can) { can.onmotion.clearFloat(can), can._output.click() },
}, },
}, _engine: {}, }, _engine: {},
}) })
@ -104,11 +110,9 @@ Volcanos(chat.ONACTION, {
can._output._root = root, can._output = can.page.insertBefore(can, [html.OUTPUT], can._output.nextSibling, layout) can._output._root = root, can._output = can.page.insertBefore(can, [html.OUTPUT], can._output.nextSibling, layout)
can._output._root = root, can._output._tabs = tabs, can.onimport._init(can, msg), can.onmotion.delay(can, function() { can._output.click() }) can._output._root = root, can._output._tabs = tabs, can.onimport._init(can, msg), can.onmotion.delay(can, function() { can._output.click() })
}) }) }, }) }) },
delete: function(can, output) { delete: function(can, output) { if (can.page.Select(can, can._fields, html.DIV_OUTPUT).length == 1) { can.onmotion.delay(can, function() { can.sup.onimport._back(can.sup) }) }
if (output == can.sup._output) { can.onmotion.clear(can, output) } else { if (output == can.sup._output) { can.onmotion.clear(can, output) } else { while (output && output.parentNode.children.length == 1) { output = output.parentNode }
while (output && output.parentNode.children.length == 1) { output = output.parentNode } var next = output.parentNode; can.page.Remove(can, output), can.onmotion.delay(can, function() { can.page.Select(can, next, html.DIV_OUTPUT, function(target) { target.click() }) })
var next = output.parentNode; can.onmotion.delay(can, function() { can.page.Select(can, next, html.DIV_OUTPUT, function(target) { target.click() }) })
can.page.Remove(can, output)
} can.onimport.layout(can) } can.onimport.layout(can)
}, },
select: function(can, output) { can.page.SelectChild(can, can._fields, can.page.Keys(html.DIV_OUTPUT, html.DIV_LAYOUT), function(target) { can.onmotion.hidden(can, target, target == output || target == output._root) select: function(can, output) { can.page.SelectChild(can, can._fields, can.page.Keys(html.DIV_OUTPUT, html.DIV_LAYOUT), function(target) { can.onmotion.hidden(can, target, target == output || target == output._root)
@ -123,7 +127,7 @@ Volcanos(chat.ONACTION, {
can.page.SelectOne(can, output[key], html.DIV_OUTPUT, function(target) { target.click() })||output[key].click() can.page.SelectOne(can, output[key], html.DIV_OUTPUT, function(target) { target.click() })||output[key].click()
} }
}, },
sess: function(event, can) { can.user.input(event, can, [mdb.NAME], function(list) { sess: function(event, can) { can.user.input({target: can._legend}, can, [mdb.NAME], function(list) {
can.runAction({}, mdb.CREATE, [mdb.TYPE, html.LAYOUT, mdb.NAME, list[0], mdb.TEXT, can.base.Format(can.onexport.sess(can))], function(msg) { can.runAction({}, mdb.CREATE, [mdb.TYPE, html.LAYOUT, mdb.NAME, list[0], mdb.TEXT, can.base.Format(can.onexport.sess(can))], function(msg) {
can.user.toastSuccess(can, can.user.trans(can, nfs.SAVE)+ice.SP+msg.Result()) can.user.toastSuccess(can, can.user.trans(can, nfs.SAVE)+ice.SP+msg.Result())
}, true) }, true)
@ -132,6 +136,9 @@ Volcanos(chat.ONACTION, {
if (can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS)) { return } if (can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS)) { return }
can._keylist = can.onkeymap._parse(event, can, mdb.NORMAL, can._keylist||[], can._output._term) can._keylist = can.onkeymap._parse(event, can, mdb.NORMAL, can._keylist||[], can._output._term)
}, },
hidden: function(can) { can.page.Select(can, can._fields, "div.output,div.layout", function(target) {
target == can.sup._output? can.page.insertBefore(can, target, can._status): can.page.Remove(can, target)
}) },
}) })
Volcanos(chat.ONEXPORT, {list: [mdb.TIME, mdb.HASH, mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"], Volcanos(chat.ONEXPORT, {list: [mdb.TIME, mdb.HASH, mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"],
term: function(can, term) { item = term._item term: function(can, term) { item = term._item

View File

@ -11,22 +11,16 @@ Volcanos(chat.ONIMPORT, {
_display: function(can, msg) { can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)) }, _display: function(can, msg) { can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)) },
_clear: function(can, msg) { can.onmotion.clear(can) }, _clear: function(can, msg) { can.onmotion.clear(can) },
_inner: function(can, msg) { can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.story.auto(can) }, _inner: function(can, msg) { can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.story.auto(can) },
_field: function(can, msg) { _field: function(can, msg) { var height = can.ConfHeight(); can.page.SelectChild(can, can._output, html.TABLE, function(target) { height -= target.offsetHeight })
var opts = {pod: msg.Option(ice.POD)}; can.page.SelectArgs(can, can._option, "", function(target) { var value = msg.Option(target.name); target.name && value && (opts[target.name] = value) }) msg.Table(function(item) { can.onappend._plugin(can, item, {index: item.index, args: can.base.Obj(item.args||item.arg, []), height: can.base.Min(height, 240)}, function(sub, meta) {
var height = can.ConfHeight(); can.page.SelectChild(can, can._output, html.TABLE, function(target) { height -= target.offsetHeight }) sub.Conf(can.base.Obj(item.conf)); if (sub.isSimpleMode()) { sub.ConfHeight(can.ConfHeight()/2)
msg.Table(function(item) { can.onappend._plugin(can, item, {pod: msg.Option(ice.POD), index: item.index, args: can.base.Obj(item.args||item.arg, []), height: can.base.Min(height, 200)}, function(sub, meta) { var res = can.request(); res.Echo(sub.Conf(ice.MSG_RESULT)), can.onappend._output(sub, res, sub.Conf(ctx.DISPLAY)); return
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(ctx.DISPLAY)) sub.run = function(event, cmds, cb) { sub.onimport.size(sub, height, can.ConfWidth(), true)
})(); return }; var opt = can.base.Obj(item[ice.OPT], []) can.run(event, (!msg.Option("_index") || msg.Option("_index") == can._index || can._index.indexOf("can.") == 0? msg[ice.MSG_PREFIX]||[]: [ice.RUN, msg.Option("_index")]).concat(cmds), cb, true)
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 || 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)
} }
}) }) }) })
}, },
_close: function(can) {
can.user.close()
},
_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) { _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) } 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}) 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})

View File

@ -65,7 +65,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
if (sub._delay_init || meta.msg) { sub._delay_init = false, meta.msg = false, sub.Update() } if (sub._delay_init || meta.msg) { sub._delay_init = false, meta.msg = false, sub.Update() }
}) }, sub._delay_init = true, sub.onaction.close = function() { sub.select() }, sub.select = function() { return sub._legend.click(), sub } }) }, sub._delay_init = true, sub.onaction.close = function() { sub.select() }, sub.select = function() { return sub._legend.click(), sub }
sub.hidden = function() { can.onmotion.hidden(can, sub._target), can.page.ClassList.del(can, sub._legend, html.SELECT) } sub.hidden = function() { can.onmotion.hidden(can, sub._target), can.page.ClassList.del(can, sub._legend, html.SELECT) }
sub.onimport.size(sub, can.ConfHeight()/2, can.ConfWidth()-can.ui.project.offsetWidth, true), can.base.isFunc(cb) && cb(sub) sub.onimport.size(sub, can.ConfHeight()/2, can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0), true), can.base.isFunc(cb) && cb(sub)
}, target) }, target)
}) })
}, },

View File

@ -31,6 +31,7 @@ var ice = {
MSG_HANDLE: "_handle", MSG_UPLOAD: "_upload", MSG_HANDLE: "_handle", MSG_UPLOAD: "_upload",
MSG_ACTION: "_action", MSG_STATUS: "_status", MSG_ACTION: "_action", MSG_STATUS: "_status",
MSG_INDEX: "_index",
MSG_DISPLAY: "_display", MSG_DISPLAY: "_display",
MSG_TOOLKIT: "_toolkit", MSG_TOOLKIT: "_toolkit",
MSG_PROCESS: "_process", MSG_PROCESS: "_process",
@ -359,21 +360,18 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
return can.require(can._follow? libs.concat(meta.libs, meta.volcano): libs, cb), can return can.require(can._follow? libs.concat(meta.libs, meta.volcano): libs, cb), can
}) })
try { if (typeof(window) == lang.OBJECT) { var meta = Volcanos.meta try { if (typeof(window) == lang.OBJECT) { var meta = Volcanos.meta
if (window._version && window.outerWidth-window.innerWidth < 100) {
meta.version = window._version
}
meta.target = document.body, meta._height = window.innerHeight, meta._width = window.innerWidth meta.target = document.body, meta._height = window.innerHeight, meta._width = window.innerWidth
meta._load = function(url, cb) { if (window._version && window.outerWidth-window.innerWidth < 100) { meta.version = window._version }
var v = meta.version? meta.version+"&_tt="+(new Date()).getTime(): "" meta._load = function(url, cb) { var v = meta.version? meta.version+"&_tt="+(new Date()).getTime(): ""
switch (url.split("?")[0].split(ice.PT).pop().toLowerCase()) { switch (url.split(ice.QS)[0].split(ice.PT).pop().toLowerCase()) {
case nfs.CSS: var item = document.createElement(mdb.LINK); item.href = url+v, item.rel = "stylesheet", item.onload = cb, document.head.appendChild(item); break case nfs.CSS: var item = document.createElement(mdb.LINK); item.href = url+v, item.rel = "stylesheet", item.onload = cb, document.head.appendChild(item); break
case nfs.JS: var item = document.createElement(nfs.SCRIPT); item.src = url+v, item.onerror = cb, item.onload = cb, document.body.appendChild(item); break default: var item = document.createElement(nfs.SCRIPT); item.src = url+v, item.onerror = cb, item.onload = cb, document.body.appendChild(item)
default: var item = document.createElement(nfs.SCRIPT); item.src = url+v, item.onerror = cb, item.onload = cb, document.body.appendChild(item) }
} }
window.onerror = function(message, source, lineno, colno, error) { window._version && alert([[source, lineno, colno].join(ice.DF), message].join(ice.NL)) }
meta._init = function(can) { window.onerror = function(message, source, lineno, colno, error) {
meta.version? alert([message].concat(can.misc._stacks(0, error)).join(ice.NL)): can.misc.Error(message, ice.NL+[source, lineno, colno].join(ice.DF), error)
} }
meta._init = function(can) {
window.onerror = function(message, source, lineno, colno, error) {
meta.version? alert([message].concat(can.misc._stacks(0, error)).join(ice.NL)): can.misc.Error(message, ice.NL+[source, lineno, colno].join(ice.DF), error)
}, window.onbeforeunload = function() { can.Action._socket && can.Action._socket.close() }
var last = can.page.width() < can.page.height(); window.onresize = function(event) { can.misc.Event(event, can, function(msg) { var last = can.page.width() < can.page.height(); window.onresize = function(event) { can.misc.Event(event, can, function(msg) {
if (can.user.isMobile && last === can.page.width() < can.page.height()) { return } last = can.page.width() < can.page.height() if (can.user.isMobile && last === can.page.width() < can.page.height()) { return } last = can.page.width() < can.page.height()
can.onmotion.delayOnce(can, function() { can.onengine.signal(can, chat.ONRESIZE, can.request(event, kit.Dict(html.HEIGHT, window.innerHeight, html.WIDTH, window.innerWidth))) }, 100, can._delay_resize = can._delay_resize||[]) can.onmotion.delayOnce(can, function() { can.onengine.signal(can, chat.ONRESIZE, can.request(event, kit.Dict(html.HEIGHT, window.innerHeight, html.WIDTH, window.innerWidth))) }, 100, can._delay_resize = can._delay_resize||[])