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

add clock

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-09-08 18:19:08 +08:00
parent 1143e38b72
commit deb7479057
10 changed files with 43 additions and 41 deletions

View File

@ -1,5 +1,4 @@
Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
console.log(can.misc._time())
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.Option = function() {}, 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)
@ -11,9 +10,8 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
can.core.CallFunc([sub.onaction, chat._INIT], {can: sub, cb: next, target: sub._target}), delete(sub._history), delete(sub._conf.feature)
}, target)
}, function() { can.onlayout._init(can, target), can.onmotion._init(can, target), can.onkeymap._init(can, target)
// can.onengine._config(can),
can.onengine.signal(can, chat.ONMAIN, can.request()), can.base.isFunc(cb) && cb(can)
return
can.onengine._config(can)
}), can._path = location.href
},
_config: function(can) { can.require(["/require/src/conf.js"], function() {}, function(can, name, sub) {
@ -38,12 +36,11 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
if (panel.onengine._engine(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() { if (msg._can && msg._can._toast) { return } toast = toast||can.user.toastProcess(msg._can, _toast) }, 500) }
msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME))
var sub = msg._can;
if (can.base.isUndefined(msg[ice.MSG_DAEMON])) { 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 (!can.misc.CookieSessid(can) && can.user.info.sessid) { msg.Option(ice.MSG_SESSID, can.user.info.sessid) }
msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME))
can.base.isIn(sub.ConfIndex(), "qrcode", "cli.qrcode") && can.page.exportValue(sub, msg)
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)+"/chat/"+panel._name)
@ -73,8 +70,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
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
}),
listen: shy(function(can, name, cb, target) {
arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb)
listen: shy(function(can, name, cb, target) { arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb)
if (target) { target[name] = function(event) { can.onengine.signal(can, name, can.request(event)) } }
}),
signal: function(can, name, msg) { msg = msg||can.request(); var _msg = name == chat.ONREMOTE? msg.Option("_msg"): msg
@ -97,7 +93,7 @@ Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile)
},
refresh: function(can, sub) { can.base.isFunc(sub.Update) && sub.Update() },
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.page.Select(can, can._root._target, html.INPUT, function(target, index) { list[index] = target
if (document.activeElement == document.body) { return target.focus() }
switch (arg[1]) {
@ -533,9 +529,7 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
}
if (layout.left+target.offsetWidth > left+width) { layout.left = (right? rect.left: left+width)-target.offsetWidth-1 }
});
can.onmotion.move(can, target, layout)
// can.onmotion.slideDown(can, target)
can.onmotion.slideGrow(can, target)
can.onmotion.move(can, target, layout), can.onmotion.slideGrow(can, target)
return layout
},
})
@ -842,9 +836,7 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
selectOutput: function(event, can) { if (!event.ctrlKey || event.key < "0" || event.key > "9") { return }
event.key == "0"? can.onimport._back(can): can.page.Select(can, can._output, html.TR, function(tr, index) { if (index == event.key) {
var head = can.page.Select(can, can._output, html.TH, function(th, order) { return th.innerText }), data = {}
can.page.Select(can, tr, html.TD, function(td, index) { data[head[index]] = td.innerText
can.Option(head[index], td.innerText)
})
can.page.Select(can, tr, html.TD, function(td, index) { data[head[index]] = td.innerText, can.Option(head[index], td.innerText) })
can.onexport.record(can, "", "", data) || can.Update(event)
} })
},

View File

