From 434af52bef73c690afafa27dae5ce29e18e7bdfe Mon Sep 17 00:00:00 2001 From: shy Date: Wed, 27 Mar 2024 13:25:47 +0800 Subject: [PATCH] add some --- frame.js | 51 ++++++++++++++++++++++++------------------- index.css | 15 +++++-------- plugin/state.js | 6 ++--- plugin/story/pie.js | 9 ++++---- plugin/story/stats.js | 7 +++--- 5 files changed, 44 insertions(+), 44 deletions(-) diff --git a/frame.js b/frame.js index 4769b28b..ca4af3ef 100644 --- a/frame.js +++ b/frame.js @@ -308,6 +308,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { _legend: can._legend, _option: can._option, _action: action||can._action, _output: output, _status: status||can._status, 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()) + sub.db.hash = can.isCmdMode()? can.misc.SearchHash(can): [] var last = can.sub; last && can.core.CallFunc([last, "onaction.hidden"], {can: last}) sub.run = function(event, cmds, cb, silent) { var msg = sub.request(event)._caller() msg.RunAction(event, sub, cmds) || can.Update(event, can.Input(cmds, !silent), cb, silent) @@ -317,11 +318,11 @@ 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) { can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) }) } - sub.db.hash = can.isCmdMode()? can.misc.SearchHash(can): [] - can.page.ClassList.del(can, sub._fields, html.FORM) - delete(can._status._cache), delete(can._status._cache_key) - can.page.style(can, can._output, html.HEIGHT, can._output.offsetHeight) - sub._output.className = html.OUTPUT, can.onappend.style(can, sub._args.style, can._output) + can.page.ClassList.del(can, sub._fields, html.FORM), delete(can._status._cache), delete(can._status._cache_key) + // can.page.style(can, can._output, html.HEIGHT, can._output.offsetHeight) + // sub._output.className = html.OUTPUT + can.onappend.style(can, sub._args.style, can._output) + can.isCmdMode() && can.onimport.size(can, can.ConfHeight(), can.ConfWidth(), false) can.onexport._output(sub, msg), sub.Mode() != ice.MSG_RESULT && can.onmotion.clear(can, output) can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) { if (action !== false) { can.onkeymap._build(sub) @@ -683,35 +684,34 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { append(can.page.Append(can, target, [html.LAYOUT])._target, type==FLOW? FLEX: FLOW, item) } else if (can.base.isObject(item)) { if (item.index) { item._index = count++, ui.size[item._index] = item.height||item.width - item.type = item.type||"story" - can.base.isIn(item._command, web.PORTAL, web.DESKTOP, aaa.OFFER, aaa.APPLY, code.VIMER) && can.onmotion.hidden(can, target) - item.layout = function(height, width) {} + item.type = item.type||"story", item.layout = function(height, width) { + can.page.style(can, ui[item._index], html.WIDTH, width) + } can.onappend.plugin(can, item, function(sub) { can._plugins = (can._plugins||[]).concat([sub]) item.layout = function(height, width) { sub.onimport.size(sub, height, width, false) } can.onmotion.select(can, sub._target.parentNode, html.FIELDSET, sub._target) - sub.onexport._output = function() { - can.onimport.layout(can) + sub.onexport._output = function() { can.onimport.layout(can) can.onmotion.delay(can, function() { can.onmotion.toggle(can, target, true) }) } - }, target, ui[item._index] = can.onappend.field(can, item.type, {index: item.index, name: item.index.split(nfs.PT).pop(), help: item.help}, target)._target) + }, target, ui[item._index] = can.onappend.field(can, item.type, item, target)._target) + can.base.isIn(item._command, web.PORTAL, web.DESKTOP, aaa.OFFER, aaa.APPLY, code.VIMER) && can.onmotion.hidden(can, target) } else { can.page.Append(can, target, [item]) } } }); return list } ui.list = append(target, type, list||[html.PROJECT, [[html.CONTENT, html.PROFILE], html.DISPLAY]]) function calc(item, size, total) { return !ui.size[item]? can.base.isString(size)? parseInt(can.base.trimSuffix(size, "px")): size: ui.size[item] < 1? total*ui.size[item]: ui.size[item] } var defer = [], content_height, content_width; function layout(type, list, height, width) { var _width = width, _height = height; can.core.List(list, function(item) { var meta = {} - if (can.base.isArray(item)) { return } if (can.base.isObject(item)) { var meta = item; item = item._index } + if (can.base.isArray(item)) { return } + if (can.base.isObject(item)) { var meta = item; item = item._index } var target = ui[item]; if (!can.page.isDisplay(target)) { return } if (item == html.CONTENT || item == ice.MAIN) { return defer.push(function() { can.page.style(can, target, html.HEIGHT, content_height = height, html.WIDTH, content_width = width) }) } if (type == FLOW) { - var h = calc(item, target.offsetHeight, height) - if (can.base.isObject(meta) && meta.layout) { meta.layout(h, width) } - can.page.style(can, target, html.WIDTH, width) + var h = calc(item, target.offsetHeight, height), w = meta.width||width + can.page.style(can, target, html.WIDTH, w); if (can.base.isObject(meta) && meta.layout) { meta.layout(h, w) } if (can.page.isDisplay(target)) { height -= h } } else { var w = calc(item, target.offsetWidth||target.style.width||_width/list.length, _width), h = meta.height||height - if (can.base.isObject(meta) && meta.layout) { meta.layout(h, w = _width/list.length) } - can.page.style(can, target, html.HEIGHT, h, html.WIDTH, w) + can.page.style(can, target, html.HEIGHT, h); if (can.base.isObject(meta) && meta.layout) { meta.layout(h, w = _width/list.length) } if (can.user.isMobile && item == html.PROJECT) { return } if (can.page.isDisplay(target)) { width -= w } } @@ -720,7 +720,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { if (can.onimport.filter) { ui.filter = can.onimport.filter(can, ui.project) } ui.project && can.user.isMobile && can.onmotion.hidden(can, ui.project) ui.layout = function(height, width, delay, cb) { can.onmotion.delay(can, function() { defer = [], layout(type, ui.list, height, width), defer.forEach(function(cb) { cb() }), cb && cb(content_height, content_width) }, delay||0) } - can.onimport.layout = can.onimport.layout||function(can) { ui.layout(can.ConfHeight(), can.ConfWidth()), can.onimport._layout && can.onimport._layout(can) + 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 } @@ -731,13 +732,17 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { return ui }, tabview: function(can, meta, list, target) { var ui = can.page.Append(can, target, [html.ACTION, html.OUTPUT]) - can.onappend.style(can, "tabview", ui.action) - can.onappend.style(can, html.FLEX, ui.action) - can.core.List(can.base.getValid(list, can.core.Item(meta)), function(name, index) { - ui[name] = can.page.Append(can, ui.action, [{view: [html.TABS, html.DIV, can.user.trans(can, name)], onclick: function(event) { + can.onappend.style(can, "tabview", ui.action), can.onappend.style(can, html.FLEX, ui.action) + var _meta = meta + if (meta.Table) { _meta = {} + meta.Table(function(value) { + _meta[value.index] = value + }) + } + can.core.List(can.base.getValid(list, can.core.Item(_meta)), function(name, index) { var item = _meta[name] + ui[name] = can.page.Append(can, ui.action, [{view: [html.TABS, html.DIV, item.title||can.user.trans(can, name)], onclick: function(event) { can.onmotion.select(can, ui.action, html.DIV_TABS, event.target) if (can.onmotion.cache(can, function() { return name }, ui.output)) { return } - var item = meta[name] if (typeof item == code.FUNCTION) { return item(ui.output) } item.type = item.type||"story" can.onappend.plugin(can, item, function(sub) { diff --git a/index.css b/index.css index 43d87173..a4706144 100644 --- a/index.css +++ b/index.css @@ -56,7 +56,7 @@ body { --table-padding:var(--button-padding); --header-height:48px; --footer-height:var(--action-height); --action-height:32px; --status-height:var(--action-height); --textarea-height:96px; - --input-width:140px; --button-width:60px; --form-width:360px; --url-input-width:480px; + --input-width:140px; --button-width:60px; --form-width:360px; --url-input-width:480px; --card-width:320px; --card-height:160px; --qrcode-width:360px; --qrcode-height:364px; --story-height:var(--float-height); --iframe-height:420px; --plug-height:var(--float-height); --plug-width:var(--float-width); @@ -67,7 +67,7 @@ body { --legend-font-family:var(--body-font-family); --status-font-family:var(--body-font-family); --input-font-family:var(--code-font-family); --table-font-family:var(--code-font-family); - --svg-font-family:var(--code-font-family); + --svg-font-family:var(--code-font-family); --body-font-size:16px; --legend-font-size:20px; --status-font-size:12px; --code-font-size:14px; --code-line-height:24px; --code-tabs-height:48px; --icon-font-size:var(--legend-font-size); --svg-font-size:24px; --svg-stroke-width:1; @@ -214,6 +214,7 @@ div.item.online.state span { background-color:var(--hover-bg-color); color:var(- div.item.online.state img { height:var(--action-height); transition:margin-right 1s; float:right; } div.item.online.state img:hover { background-color:var(--hover-bg-color); } div.item.online.state:not(:hover) img:not(:first-child) { margin-right:-20px; } +fieldset.output>div.header { display:none; } fieldset>div.header { display:contents; } fieldset>div.header>div { line-height:22px; padding:var(--input-padding); float:right; } fieldset>div.header>div.avatar { padding:0; } @@ -432,15 +433,11 @@ div.item.button.danger input:hover[type=button] { background-color:var(--danger- div.item.button.notice input:hover[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } div.item.button.danger input { border:var(--danger-bg-color) solid 1px; } div.item.button.notice input { border:var(--notice-bg-color) solid 1px; } -div.action div.tabs:hover { - background-color:var(--hover-bg-color); - /* color:var(--hover-fg-color); */ +div.action div.tabs:hover { background-color:var(--hover-bg-color); border-top-left-radius:var(--button-margin); border-top-right-radius:var(--button-margin); } -div.action div.tabs.select { - background-color:var(--output-bg-color); - /* color:var(--hover-fg-color); */ - border-top-left-radius:var(--button-margin); border-top-right-radius:var(--button-margin); border-bottom:var(--notice-bg-color) solid 3px; +div.action div.tabs.select { background-color:var(--hover-bg-color); + border-top-left-radius:var(--plugin-radius); border-top-right-radius:var(--plugin-radius); border-bottom:var(--notice-bg-color) solid 3px; } div.zone>div.item { background-color:var(--th-bg-color); } div.zone>div.list>div.zone>div.item { background-color:var(--th-bg-color); } diff --git a/plugin/state.js b/plugin/state.js index 641b9116..a65df0b9 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -90,11 +90,9 @@ Volcanos(chat.ONIMPORT, { return input.value = value, can.Update(event, can.Input([], true, data), cb), input })[0] }, _size: function(can, height, width, auto, mode) {}, - size: function(can, height, width, auto, mode) { - var margin = (can.Conf("margin")||0)*2 + size: function(can, height, width, auto, mode) { typeof width == code.STRING && (width = can.base.ParseSize(width)) can.Conf("_auto", auto), can.Mode(mode), can.ConfHeight(height), can.ConfWidth(width), height -= can.onexport.actionHeight(can)+can.onexport.statusHeight(can) - // height -= 2*margin - width -= 2*margin + var padding = can.Conf("padding")||0, margin = can.Conf("margin")||0; height -= 2*padding, width -= 2*padding+2*margin auto || auto == undefined? (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)) if (can.misc.Search(can, log.DEBUG) == ice.TRUE) { can.Status(html.HEIGHT, can.base.Max(height, can._output.offsetHeight), html.WIDTH, width) } diff --git a/plugin/story/pie.js b/plugin/story/pie.js index 35c13648..645eae2f 100644 --- a/plugin/story/pie.js +++ b/plugin/story/pie.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(can, function() { can.list = can.onimport._data(can, msg, can.Conf(mdb.FIELD)||mdb.VALUE) - can.core.List(can.list, function(item) { msg.Push("weight", parseInt(item.span*100/360)+"%").Push(cli.COLOR, ' ') }) + can.core.List(can.list, function(item) { msg.Push("weight", parseInt(item.span*100/360)+"%").Push(cli.COLOR, ' ') }) can.onaction.list = [], can.ui.display = can.page.Append(can, can._output, [html.DISPLAY])._target can.onappend.table(can, msg, null, can.ui.display), can.page.Select(can, can.ui.display, html.TR, function(tr, index) { can.page.Modify(can, tr, {onmouseenter: function(event) { can._draw(index-1) }}) @@ -34,11 +34,10 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(ca return parseInt(value) }, layout: function(can) { if (!can.ui || !can.ui.svg) { return } - var padding = (can.Conf("padding")||0) - var height = can.base.Max(can.ConfHeight(), can.ConfWidth()/2), margin = 20, r = height/2-margin-padding; - can.ui.svg.Val(html.HEIGHT, height-2*padding), can.ui.svg.Val(html.WIDTH, height-2*padding) + var height = can.base.Max(can.ConfHeight(), can.ConfWidth()/2), margin = 10, r = height/2-2*margin; // can.page.style(can, can.ui.display, html.HEIGHT, can.ConfHeight()-can.ui.svg.Val(html.HEIGHT)) can.page.style(can, can.ui.display, html.WIDTH, can.ConfWidth()-height) - can._draw = function(which) { can.onimport._draw(can, height/2-2*padding, can.ConfHeight()/2, r, margin, which) }, can._draw(0) + can.ui.svg.Val(html.HEIGHT, height), can.ui.svg.Val(html.WIDTH, height) + can._draw = function(which) { can.onimport._draw(can, height/2-margin/2, can.ConfHeight()/2-margin/2, r, margin, which) }, can._draw(0) }, }) diff --git a/plugin/story/stats.js b/plugin/story/stats.js index e77dfeba..0cc08557 100644 --- a/plugin/story/stats.js +++ b/plugin/story/stats.js @@ -1,9 +1,10 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg) { can.onappend.style(can, [web.STATS, html.FLEX], can._output) + var FIELD = can.Conf(mdb.FIELD)||mdb.NAME, VALUE = can.Conf(mdb.VALUE)||mdb.VALUE var list = {}, stats = {}, units = {}, trans = {}, index = {}; msg.Table(function(value) { - stats[value.name] = parseFloat(stats[value.name]||"0") + parseFloat(value.value) - units[value.name] = value.units, trans[value.name] = value._trans - index[value.name] = value.index, list[value.name] = value + stats[value[FIELD]] = parseFloat(stats[value[FIELD]]||"0") + parseFloat(value[VALUE]) + units[value[FIELD]] = value.units, trans[value[FIELD]] = value._trans + index[value[FIELD]] = value.index, list[value[FIELD]] = value }) function fmts(value) { var ls = [] while (value > 0) { ls.push(value%1000)