From f8635d242a3bacd3ebf8c2ad1e6996180d16d103 Mon Sep 17 00:00:00 2001 From: shy Date: Sat, 1 Jun 2024 23:04:33 +0800 Subject: [PATCH] add some --- const.js | 2 +- frame.js | 43 +++++++++++++++++++++++++------------ index.css | 16 ++++++++------ lib/base.js | 14 ++++++------ panel/header.js | 5 ++++- plugin/local/code/inner.css | 3 ++- plugin/local/wiki/draw.js | 4 ++-- 7 files changed, 55 insertions(+), 32 deletions(-) diff --git a/const.js b/const.js index 1864786a..6b8f53da 100644 --- a/const.js +++ b/const.js @@ -368,7 +368,7 @@ var html = {value: { SVG: "svg", IMG: "img", IMAGE: "image", VIDEO: "video", AUDIO: "audio", CANVAS: "canvas", IFRAME: "iframe", WSS: "wss", WEBVIEW: "webview", CHROME: "chrome", WINDOWS: "windows", MOBILE: "mobile", LANDSCAPE: "landscape", BODY: "body", FORM: "form", LABEL: "label", TITLE: "title", INNER: "inner", SPACE: "space", CLICK: "click", - SELECT: "select", INPUT: "input", TEXT: "text", FILE: "file", TEXTAREA: "textarea", BUTTON: "button", CHECKBOX: "checkbox", + SELECT: "select", INPUT: "input", TEXT: "text", FILE: "file", TEXTAREA: "textarea", BUTTON: "button", CHECKBOX: "checkbox", MULTIPLE: "multiple", CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", USERNAME: "username", PASSWORD: "password", CONFIRM: "confirm", CLOSE: "close", CLICK: "click", FOCUS: "focus", BLUR: "blur", TABLE: "table", THEAD: "thead", TBODY: "tbody", TR: "tr", TH: "th", TD: "td", diff --git a/frame.js b/frame.js index 1a04e276..8a547606 100644 --- a/frame.js +++ b/frame.js @@ -336,15 +336,9 @@ Volcanos(chat.ONAPPEND, { 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.toggle(can, can._action, true), delete(can._status._cache), delete(can._status._cache_key) - // can.page.ClassList.del(can, sub._fields, html.FORM) - // sub._output.className = html.OUTPUT - // can.onappend.style(can, sub._args.style, can._output) - // can.isCmdMode() && can.onappend.style(can, html.OUTPUT) - // sub.isCmdMode() && sub.onexport.title(sub, sub.ConfIndex()) - can._output_old = can._output, can._output = sub._output = sub._target = output = can.page.insertBefore(can, [html.OUTPUT], can._status) - can.page.style(can, can._output, "visibility", "hidden") - can.page.style(can, can._output, "position", "fixed") - if (sub.Mode() == ice.MSG_RESULT) { can._output.innerHTML = can._output_old.innerHTML } + var output_old = can._output; sub._target = sub._output = can._output = output = can.page.insertBefore(can, [html.OUTPUT], can._status) + can.page.style(can, can._output, "visibility", "hidden", "position", "fixed") + if (sub.Mode() == ice.MSG_RESULT) { can._output.innerHTML = output_old.innerHTML } can.onexport._output(sub, msg) can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) { if (action !== false) { can.onkeymap._build(sub) @@ -361,9 +355,8 @@ Volcanos(chat.ONAPPEND, { can.isCmdMode() && can.page.style(can, can._output, html.HEIGHT, sub.ConfHeight()) can.onexport.output(sub, msg); if (can.Conf("_output")) { can.Conf("_output")(sub, msg) } } msg.Defer(), can.base.isFunc(cb) && cb(msg), can.page.style(can, can._target, "visibility", ""), - can._output.scrollTop = can._output_old.scrollTop, can._output.scrollLeft = can._output_old.scrollLeft - can.page.style(can, can._output, "visibility", ""), can.page.Remove(can, can._output_old) - can.page.style(can, can._output, "position", "") + can._output.scrollTop = output_old.scrollTop, can._output.scrollLeft = output_old.scrollLeft + can.page.style(can, can._output, "visibility", "", "position", ""), can.page.Remove(can, output_old) }, target: output}), msg.Defer() }) }, @@ -463,11 +456,17 @@ Volcanos(chat.ONAPPEND, { if (item.name == html.FILTER) { item.icon = item.icon||icon.search } item.icon = item.icon||can.Conf(["_icons", item.name])||icon[item.name] } + if (item.type == html.MULTIPLE) { + input.data.type = html.BUTTON, input.value = can.user.trans(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 _style = can.page.buttonStyle(can, item.name) var _input = can.page.Append(can, target, [{view: [[html.ITEM].concat(style, [item.type, item.name, item._className, item.icon? "_icon": ""], _style)], 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] + if (item.type == html.MULTIPLE) { + can.onappend.multiple(can, item, _input.input) + can.onappend.style(can, html.BUTTON, target) + } + if (item.type == html.SELECT) { _input.select.value = value||_item.value||_item.values[0] can.onappend.select(can, _input.select, _item) can.onappend.style(can, html.BUTTON, target) item._init && item._init(target) @@ -539,6 +538,22 @@ Volcanos(chat.ONAPPEND, { }) }, _init: function(target) { can.page.style(can, target, html.WIDTH, (select.offsetWidth||80)+30), can.onappend.style(can, html.HIDE, select) }}, {icon: mdb.SELECT}]) }, + multiple: function(can, item, target) { target._select = {}, can.core.List(item.value||item.values, function(value) { target._select[value] = true }) + target.onclick = function(event) { var carte = can.user.carte(event, can, {}, item.values, function(event, button) {}) + can.page.Appends(can, carte._target, can.core.List(item.values, function(value) { var _target + return {view: html.ITEM, list: [{type: "input", data: {type: "checkbox", checked: target._select[value]? "checked": ""}, onchange: function(event) { + target._select[value] = event.target.checked + can.core.CallFunc(can.onaction[item.name], [event, can, item.name, target._select]) + }, _init: function(target) { + _target = target + }}, {text: value}], onclick: function(event) { + if (can.page.tagis(event.target, "input")) { return } can.onkeymap.prevent(event) + _target.checked = target._select[value] = !target._select[value] + can.core.CallFunc(can.onaction[item.name], [event, can, item.name, target._select]) + }} + })) + } + }, checkbox: function(can, table, msg) { can.page.Select(can, table, "tr>th:first-child,tr>td:first-child", function(target) { can.page.insertBefore(can, [{type: target.tagName, list: [{type: html.INPUT, data: {type: html.CHECKBOX}, onchange: function(event) { diff --git a/index.css b/index.css index 622879cb..4f21caa7 100644 --- a/index.css +++ b/index.css @@ -199,7 +199,9 @@ fieldset.plugin.cmd:not(.output)>div.action div.tabs:last-child { margin-right:v fieldset.plugin.cmd:not(.output)>div.action div.tabs:first-child { margin-left:var(--button-margin); } fieldset.plugin.cmd:not(.output)>div.action div.tabs.select { padding-top:2px; } fieldset.plugin.cmd:not(.output)>div.action div.tabs>span.name { overflow:hidden; } -fieldset.plugin.cmd:not(.output)>div.header { float:right; display:flex !important; flex-direction:row-reverse; } +fieldset.plugin.cmd:not(.output)>div.header { float:right; display:flex; flex-direction:row-reverse; } +body.width2 fieldset.plugin.cmd:not(.output)>div.header { display:none; } +body.width1 fieldset.plugin.cmd:not(.output)>div.header { display:none; } fieldset.studio>div.output>div.layout>div.layout>div.content>fieldset.story>form.option>div.icon.delete { display:none; } fieldset.studio>div.output>div.layout>div.layout>div.content>fieldset.story>div.action>div.item.state.button.full.icons { display:none; } div.output>div.layout>div.layout { position:relative; } @@ -345,7 +347,7 @@ div.toast.float div.action>div.item.notice input { border:var(--box-notice); } div.toast.float div.action>div.item.open input { border:var(--box-notice); } body>div.carte { border:0; padding:0; } body>div.carte input[name=filter] { margin:var(--input-margin); width:calc(100% - 10px); position:sticky; top:var(--input-margin); } -body>div.carte div.item { white-space:pre; padding:var(--button-padding); } +body>div.carte div.item { white-space:pre; padding:var(--button-padding); display:flex; align-items:center; } body>div.carte div.item i:first-child { margin-right:var(--button-margin); } body>div.carte div.item span.icon.next { line-height:22px; height:22px; float:right; } body>div.carte.select.float>div.item { text-align:center; } @@ -524,6 +526,7 @@ fieldset>form.option>div.item.text.cmd>input { background-color:var(--code-bg-co fieldset>div.action div.item.cmds.select { background:var(--output-bg-color); border-top:var(--box-notice3); } fieldset.desktop fieldset>div.action div.item.cmds.select { border-top:unset; border-bottom:var(--box-notice3); } fieldset>div.action div.item.cmds:hover { background:var(--output-bg-color); } +fieldset>div.action div.item.cmds img { display:none; } fieldset>div.output { background-color:var(--output-bg-color); } fieldset.panel:not(.main) { background-color:var(--panel-bg-color); color:var(--panel-fg-color); } fieldset.panel:not(.main)>div.output { background-color:var(--panel-output-bg-color); color:var(--panel-output-fg-color); } @@ -740,13 +743,13 @@ body:not(.mobile) fieldset.Action:not(.tabview):not(.horizon):not(.grid) fieldse body:not(.mobile) fieldset.Action:not(.tabview):not(.horizon):not(.grid) fieldset.plugin:not(.float):not(.full):not(.cmd)>div.action>div.button.icons>i { display:none; } fieldset.panel>div.action>div.button.icons>span.icon { display:none; } fieldset.plugin.cmd>form.option>div.icon.delete { display:none; } -fieldset.story>form.option>div.button.icons.list { margin-right:0; } -fieldset.story>form.option>div.button.icons.back { margin-right:0; } -fieldset.story>form.option>div.button.icons { display:none; } +fieldset.story>form.option>div.button.icons.list { display:none; } +fieldset.story>form.option>div.button.icons.back { display:none; } +fieldset.story>form.option>div.button.icons input { display:none; } fieldset.story>div.action>div.button.icons>input { display:none; } -fieldset.plug>form.option>div.button.icons { display:none; } fieldset.plug>form.option>div.button.icons.back { display:none; } fieldset.plug>form.option>div.button.icons.list { display:none; } +fieldset.plug>form.option>div.button.icons input { display:none; } fieldset.plug>div.action>div.button.icons>input { display:none; } fieldset.plug>form.option>div.icon:first-child { margin-left:var(--input-margin); } body:not(.width6) fieldset.inner.float:not(.full)>form.option>div.text { display:none; } @@ -793,6 +796,7 @@ div.story[data-type=spark] { cursor:copy; } /* mobile */ body.mobile table.content { width:100%; } body.mobile fieldset.plugin>legend { box-shadow:none; } +body.mobile:not(.landscape) fieldset.plugin.cmd:not(.output)>div.header { display:none !important; } body.mobile div.output.card { overflow-x:hidden; } body.mobile div.output>div.project { position:absolute; left:0; top:0; z-index:2; } body.mobile div.output>div.project { flex:0 0 240px; width:240px; } diff --git a/lib/base.js b/lib/base.js index dab3ce83..3571d8b9 100644 --- a/lib/base.js +++ b/lib/base.js @@ -58,19 +58,19 @@ Volcanos("base", { if (str.indexOf(ice.HTTP) == 0) { var res = this._parse(str, {type: web.LINK, name: "", text: str}); return res.name = res._origin.split("://").pop().split(nfs.PS)[0], res } try { res = JSON.parse(str), res.text = res.text||str, res.type = res.type||nfs.JSON } catch (e) { res = {type: mdb.TEXT, text: str} } return res }, - ParseSize: function(size) { size = size.toLowerCase().split(" ")[0] + ParseSize: function(size) { size = (size||"").toLowerCase().split(" ")[0] if (size.endsWith("tb") || size.endsWith("t")) { return parseFloat(size) * this._unit.t } if (size.endsWith("gb") || size.endsWith("g") || size.endsWith("gib")) { return parseFloat(size) * this._unit.g } if (size.endsWith("mb") || size.endsWith("m") || size.endsWith("mib")) { return parseFloat(size) * this._unit.m } if (size.endsWith("kb") || size.endsWith("k")) { return parseFloat(size) * this._unit.k } return parseFloat(size) }, _unit: {k: 1024, m: 1024*1024, g: 1024*1024*1024, t: 1024*1024*1024*1024}, - Size: function(size) { size = parseInt(size); var n = 100, k = this._unit.k, m = this._unit.m, g = this._unit.g, t = this._unit.t - if (size > t) { return parseInt(size/t) + nfs.PT + parseInt(size/g%k*n/k) + "T" } - if (size > g) { return parseInt(size/g) + nfs.PT + parseInt(size/m%k*n/k) + "G" } - if (size > m) { return parseInt(size/m) + nfs.PT + parseInt(size/k%k*n/k) + "M" } - if (size > k) { return parseInt(size/k) + nfs.PT + parseInt(size%k*n/k) + "K" } - return size + "B" + Size: function(size) { var n = 100, k = this._unit.k, m = this._unit.m, g = this._unit.g, t = this._unit.t + if (size > t) { return parseFloat(size/t).toFixed(2)+"T" } + if (size > g) { return parseFloat(size/g).toFixed(2)+"G" } + if (size > m) { return parseFloat(size/m).toFixed(2)+"M" } + if (size > k) { return parseFloat(size/k).toFixed(2)+"K" } + return size }, Number: function(d, n) { var res = [] while (d > 0) { res.push(d%10); d = parseInt(d/10); n-- } while (n > 0) { res.push("0"); n-- } diff --git a/panel/header.js b/panel/header.js index 03e56e71..ee09a1b9 100644 --- a/panel/header.js +++ b/panel/header.js @@ -71,7 +71,10 @@ Volcanos(chat.ONIMPORT, { }, }) Volcanos(chat.ONACTION, {_init: function(can) {}, - onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) }, + onsize: function(can) { + can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) + can.onimport.theme(can) + }, onmain: function(can) { if (window.parent == window && can.misc.Search(can, ice.MSG_SESSID) && can.misc.CookieSessid(can, can.misc.Search(can, ice.MSG_SESSID)) && !can.user.isMailMaster) { return can.misc.Search(can, ice.MSG_SESSID, "") diff --git a/plugin/local/code/inner.css b/plugin/local/code/inner.css index db1fe4bb..9459cec6 100644 --- a/plugin/local/code/inner.css +++ b/plugin/local/code/inner.css @@ -33,7 +33,8 @@ fieldset.inner>div.output>div.layout>div.layout>div.profile h1 { border-bottom:v fieldset.inner>div.output>div.layout>div.layout>div.profile h2 { border-bottom:var(--box-border); margin:var(--title-margin) 0; } fieldset.inner>div.output>div.layout>div.layout>div.profile pre>code { padding-left:var(--table-padding); border-left:var(--box-notice3); display:block; } fieldset.inner>div.output>div.layout>div.layout>div.profile>div.code { white-space:unset; padding:var(--table-padding); } -fieldset.inner>div.output>div.layout>div.layout>div.profile div.status>div { padding:var(--input-padding); float:left; } +fieldset.inner>div.output>div.layout>div.layout>div.profile>div.status { background-color:var(--output-bg-color); height:var(--action-height); overflow:auto; position:sticky; bottom:0; } +fieldset.inner>div.output>div.layout>div.layout>div.profile div.status>div { font-style:italic; font-size:var(--status-font-size); padding:var(--input-padding); float:left; } fieldset.inner>div.output>div.layout>div.layout>div.content div.tips { color:var(--disable-fg-color); font-style:italic; line-height:var(--code-line-height); position:absolute; top:0; right:10px; } fieldset.inner>div.output>div.layout>div.layout>fieldset.story { box-shadow:unset; } fieldset.inner.cmd>div.output>div.layout>div.tabs:not(.hide) { background-color:var(--plugin-bg-color); height:var(--code-tabs-height); display:flex; } diff --git a/plugin/local/wiki/draw.js b/plugin/local/wiki/draw.js index 758b00ab..5801874b 100644 --- a/plugin/local/wiki/draw.js +++ b/plugin/local/wiki/draw.js @@ -75,9 +75,9 @@ Volcanos(chat.ONIMPORT, { return meta._init && meta._init(target), target }, layout: function(can) { - can.ui.svg && can.page.style(can, can.ui.svg, html.MIN_HEIGHT, can.ConfHeight()-4, html.MIN_WIDTH, can.ConfWidth()) + can.ui.svg && can.page.style(can, can.ui.svg, html.MIN_HEIGHT, can.ConfHeight()-1, html.MIN_WIDTH, can.ConfWidth()) can.ui.layout && can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function(height, width) { - can.page.style(can, can.ui.svg, html.MIN_HEIGHT, height-4, html.MIN_WIDTH, width) + can.page.style(can, can.ui.svg, html.MIN_HEIGHT, height-1, html.MIN_WIDTH, width) }) }, })