From b0416f781c973382183f3f12de6fbc54fe8082d3 Mon Sep 17 00:00:00 2001 From: shy Date: Wed, 31 Jan 2024 23:36:52 +0800 Subject: [PATCH] add some --- frame.js | 11 ++++++++--- index.css | 6 +++--- lib/core.js | 8 +++++++- lib/page.js | 4 +--- plugin/input/key.js | 2 +- plugin/local/mall/goods.js | 4 ---- plugin/local/wiki/feel.css | 3 ++- plugin/table.js | 9 +++++---- 8 files changed, 27 insertions(+), 20 deletions(-) diff --git a/frame.js b/frame.js index cdde6bb3..6b3c9abb 100644 --- a/frame.js +++ b/frame.js @@ -312,8 +312,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { can.user.open(can.misc.MergePodCmd(can, {pod: can.ConfSpace(), cmd: web.CODE_VIMER, path: ls[0], file: ls[1]})) } else { can.onappend._float(can, web.CODE_VIMER, ls) } }}, - {name: html.HEIGHT, value: parseInt(can.ConfHeight()), onclick: function(event) { can.onappend._float(can, {index: "can.view", _target: can._fields||can._target}) }}, - {name: html.WIDTH, value: parseInt(can.ConfWidth()), onclick: function(event) { can.onappend._float(can, {index: "can.data", _target: can._fields? can.sup: can}) }}, + {name: html.HEIGHT, value: parseInt(can.ConfHeight()||0), onclick: function(event) { can.onappend._float(can, {index: "can.view", _target: can._fields||can._target}) }}, + {name: html.WIDTH, value: parseInt(can.ConfWidth()||0), onclick: function(event) { can.onappend._float(can, {index: "can.data", _target: can._fields? can.sup: can}) }}, ]: []), function(item) { if (!item) { return } item = can.base.isString(item)? {name: item}: item if (item && item.name == web.SPACE && item.value) { item.value = can.page.Format(html.A, can.misc.MergePodCmd(can, {pod: item.value}), item.value) } if (can.base.beginWith(item.value, nfs.PS, ice.HTTP)) { item.value = can.page.Format(html.A, item.value, item.value.split("?")[0]) } @@ -354,7 +354,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { ) && (name = (item.index||"").split(".").slice(-2).join(".")), (type != html.PLUG) && (name = can.core.Keys(item.space||item._space, name)) var title = item.title || (item.help && item.help != name && !can.user.isEnglish(can)? name+"("+can.core.Split(item.help)[0]+")": name) target = can.base.isFunc(target)? target(): target - return can.page.Append(can, target||can._output, [{view: [type, html.FIELDSET], list: [{type: html.LEGEND, list: [item.icon && {icon: item.icon}, {text: title}]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}]) + return can.page.Append(can, target||can._output, [{view: [type, html.FIELDSET], style: item.style, list: [{type: html.LEGEND, list: [item.icon && {icon: item.icon}, {text: title}]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}]) }, input: function(can, item, value, target, style) { if ([html.BR, html.HR].indexOf(item.type) > -1) { return can.page.Append(can, target, [item]) } var icon = [], _item = can.base.Copy({className: "", type: "", name: ""}, item), input = can.page.input(can, _item, value) @@ -625,6 +625,11 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { can.onimport.layout = can.onimport.layout||function(can) { ui.layout(can.ConfHeight(), can.ConfWidth()), can.onimport._layout && can.onimport._layout(can) can.Action(html.FILTER) && can.onmotion.filter(can, can.Action(html.FILTER)) } + can.onimport._layout = can.onimport._layout||function(can) { if (!can.ui.content) { return } + can.page.style(can, can.ui.content, html.HEIGHT, can._output.style[html.HEIGHT], html.MAX_HEIGHT, can._output.style[html.MAX_HEIGHT]) + can.page.style(can, can.ui.project, html.HEIGHT, can.ui.content.offsetHeight+can.ui.display.offsetHeight) + can.onlayout.expand(can, can.ui.content) + } return ui }, tabview: function(can, meta, list, target) { var ui = can.page.Append(can, target, [html.ACTION, html.OUTPUT]) diff --git a/index.css b/index.css index e313b1d2..123233f4 100644 --- a/index.css +++ b/index.css @@ -380,8 +380,8 @@ body.mobile div.output>div.project { flex:0 0 320px; width:320px; } body.mobile div.output>div.project { background-color:var(--plugin-bg-color); } div.project div.list { margin-left:var(--button-margin); clear:both; } div.project div.list fieldset { position:static; } -div.project div.item { white-space:pre; line-height:24px; padding:0 var(--button-margin); } -div.project div.item img { height:var(--action-height); width:var(--action-height); } +div.project div.item { white-space:pre; line-height:24px; padding:0 var(--button-margin); display:flex; align-items:center; } +div.project div.item img { margin:var(--input-margin) !important; height:var(--action-height); width:var(--action-height); } div.project div.item.filter { padding:0; width:100%; } div.project div.item.filter>input { width:100%; padding:0 25px; } div.project div.item.search { padding:0; width:100%; } @@ -684,7 +684,7 @@ fieldset>div.output.form>div.item>span.need { color:red; } fieldset>div.output.form>div.item>div.item>input { font-size:20px; height:38px; width:var(--form-width); } fieldset>div.output.form>div.item>div.item>input[type=button] { font-size:20px; height:48px; border:var(--notice-bg-color) solid 1px; } fieldset.studio>div.output { padding:var(--plugin-padding); } -fieldset.studio>div.action>div.item { font-style:italic; padding:var(--input-margin) var(--button-padding); } +fieldset.studio>div.action>div.item:not(.icons) { font-style:italic; padding:var(--input-margin) var(--button-padding); } fieldset.studio>div.output>fieldset>form.option div.icon.delete { display:none; } fieldset.studio>div.output>fieldset>form.option div.icon:nth-child(2) { margin-left:var(--plugin-margin); } fieldset.studio>div.output>fieldset>div.output>table.content { width:100%; } diff --git a/lib/core.js b/lib/core.js index d25ae679..7ed34eca 100644 --- a/lib/core.js +++ b/lib/core.js @@ -14,7 +14,13 @@ Volcanos("core", { 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) 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 { + if (value === "") { + delete(_node[keys[i]]) + } else { + _node[keys[i]] = value + } + } } } var node = data, keys = key.split(nfs.PT); while (node && keys.length > 0) { diff --git a/lib/page.js b/lib/page.js index f131de76..06ace147 100644 --- a/lib/page.js +++ b/lib/page.js @@ -31,12 +31,10 @@ Volcanos("page", { return can.core.List(key == nfs.PT? [target]: target.querySelectorAll(can.page.Keys(key)), cb, interval, cbs) }, Modify: function(can, target, value) { target = can.base.isString(target)? document.querySelector(target): target; if (!target) { return } - can.base.isString(value)? (target.innerHTML = value): can.core.Item(value, function(key, val) { + can.base.isString(value)? (target.innerHTML = value): can.core.Item(value, function(key, val) { if (key == "view") { return } key == "className" && can.base.isArray(val) && (val = val.join(lex.SP)), !can.base.isObject(val)? (target[key] = val): can.core.Item(val, function(k, v) { if (can.base.isIn(k, "height", "width", "min-height", "max-height", "min-width", "max-width") && parseInt(v) < 0) { return target[key] && (target[key][k] = "") } if (can.base.isIn(k, "height", "width", "min-height", "max-height", "min-width", "max-width", "left", "top", "right", "bottom", "margin-left", "margin-top", "margin", "padding", "font-size") && v && (can.base.isNumber(v) || !can.base.endWith(v, "px"))) { v += "px" } - // if (k == "background-color") { debugger } - // if (k == "left") { debugger } target[key] && (target[key][k] = v) }) }); return target diff --git a/plugin/input/key.js b/plugin/input/key.js index a24e7ad4..1cd9254e 100644 --- a/plugin/input/key.js +++ b/plugin/input/key.js @@ -23,7 +23,7 @@ Volcanos(chat.ONFIGURE, {key: { msg.append.length == 1 && can.page.ClassList.add(can, can._target, chat.SIMPLE) can.onlayout.figure({target: target}, can, can._target, false, 200) }, - onclick: function(event, can, meta, target, cbs) { cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return } + onclick: function(event, can, meta, target, cbs) { target.value == "" && cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return } meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value) }) }, onblur: function(event, can, sub, cb) { sub && can.onmotion.delay(can, sub.close, 300) }, diff --git a/plugin/local/mall/goods.js b/plugin/local/mall/goods.js index b3a0f23f..08def1f6 100644 --- a/plugin/local/mall/goods.js +++ b/plugin/local/mall/goods.js @@ -30,8 +30,4 @@ Volcanos(chat.ONIMPORT, { } }) } }, - layout: function(can) { if (!can.ui.content) { return } - can.page.style(can, can.ui.content, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()-can.ui.project.offsetWidth) - can.onlayout.expand(can, can.ui.content) - }, }, [""]) diff --git a/plugin/local/wiki/feel.css b/plugin/local/wiki/feel.css index 8d947cb8..328b5874 100644 --- a/plugin/local/wiki/feel.css +++ b/plugin/local/wiki/feel.css @@ -1,8 +1,9 @@ fieldset.feel>div.output>div.layout>div.display { position:relative; overflow-y:hidden; } fieldset.feel>div.output>div.layout>div.display>img:hover { background-color:var(--hover-bg-color); cursor:pointer; } fieldset.feel>div.output>div.layout>div.display:not(.hide) { height:100px; align-items:normal; gap:10px; } +fieldset.feel>div.output>div.layout>div.display:not(.hide) img { height:100px; } fieldset.feel>div.output>div.layout>div.display:not(:hover)>div.toggle { display:none; } -fieldset.feel>div.output>div.layout>div.display>div.toggle { font-size:48px; padding:5px; position:absolute; top:20%; } +fieldset.feel>div.output>div.layout>div.display>div.toggle { font-size:48px; padding:5px; position:absolute; height:100px; padding-top:20px; } fieldset.feel>div.output>div.layout>div.display>div.toggle.prev { left:0; } fieldset.feel>div.output>div.layout>div.display>div.toggle.next { right:0; } fieldset.feel>div.output>div.layout>div.layout>div.content { text-align:center; overflow-y:hidden; } diff --git a/plugin/table.js b/plugin/table.js index 06578c7b..9be02f4b 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -135,8 +135,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { if (can.base.isFunc(cbs)) { var menu = cbs(event, ui._target); if (menu) { can.user.carteRight(event, can, menu.meta, menu.list, menu) } return } can.user.carteItem(event, can, item) } + var icon = item.icon||item.icons var ui = can.page.Append(can, target, [{view: html.ITEM, list: [ - item.icon && (can.base.contains(item.icon, ice.HTTP, ".png", ".jpg")? {img: item.icon}: {icon: item.icon}), + icon && (can.base.contains(icon, ice.HTTP, ".png", ".jpg")? {img: can.misc.Resource(can, icon)}: {icon: icon}), {text: item.nick||item.name||item.zone}], title: item.title, onclick: function(event) { can.onmotion.select(can, target, html.DIV_ITEM, event.currentTarget) cb(event, event.currentTarget, event.currentTarget._list && can.onmotion.toggle(can, event.currentTarget._list)) @@ -194,12 +195,12 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { }} }))._target }, tool: function(can, list, cb, target, status) { target = target||can._output, status = status||can._status + var height = can.base.Max(html.PLUG_HEIGHT, can.ConfHeight(), 240), width = can.base.Max(html.PLUG_WIDTH, can.ConfWidth()-(can.user.isMobile? 0: html.PROJECT_WIDTH)) can.core.Next(list.reverse(), function(meta, next) { can.base.isString(meta) && (meta = {index: meta}), meta.mode = html.FLOAT can.onimport.plug(can, meta, function(sub) { sub.onexport.output = function() { can.page.style(can, sub._output, html.MAX_HEIGHT, "", html.HEIGHT, "", html.WIDTH, "", html.MAX_WIDTH, "") - var height = can.base.Max(html.PLUG_HEIGHT, can._output.offsetHeight, 240), width = can.base.Max(html.PLUG_WIDTH, can.ConfWidth()-(can.user.isMobile? 0: html.PROJECT_WIDTH)) sub.onimport.size(sub, height, width, false), can.onmotion.delay(can, function() { sub.onimport.size(sub, height, width, false) }) - } + }, sub.onimport.size(sub, height, width, false) 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, "", 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) @@ -208,7 +209,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { 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 } can.onmotion.select(can, status, html.LEGEND, sub._legend), can.onmotion.toggle(can, sub._target, true) can.onmotion.select(can, target, html.FIELDSET_PLUG, sub._target) - sub.onimport.size(sub, sub.ConfHeight(), sub.ConfWidth()) + sub.onimport.size(sub, sub.ConfHeight(), sub.ConfWidth(), false) if (sub._delay_init || meta.msg) { sub._delay_init = false, meta.msg = false, (sub._inputs && sub._inputs.list || sub._inputs && sub._inputs.refresh) && sub.Update() } }) }, sub._delay_init = true, sub.select = function(show) { if (show && can.page.ClassList.has(can, sub._legend, html.SELECT)) { return sub }