1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 08:48:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-01-18 22:10:38 +08:00
parent 4253571235
commit 2a5d9bed64
10 changed files with 62 additions and 105 deletions

View File

@ -232,14 +232,15 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (item.type == html.BUTTON && can.page.isIconInput(can, item.name)) { can.onappend.icons(can, target, item.name) }
}), item), "", action)
})
if (list.length == 0 && can.Conf("inputs").length == 0) { return meta } var _can = can._fields? can.sup: can
can.user.isMobile || can.isCmdMode() || can.base.beginWith(can.ConfIndex(), "can.", "web.chat.macos.") || can.page.tagis(can._fields||can._target, html.FIELDSET_PANEL, html.FIELDSET_PLUG) || action == can._action && can.page.Append(can, action,
can.core.Item({full: "切换全屏", qrcode: "生成链接", open: "打开链接"}, function(key, value) {
return {view: [[html.ITEM, html.BUTTON, key, "icons"]], list: [{icon: icon[key]}], title: can.user.trans(can, key), onclick: function(event) {
_can.onaction[value](event, _can, value, _can.sub)
}}
})
); return meta
var _can = can._fields? can.sup: can
list.length == 0 && can.Conf("inputs").length == 0 || can.isCmdMode() || can.base.beginWith(can.ConfIndex(), "can.", "web.chat.macos.") ||
can.page.tagis(can._fields||can._target, html.FIELDSET_PANEL, html.FIELDSET_PLUG) || action == can._action && can.page.Append(can, action,
can.core.Item(can.user.isMobile? {open: "打开链接"}: {full: "切换全屏", qrcode: "生成链接", open: "打开链接"}, function(key, value) {
return {view: [[html.ITEM, html.BUTTON, key, "icons"]], list: [{icon: icon[key]}], title: can.user.trans(can, key), onclick: function(event) {
_can.onaction[value](event, _can, value, _can.sub)
}}
})
); return meta
},
_output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); meta.feature = meta.feature||{}
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION) { if (msg.RunAction(event, can.sub, cmds)) { return } }
@ -659,17 +660,12 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
can.page.SelectChild(can, target, can.page.Keys(html.FIELDSET_HEAD, html.FIELDSET_FOOT), function(field) { height -= field.offsetHeight })
can.page.SelectChild(can, target, html.FIELDSET_LEFT, function(field) { can.user.isMobile || can.page.isDisplay(field) && (width -= field.offsetWidth)
var h = height; can.page.SelectChild(can, field, html.DIV_ACTION, function(action) {
h -= action.offsetHeight
if (action.offsetHeight == 0 && html.RIVER_MARGIN > 0) {
h -= html.ACTION_HEIGHT
}
h -= action.offsetHeight; if (action.offsetHeight == 0 && html.RIVER_MARGIN > 0) { h -= html.ACTION_HEIGHT }
}), can.user.isMobile || (h -= 2*html.RIVER_MARGIN-html.ACTION_HEIGHT)
can.page.SelectChild(can, field, html.DIV_OUTPUT, function(output) { can.page.styleHeight(can, output, h) })
})
can.page.SelectChild(can, target, html.FIELDSET_MAIN, function(field) {
can.page.SelectChild(can, field, html.DIV_ACTION, function(action) {
height -= action.offsetHeight
})
can.page.SelectChild(can, field, html.DIV_ACTION, function(action) { height -= action.offsetHeight })
if (can.user.isMobile && can.user.isLandscape()) { return }
can.page.SelectChild(can, field, html.DIV_OUTPUT, function(output) { can.page.styleHeight(can, output, height) })
}), can.onengine.signal(can, chat.ONSIZE, can.request({}, {height: height, width: width}))
@ -702,7 +698,7 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
layout.top = top+height-target.offsetHeight
}
}
if (layout.left+target.offsetWidth > left+width) { layout.left = (right? rect.left: left+width)-target.offsetWidth-1 }
if (layout.left+target.offsetWidth > left+width-20) { layout.left = (right? rect.left: left+width)-target.offsetWidth-1 }
can.page.style(can, target, html.MAX_HEIGHT, top+height-layout.top)
});
can.onmotion.move(can, target, layout), can.onmotion.slideGrow(can, target)

View File

