diff --git a/frame.js b/frame.js index 1cef6036..75c81afa 100644 --- a/frame.js +++ b/frame.js @@ -234,6 +234,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, return can.user.input(event, can, meta.feature[cmds[1]], function(ev, button, data, list, args) { var msg = can.request(event, {_handle: ice.TRUE}, can.Option()) can.Update(event, cmds.slice(0, 2).concat(args), cb||function() { if (can.core.CallFunc([can.sup, chat.ONIMPORT, ice.MSG_PROCESS], {can: can.sup, msg: msg})) { return } + if (can.core.CallFunc([can, chat.ONIMPORT, ice.MSG_PROCESS], {can: can, msg: msg})) { return } if (msg.Result().length > 0 || msg.Length() > 0) { can.onappend.table(can, msg) can.onappend.board(can, msg) diff --git a/page/index.css b/page/index.css index f0a7e189..6871af91 100644 --- a/page/index.css +++ b/page/index.css @@ -119,7 +119,10 @@ body.white fieldset.Action { color:black; } body.white fieldset.Action>div.action { color:white; } body.white fieldset.Action fieldset.plugin { background-color:#ffffff78; } body.white fieldset.Action fieldset.plugin.full { background-color:#ffffffff; } -body.white fieldset.Action fieldset.plugin.Full { background-color:#cce0f4eb; } +body.white fieldset.Action fieldset.plugin.Full { background-color:#cce0f4eb; color:white; } +body.white fieldset.Action fieldset.story.Full { background-color:#cce0f4eb; color:white; } +body.white fieldset.Action fieldset.plugin.Full table.content { color:white; } +body.white fieldset.Action fieldset.story.Full table.content { color:white; } body.white fieldset.Search table { color:white; } body.white fieldset.word.float { background-color:aliceblue; color:black; } diff --git a/panel/action.css b/panel/action.css index 6db4277a..3f5d460f 100644 --- a/panel/action.css +++ b/panel/action.css @@ -14,6 +14,12 @@ fieldset.Action.flow>div.output fieldset.plugin { float:left; } fieldset.Action div.output fieldset.plugin.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:1; } fieldset.Action div.output fieldset.plugin.Full>legend { float:left; } +fieldset.Action div.output fieldset.story.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:1; } +fieldset.Action div.output fieldset.story.Full>legend { float:left; } +fieldset.Action>div.project.toggle { + background-color:cornsilk; opacity:0.8; color:teal; font-size: 28px; padding-top: 50px; height: 100px; width:20px; position: fixed; top: 200px; + border-top-right-radius:20px; border-bottom-right-radius:20px; +} fieldset.panel.cmd>div.output>fieldset.plugin { padding:0; margin:0; } fieldset.panel.cmd>div.output>fieldset.plugin>legend { background-color:darkcyan; padding:0 10px; margin-right:3px; height:30px; float:left; } diff --git a/panel/action.js b/panel/action.js index 1a46a2c3..33fb50ca 100644 --- a/panel/action.js +++ b/panel/action.js @@ -90,6 +90,11 @@ Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, p Volcanos("onaction", {help: "交互操作", list: [], _init: function(can, cb, target) { can.Conf(html.MARGIN_Y, 4*html.PLUGIN_MARGIN+2*html.ACTION_HEIGHT+html.ACTION_MARGIN) can.Conf(html.MARGIN_X, 4*html.PLUGIN_MARGIN) + function toggle(view) { return !can.setRiver("display") } + var gt = "❯", lt = "❮", down = "˅", up = "˄" + can.page.Append(can, target, [{view: [[html.TOGGLE, chat.PROJECT]], list: [{text: [gt, html.DIV]}], onclick: function(event) { + event.target.innerHTML = toggle()? gt: lt + }}]) can.onengine.plugin(can, "info", shy("信息", {}, ["text", "list", "back"], function(msg, cmds) { msg.Echo(JSON.stringify(can)) diff --git a/panel/river.js b/panel/river.js index c475363c..5db6c3ba 100644 --- a/panel/river.js +++ b/panel/river.js @@ -62,6 +62,10 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.storm_list[can.core.Keys(river, meta.hash)] = target }} }, + "display": function(event, can) { + var show = can.onmotion.toggle(can, can._target); can.onlayout._init(can) + return show + }, }) Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) { var list = can._root.river diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index ca0f739e..d91da92f 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -191,6 +191,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target layout: function(can) { var height = can.ConfHeight()-(can.user.isMobile && can.user.mod.isCmd? (can.user.isLandscape()? 14: 54): 0)-(can.user.isWindows? 20: 0), width = can.ConfWidth()-(can.user.isWindows && !can.user.mod.isCmd? 20: 0)+(can.user.isMobile && can.user.mod.isCmd && can.user.isLandscape()? 16: 0) + if (!height || height > window.innerHeight) { height = window.innerHeight - 200 } if (can.user.isMobile && can.user.isLandscape() && height < 200) { height = 200 } can.page.styleWidth(can, can.ui.profile_output, can.profile_size[can.onexport.keys(can)]||(width-can.ui.project.offsetWidth)/2) diff --git a/plugin/local/wiki/word.css b/plugin/local/wiki/word.css index 1fff3797..a81a9587 100644 --- a/plugin/local/wiki/word.css +++ b/plugin/local/wiki/word.css @@ -20,6 +20,7 @@ fieldset.word fieldset.story { margin:10px; } fieldset.word.float { padding:0; margin:0; width:-webkit-fill-available; position:fixed; left:0; top:0; z-index:10; } fieldset.word.float>div.action { display:contents; } +fieldset.word.float>div.status { clear:none; } fieldset.word.float>div.output { background-color:#f0f8ff80; padding:20px; overflow:auto; } fieldset.word.float>div.output>div.project { background:cornsilk; padding:10px; position:fixed; left:0; top:25px; z-index:100; } fieldset.word.float div.content div.page { margin-top:30px; display:none; } diff --git a/plugin/state.js b/plugin/state.js index 95df5114..e5f4940f 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -89,10 +89,15 @@ Volcanos("onaction", {help: "交互操作", list: [ mdb.NAME, meta.index, mdb.TEXT, JSON.stringify(can.Input([], true)), ]) }, - "切换全屏": function(event, can) { + "切换全屏": function(event, can) { var sub = can._outputs[can._outputs.length-1] if (can.page.ClassList.neg(can, can._target, "Full")) { - can.page.style(can, can._output, "height", window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT, "min-width", window.innerWidth) + sub._height_bak = sub.ConfHeight(), sub._width_bak = sub.ConfWidth() + var height = window.innerHeight-(can._status.innerText? 2: 1)*html.ACTION_HEIGHT + can.page.style(can, can._output, "height", sub.ConfHeight(height), "min-width", sub.ConfWidth(window.innerWidth)) + can.core.CallFunc([sub, "onimport.layout"], {can: sub}) } else { + sub.ConfHeight(sub._height_bak), sub.ConfWidth(sub._width_bak) + can.core.CallFunc([sub, "onimport.layout"], {can: sub}) can.page.style(can, can._output, "height", "", "min-width", "") } }, diff --git a/plugin/story/trend.js b/plugin/story/trend.js index e9efd7e2..a25e334b 100644 --- a/plugin/story/trend.js +++ b/plugin/story/trend.js @@ -5,7 +5,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.Conf(html.HEIGHT, can.Conf(html.HEIGHT)||200) can.msg = msg, can.data = msg.Table(), can.onimport._sum(can) - can.Action(html.HEIGHT, msg.Option(html.HEIGHT)||can.user.mod.isCmd? "max": can.user.isMobile&&can.user.isLandscape()? "200": "400") + can.Action(html.HEIGHT, msg.Option(html.HEIGHT)||"max") can.Action("speed", parseInt(msg.Option("speed")||"100")) can.require(["/plugin/local/wiki/draw.js", "/plugin/local/wiki/draw/path.js"], function() { @@ -39,6 +39,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }) can.Status({"from": begin, "commit": count, "total": add+del, "max": max}) }, + layout: function(can) { + can.onaction[can.Action("view")]({}, can) + }, }, [""]) Volcanos("onaction", {help: "组件菜单", list: ["edit", ["view", "趋势图", "柱状图", "数据源"], ["height", "100", "200", "400", "600", "800", "max"], ["speed", "10", "20", "50", "100"]], "edit": function(event, can) { @@ -46,7 +49,9 @@ Volcanos("onaction", {help: "组件菜单", list: ["edit", ["view", "趋势图", can.onmotion.toggle(can, can._status) }, "趋势图": function(event, can) { var height = can.Action(html.HEIGHT) - if (height == "max") { height = can.Conf(html.HEIGHT) } + if (height == "max") { + height = can.Conf(html.HEIGHT) + } height = parseInt(height) var space = 10, width = parseInt(can.Conf(html.WIDTH)) diff --git a/proto.js b/proto.js index 23de8319..033c2e78 100644 --- a/proto.js +++ b/proto.js @@ -334,6 +334,7 @@ var Volcanos = shy("火山架", {iceberg: "/chat/", volcano: "/frame.js", args: var msg = can.request({}, {trans: can.onaction._trans}) return can._menu = can.search(msg._event, [["Header", chat.ONIMPORT, "menu"], can._name].concat(list), cb) }, + setRiver: function(key, value) { return can.set("River", key, value) }, setHeader: function(key, value) { return can.set("Header", key, value) }, getHeader: function(key, cb) { return can.get("Header", key, cb) }, getAction: function(key, cb) { return can.get("Action", key, cb) },