1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-26 01:04:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-09-11 09:26:08 +08:00
parent e46897bdc8
commit 7fdd6bd314
10 changed files with 30 additions and 24 deletions

View File

@ -82,6 +82,7 @@ var web = {CHAT: "chat", STUDIO: "studio",
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",
CONFIRM: "confirm", CONFIRM: "confirm",
THEME: "theme",
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",
OPEN: "open", OPEN: "open",

View File

@ -242,8 +242,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) { if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) {
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) }) can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) })
} }
can.page.requireModules(can, can.Conf("modules"), function() { can.page.requireModules(can, can.Conf("modules"), function() { if (sub.Mode() != "result") { can.onmotion.clear(can) }
if (sub.Mode() != "result") { can.onmotion.clear(can) }
can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) { can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) {
if (action !== false) { can.onkeymap._build(sub) if (action !== false) { can.onkeymap._build(sub)
can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action) can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
@ -358,7 +357,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
}) } return code.scrollBy && code.scrollBy(0, 10000), code }) } return code.scrollBy && code.scrollBy(0, 10000), code
}, },
tools: function(can, msg, cb, target) { tools: function(can, msg, cb, target) {
can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), can.misc.sessionStorage(can, [can.ConfIndex(), "tool"]))||[], cb, target) // can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), can.misc.sessionStorage(can, [can.ConfIndex(), "tool"]))||[], 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 style: function(can, style, target) { target = target||can._fields||can._target

View File

