mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt lock
This commit is contained in:
parent
17221e83ea
commit
4cac13c155
9
frame.js
9
frame.js
@ -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 }
|
||||
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.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 (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}))
|
||||
@ -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,
|
||||
Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status,
|
||||
}, [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.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
|
||||
@ -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) {
|
||||
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) {
|
||||
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)
|
||||
@ -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)) }) }
|
||||
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
|
||||
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) {
|
||||
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)
|
||||
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) { can.request(event, {action: 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) }
|
||||
}, 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}
|
||||
|
@ -300,7 +300,7 @@ fieldset.plugin.parse.cmd>div.status { display:none; }
|
||||
fieldset.plugin.inner.cmd>legend { display:none; }
|
||||
fieldset.plugin.inner.cmd>div.action { 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.xterm div.output { border-left:gray solid 1px; border-top:gray solid 1px; }
|
||||
fieldset.xterm div.output.select { border:blue solid 1px; }
|
||||
|
@ -68,8 +68,10 @@ Volcanos("misc", {
|
||||
}); return msg },
|
||||
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)
|
||||
var form = {cmds: cmds}; can.core.List(msg.option, function(key) { msg[key] && (form[key] = msg[key]) })
|
||||
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), "_name", _can._name, "_index", _can._index), form, cb)
|
||||
var form = {cmds: cmds}; can.core.List(msg.option, function(key) {
|
||||
!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
|
||||
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/"
|
||||
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 {}
|
||||
can._socket = socket
|
||||
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() {
|
||||
args.name = args.name||can._wss_name, can.misc.WSS(can, args, cb, onopen, onerror, onclose, _msg)
|
||||
|
@ -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)}) },
|
||||
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
|
||||
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)
|
||||
|
@ -2,6 +2,7 @@
|
||||
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._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) {
|
||||
if (can.base.contains(item, ice.AT)) { item = '<a href="mailto:'+item+'">'+item+'</a>' }
|
||||
|
@ -1,7 +1,7 @@
|
||||
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) {
|
||||
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.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]: []}
|
||||
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 == 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)} }
|
||||
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)
|
||||
},
|
||||
|
@ -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 }
|
||||
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)
|
||||
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() }
|
||||
@ -290,7 +291,7 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) {
|
||||
case code.CONSTANT:
|
||||
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} })
|
||||
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
|
||||
},
|
||||
@ -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
|
||||
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) {
|
||||
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)
|
||||
}) },
|
||||
searchLine: function(event, can, 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) {
|
||||
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(),
|
||||
|
@ -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
|
||||
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 }
|
||||
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) }
|
||||
}, can._fields) }) },
|
||||
f: function(event, can) {
|
||||
var input = can.user.input({target: can._output._tabs}, can, [{type: mdb.TEXT, name: mdb.NAME, select: function(item) {
|
||||
input.submit(event, can, "submit")
|
||||
}, run: function(event, cmds, cb) { var msg = can.request(event)
|
||||
can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { msg.Push(mdb.NAME, target.innerText) })
|
||||
cb(msg)
|
||||
}}], function(list) {
|
||||
|
||||
})
|
||||
var input = can.user.input({target: can._output._tabs}, can, [{type: mdb.TEXT, name: nfs.FILE, select: function(item) {
|
||||
var ls = item.split(ice.DF); switch (ls[0]) {
|
||||
case "tabs": can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { target.innerText == ls[1] && target.click() }); break
|
||||
case web.LAYOUT: can.Option(mdb.HASH, ls[1]), can.Update(); break
|
||||
case ctx.INDEX: can.onimport.tool(can, [ls[1]], function(sub) { sub.select() }); break
|
||||
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: {},
|
||||
})
|
||||
@ -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._tabs = tabs, can.onimport._init(can, msg), can.onmotion.delay(can, function() { can._output.click() })
|
||||
}) }) },
|
||||
delete: function(can, output) {
|
||||
if (output == can.sup._output) { can.onmotion.clear(can, output) } else {
|
||||
while (output && output.parentNode.children.length == 1) { output = output.parentNode }
|
||||
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)
|
||||
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 { 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() }) })
|
||||
} 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)
|
||||
@ -123,7 +127,7 @@ Volcanos(chat.ONACTION, {
|
||||
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.user.toastSuccess(can, can.user.trans(can, nfs.SAVE)+ice.SP+msg.Result())
|
||||
}, true)
|
||||
@ -132,6 +136,9 @@ Volcanos(chat.ONACTION, {
|
||||
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)
|
||||
},
|
||||
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"],
|
||||
term: function(can, term) { item = term._item
|
||||
|
@ -11,22 +11,16 @@ Volcanos(chat.ONIMPORT, {
|
||||
_display: function(can, msg) { can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)) },
|
||||
_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) },
|
||||
_field: function(can, msg) {
|
||||
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) })
|
||||
var height = can.ConfHeight(); can.page.SelectChild(can, can._output, html.TABLE, function(target) { height -= target.offsetHeight })
|
||||
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) {
|
||||
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))
|
||||
})(); 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 || 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)
|
||||
_field: function(can, msg) { var height = can.ConfHeight(); can.page.SelectChild(can, can._output, html.TABLE, function(target) { height -= target.offsetHeight })
|
||||
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) {
|
||||
sub.Conf(can.base.Obj(item.conf)); if (sub.isSimpleMode()) { sub.ConfHeight(can.ConfHeight()/2)
|
||||
var res = can.request(); res.Echo(sub.Conf(ice.MSG_RESULT)), can.onappend._output(sub, res, sub.Conf(ctx.DISPLAY)); return
|
||||
}
|
||||
sub.run = function(event, cmds, cb) { sub.onimport.size(sub, height, can.ConfWidth(), true)
|
||||
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)
|
||||
}
|
||||
}) })
|
||||
},
|
||||
_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) {
|
||||
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})
|
||||
|
@ -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() }
|
||||
}) }, 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.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)
|
||||
})
|
||||
},
|
||||
|
24
proto.js
24
proto.js
@ -31,6 +31,7 @@ var ice = {
|
||||
MSG_HANDLE: "_handle", MSG_UPLOAD: "_upload",
|
||||
MSG_ACTION: "_action", MSG_STATUS: "_status",
|
||||
|
||||
MSG_INDEX: "_index",
|
||||
MSG_DISPLAY: "_display",
|
||||
MSG_TOOLKIT: "_toolkit",
|
||||
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
|
||||
})
|
||||
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._load = function(url, cb) {
|
||||
var v = meta.version? meta.version+"&_tt="+(new Date()).getTime(): ""
|
||||
switch (url.split("?")[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.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)
|
||||
} }
|
||||
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)
|
||||
if (window._version && window.outerWidth-window.innerWidth < 100) { meta.version = window._version }
|
||||
meta._load = function(url, cb) { var v = meta.version? meta.version+"&_tt="+(new Date()).getTime(): ""
|
||||
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
|
||||
default: var item = document.createElement(nfs.SCRIPT); item.src = url+v, item.onerror = cb, item.onload = cb, document.body.appendChild(item)
|
||||
}
|
||||
}
|
||||
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) {
|
||||
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||[])
|
||||
|
Loading…
x
Reference in New Issue
Block a user