@ -39,7 +39,7 @@ body {
--code-font-size:14px; --code-line-height:24px; --code-tabs-height:48px;
--svg-font-size:24px; --svg-stroke-width:1; --status-font-size:12px;
--river-width:var(--project-width); --project-width:230px; --input-width:120px; --button-width:60px;
--river-width:var(--project-width); --project-width:230px; --input-width:120px; --button-width:60px; --form-width:320px;
--action-height:32px; --status-height:var(--action-height); --footer-height:var(--action-height); --header-height:48px;
--desktop-height:684px; --float-height:480px; --plug-height:480px; --story-height:var(--float-height);
--desktop-width:1200px; --float-width:1200px; --plug-width:1000px;
@ -57,33 +57,27 @@ input { font-family:var(--input-font-family); }
body { font-family:var(--body-font-family); }
body { background-color:var(--body-bg-color); color:var(--body-fg-color); }
body.windows { --code-font-family:"Courier New"; }
body.mobile { --qrcode-height:284px; }
body.mobile { --qrcode-height:284px; --svg-font-size:13px; }
body.cmd { background-color:var(--plugin-bg-color); }
// body.cmd { --plug-width:1200px; --plug-height:480px; }
body.width1 { /* 320-640 手机竖屏 */
--svg-font-size:13px;
--river-width:280px;; --project-width:120px; --input-width:80px;
--river-margin:0;
--plugin-margin:0; --button-margin:5px;
--river-width:280px; --project-width:120px; --input-width:80px;
--river-margin:0; --plugin-margin:0; --button-margin:5px;
--footer-height:60px;
--action-button:2; --table-button:2;
--table-button:2;
}
body.width2 { /* 640-960 手机横屏 平板竖屏 笔记本调试 */
--action-button:4; --table-button:3;
--table-button:3;
}
body.width3 { /* 960-1280 平板横屏 */
--action-button:5; --table-button:3;
--table-button:3;
}
body.width4 { /* 1280-1600 笔记本 显示器调试 */
--plugin-padding:10px;
--action-button:6; --table-button:4;
--table-button:4;
}
body.width5 { /* 1600-1920 */
--plugin-padding:10px;
--action-button:6; --table-button:4;
--table-button:4;
}
body.width6 { /* 1920-2240 显示器 */
--plugin-padding:10px;
--river-width:280px; --input-width:180px;
}
/* element */
@ -192,7 +186,7 @@ body>div.input { padding:var(--plugin-padding); z-index:100; }
body>fieldset.input.float { padding:0; border-radius:0 !important; z-index:100; }
body>fieldset.input.float table.content td { padding:var(--input-padding); }
body>fieldset.input.float table.content th { padding:var(--input-padding); }
body>div.input>legend { font-style:italic; width:100%; justify-content:center; }
body>div.input>legend { margin-left:122px; }
body>div.input td { padding:var(--table-padding); }
body>div.input td:nth-child(2) { padding:var(--table-padding) 0; }
body>div.input tr.img td:last-child>span { display:none; }
@ -218,7 +212,7 @@ body>div.input input[name=cancel] { border:var(--danger-bg-color) solid 1px; }
body>div.input input[name=submit] { border:var(--notice-bg-color) solid 1px; }
body>div.input input[name=submit]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
body>div.input input[name=cancel]:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
body>div.input div.action { padding:0 var(--table-padding); width:100%; position:sticky; bottom:0; flex-direction:row-reverse; }
body>div.input div.action { padding:var(--table-padding); width:100%; position:sticky; bottom:0; flex-direction:row-reverse; }
body>div.input div.action>div.item { margin-left:var(--button-margin); float:right; }
body>div.input div.action>div.item>input[type=button] { width:112px; }
body>div.input.login { box-shadow:unset; flex-direction:column; }
@ -306,7 +300,8 @@ fieldset.plugin>legend { font-style:italic; }
fieldset.plugin>form.option>div.button.icons>input { display:none; }
fieldset.plugin>div.action>div.button.icons>input { display:none; }
fieldset.Action.tabview>div.output>fieldset.plugin>div.action>div.item.full { display:none; }
fieldset.Action:not(.tabview):not(.horizon):not(.grid) fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon { display:none; }
fieldset.Action:not(.tabview):not(.horizon):not(.grid) fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon.delete { display:none; }
body:not(.mobile) fieldset.Action:not(.tabview):not(.horizon):not(.grid) fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon { display:none; }
fieldset.Action.tabview fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon.delete { display:none; }
fieldset.Action.grid fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon.delete { display:none; }
fieldset.Action.horizon fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon.delete { display:none; }
@ -390,23 +385,11 @@ div.profile:not(.toggle) { border-left:var(--box-border); width:50%; flex:0 0 50
div.display:not(.toggle) { border-top:var(--box-border); }
/* output style */
body.mobile div.output.card { overflow-x:hidden; }
div.output.card {
/* display:flex; flex-wrap:wrap; */
}
fieldset:not(.plug)>div.output.card>div.item {
height:180px;
min-width:320px;
}
/* fieldset.plug>div.output.card>div.item { */
/* width:100%; */
/* margin:0; */
/* } */
div.output.card>div.item {
/* flex-grow:1; */
position:relative;
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);
float:left;
height:180px; 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; }
@ -473,7 +456,8 @@ table.content th { background-color:var(--th-bg-color); color:var(--th-fg-color)
table.content td:hover { background-color:var(--td-hover-bg-color); }
table.content td.select { background-color:var(--td-hover-bg-color); }
table.content.action tr:hover td:last-child { background-color:var(--th-bg-color); box-shadow:var(--box-shadow); }
table.content.detail td:first-child { text-align:center; min-width:80px; }
table.content.detail td:first-child { text-align:center; min-width:80px; padding:var(--table-padding) 0; }
table.content.detail td { text-align:center; min-width:80px; padding:var(--table-padding) 0; }
table.content input { box-shadow:var(--box-shadow); }
body.mobile table.content input { border:var(--box-border); box-shadow:var(--box-shadow); }
h1:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
@ -628,20 +612,13 @@ fieldset.draw.trends div.output svg { background-color:#1b5b738c; }
fieldset.form>div.output>div.code { display:flex; flex-direction:column; justify-content:center; align-items:center; }
fieldset.form>div.output>div.code>div.info { font-size:20px; padding:40px 20px; overflow:auto; white-space:break-spaces; }
fieldset.form>div.output>div.code>input[type=button] { font-size:24px; border:var(--notice-bg-color) solid 1px; height:48px; width:240px; margin:20px; display:block; }
fieldset>div.output.form { padding:20px; display:flex; flex-direction:column; align-items:center; justify-content:center; }
fieldset>div.output.form { padding:20px; display:flex; flex-direction:column; align-items:center; }
fieldset>div.output.form>div.item { text-align:left; margin:10px; height:unset; }
fieldset>div.output.form>div.item>div.item { height:unset; }
fieldset>div.output.form>div.item>span { padding:var(--input-padding); }
fieldset>div.output.form>div.item>span.need { color:red; }
fieldset>div.output.form>div.item>div.item>input {
width:var(--river-width);
height:38px;
font-size:20px;
}
fieldset>div.output.form>div.item>div.item>input[type=button] {
font-size:24px; height:48px; border:var(--notice-bg-color) solid 1px;
margin-top:20px;
}
fieldset>div.output.form>div.item>div.item>input { font-size:20px; height:38px; width:var(--form-width); }
fieldset>div.output.form>div.item>div.item>input[type=button] { font-size:20px; height:48px; border:var(--notice-bg-color) solid 1px; }
fieldset.draw.spides div.output svg text { cursor:pointer; }
fieldset.draw.spides div.output svg path { stroke-width:1; }
fieldset.draw>div.output>div.layout>div.layout>div.profile { width:var(--project-width); flex:0 0 var(--project-width); }
@ -696,8 +673,7 @@ body>div.carte.header.avatar img { width:370px; }
body>fieldset.story.web.chat.wx.agent { position:fixed; left:0; bottom:0; }
body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); }
body.white fieldset.inner.cmd>div.output>div.layout>div.tabs div:not(.select):not(:hover) { background-color:transparent; }
/* body.mobile fieldset.inner>form.option input[name=file] { width:160px; } */
body.mobile fieldset.word>form.option>div.item>input[name=path] { width:180px; }
body.mobile fieldset.word:not(.cmd)>form.option>div.item>input[name=path] { width:180px; }
body.mobile fieldset.word fieldset.inner>form.option input[type=text] { display:none; }
body.mobile fieldset.Action>div.output>fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd):not(:first-child) { margin:20px 0; }
body.windows fieldset.inner>div.output { overflow:hidden; }

