diff --git a/const.js b/const.js index 010837fa..a2989698 100644 --- a/const.js +++ b/const.js @@ -104,6 +104,7 @@ var web = { CHAT: "chat", PORTAL: "portal", DESKTOP: "desktop", STUDIO: "studio", SERVICE: "service", + WORD: "word", CODE_GIT_SEARCH: "web.code.git.search", CODE_GIT_STATUS: "web.code.git.status", diff --git a/index.css b/index.css index 808719d4..d861cf5d 100644 --- a/index.css +++ b/index.css @@ -247,6 +247,7 @@ div.toast.float div.action>div.item span { display:none; } div.toast.float div.action>div.item input { padding:0 20px; } div.toast.float div.action>div.item.danger input { border:var(--danger-bg-color) solid 1px; } div.toast.float div.action>div.item.notice input { border:var(--notice-bg-color) solid 1px; } +div.toast.float div.action>div.item.open input { border:var(--notice-bg-color) solid 1px; } body>div.carte { padding:0; } body>div.carte input[name=filter] { margin:var(--input-margin); width:calc(100% - 10px); position:sticky; top:var(--input-margin); } body>div.carte div.item { white-space:pre; padding:var(--button-padding); } @@ -408,9 +409,9 @@ div.zone>div.list>div.zone>div.item { background-color:var(--th-bg-color); } div.tabs div { background-color:var(--plugin-bg-color); } div.tabs div:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } div.tabs div.select { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } -div.plug legend { background-color:var(--output-bg-color); } -div.plug legend:hover { background-color:var(--hover-bg-color); } -div.plug legend.select { background-color:var(--plugin-bg-color); border-left:var(--notice-bg-color) solid 5px; } +div.plug>legend { background-color:var(--output-bg-color); } +div.plug>legend:hover { background-color:var(--hover-bg-color); } +div.plug>legend.select { background-color:var(--plugin-bg-color); border-left:var(--notice-bg-color) solid 5px; } div.complete>table { background-color:var(--plugin-bg-color); } fieldset>form.option>div.item.text.cmd>input { background-color:var(--code-bg-color); color:var(--code-fg-color); } fieldset>div.action div.item.select.cmds { border-bottom:var(--notice-bg-color) solid 3px; } @@ -457,7 +458,7 @@ div.profile:not(.toggle) { border-left:var(--box-border); } div.display:not(.toggle) { border-top:var(--box-border); } fieldset>div.status { border-top:var(--status-border); } /* border-radius */ -legend { border-radius:var(--button-radius); } +legend { border-top-left-radius:var(--button-radius); } select { border-radius:var(--button-radius); } input[type=button] { border-radius:var(--button-radius); } fieldset>form.option>div.item.select { border-radius:var(--button-radius); } diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 70d87626..10ecf50c 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -143,9 +143,11 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp can.Option(can.onimport.history(can, {path: path, file: file, line: line||can.onexport.session(can, SELECT_LINE+nfs.DF+path+file)||can._msg.Option(nfs.LINE)||1})) can.onsyntax._init(can, can._msg, function(content) { var msg = can._msg; can.onexport.hash(can) can.isCmdMode() && can.onexport.title(can, (isIndex()||isSpace()? "": path)+file), can.onmotion.select(can, can.ui._tabs, html.DIV_TABS, msg._tab), can.isCmdMode() && msg._tab.scrollIntoView() + can.onmotion.toggle(can, can.ui.path, true) if (isSpace()) { can.ui.path.innerHTML = can.page.Format(html.A, can.base.trimPrefix(can.misc.MergePodCmd(can, {pod: can.Option(nfs.FILE)}), location.origin)) } else if (isIndex()) { + can.onmotion.hidden(can, can.ui.path) can.onimport._tabPath(can, nfs.PT, ice.CMD, can.Option(nfs.FILE), function(p, pre) { can.onimport.tabview(can, "", can.core.Keys(can.base.trimSuffix(pre, nfs.PT), p), ctx.INDEX) }, can.ui.path) diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 512d0b26..2c561664 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -56,7 +56,12 @@ Volcanos(chat.ONFIGURE, { can.page.Select(can, sub._output, html.DIV_ITEM, function(target, index) { can.onappend.style(can, msg.status[index], target) }) }), zone.toggle(false) }, }) -Volcanos(chat.ONACTION, {list: ["创建", "编译", "源码", "计划", "流程", "文档", "后台", "桌面", "官网"], _trans: {show: "预览", exec: "展示"}, +Volcanos(chat.ONACTION, {list: [ + "创建", "编译", "源码", "文档", + "聊天", + "矩阵", + "审批", + "后台", "桌面", "官网"], _trans: {show: "预览", exec: "展示"}, _run: function(event, can, button, args, cb) { can.runAction(event, button, args, cb||function(msg) { if (msg.IsErr()) { return can.user.toastFailure(can, msg.Result()) } can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(nfs.FILE)), can.user.toastSuccess(can, button), can.ui.zone.source.refresh() @@ -94,13 +99,16 @@ Volcanos(chat.ONACTION, {list: ["创建", "编译", "源码", "计划", "流程" "创建": function(event, can) { can.onaction.module(event, can, nfs.MODULE) }, "编译": function(event, can) { can.onaction.compile(event, can, code.COMPILE) }, + "审批": function(event, can) { can.onimport.tabview(can, "", aaa.APPLY, ctx.INDEX) }, + "矩阵": function(event, can) { can.onimport.tabview(can, "", web.MATRIX, ctx.INDEX) }, + "聊天": function(event, can) { can.onimport.tabview(can, "", web.CHAT_MESSAGE, ctx.INDEX) }, "源码": function(event, can) { can.onimport.tabview(can, "", web.CODE_GIT_STATUS, ctx.INDEX) }, "计划": function(event, can) { can.onimport.tabview(can, "", web.TEAM_PLAN, ctx.INDEX) }, "流程": function(event, can) { can.onimport.tabview(can, "", web.CHAT_FLOWS, ctx.INDEX) }, "文档": function(event, can) { can.onimport.tabview(can, "", web.WIKI_WORD, ctx.INDEX) }, "后台": function(event, can) { var pod = can.misc.Search(can, ice.POD); can.onimport.tabview(can, "", location.origin+"/c/admin"+(pod? "?pod="+pod: ""), web.SPACE) }, "桌面": function(event, can) { can.onimport.tabview(can, "", web.CHAT_MACOS_DESKTOP, ctx.INDEX) }, - "官网": function(event, can) { can.onimport.tabview(can, "", can.misc.MergePodCmd(can, {cmd: web.WIKI_PORTAL}), web.SPACE) }, + "官网": function(event, can) { can.onimport.tabview(can, "", can.misc.MergePodCmd(can, {cmd: web.PORTAL}), web.SPACE) }, insertLine: function(can, value, before) { var line = can.onaction.appendLine(can, value); before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before)); return can.onaction.rerankLine(can), can.onexport.line(can, line) }, deleteLine: function(can, line) { line = can.onaction._getLine(can, line); var next = line.nextSibling||line.previousSibling; return can.page.Remove(can, line), can.onaction.rerankLine(can), next },