@ -1,10 +1,10 @@
body { body {
--body-bg-color:black; --body-fg-color:silver;
--danger-bg-color:red; --danger-fg-color:white; --danger-bg-color:red; --danger-fg-color:white;
--notice-bg-color:blue; --notice-fg-color:white; --notice-bg-color:blue; --notice-fg-color:white;
--create-bg-color:blue; --create-fg-color:white; --create-bg-color:blue; --create-fg-color:white;
--progress-bg-color:red; --disable-fg-color:gray; --progress-bg-color:red; --disable-fg-color:gray;
--hover-bg-color:#5066b945; --hover-fg-color:white; --hover-bg-color:#5066b945; --hover-fg-color:white;
--body-bg-color:black; --body-fg-color:silver;
--box-border:#404141 solid 1px; --box-border:#404141 solid 1px;
--box-notice:var(--notice-bg-color) solid 1px; --box-notice:var(--notice-bg-color) solid 1px;
--box-shadow:var(--body-fg-color) 2px 2px 8px; --box-shadow:var(--body-fg-color) 2px 2px 8px;
@ -109,7 +109,7 @@ fieldset.input.date>div.status { text-align:center; }
/* float */ /* float */
body div.float { padding:5px; box-shadow:var(--box-shadow); } body div.float { padding:5px; box-shadow:var(--box-shadow); }
body>div.toast div.title { color:var(--notice-bg-color); float:left; } body>div.toast div.title { color:var(--notice-bg-color); float:left; }
body>div.toast div.delete { color:var(--body-bg-color); float:right; cursor:pointer; } body>div.toast div.delete { color:var(--notice-bg-color); float:right; cursor:pointer; }
body>div.toast div.delete:hover { background-color:var(--hover-bg-color); } body>div.toast div.delete:hover { background-color:var(--hover-bg-color); }
body>div.toast div.duration { color:var(--disable-fg-color); float:right; } body>div.toast div.duration { color:var(--disable-fg-color); float:right; }
body>div.toast div.content { color:var(--notice-bg-color); text-align:center; } body>div.toast div.content { color:var(--notice-bg-color); text-align:center; }

View File

@ -1,7 +1,7 @@
Volcanos("base", { Volcanos("base", {
Int: function(val, def) { return parseInt(val)||def||0 }, Int: function(val, def) { return parseInt(val)||def||0 },
Min: function(val, min, max) { Min: function(val, min, max) {
return val > min? val > max && max? max: val: min return val > max? max: val < min? min: val
}, },
Max: function(val, max) { return val < max? val: max }, Max: function(val, max) { return val < max? val: max },
Obj: function(val, def) { Obj: function(val, def) {

View File

@ -357,7 +357,7 @@ Volcanos("page", {
can.base.isIn(name, mdb.REMOVE, mdb.DELETE, mdb.PRUNES, mdb.PRUNE, nfs.TRASH, "drop", cli.STOP)? "danger": "" can.base.isIn(name, mdb.REMOVE, mdb.DELETE, mdb.PRUNES, mdb.PRUNE, nfs.TRASH, "drop", cli.STOP)? "danger": ""
}, },
exportValue: function(can, msg) { exportValue: function(can, msg) {
const styles = getComputedStyle(can._target); can.core.List(["--plugin-bg-color", "--plugin-fg-color"].concat(can.core.List(arguments).slice(2)), function(key) { msg.Option(key, styles.getPropertyValue(key)) }) const styles = getComputedStyle(document.body); can.core.List(["--plugin-bg-color", "--plugin-fg-color"].concat(can.core.List(arguments).slice(2)), function(key) { msg.Option(key, styles.getPropertyValue(key)) })
return msg return msg
}, },
}) })

View File

@ -32,9 +32,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
can.user.info.background = background, can.onimport._background(can, msg), can.user.toastSuccess(can) can.user.info.background = background, can.onimport._background(can, msg), can.user.toastSuccess(can)
}) }, }) },
language: function(can, language) { can.runAction(event, aaa.LANGUAGE, [language == ice.AUTO? "": language], function(msg) { language: function(can, language) { can.runAction(event, aaa.LANGUAGE, [language == ice.AUTO? "": language], function(msg) {
can.user.toastConfirm(can, "reload page for "+language, "language", function() { can.user.reload(true) }) can.user.toastConfirm(can, can.user.trans(can, "reload page for "+language), aaa.LANGUAGE, function() { can.user.reload(true) })
}) }, }) },
theme: function(can, theme) { theme && can.runAction({}, "theme", [theme]) theme: function(can, theme) { theme && can.runAction({}, web.THEME, [theme])
theme && can.misc.localStorage(can, "can.theme", can._theme = theme == ice.AUTO? "": theme) && can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: theme})), can.user.theme(can, can.onexport.theme(can)) theme && can.misc.localStorage(can, "can.theme", can._theme = theme == ice.AUTO? "": theme) && can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: theme})), can.user.theme(can, can.onexport.theme(can))
}, },
menu: function(can, cmds, cb, trans) { can.base.isString(cmds) && (cmds = [cmds]) menu: function(can, cmds, cb, trans) { can.base.isString(cmds) && (cmds = [cmds])
@ -111,17 +111,20 @@ Volcanos(chat.ONACTION, {_init: function(can) {
}, },
_params: [log.DEBUG, chat.TITLE], _params: [log.DEBUG, chat.TITLE],
_menus: ["shareuser", _menus: ["shareuser", [web.THEME], [aaa.LANGUAGE],
[chat.THEME, ice.AUTO],
[aaa.LANGUAGE, ice.AUTO],
[nfs.SAVE, aaa.EMAIL, web.TOIMAGE, code.WEBPACK], [nfs.SAVE, aaa.EMAIL, web.TOIMAGE, code.WEBPACK],
[aaa.USER, "setnick", aaa.PASSWORD, cli.CLEAR, aaa.LOGOUT], [aaa.USER, "setnick", aaa.PASSWORD, cli.CLEAR, aaa.LOGOUT],
], ],
_trans: kit.Dict( _trans: kit.Dict(
"shareuser", "共享用户", chat.THEME, "界面主题", aaa.LANGUAGE, "语言地区", "shareuser", "共享用户", web.THEME, "界面主题", aaa.LANGUAGE, "语言地区",
nfs.SAVE, "保存网页", aaa.EMAIL, "发送邮件", web.TOIMAGE, "生成图片", code.WEBPACK, "打包页面", nfs.SAVE, "保存网页", aaa.EMAIL, "发送邮件", web.TOIMAGE, "生成图片", code.WEBPACK, "打包页面",
aaa.USER, "用户信息", "setnick", "设置昵称", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录", aaa.USER, "用户信息", "setnick", "设置昵称", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录",
"reload page for zh-cn", "切换语言为中文",
"reload page for en-us", "切换语言为英文",
"en-us", "英文",
"zh-cn", "中文",
"auto", "默认",
), ),
}) })
Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight }, Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight },
@ -167,11 +170,8 @@ Volcanos(chat.ONPLUGIN, {
background: shy("背景图片", function(can, sub, cb) { can.page.Append(can, sub._output, [{img: can.user.info.background, style: kit.Dict(html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth())}]) }), background: shy("背景图片", function(can, sub, cb) { can.page.Append(can, sub._output, [{img: can.user.info.background, style: kit.Dict(html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth())}]) }),
language: shy("语言地区", {_init: function(can) { can.Option(aaa.LANGUAGE, can.user.info.language||ice.AUTO) }}, ["language:select=auto,zh,en", ice.RUN], function(can, msg, arg) { can.onimport.language(can, arg[0]) }), language: shy("语言地区", {_init: function(can) { can.Option(aaa.LANGUAGE, can.user.info.language||ice.AUTO) }}, ["language:select=auto,zh,en", ice.RUN], function(can, msg, arg) { can.onimport.language(can, arg[0]) }),
title: shy("网页标题", [chat.TITLE], function(can, msg, arg) { msg.Echo(can.user.title(arg[0])) }), title: shy("网页标题", [chat.TITLE], function(can, msg, arg) { msg.Echo(can.user.title(arg[0])) }),
theme: shy("界面主题", { theme: shy("界面主题", {_init: function(can) { can.Option(chat.THEME, can.getHeader(chat.THEME)) },
_init: function(can) { can.Option(chat.THEME, can.getHeader(chat.THEME)) }, save: function(can, sup) { can.user.downloads(can, sup._themes[can.Option(web.THEME)], can.Option(web.THEME), nfs.CSS) },
save: function(can, sup) {
can.user.downloads(can, sup._themes[can.Option("theme")], can.Option("theme"), "css")
},
}, ["theme:select=auto,dark,light,print,white,black", ice.RUN, nfs.SAVE], function(can, msg, arg) { }, ["theme:select=auto,dark,light,print,white,black", ice.RUN, nfs.SAVE], function(can, msg, arg) {
if (arg[0] == ice.AUTO) { arg[0] = "", can._theme = "" } can.misc.localStorage(can, "can.theme", arg[0]), can.onimport.theme(can, arg[0]) if (arg[0] == ice.AUTO) { arg[0] = "", can._theme = "" } can.misc.localStorage(can, "can.theme", arg[0]), can.onimport.theme(can, arg[0])
}), }),

View File

@ -62,6 +62,7 @@ div.path span.item { padding:5px; }
div.carte.path.float { font-size:var(--code-font-size); } div.carte.path.float div.item { padding:5px; } div.carte.path.float { font-size:var(--code-font-size); } div.carte.path.float div.item { padding:5px; }
div.carte.cmd.float { font-size:var(--code-font-size); } div.carte.cmd.float div.item { padding:5px; } div.carte.cmd.float { font-size:var(--code-font-size); } div.carte.cmd.float div.item { padding:5px; }
div.vimer.open.float td:first-child { display:none; } div.vimer.open.float td:first-child { display:none; }
div.vimer.open.float td:nth-child(2) { display:none; }
div.layout.flex>input.current { clear:both; } div.layout.flex>input.current { clear:both; }
tr.line>td.line { user-select:none; } tr.line>td.line { user-select:none; }
tr.line>td.line { text-align:right; padding:0 10px; position:sticky; left:0; } tr.line>td.line { text-align:right; padding:0 10px; position:sticky; left:0; }

View File

@ -29,6 +29,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp
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.onexport.recover(can) }) can.onengine.listen(can, chat.ONUNLOAD, function() { can.onexport.recover(can) })
msg.Option(ice.MSG_TOOLKIT, "[]")
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)