@ -290,7 +290,7 @@ fieldset>div.status>legend>span.remove:hover { background-color:var(--hover-bg-c
fieldset>div.status>legend:not(:hover)>span.remove { visibility:hidden; }
fieldset>div.status>legend:not(:hover):not(.select) { background-color:unset; border-radius:0; }
/* theme */
body { background-color:var(--panel-bg-color); color:var(--body-fg-color); }
body { background-color:var(--body-bg-color); color:var(--body-fg-color); }
body.cmd { background-color:var(--plugin-bg-color); color:var(--body-fg-color); }
legend { background-color:var(--legend-bg-color); border-radius:var(--input-radius); }
legend:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }

View File

@ -78,7 +78,7 @@ Volcanos("misc", {
IsErr: function() {
return msg.result && msg.result[0] == "warn: "
},
_caller: function(skip) { msg.Option("log.caller") || msg.Option("log.caller", can.misc.fileLine((skip||2)+1).link); return msg },
_caller: function(skip) { msg.Option("log.caller") || msg.Option("log.caller", can.misc.fileLine((skip||2)+3).link); 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)) },
Run: function(event, can, dataset, cmds, cb) { var msg = can.request(event), _can = msg._can; _can._fields && _can.sup && (_can = _can.sup)
@ -208,8 +208,9 @@ Volcanos("misc", {
if (value === "") { return sessionStorage.removeItem(key) } sessionStorage.setItem(key, value)
} return can.base.Obj(sessionStorage.getItem(key))
},
Log: function() { var args = this._args("", arguments)
if (arguments[0].indexOf && arguments[0].indexOf("on") == 0) { args[1] = this.FileLine((arguments[0] == "onremote"? 4: 2)+this._skip) }
Log: function() {
var args = this._args("", arguments)
if (arguments[0].indexOf && arguments[0].indexOf("on") == 0) { args[1] = this.FileLine((arguments[0] == "onremote"? 1: 1)+this._skip) }
for (var i in arguments) { var arg = arguments[i]; if (arg && arg.Option && arg.Option("log.caller")) { args[1] = arg.Option("log.caller") } }
console.log.apply(console, args), this._signal(args)
},
@ -250,5 +251,5 @@ Volcanos("misc", {
_args: function(level, arg) { var args = [this._time(), this.FileLine(this._skip+1, 3)].concat(level? [level]: [])
for (var i in arg) { arg[i] != undefined && args.push(arg[i]) } return args
},
_signal: function(args) { this._list.push(args) }, _list: [], _skip: navigator.userAgent.indexOf("Chrome") > -1? 1: 1,
_signal: function(args) { this._list.push(args) }, _list: [], _skip: navigator.userAgent.indexOf("Chrome") > -1? 4: 1,
})

View File

@ -52,7 +52,6 @@ Volcanos("user", {
},
close: function(url) { return window.close() },
theme: function(can, name) { can.base.isString(name) && (name = [name]) || name || []
// name.indexOf(chat.BLACK) > -1 && name.push(html.DARK), name.indexOf(chat.WHITE) > -1 && name.push(chat.BLACK, html.LIGHT)
can.user.language(can) && name.push(can.core.Split(can.user.language(can), "-")[0]), can.user.mod.isCmd && name.push(chat.CMD), can.user.isWebview && name.push(html.WEBVIEW)
can.user.isWindows && name.push("windows"), can.user.isMobile && name.push(html.MOBILE) && can.user.isLandscape() && name.push(html.LANDSCAPE)
can.page.styleClass(can, document.body, name.join(lex.SP))

View File

@ -120,7 +120,7 @@ Volcanos(chat.ONLAYOUT, {
flow: function(can) { can.getActionSize(function(height, width) { can.ConfHeight(height-html.ACTION_MARGIN), can.ConfWidth(width) }) },
page: function(can) { can.page.styleHeight(can, can._output, ""), can.page.style(can, document.body, kit.Dict(html.OVERFLOW, "")) },
_plugin: function(can, button) { can.core.List(can._plugins, function(sub) {
sub.onimport.size(sub, can.ConfHeight()-can.Conf(html.MARGIN_Y)-(button? 0: html.ACTION_MARGIN), can.ConfWidth()-can.Conf(html.MARGIN_X), can.onexport.isauto(can)) && can.page.style(can, sub._output, html.MAX_HEIGHT, "")
sub.onimport.size(sub, can.ConfHeight()-can.Conf(html.MARGIN_Y)-(button || sub.isCmdMode()? 0: html.ACTION_MARGIN), can.ConfWidth()-can.Conf(html.MARGIN_X), can.onexport.isauto(can)) && can.page.style(can, sub._output, html.MAX_HEIGHT, "")
}) },
_storage: function(can, value) { return can.misc.sessionStorage(can, can.core.Keys(CAN_LAYOUT, location.pathname), value) },
})

View File

@ -15,7 +15,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
}) },
_avatar: function(can, msg) { can.user.isExtension || can.user.isLocalFile || can.page.Modify(can, "div.state.avatar>img", {src: can.onexport.avatar(can)}) },
_background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return }
can.onlayout.background(can, can.onexport.background(can))
// can.onlayout.background(can, can.onexport.background(can))
// window.parent == window? can.onlayout.background(can, can.onexport.background(can)): can.page.style(can, document.body, html.BACKGROUND_COLOR, "transparent")
},
_search: function(can, msg, target) {

View File

@ -95,7 +95,7 @@ Volcanos(chat.ONACTION, {list: [
"构建": function(event, can) { can.onimport.tabview(can, "", web.CODE_COMPILE, ctx.INDEX) },
"编译": function(event, can) { can.onaction.compile(event, can, code.COMPILE) },
"终端": function(event, can) { can.user.input(can.request(event, {action: "xterm"}), can, [mdb.TYPE], function(args) { can.onimport.tabview(can, "", [web.CODE_XTERM, args[1]||"ish"].join(mdb.FS), ctx.INDEX) }) },
"终端": function(event, can) { can.user.input(can.requests(event, {action: "xterm"}), can, [mdb.TYPE], function(args) { can.onimport.tabview(can, "", [web.CODE_XTERM, args[1]||"ish"].join(mdb.FS), ctx.INDEX) }) },
"路由": function(event, can) { can.onimport.tabview(can, "", web.ROUTE, ctx.INDEX) },
"源码": function(event, can) { can.onimport.tabview(can, "", web.CODE_GIT_STATUS, ctx.INDEX) },

View File

@ -1,7 +1,9 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(can, function() { can.base.isFunc(cb) && cb(msg)
can.Conf(ice.VIEW) && can.Action(ice.VIEW, can.Conf(ice.VIEW)), can.onmotion.toggle(can, can._option, !can.user.isMobile || !can.isFullMode())
can.db.data = msg.Table(), can.onimport.layout(can)
}) },
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) {
can.page.requireDraw(can, function() { can.base.isFunc(cb) && cb(msg)
can.Conf(ice.VIEW) && can.Action(ice.VIEW, can.Conf(ice.VIEW)), can.onmotion.toggle(can, can._option, !can.user.isMobile || !can.isFullMode())
can.db.data = msg.Table(), can.onimport.layout(can)
})
},
_sum: function(can) { if (can.db.list) { return can.db.list }
var begin = "", count = 0, rest = 0, add = 0, del = 0, max = 0
can.max = 0, can.min = 0, can.db.list = can.core.List(can.db.data, function(value, index) {
@ -86,7 +88,7 @@ Volcanos(chat.ONACTION, {list: [[ice.VIEW, "趋势图", "柱状图", "折线图"
Volcanos(chat.ONDETAIL, {
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) {
msg.Append(ctx.STYLE, html.FLOAT), can.sup.onimport._field(can, msg)
msg.Append(ctx.STYLE, html.FLOAT), can.sup.onimport._field(can.sup, msg)
}) },
})
Volcanos(chat.ONEXPORT, {list: ["from", "commit", "total", "max", "date", "text", "add", "del"],

View File

@ -238,29 +238,29 @@ Volcanos(chat.ONEXPORT, {
})
Volcanos(chat.ONACTION, {
onkeydown: function(event, can) {
if (event.ctrlKey && "0" <= event.key && event.key <= "9") { return can.onaction.ctrln(event, can) }
if (event.ctrlKey && "0" <= event.key && event.key <= "9") { return can.onkeymap.ctrln(event, can) }
can._keylist = can.onkeymap._parse(event, can, mdb.PLUGIN, can._keylist||[], can._output)
},
escape: function(event, can) {},
space: function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) },
enter: function(event, can) {},
ctrln: function(event, can) { can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS) },
tabs: function(event, can) {},
tabx: function(event, can) { can.page.Select(can, can._action, html.DIV_TABS_SELECT, function(target) { target._close() }) },
})
Volcanos(chat.ONKEYMAP, {
escape: function(event, can) {},
enter: function(event, can) {},
ctrln: function(event, can) { can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS) },
space: function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) },
tabx: function(event, can) { can.page.Select(can, can._action, html.DIV_TABS_SELECT, function(target) { target._close() }) },
tabs: function(event, can) {},
_mode: {
plugin: {
Escape: shy("清理屏幕", function(event, can) { can.onaction.escape(event, can) }),
Enter: shy("执行操作", function(event, can) { can.onaction.enter(event, can) }),
" ": shy("搜索项目", function(event, can) { can.onaction.space(event, can) }),
Escape: shy("清理屏幕", function(event, can) { can.onkeymap.escape(event, can) }),
Enter: shy("执行操作", function(event, can) { can.onkeymap.enter(event, can) }),
" ": shy("搜索项目", function(event, can) { can.onkeymap.space(event, can) }),
f: shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }),
a: shy("展示项目", function(event, can) { can.ui.project && (can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can)) }),
v: shy("展示预览", function(event, can) { can.ui.profile && (can.onmotion.toggle(can, can.ui.profile), can.onimport.layout(can)) }),
r: shy("展示输出", function(event, can) { can.ui.display && (can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can)) }),
p: shy("添加插件", function(event, can) { can.sup.onaction["添加工具"](event, can.sup) }),
t: shy("添加标签", function(event, can) { can.onaction.tabs(event, can) }),
x: shy("添加标签", function(event, can) { can.onaction.tabx(event, can) }),
t: shy("添加标签", function(event, can) { can.onkeymap.tabs(event, can) }),
x: shy("添加标签", function(event, can) { can.onkeymap.tabx(event, can) }),
l: shy("打开右边标签", function(event, can) { can.page.Select(can, can._action, html.DIV_TABS_SELECT, function(target) {
var next = target.nextSibling; next && can.page.ClassList.has(can, next, html.TABS) && next.click()
}) }),

View File

@ -47,7 +47,15 @@ var Volcanos = shy({
meta.cache[name]? next(): meta._load(name, next)
},
requestPodCmd: function(event) { return can.request(event, {space: can.ConfSpace(), index: can.ConfIndex()}) },
request: function(event) { event = event||{}, event = event._event||event
requests: function(event) { event = event||{}, event = event._event||event
var msg = event._msg||can.misc.Message(event, can); event._msg = msg
function set(key, value) { msg.Option(key, value) }
can.core.List(arguments, function(item, index) { if (!item || index == 0) { return }
can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) { set(key, item.Option(key)) }): can.core.Item(can.base.isFunc(item)? item(): item, set)
}); return msg
},
request: function(event) {
event = event||{}, event = event._event||event
var msg = event._msg||can.misc.Message(event, can); event._msg = msg
function set(key, value) { if (key == "_method") { return msg._method = value }
value == "" || msg.Option(key) || msg.Option(key, value)