mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
add some
This commit is contained in:
parent
741bf23c81
commit
434af52bef
51
frame.js
51
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) {
|
||||
|
15
index.css
15
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); }
|
||||
|
@ -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) }
|
||||
|
@ -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, '<span style="background-color:'+item.color+'"> </span>') })
|
||||
can.core.List(can.list, function(item) { msg.Push("weight", parseInt(item.span*100/360)+"%").Push(cli.COLOR, '<span style="background-color:'+item.color+'"> </span>') })
|
||||
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)
|
||||
},
|
||||
})
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user