View File

@ -334,11 +334,11 @@ Volcanos(chat.ONSYNTAX, {
"contexts": code.CONSTANT, "contexts": code.CONSTANT,
"--body-bg-color": code.CONSTANT, "--body-fg-color": code.CONSTANT, "--body-bg-color": code.CONSTANT, "--body-fg-color": code.CONSTANT,
"--plugin-bg-color": code.CONSTANT, "--plugin-fg-color": code.CONSTANT, "--danger-bg-color": code.CONSTANT, "--notice-bg-color": code.CONSTANT,
"--hover-bg-color": code.CONSTANT, "--hover-fg-color": code.CONSTANT, "--hover-bg-color": code.CONSTANT, "--hover-fg-color": code.CONSTANT,
"--notice-bg-color": code.CONSTANT, "--danger-bg-color": code.CONSTANT, "--box-border": code.CONSTANT, "--box-notice": code.CONSTANT, "--box-shadow": code.CONSTANT,
"--output-bg-color": code.CONSTANT, "--output-bg-color": code.CONSTANT,
"--box-border": code.CONSTANT, "--box-shadow": code.CONSTANT, "--plugin-bg-color": code.CONSTANT, "--plugin-fg-color": code.CONSTANT,
}, include: ["html"], }, include: ["html"],
func: function(can, push, text) { text.indexOf("/* ") == 0 && push(can.base.trimPrefix(can.base.trimSuffix(text, " */"), "/* ")) }, func: function(can, push, text) { text.indexOf("/* ") == 0 && push(can.base.trimPrefix(can.base.trimSuffix(text, " */"), "/* ")) },
}, },

