diff --git a/frame.js b/frame.js index fa7c718a..a8e33de8 100644 --- a/frame.js +++ b/frame.js @@ -707,7 +707,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }) return vbar }, - toggle: function(can, target) { + toggle: function(can, target) { target = target||(can.ui.content? can.ui.content.parentNode: can._content) var toggle = can.page.Append(can, target, [ {view: [[html.PROJECT, html.TOGGLE]], onclick: function() { can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can) }}, {view: [[html.DISPLAY, html.TOGGLE]], onclick: function() { can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can) }}, @@ -766,9 +766,15 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }), can.core.List(list, function(item) { if (can.base.isArray(item)) { layout(type == FLOW? FLEX: FLOW, item, height, width) } }) } ui.project && can.user.isMobile && can.onmotion.hidden(can, ui.project); ui.filter = can.onappend.filter(can, ui.project) ui.display && can.onmotion.hidden(can, ui.display), ui.profile && can.onmotion.hidden(can, ui.profile) + can.onexport.session && can.onexport.session(can, "project.hide") == "true" && can.onmotion.hidden(can, ui.project) + can.onexport.session && can.onexport.session(can, "display.show") == "true" && can.onmotion.toggle(can, ui.display, true) + can.onexport.session && can.onexport.session(can, "profile.show") == "true" && can.onmotion.toggle(can, ui.profile, true) ui.layout = function(height, width, delay, cb) { can.onmotion.delay(can, function() { defer = [], layout(type, ui.list, height, width), defer.forEach(function(cb) { cb() }) if (can.db.value) { var _width = can.ConfWidth(); width = width-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0) + can.onexport.session(can, "project.hide", !can.page.isDisplay(can.ui.project)) + can.onexport.session(can, "display.show", can.page.isDisplay(can.ui.display)) + can.onexport.session(can, "profile.show", can.page.isDisplay(can.ui.profile)) if (can.isCmdMode()) { can.page.SelectChild(can, can._fields, "legend,form.option,div.header", function(target) { _width -= target.offsetWidth }) can.page.SelectChild(can, can._fields, "div.action", function(target) { can.page.style(can, target, html.MAX_WIDTH, _width-1) @@ -784,7 +790,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { can.db.value._profile_plugin && can.db.value._profile_plugin.onimport.size(can.db.value._profile_plugin, height, width-1, false) } can.db.value._content_plugin && can.db.value._content_plugin.onimport.size(can.db.value._content_plugin, height, width, false) - can.ui.toggle && can.ui.toggle.layout() + if (can.ui.toggle) { can.ui.toggle.layout(), can.page.style(can, can.ui.toggle.profile, "right", can.ui.profile.offsetWidth+"px") } } cb && cb(content_height, content_width) }, delay||0) } can.onimport.layout = can.onimport.layout||function(can) { diff --git a/index.css b/index.css index dca68f33..a9742fae 100644 --- a/index.css +++ b/index.css @@ -201,6 +201,7 @@ fieldset.plugin.cmd:not(.output)>div.action div.tabs>span.name { overflow:hidden fieldset.plugin.cmd:not(.output)>div.header { float:right; display:flex !important; flex-direction:row-reverse; } fieldset.studio>div.output>div.layout>div.layout>div.content>fieldset.story>form.option>div.icon.delete { display:none; } fieldset.studio>div.output>div.layout>div.layout>div.content>fieldset.story>div.action>div.item.state.button.full.icons { display:none; } +div.output>div.layout>div.layout { position:relative; } /* project */ div.project div.action:not(.hide) { width:100%; display:flex; } div.project div.action div.item input { border-right:var(--box-border); } @@ -251,6 +252,8 @@ div.toggle:hover { color:var(--hover-fg-color); } div.toggle.project { top:20%; left:0; border-top-right-radius:var(--plugin-radius); border-bottom-right-radius:var(--plugin-radius); } div.content>div.toggle.profile { top:20%; right:0; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); } div.content>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); } +div.layout>div.toggle.profile { top:20%; right:0; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); } +div.layout>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); } div.project:not(.toggle) { width:var(--project-width); flex:0 0 var(--project-width); } div.layout>div.profile:not(.toggle) { width:50%; flex:0 0 50%; } fieldset.story div.project:not(.toggle) { width:230px; flex:0 0 230px; } @@ -876,6 +879,7 @@ fieldset.rich>div.output>table.content { font-family:var(--code-font-family); } fieldset.plan div.output div.content>table.content { height:100%; width:100%; } fieldset.plan>div.output>div.layout>div.layout>div.profile:not(.toggle) { width:unset; flex:unset; } fieldset.plan>div.output>div.layout>div.layout>div.profile input:not(:last-child) { margin-right:var(--button-margin); } +fieldset.plan>div.output>div.layout>div.layout>div.profile table { width:100%; } fieldset.plan>div.output>div.layout>div.layout { align-items:flex-start; } fieldset.plan>div.output>div.layout { height:100%; } fieldset.draw>form.option>div.item.pid>input { width:var(--button-width) !important; } diff --git a/lib/misc.js b/lib/misc.js index 0db4a263..90bd36e6 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -319,7 +319,7 @@ Volcanos("misc", { if (can.base.isArray(key)) { key = key.join(":") } if (!can.base.isUndefined(value)) { if (value === "") { return sessionStorage.removeItem(key) } sessionStorage.setItem(key, value) - } return can.base.Obj(sessionStorage.getItem(key)) + } return can.base.Obj(sessionStorage.getItem(key))||sessionStorage.getItem(key) }, Log: function() { var args = this._args("", arguments) diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index 232ad252..d08ecafa 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -1,7 +1,7 @@ -Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can, target), can._display_heights = {}, can.list = {}; var ls = can.misc.SearchHash(can) - can.onmotion.hidden(can, can._action) - can.ui = can.onappend.layout(can) - can.onmotion.hidden(can, can.ui.project) +Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { + can._display_heights = {}, can.list = {}; var ls = can.misc.SearchHash(can) + can.ui = can.onappend.layout(can), can.ui.toggle = can.onappend.toggle(can) + can.onmotion.hidden(can, can.ui.project), can.isCmdMode() || can.onmotion.hidden(can, can._action) can.onimport[can.Option("scale")||team.WEEK](can, msg), can.Status(mdb.COUNT, msg.Length()), can.ui.filter.placeholder = `search in ${ msg.Length() } items`, can.onimport.layout(can) var item; if (can.isCmdMode() && ls.length > 0) { item = can.list[can.core.Keys(ls)] } else if (can.sup.task) { item = can.list[can.core.Keys(can.sup.task.space, can.sup.task.zone, can.sup.task.id)] } item && item.click() }, @@ -13,7 +13,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear( return can.onimport._task(can, msg, get(begin_time, col, row, hash), set(begin_time, col, row)) })} }) }] }])._target, can.onmotion.delay(can, function() { var target = can.sup.task && can.sup.task._target; target && target.click(), can.Status(mdb.COUNT, msg.Length()) }) - can.ui.toggle = can.onappend.toggle(can, can.ui.content) }, _task: function(can, msg, list, time) { return {type: html.TD, className: time == can.base.Time().slice(0, time.length)? html.SELECT: "", ondblclick: function(event) { can.onaction.insertTask(event, can, time+can.base.Time().slice(time.length)) }, diff --git a/plugin/table.js b/plugin/table.js index bb0f9f34..326789a8 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -273,7 +273,9 @@ Volcanos(chat.ONEXPORT, { hash: function(can, hash) { hash = typeof hash == code.STRING? hash.split(":").concat(can.core.List(arguments).slice(2)||[]): hash || can.core.Item(can.Option(), function(key, value) { return value||"" }) can.misc.SearchHash(can, hash), can.misc.localStorage(can, [can.ConfSpace()||can.misc.Search(can, ice.POD), can.ConfIndex(), "hash"], hash) }, - session: function(can, key, value) { return can.misc[can.user.isWebview? "localStorage": "sessionStorage"](can, [can.Conf(ctx.INDEX), key, location.pathname].join(":"), value == ""? "": JSON.stringify(value)) }, + session: function(can, key, value) { if (value) { value = JSON.stringify(value) } + return can.misc.sessionStorage(can, [can.ConfSpace()||can.misc.Search(can, ice.POD), can.ConfIndex(), key, location.pathname].join(":"), value) + }, table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return } var res = [msg.append && msg.append.join(mdb.FS)] msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) }) return res.join(lex.NL)