mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt some
This commit is contained in:
parent
8364935dfb
commit
5a85b2ea2e
255
frame.js
255
frame.js
@ -1,16 +1,15 @@
|
|||||||
Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.require([can.volcano], null, function(can, key, sub) { can[key] = sub })
|
Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.require([can.volcano], null, function(can, key, sub) { can[key] = sub })
|
||||||
if (!can.user.isMailMaster) { if (can.misc.Search(can, ice.MSG_SESSID)) { can.misc.CookieSessid(can, can.misc.Search(can, ice.MSG_SESSID)); return can.misc.Search(can, ice.MSG_SESSID, "") } }
|
if (!can.user.isMailMaster) { if (can.misc.Search(can, ice.MSG_SESSID)) { can.misc.CookieSessid(can, can.misc.Search(can, ice.MSG_SESSID)); return can.misc.Search(can, ice.MSG_SESSID, "") } }
|
||||||
can.user.title(can.misc.SearchOrConf(can, chat.TITLE)||can.misc.Search(can, ice.POD)||location.host)
|
|
||||||
can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) }
|
can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) }
|
||||||
|
can.user.title(can.misc.SearchOrConf(can, chat.TITLE)||can.misc.Search(can, ice.POD)||location.host)
|
||||||
can.core.Next(list, function(item, next) { item.type = chat.PANEL
|
can.core.Next(list, function(item, next) { item.type = chat.PANEL
|
||||||
can.onappend._init(can, can.base.Copy(item, can.core.Value(can, [chat.RIVER, item.name])), item.list, function(sub) { can[item.name] = sub
|
can.onappend._init(can, item, item.list, function(sub) { can[item.name] = sub
|
||||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, sub, cmds, cb) }
|
sub.run = function(event, cmds, cb) { var msg = sub.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, sub, cmds, cb) }
|
||||||
can.core.Item(sub.onplugin, function(key, cmd) { sub.onplugin.hasOwnProperty(key) && can.base.isFunc(cmd) && can.onengine.plugin(sub, can.core.Keys(ice.CAN, key), cmd) })
|
can.core.Item(sub.onplugin, function(key, cmd) { sub.onplugin.hasOwnProperty(key) && can.base.isFunc(cmd) && can.onengine.plugin(sub, can.core.Keys(ice.CAN, key), cmd) })
|
||||||
can.core.ItemCB(sub.onaction, function(key, cb) { can.onengine.listen(can, key, function(msg) { can.core.CallFunc(cb, {can: sub, msg: msg}) }) })
|
can.core.ItemCB(sub.onaction, function(key, cb) { can.onengine.listen(can, key, function(msg) { can.core.CallFunc(cb, {can: sub, msg: msg}) }) })
|
||||||
can.core.CallFunc([sub.onaction, chat._INIT], {can: sub, cb: next, target: sub._target}), delete(sub._history), delete(sub._conf.feature)
|
can.core.CallFunc([sub.onaction, chat._INIT], {can: sub, cb: next, target: sub._target}), delete(sub._history), delete(sub._conf.feature)
|
||||||
}, target)
|
}, target)
|
||||||
}, function() {
|
}, function() { can.onlayout._init(can, target), can.onmotion._init(can, target), can.onkeymap._init(can, target)
|
||||||
can.onlayout._init(can, target), can.onmotion._init(can, target), can.onkeymap._init(can, target)
|
|
||||||
can.onengine.signal(can, chat.ONMAIN, can.request()), can.base.isFunc(cb) && cb(can)
|
can.onengine.signal(can, chat.ONMAIN, can.request()), can.base.isFunc(cb) && cb(can)
|
||||||
}), can._path = location.href
|
}), can._path = location.href
|
||||||
},
|
},
|
||||||
@ -23,27 +22,20 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.requ
|
|||||||
if (panel.onengine._plugin(event, can, msg, panel, cmds, cb)) { return }
|
if (panel.onengine._plugin(event, can, msg, panel, cmds, cb)) { return }
|
||||||
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
||||||
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() {
|
var toast, _toast = msg.Option(chat._TOAST); if (_toast) { can.onmotion.delay(can, function() { if (msg._can && msg._can._toast) { return } toast = toast||can.user.toastProcess(msg._can, _toast) }, 500) }
|
||||||
if (msg._can && msg._can._toast) { return }
|
msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME), ice.MSG_LANGUAGE, can.user.info.language, ice.SESS_HEIGHT, panel.Conf(html.HEIGHT)||panel._target.offsetHeight||"", ice.SESS_WIDTH, panel.Conf(html.WIDTH)||panel.offsetWidth||"")
|
||||||
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)||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}))
|
} if (!can.misc.CookieSessid(can) && can.user.info.sessid) { msg.Option(ice.MSG_SESSID, can.user.info.sessid) }
|
||||||
|
can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds}))
|
||||||
var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+panel._name)
|
var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+panel._name)
|
||||||
if (!can.misc.CookieSessid(can) && can.user.info.sessid) { msg.Option(ice.MSG_SESSID, can.user.info.sessid) }
|
|
||||||
msg.Option(ice.MSG_LANGUAGE, can.user.info.language||"")
|
|
||||||
if (msg.Option("log.trace") == ice.TRUE) { debugger }
|
|
||||||
can.misc.Run(event, can, {names: names, daemon: msg[ice.MSG_DAEMON]}, cmds, function(msg) { toast && toast.close(), toast = true
|
can.misc.Run(event, can, {names: names, daemon: msg[ice.MSG_DAEMON]}, cmds, function(msg) { toast && toast.close(), toast = true
|
||||||
if (msg.Option("log.trace") == ice.TRUE) { debugger }
|
|
||||||
can.base.isFunc(cb) && cb(msg), Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(mdb.FS))] = msg
|
can.base.isFunc(cb) && cb(msg), Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(mdb.FS))] = msg
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
_static: function(event, can, msg, panel, cmds, cb) { if (!can.user.isLocalFile) { return false }
|
_static: function(event, can, msg, panel, cmds, cb) { if (!can.user.isLocalFile) { return false }
|
||||||
var res = Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(mdb.FS))], msg = can.request(event); msg.Clear(ice.MSG_APPEND)
|
var res = Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(mdb.FS))], msg = can.request(event); msg.Clear(ice.MSG_APPEND)
|
||||||
return res? msg.Copy(res): can.user.toast(can, "miss data"), can.base.isFunc(cb) && cb(msg), true
|
return res? msg.Copy(res): can.user.toastFailure(can, "miss data"), can.base.isFunc(cb) && cb(msg), true
|
||||||
},
|
},
|
||||||
_engine: function(event, can, msg, panel, cmds, cb) { return false },
|
_engine: function(event, can, msg, panel, cmds, cb) { return false },
|
||||||
_plugin: function(event, can, msg, panel, cmds, cb) {
|
_plugin: function(event, can, msg, panel, cmds, cb) {
|
||||||
@ -52,11 +44,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.requ
|
|||||||
}
|
}
|
||||||
var p = can.onengine.plugin(can, cmds[0]), n = 1; if (!p) { return false }
|
var p = can.onengine.plugin(can, cmds[0]), n = 1; if (!p) { return false }
|
||||||
var func = p, _can = p.can||panel, _sup = _can
|
var func = p, _can = p.can||panel, _sup = _can
|
||||||
if (p.meta && p.meta[cmds[2]] && cmds[1] == ctx.ACTION) {
|
if (p.meta && p.meta[cmds[2]] && cmds[1] == ctx.ACTION) { n = 3, func = p.meta[cmds[2]], _can = msg._can } else if (p.meta && p.meta[cmds[1]]) { n = 2, func = p.meta[cmds[2]], _can = msg._can }
|
||||||
n = 3, func = p.meta[cmds[2]], _can = msg._can
|
|
||||||
} else if (p.meta && p.meta[cmds[1]]) {
|
|
||||||
n = 2, func = p.meta[cmds[2]], _can = msg._can
|
|
||||||
}
|
|
||||||
if (cmds[n] == ctx.ACTION && cmds[n+1] == mdb.INPUTS) { return true }
|
if (cmds[n] == ctx.ACTION && cmds[n+1] == mdb.INPUTS) { return true }
|
||||||
return can.core.CallFunc(func, {sup: _sup, can: _can, sub: msg._can, msg: msg, arg: cmds.slice(n), cmds: cmds.slice(n), cb: cb}), true
|
return can.core.CallFunc(func, {sup: _sup, can: _can, sub: msg._can, msg: msg, arg: cmds.slice(n), cmds: cmds.slice(n), cb: cb}), true
|
||||||
},
|
},
|
||||||
@ -67,31 +55,29 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { can.requ
|
|||||||
return can.base.isString(item) && (item = can.core.SplitInput(item, can.base.isFunc(command.meta[item])? html.BUTTON: type)), item.type != html.SELECT && (type = item.type), button = button || item.type == html.BUTTON, item
|
return can.base.isString(item) && (item = can.core.SplitInput(item, can.base.isFunc(command.meta[item])? html.BUTTON: type)), item.type != html.SELECT && (type = item.type), button = button || item.type == html.BUTTON, item
|
||||||
}); if (!button) { command.list.push(can.core.SplitInput(ice.LIST, html.BUTTON)) } command.can = can, command.meta.name = name, arguments.callee.meta[_name] = command
|
}); if (!button) { command.list.push(can.core.SplitInput(ice.LIST, html.BUTTON)) } command.can = can, command.meta.name = name, arguments.callee.meta[_name] = command
|
||||||
}),
|
}),
|
||||||
listen: shy(function(can, name, cb, target) {
|
listen: shy(function(can, name, cb, target) { arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb) }),
|
||||||
if (target) {
|
|
||||||
target[name] = function(event) { can.misc.Event(event, can, cb) }
|
|
||||||
} else {
|
|
||||||
arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb)
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
signal: function(can, name, msg) { msg = msg||can.request(); var _msg = name == chat.ONREMOTE? msg.Option("_msg"): msg
|
signal: function(can, name, msg) { msg = msg||can.request(); var _msg = name == chat.ONREMOTE? msg.Option("_msg"): msg
|
||||||
_msg.Option(ice.LOG_DISABLE) == ice.TRUE || can.misc.Log(name, can._name, (msg._cmds||[]).join(lex.SP), name == chat.ONMAIN? can: _msg)
|
_msg.Option(ice.LOG_DISABLE) == ice.TRUE || can.misc.Log(name, can._name, (msg._cmds||[]).join(lex.SP), name == chat.ONMAIN? can: _msg)
|
||||||
return can.core.List(can.onengine.listen.meta[name], function(cb) { can.core.CallFunc(cb, {event: msg._event, msg: msg}) }).length, msg
|
return can.core.List(can.onengine.listen.meta[name], function(cb) { can.core.CallFunc(cb, {event: msg._event, msg: msg}) }).length, msg
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile) { return }
|
Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile) { return }
|
||||||
can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||"", text: can.user.title(), theme: can.getHeaderTheme(), module: "shylinux.com/x/volcanos", version: can.base.trimPrefix(window._version, "?_v=")}, function(event, msg, cmd, arg, cb) {
|
can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||"", text: can.user.title(), module: "shylinux.com/x/volcanos", version: can.base.trimPrefix(window._version, "?_v=")}, function(event, msg, cmd, arg, cb) {
|
||||||
var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)]||can; can.base.isFunc(sub.ondaemon[cmd])?
|
var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)]||can; can.base.isFunc(sub.ondaemon[cmd])?
|
||||||
can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}):
|
can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}):
|
||||||
can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), cb)
|
can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), cb)
|
||||||
})
|
})
|
||||||
}, _list: [""],
|
}, _list: [""], pwd: function(can, arg) { can._wss_name = can.ondaemon._list[0] = arg[0] },
|
||||||
pwd: function(can, arg) { can._wss_name = can.ondaemon._list[0] = arg[0] },
|
close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() },
|
||||||
toast: function(can, sub, arg) { can.core.CallFunc(can.user.toast, [sub].concat(arg)) },
|
toast: function(can, sub, arg) { can.core.CallFunc(can.user.toast, [sub].concat(arg)) },
|
||||||
|
grow: function(can, msg, sub, arg) {
|
||||||
|
if (sub._fields && sub.sup && sub.sup.onimport._grow) { return sub.sup.onimport._grow(sub.sup, msg, arg.join("")) }
|
||||||
|
if (!sub._fields && sub && sub.onimport._grow) { return sub.onimport._grow(sub, msg, arg.join("")) }
|
||||||
|
},
|
||||||
refresh: function(can, sub) { can.base.isFunc(sub.Update) && sub.Update() },
|
refresh: function(can, sub) { can.base.isFunc(sub.Update) && sub.Update() },
|
||||||
action: function(can, msg, sub, arg) {
|
action: function(can, msg, sub, arg) {
|
||||||
if (arg[0] == "ctrl") { var list = []; can.misc.Log("what ", document.activeElement)
|
if (arg[0] == "ctrl") { var list = []; can.misc.Log("what ", document.activeElement)
|
||||||
can.page.Select(can, can._root._target, "input", function(target, index) { list[index] = target
|
can.page.Select(can, can._root._target, html.INPUT, function(target, index) { list[index] = target
|
||||||
if (document.activeElement == document.body) { return target.focus() }
|
if (document.activeElement == document.body) { return target.focus() }
|
||||||
switch (arg[1]) {
|
switch (arg[1]) {
|
||||||
case "next": if (list[index-1] == document.activeElement) { target.focus() } break
|
case "next": if (list[index-1] == document.activeElement) { target.focus() } break
|
||||||
@ -102,16 +88,11 @@ Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (arg[0].indexOf(nfs.PT) == -1 && can.page.SelectInput(can, sub._option, arg[0], function(target) { target.type == html.BUTTON? target.click(): (target.value = arg[1]||"", target.focus()); return target })) { return }
|
if (arg[0].indexOf(nfs.PT) == -1 && can.page.SelectInput(can, sub._option, arg[0], function(target) { target.type == html.BUTTON? target.click(): (target.value = arg[1]||"", target.focus()); return target })) { return }
|
||||||
var _sub = can.core.Value(sub, chat._OUTPUTS_CURRENT); if (_sub && _sub.onaction && _sub.onaction[arg[0]]) { return _sub.onaction[arg[0]]({}, _sub, arg[0]) }
|
var _sub = sub.sub; if (_sub && _sub.onaction && _sub.onaction[arg[0]]) { return _sub.onaction[arg[0]]({}, _sub, arg[0]) }
|
||||||
if (sub && sub.onaction && sub.onaction[arg[0]]) { return sub.onaction[arg[0]]({}, sub, arg[0], _sub) }
|
if (sub && sub.onaction && sub.onaction[arg[0]]) { return sub.onaction[arg[0]]({}, sub, arg[0], _sub) }
|
||||||
can.core.CallFunc(can.core.Value(can, arg[0]), kit.Dict({can: can}, arg.slice(1)))
|
can.core.CallFunc(can.core.Value(can, arg[0]), kit.Dict({can: can}, arg.slice(1)))
|
||||||
},
|
},
|
||||||
input: function(can, msg, sub, arg) { can.page.Select(can, sub._target, "input:focus", function(target) { target.value += arg[0] }) },
|
input: function(can, msg, sub, arg) { can.page.Select(can, sub._target, "input:focus", function(target) { target.value += arg[0] }) },
|
||||||
grow: function(can, msg, sub, arg) {
|
|
||||||
if (sub._fields && sub.sup && sub.sup.onimport._grow) { return sub.sup.onimport._grow(sub.sup, msg, arg.join("")) }
|
|
||||||
if (!sub._fields && sub && sub.onimport._grow) { return sub.onimport._grow(sub, msg, arg.join("")) }
|
|
||||||
},
|
|
||||||
close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() },
|
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||||
meta.index && (meta.name = meta.index), meta.name = can.core.Split(meta.name||"", "\t .\n").pop()||can.Conf(mdb.NAME)
|
meta.index && (meta.name = meta.index), meta.name = can.core.Split(meta.name||"", "\t .\n").pop()||can.Conf(mdb.NAME)
|
||||||
@ -124,14 +105,12 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
can.base.isIn(meta.index, web.WIKI_PORTAL) && can.onappend.style(can, html.OUTPUT, field)
|
can.base.isIn(meta.index, web.WIKI_PORTAL) && can.onappend.style(can, html.OUTPUT, field)
|
||||||
var sub = Volcanos(meta.name, {_root: can._root||can, _follow: can.core.Keys(can._follow, meta.name), _target: field,
|
var sub = Volcanos(meta.name, {_root: can._root||can, _follow: can.core.Keys(can._follow, meta.name), _target: field,
|
||||||
_legend: legend, _option: option, _action: action, _output: output, _status: status, _history: [],
|
_legend: legend, _option: option, _action: action, _output: output, _status: status, _history: [],
|
||||||
Status: function(key, value) { if (can.base.isObject(key)) { return can.core.Item(key, sub.Status), key }
|
Status: function(key, value) { if (can.base.isObject(key)) { return can.core.Item(key, sub.Status), key } try {
|
||||||
try {
|
|
||||||
can.page.Select(can, status, [[[html.SPAN, key]]], function(target) {
|
can.page.Select(can, status, [[[html.SPAN, key]]], function(target) {
|
||||||
if (can.base.beginWith(value, nfs.PS, ice.HTTP)) { value = can.page.Format(html.A, value) }
|
if (can.base.beginWith(value, nfs.PS, ice.HTTP)) { value = can.page.Format(html.A, value) }
|
||||||
return can.base.isUndefined(value)? (value = target.innerHTML): (target.innerHTML = value.trim? value.trim(): value+"")
|
return can.base.isUndefined(value)? (value = target.innerHTML): (target.innerHTML = value.trim? value.trim(): value+"")
|
||||||
}); return value
|
}); return value
|
||||||
} catch(e) {}
|
} catch {} },
|
||||||
},
|
|
||||||
Action: function(key, value) { return can.page.SelectArgs(can, action, key, value)[0] },
|
Action: function(key, value) { return can.page.SelectArgs(can, action, key, value)[0] },
|
||||||
Option: function(key, value) { return can.page.SelectArgs(can, option, key, value)[0] },
|
Option: function(key, value) { return can.page.SelectArgs(can, option, key, value)[0] },
|
||||||
Update: function(event, cmds, cb, silent) { sub.request(event)._caller(), sub.onappend._output0(sub, sub.Conf(), event||{}, cmds||sub.Input([], !silent), cb, silent); return true },
|
Update: function(event, cmds, cb, silent) { sub.request(event)._caller(), sub.onappend._output0(sub, sub.Conf(), event||{}, cmds||sub.Input([], !silent), cb, silent); return true },
|
||||||
@ -139,11 +118,10 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
Input: function(cmds, save) { cmds = cmds && cmds.length > 0? cmds: can.page.SelectArgs(sub), cmds = can.base.trim(cmds)
|
Input: function(cmds, save) { cmds = cmds && cmds.length > 0? cmds: can.page.SelectArgs(sub), cmds = can.base.trim(cmds)
|
||||||
return !save || cmds[0] == ctx.ACTION || can.base.Eq(sub._history[sub._history.length-1], cmds) || sub._history.push(cmds), cmds
|
return !save || cmds[0] == ctx.ACTION || can.base.Eq(sub._history[sub._history.length-1], cmds) || sub._history.push(cmds), cmds
|
||||||
},
|
},
|
||||||
Clone: function() { meta.args = can.page.SelectArgs(can)
|
Clone: function() { meta.args = can.page.SelectArgs(can), can.onappend._init(can, meta, list, function(sub) { can.base.isFunc(cb) && cb(sub, true), can.onmotion.delay(can, sub.Focus) }, target) },
|
||||||
can.onappend._init(can, meta, list, function(sub) { can.base.isFunc(cb) && cb(sub, true), can.onmotion.delay(can, sub.Focus) }, target)
|
|
||||||
},
|
|
||||||
}, list, function(sub) { meta.feature = can.base.Obj(meta.feature, {}), sub.Conf(meta), field._can = sub
|
}, list, function(sub) { meta.feature = can.base.Obj(meta.feature, {}), sub.Conf(meta), field._can = sub
|
||||||
can.onappend.style(sub, meta.index? meta.index.split(nfs.PT): meta.name), can.onappend.style(sub, sub.Conf(ctx.STYLE)), can.onappend.style(sub, sub.Mode())
|
can.onappend.style(sub, meta.index? meta.index.split(nfs.PT): meta.name), can.onappend.style(sub, sub.Conf(ctx.STYLE)), can.onappend.style(sub, sub.Mode())
|
||||||
|
sub.isCmdMode() && can.onappend.style(sub, can.misc.Search(can, ctx.STYLE)), sub.isCmdMode() && sub.Conf(can.misc.Search(can))
|
||||||
sub._trans = can.base.Copy(sub._trans||{}, can.core.Value(sub, [chat.ONACTION, chat._TRANS]))
|
sub._trans = can.base.Copy(sub._trans||{}, can.core.Value(sub, [chat.ONACTION, chat._TRANS]))
|
||||||
can.core.Item(meta.feature, function(key, cb) { cb.help && sub.user.trans(sub, kit.Dict(key, cb.help)) })
|
can.core.Item(meta.feature, function(key, cb) { cb.help && sub.user.trans(sub, kit.Dict(key, cb.help)) })
|
||||||
meta.msg && can.onmotion.delay(can, function() { var msg = sub.request(); msg.Copy(can.base.Obj(meta.msg))
|
meta.msg && can.onmotion.delay(can, function() { var msg = sub.request(); msg.Copy(can.base.Obj(meta.msg))
|
||||||
@ -151,38 +129,27 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
}), meta.inputs && sub.onappend._option(sub, meta, sub._option, meta.msg)
|
}), meta.inputs && sub.onappend._option(sub, meta, sub._option, meta.msg)
|
||||||
sub._legend && (sub._legend.onclick = function(event) {
|
sub._legend && (sub._legend.onclick = function(event) {
|
||||||
can.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([[ctx.ACTION].concat(can.core.Item(meta.feature._trans))]), function(event, button) { can.misc.Event(event, sub, function(msg) {
|
can.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([[ctx.ACTION].concat(can.core.Item(meta.feature._trans))]), function(event, button) { can.misc.Event(event, sub, function(msg) {
|
||||||
msg.RunAction(event, can.core.Value(sub, chat._OUTPUTS_CURRENT), [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button, [], function(msg) {
|
msg.RunAction(event, sub.sub, [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button, [], function(msg) { can.onappend._output(sub, msg) })
|
||||||
can.onappend._output(sub, msg)
|
|
||||||
})
|
|
||||||
}) })
|
}) })
|
||||||
})
|
}), can.base.isFunc(cb) && cb(sub)
|
||||||
sub.isCmdMode() && can.onappend.style(sub, can.misc.Search(can, ctx.STYLE)), sub.isCmdMode() && sub.Conf(can.misc.Search(can))
|
if (sub.isOutputStyle()) { return } if (can.user.isMobile && !can.user.isLandscape()) { return }
|
||||||
can.base.isFunc(cb) && cb(sub)
|
|
||||||
if (can.user.isMobile && !can.user.isLandscape()) { return } if (can.page.ClassList.has(can, sub._target, html.OUTPUT)) { return }
|
|
||||||
sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER, web.CHAT_MACOS_DESKTOP) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields)
|
sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER, web.CHAT_MACOS_DESKTOP) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields)
|
||||||
}); return sub
|
}); return sub
|
||||||
},
|
},
|
||||||
_option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
_option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
||||||
can.core.List([""].concat(meta.inputs), function(item) { if (item != "" && item.type != html.BUTTON) { return }
|
can.core.List([""].concat(meta.inputs), function(item) { if (item != "" && item.type != html.BUTTON) { return }
|
||||||
var icon = {
|
var icon = {
|
||||||
|
"": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }},
|
||||||
run: {name: web.PLAY, cb: function(event) { can.Update(event) }},
|
run: {name: web.PLAY, cb: function(event) { can.Update(event) }},
|
||||||
list: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
|
list: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
|
||||||
back: {name: "goback", cb: function(event) { can.onimport._back(can) }},
|
back: {name: "goback", cb: function(event) { can.onimport._back(can) }},
|
||||||
refresh: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
|
refresh: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
|
||||||
prev: {name: mdb.PREV, cb: function(event) {
|
prev: {name: mdb.PREV, cb: function(event) { var sub = can.sub; sub.onaction && sub.onaction.prev? sub.onaction.prev(event, sub): can.onaction.prev(event, can) }},
|
||||||
var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
|
next: {name: mdb.NEXT, cb: function(event) { var sub = can.sub; sub.onaction && sub.onaction.next? sub.onaction.next(event, sub): can.onaction.next(event, can) }},
|
||||||
sub.onaction && sub.onaction.prev? sub.onaction.prev(event, sub): can.onaction.prev(event, can)
|
|
||||||
}},
|
|
||||||
next: {name: mdb.NEXT, cb: function(event) {
|
|
||||||
var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
|
|
||||||
sub.onaction && sub.onaction.next? sub.onaction.next(event, sub): can.onaction.next(event, can)
|
|
||||||
}},
|
|
||||||
play: {name: web.PLAY},
|
play: {name: web.PLAY},
|
||||||
"": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }},
|
|
||||||
}[item.name||""]; if (!icon) { return } item.style = "icons"
|
}[item.name||""]; if (!icon) { return } item.style = "icons"
|
||||||
can.page.Append(can, option, [{view: [[html.ITEM, html.ICON, icon.name, item.name], html.DIV, can.page.unicode[icon.name]], title: item.name, onclick: icon.cb||function(event) {
|
can.page.Append(can, option, [{view: [[html.ITEM, html.ICON, icon.name, item.name], html.DIV, can.page.unicode[icon.name]], title: item.name, onclick: icon.cb||function(event) {
|
||||||
var msg = can.request(event), cmds = [ctx.ACTION, item.name]
|
var msg = can.request(event), cmds = [ctx.ACTION, item.name]; msg.RunAction(event, can.sub, cmds) || msg.RunAction(event, can, cmds) || can.Update(event, cmds)
|
||||||
msg.RunAction(event, can.core.Value(can, chat._OUTPUTS_CURRENT), cmds) || msg.RunAction(event, can, cmds) || can.Update(event, cmds)
|
|
||||||
}}])
|
}}])
|
||||||
})
|
})
|
||||||
can.core.List(args.slice(can.core.List(meta.inputs, function(item) { if (can.base.isIn(item.type, html.TEXTAREA, html.TEXT, html.SELECT)) { return item } }).length), function(item, index) { meta.inputs.push({type: mdb.TEXT, name: "args"+index, value: item}) })
|
can.core.List(args.slice(can.core.List(meta.inputs, function(item) { if (can.base.isIn(item.type, html.TEXTAREA, html.TEXT, html.SELECT)) { return item } }).length), function(item, index) { meta.inputs.push({type: mdb.TEXT, name: "args"+index, value: item}) })
|
||||||
@ -191,12 +158,12 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
_target: can.onappend.input(can, item, args[index]||opts[item.name], option||can._option), _option: option||can._option, _action: can._action, _output: can._output, _status: can._status,
|
_target: can.onappend.input(can, item, args[index]||opts[item.name], option||can._option), _option: option||can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||||
CloneField: can.Clone, CloneInput: function() { can.onmotion.focus(can, add(item)._target) }, Input: can.Input, Option: can.Option, Action: can.Action, Status: can.Status,
|
CloneField: can.Clone, CloneInput: function() { can.onmotion.focus(can, add(item)._target) }, Input: can.Input, Option: can.Option, Action: can.Action, Status: can.Status,
|
||||||
}, [item.display, chat.PLUGIN_INPUT_JS], function(sub) { sub.Conf(item)
|
}, [item.display, chat.PLUGIN_INPUT_JS], function(sub) { sub.Conf(item)
|
||||||
|
if (item.type == html.TEXT) { can.page.Append(can, sub._target.parentNode, [{text: [sub._target.value, html.SPAN, mdb.VALUE]}]) }
|
||||||
if (item.type == html.BUTTON && can.base.isIn(item.name, mdb.CREATE, mdb.INSERT)) { can.onappend.style(can, "icons", sub._target.parentNode)
|
if (item.type == html.BUTTON && can.base.isIn(item.name, mdb.CREATE, mdb.INSERT)) { can.onappend.style(can, "icons", sub._target.parentNode)
|
||||||
can.page.Append(can, sub._target.parentNode, [{icon: item.name, onclick: function(event) { can.Update(event, [ctx.ACTION, item.name]) }}])
|
can.page.Append(can, sub._target.parentNode, [{icon: item.name, onclick: function(event) { can.Update(event, [ctx.ACTION, item.name]) }}])
|
||||||
}
|
}
|
||||||
if (item.type == html.TEXT) { can.page.Append(can, sub._target.parentNode, [{text: [sub._target.value, html.SPAN, mdb.VALUE]}]) }
|
|
||||||
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event, kit.Dict(chat._TOAST, ice.PROCESS))._caller()
|
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event, kit.Dict(chat._TOAST, ice.PROCESS))._caller()
|
||||||
msg.RunAction(event, sub, cmds) || msg.RunAction(event, can.core.Value(can, chat._OUTPUTS_CURRENT), cmds) || can.Update(event, can.Input(cmds, !silent), cb, silent)
|
msg.RunAction(event, sub, cmds) || msg.RunAction(event, can.sub, cmds) || can.Update(event, can.Input(cmds, !silent), cb, silent)
|
||||||
}, can._inputs = can._inputs||{}, can._inputs[item.name] = sub, sub.sup = can
|
}, can._inputs = can._inputs||{}, can._inputs[item.name] = sub, sub.sup = can
|
||||||
can.core.ItemCB(sub.onaction, function(key, cb) { sub._target[key] = function(event) { can.misc.Event(event, can, function(msg) { cb(event, sub, sub._target) })} })
|
can.core.ItemCB(sub.onaction, function(key, cb) { sub._target[key] = function(event) { can.misc.Event(event, can, function(msg) { cb(event, sub, sub._target) })} })
|
||||||
can.core.ItemCB(item, function(key, cb) { sub._target[key] = function(event) { can.misc.Event(event, can, function(msg) { cb(event, sub, sub._target) })} })
|
can.core.ItemCB(item, function(key, cb) { sub._target[key] = function(event) { can.misc.Event(event, can, function(msg) { cb(event, sub, sub._target) })} })
|
||||||
@ -218,8 +185,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
var button = event.target.value; meta[item[0]]? can.core.CallFunc(meta[item[0]], [event, can, item[0], button]): meta[button] && can.core.CallFunc(meta[button], [event, can, button])
|
var button = event.target.value; meta[item[0]]? can.core.CallFunc(meta[item[0]], [event, can, item[0], button]): meta[button] && can.core.CallFunc(meta[button], [event, can, button])
|
||||||
}) }}: /* 4.其它 */(item.type == html.BUTTON && (item.value = item.value||can.user.trans(can, item.name, meta._trans), item.onclick = item.onclick||function(event) {
|
}) }}: /* 4.其它 */(item.type == html.BUTTON && (item.value = item.value||can.user.trans(can, item.name, meta._trans), item.onclick = item.onclick||function(event) {
|
||||||
run(event, item.name)
|
run(event, item.name)
|
||||||
}, item._init = item._init||function(target) {
|
}, item._init = item._init||function(target) { item.action && can.onappend.figure(sub, item, target, function(_sub, value) { can.Update() })
|
||||||
item.action && can.onappend.figure(sub, item, target, function(_sub, value) { can.Update() })
|
|
||||||
if (can.base.isIn(item.name, mdb.CREATE, mdb.INSERT)) { can.onappend.style(can, "icons", target.parentNode)
|
if (can.base.isIn(item.name, mdb.CREATE, mdb.INSERT)) { can.onappend.style(can, "icons", target.parentNode)
|
||||||
can.page.Append(can, target.parentNode, [{icon: item.name, onclick: function(event) { can.Update(event, [ctx.ACTION, item.name]) }}])
|
can.page.Append(can, target.parentNode, [{icon: item.name, onclick: function(event) { can.Update(event, [ctx.ACTION, item.name]) }}])
|
||||||
}
|
}
|
||||||
@ -227,7 +193,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
}), meta
|
}), meta
|
||||||
},
|
},
|
||||||
_output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); meta.feature = meta.feature||{}
|
_output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); meta.feature = meta.feature||{}
|
||||||
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT); if (msg.RunAction(event, sub, cmds)) { return } }
|
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION) { if (msg.RunAction(event, can.sub, cmds)) { return } }
|
||||||
if (msg.RunAction(event, can, cmds)) { return }
|
if (msg.RunAction(event, can, cmds)) { return }
|
||||||
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { var msg = can.request(event, {action: cmds[1]})
|
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { var msg = can.request(event, {action: cmds[1]})
|
||||||
var action = meta.feature[cmds[1]]; if (can.base.isFunc(action)) { cb = cb||function() { can.Update() }
|
var action = meta.feature[cmds[1]]; if (can.base.isFunc(action)) { cb = cb||function() { can.Update() }
|
||||||
@ -236,10 +202,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
}): can.core.CallFunc(action, {sup: meta.can, can: can, msg: can.request(event), arg: cmds.slice(2), cb: cb})
|
}): can.core.CallFunc(action, {sup: meta.can, can: can, msg: can.request(event), arg: cmds.slice(2), cb: cb})
|
||||||
} return can.user.input(event, can, meta.feature[cmds[1]], function(args) { can.Update(can.request(event, {_handle: ice.TRUE}, msg, can.Option()), cmds.slice(0, 2).concat(args), cb) })
|
} return can.user.input(event, can, meta.feature[cmds[1]], function(args) { can.Update(can.request(event, {_handle: ice.TRUE}, msg, can.Option()), cmds.slice(0, 2).concat(args), cb) })
|
||||||
}
|
}
|
||||||
return can.onengine._plugin(event, can, msg, can, cmds, cb) || can.run(event, cmds, function(msg) {
|
return can.onengine._plugin(event, can, msg, can, cmds, cb) || can.run(event, cmds, function(msg) { if (can.base.isFunc(cb)) { return cb(msg) } if (silent) { return }
|
||||||
if (can.base.isFunc(cb)) { return cb(msg) } if (silent) { return }
|
|
||||||
var _can = can._fields? can.sup: can; if (_can == (msg._can._fields? msg._can.sup: msg._can)) { if (can.core.CallFunc([_can, chat.ONIMPORT, ice.MSG_PROCESS], {can: _can, msg: msg})) { return } }
|
var _can = can._fields? can.sup: can; if (_can == (msg._can._fields? msg._can.sup: msg._can)) { if (can.core.CallFunc([_can, chat.ONIMPORT, ice.MSG_PROCESS], {can: _can, msg: msg})) { return } }
|
||||||
if (cmds && cmds[0] == ctx.ACTION) { if (can.base.isIn(cmds[1], mdb.CREATE, mdb.INSERT, mdb.PRUNES, mdb.IMPORT, mdb.EXPORT, "exports", "imports", nfs.TRASH) || msg.Length() == 0 && !msg.Result()) { return can.user.toastSuccess(can, cmds[1]), can.Update() } }
|
if (cmds && cmds[0] == ctx.ACTION) { if (can.base.isIn(cmds[1], mdb.CREATE, mdb.INSERT, mdb.PRUNES, mdb.EXPORT, mdb.IMPORT, "exports", "imports", nfs.TRASH) || msg.Length() == 0 && !msg.Result()) { return can.user.toastSuccess(can, cmds[1]), can.Update() } }
|
||||||
can.onappend._output(can, msg, meta.display||msg.Option(ice.MSG_DISPLAY)||meta.feature.display)
|
can.onappend._output(can, msg, meta.display||msg.Option(ice.MSG_DISPLAY)||meta.feature.display)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -249,7 +214,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, db: {}, ui: {},
|
Update: can.Update, Option: can.Option, Action: can.Action, Status: can.Status, db: {}, ui: {},
|
||||||
}, [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})
|
var last = can.sub; 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.sub = sub
|
}, can._outputs = can._outputs||[], can._outputs.push(sub), sub.sup = can, can.sub = sub
|
||||||
@ -262,11 +227,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
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)
|
||||||
can.onmotion.story.auto(can, can._output), can.onappend.style(sub, sub.Conf(ctx.STYLE))
|
can.onmotion.story.auto(can, can._output), can.onappend.style(sub, sub.Conf(ctx.STYLE))
|
||||||
if (can.onimport.size) {
|
if (can.onimport.size) { if (can.isFullMode() || can.isCmdMode()) { can.onimport.size(can, can.page.height(), can.page.width(), true) }
|
||||||
if (can.isFullMode() || can.isCmdMode()) { can.onimport.size(can, can.page.height(), can.page.width(), true) }
|
|
||||||
can.onexport.output(sub, msg)
|
can.onexport.output(sub, msg)
|
||||||
}
|
} can.base.isFunc(cb) && cb(msg)
|
||||||
can.base.isFunc(cb) && cb(msg)
|
|
||||||
}, target: output})
|
}, target: output})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -278,10 +241,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
], onclick: function(event) { can.user.copy(event, can, item.value) }}])
|
], onclick: function(event) { can.user.copy(event, can, item.value) }}])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
style: function(can, style, target) { target = target||can._fields||can._target
|
|
||||||
if (can.base.endWith(style, ".css")) { return can.require([style]) }
|
|
||||||
can.base.isObject(style) && !can.base.isArray(style)? can.page.style(can, target, style): can.page.ClassList.add(can, target, style)
|
|
||||||
},
|
|
||||||
field: function(can, type, item, target) { type = type||html.STORY, item = item||{}
|
field: function(can, type, item, target) { type = type||html.STORY, item = item||{}
|
||||||
var name = can.core.Split(item.nick||item.name||"").pop()||""; name = can.core.Keys(item.space, name)
|
var name = can.core.Split(item.nick||item.name||"").pop()||""; name = can.core.Keys(item.space, name)
|
||||||
var title = !item.help || item.help == name || can.user.language(can) == "en"? name: name+"("+can.core.Split(item.help)[0]+")"
|
var title = !item.help || item.help == name || can.user.language(can) == "en"? name: name+"("+can.core.Split(item.help)[0]+")"
|
||||||
@ -291,83 +251,82 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
var icon = [], _item = can.base.Copy({className: "", type: "", name: ""}, item), input = can.page.input(can, _item, value)
|
var icon = [], _item = can.base.Copy({className: "", type: "", name: ""}, item), input = can.page.input(can, _item, value)
|
||||||
if (item.type == html.BUTTON && !input.value) { input.value = can.user.trans(can, item.name) }
|
if (item.type == html.BUTTON && !input.value) { input.value = can.user.trans(can, item.name) }
|
||||||
if (item.type == html.TEXT) { input.onfocus = input.onfocus||function(event) { can.onmotion.selectRange(event.target) }
|
if (item.type == html.TEXT) { input.onfocus = input.onfocus||function(event) { can.onmotion.selectRange(event.target) }
|
||||||
input.onkeydown = item.onkeydown||function(event) {
|
input.onkeydown = item.onkeydown||function(event) { if (event.key == code.ENTER) { return can.Update(), can.onkeymap.prevent(event) }
|
||||||
if (event.key == lang.ENTER) { can.Update() }
|
|
||||||
can.onkeymap.input(event, can), can.onkeymap.selectOutput(event, can)
|
can.onkeymap.input(event, can), can.onkeymap.selectOutput(event, can)
|
||||||
}
|
}
|
||||||
input.onkeyup = item.onkeyup||function(event) { if (item.name == html.FILTER) { can.user.toast(can, "filter out "+can.page.Select(can, can._output, html.TR, function(tr, index) {
|
input.onkeyup = item.onkeyup||function(event) { if (item.name == html.FILTER) { can.user.toast(can, "filter out "+can.page.Select(can, can._output, html.TR, function(tr, index) {
|
||||||
if (!can.page.ClassList.set(can, tr, html.HIDE, index > 0 && tr.innerText.indexOf(event.target.value) == -1)) { return tr }
|
if (!can.page.ClassList.set(can, tr, html.HIDE, index > 0 && tr.innerText.indexOf(event.target.value) == -1)) { return tr }
|
||||||
}).length+" lines") } }
|
}).length+" lines") } }, icon.push({icon: mdb.DELETE, onclick: function(event) { _input.value = "", input.onkeyup({target: event.target.previousSibling}) }})
|
||||||
icon.push({icon: mdb.DELETE, onclick: function(event) { _input.value = "", input.onkeyup({target: event.target.previousSibling}) }})
|
|
||||||
} if (item.range) { input._init = function(target) { can.onappend.figure(can, item, target, function(sub, value, old) { target.value = value, can.core.CallFunc([can.onaction, item.name], [event, can, item.name]) }) } }
|
} if (item.range) { input._init = function(target) { can.onappend.figure(can, item, target, function(sub, value, old) { target.value = value, can.core.CallFunc([can.onaction, item.name], [event, can, item.name]) }) } }
|
||||||
var _input = can.page.Append(can, target, [{view: [[html.ITEM].concat(style, [item.type, item.name])], list: [item.icon && {icon: item.icon}, input].concat(icon), _init: function(target, _input) {
|
var _input = can.page.Append(can, target, [{view: [[html.ITEM].concat(style, [item.type, item.name])], list: [item.icon && {icon: item.icon}, input].concat(icon), _init: function(target, _input) {
|
||||||
if (item.type == html.SELECT) { _input.select.value = value||_item.value||_item.values[0], can.onappend.select(can, _input.select, _item) }
|
if (item.type == html.SELECT) { _input.select.value = value||_item.value||_item.values[0], can.onappend.select(can, _input.select, _item) }
|
||||||
item.style && can.onappend.style(can, item.style, target)
|
item.style && can.onappend.style(can, item.style, target)
|
||||||
}}])[item.name]; return _input
|
}}])[item.name]; return _input
|
||||||
},
|
},
|
||||||
scroll: function(can, target, offset, length) { if (target.scrollHeight/target.offsetHeight == 1) { return }
|
select: function(can, select, item) {
|
||||||
if (offset) { var ui = can.page.Append(can, target, [{view: "scrollbar", style: {height: length*target.offsetHeight*2}}])
|
|
||||||
target.addEventListener("scroll", function(event) { can.page.style(can, ui.scrollbar, html.TOP, target.scrollTop+offset*target.offsetHeight, html.RIGHT, -target.scrollLeft) })
|
|
||||||
return ui.scrollbar
|
|
||||||
}
|
|
||||||
var ui = can.page.Append(can, target, [{view: "scrollbar", style: {height: target.offsetHeight*target.offsetHeight/target.scrollHeight},
|
|
||||||
onmousedown: function(event) { var begin = {top: target.scrollTop, y: event.y}
|
|
||||||
window._scroll = function(event) { target.scrollTop = begin.top+(event.y-begin.y)/target.offsetHeight*target.scrollHeight, can.onkeymap.prevent(event) }
|
|
||||||
},
|
|
||||||
}])
|
|
||||||
target.addEventListener("scroll", function(event) { can.onmotion.delayOnce(can, function() { can.page.style(can, ui.scrollbar, "visibility", "visible")
|
|
||||||
can.page.style(can, ui.scrollbar, html.TOP, target.scrollTop+target.scrollTop/target.scrollHeight*target.offsetHeight, html.RIGHT, -target.scrollLeft)
|
|
||||||
can.onmotion.delayOnce(can, function() { can.page.style(can, ui.scrollbar, "visibility", "hidden") }, 3000, target._delay_scroll = target._delay_scroll||[])
|
|
||||||
}, 0, target._delay_scroll = target._delay_scroll||[]) })
|
|
||||||
return ui.scrollbar
|
|
||||||
},
|
|
||||||
select: function(can, select, item) { var carte
|
|
||||||
return can.page.Append(can, select.parentNode, [{type: html.INPUT, data: {className: html.SELECT, type: html.BUTTON, name: item.name, value: can.user.trans(can, item.value||item.values[0]), title: item.name}, onclick: function(event) { var target = event.target
|
return can.page.Append(can, select.parentNode, [{type: html.INPUT, data: {className: html.SELECT, type: html.BUTTON, name: item.name, value: can.user.trans(can, item.value||item.values[0]), title: item.name}, onclick: function(event) { var target = event.target
|
||||||
if (carte) { return carte.close(), carte = null } carte = can.user.carte(event, can, {}, item.values, function(event, button) {
|
var carte = can.user.carte(event, can, {}, item.values, function(event, button) { carte.close(); if (target.value == button) { return }
|
||||||
carte.close(), carte = null; if (target.value == button) { return }
|
|
||||||
target.value = button, select.value = button, select.onchange && select.onchange({target: select})
|
target.value = button, select.value = button, select.onchange && select.onchange({target: select})
|
||||||
}); can.onappend.style(can, [html.SELECT, item.name], carte._target), can.page.style(can, carte._target, html.MIN_WIDTH, event.target.offsetWidth)
|
}); can.onappend.style(can, [html.SELECT, item.name], carte._target), can.page.style(can, carte._target, html.MIN_WIDTH, event.target.offsetWidth)
|
||||||
}, _init: function(target) { can.page.style(can, target, html.WIDTH, (select.offsetWidth||80)+10), can.onappend.style(can, html.HIDE, select) }}, {icon: mdb.SELECT}])
|
}, _init: function(target) { can.page.style(can, target, html.WIDTH, (select.offsetWidth||80)+10), can.onappend.style(can, html.HIDE, select) }}, {icon: mdb.SELECT}])
|
||||||
},
|
},
|
||||||
table: function(can, msg, cb, target, keys) { if (!msg || msg.Length() == 0) { return } var meta = can.base.Obj(msg.Option(mdb.META))
|
table: function(can, msg, cb, target, keys) { if (!msg || msg.Length() == 0) { return } var meta = can.base.Obj(msg.Option(mdb.META))
|
||||||
for (var i = 0; i < msg.append.length-1; i++) { if (msg.append[i] == ctx.ACTION) { msg.append[i] = msg.append[msg.append.length-1], msg.append[msg.append.length-1] = ctx.ACTION } }
|
for (var i = 0; i < msg.append.length-1; i++) { if (msg.append[i] == ctx.ACTION) { msg.append[i] = msg.append[msg.append.length-1], msg.append[msg.append.length-1] = ctx.ACTION } }
|
||||||
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, line, array) {
|
var table = can.page.AppendTable(can, msg, target||can._output, msg.append, cb||function(value, key, index, data, list) {
|
||||||
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 = data.key } data = {}, can.core.List(list, function(item) { data[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 }) }
|
function run(event, cmd, arg) { can.misc.Event(event, can, function(msg) { can.run(can.request(event, data, can.Option()), [ctx.ACTION, cmd].concat(arg)) }) }
|
||||||
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) { can.request(event, {action: 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)
|
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, data, event) }
|
||||||
}, ondblclick: function(event) { if ([mdb.KEY, mdb.HASH, mdb.ID].indexOf(key) > -1) { return }
|
}, ondblclick: function(event) { if (can.base.isIn(key, mdb.KEY, mdb.HASH, mdb.ID)) { 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}
|
||||||
item.run = function(event, cmds, cb) { can.run(can.request(event, line, can.Option()), cmds, cb, true) }
|
item.run = function(event, cmds, cb) { can.run(can.request(event, data, can.Option()), cmds, cb, true) }
|
||||||
item._enter = function(event, value) { if (event.ctrlKey) { run(event, mdb.MODIFY, [key, value]) } }
|
item._enter = function(event, value) { if (event.ctrlKey) { run(event, mdb.MODIFY, [key, value]) } }
|
||||||
can.onmotion.modifys(can, event.target, function(event, value, old) { run(event, mdb.MODIFY, [key, value]) }, item)
|
can.onmotion.modifys(can, event.target, function(event, value, old) { run(event, mdb.MODIFY, [key, value]) }, item)
|
||||||
}}
|
}}
|
||||||
}); table && can.onappend.style(can, chat.CONTENT, table), msg.append && msg.append[msg.append.length-1] == ctx.ACTION && can.onappend.style(can, ctx.ACTION, table)
|
}); table && can.onappend.style(can, chat.CONTENT, table), msg.append && msg.append[msg.append.length-1] == ctx.ACTION && can.onappend.style(can, ctx.ACTION, table)
|
||||||
;(can.isCmdMode() || table.offsetWidth > can.ConfWidth() / 2) && can.onappend.style(can, "full", table)
|
;(can.isCmdMode() || table.offsetWidth > can.ConfWidth() / 2) && can.onappend.style(can, "full", table)
|
||||||
can.page.Select(can, table, "input", function(target) {
|
can.page.Select(can, table, html.INPUT_BUTTON, function(target) { target.name == target.value && (target.value = can.user.trans(can, target.value)) })
|
||||||
target.name == target.value && (target.value = can.user.trans(can, target.value))
|
|
||||||
})
|
|
||||||
return keys && can.page.RangeTable(can, table, can.core.List(keys, function(key) { return can.page.Select(can, table, html.TH, function(th, index) { if (th.innerHTML == key) { return index } })[0] })), table
|
return keys && can.page.RangeTable(can, table, can.core.List(keys, function(key) { return can.page.Select(can, table, html.TH, function(th, index) { if (th.innerHTML == key) { return index } })[0] })), table
|
||||||
},
|
},
|
||||||
board: function(can, text, target) { text && text.Result && (text = text.Result()); if (!text) { return }
|
board: function(can, text, target) { text && text.Result && (text = text.Result()); if (!text) { return }
|
||||||
var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code
|
var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code
|
||||||
if (text.indexOf("<fieldset") == 0) { can.page.Select(can, code, html.FIELDSET, function(target) { var data = target.dataset
|
if (text.indexOf("<fieldset") == 0) { can.page.Select(can, code, html.FIELDSET, function(target) { var data = target.dataset
|
||||||
data.index && can.onappend.plugin(can, {index: data.index}, function(sub) {
|
data.index && can.onappend.plugin(can, {index: data.index, args: can.base.Split(data.args)}, function(sub) {
|
||||||
can.page.Modify(can, sub._legend, data.index.split(nfs.PT).pop())
|
can.page.Modify(can, sub._legend, data.index.split(nfs.PT).pop())
|
||||||
}, can._output, target)
|
}, can._output, target)
|
||||||
}) } else if (text.indexOf("<iframe") == 0) { can.page.Select(can, code, html.IFRAME, function(target) { var data = target.dataset
|
}) } else if (text.indexOf("<iframe") == 0) { can.page.Select(can, code, html.IFRAME, function(target) { var data = target.dataset
|
||||||
can.page.style(can, target, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth())
|
can.page.style(can, target, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth())
|
||||||
}) } else if (text.indexOf("<svg") > 0) { can.page.Select(can, code, html.SVG, function(target) {
|
}) } else if (text.indexOf("<svg") > 0) { can.page.Select(can, code, html.SVG, function(target) {
|
||||||
can.page.style(can, target, {height: can.ConfHeight(), width: can.ConfWidth()})
|
can.page.style(can, target, html.MIN_HEIGHT, can.ConfHeight(), html.MIN_WIDTH, can.ConfWidth())
|
||||||
}) } else { can.page.Select(can, code, html.INPUT_BUTTON, function(target) {
|
}) } else { can.page.Select(can, code, html.INPUT_BUTTON, function(target) {
|
||||||
target.onclick = function(event) { can.misc.Event(event, can, function(msg) {
|
target.onclick = function(event) { can.misc.Event(event, can, function(msg) { can.run(can.request(event, can.Option()), [ctx.ACTION, target.name]) }) }
|
||||||
can.run(can.request(event, can.Option()), [ctx.ACTION, target.name])
|
|
||||||
}) }
|
|
||||||
}) } return code.scrollBy && code.scrollBy(0, 10000), code
|
}) } return code.scrollBy && code.scrollBy(0, 10000), code
|
||||||
},
|
},
|
||||||
tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), []), cb, target) },
|
tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), []), cb, target) },
|
||||||
|
|
||||||
|
style: function(can, style, target) { target = target||can._fields||can._target
|
||||||
|
if (can.base.endWith(style, ".css")) { return can.require([style]) }
|
||||||
|
can.base.isObject(style) && !can.base.isArray(style)? can.page.style(can, target, style): can.page.ClassList.add(can, target, style)
|
||||||
|
},
|
||||||
|
scroll: function(can, target, offset, length) { if (target.scrollHeight/target.offsetHeight == 1) { return }
|
||||||
|
if (offset) { var ui = can.page.Append(can, target, [{view: "scrollbar", style: {height: length*target.offsetHeight*2}}])
|
||||||
|
target.addEventListener("scroll", function(event) { can.page.style(can, ui.scrollbar, html.TOP, target.scrollTop+offset*target.offsetHeight, html.RIGHT, -target.scrollLeft) })
|
||||||
|
return ui.scrollbar
|
||||||
|
}
|
||||||
|
var begin, _target = can.page.Append(can, target, [{view: "scrollbar",
|
||||||
|
onmousedown: function(event) { begin = {top: target.scrollTop, y: event.y}, window._mousemove = event.target },
|
||||||
|
onmousemove: function(event) { if (!begin) { return } target.scrollTop = begin.top+(event.y-begin.y)/target.offsetHeight*target.scrollHeight, can.onkeymap.prevent(event) },
|
||||||
|
onmouseup: function(event) { begin = null, delete(window._mousemove) },
|
||||||
|
}])._target
|
||||||
|
target.addEventListener("scroll", function(event) { var height = can.base.Min(target.offsetHeight*target.offsetHeight/target.scrollHeight, target.offsetHeight/4)
|
||||||
|
can.page.style(can, _target, html.HEIGHT, height, html.RIGHT, -target.scrollLeft, "visibility", "visible",
|
||||||
|
html.TOP, target.scrollTop+target.scrollTop/(target.scrollHeight-target.offsetHeight)*(target.offsetHeight-height),
|
||||||
|
), can.onmotion.delayOnce(can, function() { can.page.style(can, _target, "visibility", "hidden") }, 3000, target._delay_scroll = target._delay_scroll||[])
|
||||||
|
})
|
||||||
|
return _target
|
||||||
|
},
|
||||||
toggle: function(can, target) {
|
toggle: function(can, target) {
|
||||||
var toggle = can.page.Append(can, target, [
|
var toggle = can.page.Append(can, target, [
|
||||||
{view: [[html.PROJECT, html.TOGGLE]], onclick: function() { can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can) }},
|
{view: [[html.PROJECT, html.TOGGLE]], onclick: function() { can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can) }},
|
||||||
@ -378,8 +337,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
can.page.Modify(can, toggle.project, can.page.isDisplay(can.ui.project)? left: right)
|
can.page.Modify(can, toggle.project, can.page.isDisplay(can.ui.project)? left: right)
|
||||||
can.page.Modify(can, toggle.display, can.page.isDisplay(can.ui.display)? down: up)
|
can.page.Modify(can, toggle.display, can.page.isDisplay(can.ui.display)? down: up)
|
||||||
can.page.Modify(can, toggle.profile, can.page.isDisplay(can.ui.profile)? right: left)
|
can.page.Modify(can, toggle.profile, can.page.isDisplay(can.ui.profile)? right: left)
|
||||||
}
|
}; return toggle
|
||||||
return toggle
|
|
||||||
},
|
},
|
||||||
layout: function(can, list, type, target) { const FLOW = html.FLOW, FLEX = html.FLEX
|
layout: function(can, list, type, target) { const FLOW = html.FLOW, FLEX = html.FLEX
|
||||||
var count = 0, ui = {size: {}}; type = type||FLEX, target = target||can._output
|
var count = 0, ui = {size: {}}; type = type||FLEX, target = target||can._output
|
||||||
@ -405,7 +363,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
if (can.base.isObject(meta) && meta.layout) { meta.layout(h, width) }
|
if (can.base.isObject(meta) && meta.layout) { meta.layout(h, width) }
|
||||||
can.page.style(can, target, html.WIDTH, width), height -= h
|
can.page.style(can, target, html.WIDTH, width), height -= h
|
||||||
} else {
|
} else {
|
||||||
if (item == "project") {
|
if (item == html.PROJECT) {
|
||||||
var w = 230, h = height
|
var w = 230, h = height
|
||||||
} else {
|
} else {
|
||||||
var w = calc(item, target.offsetWidth||target.style.width||_width/list.length, _width), h = height
|
var w = calc(item, target.offsetWidth||target.style.width||_width/list.length, _width), h = height
|
||||||
@ -448,20 +406,16 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
} else {
|
} else {
|
||||||
can.runActionCommand(sub.request(event, {pod: meta.space}), sub._index, cmds, cb)
|
can.runActionCommand(sub.request(event, {pod: meta.space}), sub._index, cmds, cb)
|
||||||
}
|
}
|
||||||
}
|
}, sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip)
|
||||||
sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip)
|
|
||||||
}, target||can._output, field)
|
}, target||can._output, field)
|
||||||
},
|
},
|
||||||
_float: function(can, index, args, cb) { can.onappend.plugin(can, {index: index, args: args, mode: chat.FLOAT}, function(sub) {
|
_float: function(can, index, args, cb) { can.onappend.plugin(can, {index: index, args: args, mode: chat.FLOAT}, function(sub) {
|
||||||
can.getActionSize(function(left, top, width, height) {
|
sub.onmotion.float(sub), sub.onaction.close = function() { can.page.Remove(can, sub._target) }, cb && cb(sub)
|
||||||
sub.onimport.size(sub, sub.ConfHeight(height*3/4), sub.ConfWidth(width/2), true)
|
|
||||||
can.onmotion.move(can, sub._target, {left: width/2, top: height/4}), can.base.isFunc(cb) && cb(sub)
|
|
||||||
}), sub.onaction.close = function() { can.page.Remove(can, sub._target) }
|
|
||||||
}, can._root._target) },
|
}, can._root._target) },
|
||||||
figure: function(can, meta, target, cb) { if (meta.type == html.SELECT || meta.type == html.BUTTON) { return }
|
figure: function(can, meta, target, cb) { if (meta.type == html.SELECT || meta.type == html.BUTTON) { return }
|
||||||
var input = meta.action||mdb.KEY, path = chat.PLUGIN_INPUT+input+nfs._JS; can.require([path], function(can) {
|
var input = meta.action||mdb.KEY, path = chat.PLUGIN_INPUT+input+nfs._JS; can.require([path], function(can) {
|
||||||
function _cb(sub, value, old) { if (value == old) { return } target.value = value, can.base.isFunc(cb) && cb(sub, value, old) }
|
function _cb(sub, value, old) { if (value == old) { return } target.value = value, can.base.isFunc(cb) && cb(sub, value, old) }
|
||||||
target.onkeydown = function() { if (event.key == lang.ESCAPE && target._can) { return target._can.close(), target.blur() } else if (event.key == lang.ENTER) { can.base.isFunc(cb) && cb(event, target.value) } }
|
target.onkeydown = function() { if (event.key == code.ESCAPE && target._can) { return target._can.close(), target.blur() } else if (event.key == code.ENTER) { can.base.isFunc(cb) && cb(event, target.value) } }
|
||||||
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]||function() { }; target[key] = function(event) { can.misc.Event(event, can, function(msg) {
|
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]||function() { }; target[key] = function(event) { can.misc.Event(event, can, function(msg) {
|
||||||
function show(sub, cb) { can.base.isFunc(cb) && cb(sub, _cb), can.onlayout.figure(event, can, sub._target, false), can.onmotion.toggle(can, sub._target, true) }
|
function show(sub, cb) { can.base.isFunc(cb) && cb(sub, _cb), can.onlayout.figure(event, can, sub._target, false), can.onmotion.toggle(can, sub._target, true) }
|
||||||
can.core.CallFunc(on, {event: event, can: can, meta: meta, cb: _cb, target: target, sub: target._can, last: last, cbs: function(cb) {
|
can.core.CallFunc(on, {event: event, can: can, meta: meta, cb: _cb, target: target, sub: target._can, last: last, cbs: function(cb) {
|
||||||
@ -492,12 +446,11 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
|
|||||||
can.user.isMobile && can.user.isLandscape() || can.page.style(can, document.body, kit.Dict(html.OVERFLOW, html.HIDDEN))
|
can.user.isMobile && can.user.isLandscape() || can.page.style(can, document.body, kit.Dict(html.OVERFLOW, html.HIDDEN))
|
||||||
},
|
},
|
||||||
expand: function(can, target, width) { var n = parseInt(target.offsetWidth/(width+20)); width = target.offsetWidth/n - 20
|
expand: function(can, target, width) { var n = parseInt(target.offsetWidth/(width+20)); width = target.offsetWidth/n - 20
|
||||||
can.page.SelectChild(can, target, "*", function(target) { can.page.styleWidth(can, target, width) })
|
can.page.SelectChild(can, target, "", function(target) { can.page.styleWidth(can, target, width) })
|
||||||
},
|
},
|
||||||
background: function(can, url, target) { can.page.style(can, target||can._root._target, "background-image", url == "" || url == "void"? "": 'url("'+url+'")') },
|
background: function(can, url, target) { can.page.style(can, target||can._root._target, "background-image", url == "" || url == "void"? "": 'url("'+url+'")') },
|
||||||
figure: function(event, can, target, right, max) { if (!event || !event.target) { return {} } target = target||can._fields||can._target
|
figure: function(event, can, target, right, max) { if (!event || !event.target) { return {} } target = target||can._fields||can._target
|
||||||
var rect = event.target == document.body? {left: can.page.width()/2, top: can.page.height()/2, right: can.page.width()/2, bottom: can.page.height()/2}:
|
var rect = event.target == document.body? {left: can.page.width()/2, top: can.page.height()/2, right: can.page.width()/2, bottom: can.page.height()/2}: (event.currentTarget||event.target).getBoundingClientRect()
|
||||||
(event.currentTarget||event.target).getBoundingClientRect()
|
|
||||||
var layout = right? {left: rect.right, top: rect.top}: {left: rect.left, top: rect.bottom}
|
var layout = right? {left: rect.right, top: rect.top}: {left: rect.left, top: rect.bottom}
|
||||||
can.getActionSize(function(left, top, width, height) { left = left||0, top = top||0, height = can.base.Max(height, can.page.height()-top)
|
can.getActionSize(function(left, top, width, height) { left = left||0, top = top||0, height = can.base.Max(height, can.page.height()-top)
|
||||||
if (max && layout.top-top > height*max) {
|
if (max && layout.top-top > height*max) {
|
||||||
@ -534,9 +487,9 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
|||||||
if (event.metaKey) {
|
if (event.metaKey) {
|
||||||
if (item.innerText.indexOf(web.HTTP) == 0) { return can.user.open(item.innerText) }
|
if (item.innerText.indexOf(web.HTTP) == 0) { return can.user.open(item.innerText) }
|
||||||
if (item.innerText.indexOf("vim ") == 0) {
|
if (item.innerText.indexOf("vim ") == 0) {
|
||||||
can.onappend._float(can, web.CODE_VIMER, can.misc.SplitPath(can, item.innerText.split(" ")[1]), function() {})
|
can.onappend._float(can, web.CODE_VIMER, can.misc.SplitPath(can, item.innerText.split(" ")[1]))
|
||||||
} else {
|
} else {
|
||||||
meta.name == "shell" && can.onappend._float(can, web.CODE_XTERM, ["sh"], function() {})
|
meta.name == "shell" && can.onappend._float(can, web.CODE_XTERM, ["sh"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}) })
|
}) })
|
||||||
@ -576,8 +529,8 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
|||||||
modify: function(can, target, cb, item) { var back = target.innerHTML, _target = target
|
modify: function(can, target, cb, item) { var back = target.innerHTML, _target = target
|
||||||
if (back.length > 120 || back.indexOf(lex.NL) > -1) { return can.onmotion.modifys(can, target, cb) }
|
if (back.length > 120 || back.indexOf(lex.NL) > -1) { return can.onmotion.modifys(can, target, cb) }
|
||||||
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {width: can.base.Max(target.offsetWidth-20, 400)}, onkeydown: function(event) { switch (event.key) {
|
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {width: can.base.Max(target.offsetWidth-20, 400)}, onkeydown: function(event) { switch (event.key) {
|
||||||
case lang.ENTER: target.innerHTML = event.target.value, event.target.value == back || cb(event, event.target.value, back); break
|
case code.ENTER: target.innerHTML = event.target.value, event.target.value == back || cb(event, event.target.value, back); break
|
||||||
case lang.ESCAPE: target.innerHTML = back; break
|
case code.ESCAPE: target.innerHTML = back; break
|
||||||
default: can.onkeymap.input(event, can)
|
default: can.onkeymap.input(event, can)
|
||||||
} }, _init: function(target) { item && can.onappend.figure(can, item, target, function(event, value) {
|
} }, _init: function(target) { item && can.onappend.figure(can, item, target, function(event, value) {
|
||||||
can.base.isFunc(cb) && cb(event, value), _target.innerText = value
|
can.base.isFunc(cb) && cb(event, value), _target.innerText = value
|
||||||
@ -587,8 +540,8 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
|||||||
var ui = can.page.Appends(can, target, [{type: html.TEXTAREA, value: target.innerText, style: {
|
var ui = can.page.Appends(can, target, [{type: html.TEXTAREA, value: target.innerText, style: {
|
||||||
height: can.base.Min(target.offsetHeight-20, 60), width: can.base.Max(target.offsetWidth-20, 400),
|
height: can.base.Min(target.offsetHeight-20, 60), width: can.base.Max(target.offsetWidth-20, 400),
|
||||||
}, onkeydown: function(event) { switch (event.key) {
|
}, onkeydown: function(event) { switch (event.key) {
|
||||||
case lang.ENTER: if (event.ctrlKey) { target.innerHTML = event.target.value, event.target.value == back || cb(event, event.target.value, back) } break
|
case code.ENTER: if (event.ctrlKey) { target.innerHTML = event.target.value, event.target.value == back || cb(event, event.target.value, back) } break
|
||||||
case lang.ESCAPE: target.innerHTML = back; break
|
case code.ESCAPE: target.innerHTML = back; break
|
||||||
default: can.onkeymap.input(event, can)
|
default: can.onkeymap.input(event, can)
|
||||||
} }, _init: function(target) { item && can.onappend.figure(can, item, target), can.onmotion.focus(can, target), can.onmotion.delay(can, function() { target.click() }) }}])
|
} }, _init: function(target) { item && can.onappend.figure(can, item, target), can.onmotion.focus(can, target), can.onmotion.delay(can, function() { target.click() }) }}])
|
||||||
},
|
},
|
||||||
@ -614,16 +567,24 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
|||||||
var key = can.base.Time(null, "%H:%M:%S.%s"); list[key] = {}, list[key] = can.onmotion.delay(can, function() { list[key] && cb() }, interval)||{}
|
var key = can.base.Time(null, "%H:%M:%S.%s"); list[key] = {}, list[key] = can.onmotion.delay(can, function() { list[key] && cb() }, interval)||{}
|
||||||
},
|
},
|
||||||
delay: function(can, cb, interval, key) {
|
delay: function(can, cb, interval, key) {
|
||||||
if (!key) {
|
if (!key) { if (interval === 0) { return cb() }
|
||||||
if (interval === 0) {
|
|
||||||
return cb()
|
|
||||||
}
|
|
||||||
return can.core.Timer(interval||30, cb)
|
return can.core.Timer(interval||30, cb)
|
||||||
}
|
}
|
||||||
can._delay_list = can._delay_list||shy({}, [])
|
can._delay_list = can._delay_list||shy({}, [])
|
||||||
var last = can._delay_list.meta[key]||0, self = can._delay_list.meta[key] = can._delay_list.list.push(cb)
|
var last = can._delay_list.meta[key]||0, self = can._delay_list.meta[key] = can._delay_list.list.push(cb)
|
||||||
return can.core.Timer(interval||30, function() { cb(self, last, can._delay_list.meta[key]) })
|
return can.core.Timer(interval||30, function() { cb(self, last, can._delay_list.meta[key]) })
|
||||||
},
|
},
|
||||||
|
float: function(can) { var height = can.page.height()/2, width = can.page.width()*3/4
|
||||||
|
if (can.user.isMobile) {
|
||||||
|
if (can.user.isLandscape()) {
|
||||||
|
height = can.page.height()*3/4, width = can.page.width()*3/4
|
||||||
|
} else {
|
||||||
|
width = can.page.width()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
can.onimport.size(can, height, width, true)
|
||||||
|
can.onmotion.move(can, can._target, {left: can.page.width()-width, top: can.page.height()/4})
|
||||||
|
},
|
||||||
clear: function(can, target) { return can.page.Modify(can, target||can._output, ""), target },
|
clear: function(can, target) { return can.page.Modify(can, target||can._output, ""), target },
|
||||||
cache: function(can, next) { var list = can.base.getValid(can.base.Obj(can.core.List(arguments).slice(2)), [can._output])
|
cache: function(can, next) { var list = can.base.getValid(can.base.Obj(can.core.List(arguments).slice(2)), [can._output])
|
||||||
can.core.List(list, function(target) { target && target._cache_key && can.page.Cache(target._cache_key, target, target.scrollTop+1) })
|
can.core.List(list, function(target) { target && target._cache_key && can.page.Cache(target._cache_key, target, target.scrollTop+1) })
|
||||||
@ -695,7 +656,7 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
|
|||||||
} }), can.onkeymap._engine[item] = engine
|
} }), can.onkeymap._engine[item] = engine
|
||||||
}) },
|
}) },
|
||||||
_parse: function(event, can, mode, list, target) { list = list||[]
|
_parse: function(event, can, mode, list, target) { list = list||[]
|
||||||
if (event.metaKey && !can.user.isWebview) { return } if ([lang.META, lang.ALT, lang.CONTROL, lang.SHIFT].indexOf(event.key) > -1) { return list }
|
if (event.metaKey && !can.user.isWebview) { return } if ([code.META, code.ALT, code.CONTROL, code.SHIFT].indexOf(event.key) > -1) { return list }
|
||||||
list.push(event.key); for (var pre = 0; pre < list.length; pre++) { if ("0" <= list[pre] && list[pre] <= "9") { continue } break }
|
list.push(event.key); for (var pre = 0; pre < list.length; pre++) { if ("0" <= list[pre] && list[pre] <= "9") { continue } break }
|
||||||
var count = parseInt(list.slice(0, pre).join(""))||1, map = can.onkeymap._mode[mode]
|
var count = parseInt(list.slice(0, pre).join(""))||1, map = can.onkeymap._mode[mode]
|
||||||
function repeat(cb, count) { list = []; for (var i = 1; i <= count; i++) { if (can.core.CallFunc(cb, {event: event, can: can, target: target, count: count})) { break } } }
|
function repeat(cb, count) { list = []; for (var i = 1; i <= count; i++) { if (can.core.CallFunc(cb, {event: event, can: can, target: target, count: count})) { break } } }
|
||||||
@ -708,8 +669,8 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
|
|||||||
},
|
},
|
||||||
_mode: {
|
_mode: {
|
||||||
insert: {
|
insert: {
|
||||||
Escape: function(event, can, target) { if (event.key == lang.ESCAPE) { target.blur() } },
|
Escape: function(event, can, target) { if (event.key == code.ESCAPE) { target.blur() } },
|
||||||
Enter: function(event, can, target) { if (event.key != lang.ENTER) { return }
|
Enter: function(event, can, target) { if (event.key != code.ENTER) { return }
|
||||||
var his = target._history||[]; his.push(target.value), target._history = his, target._current = his.length
|
var his = target._history||[]; his.push(target.value), target._history = his, target._current = his.length
|
||||||
can.page.tagis(event.target, html.INPUT) && can.onmotion.focus(can, target)
|
can.page.tagis(event.target, html.INPUT) && can.onmotion.focus(can, target)
|
||||||
},
|
},
|
||||||
@ -765,10 +726,10 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
|
|||||||
}), can.onkeymap.selectCtrlN(event, can, target, html.DIV_ITEM+":not(.hide)", function(target) {
|
}), can.onkeymap.selectCtrlN(event, can, target, html.DIV_ITEM+":not(.hide)", function(target) {
|
||||||
target.click(), can.onmotion.focus(can, event.target)
|
target.click(), can.onmotion.focus(can, event.target)
|
||||||
})
|
})
|
||||||
if (event.key == lang.ENTER) { can.page.Select(can, target, html.DIV_ITEM+":not(.hide)")[0].click(), can.onmotion.focus(can, event.target) }
|
if (event.key == code.ENTER) { can.page.Select(can, target, html.DIV_ITEM+":not(.hide)")[0].click(), can.onmotion.focus(can, event.target) }
|
||||||
if (event.key == lang.ESCAPE) { event.target.blur() }
|
if (event.key == code.ESCAPE) { event.target.blur() }
|
||||||
},
|
},
|
||||||
selectInputs: function(event, can, cb, target) { if (can.page.ismodkey(event)) { return } if (event.key == lang.ESCAPE) { return target.blur() }
|
selectInputs: function(event, can, cb, target) { if (can.page.ismodkey(event)) { return } if (event.key == code.ESCAPE) { return target.blur() }
|
||||||
if (event.ctrlKey || can.base.isIn(event.key, "Tab", "ArrowUp", "ArrowDown")) { if (can.base.isUndefined(target._index)) { target._index = -1, target._value = target.value }
|
if (event.ctrlKey || can.base.isIn(event.key, "Tab", "ArrowUp", "ArrowDown")) { if (can.base.isUndefined(target._index)) { target._index = -1, target._value = target.value }
|
||||||
function select(order) { if (order == -1) { target.value = target._value }
|
function select(order) { if (order == -1) { target.value = target._value }
|
||||||
var index = 0; return can.page.Select(can, can._output, [html.TBODY, html.TR], function(tr) { if (can.page.ClassList.has(can, tr, html.HIDDEN)) { return }
|
var index = 0; return can.page.Select(can, can._output, [html.TBODY, html.TR], function(tr) { if (can.page.ClassList.has(can, tr, html.HIDDEN)) { return }
|
||||||
@ -777,7 +738,7 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
|
|||||||
} return tr
|
} return tr
|
||||||
}).length
|
}).length
|
||||||
}
|
}
|
||||||
var total = select(target._index), key = event.key; if (event.key == lang.TAB) { key = event.shiftKey? "p": "n" } switch (key) {
|
var total = select(target._index), key = event.key; if (event.key == code.TAB) { key = event.shiftKey? "p": "n" } switch (key) {
|
||||||
case "ArrowDown":
|
case "ArrowDown":
|
||||||
case "n": select(target._index = (target._index+2) % (total+1) - 1); break
|
case "n": select(target._index = (target._index+2) % (total+1) - 1); break
|
||||||
case "ArrowUp":
|
case "ArrowUp":
|
||||||
|
46
index.css
46
index.css
@ -27,7 +27,6 @@ input[name=offend] { width:80px; }
|
|||||||
input[name=id] { width:60px; }
|
input[name=id] { width:60px; }
|
||||||
input[name=url] { width:320px; }
|
input[name=url] { width:320px; }
|
||||||
input[name=cmd] { background-color:var(--code-bg-color); color:var(--code-fg-color); width:100%; }
|
input[name=cmd] { background-color:var(--code-bg-color); color:var(--code-fg-color); width:100%; }
|
||||||
div.item.text.cmd { color:var(--code-fg-color); }
|
|
||||||
table.content.full { width:100%; }
|
table.content.full { width:100%; }
|
||||||
table.content thead { position:sticky; top:2px; }
|
table.content thead { position:sticky; top:2px; }
|
||||||
table.content th { padding:5px; box-shadow: var(--box-shadow); }
|
table.content th { padding:5px; box-shadow: var(--box-shadow); }
|
||||||
@ -35,28 +34,22 @@ table.content td { padding:5px; }
|
|||||||
table.content.action th:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
|
table.content.action th:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
|
||||||
table.content.action td:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
|
table.content.action td:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
|
||||||
table.content col.time { width:180px; }
|
table.content col.time { width:180px; }
|
||||||
// table.content col.option { cursor:pointer; }
|
|
||||||
table.content col.action { width:180px; }
|
table.content col.action { width:180px; }
|
||||||
body:not(.windows) table.content { font-family:monospace; }
|
|
||||||
body:not(.windows) div.code { font-family:monospace; }
|
|
||||||
body:not(.windows) div.tabs { font-family:monospace; }
|
|
||||||
body:not(.windows) div.path { font-family:monospace; }
|
|
||||||
body:not(.windows) div.carte { font-family:monospace; }
|
|
||||||
fieldset.panel.Action.tabs table.content { width:100%; }
|
fieldset.panel.Action.tabs table.content { width:100%; }
|
||||||
h1 { text-align:center; margin:20px 0; } h2 { margin:20px 0; } h3 { margin:20px 0; }
|
h1 { text-align:center; margin:20px 0; } h2 { margin:20px 0; } h3 { margin:20px 0; }
|
||||||
hr, td.hr { border-bottom:var(--plugin-border-color) dashed 1px; margin:5px; }
|
hr, td.hr { border-bottom:var(--plugin-border-color) dashed 1px; margin:5px; }
|
||||||
ol, ul { margin-left:40px; }
|
ol, ul { margin-left:40px; }
|
||||||
p { margin:20px 0; }
|
|
||||||
a { color:var(--body-fg-color); }
|
a { color:var(--body-fg-color); }
|
||||||
|
p { margin:20px 0; }
|
||||||
kbd { padding:0 5px; }
|
kbd { padding:0 5px; }
|
||||||
img { margin-bottom:-8px; }
|
img { margin-bottom:-8px; }
|
||||||
/* fieldset */
|
/* fieldset */
|
||||||
fieldset>legend { margin-right:10px; box-shadow:var(--box-shadow); }
|
fieldset>legend { margin-right:10px; box-shadow:var(--box-shadow); }
|
||||||
|
fieldset>form.option>div.item:not(.icon) { margin-right:10px; }
|
||||||
fieldset>form.option>div.item:not(.icon) { box-shadow:var(--box-shadow); }
|
fieldset>form.option>div.item:not(.icon) { box-shadow:var(--box-shadow); }
|
||||||
fieldset>form.option>div.item.button { border-radius:5px; }
|
fieldset>form.option>div.item.button { border-radius:5px; }
|
||||||
fieldset>form.option>div.cmd { width:100%; }
|
fieldset>form.option>div.item.text.cmd { color:var(--code-fg-color); width:100%; }
|
||||||
fieldset>form.option>div.textarea { width:100%; }
|
fieldset>form.option>div.item.textarea { width:100%; }
|
||||||
fieldset>form.option>div.item:not(.icon) { margin-right:10px; }
|
|
||||||
fieldset>form.option>div.item.select>input { min-width:80px; }
|
fieldset>form.option>div.item.select>input { min-width:80px; }
|
||||||
fieldset>form.option>div.item.select { border-radius:5px; }
|
fieldset>form.option>div.item.select { border-radius:5px; }
|
||||||
fieldset>div.action>div.item.select { border-radius:5px; }
|
fieldset>div.action>div.item.select { border-radius:5px; }
|
||||||
@ -65,7 +58,6 @@ fieldset>div.action>div.item { margin-right:10px; box-shadow:var(--box-shadow);
|
|||||||
fieldset>div.output { width:100%; }
|
fieldset>div.output { width:100%; }
|
||||||
fieldset>div.output table.content input { margin-right:10px; box-shadow:var(--box-shadow); }
|
fieldset>div.output table.content input { margin-right:10px; box-shadow:var(--box-shadow); }
|
||||||
fieldset>div.status { width:100%; }
|
fieldset>div.status { width:100%; }
|
||||||
fieldset.cmd>div.status { height:31px; }
|
|
||||||
fieldset.input>legend { display:none; }
|
fieldset.input>legend { display:none; }
|
||||||
fieldset.input.key div.action { display:none; }
|
fieldset.input.key div.action { display:none; }
|
||||||
fieldset.input.key div.output table.content { width:100%; }
|
fieldset.input.key div.output table.content { width:100%; }
|
||||||
@ -132,7 +124,11 @@ body.en fieldset.input.date>div.action>div.item.select.month select { width:100p
|
|||||||
body.zh fieldset.input.date>div.action>div.item.select select { width:58px; }
|
body.zh fieldset.input.date>div.action>div.item.select select { width:58px; }
|
||||||
body.zh fieldset.input.date>div.action>div.item.select.year select { width:81px; }
|
body.zh fieldset.input.date>div.action>div.item.select.year select { width:81px; }
|
||||||
body.zh fieldset.input.date>div.action>div.item.select.month select { width:81px; }
|
body.zh fieldset.input.date>div.action>div.item.select.month select { width:81px; }
|
||||||
// body.zh input[type=button]:not(.select) { letter-spacing:5px; }
|
body:not(.windows) table.content { font-family:monospace; }
|
||||||
|
body:not(.windows) div.code { font-family:monospace; }
|
||||||
|
body:not(.windows) div.tabs { font-family:monospace; }
|
||||||
|
body:not(.windows) div.path { font-family:monospace; }
|
||||||
|
body:not(.windows) div.carte { font-family:monospace; }
|
||||||
/* icon */
|
/* icon */
|
||||||
legend>i:first-child { margin-right:10px; } div.item>i:first-child { margin-right:10px; }
|
legend>i:first-child { margin-right:10px; } div.item>i:first-child { margin-right:10px; }
|
||||||
form.option div.icon, form.option span.icon { font-size:20px; line-height:32px; padding:0 5px; margin:0; height:32px; }
|
form.option div.icon, form.option span.icon { font-size:20px; line-height:32px; padding:0 5px; margin:0; height:32px; }
|
||||||
@ -170,7 +166,6 @@ fieldset:not(.float)>form.option>div.text>span.value { display:none; }
|
|||||||
fieldset.float>form.option>div.text>input { display:none; }
|
fieldset.float>form.option>div.text>input { display:none; }
|
||||||
fieldset.float>form.option>div.text>span { display:none; }
|
fieldset.float>form.option>div.text>span { display:none; }
|
||||||
fieldset.float>form.option>div.text>span.value { white-space:pre; padding:7px; height:32px; max-width:200px; display:block; overflow:auto; }
|
fieldset.float>form.option>div.text>span.value { white-space:pre; padding:7px; height:32px; max-width:200px; display:block; overflow:auto; }
|
||||||
// fieldset.float>form.option>div.text>span.value { padding:7px; height:32px; display:block; overflow:auto; }
|
|
||||||
fieldset.float div.text:hover>span.icon.delete { visibility:hidden; }
|
fieldset.float div.text:hover>span.icon.delete { visibility:hidden; }
|
||||||
body.mobile:not(.landscape) fieldset.float>form.option>div.text>span.value { display:none; }
|
body.mobile:not(.landscape) fieldset.float>form.option>div.text>span.value { display:none; }
|
||||||
body.windows form.option>div.icon { font-size:21px; }
|
body.windows form.option>div.icon { font-size:21px; }
|
||||||
@ -203,16 +198,15 @@ div.project div.zone>div.item { text-align:center; padding:3px; }
|
|||||||
div.project div.zone>div.item>div.icon { margin-left:3px; float:right; }
|
div.project div.zone>div.item>div.icon { margin-left:3px; float:right; }
|
||||||
div.project div.zone>div.list>div.zone>div.item { text-align:left; padding-left:20px; }
|
div.project div.zone>div.list>div.zone>div.item { text-align:left; padding-left:20px; }
|
||||||
div.project div.zone>div.list>div.zone>div.item:hover { margin-left:10px; transition:all 0.3s; }
|
div.project div.zone>div.list>div.zone>div.item:hover { margin-left:10px; transition:all 0.3s; }
|
||||||
fieldset>div.output div.project { border-right:var(--box-border); width:230px; }
|
|
||||||
/* fieldset>div.output div.profile { border-left:var(--box-border); max-width:320px; } */
|
|
||||||
fieldset>div.output div.profile:not(.toggle) { border-left:var(--box-border); min-width:230px; }
|
|
||||||
fieldset>div.output div.display:not(.toggle) { border-top:var(--box-border); min-height:230px; }
|
|
||||||
div.content { position:relative; }
|
div.content { position:relative; }
|
||||||
div.content>div.toggle { position:absolute; }
|
div.content>div.toggle { position:absolute; }
|
||||||
div.content>div.toggle:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); cursor:pointer; }
|
div.content>div.toggle:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); cursor:pointer; }
|
||||||
div.content>div.toggle.project { top:20%; left:0; height:80px; width:unset; padding-top:25px; transform:scale(1, 3); border:none; }
|
div.content>div.toggle.project { top:20%; left:0; height:80px; width:unset; padding-top:25px; transform:scale(1, 3); border:none; }
|
||||||
div.content>div.toggle.profile { top:20%; right:0; height:80px; padding-top:25px; transform:scale(1, 3); border:none; }
|
div.content>div.toggle.profile { top:20%; right:0; height:80px; padding-top:25px; transform:scale(1, 3); border:none; }
|
||||||
div.content>div.toggle.display { left:20%; bottom:0; width:80px; text-align:center; transform:scale(3, 1); border:none; }
|
div.content>div.toggle.display { left:20%; bottom:0; width:80px; text-align:center; transform:scale(3, 1); border:none; }
|
||||||
|
div.project:not(.toggle) { border-right:var(--box-border); width:230px; }
|
||||||
|
div.profile:not(.toggle) { border-left:var(--box-border); min-width:230px; }
|
||||||
|
div.display:not(.toggle) { border-top:var(--box-border); }
|
||||||
/* table card */
|
/* table card */
|
||||||
div.output.card>div.item.stop { color:var(--disable-fg-color); }
|
div.output.card>div.item.stop { color:var(--disable-fg-color); }
|
||||||
div.output.card>div.item { padding:10px; border:var(--box-border); margin:10px; width:320px; float:left; box-shadow:var(--box-shadow); }
|
div.output.card>div.item { padding:10px; border:var(--box-border); margin:10px; width:320px; float:left; box-shadow:var(--box-shadow); }
|
||||||
@ -267,7 +261,6 @@ input:not([type=button]):focus { border:var(--input-border); outline:none; }
|
|||||||
textarea { background-color:var(--input-bg-color); color:var(--input-fg-color); }
|
textarea { background-color:var(--input-bg-color); color:var(--input-fg-color); }
|
||||||
table.content tr:hover { background-color:var(--tr-hover-bg-color); }
|
table.content tr:hover { background-color:var(--tr-hover-bg-color); }
|
||||||
table.content tr.select { background-color:var(--tr-hover-bg-color); }
|
table.content tr.select { background-color:var(--tr-hover-bg-color); }
|
||||||
// table.content tr:hover { background-color:var(--tr-hover-bg-color); color:var(--hover-fg-color); }
|
|
||||||
table.content th { background-color:var(--th-bg-color); color:var(--th-fg-color); }
|
table.content th { background-color:var(--th-bg-color); color:var(--th-fg-color); }
|
||||||
table.content td:hover { background-color:var(--td-hover-bg-color); }
|
table.content td:hover { background-color:var(--td-hover-bg-color); }
|
||||||
table.content td.select { background-color:var(--td-hover-bg-color); }
|
table.content td.select { background-color:var(--td-hover-bg-color); }
|
||||||
@ -276,7 +269,6 @@ h1:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color);
|
|||||||
h2:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
h2:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||||
h3:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
h3:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||||
kbd:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
kbd:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||||
/* kbd:hover { background-color:white; color:black; } */
|
|
||||||
samp:hover { background-color:white; color:black; }
|
samp:hover { background-color:white; color:black; }
|
||||||
div.item:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
div.item:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||||
div.item.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
div.item.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||||
@ -349,8 +341,8 @@ fieldset.cmd>div.item.usernick { line-height:22px; padding:5px 10px; float:right
|
|||||||
fieldset.plug>div.output table.content { width:100%; }
|
fieldset.plug>div.output table.content { width:100%; }
|
||||||
fieldset.location>div.action input[type=text] { width:40px; }
|
fieldset.location>div.action input[type=text] { width:40px; }
|
||||||
fieldset.config form.option input[name=key] { width:240px; }
|
fieldset.config form.option input[name=key] { width:240px; }
|
||||||
fieldset.inner.float>div.status { display:none; }
|
|
||||||
fieldset.qrcode>div.output div.code { padding:0; }
|
fieldset.qrcode>div.output div.code { padding:0; }
|
||||||
|
fieldset.inner.float>div.status { display:none; }
|
||||||
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
|
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
|
||||||
fieldset.xterm>div.layout { clear:both; }
|
fieldset.xterm>div.layout { clear:both; }
|
||||||
fieldset.xterm div.layout div.output { border-left:var(--box-border); border-top:var(--box-border); }
|
fieldset.xterm div.layout div.output { border-left:var(--box-border); border-top:var(--box-border); }
|
||||||
@ -358,7 +350,6 @@ fieldset.xterm div.layout div.output.select { border:var(--box-border)}
|
|||||||
fieldset.plan div.output div.content>table.content { height:100%; width:100%; }
|
fieldset.plan div.output div.content>table.content { height:100%; width:100%; }
|
||||||
fieldset.draw div.output svg { margin-bottom:-5px; }
|
fieldset.draw div.output svg { margin-bottom:-5px; }
|
||||||
fieldset.draw>form.option>div.item.pid>input { width:60px; }
|
fieldset.draw>form.option>div.item.pid>input { width:60px; }
|
||||||
// fieldset.draw div.output svg { margin-bottom:-4px; height:100%; width:100%; }
|
|
||||||
fieldset.draw.trend div.output svg { background-color:#1b5b738c; }
|
fieldset.draw.trend div.output svg { background-color:#1b5b738c; }
|
||||||
fieldset.draw.trend div.output { overflow:hidden; }
|
fieldset.draw.trend div.output { overflow:hidden; }
|
||||||
fieldset.draw.spide div.output { overflow:hidden; }
|
fieldset.draw.spide div.output { overflow:hidden; }
|
||||||
@ -371,12 +362,13 @@ img, iframe { margin-bottom:-3px; }
|
|||||||
iframe { height:420px; width:100%; }
|
iframe { height:420px; width:100%; }
|
||||||
/* scrollbar */
|
/* scrollbar */
|
||||||
div.scrollbar { background-color:#0000ff66; width:10px; position:absolute; right:0; top:0; transition:width .3s 1s; visibility:hidden; }
|
div.scrollbar { background-color:#0000ff66; width:10px; position:absolute; right:0; top:0; transition:width .3s 1s; visibility:hidden; }
|
||||||
div.scrollbar:hover { width:50px; transition:width .1s;}
|
div.scrollbar:hover { width:30px; transition:width .1s;}
|
||||||
fieldset.panel.Action>div.output::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
|
||||||
fieldset.panel.River>div.output::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
fieldset.panel.River>div.output::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
div.story[data-type=spark]::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
fieldset.panel.Action>div.output::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
|
form.option>div.text>span.value::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
|
div.status::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
div.project::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
div.project::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
div.content::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
div.content::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
div.carte::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
|
||||||
div.status::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
|
||||||
div.toggle::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
div.toggle::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
|
div.story[data-type=spark]::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
|
div.carte::-webkit-scrollbar { width:0 !important; height:0 !important; }
|
||||||
|
58
lib/core.js
58
lib/core.js
@ -4,14 +4,14 @@ Volcanos("core", {
|
|||||||
},
|
},
|
||||||
Keys: function() { var list = []
|
Keys: function() { var list = []
|
||||||
for (var i = 0; i < arguments.length; i++) { var v = arguments[i]; switch (typeof v) {
|
for (var i = 0; i < arguments.length; i++) { var v = arguments[i]; switch (typeof v) {
|
||||||
case lang.OBJECT: for (var j = 0; j < v.length; j++) { list.push(v[j]) } break
|
case code.OBJECT: for (var j = 0; j < v.length; j++) { list.push(v[j]) } break
|
||||||
case lang.NUMBER: list.push(v+""); break
|
case code.NUMBER: list.push(v+""); break
|
||||||
case lang.FUNCTION: v = v()
|
case code.FUNCTION: v = v()
|
||||||
default: v && list.push(v+"")
|
default: v && list.push(v+"")
|
||||||
} } return list.join(nfs.PT)
|
} } return list.join(nfs.PT)
|
||||||
},
|
},
|
||||||
Value: function(data, key, value) { if (data == undefined) { return } if (key == undefined) { return data }
|
Value: function(data, key, value) { if (data == undefined) { return } if (key == undefined) { return data }
|
||||||
if (typeof key == lang.OBJECT) { if (key.length != undefined) { key = key.join(nfs.PT) } else { for (var k in key) { arguments.callee.call(this, data, k, key[k]) } return data } }
|
if (typeof key == code.OBJECT) { if (key.length != undefined) { key = key.join(nfs.PT) } else { for (var k in key) { arguments.callee.call(this, data, k, key[k]) } return data } }
|
||||||
if (value != undefined) { var _node = data, keys = key.split(nfs.PT)
|
if (value != undefined) { var _node = data, keys = key.split(nfs.PT)
|
||||||
for (var i = 0; i < keys.length; i++) { var _next = _node[keys[i]]||{}; _node[keys[i]] = _next
|
for (var i = 0; i < keys.length; i++) { var _next = _node[keys[i]]||{}; _node[keys[i]] = _next
|
||||||
if (i < keys.length - 1) { _node = _next } else { _node[keys[i]] = value }
|
if (i < keys.length - 1) { _node = _next } else { _node[keys[i]] = value }
|
||||||
@ -22,29 +22,29 @@ Volcanos("core", {
|
|||||||
} return node == undefined? data[key]: node
|
} return node == undefined? data[key]: node
|
||||||
},
|
},
|
||||||
Split: function(str) { if (!str || !str.length) { return [] }
|
Split: function(str) { if (!str || !str.length) { return [] }
|
||||||
var opt = {detail: false}, arg = []; for (var i = 1; i < arguments.length; i++) { var v = arguments[i]; typeof v == lang.OBJECT? opt = v: arg.push(v) }
|
var opt = {detail: false}, arg = []; for (var i = 1; i < arguments.length; i++) { var v = arguments[i]; typeof v == code.OBJECT? opt = v: arg.push(v) }
|
||||||
function _list(str) { var res = {}; for (var i = 0; i < str.length; i++) { res[str[i]] = true }; return res }
|
function _list(str) { var res = {}; for (var i = 0; i < str.length; i++) { res[str[i]] = true }; return res }
|
||||||
var space = _list(arg[0]||"\t ,;\n") // 空白符
|
var space = _list(arg[0]||"\t ,;\n") // 空白符
|
||||||
var block = _list(arg[1]||"{[()]}") // 分隔符
|
var block = _list(arg[1]||"{[()]}") // 分隔符
|
||||||
var quote = _list(arg[2]||"'\"`") // 引用符
|
var quote = _list(arg[2]||"'\"`") // 引用符
|
||||||
var trans = _list(arg[3]||"\\") // 转义符
|
var trans = _list(arg[3]||"\\") // 转义符
|
||||||
var res = [], begin = 0; function push(obj) { obj && res.push(typeof obj == lang.STRING || opt.detail? obj: obj.text), begin = -1 }
|
var res = [], begin = 0; function push(obj) { obj && res.push(typeof obj == code.STRING || opt.detail? obj: obj.text), begin = -1 }
|
||||||
for (var s = "", i = 0; i < str.length; i++) {
|
for (var s = "", i = 0; i < str.length; i++) {
|
||||||
if (space[str[i]]) { if (s) { continue }
|
if (space[str[i]]) { if (s) { continue }
|
||||||
begin > -1 && push(str.slice(begin, i)), opt.detail && push({type: lang.SPACE, text: str.slice(i, i+1)})
|
begin > -1 && push(str.slice(begin, i)), opt.detail && push({type: code.SPACE, text: str.slice(i, i+1)})
|
||||||
} else if (block[str[i]]) { if (s) { continue }
|
} else if (block[str[i]]) { if (s) { continue }
|
||||||
begin > -1 && push(str.slice(begin, i)), push(str.slice(i, i+1))
|
begin > -1 && push(str.slice(begin, i)), push(str.slice(i, i+1))
|
||||||
} else if (quote[str[i]]) {
|
} else if (quote[str[i]]) {
|
||||||
if (s == "") {
|
if (s == "") {
|
||||||
begin > -1 && push(str.slice(begin, i)), s = str[i], begin = i+1
|
begin > -1 && push(str.slice(begin, i)), s = str[i], begin = i+1
|
||||||
} else if (s == str[i]) {
|
} else if (s == str[i]) {
|
||||||
push({type: lang.STRING, text: str.slice(begin, i), left: s, right: str[i]}), s = "", begin = -1
|
push({type: code.STRING, text: str.slice(begin, i), left: s, right: str[i]}), s = "", begin = -1
|
||||||
}
|
}
|
||||||
} else if (trans[str[i]]) { begin == -1 && (begin = i), i++
|
} else if (trans[str[i]]) { begin == -1 && (begin = i), i++
|
||||||
} else { begin == -1 && (begin = i) }
|
} else { begin == -1 && (begin = i) }
|
||||||
} return begin > -1 && (s? push({type: lang.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res
|
} return begin > -1 && (s? push({type: code.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res
|
||||||
},
|
},
|
||||||
SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item } type = type||html.TEXT; switch (item) {
|
SplitInput: function(item, type) { if (typeof item == code.OBJECT) { return item } type = type||html.TEXT; switch (item) {
|
||||||
case ice.RUN: return {type: html.BUTTON, name: item}
|
case ice.RUN: return {type: html.BUTTON, name: item}
|
||||||
case ice.LIST: return {type: html.BUTTON, name: item, action: ice.AUTO}
|
case ice.LIST: return {type: html.BUTTON, name: item, action: ice.AUTO}
|
||||||
case ice.BACK: return {type: html.BUTTON, name: item}
|
case ice.BACK: return {type: html.BUTTON, name: item}
|
||||||
@ -63,63 +63,63 @@ Volcanos("core", {
|
|||||||
} },
|
} },
|
||||||
CallFunc: function(func, args, mod) { args = args||{}; var can = args["can"]||args[0], msg = args["msg"]||args[1], cb = args["cb"]
|
CallFunc: function(func, args, mod) { args = args||{}; var can = args["can"]||args[0], msg = args["msg"]||args[1], cb = args["cb"]
|
||||||
if (Array.isArray(args)) { this.List(args, function(arg) { if (!arg) { return } if (arg.request && arg.run) { can = arg } else if (arg.Append && arg.Result) { msg = arg } else if (typeof arg == code.FUNCTION) { cb = arg } }) }
|
if (Array.isArray(args)) { this.List(args, function(arg) { if (!arg) { return } if (arg.request && arg.run) { can = arg } else if (arg.Append && arg.Result) { msg = arg } else if (typeof arg == code.FUNCTION) { cb = arg } }) }
|
||||||
func = typeof func == lang.FUNCTION? func: typeof func == lang.OBJECT && func.length > 0? this.Value(func[0], this.Keys(func.slice(1))): typeof func == lang.STRING? this.Value(mod||can, func): null
|
func = typeof func == code.FUNCTION? func: typeof func == code.OBJECT && func.length > 0? this.Value(func[0], this.Keys(func.slice(1))): typeof func == code.STRING? this.Value(mod||can, func): null
|
||||||
if (typeof func != lang.FUNCTION) { if (typeof cb == lang.FUNCTION) { cb() } return }
|
if (typeof func != code.FUNCTION) { if (typeof cb == code.FUNCTION) { cb() } return }
|
||||||
var list = [], echo = false; args.length > 0? list = args: this.List(func.toString().split(")")[0].split("(")[1].split(mdb.FS), function(item, index) { item = item.trim(); if (item == "") { return }
|
var list = [], echo = false; args.length > 0? list = args: this.List(func.toString().split(")")[0].split("(")[1].split(mdb.FS), function(item, index) { item = item.trim(); if (item == "") { return }
|
||||||
list.push(args[item] || msg&&msg.Option&&msg.Option(item) || can&&can.Conf&&can.Conf(item) || null); if (item == "cb") { echo = true }
|
list.push(args[item] || msg&&msg.Option&&msg.Option(item) || can&&can.Conf&&can.Conf(item) || null); if (item == "cb") { echo = true }
|
||||||
}); var res = func.apply(mod||can, list); if (msg && msg.Defer) { msg.Defer() }
|
}); var res = func.apply(mod||can, list); if (msg && msg.Defer) { msg.Defer() }
|
||||||
if (!echo && typeof cb == lang.FUNCTION) { res && msg&&msg.Echo&&msg.Echo(res), arguments.callee.apply(this, [cb, {msg: msg, res: res}]) } return res
|
if (!echo && typeof cb == code.FUNCTION) { res && msg&&msg.Echo&&msg.Echo(res), arguments.callee.apply(this, [cb, {msg: msg, res: res}]) } return res
|
||||||
},
|
},
|
||||||
List: function(list, cb, interval, cbs) {
|
List: function(list, cb, interval, cbs) {
|
||||||
if (typeof list == lang.STRING) { list = [list] } else if (typeof list == lang.NUMBER) { // [end cb interval]|[begin end interval]
|
if (typeof list == code.STRING) { list = [list] } else if (typeof list == code.NUMBER) { // [end cb interval]|[begin end interval]
|
||||||
var begin = 0, end = list, step = typeof interval == lang.NUMBER? interval: 1; if (typeof cb == lang.NUMBER) { begin = list, end = cb, cb = null }
|
var begin = 0, end = list, step = typeof interval == code.NUMBER? interval: 1; if (typeof cb == code.NUMBER) { begin = list, end = cb, cb = null }
|
||||||
list = []; for (var i = begin; i < end; i += step) { list.push(i) }
|
list = []; for (var i = begin; i < end; i += step) { list.push(i) }
|
||||||
} list = list||[]
|
} list = list||[]
|
||||||
if (interval > 0) {
|
if (interval > 0) {
|
||||||
function loop(i) { i >= list.length? typeof cbs == lang.FUNCTION && cbs(list): cb(list[i], i, list), setTimeout(function() { loop(i+1) }, interval) }
|
function loop(i) { i >= list.length? typeof cbs == code.FUNCTION && cbs(list): cb(list[i], i, list), setTimeout(function() { loop(i+1) }, interval) }
|
||||||
typeof cb == lang.FUNCTION && list.length > 0 && setTimeout(function() { loop(0) }, interval/4)
|
typeof cb == code.FUNCTION && list.length > 0 && setTimeout(function() { loop(0) }, interval/4)
|
||||||
} else { var res = []
|
} else { var res = []
|
||||||
for (var i = 0; i < list.length; i++) { var _res = typeof cb == lang.FUNCTION? cb(list[i], i, list): list[i]; _res != undefined && res.push(_res) }
|
for (var i = 0; i < list.length; i++) { var _res = typeof cb == code.FUNCTION? cb(list[i], i, list): list[i]; _res != undefined && res.push(_res) }
|
||||||
list = res
|
list = res
|
||||||
} return list
|
} return list
|
||||||
},
|
},
|
||||||
Next: function(list, cb, cbs) {
|
Next: function(list, cb, cbs) {
|
||||||
switch (typeof list) {
|
switch (typeof list) {
|
||||||
case lang.OBJECT: if (list == null) { list = []; break } if (list.length == undefined) { var ls = []; for (var k in list) { ls.push(k) } list = ls } break
|
case code.OBJECT: if (list == null) { list = []; break } if (list.length == undefined) { var ls = []; for (var k in list) { ls.push(k) } list = ls } break
|
||||||
default: if (list == undefined) { list = []; break } list = [list]
|
default: if (list == undefined) { list = []; break } list = [list]
|
||||||
}
|
}
|
||||||
function next(i) { i < list.length? typeof cb == lang.FUNCTION && cb(list[i], function() { next(i+1) }, i, list): typeof cbs == lang.FUNCTION && cbs(list) }
|
function next(i) { i < list.length? typeof cb == code.FUNCTION && cb(list[i], function() { next(i+1) }, i, list): typeof cbs == code.FUNCTION && cbs(list) }
|
||||||
return next(0), list
|
return next(0), list
|
||||||
},
|
},
|
||||||
Item: function(obj, cb) { var list = []
|
Item: function(obj, cb) { var list = []
|
||||||
for (var k in obj) { var res = typeof cb == lang.FUNCTION? cb(k, obj[k], list): k; res != undefined && list.push(res) }
|
for (var k in obj) { var res = typeof cb == code.FUNCTION? cb(k, obj[k], list): k; res != undefined && list.push(res) }
|
||||||
return list
|
return list
|
||||||
},
|
},
|
||||||
ItemKeys: function(obj, cb) { var list = [], keys = []; for (var k in obj) { keys.push(k) } keys.sort()
|
ItemKeys: function(obj, cb) { var list = [], keys = []; for (var k in obj) { keys.push(k) } keys.sort()
|
||||||
for (var i in keys) { var k = keys[i]; var res = typeof cb == lang.FUNCTION? cb(k, obj[k]): k; res != undefined && list.push(res) }
|
for (var i in keys) { var k = keys[i]; var res = typeof cb == code.FUNCTION? cb(k, obj[k]): k; res != undefined && list.push(res) }
|
||||||
return list
|
return list
|
||||||
},
|
},
|
||||||
ItemOrder: function(obj, key, cb) { var list = [], order = [], keys = {}, vals = {}, i = 0
|
ItemOrder: function(obj, key, cb) { var list = [], order = [], keys = {}, vals = {}, i = 0
|
||||||
for (var k in obj) { o = obj[k][key]||i++, order.push(o), keys[o] = k, vals[o] = obj[k] } order.sort()
|
for (var k in obj) { o = obj[k][key]||i++, order.push(o), keys[o] = k, vals[o] = obj[k] } order.sort()
|
||||||
for (var i in order) { var k = order[i], res = typeof cb == lang.FUNCTION? cb(keys[k], vals[k]): k; res != undefined && list.push(res) }
|
for (var i in order) { var k = order[i], res = typeof cb == code.FUNCTION? cb(keys[k], vals[k]): k; res != undefined && list.push(res) }
|
||||||
return list
|
return list
|
||||||
},
|
},
|
||||||
ItemForm: function(obj, cb) { var list = []
|
ItemForm: function(obj, cb) { var list = []
|
||||||
for (var k in obj) { list = list.concat(this.List(obj[k], function(v, i) { return typeof cb == lang.FUNCTION && cb(v, i, k, obj) })) }
|
for (var k in obj) { list = list.concat(this.List(obj[k], function(v, i) { return typeof cb == code.FUNCTION && cb(v, i, k, obj) })) }
|
||||||
return list
|
return list
|
||||||
},
|
},
|
||||||
ItemCB: function(meta, cb, can, item) { var list = []
|
ItemCB: function(meta, cb, can, item) { var list = []
|
||||||
for (var k in meta) { if (k.indexOf("on") == 0 && typeof meta[k] == lang.FUNCTION) { (function(k) { list.push(k)
|
for (var k in meta) { if (k.indexOf("on") == 0 && typeof meta[k] == code.FUNCTION) { (function(k) { list.push(k)
|
||||||
if (typeof cb == lang.FUNCTION) { cb(k, meta[k]) } else { cb[k] = function(event) { can.misc.Event(event, can, function(msg) {
|
if (typeof cb == code.FUNCTION) { cb(k, meta[k]) } else { cb[k] = function(event) { can.misc.Event(event, can, function(msg) {
|
||||||
meta[k](event, can, item)
|
meta[k](event, can, item)
|
||||||
}) } }
|
}) } }
|
||||||
})(k) } } return list
|
})(k) } } return list
|
||||||
},
|
},
|
||||||
Timer: shy("定时器, value, [1,2,3,4], {delay, interval, length}", function(interval, cb, cbs) { var timer = {stop: false}
|
Timer: shy("定时器, value, [1,2,3,4], {delay, interval, length}", function(interval, cb, cbs) { var timer = {stop: false}
|
||||||
function loop(i) { timer.stop || i >= interval.length && interval.length >= 0 || cb(timer, interval.interval||interval[i], i, interval)?
|
function loop(i) { timer.stop || i >= interval.length && interval.length >= 0 || cb(timer, interval.interval||interval[i], i, interval)?
|
||||||
typeof cbs == lang.FUNCTION && cbs(timer, interval): setTimeout(function() { loop(i+1) }, interval.interval||interval[i+1])
|
typeof cbs == code.FUNCTION && cbs(timer, interval): setTimeout(function() { loop(i+1) }, interval.interval||interval[i+1])
|
||||||
} interval = typeof interval == lang.OBJECT? interval: [interval]; if (interval.interval == 0) { return cb(), timer }
|
} interval = typeof interval == code.OBJECT? interval: [interval]; if (interval.interval == 0) { return cb(), timer }
|
||||||
var delay = interval.delay||interval.interval/2||interval[0]
|
var delay = interval.delay||interval.interval/2||interval[0]
|
||||||
return typeof cb == lang.FUNCTION && (timer._timer = setTimeout(function() { loop(0) }, delay)), timer
|
return typeof cb == code.FUNCTION && (timer._timer = setTimeout(function() { loop(0) }, delay)), timer
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
@ -71,7 +71,7 @@ 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) { !can.base.isIn(key, "log.caller") && msg[key] && (form[key] = msg[key]) })
|
var form = {cmds: cmds}; can.core.List(msg.option, function(key) { !can.base.isIn(key, "log.caller", "_handle", "_toast") && msg[key] && (form[key] = msg[key]) })
|
||||||
can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), ice.MSG_INDEX, _can._index), form, cb)
|
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, cbs) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr
|
POST: function(can, msg, url, form, cb, cbs) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr
|
||||||
|
28
lib/page.js
28
lib/page.js
@ -105,25 +105,25 @@ Volcanos("page", {
|
|||||||
} return value
|
} return value
|
||||||
}
|
}
|
||||||
function show(value, deep) { deep = deep == undefined? 2: 0; switch (typeof value) {
|
function show(value, deep) { deep = deep == undefined? 2: 0; switch (typeof value) {
|
||||||
case lang.OBJECT: if (!value) { return {} }
|
case code.OBJECT: if (!value) { return {} }
|
||||||
if (value._path) { return {value: "@\""+value._path+"\""} }
|
if (value._path) { return {value: "@\""+value._path+"\""} }
|
||||||
if (value.tagName) { return {type: nfs.TARGET, value: "$ "+value.tagName.toLowerCase()+(value.className? nfs.PT+value.className.replaceAll(lex.SP, nfs.PT):"")} }
|
if (value.tagName) { return {type: nfs.TARGET, value: "$ "+value.tagName.toLowerCase()+(value.className? nfs.PT+value.className.replaceAll(lex.SP, nfs.PT):"")} }
|
||||||
if (deep < 0) { return {value: value.length == undefined? "{"+can.page.unicode.inner+"}": "["+can.page.unicode.inner+"]"} }
|
if (deep < 0) { return {value: value.length == undefined? "{"+can.page.unicode.inner+"}": "["+can.page.unicode.inner+"]"} }
|
||||||
if (value.length != undefined) { return {value: (value.length > 3? value.length+lex.SP: "")+"["+can.core.List(value, function(value, index) { if (index < 6) { return short(show(value, deep-1).value, index+1) } }).join(mdb.FS)+"]"} }
|
if (value.length != undefined) { return {value: (value.length > 3? value.length+lex.SP: "")+"["+can.core.List(value, function(value, index) { if (index < 6) { return short(show(value, deep-1).value, index+1) } }).join(mdb.FS)+"]"} }
|
||||||
return {value: "{"+can.core.Item(value, function(key, val, list) { if (value.hasOwnProperty(key) && val && list.length < 7) { return short(key+nfs.DF+show(val, deep-1).value, list.length) } }).join(mdb.FS)+"}"}
|
return {value: "{"+can.core.Item(value, function(key, val, list) { if (value.hasOwnProperty(key) && val && list.length < 7) { return short(key+nfs.DF+show(val, deep-1).value, list.length) } }).join(mdb.FS)+"}"}
|
||||||
case lang.STRING: return {open: "s", close: "s", value: "\""+(deep == 2? value.replaceAll("\n", "\\n"): short(value))+"\""}
|
case code.STRING: return {open: "s", close: "s", value: "\""+(deep == 2? value.replaceAll("\n", "\\n"): short(value))+"\""}
|
||||||
case lang.NUMBER: return {open: "n", close: "n", value: value}
|
case code.NUMBER: return {open: "n", close: "n", value: value}
|
||||||
case lang.BOOLEAN: return {open: "b", close: "b", value: value}
|
case code.BOOLEAN: return {open: "b", close: "b", value: value}
|
||||||
case lang.FUNCTION: return {open: "f", close: "f", value: deep == 2? (""+value).split(lex.NL)[0]: "function(..) {..}"}
|
case code.FUNCTION: return {open: "f", close: "f", value: deep == 2? (""+value).split(lex.NL)[0]: "function(..) {..}"}
|
||||||
default: return {value: value}
|
default: return {value: value}
|
||||||
} } var loaded = false, _show = show(value); _show.open = _show.open||open, _show.close = _show.close||close
|
} } var loaded = false, _show = show(value); _show.open = _show.open||open, _show.close = _show.close||close
|
||||||
var ui = can.page.Append(can, target, [!key && value.tagName? can.page.AppendView(can, value): {view: [[html.ITEM, _show.type||typeof(value)], key == ""? html.SPAN: html.DIV], list: [
|
var ui = can.page.Append(can, target, [!key && value.tagName? can.page.AppendView(can, value): {view: [[html.ITEM, _show.type||typeof(value)], key == ""? html.SPAN: html.DIV], list: [
|
||||||
{view: [mdb.ICON, html.SPAN, _show.close+lex.SP]}, {view: [mdb.NAME, html.SPAN, key || key === 0? key+lex.SP: ""]}, {view: [mdb.VALUE, html.SPAN, _show.value]},
|
{view: [mdb.ICON, html.SPAN, _show.close+lex.SP]}, {view: [mdb.NAME, html.SPAN, key || key === 0? key+lex.SP: ""]}, {view: [mdb.VALUE, html.SPAN, _show.value]},
|
||||||
], onclick: function() { cb && cb(prefix, value); if (typeof value != lang.OBJECT) { return }
|
], onclick: function() { cb && cb(prefix, value); if (typeof value != code.OBJECT) { return }
|
||||||
ui.icon.innerText = (can.onmotion.toggle(can, ui.list)? _show.open: _show.close)+lex.SP
|
ui.icon.innerText = (can.onmotion.toggle(can, ui.list)? _show.open: _show.close)+lex.SP
|
||||||
if (loaded) { return } loaded = true, ui.icon.innerText = _show.open+lex.SP
|
if (loaded) { return } loaded = true, ui.icon.innerText = _show.open+lex.SP
|
||||||
if (value.tagName) { can.page.Append(can, ui.list, [can.page.AppendView(can, value)]), can.onappend.style(can, mdb.VIEW, ui.list)
|
if (value.tagName) { can.page.Append(can, ui.list, [can.page.AppendView(can, value)]), can.onappend.style(can, mdb.VIEW, ui.list)
|
||||||
can.core.List(can.core.Item(target, function(key, value) { if (["textContent", "innerHTML", "outerHTML"].indexOf(key) > -1 || typeof value == lang.FUNCTION || key.toUpperCase() == key) { return } return key }).sort(), function(key) {
|
can.core.List(can.core.Item(target, function(key, value) { if (["textContent", "innerHTML", "outerHTML"].indexOf(key) > -1 || typeof value == code.FUNCTION || key.toUpperCase() == key) { return } return key }).sort(), function(key) {
|
||||||
target[key] && can.page.AppendData(can, ui.list, can.core.Keys(prefix, key), key, target[key], cb)
|
target[key] && can.page.AppendData(can, ui.list, can.core.Keys(prefix, key), key, target[key], cb)
|
||||||
})
|
})
|
||||||
} else if (value.length != undefined) {
|
} else if (value.length != undefined) {
|
||||||
@ -210,7 +210,7 @@ Volcanos("page", {
|
|||||||
var list = ["<"+type]; for (var i = 2; i < arg.length; i += 2) { list.push(lex.SP+arg[i]+mdb.EQ+arg[i+1]) }
|
var list = ["<"+type]; for (var i = 2; i < arg.length; i += 2) { list.push(lex.SP+arg[i]+mdb.EQ+arg[i+1]) }
|
||||||
return list.concat(">", arg[1], "</", type, ">").join("")
|
return list.concat(">", arg[1], "</", type, ">").join("")
|
||||||
} },
|
} },
|
||||||
Color: function(text) { if (typeof text != lang.STRING) { return "" } text = text.replace(/\\n/g, "<br>")
|
Color: function(text) { if (typeof text != code.STRING) { return "" } text = text.replace(/\\n/g, "<br>")
|
||||||
if (text.indexOf(ice.HTTP) == 0 && text.length > 10) { var ls = text.split(lex.SP); text = "<a href='"+ls[0]+"' target='_blank'>"+ls[0]+"</a>"+ls.slice(1).join(lex.SP) }
|
if (text.indexOf(ice.HTTP) == 0 && text.length > 10) { var ls = text.split(lex.SP); text = "<a href='"+ls[0]+"' target='_blank'>"+ls[0]+"</a>"+ls.slice(1).join(lex.SP) }
|
||||||
if (text.indexOf("export ctx_dev=") == 0 && text.length > 10) {
|
if (text.indexOf("export ctx_dev=") == 0 && text.length > 10) {
|
||||||
return "<div class='story' data-type='spark' data-name='shell'><div>"+"<span>"+text+"</span>"+"</div></div>"
|
return "<div class='story' data-type='spark' data-name='shell'><div>"+"<span>"+text+"</span>"+"</div></div>"
|
||||||
@ -228,9 +228,9 @@ Volcanos("page", {
|
|||||||
text = text.replace(/\033\[m/g, "</span>")
|
text = text.replace(/\033\[m/g, "</span>")
|
||||||
return text
|
return text
|
||||||
},
|
},
|
||||||
Keys: function() { var list = []; /* FS SP GT PT */ for (var i = 0; i < arguments.length; i++) { var v = arguments[i]; if (typeof v == lang.OBJECT) {
|
Keys: function() { var list = []; /* FS SP GT PT */ for (var i = 0; i < arguments.length; i++) { var v = arguments[i]; if (typeof v == code.OBJECT) {
|
||||||
for (var j = 0; j < v.length; j++) { if (typeof v[j] == lang.OBJECT) {
|
for (var j = 0; j < v.length; j++) { if (typeof v[j] == code.OBJECT) {
|
||||||
for (var k = 0; k < v[j].length; k++) { if (typeof v[j][k] == lang.OBJECT) { v[j][k] = v[j][k].join(nfs.PT) } }
|
for (var k = 0; k < v[j].length; k++) { if (typeof v[j][k] == code.OBJECT) { v[j][k] = v[j][k].join(nfs.PT) } }
|
||||||
v[j] = v[j].join(ice.GT)
|
v[j] = v[j].join(ice.GT)
|
||||||
} } list.push(v.join(lex.SP))
|
} } list.push(v.join(lex.SP))
|
||||||
} else { list.push(v+"") } } return list.join(mdb.FS) },
|
} else { list.push(v+"") } } return list.join(mdb.FS) },
|
||||||
@ -251,7 +251,7 @@ Volcanos("page", {
|
|||||||
styleWidth: function(can, target, value) { return can.page.style(can, target, html.WIDTH, value), target.offsetWidth },
|
styleWidth: function(can, target, value) { return can.page.style(can, target, html.WIDTH, value), target.offsetWidth },
|
||||||
styleClass: function(can, target, value) { return can.page.Modify(can, target, {className: value}), target.className },
|
styleClass: function(can, target, value) { return can.page.Modify(can, target, {className: value}), target.className },
|
||||||
style: function(can, target, style) { var value = {}; for (var i = 2; i < arguments.length; i += 2) {
|
style: function(can, target, style) { var value = {}; for (var i = 2; i < arguments.length; i += 2) {
|
||||||
if (typeof arguments[i] == lang.OBJECT) { can.page.Modify(can, target, {style: arguments[i--]}) } else { value[arguments[i]] = arguments[i+1] }
|
if (typeof arguments[i] == code.OBJECT) { can.page.Modify(can, target, {style: arguments[i--]}) } else { value[arguments[i]] = arguments[i+1] }
|
||||||
} return can.page.Modify(can, target, {style: value}), value },
|
} return can.page.Modify(can, target, {style: value}), value },
|
||||||
tagis: function(target) { if (!target || !target.tagName) { return }
|
tagis: function(target) { if (!target || !target.tagName) { return }
|
||||||
var type = target.tagName.toLowerCase(); for (var i = 1; i < arguments.length; i++) { if (type == arguments[i]) { return true } }
|
var type = target.tagName.toLowerCase(); for (var i = 1; i < arguments.length; i++) { if (type == arguments[i]) { return true } }
|
||||||
@ -262,7 +262,7 @@ Volcanos("page", {
|
|||||||
draggable: function(can, item, ok) { item.setAttribute("draggable", ok) },
|
draggable: function(can, item, ok) { item.setAttribute("draggable", ok) },
|
||||||
height: function() { return window.innerHeight },
|
height: function() { return window.innerHeight },
|
||||||
width: function() { return window.innerWidth },
|
width: function() { return window.innerWidth },
|
||||||
ismodkey: function(event) { return [lang.META, lang.ALT, lang.CONTROL, lang.SHIFT].indexOf(event.key) > -1 },
|
ismodkey: function(event) { return [code.META, code.ALT, code.CONTROL, code.SHIFT].indexOf(event.key) > -1 },
|
||||||
unicode: {
|
unicode: {
|
||||||
menu: "☰", prev: "❮", next: "❯", play: "▸",
|
menu: "☰", prev: "❮", next: "❯", play: "▸",
|
||||||
push: "⇈", pull: "⇊", refresh: "↻", goback: "↺",
|
push: "⇈", pull: "⇊", refresh: "↻", goback: "↺",
|
||||||
@ -332,7 +332,7 @@ Volcanos("page", {
|
|||||||
var canvas = can.page.Create(can, html.CANVAS, {width: size, height: size}), ctx = canvas.getContext("2d")
|
var canvas = can.page.Create(can, html.CANVAS, {width: size, height: size}), ctx = canvas.getContext("2d")
|
||||||
ctx.fillStyle = colors[Math.floor(Math.random()*(colors.length))], ctx.fillRect(margin, margin, size-2*margin, size-2*margin)
|
ctx.fillStyle = colors[Math.floor(Math.random()*(colors.length))], ctx.fillRect(margin, margin, size-2*margin, size-2*margin)
|
||||||
ctx.fillStyle = cli.WHITE, ctx.font = (fonts||can.base.Min(size/text.length-30, 16))+"px Arial", ctx.textAlign = "center", ctx.textBaseline = "middle", ctx.fillText(text, size/2, size/2)
|
ctx.fillStyle = cli.WHITE, ctx.font = (fonts||can.base.Min(size/text.length-30, 16))+"px Arial", ctx.textAlign = "center", ctx.textBaseline = "middle", ctx.fillText(text, size/2, size/2)
|
||||||
return canvas.toDataURL(nfs.IMAGE_PNG, 1)
|
return canvas.toDataURL(web.IMAGE_PNG, 1)
|
||||||
},
|
},
|
||||||
position: function(event, target) { var p = target.getBoundingClientRect(); return {x: event.clientX - p.x, y: event.clientY - p.y} },
|
position: function(event, target) { var p = target.getBoundingClientRect(); return {x: event.clientX - p.x, y: event.clientY - p.y} },
|
||||||
theme: function(cb) {
|
theme: function(cb) {
|
||||||
|
@ -37,7 +37,7 @@ Volcanos("user", {
|
|||||||
},
|
},
|
||||||
alert: function(text) { alert(JSON.stringify(text)) },
|
alert: function(text) { alert(JSON.stringify(text)) },
|
||||||
confirm: function(text) { return confirm(JSON.stringify(text)) },
|
confirm: function(text) { return confirm(JSON.stringify(text)) },
|
||||||
prompt: function(tip, def, cb, silent) { (text = silent? def: prompt(tip, def||"")) != undefined && typeof cb == lang.FUNCTION && cb(text); return text },
|
prompt: function(tip, def, cb, silent) { (text = silent? def: prompt(tip, def||"")) != undefined && typeof cb == code.FUNCTION && cb(text); return text },
|
||||||
reload: function(force) { (force || confirm("重新加载页面?")) && location.reload() },
|
reload: function(force) { (force || confirm("重新加载页面?")) && location.reload() },
|
||||||
jumps: function(url) { location.href = url },
|
jumps: function(url) { location.href = url },
|
||||||
opens: function(url) {
|
opens: function(url) {
|
||||||
@ -141,7 +141,7 @@ Volcanos("user", {
|
|||||||
}) }
|
}) }
|
||||||
var ui = can.page.Append(can, document.body, [{view: [[chat.CARTE, meta._style||can.base.replaceAll(can._index||"", nfs.PT, lex.SP)||"", chat.FLOAT]], list: can.core.List(list, function(item, index) {
|
var ui = can.page.Append(can, document.body, [{view: [[chat.CARTE, meta._style||can.base.replaceAll(can._index||"", nfs.PT, lex.SP)||"", chat.FLOAT]], list: can.core.List(list, function(item, index) {
|
||||||
if (item == web.FILTER) {
|
if (item == web.FILTER) {
|
||||||
return {input: [html.FILTER, function(event) { if (event.key == lang.ESCAPE) { return carte.close() } can.onkeymap.selectItems(event, can, carte._target) }],
|
return {input: [html.FILTER, function(event) { if (event.key == code.ESCAPE) { return carte.close() } can.onkeymap.selectItems(event, can, carte._target) }],
|
||||||
_init: function(target) { can.onmotion.delay(can, function() { target.placeholder = "search in "+(can.core.List(list, function(item) { if (item) { return item } }).length-1)+" items", target.focus() }) }
|
_init: function(target) { can.onmotion.delay(can, function() { target.placeholder = "search in "+(can.core.List(list, function(item) { if (item) { return item } }).length-1)+" items", target.focus() }) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ Volcanos("user", {
|
|||||||
can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) { item.name && item.value && _msg.Option(item.name, item.value) })
|
can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) { item.name && item.value && _msg.Option(item.name, item.value) })
|
||||||
can.run(event, cmds, cb, true)
|
can.run(event, cmds, cb, true)
|
||||||
}, _enter: function(event) { return action.submit(event, can, html.SUBMIT), true }}, item), target)
|
}, _enter: function(event) { return action.submit(event, can, html.SUBMIT), true }}, item), target)
|
||||||
}, item.onkeydown = function(event) { if (event.key == lang.ESCAPE) { event.target.blur() } }
|
}, item.onkeydown = function(event) { if (event.key == code.ESCAPE) { event.target.blur() } }
|
||||||
return {type: html.TR, list: [
|
return {type: html.TR, list: [
|
||||||
{type: html.TD, list: [{text: [can.user.trans(can, item.name||"", item._trans), html.LABEL]}]}, {type: html.TD, list: [{text: item.need == "must"? "*": "", style: {color: cli.RED}}]},
|
{type: html.TD, list: [{text: [can.user.trans(can, item.name||"", item._trans), html.LABEL]}]}, {type: html.TD, list: [{text: item.need == "must"? "*": "", style: {color: cli.RED}}]},
|
||||||
{type: html.TD, list: [can.page.input(can, item), item.type == html.TEXT && {icon: "delete", onclick: function(event) { event.target.previousSibling.value = "" }}]},
|
{type: html.TD, list: [can.page.input(can, item), item.type == html.TEXT && {icon: "delete", onclick: function(event) { event.target.previousSibling.value = "" }}]},
|
||||||
|
@ -5,7 +5,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R
|
|||||||
sub.onaction._close = function() { can.onengine.signal(can, chat.ONACTION_REMOVE, can.request({river: river, storm: storm}, item)), can.page.Remove(can, sub._target) }
|
sub.onaction._close = function() { can.onengine.signal(can, chat.ONACTION_REMOVE, can.request({river: river, storm: storm}, item)), can.page.Remove(can, sub._target) }
|
||||||
sub.run = function(event, cmds, cb) { return can.run(event, (river == web.SHARE? [ctx.ACTION]: []).concat([river, storm, meta.id||meta.index], cmds), cb) }
|
sub.run = function(event, cmds, cb) { return can.run(event, (river == web.SHARE? [ctx.ACTION]: []).concat([river, storm, meta.id||meta.index], cmds), cb) }
|
||||||
})
|
})
|
||||||
}, function() { can.isCmdMode() || can.onmotion.delay(can, function() { can.onaction.layout(can)
|
}, function() { can.isCmdMode() || can.onmotion.delay(can, function() { can.onaction.layout(can), can.onappend.scroll(can, can._output)
|
||||||
can.onexport.layout(can) && list[0] == river && list[1] == storm && can.core.List(can._plugins, function(sub) { sub.Conf(ctx.INDEX) == list[2] && can.onmotion.delay(can, function() { sub._tabs.click() }) })
|
can.onexport.layout(can) && list[0] == river && list[1] == storm && can.core.List(can._plugins, function(sub) { sub.Conf(ctx.INDEX) == list[2] && can.onmotion.delay(can, function() { sub._tabs.click() }) })
|
||||||
}, 300) })
|
}, 300) })
|
||||||
},
|
},
|
||||||
@ -71,7 +71,7 @@ Volcanos(chat.ONACTION, {_init: function(can, target) {
|
|||||||
},
|
},
|
||||||
onkeydown: function(can, msg, model) {
|
onkeydown: function(can, msg, model) {
|
||||||
if (can.isCmdMode() && !msg._event.metaKey) {
|
if (can.isCmdMode() && !msg._event.metaKey) {
|
||||||
var sub = can.core.Value(can._plugins[0], chat._OUTPUTS_CURRENT); sub && can.core.CallFunc([sub, "onaction.onkeydown"], {event: msg._event, can: sub}); return
|
var sub = can._plugins[0].sub; sub && can.core.CallFunc([sub, "onaction.onkeydown"], {event: msg._event, can: sub}); return
|
||||||
}
|
}
|
||||||
if (can.onkeymap.selectCtrlN(msg._event, can, can._action, html.DIV_ITEM)) { return }
|
if (can.onkeymap.selectCtrlN(msg._event, can, can._action, html.DIV_ITEM)) { return }
|
||||||
can._keylist = can.onkeymap._parse(msg._event, can, model, can._keylist||[], can._output)
|
can._keylist = can.onkeymap._parse(msg._event, can, model, can._keylist||[], can._output)
|
||||||
|
@ -15,7 +15,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(NKEY, can.
|
|||||||
}) },
|
}) },
|
||||||
_toast: function(can, msg, target) { can.ui.toast = can.page.Append(can, target, [{view: [[html.ITEM, chat.TOAST]], onclick: function(event) { can.onexport[NTIP](can) }}])._target },
|
_toast: function(can, msg, target) { can.ui.toast = can.page.Append(can, target, [{view: [[html.ITEM, chat.TOAST]], onclick: function(event) { can.onexport[NTIP](can) }}])._target },
|
||||||
_command: function(can, msg, target) { can.onappend.input(can, {type: html.TEXT, icon: "bi bi-terminal", name: ice.CMD, onkeydown: function(event) { can.onkeymap.input(event, can)
|
_command: function(can, msg, target) { can.onappend.input(can, {type: html.TEXT, icon: "bi bi-terminal", name: ice.CMD, onkeydown: function(event) { can.onkeymap.input(event, can)
|
||||||
function close() { can.ui.cli && can.ui.cli.onaction.close() } if (event.key == lang.ESCAPE) { return close() } if (event.key != lang.ENTER) { return }
|
function close() { can.ui.cli && can.ui.cli.onaction.close() } if (event.key == code.ESCAPE) { return close() } if (event.key != code.ENTER) { return }
|
||||||
close(); switch (event.target.value) {
|
close(); switch (event.target.value) {
|
||||||
case cli.CLEAR:
|
case cli.CLEAR:
|
||||||
case cli.CLOSE: break
|
case cli.CLOSE: break
|
||||||
|
@ -20,7 +20,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
|||||||
},
|
},
|
||||||
_search: function(can, msg, target) {
|
_search: function(can, msg, target) {
|
||||||
can._search = can.onappend.input(can, {type: html.TEXT, icon: "bi bi-search", name: mdb.SEARCH, value: can.misc.Search(can, "_search"), onkeydown: function(event) { can.onkeymap.input(event, can)
|
can._search = can.onappend.input(can, {type: html.TEXT, icon: "bi bi-search", name: mdb.SEARCH, value: can.misc.Search(can, "_search"), onkeydown: function(event) { can.onkeymap.input(event, can)
|
||||||
event.key == lang.ENTER && can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event, {type: mdb.FOREACH, word: event.target.value||""}))
|
event.key == code.ENTER && can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event, {type: mdb.FOREACH, word: event.target.value||""}))
|
||||||
}}, "", target, [chat.TITLE])
|
}}, "", target, [chat.TITLE])
|
||||||
can.onimport.menu(can, mdb.SEARCH, function() { can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event, {type: mdb.FOREACH, word: can._search.value||""})) })
|
can.onimport.menu(can, mdb.SEARCH, function() { can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event, {type: mdb.FOREACH, word: can._search.value||""})) })
|
||||||
},
|
},
|
||||||
|
@ -24,8 +24,8 @@ Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list
|
|||||||
onsize: function(can, msg, height, width) { can.onimport._size(can), can.core.List(can._plugins, function(sub) { sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth(), true) }) },
|
onsize: function(can, msg, height, width) { can.onimport._size(can), can.core.List(can._plugins, function(sub) { sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth(), true) }) },
|
||||||
onlogin: function(can, msg) { can.ui = can.page.Append(can, can._output, [chat.CONTENT, {view: [[chat.DISPLAY, chat.CONTENT], html.TABLE]}, chat.PROFILE])
|
onlogin: function(can, msg) { can.ui = can.page.Append(can, can._output, [chat.CONTENT, {view: [[chat.DISPLAY, chat.CONTENT], html.TABLE]}, chat.PROFILE])
|
||||||
can.onappend._action(can, (can.Conf(html.ACTION)||can.onaction.list).concat({type: html.TEXT, name: html.FILTER, _init: function(target) { can.ui.filter = target }, onkeydown: function(event) {
|
can.onappend._action(can, (can.Conf(html.ACTION)||can.onaction.list).concat({type: html.TEXT, name: html.FILTER, _init: function(target) { can.ui.filter = target }, onkeydown: function(event) {
|
||||||
if (event.key == lang.ESCAPE) { return event.target.blur() }
|
if (event.key == code.ESCAPE) { return event.target.blur() }
|
||||||
if (event.key == lang.ENTER) { can.onkeymap.prevent(event); if (event.shiftKey) { return can.page.SelectOne(can, can.ui.content, [html.TBODY, html.TR, html.TD], function(target) { target.click() }) }
|
if (event.key == code.ENTER) { can.onkeymap.prevent(event); if (event.shiftKey) { return can.page.SelectOne(can, can.ui.content, [html.TBODY, html.TR, html.TD], function(target) { target.click() }) }
|
||||||
return event.ctrlKey? can.onaction.done(event, can): can.ui.input(event, event.target.value)
|
return event.ctrlKey? can.onaction.done(event, can): can.ui.input(event, event.target.value)
|
||||||
} if (event.ctrlKey) { return event.key == "0"? can.onaction.clear(event, can): can.onkeymap.selectCtrlN(event, can, can.ui.content, [html.TBODY, html.TR], function(target) { target.firstChild.click() }) }
|
} if (event.ctrlKey) { return event.key == "0"? can.onaction.clear(event, can): can.onkeymap.selectCtrlN(event, can, can.ui.content, [html.TBODY, html.TR], function(target) { target.firstChild.click() }) }
|
||||||
event.key.length == 1 && can.onmotion.delayOnce(can, function() { can.onmotion.tableFilter(can, can.ui.content, event.target.value) }, 100, can._delay_filter = can._delay_filter||[])
|
event.key.length == 1 && can.onmotion.delayOnce(can, function() { can.onmotion.tableFilter(can, can.ui.content, event.target.value) }, 100, can._delay_filter = can._delay_filter||[])
|
||||||
@ -56,7 +56,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list
|
|||||||
if (data.type == nfs.SHY) { meta = {index: web.WIKI_WORD, args: data.text} }
|
if (data.type == nfs.SHY) { meta = {index: web.WIKI_WORD, args: data.text} }
|
||||||
if (data.type == ice.CMD) { meta = {index: data.name, args: can.core.Split(data.text)} }
|
if (data.type == ice.CMD) { meta = {index: data.name, args: can.core.Split(data.text)} }
|
||||||
if (data.ctx == ice.NFS && data.cmd == nfs.PACK) { var ls = can.misc.SplitPath(can, data.text)
|
if (data.ctx == ice.NFS && data.cmd == nfs.PACK) { var ls = can.misc.SplitPath(can, data.text)
|
||||||
can.runAction(event, cli.RUN, [web.CODE_VIMER, ctx.ACTION, mdb.RENDER, data.type, ls[1], ls[0]], function(msg) { msg.Table(function(meta) {
|
can.runAction(event, ctx.RUN, [web.CODE_VIMER, ctx.ACTION, mdb.RENDER, data.type, ls[1], ls[0]], function(msg) { msg.Table(function(meta) {
|
||||||
can.onappend.plugin(can, meta, function(sub) { can._plugins = (can._plugins||[]).concat(sub), sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth()-1, true) }, can.ui.profile)
|
can.onappend.plugin(can, meta, function(sub) { can._plugins = (can._plugins||[]).concat(sub), sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth()-1, true) }, can.ui.profile)
|
||||||
}), can.onappend.board(can, msg.Result(), can.ui.profile) })
|
}), can.onappend.board(can, msg.Result(), can.ui.profile) })
|
||||||
return
|
return
|
||||||
|
@ -4,7 +4,7 @@ Volcanos(chat.ONACTION, {
|
|||||||
onclick: function(event, can) { can.Conf(mdb.TYPE) == html.BUTTON && can.run(event, [ctx.ACTION, can.Conf(mdb.NAME)].concat(can.sup.Input())), can.onkeymap.prevent(event) },
|
onclick: function(event, can) { can.Conf(mdb.TYPE) == html.BUTTON && can.run(event, [ctx.ACTION, can.Conf(mdb.NAME)].concat(can.sup.Input())), can.onkeymap.prevent(event) },
|
||||||
onchange: function(event, can) { can.Conf(mdb.TYPE) == html.SELECT && can.run(event) },
|
onchange: function(event, can) { can.Conf(mdb.TYPE) == html.SELECT && can.run(event) },
|
||||||
onkeydown: function(event, can) { can.onkeymap.input(event, can, event.target); if (can.Conf(mdb.TYPE) == html.TEXTAREA && !event.ctrlKey) { return }
|
onkeydown: function(event, can) { can.onkeymap.input(event, can, event.target); if (can.Conf(mdb.TYPE) == html.TEXTAREA && !event.ctrlKey) { return }
|
||||||
if (event.key == lang.ENTER) { return can.onkeymap.prevent(event), can.run(event), can.onmotion.focus(can, event.target) }
|
if (event.key == code.ENTER) { return can.onkeymap.prevent(event), can.run(event), can.onmotion.focus(can, event.target) }
|
||||||
if (!event.ctrlKey) { return } switch (event.key) {
|
if (!event.ctrlKey) { return } switch (event.key) {
|
||||||
case "m": can.CloneField(); break
|
case "m": can.CloneField(); break
|
||||||
case "b": can.CloneInput(); break
|
case "b": can.CloneInput(); break
|
||||||
|
@ -22,7 +22,7 @@ Volcanos(chat.ONFIGURE, {key: {
|
|||||||
}) },
|
}) },
|
||||||
onblur: function(event, can, sub, cb) { sub && can.onmotion.delay(can, sub.close, 300) },
|
onblur: function(event, can, sub, cb) { sub && can.onmotion.delay(can, sub.close, 300) },
|
||||||
onkeydown: function(event, can, meta, cb, target, sub, last) {
|
onkeydown: function(event, can, meta, cb, target, sub, last) {
|
||||||
if (event.key == lang.ENTER) { return meta._enter && (!can.page.tagis(event.target, html.TEXTAREA) || event.ctrlKey) && meta._enter(event, target.value)? sub.close(): last(event) }
|
if (event.key == code.ENTER) { return meta._enter && (!can.page.tagis(event.target, html.TEXTAREA) || event.ctrlKey) && meta._enter(event, target.value)? sub.close(): last(event) }
|
||||||
if (!sub) { return } sub.hidden() || can.onkeymap.selectCtrlN(event, can, sub._output, "tr:not(.hidden)>td:first-child", function(td) { return meta.select && (sub.close(), meta.select(target.value = td.innerText)), cb(sub, td.innerText, target.value), td })
|
if (!sub) { return } sub.hidden() || can.onkeymap.selectCtrlN(event, can, sub._output, "tr:not(.hidden)>td:first-child", function(td) { return meta.select && (sub.close(), meta.select(target.value = td.innerText)), cb(sub, td.innerText, target.value), td })
|
||||||
|| can.onmotion.delayOnce(can, function() { can.onkeymap.selectInputs(event, sub, function() { sub._load(event, sub, cb, target, meta.name) }, target) }, target.value.length < 3? 500: 150)
|
|| can.onmotion.delayOnce(can, function() { can.onkeymap.selectInputs(event, sub, function() { sub._load(event, sub, cb, target, meta.name) }, target) }, target.value.length < 3? 500: 150)
|
||||||
},
|
},
|
||||||
|
@ -12,15 +12,15 @@ Volcanos(chat.ONFIGURE, {keyboard: {
|
|||||||
switch (item.name) {
|
switch (item.name) {
|
||||||
case cli.CLEAR: target.value = "", target.focus(); break
|
case cli.CLEAR: target.value = "", target.focus(); break
|
||||||
case cli.CLOSE: can.close(); break
|
case cli.CLOSE: can.close(); break
|
||||||
case lang.ESC: can.close(); break
|
case code.ESC: can.close(); break
|
||||||
case lang.CTRL: can._ctrl = !can._ctrl, hold(); break
|
case code.CTRL: can._ctrl = !can._ctrl, hold(); break
|
||||||
case lang.SHIFT: can._shift = !can._shift, hold(); break
|
case code.SHIFT: can._shift = !can._shift, hold(); break
|
||||||
case lang.BACKSPACE: target.value = target.value.slice(0, -1), add(""); break
|
case code.BACKSPACE: target.value = target.value.slice(0, -1), add(""); break
|
||||||
case lang.ENTER: break
|
case code.ENTER: break
|
||||||
default: can._shift = can._shift||event.shiftKey
|
default: can._shift = can._shift||event.shiftKey
|
||||||
if (item.name == lang.TAB) {
|
if (item.name == code.TAB) {
|
||||||
add(lex.TB)
|
add(lex.TB)
|
||||||
} else if (item.name == lang.SPACE) {
|
} else if (item.name == code.SPACE) {
|
||||||
add(lex.SP)
|
add(lex.SP)
|
||||||
} else if (item.name.indexOf(lex.NL) > -1) { var ls = can.core.Split(item.name, lex.NL, lex.NL, lex.NL)
|
} else if (item.name.indexOf(lex.NL) > -1) { var ls = can.core.Split(item.name, lex.NL, lex.NL, lex.NL)
|
||||||
add(can._shift? ls[0]: ls[1])
|
add(can._shift? ls[0]: ls[1])
|
||||||
@ -41,12 +41,12 @@ Volcanos(chat.ONFIGURE, {keyboard: {
|
|||||||
}) }); return 150
|
}) }); return 150
|
||||||
},
|
},
|
||||||
_normal: function(can, msg) {
|
_normal: function(can, msg) {
|
||||||
can.core.List([[lang.ESC, "close", "clear"],
|
can.core.List([[code.ESC, "close", "clear"],
|
||||||
["~\n`", "!\n1", "@\n2", "#\n3", "$\n4", "%\n5", "^\n6", "&\n7", "*\n8", "(\n9", ")\n0", "_\n-", "+\n=", lang.BACKSPACE],
|
["~\n`", "!\n1", "@\n2", "#\n3", "$\n4", "%\n5", "^\n6", "&\n7", "*\n8", "(\n9", ")\n0", "_\n-", "+\n=", code.BACKSPACE],
|
||||||
[lang.TAB, "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "{\n[", "}\n]", "|\n\\"],
|
[code.TAB, "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "{\n[", "}\n]", "|\n\\"],
|
||||||
[lang.CTRL, "a", "s", "d", "f", "g", "h", "j", "k", "l", ":\n;", "\"\n'", lang.ENTER],
|
[code.CTRL, "a", "s", "d", "f", "g", "h", "j", "k", "l", ":\n;", "\"\n'", code.ENTER],
|
||||||
[lang.SHIFT, "z", "x", "c", "v", "b", "n", "m", "<\n,", ">\n.", "?\n/", lang.SHIFT],
|
[code.SHIFT, "z", "x", "c", "v", "b", "n", "m", "<\n,", ">\n.", "?\n/", code.SHIFT],
|
||||||
[lang.CTRL, lang.CMD, lang.ALT, lang.SPACE, lang.ALT, lang.CMD, lang.CTRL],
|
[code.CTRL, code.CMD, code.ALT, code.SPACE, code.ALT, code.CMD, code.CTRL],
|
||||||
], function(list) { can.core.List(list, function(item, index) {
|
], function(list) { can.core.List(list, function(item, index) {
|
||||||
msg.Push(can.base.isObject(item)? item: {type: [mdb.KEY, index == 0? html.HEAD: index == list.length-1? "tail": ""].join(lex.SP), name: item})
|
msg.Push(can.base.isObject(item)? item: {type: [mdb.KEY, index == 0? html.HEAD: index == list.length-1? "tail": ""].join(lex.SP), name: item})
|
||||||
}) }); return 750
|
}) }); return 750
|
||||||
|
@ -13,7 +13,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onmotion.clear(can)
|
|||||||
_input: function(can, item, data, target) { item = can.base.isObject(item)? item: {type: html.BUTTON, name: item}
|
_input: function(can, item, data, target) { item = can.base.isObject(item)? item: {type: html.BUTTON, name: item}
|
||||||
if (can.base.isArray(item)) { return can.page.Append(can, target, [{view: "space"}]), can.core.List(item, function(item) { can.onimport._input(can, item, data, target) }) }
|
if (can.base.isArray(item)) { return can.page.Append(can, target, [{view: "space"}]), can.core.List(item, function(item) { can.onimport._input(can, item, data, target) }) }
|
||||||
item._init = item._init||function(target) { switch (target.type) {
|
item._init = item._init||function(target) { switch (target.type) {
|
||||||
case html.TEXT: target.onkeydown = function(event) { can.misc.Event(event, can, function(msg) { if (event.key == lang.ENTER) {
|
case html.TEXT: target.onkeydown = function(event) { can.misc.Event(event, can, function(msg) { if (event.key == code.ENTER) {
|
||||||
can.runAction(can.request(event, data), web.SPACE, [ctx.ACTION, item.name, target.value], function() {})
|
can.runAction(can.request(event, data), web.SPACE, [ctx.ACTION, item.name, target.value], function() {})
|
||||||
} })}; break
|
} })}; break
|
||||||
case html.BUTTON: target.onclick = function(event) { can.misc.Event(event, can, function(msg) {
|
case html.BUTTON: target.onclick = function(event) { can.misc.Event(event, can, function(msg) {
|
||||||
|
@ -12,7 +12,8 @@ fieldset.inner>div.output div.content td.text span.constant { color:var(--code-c
|
|||||||
fieldset.inner>div.output div.content td.text span.string { color:var(--code-string); box-shadow:var(--box-shadow); }
|
fieldset.inner>div.output div.content td.text span.string { color:var(--code-string); box-shadow:var(--box-shadow); }
|
||||||
fieldset.inner>div.output div.content td.text span.object { color:var(--code-object); }
|
fieldset.inner>div.output div.content td.text span.object { color:var(--code-object); }
|
||||||
fieldset.inner>div.output>div.project { width:230px; flex:0 0 230px; box-shadow:var(--box-shadow); }
|
fieldset.inner>div.output>div.project { width:230px; flex:0 0 230px; box-shadow:var(--box-shadow); }
|
||||||
fieldset.inner>div.output>div.project * { font-size:14px; font-family:monospace; outline:none; }
|
// fieldset.inner>div.output>div.project * { font-size:14px; font-family:monospace; outline:none; }
|
||||||
|
body:not(.windows) fieldset.inner>div.output>div.project * { font-size:14px; font-family:monospace; outline:none; }
|
||||||
fieldset.inner>div.output>div.project div.action { width:100%; }
|
fieldset.inner>div.output>div.project div.action { width:100%; }
|
||||||
fieldset.inner>div.output>div.project input[type=text] { box-shadow:none; }
|
fieldset.inner>div.output>div.project input[type=text] { box-shadow:none; }
|
||||||
fieldset.inner>div.output>div.project div.zone>div.item span.icon { font-size:20px; line-height:16px; padding:0 5px; float:right; display:none; }
|
fieldset.inner>div.output>div.project div.zone>div.item span.icon { font-size:20px; line-height:16px; padding:0 5px; float:right; display:none; }
|
||||||
|
@ -21,19 +21,17 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
|||||||
case chat.CMD: can.onappend.style(can, html.OUTPUT)
|
case chat.CMD: can.onappend.style(can, html.OUTPUT)
|
||||||
can.onexport.session(can, PROJECT_HIDE) == html.HIDE && can.onmotion.hidden(can, can.ui.project)
|
can.onexport.session(can, PROJECT_HIDE) == html.HIDE && can.onmotion.hidden(can, can.ui.project)
|
||||||
if (can.onexport.session(can, TABVIEW_HIDE) == html.HIDE) { can.onmotion.hidden(can, can.ui.project), can.onmotion.hidden(can, can.ui.tabs) }
|
if (can.onexport.session(can, TABVIEW_HIDE) == html.HIDE) { can.onmotion.hidden(can, can.ui.project), can.onmotion.hidden(can, can.ui.tabs) }
|
||||||
can.onengine.listen(can, chat.ONUNLOAD, function() {
|
can.onengine.listen(can, chat.ONUNLOAD, function() { can.onexport.recover(can) })
|
||||||
can.onexport.recover(can)
|
|
||||||
})
|
|
||||||
case chat.FULL: // no break
|
case chat.FULL: // no break
|
||||||
default: can.user.isMobile && can.onmotion.hidden(can, can.ui.project), can.onimport.project(can, paths), can.onimport._tabs(can)
|
default: can.user.isMobile && can.onmotion.hidden(can, can.ui.project), can.onimport.project(can, paths), can.onimport._tabs(can)
|
||||||
} var args = can.misc.SearchHash(can), tabs = can.onexport.session(can, RECOVER_TABS), tool = can.onexport.session(can, RECOVER_TOOL)
|
} var args = can.misc.SearchHash(can), tabs = can.onexport.session(can, RECOVER_TABS), tool = can.onexport.session(can, RECOVER_TOOL)
|
||||||
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE), function() { if (!can.isCmdMode()) { return }
|
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE), function() { if (!can.isCmdMode()) { return }
|
||||||
if (tabs) {
|
if (tabs) {
|
||||||
can.core.Next(tabs, function(item, next) { can.onimport.tabview(can, item[0], item[1], item[2], next) }, function() {
|
can.core.Next(tabs, function(item, next) { can.onimport.tabview(can, item[0], item[1], item[2], next) }, function() {
|
||||||
args.length > 0 && can.onimport._tabview(can, args[args.length-3], args[args.length-2]||can.Option(nfs.FILE), args[args.length-1])
|
args.length > 0 && can.onimport.tabview(can, args[args.length-3], args[args.length-2]||can.Option(nfs.FILE), args[args.length-1])
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
args.length > 0 && can.onimport._tabview(can, args[args.length-3], args[args.length-2]||can.Option(nfs.FILE), args[args.length-1])
|
args.length > 0 && can.onimport.tabview(can, args[args.length-3], args[args.length-2]||can.Option(nfs.FILE), args[args.length-1])
|
||||||
}
|
}
|
||||||
tool && can.core.Next(tool, function(item, next) { can.onimport.toolkit(can, item, next) })
|
tool && can.core.Next(tool, function(item, next) { can.onimport.toolkit(can, item, next) })
|
||||||
}), can.onkeymap._build(can)
|
}), can.onkeymap._build(can)
|
||||||
@ -65,9 +63,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
|||||||
}); var index = args[0]
|
}); var index = args[0]
|
||||||
can.core.List(args.slice(1), function(val) { can.page.Append(can, target, [{text: [val, "", html.ITEM], onclick: function(event) {
|
can.core.List(args.slice(1), function(val) { can.page.Append(can, target, [{text: [val, "", html.ITEM], onclick: function(event) {
|
||||||
can.runAction(can.request(event, {index: index}), mdb.INPUTS, [ctx.ARGS], function(msg) {
|
can.runAction(can.request(event, {index: index}), mdb.INPUTS, [ctx.ARGS], function(msg) {
|
||||||
can.user.carte(event, can, {}, msg[msg.append[0]], function(event, button) {
|
can.user.carte(event, can, {}, msg[msg.append[0]], function(event, button) { can.onimport.tabview(can, "", [index, button].join(mdb.FS), ctx.INDEX) })
|
||||||
can.onimport.tabview(can, "", [index, button].join(mdb.FS), ctx.INDEX)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}}]) })
|
}}]) })
|
||||||
},
|
},
|
||||||
@ -116,10 +112,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
|
|||||||
"\u271A": shy({"font-size": "20px", translate: "0 2px"}, function(event) { can.onaction.open(event, can) }),
|
"\u271A": shy({"font-size": "20px", translate: "0 2px"}, function(event) { can.onaction.open(event, can) }),
|
||||||
}, function(text, cb) { return cb && {text: [text, html.SPAN, html.VIEW], style: cb.meta, onclick: cb} }))
|
}, function(text, cb) { return cb && {text: [text, html.SPAN, html.VIEW], style: cb.meta, onclick: cb} }))
|
||||||
},
|
},
|
||||||
_tabview: function(can, path, file, line, cb) { var key = can.onexport.keys(can, path, file)
|
|
||||||
if (!can.user.isWebview) { return can.onimport.tabview(can, path, file, line, cb) }
|
|
||||||
if (!can.db.tabview[key]) { return can.onimport.tabview(can, path, file, line, cb), can.db.tabview[key] = true }
|
|
||||||
},
|
|
||||||
tabview: function(can, path, file, line, cb) { path = path||can.Option(nfs.PATH); var key = can.onexport.keys(can, path, file)
|
tabview: function(can, path, file, line, cb) { path = path||can.Option(nfs.PATH); var key = can.onexport.keys(can, path, file)
|
||||||
function isIndex() { return line == ctx.INDEX } function isSpace() { return line == web.SPACE }
|
function isIndex() { return line == ctx.INDEX } function isSpace() { return line == web.SPACE }
|
||||||
function show(skip) { can._msg && can._msg.Option && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.db.tabview[key]
|
function show(skip) { can._msg && can._msg.Option && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.db.tabview[key]
|
||||||
@ -504,8 +496,8 @@ Volcanos(chat.ONACTION, {
|
|||||||
can.onappend.figure(can, {action: "key", mode: chat.SIMPLE, _enter: function(event) {
|
can.onappend.figure(can, {action: "key", mode: chat.SIMPLE, _enter: function(event) {
|
||||||
if (event.ctrlKey) { meta.grep() } else { meta[button](), can.onmotion.delay(can, function() { target.focus() }) } return true
|
if (event.ctrlKey) { meta.grep() } else { meta[button](), can.onmotion.delay(can, function() { target.focus() }) } return true
|
||||||
}, run: function(event, cmds, cb) { var msg = can.request(event); can.core.List(can.core.Split(can.current.text(), "\t {([,:;=<>])}", {detail: true}), function(value) {
|
}, run: function(event, cmds, cb) { var msg = can.request(event); can.core.List(can.core.Split(can.current.text(), "\t {([,:;=<>])}", {detail: true}), function(value) {
|
||||||
if (can.base.isObject(value)) { if (value.type == lang.SPACE) { return }
|
if (can.base.isObject(value)) { if (value.type == code.SPACE) { return }
|
||||||
value.type == lang.STRING && msg.Push(mdb.VALUE, value.left+value.text+value.right), msg.Push(mdb.VALUE, value.text)
|
value.type == code.STRING && msg.Push(mdb.VALUE, value.left+value.text+value.right), msg.Push(mdb.VALUE, value.text)
|
||||||
} else {
|
} else {
|
||||||
value.indexOf(nfs.PT) > -1 && msg.Push(mdb.VALUE, value.split(nfs.PT).pop()), msg.Push(mdb.VALUE, value)
|
value.indexOf(nfs.PT) > -1 && msg.Push(mdb.VALUE, value.split(nfs.PT).pop()), msg.Push(mdb.VALUE, value)
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireModules
|
|||||||
term.onCursorMove(function() { can.onexport.term(can, term) })
|
term.onCursorMove(function() { can.onexport.term(can, term) })
|
||||||
term.loadAddon(new WebLinksAddon.WebLinksAddon())
|
term.loadAddon(new WebLinksAddon.WebLinksAddon())
|
||||||
can.onmotion.clear(can, output), term.open(output), term.focus()
|
can.onmotion.clear(can, output), term.open(output), term.focus()
|
||||||
can.onengine.listen(can, chat.ONTHEMECHANGE, function() { can = can.core.Value(can.sup, chat._OUTPUTS_CURRENT)
|
can.onengine.listen(can, chat.ONTHEMECHANGE, function() {
|
||||||
term.selectAll(), can.onimport._connect(can, item, output, tabs, can.base.trimSuffix(term.getSelection(), lex.NL))
|
term.selectAll(), can.onimport._connect(can, item, output, tabs, can.base.trimSuffix(term.getSelection(), lex.NL))
|
||||||
}), can.onimport._recover(can, item, term, text)
|
}), can.onimport._recover(can, item, term, text)
|
||||||
can.page.style(can, output, html.BACKGROUND_COLOR, term._publicOptions.theme.background||cli.BLACK)
|
can.page.style(can, output, html.BACKGROUND_COLOR, term._publicOptions.theme.background||cli.BLACK)
|
||||||
|
@ -17,7 +17,7 @@ fieldset.word>div.output svg.story[data-index] text { cursor:pointer; }
|
|||||||
fieldset.word>div.output input.story[type=button] { font-family:system-ui; font-weight:bold; padding:20px 40px; margin:10px; height:64px; box-shadow:var(--box-shadow); }
|
fieldset.word>div.output input.story[type=button] { font-family:system-ui; font-weight:bold; padding:20px 40px; margin:10px; height:64px; box-shadow:var(--box-shadow); }
|
||||||
fieldset.word>div.output fieldset.web.code.inner.output div.output td.line { border-right:var(--box-border); }
|
fieldset.word>div.output fieldset.web.code.inner.output div.output td.line { border-right:var(--box-border); }
|
||||||
fieldset.word>div.output fieldset.story { margin:20px 0; }
|
fieldset.word>div.output fieldset.story { margin:20px 0; }
|
||||||
fieldset.word>div.output fieldset.story>form.option>div.icon.delete { display:none; }
|
fieldset.word>div.output fieldset.story:not(.float)>form.option>div.icon.delete { display:none; }
|
||||||
|
|
||||||
fieldset.word>div.navmenu { background-color:inherit; overflow:auto; min-width:120px; clear:both; float:left; }
|
fieldset.word>div.navmenu { background-color:inherit; overflow:auto; min-width:120px; clear:both; float:left; }
|
||||||
fieldset.word>div.navmenu div.list { margin-left:20px; }
|
fieldset.word>div.navmenu div.list { margin-left:20px; }
|
||||||
|
154
plugin/state.js
154
plugin/state.js
@ -13,83 +13,51 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
_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, cb) { var height = can.ConfHeight(), width = can.ConfWidth(); can.page.SelectChild(can, can._output, can.page.Keys(html.TABLE, html.DIV_CODE), function(target) { height -= target.offsetHeight })
|
_field: function(can, msg, cb) { var height = can.ConfHeight(), width = can.ConfWidth(); can.page.SelectChild(can, can._output, can.page.Keys(html.TABLE, html.DIV_CODE), function(target) { height -= target.offsetHeight })
|
||||||
height = can.base.Min(msg.Option(html.HEIGHT)||height, can.isCmdMode()? can.ConfHeight()/2: 320), width = msg.Option(html.WIDTH)||can.ConfWidth()
|
height = can.base.Min(msg.Option(html.HEIGHT)||height, can.isCmdMode()? can.ConfHeight()/2: 320), width = msg.Option(html.WIDTH)||can.ConfWidth()
|
||||||
msg.Table(function(item) { can.onappend._plugin(can, item, {index: item.index, args: can.base.Obj(item.args||item.arg, []), height: height, width: width}, function(sub, meta) {
|
msg.Table(function(item) { can.onappend._plugin(can, item, {index: item.index, args: can.base.Obj(item.args||item.arg, []), height: height, width: width}, function(sub) {
|
||||||
sub.Conf(can.base.Obj(item.conf)); if (sub.isSimpleMode()) { sub.ConfHeight(can.ConfHeight()/2)
|
sub.run = function(event, cmds, cb) { var index = msg.Option(ice.MSG_INDEX)
|
||||||
var res = can.request(); res.Echo(sub.Conf(ice.MSG_RESULT)), can.onappend._output(sub, res, sub.Conf(ctx.DISPLAY)); return
|
can.run(event, (!index || index == can._index || index.indexOf("can.") == 0? msg[ice.MSG_PREFIX]||[]: [ice.RUN, index]).concat(cmds), cb, true)
|
||||||
}
|
}, can.page.ClassList.has(can, sub._target, html.FLOAT)? can.onmotion.float(sub): sub.onimport.size(sub, height, width, true), cb && cb(sub)
|
||||||
if (can.page.ClassList.has(can, sub._target, html.FLOAT)) {
|
|
||||||
height = window.innerHeight/2, width = window.innerWidth/2
|
|
||||||
can.onmotion.move(can, sub._target, {left: window.innerWidth-width, top: window.innerHeight-height})
|
|
||||||
}
|
|
||||||
sub.run = function(event, cmds, cb) { sub.onimport.size(sub, height, width, true)
|
|
||||||
sub.onexport.output = function() { sub.onimport.size(sub, height, width, true)
|
|
||||||
// can.page.SelectChild(can, can._output, html.TABLE, function(target) { can.page.style(can, target, html.MAX_HEIGHT, height, html.DISPLAY, html.BLOCK) })
|
|
||||||
}, 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._target.onclick = function() {
|
|
||||||
can.page.SelectChild(can, can._output, html.FIELDSET, function(target) { can.page.style(can, target, "z-index", "9") })
|
|
||||||
can.page.style(can, sub._target, "z-index", "10")
|
|
||||||
}
|
|
||||||
can.base.isFunc(cb) && cb(sub)
|
|
||||||
}) })
|
}) })
|
||||||
},
|
},
|
||||||
_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) { can.onimport._field(can, msg, function(sub) { can.onmotion.float(sub) }) },
|
||||||
sub.run = function(event, cmds, cb) { can.runAction(can.request(event, {path: msg.Option(nfs.PATH), text: msg.Option(mdb.TEXT)}), [ice.RUN, arg[0]], cmds, cb) }
|
|
||||||
can.getActionSize(function(left, top, width, height) { left = left||0, top = !can.Mode()? 120: 0, can.onmotion.move(can, sub._target, {left: left, top: top})
|
|
||||||
sub.onimport.size(sub, can.base.Max(height, can.page.height())-top-(can.user.isMobile&&!can.user.isLandscape()? 2*html.ACTION_HEIGHT: 0), width, true)
|
|
||||||
})
|
|
||||||
}, document.body) }) },
|
|
||||||
_hold: function(can, msg, arg) { can.user.toast(can, arg||ice.SUCCESS) },
|
_hold: function(can, msg, arg) { can.user.toast(can, arg||ice.SUCCESS) },
|
||||||
_back: function(can) { can._history.pop(); for (var index = 0, his = can._history.pop(); his; his = can._history.pop()) { if (his[0] == ctx.ACTION) { continue }
|
_back: function(can) { can._history.pop(); for (var i = 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._option, "", function(target) { target.value = his[i++]||"", can.page.Select(can, target.parentNode, "span.value", function(target) { target.innerText = target.value||"" }) })
|
||||||
can.page.Select(can, item.parentNode, "span.value", function(target) { target.innerText = target.value||"" })
|
can.page.SelectArgs(can, can._action, "", function(target) { target.value = his[i++]||"" }); break
|
||||||
})
|
} can.Update() },
|
||||||
can.page.SelectArgs(can, can._action, "", function(item) { item.value = his[index++]||"" })
|
|
||||||
can.Update(); break
|
|
||||||
} !his && can.Update() },
|
|
||||||
_rich: function(can, msg) { if (can.page.Select(can, can._output, [html.TABLE_CONTENT, html.TBODY], function(table) {
|
_rich: function(can, msg) { 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 })
|
var head = can.page.Select(can, can._output, [html.TABLE_CONTENT, html.TH], function(th) { return th.innerText })
|
||||||
return can.page.Append(can, table, msg.Table(function(value) { return {row: can.core.List(head, function(key) { return value[key] })} }))
|
return can.page.Append(can, table, msg.Table(function(value) { return {row: can.core.List(head, function(key) { return value[key] })} }))
|
||||||
}).length == 0) { can.onappend.table(can, msg) } },
|
}).length == 0) { can.onappend.table(can, msg) } },
|
||||||
_grow: function(can, msg, arg) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
|
_grow: function(can, msg, arg) { var sub = can.sub
|
||||||
if (sub && sub.onimport && sub.onimport.grow) { return sub.onimport.grow(sub, msg, arg) }
|
if (sub && sub.onimport && sub.onimport.grow) { return sub.onimport.grow(sub, msg, arg) }
|
||||||
arg = can.page.Color(arg); if (can.page.Select(can, can._output, html.DIV_CODE, function(div) {
|
arg = can.page.Color(arg); if (can.page.Select(can, can._output, html.DIV_CODE, function(div) {
|
||||||
return can.page.style(can, div, html.MAX_HEIGHT, 400), can.page.Append(can, div, [{text: arg}]), div.scrollBy(0, 10000), true
|
return can.page.style(can, div, html.MAX_HEIGHT, 400), can.page.Append(can, div, [{text: arg}]), div.scrollBy(0, 10000), true
|
||||||
}).length == 0) { can.onappend.board(can, arg) }
|
}).length == 0) { can.onappend.board(can, arg) }
|
||||||
},
|
},
|
||||||
_open: function(can, msg, arg) { return can.Update(), can.user.open(arg) },
|
_open: function(can, msg, arg) { can.user.open(arg), can.Update() },
|
||||||
_close: function(can, msg) { return can.user.close() || history.back() },
|
_close: function(can, msg) { can.user.close() || history.back() },
|
||||||
size: function(can, height, width, auto, mode) { height -= can.onexport.actionHeight(can)+can.onexport.statusHeight(can)
|
|
||||||
auto? (can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "", html.MAX_HEIGHT, height? can.ConfHeight(height): "", html.MAX_WIDTH, can.ConfWidth(width)),
|
|
||||||
can.page.style(can, can._target, html.HEIGHT, "", html.WIDTH, "")):
|
|
||||||
(can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(height), html.WIDTH, can.ConfWidth(width), html.MAX_HEIGHT, "", html.MAX_WIDTH, ""),
|
|
||||||
can.page.style(can, can._target, html.WIDTH, can.ConfWidth(width)))
|
|
||||||
var sub = can.core.Value(can, chat._OUTPUTS_CURRENT); if (!sub) { return can.Mode(mode), auto } sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth())
|
|
||||||
if (mode) { sub.Mode(can.Mode(mode)), sub.onlayout[mode](sub, height, width) } else { sub.onlayout._init(sub, height, width) } return auto
|
|
||||||
},
|
|
||||||
change: function(event, can, name, value, cb) { return can.page.SelectArgs(can, can._option, "", function(input) { if (input.name != name || value == input.value) { return }
|
change: function(event, can, name, value, cb) { return can.page.SelectArgs(can, can._option, "", function(input) { if (input.name != name || value == input.value) { return }
|
||||||
can.page.Select(can, input.parentNode, "span.value", function(target) { target.innerText = value })
|
can.page.Select(can, input.parentNode, "span.value", function(target) { target.innerText = value })
|
||||||
return input.value = value, can.Update(event, can.Input([], true), cb), input
|
return input.value = value, can.Update(event, can.Input([], true), cb), input
|
||||||
})[0] },
|
})[0] },
|
||||||
|
size: function(can, height, width, auto, mode) { can.Mode(mode), can.ConfHeight(height), can.ConfWidth(width), height -= can.onexport.actionHeight(can)+can.onexport.statusHeight(can)
|
||||||
|
auto? (can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "", html.MAX_HEIGHT, height, html.MAX_WIDTH, width), can.page.style(can, can._target, html.HEIGHT, "", html.WIDTH, "")):
|
||||||
|
(can.page.style(can, can._output, html.HEIGHT, height, html.WIDTH, width, html.MAX_HEIGHT, "", html.MAX_WIDTH, ""), can.page.style(can, can._target, html.WIDTH, width))
|
||||||
|
var sub = can.sub; if (!sub) { return auto } sub.Mode(mode), sub.ConfHeight(height), sub.ConfWidth(width)
|
||||||
|
mode? sub.onlayout[mode](sub, height, width): sub.onlayout._init(sub, height, width); return auto
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {list: [
|
Volcanos(chat.ONACTION, {list: [
|
||||||
"刷新界面", "刷新数据", "切换浮动", "切换全屏", "远程控制", "共享工具", "打开链接", "生成链接", "生成脚本", "生成图片",
|
"刷新数据", "刷新界面",
|
||||||
["视图", "操作", "专注", "项目", "预览", "演示", "状态"],
|
"切换浮动", "切换全屏",
|
||||||
["其它", "扩展参数", "保存参数", "清空参数", "复制数据", "下载数据", "清空数据", "删除工具"],
|
"远程控制", "共享工具",
|
||||||
["调试", "查看文档", "查看脚本", "查看源码", "查看配置", "查看日志", "打包页面"],
|
"打开链接", "生成链接",
|
||||||
|
"生成脚本", "生成图片",
|
||||||
|
["视图", "参数", "操作", "状态", "专注", "项目", "预览", "演示"],
|
||||||
|
["数据", "保存参数", "清空参数", "复制数据", "下载数据", "清空数据", "删除工具"],
|
||||||
|
["调试", "打包页面", "查看文档", "查看脚本", "查看源码", "查看配置", "查看日志"],
|
||||||
],
|
],
|
||||||
"参数": function(event, can) { can.onmotion.toggle(can, can._option) },
|
|
||||||
"操作": function(event, can) { can.onmotion.toggle(can, can._action) },
|
|
||||||
"专注": function(event, can) { can.onaction._view(event, can, function(sub) { if (!sub.ui) { return }
|
|
||||||
sub.ui.project && can.onmotion.hidden(can, sub.ui.project)
|
|
||||||
sub.ui.profile && can.onmotion.hidden(can, sub.ui.profile)
|
|
||||||
sub.ui.display && can.onmotion.hidden(can, sub.ui.display)
|
|
||||||
}) },
|
|
||||||
"项目": function(event, can) { can.onaction._view(event, can, function(sub) { sub.ui && sub.ui.project && can.onmotion.toggle(can, sub.ui.project) }) },
|
|
||||||
"预览": function(event, can) { can.onaction._view(event, can, function(sub) { sub.ui && sub.ui.project && can.onmotion.toggle(can, sub.ui.profile) }) },
|
|
||||||
"演示": function(event, can) { can.onaction._view(event, can, function(sub) { sub.ui && sub.ui.project && can.onmotion.toggle(can, sub.ui.display) }) },
|
|
||||||
"状态": function(event, can) { can.onaction._view(event, can, function(sub) { can.onmotion.toggle(can, can._status) }) },
|
|
||||||
_view: function(event, can, cb) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT); cb(sub), sub.onimport.layout(sub) },
|
|
||||||
_engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input())) },
|
_engine: function(event, can, button) { can.Update(event, [ctx.ACTION, button].concat(can.Input())) },
|
||||||
_switch: function(can, sub, mode, save, load) {
|
_switch: function(can, sub, mode, save, load) {
|
||||||
if (can.page.ClassList.neg(can, can._target, mode)) {
|
if (can.page.ClassList.neg(can, can._target, mode)) {
|
||||||
@ -98,71 +66,74 @@ Volcanos(chat.ONACTION, {list: [
|
|||||||
html.ACTION, can.page.isDisplay(can._action), html.STATUS, can.page.isDisplay(can._status),
|
html.ACTION, can.page.isDisplay(can._action), html.STATUS, can.page.isDisplay(can._status),
|
||||||
html.OUTPUT, can.base.Copy({}, can._output.style, html.HEIGHT, html.WIDTH, html.MAX_HEIGHT, html.MAX_WIDTH),
|
html.OUTPUT, can.base.Copy({}, can._output.style, html.HEIGHT, html.WIDTH, html.MAX_HEIGHT, html.MAX_WIDTH),
|
||||||
ctx.STYLE, can.base.Copy({}, can._target.style, html.LEFT, html.TOP, html.RIGHT, html.BOTTOM), save(),
|
ctx.STYLE, can.base.Copy({}, can._target.style, html.LEFT, html.TOP, html.RIGHT, html.BOTTOM), save(),
|
||||||
)), can.onimport.size(can, can.ConfHeight()+can.onexport.actionHeight(can)+can.onexport.statusHeight(can), can.ConfWidth(), false, mode)
|
)), can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), false, mode)
|
||||||
} else { var back = (can._mode_list = can._mode_list||[]).pop(); if (!back) { return }
|
} else { var back = (can._mode_list = can._mode_list||[]).pop(); if (!back) { return }
|
||||||
can.onmotion.toggle(can, can._action, back.action), can.onmotion.toggle(can, can._status, back.status)
|
can.onmotion.toggle(can, can._action, back.action), can.onmotion.toggle(can, can._status, back.status)
|
||||||
can.onimport.size(can, back.height+can.onexport.actionHeight(can)+can.onexport.statusHeight(can), back.width, false, mode)
|
can.onimport.size(can, back.height, back.width, false, mode), can.page.style(can, can._target, back.style), load && load(back)
|
||||||
can.page.style(can, can._target, html.LEFT, back.style.left, html.TOP, back.style.top)
|
|
||||||
can.base.isFunc(load) && load(back)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"刷新界面": function(event, can) { var sub = can._outputs[0]; sub.onlayout._init(sub), can.user.toastSuccess(can) },
|
|
||||||
"刷新数据": function(event, can) { can.Update(event, can.Input()), can.user.toastSuccess(can) },
|
"刷新数据": function(event, can) { can.Update(event, can.Input()), can.user.toastSuccess(can) },
|
||||||
|
"刷新界面": function(event, can) { var sub = can.sub; sub.onlayout._init(sub, sub.ConfHeight(), sub.ConfWidth()), can.user.toastSuccess(can) },
|
||||||
"切换浮动": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FLOAT, function() { can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can._status)
|
"切换浮动": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FLOAT, function() { can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can._status)
|
||||||
can.getActionSize(function(left, top) {
|
can.onmotion.float(can), can.onmotion.resize(can, can._target, function(height, width) { can.onimport.size(can, height, width) })
|
||||||
can.onmotion.move(can, can._target, {left: (left||0)+(can.user.isMobile? 0: html.PLUGIN_MARGIN), top: can.page.height()/2-html.PLUGIN_MARGIN-html.ACTION_HEIGHT})
|
|
||||||
can.onmotion.resize(can, can._target, function(height, width) { can.onimport.size(can, height, width) }, top)
|
|
||||||
})
|
|
||||||
can.ConfHeight(can.page.height()/2-can.onexport.actionHeight(can)-can.onexport.statusHeight(can)), can.ConfWidth(can.page.width()/(can.user.isMobile? 1: 2))
|
|
||||||
}) },
|
}) },
|
||||||
"切换全屏": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FULL, function() { can.page.style(can, can._target, html.LEFT, "", html.TOP, can.onexport.marginTop(), html.BOTTOM, "")
|
"切换全屏": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FULL, function() { can.page.style(can, can._target, html.LEFT, "", html.TOP, can.onexport.marginTop(), html.BOTTOM, "")
|
||||||
can.ConfHeight(can.page.height()-can.onexport.marginTop()-can.onexport.actionHeight(can)-can.onexport.statusHeight(can)-can.onexport.marginBottom(can)), can.ConfWidth(can.page.width())
|
can.ConfHeight(can.page.height()-can.onexport.marginTop()-can.onexport.marginBottom(can)), can.ConfWidth(can.page.width())
|
||||||
}) },
|
}) },
|
||||||
"远程控制": function(event, can) { can.onaction.keyboard(event, can) },
|
"远程控制": function(event, can) { can.onaction.keyboard(event, can) },
|
||||||
"共享工具": function(event, can) { var meta = can.Conf(); can.onmotion.share(event, can, [
|
"共享工具": function(event, can) { var meta = can.Conf(); can.onmotion.share(event, can, [{name: chat.TITLE, value: meta.name}], [mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input())]) },
|
||||||
{name: chat.TITLE, value: meta.name}, {name: chat.THEME, values: [can.getHeader(chat.THEME), html.DARK, html.LIGHT, cli.WHITE, cli.BLACK]},
|
|
||||||
], [mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input())]) },
|
|
||||||
"打开链接": function(event, can) { can.user.opens(can.onexport.link(can)) },
|
"打开链接": function(event, can) { can.user.opens(can.onexport.link(can)) },
|
||||||
"生成链接": function(event, can) { can.onmotion.share(event, can, [], [mdb.LINK, can.user.copy(event, can, can.onexport.link(can))]) },
|
"生成链接": function(event, can) { can.onmotion.share(event, can, [], [mdb.LINK, can.user.copy(event, can, can.onexport.link(can))]) },
|
||||||
"生成脚本": function(event, can) { var conf = can.Conf(), args = can.Input().join(lex.SP), list = [
|
"生成脚本": function(event, can) { var args = can.Input().join(lex.SP), list = [
|
||||||
"export ctx_dev="+location.origin+"; ctx_temp=$(mktemp); curl -o $ctx_temp -fsSL $ctx_dev;"+" source $ctx_temp cmd "+(conf.index||"")+lex.SP+args,
|
"export ctx_dev="+location.origin+"; ctx_temp=$(mktemp); curl -o $ctx_temp -fsSL $ctx_dev;"+" source $ctx_temp cmd "+(can.Conf(ctx.INDEX))+lex.SP+args,
|
||||||
"ish_sys_dev_run_command "+args, "ish_sys_dev_run_action", "ish_sys_dev_run_source",
|
"ish_sys_dev_run_command "+args, "ish_sys_dev_run_action", "ish_sys_dev_run_source",
|
||||||
]; can.user.copy(event, can, list[0]) },
|
]; can.user.copy(event, can, list[0]) },
|
||||||
"生成图片": function(event, can) { can.user.toimage(can, can._name) },
|
"生成图片": function(event, can) { can.user.toimage(can, can.name) },
|
||||||
|
|
||||||
|
_view: function(can, cb) { var sub = can.sub; cb(sub), sub.onimport.layout(sub) },
|
||||||
|
"参数": function(event, can) { can.onaction._view(can, function(sub) { can.onmotion.toggle(can, can._option) }) },
|
||||||
|
"操作": function(event, can) { can.onaction._view(can, function(sub) { can.onmotion.toggle(can, can._action) }) },
|
||||||
|
"状态": function(event, can) { can.onaction._view(can, function(sub) { can.onmotion.toggle(can, can._status) }) },
|
||||||
|
"专注": function(event, can) { can.onaction._view(can, function(sub) { if (!sub.ui) { return }
|
||||||
|
sub.ui.project && can.onmotion.hidden(can, sub.ui.project)
|
||||||
|
sub.ui.profile && can.onmotion.hidden(can, sub.ui.profile)
|
||||||
|
sub.ui.display && can.onmotion.hidden(can, sub.ui.display)
|
||||||
|
}) },
|
||||||
|
"项目": function(event, can) { can.onaction._view(can, function(sub) { sub.ui && sub.ui.project && can.onmotion.toggle(can, sub.ui.project) }) },
|
||||||
|
"预览": function(event, can) { can.onaction._view(can, function(sub) { sub.ui && sub.ui.project && can.onmotion.toggle(can, sub.ui.profile) }) },
|
||||||
|
"演示": function(event, can) { can.onaction._view(can, function(sub) { sub.ui && sub.ui.project && can.onmotion.toggle(can, sub.ui.display) }) },
|
||||||
|
|
||||||
"扩展参数": function(event, can) { can.onmotion.toggle(can, can._action) },
|
|
||||||
"保存参数": function(event, can) { can.search(event, ["River.ondetail.保存参数"]) },
|
"保存参数": 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.page.SelectArgs(can, can._option, "", function(target) { return target.value = "" }) },
|
||||||
"复制数据": function(event, can) { var sub = can._outputs[0]; can.user.copy(event, can, sub.onexport.table(sub)||sub.onexport.board(sub)) },
|
"复制数据": function(event, can) { var sub = can.sub; can.user.copy(event, can, sub.onexport.table(sub)||sub.onexport.board(sub)) },
|
||||||
"下载数据": function(event, can) { var sub = can._outputs[0]; can.user.input(event, can, [{name: "filename", value: can.Conf(mdb.NAME)}], function(list) {
|
"下载数据": function(event, can) { var sub = can.sub; can.user.input(event, can, [{name: "filename", value: can.Conf(mdb.NAME)}], function(list) {
|
||||||
can.user.downloads(can, sub.onexport.table(sub), list[0], nfs.CSV), can.user.downloads(can, sub.onexport.board(sub), list[0], nfs.TXT)
|
can.user.downloads(can, sub.onexport.table(sub), list[0], nfs.CSV), can.user.downloads(can, sub.onexport.board(sub), list[0], nfs.TXT)
|
||||||
}) },
|
}) },
|
||||||
"清空数据": function(event, can) { can.onmotion.clear(can, can._output) },
|
"清空数据": function(event, can) { can.onmotion.clear(can, can._output) },
|
||||||
"删除工具": function(event, can) { can.onaction._close(event, can) },
|
"删除工具": function(event, can) { can.onaction._close(event, can) },
|
||||||
|
|
||||||
|
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
|
||||||
"查看文档": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ice.HELP, index: can.Conf(ctx.INDEX)})) },
|
"查看文档": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ice.HELP, index: can.Conf(ctx.INDEX)})) },
|
||||||
"查看脚本": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SCRIPT, index: can.Conf(ctx.INDEX)})) },
|
"查看脚本": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SCRIPT, index: can.Conf(ctx.INDEX)})) },
|
||||||
"查看源码": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SOURCE, index: can.Conf(ctx.INDEX)})) },
|
"查看源码": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SOURCE, index: can.Conf(ctx.INDEX)})) },
|
||||||
"查看配置": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ctx.CONFIG, index: can.Conf(ctx.INDEX)})) },
|
"查看配置": function(event, can) { can.onengine.signal(can, "ondebugs", can.request(event, {action: ctx.CONFIG, index: can.Conf(ctx.INDEX)})) },
|
||||||
"查看日志": function(event, can) { var sub = can._outputs[0]; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) },
|
"查看日志": function(event, can) { var sub = can.sub; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) },
|
||||||
"打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) },
|
|
||||||
|
|
||||||
refresh: function(event, can) { var sub = can.core.Value(can, chat._OUTPUTS_CURRENT); if (sub) { sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.onimport.layout(sub) } },
|
refresh: function(event, can) { can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), true, can.Mode()) },
|
||||||
close: function(event, can) {
|
close: function(event, can) {
|
||||||
if (can.isCmdMode()) {
|
if (can.isCmdMode()) {
|
||||||
can.user.close()
|
can.user.close()
|
||||||
} else if (can.isFullMode()) {
|
} else if (can.isFullMode()) {
|
||||||
can.onaction["切换全屏"](event, can, "切换全屏", can.core.Value(can, chat._OUTPUTS_CURRENT))
|
can.onaction["切换全屏"](event, can, "切换全屏", can.sub)
|
||||||
} else if (can.isFloatMode()) {
|
} else if (can.isFloatMode()) {
|
||||||
can.onaction["切换浮动"](event, can, "切换浮动", can.core.Value(can, chat._OUTPUTS_CURRENT))
|
can.onaction["切换浮动"](event, can, "切换浮动", can.sub)
|
||||||
} else {
|
} else {
|
||||||
can.onaction._close(event, can)
|
can.onaction._close(event, can)
|
||||||
}
|
}
|
||||||
},
|
}, _close: function(event, can) { can.page.Remove(can, can._target) },
|
||||||
_close: function(event, can) { can.page.Remove(can, can._target) },
|
|
||||||
clear: function(event, can) { can.onmotion.clear(can, can._output) },
|
clear: function(event, can) { can.onmotion.clear(can, can._output) },
|
||||||
actions: function(event, can) { can.onmotion.toggle(can, can._action) },
|
actions: function(event, can) { can.onmotion.toggle(can, can._action) },
|
||||||
full: function(event, can) { can.onaction["切换全屏"](event, can, "切换全屏", can.core.Value(can, chat._OUTPUTS_CURRENT)) },
|
full: function(event, can) { can.onaction["切换全屏"](event, can, "切换全屏", can.sub) },
|
||||||
prev: function(event, can) { can.runAction(event, mdb.PREV, [can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||can._msg.Option("cache.limit")||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""], function(msg) { can.onimport._process(can, msg) }) },
|
prev: function(event, can) { can.runAction(event, mdb.PREV, [can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||can._msg.Option("cache.limit")||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""], function(msg) { can.onimport._process(can, msg) }) },
|
||||||
next: function(event, can) { can.runAction(event, mdb.NEXT, [can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||can._msg.Option("cache.limit")||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""], function(msg) { can.onimport._process(can, msg) }) },
|
next: function(event, can) { can.runAction(event, mdb.NEXT, [can.Status(mdb.TOTAL)||0, can.Option(mdb.LIMIT)||can.Action(mdb.LIMIT)||can._msg.Option("cache.limit")||"", can.Option(mdb.OFFEND)||can.Action(mdb.OFFEND)||""], function(msg) { can.onimport._process(can, msg) }) },
|
||||||
upload: function(event, can) { can.user.upload(event, can) },
|
upload: function(event, can) { can.user.upload(event, can) },
|
||||||
@ -209,14 +180,13 @@ Volcanos(chat.ONACTION, {list: [
|
|||||||
}) },
|
}) },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {
|
Volcanos(chat.ONEXPORT, {
|
||||||
args: function(can) { return can.page.SelectArgs(can, can._option, "", function(target) { return target.value }) },
|
output: function(can, msg) {}, action: function(can, button, data) {}, record: function(can, value, key, data) {},
|
||||||
output: function(can, msg) {}, action: function(can, button, line) {}, record: function(can, value, key, data) {},
|
title: function(can, title) { can.isCmdMode() && can.user.title(title) },
|
||||||
marginTop: function() { return 0 }, marginBottom: function() { return 0 },
|
marginTop: function() { return 0 }, marginBottom: function() { return 0 },
|
||||||
actionHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT)? 0: html.ACTION_HEIGHT },
|
actionHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT)? 0: html.ACTION_HEIGHT },
|
||||||
statusHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT) || !can.page.isDisplay(can._status) || can._status.innerHTML == "" || (can._target.offsetHeight > 0 && can._status.offsetHeight == 0)? 0: html.ACTION_HEIGHT },
|
statusHeight: function(can) { return can.page.ClassList.has(can, can._target, html.OUTPUT) || !can.page.isDisplay(can._status) || can._status.innerHTML == "" || (can._target.offsetHeight > 0 && can._status.offsetHeight == 0)? 0: html.ACTION_HEIGHT },
|
||||||
title: function(can, title) { can.isCmdMode() && can.user.title(title) },
|
link: function(can) { var meta = can.Conf(), args = can.Option()
|
||||||
link: function(can) { var meta = can.Conf(), args = can.Option(); can.misc.Search(can, log.DEBUG) == ice.TRUE && (args[log.DEBUG] = ice.TRUE)
|
|
||||||
args.pod = meta._space||meta.space||meta.pod, args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd)
|
args.pod = meta._space||meta.space||meta.pod, args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd)
|
||||||
return can.misc.MergePodCmd(can, args, true)
|
return can.misc.MergePodCmd(can, args, true)
|
||||||
},
|
}, args: function(can) { return can.Option() }
|
||||||
})
|
})
|
||||||
|
@ -52,14 +52,14 @@ Volcanos(chat.ONACTION, {list: [[ice.VIEW, "横向", "纵向"], [html.SIZE, 24,
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {list: [mdb.TIME, mdb.COUNT]})
|
|
||||||
Volcanos(chat.ONDETAIL, {
|
Volcanos(chat.ONDETAIL, {
|
||||||
onclick: function(event, can, tree) {
|
onclick: function(event, can, tree) {
|
||||||
if (tree.list.length > 0 || tree.name.endsWith(can.Conf(lex.SPLIT))) { return tree.hide = !tree.hide, can.onaction[can.Action(ice.VIEW)||"横向"](event, can) }
|
if (tree.list.length > 0 || tree.name.endsWith(can.Conf(lex.SPLIT))) { return tree.hide = !tree.hide, can.onaction[can.Action(ice.VIEW)||"横向"](event, can) }
|
||||||
for (var node = tree; node; node = node.last) { can.request(event, node.meta) }
|
for (var node = tree; node; node = node.last) { can.request(event, node.meta) }
|
||||||
can.run(can.request(event, can.Option()), can.base.Obj(can.Conf(lex.PREFIX), []).concat(can.Conf(ctx.ACTION)||[], [tree.file||"", tree.name]), function(msg) {
|
can.run(can.request(event, can.Option()), can.base.Obj(can.Conf(lex.PREFIX), []).concat(can.Conf(ctx.ACTION)||[], [tree.file||"", tree.name]), function(msg) {
|
||||||
if (msg.Length() == 0) { return can.onappend._float(can, web.CODE_INNER, [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line], code.INNER) }
|
if (msg.Length() == 0) { return can.onappend._float(can, web.CODE_INNER, [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line]) }
|
||||||
if (msg.Append(mdb.INDEX)) { return msg.Table(function(value) { can.onappend._float(can, value.index, value.args) }) }
|
if (msg.Append(mdb.INDEX)) { return msg.Table(function(value) { can.onappend._float(can, value.index, value.args) }) }
|
||||||
}, true)
|
}, true)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
Volcanos(chat.ONEXPORT, {list: [mdb.TIME, mdb.COUNT]})
|
||||||
|
@ -86,9 +86,7 @@ Volcanos(chat.ONACTION, {list: [[ice.VIEW, "趋势图", "柱状图", "折线图"
|
|||||||
Volcanos(chat.ONDETAIL, {
|
Volcanos(chat.ONDETAIL, {
|
||||||
onmouseenter: function(event, can, item) { can.Status(item) },
|
onmouseenter: function(event, can, item) { can.Status(item) },
|
||||||
onclick: function(event, can, item) { can.run(can.request(event, item, can.Option()), [mdb.DETAIL], function(msg) {
|
onclick: function(event, can, item) { can.run(can.request(event, item, can.Option()), [mdb.DETAIL], function(msg) {
|
||||||
can.getActionSize(function(left, top, width, height) { msg.Option(html.HEIGHT, height*3/4), msg.Option(html.WIDTH, width*3/4)
|
msg.Append(ctx.STYLE, html.FLOAT), can.sup.onimport._field(can, msg)
|
||||||
can.sup.onimport._field(can.sup, msg, function(sub) { can.onmotion.move(can, sub._target, {left: left||0, top: (top||0)+height/4}) })
|
|
||||||
})
|
|
||||||
}) },
|
}) },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {list: ["from", "commit", "total", "max", "date", "text", "add", "del"],
|
Volcanos(chat.ONEXPORT, {list: ["from", "commit", "total", "max", "date", "text", "add", "del"],
|
||||||
|
142
plugin/table.js
142
plugin/table.js
@ -6,88 +6,29 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
|||||||
can.onappend.table(can, msg, null, target), can.onappend.board(can, msg, target), can.onmotion.story.auto(can, target)
|
can.onappend.table(can, msg, null, target), can.onappend.board(can, msg, target), can.onmotion.story.auto(can, target)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
card: function(can, msg, target) { can.page.Appends(can, target||can._output, msg.Table(function(value) {
|
||||||
|
return {view: [[html.ITEM, value.status]], list: [{view: [wiki.TITLE, html.DIV, value.name]}, {view: [wiki.CONTENT, html.DIV, value.text]},
|
||||||
|
{view: html.ACTION, inner: value.action, onclick: function(event) { can.run(can.request(event, value), [ctx.ACTION, event.target.name]) }},
|
||||||
|
]}
|
||||||
|
})), can.onlayout.expand(can, can._output, 320) },
|
||||||
_vimer_zone: function(can, msg, target) { msg.Table(function(value) { var action = []
|
_vimer_zone: function(can, msg, target) { msg.Table(function(value) { var action = []
|
||||||
can.page.Select(can, can.page.Create(can, html.DIV, value.action), html.INPUT, function(target) {
|
can.page.Select(can, can.page.Create(can, html.DIV, value.action), html.INPUT, function(target) {
|
||||||
action.push(target.name), target.name != target.value && can.user.trans(can, kit.Dict(target.name, target.value))
|
action.push(target.name), target.name != target.value && can.user.trans(can, kit.Dict(target.name, target.value))
|
||||||
})
|
})
|
||||||
can.onimport.item(can, {name: can.page.Color(value[can.Conf(mdb.FIELD)||mdb.VIEW]||value[mdb.NAME]||value[mdb.TEXT]||value[mdb.TYPE]), title: value[mdb.TEXT]}, function(event) {
|
can.onimport.item(can, {name: can.page.Color(value[can.Conf(mdb.FIELD)||mdb.VIEW]||value[mdb.NAME]||value[mdb.TEXT]||value[mdb.TYPE]), title: value[mdb.TEXT]}, function(event) {
|
||||||
can.sup.onexport.record(can, value.name, mdb.NAME, value, event)
|
can.sup.onexport.record(can, value.name, mdb.NAME, value, event)
|
||||||
}, function() { return shy(action, function(event, button, meta, carte) { can.misc.Event(event, can, function(msg) {
|
}, function() { return shy(action, function(event, button, meta, carte) { can.misc.Event(event, can, function(msg) { carte.close()
|
||||||
can.sup.onexport.action(can, button, value) || can.run(event, [ctx.ACTION, button], function(msg) { can.sup.onimport._process(can.sup, msg) || can.Update() }), carte.close()
|
can.sup.onexport.action(can, button, value) || can.run(event, [ctx.ACTION, button], function(msg) { can.sup.onimport._process(can.sup, msg) || can.Update() })
|
||||||
}, value) }) })
|
}, value) }) })
|
||||||
}) },
|
}) },
|
||||||
_system_app: function(can, msg, target) { can.page.Appends(can, target, msg.Table(function(item) { var name = item.name||item.text
|
|
||||||
return {view: html.ITEM, style: {"text-align": "center", margin: 10, width: 100, "float": "left"}, list: [
|
|
||||||
{type: html.IMG, src: "/share/local/usr/icons/"+item.text, style: {display: html.BLOCK, width: 100}},
|
|
||||||
{text: name.split(nfs.PT)[0].replace(lex.SP, lex.NL), style: {display: html.BLOCK, height: 40}},
|
|
||||||
], onclick: function(event) { can.runAction(can.request(event, item, can.Option()), "xterm", []) }}
|
|
||||||
})) },
|
|
||||||
card: function(can, msg, target) { can.page.Appends(can, target||can._output, msg.Table(function(item) {
|
|
||||||
return {view: [[html.ITEM, item.status]], list: [{view: [wiki.TITLE, html.DIV, item.name]}, {view: [wiki.CONTENT, html.DIV, item.text]},
|
|
||||||
{view: html.ACTION, inner: item.action, onclick: function(event) { can.run(can.request(event, item), [ctx.ACTION, event.target.name]) }},
|
|
||||||
]}
|
|
||||||
})), can.onlayout.expand(can, can._output, 320) },
|
|
||||||
icon: function(can, msg, target, cb) { return msg.Table(function(value) { value.icon = can.misc.PathJoin(value.icon||can.page.drawText(can, value.name, 80))
|
|
||||||
return can.page.Append(can, target, [{view: html.ITEM, list: [{view: html.ICON, list: [{img: value.icon+(value.space? "?pod="+value.space: "")}]}, {view: [mdb.NAME, "", value.name]}], _init: function(target) {
|
|
||||||
cb && cb(target, value)
|
|
||||||
}, onclick: function(event) { can.sup.onexport.record(can.sup, value.name, mdb.NAME, value) }}])._target
|
|
||||||
}) },
|
|
||||||
_icon: function(can, name, button, target) { can.page.Append(can, target, [{text: [can.page.unicode[name]||name, html.SPAN, html.ICON], onclick: function(event) {
|
|
||||||
can.base.isFunc(button)? button(event, button): can.onaction[button](event, can, button), can.onkeymap.prevent(event)
|
|
||||||
}}]) },
|
|
||||||
tabs: function(can, list, cb, cbs, action) { action = action||can._action; return can.page.Append(can, action, can.core.List(list, function(tabs) {
|
|
||||||
function close(target) { var next = target.nextSibling||target.previousSibling; if (!next) { return }
|
|
||||||
next.click(), can.onmotion.delay(can, function() { can.base.isFunc(cbs) && cbs(tabs), can.page.Remove(can, target) })
|
|
||||||
}
|
|
||||||
return {view: html.TABS, title: tabs.text, list: [{text: [tabs.name, html.SPAN, mdb.NAME]}, {icon: mdb.DELETE, onclick: function(event) {
|
|
||||||
close(tabs._target), can.onkeymap.prevent(event)
|
|
||||||
}}], onclick: function(event) {
|
|
||||||
can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs)
|
|
||||||
}, _init: function(target) { tabs._target = target; var menu = tabs._menu||shy()
|
|
||||||
target._close = function() { close(target) }
|
|
||||||
can.page.Modify(can, target, {draggable: true, _close: function() { close(target) },
|
|
||||||
ondragstart: function(event) { action._drop = function(before) { before.parentNode == action && action.insertBefore(target, before) } },
|
|
||||||
ondragover: function(event) { event.preventDefault(), action._drop(event.target) },
|
|
||||||
oncontextmenu: function(event) { can.user.carte(event, can, kit.Dict(
|
|
||||||
"Close", function(event) { close(target) },
|
|
||||||
"Close Other", function(event) { can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || close(target) }) },
|
|
||||||
"Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) {
|
|
||||||
can.page.Select(can, target, "span.name", function(target) { can.page.Modify(can, target, list[0]||tabs.name) })
|
|
||||||
}) }, menu.meta,
|
|
||||||
), ["Close", "Close Other", "Rename Tabs", ""].concat(can.base.getValid(menu.list, can.core.Item(menu.meta))), function(event, button, meta) { (meta[button]||menu)(event, button, meta) }) },
|
|
||||||
}), target.click()
|
|
||||||
}}
|
|
||||||
}))._target },
|
|
||||||
tool: function(can, list, cb, target, status) { target = target||can._output, status = status||can._status
|
|
||||||
can.core.List(list.reverse(), function(meta) { can.base.isString(meta) && (meta = {index: meta}), meta.mode = html.FLOAT
|
|
||||||
can.onimport.plug(can, meta, function(sub) { can.onmotion.hidden(can, sub._target), sub._legend._target = sub._target
|
|
||||||
status.appendChild(sub._legend), sub._legend.oncontextmenu = sub._legend.onclick, sub._legend.onclick = function(event) { can.misc.Event(event, can, function(msg) {
|
|
||||||
if (can.page.SelectOne(can, status, nfs.PT+html.SELECT, function(target) { can.onmotion.hidden(can, target._target), can.page.ClassList.del(can, target, html.SELECT); return target }) == sub._legend) { return }
|
|
||||||
sub.onimport.size(sub, can.ConfHeight()/2-html.ACTION_HEIGHT, (can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0))/2)
|
|
||||||
sub.onaction._close = function() { can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend) }
|
|
||||||
can.onmotion.select(can, status, html.LEGEND, sub._legend), can.onmotion.toggle(can, sub._target, true), sub.Focus()
|
|
||||||
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) }
|
|
||||||
can.base.isFunc(cb) && cb(sub)
|
|
||||||
}, target)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
plug: function(can, meta, cb, target, field) { if (!meta || !meta.index) { return }
|
|
||||||
meta.type = meta.type||html.PLUG, meta.name = meta.index, can.onappend.plugin(can, meta, function(sub) { sub.sup = can
|
|
||||||
sub.run = function(event, cmds, cb) { if (can.page.Select(can, sub._option, "input[name=path]").length > 0 && sub.Option(nfs.PATH) == "") { sub.request(event, {path: nfs.PWD}) }
|
|
||||||
can.runActionCommand(can.request(event, can.Option()), meta.index, cmds, cb)
|
|
||||||
}, sub.onaction.close = function() { can.onmotion.hidden(can, target) }, can.base.isFunc(cb) && cb(sub)
|
|
||||||
}, target, field)
|
|
||||||
},
|
|
||||||
_zone: function(can, zone, index, cb, field) { zone._delay_init = function() { can.onimport.plug(can, {index: index, style: html.OUTPUT, mode: mdb.ZONE, field: field}, function(sub) {
|
_zone: function(can, zone, index, cb, field) { zone._delay_init = function() { can.onimport.plug(can, {index: index, style: html.OUTPUT, mode: mdb.ZONE, field: field}, function(sub) {
|
||||||
sub.run = function(event, cmds, cb) { can.request(event, {mode: mdb.ZONE}), can.runActionCommand(event, index, cmds, cb) }
|
sub.run = function(event, cmds, cb) { can.runActionCommand(can.request(event, {mode: mdb.ZONE}), index, cmds, cb) }
|
||||||
var action = can.core.List(sub.Conf(ctx.INPUTS), function(item) { if (item.type == html.BUTTON && [ice.LIST, ice.BACK].indexOf(item.name) == -1) { return item.name } })
|
|
||||||
zone._icon(kit.Dict(
|
zone._icon(kit.Dict(
|
||||||
can.page.unicode.refresh, function(event) { sub.Update(event) },
|
can.page.unicode.refresh, function(event) { sub.Update(event) },
|
||||||
"+", function(event) { sub.Update(event, [ctx.ACTION, mdb.CREATE]) },
|
"+", function(event) { sub.Update(event, [ctx.ACTION, mdb.CREATE]) },
|
||||||
"=", function() { can.onimport.tabview(can, "", sub._index, ctx.INDEX) },
|
"=", function() { can.onimport.tabview(can, "", sub._index, ctx.INDEX) },
|
||||||
))
|
))
|
||||||
|
var action = can.core.List(sub.Conf(ctx.INPUTS), function(item) { if (item.type == html.BUTTON && [ice.LIST, ice.BACK].indexOf(item.name) == -1) { return item.name } })
|
||||||
sub.onexport.output = function(_sub, msg) { zone._total(msg.Length()), cb(sub, msg)
|
sub.onexport.output = function(_sub, msg) { zone._total(msg.Length()), cb(sub, msg)
|
||||||
zone._menu = shy({_trans: sub._trans}, action.concat(can.base.Obj(msg.Option(ice.MSG_ACTION), [])), function(event, button, meta, carte) {
|
zone._menu = shy({_trans: sub._trans}, action.concat(can.base.Obj(msg.Option(ice.MSG_ACTION), [])), function(event, button, meta, carte) {
|
||||||
sub.Update(event, [ctx.ACTION, button]), carte.close()
|
sub.Update(event, [ctx.ACTION, button]), carte.close()
|
||||||
@ -126,8 +67,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
|||||||
}},
|
}},
|
||||||
{view: html.LIST, _init: function(target) { can.ui.zone = can.ui.zone||{}, can.ui.zone[zone.name] = zone, zone._target = target
|
{view: html.LIST, _init: function(target) { can.ui.zone = can.ui.zone||{}, can.ui.zone[zone.name] = zone, zone._target = target
|
||||||
zone._total = function(total) { return can.page.Modify(can, zone._search, {placeholder: "search in "+total+" items"}), total }
|
zone._total = function(total) { return can.page.Modify(can, zone._search, {placeholder: "search in "+total+" items"}), total }
|
||||||
zone._icon = function(list) {
|
zone._icon = function(list) { can.page.Select(can, zone._legend, html.SPAN_ICON, function(target) { can.page.Remove(can, target) })
|
||||||
can.page.Select(can, zone._legend, html.SPAN_ICON, function(target) { can.page.Remove(can, target) })
|
|
||||||
can.core.Item(list, function(name, button) { can.onimport._icon(can, name, button, zone._legend) })
|
can.core.Item(list, function(name, button) { can.onimport._icon(can, name, button, zone._legend) })
|
||||||
}
|
}
|
||||||
zone.refresh = function() { can.onmotion.clear(can, target), zone._init(target, zone) }
|
zone.refresh = function() { can.onmotion.clear(can, target), zone._init(target, zone) }
|
||||||
@ -137,8 +77,16 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
|||||||
]}
|
]}
|
||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
tree: function(can, list, field, split, cb, target, node) {
|
_icon: function(can, name, button, target) { can.page.Append(can, target, [{text: [can.page.unicode[name]||name, html.SPAN, html.ICON], onclick: function(event) {
|
||||||
node = node||{"": target}; can.core.List(list, function(item) { item[field] && can.core.List(item[field].split(split), function(value, index, array) { if (!value) { return }
|
can.base.isFunc(button)? button(event, button): can.onaction[button](event, can, button), can.onkeymap.prevent(event)
|
||||||
|
}}]) },
|
||||||
|
icon: function(can, msg, target, cb) { return msg.Table(function(value) { value.icon = can.misc.PathJoin(value.icon||can.page.drawText(can, value.name, 80))
|
||||||
|
return can.page.Append(can, target, [{view: html.ITEM, list: [{view: html.ICON, list: [{img: value.icon+(value.space? "?pod="+value.space: "")}]}, {view: [mdb.NAME, "", value.name]}], _init: function(target) {
|
||||||
|
cb && cb(target, value)
|
||||||
|
}, onclick: function(event) { can.sup.onexport.record(can.sup, value.name, mdb.NAME, value) }}])._target
|
||||||
|
}) },
|
||||||
|
tree: function(can, list, field, split, cb, target, node) { node = node||{"": target}
|
||||||
|
can.core.List(list, function(item) { item[field] && can.core.List(item[field].split(split), function(value, index, array) { if (!value) { return }
|
||||||
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split); if (node[name]) { return }
|
var last = array.slice(0, index).join(split), name = array.slice(0, index+1).join(split); if (node[name]) { return }
|
||||||
var ui = can.page.Append(can, node[last], [{view: html.ITEM, list: [
|
var ui = can.page.Append(can, node[last], [{view: html.ITEM, list: [
|
||||||
{view: [[html.EXPAND, item.expand? cli.OPEN: ""], html.DIV, (index==array.length-1? "": can.page.unicode.close)]},
|
{view: [[html.EXPAND, item.expand? cli.OPEN: ""], html.DIV, (index==array.length-1? "": can.page.unicode.close)]},
|
||||||
@ -169,11 +117,55 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
|||||||
list: function(can, root, cb, target, cbs) { target = target||can._output
|
list: function(can, root, cb, target, cbs) { target = target||can._output
|
||||||
can.core.List(root.list, function(item) { var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name], onclick: function(event) {
|
can.core.List(root.list, function(item) { var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name], onclick: function(event) {
|
||||||
can.base.isFunc(cb) && cb(event, item) || can.onmotion.toggle(can, ui.list), can.onmotion.select(can, target, html.DIV_ITEM, event.target)
|
can.base.isFunc(cb) && cb(event, item) || can.onmotion.toggle(can, ui.list), can.onmotion.select(can, target, html.DIV_ITEM, event.target)
|
||||||
}, _init: function(target) {
|
}, _init: function(target) { if (item.meta.name == "_") { target.innerHTML = "", can.onappend.style(can, html.SPACE, target) }
|
||||||
if (item.meta.name == "_") { target.innerHTML = "", can.onappend.style(can, html.SPACE, target) }
|
|
||||||
cbs && cbs(target, item)
|
cbs && cbs(target, item)
|
||||||
}}, {view: html.LIST}]); can.onimport.list(can, item, cb, ui.list, cbs) })
|
}}, {view: html.LIST}]); can.onimport.list(can, item, cb, ui.list, cbs) })
|
||||||
},
|
},
|
||||||
|
tabs: function(can, list, cb, cbs, action) { action = action||can._action; return can.page.Append(can, action, can.core.List(list, function(tabs) {
|
||||||
|
function close(target) { var next = target.nextSibling||target.previousSibling; if (!next) { return }
|
||||||
|
next.click(), can.onmotion.delay(can, function() { can.base.isFunc(cbs) && cbs(tabs), can.page.Remove(can, target) })
|
||||||
|
}
|
||||||
|
return {view: html.TABS, title: tabs.text, list: [{text: [tabs.name, html.SPAN, mdb.NAME]}, {icon: mdb.DELETE, onclick: function(event) {
|
||||||
|
close(tabs._target), can.onkeymap.prevent(event)
|
||||||
|
}}], onclick: function(event) {
|
||||||
|
can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs)
|
||||||
|
}, _init: function(target) { var menu = tabs._menu||shy(); tabs._target = target, target._close = function() { close(target) }
|
||||||
|
can.page.Modify(can, target, {draggable: true, _close: function() { close(target) },
|
||||||
|
ondragstart: function(event) { action._drop = function(before) { before.parentNode == action && action.insertBefore(target, before) } },
|
||||||
|
ondragover: function(event) { event.preventDefault(), action._drop(event.target) },
|
||||||
|
oncontextmenu: function(event) { can.user.carte(event, can, kit.Dict(
|
||||||
|
"Close", function(event) { close(target) },
|
||||||
|
"Close Other", function(event) { can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || close(target) }) },
|
||||||
|
"Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) {
|
||||||
|
can.page.Select(can, target, "span.name", function(target) { can.page.Modify(can, target, list[0]||tabs.name) })
|
||||||
|
}) }, menu.meta,
|
||||||
|
), ["Close", "Close Other", "Rename Tabs", ""].concat(can.base.getValid(menu.list, can.core.Item(menu.meta))), function(event, button, meta) { (meta[button]||menu)(event, button, meta) }) },
|
||||||
|
}), target.click()
|
||||||
|
}}
|
||||||
|
}))._target },
|
||||||
|
tool: function(can, list, cb, target, status) { target = target||can._output, status = status||can._status
|
||||||
|
can.core.List(list.reverse(), function(meta) { can.base.isString(meta) && (meta = {index: meta}), meta.mode = html.FLOAT
|
||||||
|
can.onimport.plug(can, meta, function(sub) { can.onmotion.hidden(can, sub._target), sub._legend._target = sub._target
|
||||||
|
status.appendChild(sub._legend), sub._legend.oncontextmenu = sub._legend.onclick, sub._legend.onclick = function(event) { can.misc.Event(event, can, function(msg) {
|
||||||
|
if (can.page.SelectOne(can, status, nfs.PT+html.SELECT, function(target) { can.onmotion.hidden(can, target._target), can.page.ClassList.del(can, target, html.SELECT); return target }) == sub._legend) { return }
|
||||||
|
sub.onimport.size(sub, can.ConfHeight()/2, (can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0))/2)
|
||||||
|
can.onmotion.select(can, status, html.LEGEND, sub._legend), can.onmotion.toggle(can, sub._target, true), sub.Focus()
|
||||||
|
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.onaction._close = function() { can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend) }
|
||||||
|
can.base.isFunc(cb) && cb(sub)
|
||||||
|
}, target)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
plug: function(can, meta, cb, target, field) { if (!meta || !meta.index) { return }
|
||||||
|
meta.type = meta.type||html.PLUG, meta.name = meta.index, can.onappend.plugin(can, meta, function(sub) { sub.sup = can
|
||||||
|
sub.run = function(event, cmds, cb) {
|
||||||
|
if (can.page.Select(can, sub._option, "input[name=path]").length > 0 && sub.Option(nfs.PATH) == "") { sub.request(event, {path: nfs.PWD}) }
|
||||||
|
can.runActionCommand(can.request(event, can.Option()), meta.index, cmds, cb)
|
||||||
|
}, sub.onaction.close = function() { can.onmotion.hidden(can, target) }, can.base.isFunc(cb) && cb(sub)
|
||||||
|
}, target, field)
|
||||||
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONLAYOUT, {
|
Volcanos(chat.ONLAYOUT, {
|
||||||
_init: function(can, height, width) { can.core.CallFunc([can.onimport, html.LAYOUT], {can: can, height: height, width: width}) },
|
_init: function(can, height, width) { can.core.CallFunc([can.onimport, html.LAYOUT], {can: can, height: height, width: width}) },
|
||||||
@ -187,7 +179,7 @@ Volcanos(chat.ONLAYOUT, {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {
|
Volcanos(chat.ONEXPORT, {
|
||||||
title: function(can, title) { can.isCmdMode() && can.user.title(title) },
|
title: function(can, title) { can.sup.onexport.title(can, title) },
|
||||||
table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return }
|
table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return }
|
||||||
var res = [msg.append && msg.append.join(mdb.FS)]; msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) }); return res.join(lex.NL)
|
var res = [msg.append && msg.append.join(mdb.FS)]; msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) }); return res.join(lex.NL)
|
||||||
},
|
},
|
||||||
|
200
proto.js
200
proto.js
@ -13,16 +13,17 @@ var ice = {
|
|||||||
TB: "\t", SP: " ", DF: ":", EQ: "=", AT: "@", PS: "/", PT: ".", FS: ",", QS: "?", NL: "\n", LT: "<", GT: ">",
|
TB: "\t", SP: " ", DF: ":", EQ: "=", AT: "@", PS: "/", PT: ".", FS: ",", QS: "?", NL: "\n", LT: "<", GT: ">",
|
||||||
OK: "ok", TRUE: "true", FALSE: "false", SUCCESS: "success", FAILURE: "failure", PROCESS: "process",
|
OK: "ok", TRUE: "true", FALSE: "false", SUCCESS: "success", FAILURE: "failure", PROCESS: "process",
|
||||||
|
|
||||||
AUTO: "auto", HOME: "home", MAIN: "main",
|
HTTP: "http", HTML: "html",
|
||||||
HTTP: "http", HTML: "html", LIST: "list", BACK: "back",
|
HOME: "home", MAIN: "main",
|
||||||
SHOW: "show", HIDE: "hide", HELP: "help", COPY: "copy",
|
LIST: "list", BACK: "back",
|
||||||
VIEW: "view", MODE: "mode", SHIP: "ship", EXEC: "exec",
|
SHOW: "show", HIDE: "hide",
|
||||||
|
VIEW: "view", MODE: "mode",
|
||||||
|
COPY: "copy", HELP: "help",
|
||||||
|
AUTO: "auto", EXEC: "exec",
|
||||||
|
SHIP: "ship",
|
||||||
|
|
||||||
DEV: "dev", POD: "pod", CTX: "ctx", CMD: "cmd", ARG: "arg", OPT: "opt",
|
DEV: "dev", POD: "pod", CTX: "ctx", CMD: "cmd", ARG: "arg", OPT: "opt",
|
||||||
CAN: "can", MSG: "msg", RUN: "run", RES: "res", ERR: "err",
|
CAN: "can", MSG: "msg", RUN: "run", RES: "res", ERR: "err",
|
||||||
CAN_PLUGIN: "can._plugin",
|
|
||||||
CAN_DEBUG: "can.debug",
|
|
||||||
LOG_DEBUG: "log.debug",
|
|
||||||
|
|
||||||
MSG_DETAIL: "detail", MSG_OPTION: "option", MSG_APPEND: "append", MSG_RESULT: "result",
|
MSG_DETAIL: "detail", MSG_OPTION: "option", MSG_APPEND: "append", MSG_RESULT: "result",
|
||||||
MSG_SESSID: "sessid", MSG_FIELDS: "fields",
|
MSG_SESSID: "sessid", MSG_FIELDS: "fields",
|
||||||
@ -40,25 +41,20 @@ var ice = {
|
|||||||
MSG_PREFIX: "_prefix",
|
MSG_PREFIX: "_prefix",
|
||||||
|
|
||||||
MSG_USERNICK: "user.nick", MSG_USERNAME: "user.name", MSG_USERROLE: "user.role", MSG_LANGUAGE: "user.lang",
|
MSG_USERNICK: "user.nick", MSG_USERNAME: "user.name", MSG_USERROLE: "user.role", MSG_LANGUAGE: "user.lang",
|
||||||
MSG_TITLE: "sess.title", MSG_THEME: "sess.theme", MSG_RIVER: "sess.river", MSG_STORM: "sess.storm", MSG_WIDTH: "sess.width", MSG_HEIGHT: "sess.height",
|
MSG_TITLE: "sess.title", MSG_THEME: "sess.theme", MSG_RIVER: "sess.river", MSG_STORM: "sess.storm",
|
||||||
MSG_MODE: "sess.mode", MSG_DAEMON: "sess.daemon",
|
MSG_HEIGHT: "sess.height", MSG_WIDTH: "sess.width", MSG_MODE: "sess.mode", MSG_DAEMON: "sess.daemon",
|
||||||
LOG_DISABLE: "log.disable",
|
LOG_DISABLE: "log.disable",
|
||||||
|
|
||||||
ErrWarn: "warn: ", ErrNotLogin: "not login: ", ErrNotRight: "not right: ", ErrNotFound: "not found: ", ErrNotValid: "not valid: ",
|
ErrWarn: "warn: ", ErrNotLogin: "not login: ", ErrNotRight: "not right: ", ErrNotFound: "not found: ", ErrNotValid: "not valid: ",
|
||||||
USR: "usr",
|
CAN_PLUGIN: "can._plugin", CAN_DEBUG: "can.debug", LOG_DEBUG: "log.debug",
|
||||||
USR_ICEBERGS: "usr/icebergs/",
|
NFS: "nfs", USR: "usr", USR_VOLCANOS: "usr/volcanos/",
|
||||||
USR_VOLCANOS: "usr/volcanos/",
|
|
||||||
LIB_MISC: "lib/misc.js",
|
|
||||||
LIB_PAGE: "lib/page.js",
|
|
||||||
REQUIRE: "require",
|
|
||||||
|
|
||||||
NFS: "nfs",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var ctx = {
|
var ctx = {
|
||||||
CONTEXT: "context", COMMAND: "command", CONFIG: "config", INPUTS: "inputs", FEATURE: "feature",
|
CONTEXT: "context", COMMAND: "command", CONFIG: "config", INPUTS: "inputs", FEATURE: "feature",
|
||||||
INDEX: "index", ARGS: "args", STYLE: "style", DISPLAY: "display", ACTION: "action",
|
INDEX: "index", ARGS: "args", STYLE: "style", DISPLAY: "display", ACTION: "action",
|
||||||
EXTRA_INDEX: "extra.index", EXTRA_ARGS: "extra.args",
|
EXTRA_INDEX: "extra.index", EXTRA_ARGS: "extra.args",
|
||||||
|
RUN: "run",
|
||||||
}
|
}
|
||||||
var mdb = {
|
var mdb = {
|
||||||
DICT: "dict", META: "meta", HASH: "hash", LIST: "list",
|
DICT: "dict", META: "meta", HASH: "hash", LIST: "list",
|
||||||
@ -78,33 +74,36 @@ var mdb = {
|
|||||||
QS: ice.QS, AT: ice.AT,
|
QS: ice.QS, AT: ice.AT,
|
||||||
EQ: ice.EQ, FS: ice.FS,
|
EQ: ice.EQ, FS: ice.FS,
|
||||||
}
|
}
|
||||||
var web = {CHAT: "chat", LINK: "link",
|
var web = {CHAT: "chat",
|
||||||
DREAM: "dream", SPACE: "space", ROUTE: "route", SPIDE: "spide", COUNT: "count", SHARE: "share",
|
DREAM: "dream", SPACE: "space", ROUTE: "route", SPIDE: "spide", COUNT: "count", SHARE: "share",
|
||||||
WEBSITE: "website", DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", INPUT: "input",
|
WEBSITE: "website", DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", INPUT: "input",
|
||||||
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage",
|
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage",
|
||||||
SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/",
|
SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/",
|
||||||
WORKER: "worker", SERVER: "server", GATEWAY: "gateway",
|
WORKER: "worker", SERVER: "server", GATEWAY: "gateway",
|
||||||
|
|
||||||
AT: "@", QS: "?", HTTP: "http",
|
AT: "@", QS: "?", LINK: "link", HTTP: "http",
|
||||||
GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE",
|
GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE",
|
||||||
Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded",
|
Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded",
|
||||||
IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm",
|
IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm",
|
||||||
UPDATE: "update", TOGGLE: "toggle", HIDDEN: "hidden",
|
|
||||||
|
|
||||||
CODE_GIT_REPOS: "web.code.git.repos", CODE_GIT_STATUS: "web.code.git.status",
|
CODE_GIT_STATUS: "web.code.git.status",
|
||||||
CODE_XTERM: "web.code.xterm", CODE_VIMER: "web.code.vimer", CODE_INNER: "web.code.inner",
|
CODE_GIT_REPOS: "web.code.git.repos",
|
||||||
WIKI_WORD: "web.wiki.word", WIKI_DRAW: "web.wiki.draw", WIKI_FEEL: "web.wiki.feel",
|
|
||||||
CHAT_MACOS_DESKTOP: "web.chat.macos.desktop", CHAT_MACOS_SESSION: "web.chat.macos.session",
|
|
||||||
CHAT_IFRAME: "web.chat.iframe", CHAT_FAVOR: "web.chat.favor",
|
|
||||||
TEAM_PLAN: "web.team.plan",
|
|
||||||
CHAT_FLOWS: "web.chat.flows",
|
|
||||||
WIKI_PORTAL: "web.wiki.portal",
|
|
||||||
CHAT_PORTAL: "web.chat.portal",
|
|
||||||
CODE_COMPILE: "web.code.compile",
|
CODE_COMPILE: "web.code.compile",
|
||||||
|
CODE_VIMER: "web.code.vimer",
|
||||||
|
CODE_INNER: "web.code.inner",
|
||||||
|
CODE_XTERM: "web.code.xterm",
|
||||||
|
WIKI_WORD: "web.wiki.word",
|
||||||
|
WIKI_DRAW: "web.wiki.draw",
|
||||||
|
WIKI_PORTAL: "web.wiki.portal",
|
||||||
|
CHAT_MACOS_DESKTOP: "web.chat.macos.desktop",
|
||||||
|
CHAT_MACOS_SESSION: "web.chat.macos.session",
|
||||||
|
CHAT_FAVOR: "web.chat.favor",
|
||||||
|
CHAT_FLOWS: "web.chat.flows",
|
||||||
|
TEAM_PLAN: "web.team.plan",
|
||||||
}
|
}
|
||||||
var aaa = {
|
var aaa = {
|
||||||
LOGIN: "login", LOGOUT: "logout", INVITE: "invite", TOKEN: "token",
|
|
||||||
USER: "user",
|
USER: "user",
|
||||||
|
LOGIN: "login", LOGOUT: "logout", INVITE: "invite", TOKEN: "token",
|
||||||
USERNICK: "usernick", USERNAME: "username", PASSWORD: "password", USERROLE: "userrole", BACKGROUND: "background", AVATAR: "avatar",
|
USERNICK: "usernick", USERNAME: "username", PASSWORD: "password", USERROLE: "userrole", BACKGROUND: "background", AVATAR: "avatar",
|
||||||
LANGUAGE: "language", ENGLISH: "english", CHINESE: "chinese",
|
LANGUAGE: "language", ENGLISH: "english", CHINESE: "chinese",
|
||||||
VOID: "void", TECH: "tech", ROOT: "root",
|
VOID: "void", TECH: "tech", ROOT: "root",
|
||||||
@ -114,6 +113,7 @@ var lex = {
|
|||||||
TB: ice.TB, SP: ice.SP, NL: ice.NL,
|
TB: ice.TB, SP: ice.SP, NL: ice.NL,
|
||||||
}
|
}
|
||||||
var yac = {
|
var yac = {
|
||||||
|
STASK: "stack",
|
||||||
}
|
}
|
||||||
var ssh = {
|
var ssh = {
|
||||||
SHELL: "shell",
|
SHELL: "shell",
|
||||||
@ -125,33 +125,25 @@ var tcp = {
|
|||||||
HOST: "host", PORT: "port",
|
HOST: "host", PORT: "port",
|
||||||
}
|
}
|
||||||
var nfs = {
|
var nfs = {
|
||||||
DIR: "dir", CAT: "cat", DEFS: "defs", TRASH: "trash", DIR_ROOT: "dir_root",
|
DIR: "dir", CAT: "cat", DEFS: "defs", PACK: "pack", TRASH: "trash", DIR_ROOT: "dir_root",
|
||||||
COPY: "copy", EDIT: "edit", SAVE: "save", LOAD: "load", FIND: "find", GREP: "grep", TAGS: "tags",
|
COPY: "copy", EDIT: "edit", SAVE: "save", LOAD: "load", FIND: "find", GREP: "grep", TAGS: "tags",
|
||||||
CONTENT: "content", RECENT: "recent", SCRIPT: "script", MODULE: "module", SOURCE: "source", TARGET: "target", REPOS: "repos", MASTER: "master",
|
CONTENT: "content", RECENT: "recent", SCRIPT: "script", MODULE: "module", SOURCE: "source", TARGET: "target", REPOS: "repos", MASTER: "master",
|
||||||
PATH: "path", FILE: "file", LINE: "line", SIZE: "size",
|
PATH: "path", FILE: "file", LINE: "line", SIZE: "size",
|
||||||
OPENS: "opens", REPLACE: "replace", FROM: "from", TO: "to",
|
REPLACE: "replace", FROM: "from", TO: "to",
|
||||||
SVG: "svg", HTML: "html", CSS: "css", JS: "js", SH: "sh", GO: "go", CSV: "csv", JSON: "json", SHY: "shy",
|
SVG: "svg", HTML: "html", CSS: "css", JS: "js", SH: "sh", GO: "go", CSV: "csv", JSON: "json", SHY: "shy",
|
||||||
TXT: "txt", PNG: "png", WEBM: "webm",
|
TXT: "txt", PNG: "png", WEBM: "webm",
|
||||||
_CSS: ".css", _JS: ".js",
|
_CSS: ".css", _JS: ".js",
|
||||||
|
PWD: "./", SRC: "src/", USR: "usr/", USR_LOCAL_WORK: "usr/local/work/", SRC_DOCUMENT: "src/document/",
|
||||||
DF: ice.DF, PS: ice.PS, PT: ice.PT,
|
DF: ice.DF, PS: ice.PS, PT: ice.PT,
|
||||||
PWD: "./", SRC: "src/", USR: "usr/",
|
|
||||||
USR_LOCAL_WORK: "usr/local/work/",
|
|
||||||
SRC_DOCUMENT: "src/document/",
|
|
||||||
PACK: "pack",
|
|
||||||
|
|
||||||
IMAGE_PNG: "image/png",
|
|
||||||
IMAGE_JPEG: "image/jpeg",
|
|
||||||
}
|
}
|
||||||
var cli = {
|
var cli = {
|
||||||
PWD: "pwd", SYSTEM: "system", DAEMON: "daemon", ORDER: "order", BUILD: "build",
|
OPENS: "opens", SYSTEM: "system", DAEMON: "daemon", ORDER: "order", BUILD: "build",
|
||||||
BEGIN: "begin", START: "start", OPEN: "open", CLOSE: "close", STOP: "stop", END: "end", RESTART: "restart",
|
BEGIN: "begin", START: "start", OPEN: "open", CLOSE: "close", STOP: "stop", END: "end", RESTART: "restart",
|
||||||
COLOR: "color", BLACK: "black", WHITE: "white", BLUE: "blue", RED: "red", GRAY: "gray", CYAN: "cyan", GREEN: "green", PURPLE: "purple", YELLOW: "yellow",
|
COLOR: "color", BLACK: "black", WHITE: "white", BLUE: "blue", RED: "red", GRAY: "gray", CYAN: "cyan", GREEN: "green", PURPLE: "purple", YELLOW: "yellow",
|
||||||
MAGENTA: "magenta", SILVER: "silver", ALICEBLUE: "aliceblue", TRANSPARENT: "transparent",
|
MAGENTA: "magenta", SILVER: "silver", ALICEBLUE: "aliceblue", TRANSPARENT: "transparent",
|
||||||
MAKE: "make", MAIN: "main", EXEC: "exec", DONE: "done", COST: "cost", FROM: "from", CLEAR: "clear",
|
MAKE: "make", EXEC: "exec", DONE: "done", COST: "cost", FROM: "from", CLEAR: "clear",
|
||||||
RUN: "run",
|
|
||||||
PLAY: "play",
|
|
||||||
OPENS: "opens",
|
|
||||||
LINUX: "linux", DARWIN: "darwin", WINDOWS: "windows",
|
LINUX: "linux", DARWIN: "darwin", WINDOWS: "windows",
|
||||||
|
PWD: "pwd",
|
||||||
}
|
}
|
||||||
var log = {
|
var log = {
|
||||||
INFO: "info", WARN: "warn", ERROR: "error", DEBUG: "debug", TRACE: "trace",
|
INFO: "info", WARN: "warn", ERROR: "error", DEBUG: "debug", TRACE: "trace",
|
||||||
@ -160,11 +152,14 @@ var log = {
|
|||||||
var code = {
|
var code = {
|
||||||
FAVOR: "favor", XTERM: "xterm", INNER: "inner", VIMER: "vimer",
|
FAVOR: "favor", XTERM: "xterm", INNER: "inner", VIMER: "vimer",
|
||||||
WEBPACK: "webpack", BINPACK: "binpack", AUTOGEN: "autogen", COMPILE: "compile", PUBLISH: "publish",
|
WEBPACK: "webpack", BINPACK: "binpack", AUTOGEN: "autogen", COMPILE: "compile", PUBLISH: "publish",
|
||||||
COMMENT: "comment", KEYWORD: "keyword",
|
|
||||||
PACKAGE: "package", DATATYPE: "datatype", FUNCTION: "function", CONSTANT: "constant",
|
|
||||||
STRING: "string", NUMBER: "number", BOOLEAN: "boolean", OBJECT: "object", ARRAY: "array",
|
|
||||||
TEMPLATE: "template", COMPLETE: "complete", NAVIGATE: "navigate", CURRENT: "current",
|
TEMPLATE: "template", COMPLETE: "complete", NAVIGATE: "navigate", CURRENT: "current",
|
||||||
PULL: "pull", PUSH: "push",
|
PULL: "pull", PUSH: "push",
|
||||||
|
COMMENT: "comment", KEYWORD: "keyword",
|
||||||
|
PACKAGE: "package", DATATYPE: "datatype", FUNCTION: "function", CONSTANT: "constant",
|
||||||
|
STRING: "string", NUMBER: "number", BOOLEAN: "boolean", OBJECT: "object", ARRAY: "array", UNDEFINED: "undefined",
|
||||||
|
|
||||||
|
META: "Meta", ALT: "Alt", CONTROL: "Control", SHIFT: "Shift", TAB: "Tab", ESCAPE: "Escape", ENTER: "Enter",
|
||||||
|
CMD: "Cmd", CTRL: "Ctrl", SPACE: "Space", BACKSPACE: "Backspace", ESC: "Esc", PS: "/",
|
||||||
}
|
}
|
||||||
var wiki = {
|
var wiki = {
|
||||||
TITLE: "title", BRIEF: "brief", REFER: "refer", SPARK: "spark", SHELL: "shell",
|
TITLE: "title", BRIEF: "brief", REFER: "refer", SPARK: "spark", SHELL: "shell",
|
||||||
@ -208,21 +203,18 @@ var chat = {
|
|||||||
], PLUGIN_INPUT: "/plugin/input/", PLUGIN_STORY: "/plugin/story/", PLUGIN_LOCAL: "/plugin/local/",
|
], PLUGIN_INPUT: "/plugin/input/", PLUGIN_STORY: "/plugin/story/", PLUGIN_LOCAL: "/plugin/local/",
|
||||||
PLUGIN_STATE_JS: "/plugin/state.js", PLUGIN_INPUT_JS: "/plugin/input.js", PLUGIN_TABLE_JS: "/plugin/table.js",
|
PLUGIN_STATE_JS: "/plugin/state.js", PLUGIN_INPUT_JS: "/plugin/input.js", PLUGIN_TABLE_JS: "/plugin/table.js",
|
||||||
ONENGINE: "onengine", ONDAEMON: "ondaemon", ONAPPEND: "onappend", ONLAYOUT: "onlayout", ONMOTION: "onmotion", ONKEYMAP: "onkeymap",
|
ONENGINE: "onengine", ONDAEMON: "ondaemon", ONAPPEND: "onappend", ONLAYOUT: "onlayout", ONMOTION: "onmotion", ONKEYMAP: "onkeymap",
|
||||||
ONIMPORT: "onimport", ONSYNTAX: "onsyntax", ONFIGURE: "onfigure", ONACTION: "onaction", ONDETAIL: "ondetail", ONEXPORT: "onexport", ONPLUGIN: "onplugin",
|
ONIMPORT: "onimport", ONACTION: "onaction", ONDETAIL: "ondetail", ONEXPORT: "onexport",
|
||||||
|
ONSYNTAX: "onsyntax", ONFIGURE: "onfigure", ONPLUGIN: "onplugin",
|
||||||
|
|
||||||
ONSIZE: "onsize", ONMAIN: "onmain", ONLOGIN: "onlogin", ONREMOTE: "onremote", ONSEARCH: "onsearch",
|
ONSIZE: "onsize", ONMAIN: "onmain", ONLOGIN: "onlogin", ONREMOTE: "onremote", ONSEARCH: "onsearch",
|
||||||
ONRESIZE: "onresize", ONKEYUP: "onkeyup", ONKEYDOWN: "onkeydown", ONMOUSEENTER: "onmouseenter", ORIENTATIONCHANGE: "orientationchange",
|
ONRESIZE: "onresize", ONKEYUP: "onkeyup", ONKEYDOWN: "onkeydown", ONMOUSEENTER: "onmouseenter", ORIENTATIONCHANGE: "orientationchange",
|
||||||
ONSTORM_SELECT: "onstorm_select", ONACTION_NOSTORM: "onaction_nostorm", ONACTION_NOTOOL: "onaction_notool", ONACTION_TOUCH: "onaction_touch", ONACTION_CMD: "onaction_cmd",
|
ONSTORM_SELECT: "onstorm_select", ONACTION_NOSTORM: "onaction_nostorm", ONACTION_NOTOOL: "onaction_notool", ONACTION_TOUCH: "onaction_touch", ONACTION_CMD: "onaction_cmd", ONACTION_REMOVE: "onaction_remove",
|
||||||
ONACTION_REMOVE: "onaction_remove",
|
|
||||||
ONOPENSEARCH: "onopensearch", ONSEARCH_FOCUS: "onsearch_focus", ONCOMMAND_FOCUS: "oncommand_focus",
|
ONOPENSEARCH: "onopensearch", ONSEARCH_FOCUS: "onsearch_focus", ONCOMMAND_FOCUS: "oncommand_focus",
|
||||||
ONTHEMECHANGE: "onthemechange",
|
ONTHEMECHANGE: "onthemechange", ONLAYOUT: "onlayout", ONUNLOAD: "onunload", ONWEBPACK: "onwebpack",
|
||||||
ONUNLOAD: "onunload",
|
|
||||||
ONLAYOUT: "onlayout",
|
|
||||||
ONWEBPACK: "onwebpack",
|
|
||||||
ONTOAST: "ontoast", ONDEBUG: "ondebug", ONSHARE: "onshare", ONPRINT: "onprint",
|
ONTOAST: "ontoast", ONDEBUG: "ondebug", ONSHARE: "onshare", ONPRINT: "onprint",
|
||||||
|
|
||||||
_INIT: "_init", _DELAY_INIT: "_delay_init",
|
_INIT: "_init", _DELAY_INIT: "_delay_init",
|
||||||
_TRANS: "_trans", _STYLE: "_style", _ENGINE: "_engine", _SEARCH: "_search", _OUTPUTS_CURRENT: "_outputs.-1", _NAMES: "_names", _TOAST: "_toast",
|
_TRANS: "_trans", _STYLE: "_style", _ENGINE: "_engine", _SEARCH: "_search", _NAMES: "_names", _TOAST: "_toast",
|
||||||
}
|
}
|
||||||
var team = {
|
var team = {
|
||||||
TASK: "task", PLAN: "plan",
|
TASK: "task", PLAN: "plan",
|
||||||
@ -243,21 +235,15 @@ var html = {PLUGIN_MARGIN: 10, ACTION_HEIGHT: 32, ACTION_MARGIN: 200,
|
|||||||
FIELDSET_PANEL: "fieldset.panel", FIELDSET_PLUGIN: "fieldset.plugin", FIELDSET_STORY: "fieldset.story", FIELDSET_PLUG: "fieldset.plug",
|
FIELDSET_PANEL: "fieldset.panel", FIELDSET_PLUGIN: "fieldset.plugin", FIELDSET_STORY: "fieldset.story", FIELDSET_PLUG: "fieldset.plug",
|
||||||
FIELDSET_FLOAT: "fieldset.float", FIELDSET_INPUT: "fieldset.input",
|
FIELDSET_FLOAT: "fieldset.float", FIELDSET_INPUT: "fieldset.input",
|
||||||
|
|
||||||
H1: "h1", H2: "h2", H3: "h3",
|
H1: "h1", H2: "h2", H3: "h3", UL: "ul", OL: "ol", LI: "li", BR: "br", HR: "hr",
|
||||||
CODE: "code",
|
A: "a", SPAN: "span", CODE: "code", DIV: "div",
|
||||||
UL: "ul", OL: "ol", LI: "li",
|
SVG: "svg", IMG: "img", VIDEO: "video", AUDIO: "audio", CANVAS: "canvas", IFRAME: "iframe",
|
||||||
TABLE: "table", THEAD: "thead", TBODY: "tbody", TR: "tr", TH: "th", TD: "td",
|
WSS: "wss", WEBVIEW: "webview", CHROME: "chrome", MOBILE: "mobile", LANDSCAPE: "landscape",
|
||||||
HEADER: "header", NAV: "nav", MAIN: "main", ASIDE: "aside", FOOTER: "footer",
|
BODY: "body", FORM: "form", LABEL: "label", TITLE: "title", INNER: "inner", SPACE: "space", CLICK: "click",
|
||||||
A: "a", SPAN: "span", DIV: "div", BR: "br", HR: "hr",
|
|
||||||
IMG: "img", VIDEO: "video", AUDIO: "audio", CANVAS: "canvas", IFRAME: "iframe",
|
|
||||||
SVG: "svg",
|
|
||||||
FORM: "form", LABEL: "label",
|
|
||||||
SELECT: "select", INPUT: "input", TEXT: "text", FILE: "file", TEXTAREA: "textarea", BUTTON: "button",
|
SELECT: "select", INPUT: "input", TEXT: "text", FILE: "file", TEXTAREA: "textarea", BUTTON: "button",
|
||||||
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", USERNAME: "username", PASSWORD: "password",
|
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", USERNAME: "username", PASSWORD: "password",
|
||||||
|
TABLE: "table", THEAD: "thead", TBODY: "tbody", TR: "tr", TH: "th", TD: "td",
|
||||||
BODY: "body",
|
HEADER: "header", NAV: "nav", MAIN: "main", ASIDE: "aside", FOOTER: "footer",
|
||||||
TITLE: "title", INNER: "inner", SPACE: "space", CLICK: "click",
|
|
||||||
WSS: "wss", WEBVIEW: "webview", CHROME: "chrome", MOBILE: "mobile", LANDSCAPE: "landscape",
|
|
||||||
|
|
||||||
BACKGROUND_COLOR: "background-color", COLOR: "color",
|
BACKGROUND_COLOR: "background-color", COLOR: "color",
|
||||||
PADDING: "padding", BORDER: "border", MARGIN: "margin", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y",
|
PADDING: "padding", BORDER: "border", MARGIN: "margin", MARGIN_TOP: "margin-top", MARGIN_X: "margin-x", MARGIN_Y: "margin-y",
|
||||||
@ -282,11 +268,6 @@ var html = {PLUGIN_MARGIN: 10, ACTION_HEIGHT: 32, ACTION_MARGIN: 200,
|
|||||||
DIV_FLOAT: "div.float", DIV_TOAST: "div.toast", DIV_CARTE: "div.carte",
|
DIV_FLOAT: "div.float", DIV_TOAST: "div.toast", DIV_CARTE: "div.carte",
|
||||||
DESKTOP: "desktop", DIV_DESKTOP: "div.desktop", DIV_EXPAND: "div.expand",
|
DESKTOP: "desktop", DIV_DESKTOP: "div.desktop", DIV_EXPAND: "div.expand",
|
||||||
}
|
}
|
||||||
var lang = {
|
|
||||||
SPACE: "space", UNDEFINED: "undefined", STRING: "string", NUMBER: "number", BOOLEAN: "boolean", FUNCTION: "function", OBJECT: "object", ARRAY: "array",
|
|
||||||
META: "Meta", ALT: "Alt", CONTROL: "Control", SHIFT: "Shift", TAB: "Tab", ESCAPE: "Escape", ENTER: "Enter",
|
|
||||||
CMD: "Cmd", CTRL: "Ctrl", SPACE: "Space", BACKSPACE: "Backspace", ESC: "Esc", PS: "/",
|
|
||||||
}
|
|
||||||
var svg = {
|
var svg = {
|
||||||
GROUP: "group", PID: "pid", GRID: "grid",
|
GROUP: "group", PID: "pid", GRID: "grid",
|
||||||
FIGURE: "figure", DATA: "data", SHIP: "ship", TRANS: "trans",
|
FIGURE: "figure", DATA: "data", SHIP: "ship", TRANS: "trans",
|
||||||
@ -300,13 +281,13 @@ var svg = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function shy(help, meta, list, cb) { var arg = arguments, i = 0; function next(type) {
|
function shy(help, meta, list, cb) { var arg = arguments, i = 0; function next(type) {
|
||||||
if (type == lang.OBJECT) { if (typeof arg[i] == lang.OBJECT && arg[i].length == undefined) { return arg[i++] }
|
if (type == code.OBJECT) { if (typeof arg[i] == code.OBJECT && arg[i].length == undefined) { return arg[i++] }
|
||||||
} else if (type == lang.ARRAY) { if (typeof arg[i] == lang.OBJECT && arg[i].length != undefined) { return arg[i++] }
|
} else if (type == code.ARRAY) { if (typeof arg[i] == code.OBJECT && arg[i].length != undefined) { return arg[i++] }
|
||||||
} else if (i < arg.length && (!type || type == typeof arg[i])) { return arg[i++] }
|
} else if (i < arg.length && (!type || type == typeof arg[i])) { return arg[i++] }
|
||||||
} return cb = typeof arg[arg.length-1] == lang.FUNCTION? arg[arg.length-1]: function() {}, cb.help = next(lang.STRING)||"", cb.meta = next(lang.OBJECT)||{}, cb.list = next(lang.ARRAY)||[], cb
|
} return cb = typeof arg[arg.length-1] == code.FUNCTION? arg[arg.length-1]: function() {}, cb.help = next(code.STRING)||"", cb.meta = next(code.OBJECT)||{}, cb.list = next(code.ARRAY)||[], cb
|
||||||
}; var _can_name = "", _can_path = ""
|
}; var _can_name = "", _can_path = ""
|
||||||
var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}, args: {}}, function(name, can, libs, cb) {
|
var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}, args: {}}, function(name, can, libs, cb) {
|
||||||
var meta = arguments.callee.meta, list = arguments.callee.list; if (typeof name == lang.OBJECT) {
|
var meta = arguments.callee.meta, list = arguments.callee.list; if (typeof name == code.OBJECT) {
|
||||||
if (name.length > 0) { return Volcanos({panels: [{name: chat.HEADER, style: html.HIDE, state: [mdb.TIME, aaa.USERNICK]}, {name: chat.ACTION, style: html.MAIN, tool: name}, {name: chat.FOOTER, style: html.HIDE}]}) }
|
if (name.length > 0) { return Volcanos({panels: [{name: chat.HEADER, style: html.HIDE, state: [mdb.TIME, aaa.USERNICK]}, {name: chat.ACTION, style: html.MAIN, tool: name}, {name: chat.FOOTER, style: html.HIDE}]}) }
|
||||||
var Config = name; name = Config.name||ice.CAN, _can_name = ""
|
var Config = name; name = Config.name||ice.CAN, _can_name = ""
|
||||||
meta.iceberg = Config.iceberg||meta.iceberg, meta.libs = (Config.libs||chat.libs).concat(Config.list), panels = Config.panels||chat.panel_list, delete(Config.panels)
|
meta.iceberg = Config.iceberg||meta.iceberg, meta.libs = (Config.libs||chat.libs).concat(Config.list), panels = Config.panels||chat.panel_list, delete(Config.panels)
|
||||||
@ -316,19 +297,18 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
|
|||||||
}
|
}
|
||||||
can = kit.proto(can||{}, kit.proto({_name: name, _path: _can_name, _load: function(name, cbs) { var cache = meta.cache[name]||[]
|
can = kit.proto(can||{}, kit.proto({_name: name, _path: _can_name, _load: function(name, cbs) { var cache = meta.cache[name]||[]
|
||||||
for (list.reverse(); list.length > 0; list) { var sub = list.pop(); sub != can && cache.push(sub), sub._path = sub._path||name } meta.cache[name] = cache
|
for (list.reverse(); list.length > 0; list) { var sub = list.pop(); sub != can && cache.push(sub), sub._path = sub._path||name } meta.cache[name] = cache
|
||||||
cache.forEach(function(sub) { var name = sub._name; if (typeof cbs == lang.FUNCTION && cbs(can, name, sub)) { return }
|
cache.forEach(function(sub) { var name = sub._name; if (typeof cbs == code.FUNCTION && cbs(can, name, sub)) { return }
|
||||||
can[name] = can[name]||{}; for (var k in sub) { can[name].hasOwnProperty(k) || sub.hasOwnProperty(k) && (can[name][k] = sub[k]) }
|
can[name] = can[name]||{}; for (var k in sub) { can[name].hasOwnProperty(k) || sub.hasOwnProperty(k) && (can[name][k] = sub[k]) }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
require: function(libs, cb, cbs) {
|
require: function(libs, cb, cbs) {
|
||||||
if (!libs || libs.length == 0) {
|
if (!libs || libs.length == 0) {
|
||||||
if (navigator.userAgent == "nodejs") { return typeof cb == lang.FUNCTION && cb(can) }
|
if (navigator.userAgent == "nodejs") { return typeof cb == code.FUNCTION && cb(can) }
|
||||||
return typeof cb == lang.FUNCTION && setTimeout(function() { cb(can) }, 10)
|
return typeof cb == code.FUNCTION && setTimeout(function() { cb(can) }, 10)
|
||||||
}
|
}
|
||||||
if (libs[0] == undefined) { return can.require(libs.slice(1), cb, cbs) }
|
if (libs[0] == undefined) { return can.require(libs.slice(1), cb, cbs) }
|
||||||
if (libs[0] == "") { libs[0] = can._path.replace(nfs._JS, nfs._CSS) }
|
if (libs[0] == "") { libs[0] = can._path.replace(nfs._JS, nfs._CSS) }
|
||||||
if (libs[0].indexOf(nfs.SRC) == 0) { libs[0] = "/require/"+libs[0] }
|
if (libs[0].indexOf(nfs.SRC) == 0 || libs[0].indexOf(nfs.USR) == 0) { libs[0] = "/require/"+libs[0] }
|
||||||
if (libs[0].indexOf(nfs.USR) == 0) { libs[0] = "/require/"+libs[0] }
|
|
||||||
if (libs[0][0] != ice.PS && libs[0].indexOf(ice.HTTP) != 0) { libs[0] = can._path.slice(0, can._path.lastIndexOf(ice.PS)+1)+libs[0] }
|
if (libs[0][0] != ice.PS && libs[0].indexOf(ice.HTTP) != 0) { libs[0] = can._path.slice(0, can._path.lastIndexOf(ice.PS)+1)+libs[0] }
|
||||||
var name = (libs[0].indexOf(ice.HTTP) == 0? libs[0]: libs[0].split(ice.QS)[0]).toLowerCase()
|
var name = (libs[0].indexOf(ice.HTTP) == 0? libs[0]: libs[0].split(ice.QS)[0]).toLowerCase()
|
||||||
function next() { can._load(name, cbs), can.require(libs.slice(1), cb, cbs) }
|
function next() { can._load(name, cbs), can.require(libs.slice(1), cb, cbs) }
|
||||||
@ -341,7 +321,7 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
|
|||||||
can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) {
|
can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) {
|
||||||
key.indexOf("_") == 0 || key.indexOf("user.") == 0 || set(key, item.Option(key))
|
key.indexOf("_") == 0 || key.indexOf("user.") == 0 || set(key, item.Option(key))
|
||||||
}): can.core.Item(can.base.isFunc(item)? item(): item, set)
|
}): can.core.Item(can.base.isFunc(item)? item(): item, set)
|
||||||
}); set(ice.MSG_HEIGHT, can.ConfHeight()+""), set(ice.MSG_WIDTH, can.ConfWidth()+""), set(ice.MSG_MODE, can.Mode())
|
}); set(ice.MSG_HEIGHT, can.ConfHeight()||32), set(ice.MSG_WIDTH, can.ConfWidth()||320), set(ice.MSG_MODE, can.Mode())
|
||||||
return msg
|
return msg
|
||||||
},
|
},
|
||||||
runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf()
|
runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf()
|
||||||
@ -354,14 +334,11 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
|
|||||||
can.runAction(event, ice.RUN, [index].concat(args), cb, true)
|
can.runAction(event, ice.RUN, [index].concat(args), cb, true)
|
||||||
},
|
},
|
||||||
runAction: function(event, action, args, cb, silent) {
|
runAction: function(event, action, args, cb, silent) {
|
||||||
var msg = can.request(event); if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && can.onaction && can.onaction[action]) {
|
|
||||||
// return can.core.CallFunc(can.onaction[action], {event: event, can: can, msg: msg, button: action})
|
|
||||||
}
|
|
||||||
can.request(event, {_handle: ice.TRUE}, can.Option())._caller()
|
can.request(event, {_handle: ice.TRUE}, can.Option())._caller()
|
||||||
can.run(event, [ctx.ACTION].concat(action, args), cb, silent)
|
can.run(event, [ctx.ACTION].concat(action, args), cb, silent)
|
||||||
},
|
},
|
||||||
search: function(event, cmds, cb) {
|
search: function(event, cmds, cb) {
|
||||||
if (cmds && typeof cmds == lang.OBJECT && cmds.length > 0 && typeof cmds[0] == lang.OBJECT && cmds[0].length > 0 ) { cmds[0] = cmds[0].join(nfs.PT) }
|
if (cmds && typeof cmds == code.OBJECT && cmds.length > 0 && typeof cmds[0] == code.OBJECT && cmds[0].length > 0 ) { cmds[0] = cmds[0].join(nfs.PT) }
|
||||||
return (can._root||can).run(event, [chat._SEARCH].concat(cmds), cb, true)
|
return (can._root||can).run(event, [chat._SEARCH].concat(cmds), cb, true)
|
||||||
},
|
},
|
||||||
get: function(name, key, cb) { var value; can.search({}, [can.core.Keys(name, chat.ONEXPORT, key)], cb||function(msg) { value = msg.Result() }); return value },
|
get: function(name, key, cb) { var value; can.search({}, [can.core.Keys(name, chat.ONEXPORT, key)], cb||function(msg) { value = msg.Result() }); return value },
|
||||||
@ -375,32 +352,32 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
|
|||||||
setAction: function(key, value) { return can.set(chat.ACTION, key, value) },
|
setAction: function(key, value) { return can.set(chat.ACTION, key, value) },
|
||||||
getAction: function(key, cb) { return can.get(chat.ACTION, key, cb) },
|
getAction: function(key, cb) { return can.get(chat.ACTION, key, cb) },
|
||||||
getActionSize: function(cb) { return can.get(chat.ACTION, nfs.SIZE, cb) },
|
getActionSize: function(cb) { return can.get(chat.ACTION, nfs.SIZE, cb) },
|
||||||
isStoryType: function(value) { return can.page.ClassList.has(can, can._fields, chat.STORY) },
|
|
||||||
isSimpleMode: function(value) { return can.Mode() == chat.SIMPLE },
|
isPanelType: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.PANEL) },
|
||||||
isFloatMode: function(value) { return can.Mode() == chat.FLOAT },
|
isPluginType: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.PLUGIN) },
|
||||||
isFullMode: function(value) { return can.Mode() == chat.FULL },
|
isStoryType: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.STORY) },
|
||||||
isCmdMode: function(value) { return can.Mode() == chat.CMD },
|
isOutputStyle: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.OUTPUT) },
|
||||||
isAutoMode: function(value) { return can.Mode() == "" },
|
isSimpleMode: function() { return can.Mode() == chat.SIMPLE },
|
||||||
|
isFloatMode: function() { return can.Mode() == chat.FLOAT },
|
||||||
|
isFullMode: function() { return can.Mode() == chat.FULL },
|
||||||
|
isCmdMode: function() { return can.Mode() == chat.CMD },
|
||||||
|
isAutoMode: function() { return can.Mode() == "" },
|
||||||
Mode: function(value) { return can.Conf(ice.MODE, value) },
|
Mode: function(value) { return can.Conf(ice.MODE, value) },
|
||||||
ConfDefault: function(value) { can.core.Item(value, function(k, v) { can.Conf(k) || can.Conf(k, v) }) },
|
ConfDefault: function(value) { can.core.Item(value, function(k, v) { can.Conf(k) || can.Conf(k, v) }) },
|
||||||
ConfHeight: function(value) { return can.Conf(html.HEIGHT, value) },
|
ConfHeight: function(value) { return can.Conf(html.HEIGHT, value) },
|
||||||
ConfWidth: function(value) { return can.Conf(html.WIDTH, value) },
|
ConfWidth: function(value) { return can.Conf(html.WIDTH, value) },
|
||||||
Conf: function(key, value) { var res = can._conf
|
Conf: function(key, value) { var res = can._conf
|
||||||
for (var i = 0; i < arguments.length; i += 2) {
|
for (var i = 0; i < arguments.length; i += 2) {
|
||||||
if (typeof key == lang.OBJECT) { res = can.core.Value(can._conf, arguments[i]), i--; continue }
|
if (typeof key == code.OBJECT) { res = can.core.Value(can._conf, arguments[i]), i--; continue }
|
||||||
res = can.core.Value(can._conf, arguments[i], arguments[i+1])
|
res = can.core.Value(can._conf, arguments[i], arguments[i+1])
|
||||||
} return can.base.isUndefined(res) && key.indexOf(ctx.FEATURE+nfs.PT) == -1? can.Conf(can.core.Keys(ctx.FEATURE, key)): res
|
} return can.base.isUndefined(res) && key.indexOf(ctx.FEATURE+nfs.PT) == -1? can.Conf(can.core.Keys(ctx.FEATURE, key)): res
|
||||||
}, _conf: {},
|
}, _conf: {},
|
||||||
}, meta)); if (_can_name) { meta.cache[_can_name] = meta.cache[_can_name]||[], meta.cache[_can_name].push(can) } else { list.push(can) }
|
}, meta)); if (_can_name) { meta.cache[_can_name] = meta.cache[_can_name]||[], meta.cache[_can_name].push(can) } else { list.push(can) }
|
||||||
setTimeout(function() {
|
setTimeout(function() { can.require(can._follow? libs.concat(meta.libs, meta.volcano): libs, cb) }, 1)
|
||||||
can.require(can._follow? libs.concat(meta.libs, meta.volcano): libs, cb)
|
|
||||||
}, 1)
|
|
||||||
return can
|
return can
|
||||||
})
|
})
|
||||||
try { if (typeof(window) == lang.OBJECT) { var meta = Volcanos.meta
|
try { if (typeof(window) == code.OBJECT) { var meta = Volcanos.meta
|
||||||
meta.target = document.body, meta._height = window.innerHeight, meta._width = window.innerWidth
|
try { var debug = location.search.indexOf("debug=true") > -1
|
||||||
var debug = location.search.indexOf("debug=true") > -1
|
|
||||||
try {
|
|
||||||
meta.version = window._version||"", window.parent.outerWidth-window.parent.innerWidth > 100 && (meta.version = "", debug = false)
|
meta.version = window._version||"", window.parent.outerWidth-window.parent.innerWidth > 100 && (meta.version = "", debug = false)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
meta.version = window._version, window.outerWidth-window.innerWidth > 100 && (meta.version = "", debug = false)
|
meta.version = window._version, window.outerWidth-window.innerWidth > 100 && (meta.version = "", debug = false)
|
||||||
@ -411,25 +388,26 @@ try { if (typeof(window) == lang.OBJECT) { var meta = Volcanos.meta
|
|||||||
default: var item = document.createElement(nfs.SCRIPT); item.src = url+meta.version, item.onerror = cb, item.onload = cb, document.body.appendChild(item)
|
default: var item = document.createElement(nfs.SCRIPT); item.src = url+meta.version, item.onerror = cb, item.onload = cb, document.body.appendChild(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
meta._init = function(can) {
|
meta.target = document.body, meta._height = window.innerHeight, meta._width = window.innerWidth
|
||||||
window.onmousemove = function(event) { window._mousemove && (window._mousemove.onmousemove(event)) }
|
meta._init = function(can) { var last = can.page.width() < can.page.height()
|
||||||
window.onmouseup = function(event) { window._mousemove && (window._mousemove.onmouseup(event)) }
|
window.onresize = function(event) { can.misc.Event(event, can, function(msg) {
|
||||||
window.ondblclick = function(event) { can.onkeymap.prevent(event) }
|
|
||||||
window.onkeydown = function(event) { if (event.key == lang.ESCAPE && !can.page.tagis(event.target, html.INPUT)) { can.onkeymap.prevent(event) } }
|
|
||||||
window.onerror = function(message, source, lineno, colno, error) { debug? alert([message].concat(can.misc._stacks(0, error)).join(lex.NL)): can.misc.Error(message, lex.NL+[source, lineno, colno].join(ice.DF), error) }
|
|
||||||
window.onbeforeunload = function() { can.onengine.signal(can, chat.ONUNLOAD) }
|
|
||||||
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||[])
|
||||||
}) }
|
}) }
|
||||||
|
window.onbeforeunload = function() { can.onengine.signal(can, chat.ONUNLOAD) }
|
||||||
|
window.onerror = function(message, source, lineno, colno, error) { debug? alert([message].concat(can.misc._stacks(0, error)).join(lex.NL)): can.misc.Error(message, lex.NL+[source, lineno, colno].join(ice.DF), error) }
|
||||||
|
window.onmousemove = function(event) { window._mousemove && (window._mousemove.onmousemove(event)) }
|
||||||
|
window.onmouseup = function(event) { window._mousemove && (window._mousemove.onmouseup(event)) }
|
||||||
|
// window.ondblclick = function(event) { can.onkeymap.prevent(event) }
|
||||||
|
// window.onkeydown = function(event) { if (event.key == code.ESCAPE && !can.page.tagis(event.target, html.INPUT)) { can.onkeymap.prevent(event) } }
|
||||||
}
|
}
|
||||||
} else { // nodejs
|
} else { // nodejs
|
||||||
global.location = {}, global.document = {}, global.window = {}, global.navigator = { userAgent: "nodejs" }
|
global.document = {}, global.location = {}, global.window = {}, global.navigator = {userAgent: "nodejs"}
|
||||||
global.kit = kit, global.ice = ice
|
global.kit = kit, global.ice = ice
|
||||||
global.ctx = ctx, global.mdb = mdb, global.web = web, global.aaa = aaa
|
global.ctx = ctx, global.mdb = mdb, global.web = web, global.aaa = aaa
|
||||||
global.lex = lex, global.yac = yac, global.ssh = ssh, global.gdb = gdb
|
global.lex = lex, global.yac = yac, global.ssh = ssh, global.gdb = gdb
|
||||||
global.tcp = tcp, global.nfs = nfs, global.cli = cli, global.log = log
|
global.tcp = tcp, global.nfs = nfs, global.cli = cli, global.log = log
|
||||||
global.code = code, global.wiki = wiki, global.chat = chat, global.team = team, global.mall = mall
|
global.code = code, global.wiki = wiki, global.chat = chat, global.team = team, global.mall = mall
|
||||||
global.html = html, global.lang = lang, global.svg = svg
|
global.html = html, global.svg = svg
|
||||||
global.shy = shy, global.Volcanos = Volcanos
|
global.shy = shy, global.Volcanos = Volcanos
|
||||||
} } catch (e) { console.log(e) }
|
} } catch (e) { console.log(e) }
|
||||||
|
@ -10,9 +10,9 @@ function shy(help, meta, list, cb) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cb = args[args.length-1]||function() {}
|
cb = args[args.length-1]||function() {}
|
||||||
cb.help = next(lang.STRING)||""
|
cb.help = next(code.STRING)||""
|
||||||
cb.meta = next(lang.OBJECT)|| {}
|
cb.meta = next(code.OBJECT)|| {}
|
||||||
cb.list = next(lang.OBJECT)||[]
|
cb.list = next(code.OBJECT)||[]
|
||||||
return cb
|
return cb
|
||||||
}
|
}
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
try { if (typeof(global) == lang.OBJECT) { // nodejs
|
try { if (typeof(global) == code.OBJECT) { // nodejs
|
||||||
Volcanos.meta._load = function(url, cb) { if (!url) { return cb() }
|
Volcanos.meta._load = function(url, cb) { if (!url) { return cb() }
|
||||||
switch (url.split("?")[0].split(nfs.PT).pop().toLowerCase()) {
|
switch (url.split("?")[0].split(nfs.PT).pop().toLowerCase()) {
|
||||||
case nfs.JS:
|
case nfs.JS:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user