View File

@ -181,20 +181,23 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
tool: function(can, list, cb, target, status) { target = target||can._output, status = status||can._status 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.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, sub._legend._meta = {index: meta.index} can.onimport.plug(can, meta, function(sub) { can.onmotion.hidden(can, sub._target), sub._legend._target = sub._target, sub._legend._meta = {index: meta.index}
can.page.Append(can, sub._legend,[{text: [can.page.unicode.remove, "", "remove"], onclick: function(event) { can.page.Append(can, sub._legend,[{text: [can.page.unicode.remove, "", mdb.REMOVE], onclick: function(event) {
can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend), can.onexport.tool(can), can.onkeymap.prevent(event) can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend), can.onexport.tool(can), can.onkeymap.prevent(event)
}}]) }}])
status.appendChild(sub._legend), sub._legend.oncontextmenu = sub._legend.onclick, sub._legend.onclick = function(event) { can.misc.Event(event, can, function(msg) { 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 } 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) // sub.onimport.size(sub, can.ConfHeight()/2, can.base.Min((can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0))/2, sub._target.offsetWidth))
can.onmotion.select(can, status, html.LEGEND, sub._legend), can.onmotion.toggle(can, sub._target, true) can.onmotion.select(can, status, html.LEGEND, sub._legend), can.onmotion.toggle(can, sub._target, true)
can.onmotion.select(can, target, "fieldset.plug", sub._target) can.onmotion.select(can, target, "fieldset.plug", sub._target)
// sub.Focus()
if (sub._delay_init || meta.msg) { sub._delay_init = false, meta.msg = false, sub.Update() } if (sub._delay_init || meta.msg) { sub._delay_init = false, meta.msg = false, sub.Update() }
}) }, sub._delay_init = true, sub.onaction.close = function() { sub.select() }, sub.select = function(show) { }) }, sub._delay_init = true, sub.onaction.close = function() { sub.select() }, sub.select = function(show) {
if (show && can.page.ClassList.has(can, sub._legend, html.SELECT)) { return sub } if (show && can.page.ClassList.has(can, sub._legend, html.SELECT)) { return sub }
return sub._legend.click(), sub return sub._legend.click(), sub
} }
sub.onexport.output = function() { var width = can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0)
can.page.style(can, can._output, html.MAX_HEIGHT, "", html.HEIGHT, "", html.WIDTH, "", html.MAX_WIDTH, "")
sub.onimport.size(sub, can.ConfHeight()/2, can.base.Min(sub._target.offsetWidth, width/2, width), true)
}
sub.hidden = function() { can.onmotion.hidden(can, sub._target), can.page.ClassList.del(can, sub._legend, html.SELECT) } sub.hidden = function() { can.onmotion.hidden(can, sub._target), can.page.ClassList.del(can, sub._legend, html.SELECT) }
sub.onaction._close = function() { can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend), can.onexport.tool(can) } sub.onaction._close = function() { can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend), can.onexport.tool(can) }
can.base.isFunc(cb) && cb(sub), can.onexport.tool(can) can.base.isFunc(cb) && cb(sub), can.onexport.tool(can)