View File

@ -278,8 +278,8 @@ Volcanos("user", {
can.page.Append(can, ui.display, [{text: ["或第三方授权: ", html.LABEL]}, {view: [["sso", html.FLEX]], list: _msg.Table(function(value) {
return value.type == "oauth" && {view: [[html.ITEM, html.FLEX]], title: "点击跳转,授权登录", list: [{img: can.misc.Resource(can, value.icons)}, {text: value.name}], onclick: function() { can.user.jumps(value.link) }}
}) }])
can.page.style(can, ui._target, {left: (window.innerWidth-ui._target.offsetWidth)/2, top:
can.base.Min((window.innerHeight-ui._target.offsetHeight-html.HEADER_HEIGHT-html.ACTION_HEIGHT)/4, 0)+(window.innerHeight > 640? html.HEADER_HEIGHT: 0)})
can.page.style(can, ui._target, {left: (can.page.width()-ui._target.offsetWidth)/2, top: can.page.height() < 640? (can.page.height()-ui._target.offsetHeight)/2:
(can.page.height()-ui._target.offsetHeight-html.HEADER_HEIGHT-html.ACTION_HEIGHT)/4+html.HEADER_HEIGHT})
cb && cb(); return true
} else if (cmd == ice.MSG_SESSID) { if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } check(), cb && cb(); return true }
})

