diff --git a/frame.js b/frame.js index 4112a0b7..e022a9f0 100644 --- a/frame.js +++ b/frame.js @@ -625,8 +625,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }); return ui._target = target, ui }, - plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN - // , meta.space = meta.space||can.ConfSpace() + plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN, meta._space = can.Conf("_space") var res = {}; function _cb(sub, meta, skip) { kit.proto(res, sub), cb && cb(sub, meta, skip) } if (meta.inputs && meta.inputs.length > 0 || meta.meta) { can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, _cb, target, field); return res } function _plugin(_meta) { var value = can.onengine.plugin(can, _meta.index) @@ -702,12 +701,15 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro }), can.onengine.signal(can, chat.ONSIZE, can.request({}, {height: height, width: width})) can.user.isMobile && can.user.isLandscape() || can.page.style(can, document.body, kit.Dict(html.OVERFLOW, html.HIDDEN)) }, - expand: function(can, target, width, height, item) { var margin = 2*html.PLUGIN_PADDING + expand: function(can, target, width, height, item) { var margin = 2*html.PLUGIN_PADDING; width = width||320, height = height||160 var n = parseInt(target.offsetWidth/(width+margin)); width = target.offsetWidth/n - margin if (width+margin >= target.offsetWidth) { n = 1, width = target.offsetWidth - margin } + var m = parseInt(target.offsetHeight/(height+margin)); height = target.offsetHeight/m - margin + if (height+margin >= target.offsetHeight) { n = 1, height = target.offsetHeight - margin } can.page.SelectChild(can, target, item||html.DIV_ITEM, function(target) { can.page.styleHeight(can, target, height), can.page.styleWidth(can, target, width) }) + return height+margin }, background: function(can, url, target) { can.page.style(can, target||can._root._target, "background-image", url == "" || url == "void"? "": 'url("'+url+'")') }, figure: function(event, can, target, right, min) { @@ -736,10 +738,8 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro return layout }, _float: function(can) { var target = can._fields||can._target, sup = can._fields? can.sup: can - can.onappend.style(can, html.FLOAT), can.onmotion.resize(can, target, function(height, width) { sup.onimport.size(sup, height, width, true) }) - var left = - (can._root.River? can._root.River.offsetWidth: 0) - +html.PLUGIN_MARGIN+html.PLUGIN_PADDING+(can.user.mod.isCmd? 0: 120), top = can.page.height()/4; if (can.user.isMobile) { left = 0 } + can.onappend.style(can, html.FLOAT), can.onmotion.resize(can, target, function(height, width) { sup.onimport.size(sup, height, width, true) }, html.HEADER_HEIGHT, can.getRiverWidth()) + var left = can.getRiverWidth()+html.PLUGIN_MARGIN+html.PLUGIN_PADDING+(can.user.mod.isCmd? 0: 120), top = can.page.height()/4; if (can.user.isMobile) { left = 0 } can.page.style(can, target, html.LEFT, left, html.TOP, top), sup.onimport.size(sup, can.base.Max(600, can.page.height()-top-html.ACTION_HEIGHT), can.base.Max(can.user.mod.isCmd? 1200: 1000, can.page.width()-left), true) target.onclick = function(event) { can.onkeymap.prevent(event) can.page.Select(can, document.body, "fieldset.float,div.float", function(target) { can.page.style(can, target, "z-index", 9) }), can.page.style(can, target, "z-index", 10) @@ -864,8 +864,8 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) { var last = can._delay_list.meta[key]||0, self = can._delay_list.meta[key] = can._delay_list.list.push(cb) return can.core.Timer(interval||30, function() { cb(self, last, can._delay_list.meta[key]) }) }, - float: function(can) { var top = html.HEADER_HEIGHT, left = can._root.River? can._root.River._target.offsetWidth: 0 - var height = can.base.Max(html.FLOAT_HEIGHT, can.page.height()/2), width = can.base.Max(html.FLOAT_WIDTH, can.page.width()-html.RIVER_WIDTH) + float: function(can) { var top = html.HEADER_HEIGHT, left = can.getRiverWidth() + var height = can.base.Max(html.FLOAT_HEIGHT, can.page.height()/2), width = can.base.Max(html.FLOAT_WIDTH, can.page.width()-can.getRiverWidth()) if (can.user.mod.isCmd) { height = can.base.Max(can.page.height()/2-html.ACTION_HEIGHT, can.page.height(), 320), width = can.page.width()/2, top = html.ACTION_HEIGHT, left = 0 } if (can.user.isMobile) { if (can.user.isLandscape()) { height = can.page.height()*3/4, width = can.page.width()*3/4 } else { width = can.page.width() } } can.onimport.size(can, height, width, true), can.onmotion.move(can, can._target, {left: can.page.width()-width, top: (can.page.height()-height)/2}) @@ -881,7 +881,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) { if (!can.page.ClassList.set(can, target, html.HIDE, target.innerText.indexOf(value) == -1)) { return target } }).length can.user.toast(can, "filter out "+count+" lines") - }, 500) + }, 300) }, cache: function(can, next) { var list = can.base.getValid(can.base.Obj(can.core.List(arguments).slice(2)), [can._output]) var data = can._cache_data = can._cache_data||{}, old = list[0]._cache_key @@ -913,6 +913,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) { }, move: function(can, target, layout) { layout && can.page.style(can, target, layout), can.onmotion.resize(can, target, function() {}) }, resize: function(can, target, cb, top, left) { var begin, action + top = top || html.HEADER_HEIGHT, left = left || can.getRiverWidth() target.onmousedown = function(event) { if (event.which != 1 || event.target != target && !(can.page.ClassList.has(can, event.target, html.STATUS) && can.page.tagis(event.target, html.DIV))) { return } window._mousemove = target begin = {left: target.offsetLeft, top: target.offsetTop, height: target.offsetHeight, width: target.offsetWidth, x: event.x, y: event.y} }, target.onmouseup = function(event) { begin = null, delete(window._mousemove) } diff --git a/index.css b/index.css index 7193cd48..2e3d19de 100644 --- a/index.css +++ b/index.css @@ -416,7 +416,7 @@ body.mobile div.output.card { overflow-x:hidden; } div.output.card>div.item { background-color:var(--plugin-bg-color); padding:var(--plugin-padding); margin:var(--plugin-padding); border:var(--box-border); border-radius:var(--plugin-radius); box-shadow:var(--box-shadow); - height:180px; min-width:320px; position:relative; float:left; + min-height:160px; min-width:320px; position:relative; float:left; } div.output.card>div.item.stop { color:var(--disable-fg-color); } div.output.card>div.item>div.title { font-size:var(--legend-font-size); font-weight:bold; padding-bottom:var(--input-padding); border-bottom:var(--box-border); display:flex; align-items:center; overflow:hidden; } diff --git a/lib/base.js b/lib/base.js index 9f066e87..69a0f596 100644 --- a/lib/base.js +++ b/lib/base.js @@ -93,7 +93,7 @@ Volcanos("base", { for (var i = 0; i < list.length; i++) { var yestoday = this.Time(new Date(now - (i+1)*24*60*60*1000), "%y-%m-%d ") if (value.indexOf(yestoday) == 0) { - prefix = list[i] || ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"][new Date(value).getDay()]+" ", pre = yestoday; break + prefix = (list[i] || ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"][new Date(value).getDay()])+" ", pre = yestoday; break } } } diff --git a/plugin/local/mall/goods.js b/plugin/local/mall/goods.js index 67c3363b..b3a0f23f 100644 --- a/plugin/local/mall/goods.js +++ b/plugin/local/mall/goods.js @@ -32,6 +32,6 @@ 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, 260) + can.onlayout.expand(can, can.ui.content) }, }, [""]) diff --git a/plugin/state.js b/plugin/state.js index b29481db..5914875f 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -123,7 +123,6 @@ Volcanos(chat.ONACTION, {list: ["刷新数据", "刷新界面", "切换浮动", function(can) { if (can.sub.ui.profile) { return "预览" } }, function(can) { if (can.sub.ui.display) { return "演示" } }, ], - // ["数据", "保存参数", "清空参数", "复制数据", "下载数据", "清空数据"], ["调试", function(can) { if (can.Conf("_help")) { return "查看文档" } }, "查看脚本", "查看源码", "查看镜像", @@ -147,9 +146,7 @@ Volcanos(chat.ONACTION, {list: ["刷新数据", "刷新界面", "切换浮动", }, "刷新数据": function(event, can) { can.Update(event, can.Input()), can.user.toastSuccess(can) }, "刷新界面": function(event, can) { var sub = can.sub; sub.onlayout._init(sub, sub.ConfHeight(), sub.ConfWidth()), can.user.toastSuccess(can) }, - "切换浮动": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FLOAT, function() { can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can._status) - can.onmotion.float(can), can.onmotion.resize(can, can._target, function(height, width) { can.onimport.size(can, height, width) }) - }) }, + "切换浮动": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FLOAT, function() { can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can._status), can.onmotion.float(can) }) }, "切换全屏": function(event, can, button, sub) { can.onaction._switch(can, sub, chat.FULL, function() { can.page.style(can, can._target, html.LEFT, "", html.TOP, can.onexport.marginTop(), html.BOTTOM, "") can.ConfHeight(can.page.height()-can.onexport.marginTop()-can.onexport.marginBottom(can)), can.ConfWidth(can.page.width()) }) }, diff --git a/plugin/table.js b/plugin/table.js index a97b2683..0bea8ce9 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -1,6 +1,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can, target), can.onappend.style(can, can.Conf(ctx.STYLE)) - if (can.isCmdMode() && can.Conf(ctx.STYLE) == "form") { can.onappend.style(can, html.OUTPUT) } + if (can.isCmdMode() && can.Conf(ctx.STYLE) == html.FORM) { can.onappend.style(can, html.OUTPUT) } if (can.Mode() == html.ZONE) { return can.onimport._vimer_zone(can, msg, target) } var cbs = can.onimport[can.Conf(ctx.STYLE)||msg.Option(ctx.STYLE)]; if (can.base.isFunc(cbs)) { can.onappend.style(can, can._args[ctx.STYLE], target), can.core.CallFunc(cbs, {can: can, msg: msg, target: target}) @@ -8,19 +8,19 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onappend.table(can, msg, null, target), can.onappend.board(can, msg, target), can.onmotion.story.auto(can, target) } }, - card: function(can, msg, target) { can.sup.onexport.outputMargin = function() { return 200 } + card: function(can, msg, target) { can.page.Appends(can, target||can.ui.content||can._output, msg.Table(function(value) { value.icon = value.icon||value.image var img = can.misc.Resource(can, value.icon, value.type == web.MASTER? "": value.name) if (img.indexOf("/require/") == 0 && value.origin) { img = value.origin + img } return {view: [[html.ITEM, value.type, value.status]], list: [ {view: [wiki.TITLE, html.DIV], list: [ - value.icon && {img: img}, - {view: wiki.TITLE, list: [{text: value.name}, can.onappend.label(can, value)]}, - ]}, - {view: [wiki.CONTENT, html.DIV, value.text]}, + value.icon && {img: img}, {view: wiki.TITLE, list: [{text: value.name}, can.onappend.label(can, value)]}, + ]}, {view: [wiki.CONTENT, html.DIV, value.text]}, {view: html.ACTION, inner: value.action, _init: function(target) { can.onappend.mores(can, target, value, 5) }}, ]} - })), can.onimport.layout = can.onimport.layout||function() { can.onlayout.expand(can, can._output, 320) }, can.onappend.scroll(can, can._output) + })), can.onimport.layout = can.onimport.layout||function() { + var height = can.onlayout.expand(can, can._output); can.sup.onexport.outputMargin = function() { return height } + }, can.onappend.scroll(can, can._output) }, _vimer_zone: function(can, msg, target) { msg.Table(function(value) { var action = can.page.parseAction(can, value) can.onimport.item(can, {icon: can.misc.Resource(can, value.icon||value.avatar_url), name: can.page.Color(value[can.Conf(mdb.FIELD)||mdb.VIEW]||value[mdb.NAME]||value[mdb.TEXT]||value[mdb.TYPE]), title: value[mdb.TEXT]||value.description}, function(event) { @@ -125,7 +125,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.user.carteItem(event, can, item) } var ui = can.page.Append(can, target, [{view: html.ITEM, list: [ - item.icon && (can.base.contains(item.icon, "http", ".png", ".jpg")? {img: item.icon}: {icon: item.icon}), + item.icon && (can.base.contains(item.icon, ice.HTTP, ".png", ".jpg")? {img: item.icon}: {icon: item.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)) diff --git a/proto.js b/proto.js index 6dc553c6..7284f732 100644 --- a/proto.js +++ b/proto.js @@ -90,6 +90,7 @@ var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, _cache: {}, setAction: function(key, value) { return can.set(chat.ACTION, key, value) }, getAction: function(key, cb) { return can.get(chat.ACTION, key, cb) }, getActionSize: function(cb) { return can.get(chat.ACTION, nfs.SIZE, cb) }, + getRiverWidth: function() { return can._root.River? can._root.River._target.offsetWidth: 0}, isPanelType: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.PANEL) }, isPluginType: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.PLUGIN) }, isStoryType: function() { return can.page.ClassList.has(can, can._fields||can._target, chat.STORY) },