View File

@ -1,13 +1,11 @@
(function() { const ALL = "all", TABS = "tabs", TABVIEW = "tabview", VERTICAL = "vertical", HORIZON = "horizon", GRID = "grid", FREE = "free", FLOW = "flow", PAGE = "page", CAN_LAYOUT = "can.layout"
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM), list = can.misc.SearchHash(can)
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.RIVER), storm = can.Conf(chat.STORM), list = can.db.list
can.onmotion.clear(can), can.core.Next(msg.Table(), function(item, next, index) { item.type = chat.PLUGIN, item.mode = can.Mode(); if (item.deleted == ice.TRUE) { return next() }
item.width = can.ConfWidth()-can.Conf(html.MARGIN_X); if (item.style == html.OUTPUT) { item.width = can.ConfWidth()-2*html.PLUGIN_MARGIN-2*html.PLUGIN_PADDING }
if (msg.Length() == 1) { item.height = can.ConfHeight()-can.Conf(html.MARGIN_Y)
can.base.isIn(item.index, web.CHAT_MACOS_DESKTOP) && (item.style = html.OUTPUT)
}
if (msg.Length() == 1) { item.height = can.ConfHeight()-can.Conf(html.MARGIN_Y), can.base.isIn(item.index, web.CHAT_MACOS_DESKTOP) && (item.style = html.OUTPUT) }
list.length == 0 && item.index == "web.dream" && (list = [river, storm, item.index])
can.onappend.plugin(can, item, function(sub, meta, skip) { if (meta.index == "can._notfound" && !can.misc.isDebug(can)) { return skip || next() }
sub.onexport.output = function() { can.onexport.isauto(can) && can.page.style(can, sub._output, html.HEIGHT, "", html.MAX_HEIGHT, "") }
sub.onexport.output = function() { msg.Length() > 1 && can.onexport.isauto(can) && can.page.style(can, sub._output, html.HEIGHT, "", html.MAX_HEIGHT, "") }
sub.onaction._close = function() { can.onengine.signal(can, chat.ONACTION_REMOVE, can.request({river: river, storm: storm}, item)), can.page.Remove(can, sub._target) }
sub.run = function(event, cmds, cb) { return can.run(can.request(event, {pod: meta.space||meta.pod}), (can.base.beginWith(meta.index, "can.")? [meta.index]: [river, storm, meta.id||meta.index]).concat(cmds), cb) }
can.user.isChrome && (can.ondaemon._list[sub._daemon = can.core.Keys(river, storm, index)] = sub)
@ -33,13 +31,12 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R
can.onmotion.hidden(can, can._header_tabs = can.page.Append(can, target, [html.TABS])._target)
},
})
Volcanos(chat.ONACTION, {_init: function(can, target) {
Volcanos(chat.ONACTION, {_init: function(can, target) { can.db.list = can.misc.SearchHash(can)
can.Conf(html.MARGIN_Y, 2*html.PLUGIN_PADDING+2*html.PLUGIN_MARGIN+html.ACTION_HEIGHT)
can.Conf(html.MARGIN_X, 2*html.PLUGIN_PADDING+2*html.PLUGIN_MARGIN)
can.core.List(["ontouchstart", "ontouchmove", "ontouchend"], function(item) {
can.onengine.listen(can, item, function(event, msg) { can.onaction[item](event, can), can.onengine.signal(can, chat.ONACTION_TOUCH, msg) }, target)
})
// can.onaction.layout(can)
},
onsize: function(can, msg, height, width) { can.Conf({height: can.base.Min(height, 240), width: width}) },
onlogin: function(can, msg) {
@ -65,7 +62,7 @@ Volcanos(chat.ONACTION, {_init: function(can, target) {
if (msg.Length() == 1) { can.onaction._onaction_cmd(can) } can.onimport._init(can, msg)
})
},
onstorm_select: function(can, msg, river, storm) {
onstorm_select: function(can, msg, river, storm) { can.misc.SearchHash(can, river, storm)
if (can.onmotion.cache(can, function(save, load) { save({plugins: can._plugins, current: can._current}), can._plugins = []
return load(can.core.Keys(can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)), function(bak) { can._plugins = bak.plugins, can._current = bak.current })
}, can._output, can._action, can._header_tabs)) {
@ -102,8 +99,7 @@ Volcanos(chat.ONACTION, {_init: function(can, target) {
can.page.ClassList.del(can, can._target, before), can._header_tabs && can.onmotion.hidden(can, can._header_tabs)
button = (can.onlayout._storage(can, can._layout = button))||can.misc.SearchOrConf(can, html.LAYOUT), can.page.ClassList.add(can, can._target, button)
can.onengine.signal(can, chat.ONLAYOUT, can.request({}, {layout: button, before: before}))
can._root.River && can._river_show === false && can.onmotion.hidden(can, can._root.River._target)
skip || can.onlayout._init(can)
can._root.River && can._river_show === false && can.onmotion.hidden(can, can._root.River._target), skip || can.onlayout._init(can)
can.getActionSize(function(height, width) { var cb = can.onlayout[button]; can.base.isFunc(cb) && cb(can, height, width) || can.onlayout._plugin(can, button) })
},
_menus: [[html.LAYOUT, ALL, TABS, TABVIEW, VERTICAL, HORIZON, GRID, FREE, FLOW, PAGE], web.DREAM, web.DESKTOP, web.PORTAL],
@ -123,8 +119,11 @@ Volcanos(chat.ONLAYOUT, {
flow: function(can, height, width) { can.ConfHeight(height-html.ACTION_MARGIN), can.ConfWidth(width) },
page: function(can) { can.page.styleHeight(can, can._output, ""), can.page.style(can, document.body, kit.Dict(html.OVERFLOW, "")) },
_plugin: function(can, button) { can.core.List(can._plugins, function(sub) {
sub.onimport.size(sub, can.ConfHeight()-can.Conf(html.MARGIN_Y)-(button && button != ALL || sub.isCmdMode() || can.page.ClassList.has(can, sub._target, html.OUTPUT)? 0: html.ACTION_MARGIN),
can.ConfWidth()-can.Conf(html.MARGIN_X), can.onexport.isauto(can)) && can.page.style(can, sub._output, html.HEIGHT, "", html.MAX_HEIGHT, "")
if (can.page.ClassList.has(can, sub._target, html.OUTPUT)) {
return sub.onimport.size(sub, can.ConfHeight()-(can.user.isMobile? 2*html.PLUGIN_PADDING: can.Conf(html.MARGIN_Y)-([ALL, TABS].indexOf(can.onexport.layout(can)) > -1? html.ACTION_HEIGHT: 0)), can.ConfWidth()-can.Conf(html.MARGIN_X), can.onexport.isauto(can))
}
sub.onimport.size(sub, can.ConfHeight()-can.Conf(html.MARGIN_Y)-(can._plugins.length == 1 || button && button != ALL || sub.isCmdMode()? 0: html.ACTION_MARGIN),
can.ConfWidth()-can.Conf(html.MARGIN_X), can._plugins.length > 1 && can.onexport.isauto(can)) && can.page.style(can, sub._output, html.HEIGHT, "", html.MAX_HEIGHT, "")
}) },
_storage: function(can, value) { return (can.misc.sessionStorage(can, can.core.Keys(CAN_LAYOUT, location.pathname), value)||[])[0] },
})
@ -180,19 +179,6 @@ Volcanos(chat.ONKEYMAP, {
f: function(event, can, target) { can.onengine.signal(can, chat.ONOPENSEARCH, can.request({}, {type: mdb.FOREACH})) },
},
normal: {
// j: function(event, can, target) { target.scrollBy(0, event.ctrlKey? 300: 30) },
// k: function(event, can, target) { target.scrollBy(0, event.ctrlKey? -300: -30) },
// r: function(event, can, target) { can.user.reload(true) },
// t: function(event, can) { can.onkeymap.toggleLayout(can, TABVIEW) },
// h: function(event, can) { can.onkeymap.toggleLayout(can, HORIZON) },
// v: function(event, can) { can.onkeymap.toggleLayout(can, VERTICAL) },
// g: function(event, can) { can.onkeymap.toggleLayout(can, GRID) },
// f: function(event, can) { can.onkeymap.toggleLayout(can, FREE) },
// b: function(event, can) { can.onkeymap.toggleTheme(can, cli.BLACK) },
// w: function(event, can) { can.onkeymap.toggleTheme(can, cli.WHITE) },
// l: function(event, can) { can.onkeymap.toggleTheme(can, html.LIGHT) },
// d: function(event, can) { can.onkeymap.toggleTheme(can, html.DARK) },
// c: function(event, can) { can.user.toimage(can, can.user.title(), can._target.parentNode, true) },
":": function(event, can) { can.onengine.signal(can, chat.ONCOMMAND_FOCUS), can.onkeymap.prevent(event) },
" ": function(event, can) { can.onengine.signal(can, chat.ONSEARCH_FOCUS), can.onkeymap.prevent(event) },
Enter: function(event, can) { can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event)) },

View File

@ -26,12 +26,12 @@ fieldset.Header>div.output div.Action>div.tabs div.item { font-style:italic; }
fieldset.Header>div.output div.Action>div.tabs div.item:only-child { display:none; }
body:not(.mobile) fieldset.Header>div.output div.title:first-child { width:var(--river-width); }
body:not(.mobile) fieldset.Header>div.output div.title img { margin-right:var(--button-margin); }
body:not(.mobile) fieldset.Header>div.output div.title:first-child { padding-left:var(--button-padding); width:unset; }
body:not(.mobile) fieldset.Header:not(.all):not(.tabs)>div.output div.title:first-child { padding-left:var(--button-padding); width:unset; }
body:not(.width6)>fieldset.Header:not(.all):not(.tabs)>div.output div.item.menu.search { padding-left:0 !important; margin-left:0; }
body:not(.width6) fieldset.Header.tabview>div.output>div.Action>div.item.dream { display:none; }
body:not(.width6) fieldset.Header.tabview>div.output>div.Action>div.item.desktop { display:none; }
body:not(.width6) fieldset.Header.tabview>div.output>div.Action>div.item.portal { display:none; }
body:not(.width6) fieldset.Header>div.output>div.Action>div.item.portal { display:none; }
body:not(.width6) fieldset.Header>div.output>div.item.language { display:none; }
body:not(.width6)>fieldset.Header>div.output div.item.menu.search { padding-left:0 !important; margin-left:0; }
body.width2>fieldset.Header>div.output div.item:not(.usernick):not(.avatar) { padding:13.5px 8px; }
body.width3>fieldset.Header>div.output div.item:not(.usernick):not(.avatar) { padding:13.5px 8px; }
body.width3>fieldset.Header>div.output>div.item.time { display:none; }

View File

@ -56,16 +56,8 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
can.onexport.scroll(can)
},
refresh: function(event, can) { can.misc.Search(can, {river: can.Conf(chat.RIVER), storm: can.Conf(chat.STORM)}) },
storm: function(event, can, river) {
can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])
function _menu(list) { can.onlayout._init(can)
can.page.ClassList.set(can, can.ui.river_list[river], "open", can.page.isDisplay(list))
can.user.isMobile && can.onmotion.delay(can, function() { var list = can.db.storm_list[river]
can.onmotion.hidden(can, can._root.Footer._target, list.length > 1)
var menu = can.setFooterMenu(list, function(event, button, list) { can.onaction.action(event, can, river, button) })
can.page.SelectChild(can, menu, html.DIV_ITEM, function(target, index) { can.page.ClassList.set(can, target, html.SELECT, list[index].hash == can.Conf("storm")) })
}, 300)
}
storm: function(event, can, river) { can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])
function _menu(list) { can.onlayout._init(can), can.page.ClassList.set(can, can.ui.river_list[river], "open", can.page.isDisplay(list)) }
var list = can.ui.sublist[river]; if (list) { return can.onmotion.toggle(can, list), _menu(list) }
can.run({}, [river, chat.STORM], function(msg) { var next = can.ui.river_list[river].nextSibling
if (msg.Length() == 0) { return can.user.isLocalFile? can.user.toastFailure(can, "miss data"): can.onengine.signal(can, chat.ONACTION_NOSTORM, can.request({}, {river: river})) }
@ -81,7 +73,11 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], function(target) { can.page.ClassList.del(can, target, html.SELECT) })
can.onmotion.select(can, can.ui.sublist[river], html.DIV_ITEM, can.ui.storm_list[can.core.Keys(river, storm)])
can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])
can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm)}))
var list = can.db.storm_list[river];
can.user.isMobile && can.onmotion.hidden(can, can._root.Footer._target, list.length > 1)
can.user.isMobile && can.onmotion.delay(can, function() { var menu = can.setFooterMenu(list, function(event, button, list) { can.onaction.action(event, can, river, button) })
can.page.SelectChild(can, menu, html.DIV_ITEM, function(target, index) { can.page.ClassList.set(can, target, html.SELECT, list[index].hash == can.Conf("storm")) })
}), can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm)}))
},
carte: function(event, can, list, river, storm) { can.onkeymap.prevent(event); if (can.core.Value(can._root, can.core.Keys(chat.RIVER, river))) { return }
can.request(event, {river: river, storm: storm}); storm? can.user.carteRight(event, can, can.ondetail, list): can.user.carteRight(event, can, can.onaction, list)

View File

@ -1,4 +1,5 @@
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.isCmdMode() || can.onmotion.hidden(can, can._action)
can.ui = can.onappend.layout(can), can.onmotion.hidden(can, can.ui.profile), can.onmotion.hidden(can, can.ui.display), can.isCmdMode() || can.onmotion.hidden(can, can.ui.project)
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()

View File

@ -1,4 +1,5 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg) {
can.isCmdMode() || can.onmotion.hidden(can, can._action)
can.OptionPath = function(value) { return can.Option(nfs.PATH, value) }
can.OptionPid = function(value) { return can.Option(svg.PID, value) }
can.ActionGo = function(value) { return can.Action(svg.GO, value) }

View File

@ -91,7 +91,7 @@ Volcanos(chat.ONACTION, {
["布局", "开讲", "网格", "快闪"], "大纲", "首页", "上一页",
["菜单"].concat(can.core.List(list, function(page) { return page[0].innerHTML })),
"下一页", "隐藏", "结束",
], sub._action, can.ondetail), can.onkeymap._build(can)
], sub._action, can.ondetail, false, 10), can.onkeymap._build(can)
sub.page.style(sub, sub._target, "background", can._root._target.style.background)
sub.page.style(sub, sub._output, html.HEIGHT, can.page.height()-2*html.ACTION_HEIGHT)
sub.page.style(sub, sub._output, html.WIDTH, can.page.width())

View File

@ -1,6 +1,8 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) {
can.page.requireDraw(can, function() { can.base.isFunc(cb) && cb(msg)
can.Conf(html.VIEW) && can.Action(html.VIEW, can.Conf(html.VIEW)), can.onmotion.toggle(can, can._option, !can.user.isMobile || !can.isFullMode())
can.Conf(html.VIEW) && can.Action(html.VIEW, can.Conf(html.VIEW))
can.onmotion.toggle(can, can._option, !can.user.isMobile)
can.onmotion.toggle(can, can._action, !can.user.isMobile)
can.db.data = msg.Table(), can.onimport.layout(can)
})
},
@ -24,7 +26,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) {
return {height: height, width: width, margin: margin, step: step}
},
layout: function(can) { can.db.data && can.core.CallFunc(can.onaction[can.Action(html.VIEW)], [{}, can]) },
// transform: function(can, target) { target.Value("transform", "scale(1, -1)") },
transform: function(can, target) { target.Value("transform", "translate(0, "+parseInt(can.ConfHeight())+") scale(1, -1)") },
})
Volcanos(chat.ONACTION, {list: [[html.VIEW, "趋势图", "柱状图", "折线图", "数据源"],