1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00

add island.group

This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-02-02 00:06:01 +08:00
parent b0416f781c
commit 04b3991922
13 changed files with 47 additions and 41 deletions

View File

@ -124,7 +124,7 @@ var web = {
} }
var aaa = { var aaa = {
USER: "user", AUTH: "auth", SESS: "sess", ROLE: "role", USER: "user", AUTH: "auth", SESS: "sess", ROLE: "role",
EMAIL: "email", OFFER: "offer", EMAIL: "email", OFFER: "offer", APPLY: "apply",
LOGIN: "login", LOGOUT: "logout", LOGIN: "login", LOGOUT: "logout",
BACKGROUND: "background", AVATAR: "avatar", MOBILE: "mobile", SECRET: "secret", BACKGROUND: "background", AVATAR: "avatar", MOBILE: "mobile", SECRET: "secret",
@ -370,7 +370,7 @@ var icon = {
CHEVRON_DOWN: "bi bi-chevron-down", SEARCH: "bi bi-search", TERMINAL: "bi bi-terminal", CHEVRON_DOWN: "bi bi-chevron-down", SEARCH: "bi bi-search", TERMINAL: "bi bi-terminal",
SUN: "bi bi-sun", MOON: "bi bi-moon-stars", SUN: "bi bi-sun", MOON: "bi bi-moon-stars",
admin: "bi bi-window-sidebar", dream: "bi bi-grid-3x3-gap", space: "bi bi-grid-3x3-gap", admin: "bi bi-window-sidebar", dream: "bi bi-grid-3x3-gap", space: "bi bi-grid-3x3-gap", desktop: "bi bi-window-desktop",
configs: "bi bi-gear", conf: "bi bi-gear", logs: "bi bi-calendar4-week", configs: "bi bi-gear", conf: "bi bi-gear", logs: "bi bi-calendar4-week",
sso: "bi bi-shield-check", login: "bi bi-person-check", sso: "bi bi-shield-check", login: "bi bi-person-check",
start: "bi bi-play-circle", stop: "bi bi-stop-circle", start: "bi bi-play-circle", stop: "bi bi-stop-circle",

View File

@ -125,7 +125,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT)); return can.page.SelectArgs(can, option, key, value)[0] }, Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT)); return can.page.SelectArgs(can, option, key, value)[0] },
Update: function(event, cmds, cb, silent) { event = event||{} Update: function(event, cmds, cb, silent) { event = event||{}
event.metaKey && sub.request(event, {metaKey: ice.TRUE}) event.metaKey && sub.request(event, {metaKey: ice.TRUE})
sub.request(event, can.core.Value(sub, "sub.db._checkbox"))._caller() sub.request(event)._caller()
var msg = sub.request(event), list = can.core.Value(sub, "sub.db._checkbox")
can.core.Item(list, function(key, value) { msg.Option(key, value) })
if (event.isTrusted && cmds && cmds.length > 0 && cmds[0] == ctx.ACTION) { if (event.isTrusted && cmds && cmds.length > 0 && cmds[0] == ctx.ACTION) {
can.onengine.signal(can, "onrecord", can.request({}, {cmds: [sub.ConfSpace(), sub.ConfIndex()].concat(cmds||[])})) can.onengine.signal(can, "onrecord", can.request({}, {cmds: [sub.ConfSpace(), sub.ConfIndex()].concat(cmds||[])}))
} }
@ -264,7 +266,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
}) })
}, },
_output: function(can, msg, display, cb, output, status, action) { display = display||chat.PLUGIN_TABLE_JS, output = output||can._output _output: function(can, msg, display, cb, output, status, action) { display = display||chat.PLUGIN_TABLE_JS, output = output||can._output
if (msg.IsErr()) { return can.user.toast(can, msg.Result()) } if (msg.IsErr()) { return can.user.toastFailure(can, msg.Result()) }
can.misc.Search(can, log.DEBUG) == ice.TRUE && can.base.beginWith(display, "/require/src/") && delete(Volcanos.meta.cache[display]) can.misc.Search(can, log.DEBUG) == ice.TRUE && can.base.beginWith(display, "/require/src/") && delete(Volcanos.meta.cache[display])
Volcanos(display, {_root: can._root, _follow: can.core.Keys(can._follow, display), _fields: can._target, _target: output, _path: display||chat.PLUGIN_TABLE_JS, Volcanos(display, {_root: can._root, _follow: can.core.Keys(can._follow, display), _fields: can._target, _target: output, _path: display||chat.PLUGIN_TABLE_JS,
_legend: can._legend, _option: can._option, _action: action||can._action, _output: output, _status: status||can._status, _legend: can._legend, _option: can._option, _action: action||can._action, _output: output, _status: status||can._status,
@ -495,7 +497,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
can.core.List(list, function(target) { can.onappend.style(can, "icons", target); var _icon = can.Conf("_icons."+target.name)||icon[target.name] can.core.List(list, function(target) { can.onappend.style(can, "icons", target); var _icon = can.Conf("_icons."+target.name)||icon[target.name]
if (target.name == mdb.DELETE) { _icon = icon.trash } if (target.name == mdb.DELETE) { _icon = icon.trash }
can.page.insertBefore(can, [{icon: _icon, title: can.user.trans(can, target.name), onclick: target.onclick||function(event) { can.page.insertBefore(can, [{icon: _icon, title: can.user.trans(can, target.name), onclick: target.onclick||function(event) {
can.Update(request(event), [ctx.ACTION, target.name]), can.onkeymap.prevent(event) can.Update(request(event)._event, [ctx.ACTION, target.name]), can.onkeymap.prevent(event)
}}], target.nextSibling, target.parentNode) }}], target.nextSibling, target.parentNode)
}) })
can.page.SelectOne(can, target, html.SPAN, function(span) { can.core.List(span.style, function(key) { target.style[key] = span.style[key] }) }) can.page.SelectOne(can, target, html.SPAN, function(span) { can.core.List(span.style, function(key) { target.style[key] = span.style[key] }) })
@ -522,7 +524,13 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
}) } else if (text.indexOf("<svg") > 0) { can.page.Select(can, code, html.SVG, function(target) { }) } else if (text.indexOf("<svg") > 0) { can.page.Select(can, code, html.SVG, function(target) {
can.page.style(can, target, html.MIN_HEIGHT, can.ConfHeight(), html.MIN_WIDTH, can.ConfWidth()) can.page.style(can, target, html.MIN_HEIGHT, can.ConfHeight(), html.MIN_WIDTH, can.ConfWidth())
}) } else { can.page.Select(can, code, html.INPUT_BUTTON, function(target) { }) } else { can.page.Select(can, code, html.INPUT_BUTTON, function(target) {
target.onclick = function(event) { can.misc.Event(event, can, function(msg) { can.run(can.request(event, can.Option()), [ctx.ACTION, target.name]) }) } target.onclick = function(event) {
if (can.page.ClassList.has(can, target, "disable")) { return } can.page.ClassList.add(can, target, "disable")
can.misc.Event(event, can, function(msg) { can.Update(can.request(event, can.Option()), [ctx.ACTION, target.name], function(msg) {
can.page.ClassList.del(can, target, "disable")
var sup = can._fields? can.sup: can; if (sup.onimport._process(sup, msg)) { return }
}) })
}
}) } return code.scrollBy && code.scrollBy(0, 10000), code }) } return code.scrollBy && code.scrollBy(0, 10000), code
}, },
tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT))||[], cb, target) }, tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT))||[], cb, target) },
@ -959,7 +967,13 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
}, },
orderShow: function(can, target, key) { if (can.user.isMobile) { return } orderShow: function(can, target, key) { if (can.user.isMobile) { return }
var list = can.page.SelectChild(can, target, key||html.DIV_ITEM, function(target) { can.page.style(can, target, html.VISIBILITY, html.HIDDEN); return target }) var list = can.page.SelectChild(can, target, key||html.DIV_ITEM, function(target) { can.page.style(can, target, html.VISIBILITY, html.HIDDEN); return target })
can.core.Next(list, function(target, next) { can.page.style(can, target, html.VISIBILITY, ""), can.onmotion.delay(can, next, list.length > 3? 80: 0) }) can.core.Next(list, function(target, next, index) {
if (index < 30) {
can.page.style(can, target, html.VISIBILITY, ""), can.onmotion.delay(can, next, list.length > 3? 80: 0)
} else {
can.core.List(list, function(target) { can.page.style(can, target, html.VISIBILITY, "") })
}
})
}, },
slideGrow: function(can, target) { slideGrow: function(can, target) {
if (can.page.tagis(target, html.DIV) && can.page.ClassList.has(can, target, html.INPUT)) { return } if (can.page.tagis(target, html.DIV) && can.page.ClassList.has(can, target, html.INPUT)) { return }

View File

@ -40,7 +40,8 @@ body {
--code-bg-color:black; --code-fg-color:silver; --code-border-color:var(--notice-bg-color); --code-bg-color:black; --code-fg-color:silver; --code-border-color:var(--notice-bg-color);
--body-font-family:sans-serif; --code-font-family:monospace; --svg-font-family:var(--code-font-family); --body-font-family:sans-serif; --code-font-family:monospace; --svg-font-family:var(--code-font-family);
--legend-font-family:var(--input-font-family); --status-font-family:var(--body-font-family); --legend-font-family:var(--input-font-family); --status-font-family:var(--body-font-family);
--input-font-family:cursive; --table-font-family:var(--body-font-family); /* --input-font-family:cursive; --table-font-family:var(--body-font-family); */
--input-font-family:cursive; --table-font-family:var(--code-font-family);
--body-font-size:16px; --legend-font-size:20px; --icon-font-size:20px; --body-font-size:16px; --legend-font-size:20px; --icon-font-size:20px;
--code-font-size:14px; --code-line-height:24px; --code-tabs-height:48px; --code-font-size:14px; --code-line-height:24px; --code-tabs-height:48px;
@ -158,7 +159,7 @@ fieldset>div.action div.item.select.cmds { border-bottom:var(--notice-bg-color)
fieldset>div.output { width:100%; } fieldset>div.status { width:100%; } fieldset>div.output { width:100%; } fieldset>div.status { width:100%; }
fieldset.input>legend { display:none; } fieldset.input>legend { display:none; }
fieldset.input.key div.action { display:none; } fieldset.input.key div.action { display:none; }
fieldset.input.key div.output table.content { width:100%; } fieldset.input.key div.output table.content { width:100%; font-family:var(--code-font-family); }
fieldset.input.key>div.output>div.item:not(.hide) { display:flex; align-items:center; } fieldset.input.key>div.output>div.item:not(.hide) { display:flex; align-items:center; }
fieldset.input.key>div.output>div.item img { height:var(--header-height); width:var(--header-height); } fieldset.input.key>div.output>div.item img { height:var(--header-height); width:var(--header-height); }
fieldset.input.key div.status { background-color:var(--plugin-bg-color); } fieldset.input.key div.status { background-color:var(--plugin-bg-color); }
@ -181,12 +182,13 @@ fieldset.input.float { padding:0; border-radius:0 !important; z-index:100; }
fieldset.input.float table.content td { padding:var(--input-padding); } fieldset.input.float table.content td { padding:var(--input-padding); }
fieldset.input.float table.content th { padding:var(--input-padding); } fieldset.input.float table.content th { padding:var(--input-padding); }
/* float */ /* float */
input.disable { color:var(--disable-fg-color) !important; border:unset !important; }
body div.float { padding:var(--plugin-padding); box-shadow:var(--box-shadow); } body div.float { padding:var(--plugin-padding); box-shadow:var(--box-shadow); }
body>div.toast div.title { color:var(--notice-bg-color); font-style:italic; white-space:pre; max-width:280px; overflow:auto; float:left; cursor:copy; } body>div.toast div.title { color:var(--notice-bg-color); font-style:italic; white-space:pre; max-width:280px; overflow:auto; float:left; cursor:copy; }
body>div.toast div.delete { color:var(--notice-bg-color); float:right; cursor:pointer; } body>div.toast div.delete { color:var(--notice-bg-color); float:right; cursor:pointer; }
body>div.toast div.delete:hover { background-color:var(--hover-bg-color); } body>div.toast div.delete:hover { background-color:var(--hover-bg-color); }
body>div.toast div.duration { color:var(--disable-fg-color); float:right; } body>div.toast div.duration { color:var(--disable-fg-color); float:right; }
body>div.toast div.content { color:var(--notice-bg-color); text-align:center; min-height:48px; margin-bottom:5px; } body>div.toast div.content { color:var(--notice-bg-color); white-space:normal; text-align:center; min-height:48px; margin-bottom:5px; display:block; }
body>div.toast div.progress { border:var(--box-notice); margin-left:0px; height:20px; clear:both; } body>div.toast div.progress { border:var(--box-notice); margin-left:0px; height:20px; clear:both; }
body>div.toast div.progress div.current { background-color:var(--progress-bg-color); height:18px; } body>div.toast div.progress div.current { background-color:var(--progress-bg-color); height:18px; }
body>div.toast div.action:not(.hide) { width:100%; display:block; display:flex; flex-direction:row-reverse; gap:10px; } body>div.toast div.action:not(.hide) { width:100%; display:block; display:flex; flex-direction:row-reverse; gap:10px; }
@ -266,6 +268,7 @@ div.story[data-type=spark] { padding:var(--input-padding) var(--table-padding);
fieldset>div.action>div.tabs { font-style:italic; padding:var(--input-padding) var(--button-padding); margin-left:var(--input-margin); box-shadow:var(--box-shadow); height:var(--action-height); } fieldset>div.action>div.tabs { font-style:italic; padding:var(--input-padding) var(--button-padding); margin-left:var(--input-margin); box-shadow:var(--box-shadow); height:var(--action-height); }
fieldset>div.action>div.cmds { font-style:italic; padding:var(--input-padding) var(--button-padding); margin-left:var(--input-margin); box-shadow:var(--box-shadow); height:var(--action-height); } fieldset>div.action>div.cmds { font-style:italic; padding:var(--input-padding) var(--button-padding); margin-left:var(--input-margin); box-shadow:var(--box-shadow); height:var(--action-height); }
fieldset>div.output>div.code { font-size:var(--code-font-size); } fieldset>div.output>div.code { font-size:var(--code-font-size); }
fieldset.plug>div.status { height:31px; }
fieldset>div.status { font-family:var(--status-font-family); font-size:var(--status-font-size); font-style:italic; line-height:20px; max-height:var(--action-height); } fieldset>div.status { font-family:var(--status-font-family); font-size:var(--status-font-size); font-style:italic; line-height:20px; max-height:var(--action-height); }
fieldset>div.status>div.item { padding:var(--input-padding); height:31px; } fieldset>div.status>div.item { padding:var(--input-padding); height:31px; }
fieldset>div.status>div.item>label { font-size:var(--status-font-size); cursor:pointer; } fieldset>div.status>div.item>label { font-size:var(--status-font-size); cursor:pointer; }
@ -291,8 +294,6 @@ body.windows form.option>div.item.icon.delete { line-height:31px; display:flex;
body.windows form.option>div.item.icon.menu { font-size:22px; line-height:32px; } body.windows form.option>div.item.icon.menu { font-size:22px; line-height:32px; }
body.windows form.option>div.item.icon.refresh { font-size:24px; line-height:28px; } body.windows form.option>div.item.icon.refresh { font-size:24px; line-height:28px; }
body.windows form.option>div.item.icon.goback { font-size:24px; line-height:28px; } body.windows form.option>div.item.icon.goback { font-size:24px; line-height:28px; }
body.mobile form.option>div.item.icon.prev { margin-top:4px; height:28px; }
body.mobile form.option>div.item.icon.next { margin-top:4px; height:28px; }
div.item.text { position:relative; } div.item.text { position:relative; }
div.item.text>input { width:var(--input-width); height:var(--action-height); } div.item.text>input { width:var(--input-width); height:var(--action-height); }
div.item.text.id>input { width:var(--button-width); } div.item.text.id>input { width:var(--button-width); }

View File

@ -78,9 +78,7 @@ Volcanos("misc", {
Defer: function(cb) { msg._defer = msg._defer||[] Defer: function(cb) { msg._defer = msg._defer||[]
if (arguments.length == 0) { msg._defer = can.core.List(msg._defer.reverse(), function(cb) { can.base.isFunc(cb) && cb() }) } else { msg._defer.push(cb) } if (arguments.length == 0) { msg._defer = can.core.List(msg._defer.reverse(), function(cb) { can.base.isFunc(cb) && cb() }) } else { msg._defer.push(cb) }
}, },
IsErr: function() { IsErr: function() { return msg.result && msg.result[0] == "warn: " },
return msg.result && msg.result[0] == "warn: "
},
_caller: function(skip) { msg.Option("log.caller") || msg.Option("log.caller", can.misc.fileLine((skip||2)+3).link); return msg }, _caller: function(skip) { msg.Option("log.caller") || msg.Option("log.caller", can.misc.fileLine((skip||2)+3).link); return msg },
isDebug: function() { return msg.Option(log.DEBUG) == ice.TRUE }, isDebug: function() { return msg.Option(log.DEBUG) == ice.TRUE },
}); return msg }, }); return msg },

View File

@ -48,8 +48,7 @@ Volcanos("user", {
if (location.search.indexOf("debug=true") > 0 && url.indexOf("debug=true") == -1) { if (location.search.indexOf("debug=true") > 0 && url.indexOf("debug=true") == -1) {
var ls = url.split("#"); ls[0] += (ls[0].indexOf("?") > 0? "&": "?") + "debug=true", url = ls.join("#") var ls = url.split("#"); ls[0] += (ls[0].indexOf("?") > 0? "&": "?") + "debug=true", url = ls.join("#")
} }
if (window.open(url)) { return } window.open(url) || (location.href = url)
this.isMobile? location.href = url: null
}, },
close: function(url) { return window.close() }, close: function(url) { return window.close() },
theme: function(can, name) { can.base.isString(name) && (name = [name]) || name || [] theme: function(can, name) { can.base.isString(name) && (name = [name]) || name || []
@ -83,7 +82,7 @@ Volcanos("user", {
}, },
toastProcess: function(can, content, title, progress) { return can.user.toast(can, {content: "🕑 "+(content||ice.PROCESS), title: title, duration: -1, progress: progress, caller: 2}) }, toastProcess: function(can, content, title, progress) { return can.user.toast(can, {content: "🕑 "+(content||ice.PROCESS), title: title, duration: -1, progress: progress, caller: 2}) },
toastSuccess: function(can, content, title) { return can.user.toast(can, {content: "✅ "+(content||ice.SUCCESS), title: title, caller: 2}) }, toastSuccess: function(can, content, title) { return can.user.toast(can, {content: "✅ "+(content||ice.SUCCESS), title: title, caller: 2}) },
toastFailure: function(can, content, title) { return can.user.toast(can, {content: "❌ "+(content||ice.FAILURE), title: title, duration: 10000, caller: 2}) }, toastFailure: function(can, content, title) { return can.user.toast(can, {content: "❌ "+(content||ice.FAILURE), title: title, duration: 30000, caller: 2}) },
toast: function(can, content, title, duration, progress, caller) { toast: function(can, content, title, duration, progress, caller) {
content = {"success": "✅ success", "failure": "❌ failure", "process": "🕑 process"}[content]||content content = {"success": "✅ success", "failure": "❌ failure", "process": "🕑 process"}[content]||content
var meta = can.base.isObject(content)? content: {content: content, duration: duration, progress: progress, caller: caller} var meta = can.base.isObject(content)? content: {content: content, duration: duration, progress: progress, caller: caller}

View File

@ -32,8 +32,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R
}, },
}) })
Volcanos(chat.ONACTION, {_init: function(can, target) { can.db.list = can.misc.SearchHash(can) 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.db.list.length == 0 && can.misc.Search(can, chat.RIVER) && can.misc.Search(can, chat.STORM) && (can.db.list = [can.misc.Search(can, chat.RIVER), can.misc.Search(can, chat.STORM)])
can.Conf(html.MARGIN_X, 2*html.PLUGIN_PADDING+2*html.PLUGIN_MARGIN) can.Conf(html.MARGIN_X, 2*html.PLUGIN_PADDING+2*html.PLUGIN_MARGIN), can.Conf(html.MARGIN_Y, 2*html.PLUGIN_PADDING+2*html.PLUGIN_MARGIN+html.ACTION_HEIGHT)
can.core.List(["ontouchstart", "ontouchmove", "ontouchend"], function(item) { 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.onengine.listen(can, item, function(event, msg) { can.onaction[item](event, can), can.onengine.signal(can, chat.ONACTION_TOUCH, msg) }, target)
}) })

View File

@ -70,7 +70,6 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
}) }) }, }) }) },
}) })
Volcanos(chat.ONEXPORT, {list: [NTIP, NLOG, NCMD, NKEY, html.WIDTH, html.HEIGHT, nfs.VERSION], Volcanos(chat.ONEXPORT, {list: [NTIP, NLOG, NCMD, NKEY, html.WIDTH, html.HEIGHT, nfs.VERSION],
// height: function(can) { return can._target.offsetHeight },
height: function(can) { can.onexport._float(can, html.HEIGHT, "can.view") }, height: function(can) { can.onexport._float(can, html.HEIGHT, "can.view") },
width: function(can) { can.onexport._float(can, html.WIDTH, "can.data") }, width: function(can) { can.onexport._float(can, html.WIDTH, "can.data") },
ntip: function(can) { can.onexport._float(can, NTIP, "can.toast") }, ntip: function(can) { can.onexport._float(can, NTIP, "can.toast") },

View File

@ -6,7 +6,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg
}, },
_main: function(can, msg) { can.ui = {river_list: {}, storm_list: {}, sublist: {}} _main: function(can, msg) { can.ui = {river_list: {}, storm_list: {}, sublist: {}}
var ls = can.misc.SearchHash(can); msg.Table(function(item) { item.main && (can._main_river = item.hash) }) var ls = can.misc.SearchHash(can); msg.Table(function(item) { item.main && (can._main_river = item.hash) })
can._main_river = ls[0]||can.misc.SearchOrConf(can, chat.RIVER)||msg.Option(ice.MSG_RIVER)||can._main_river||(can.user.info.nodetype == web.WORKER? "product": "project") can._main_river = ls[0]||can.misc.SearchOrConf(can, chat.RIVER)||msg.Option(ice.MSG_RIVER)||can._main_river||(can.user.info.nodetype == web.WORKER || can.misc.Search(can, ice.MSG_DEBUG) != ice.TRUE? "product": "project")
can._main_storm = ls[1]||can.misc.SearchOrConf(can, chat.STORM)||msg.Option(ice.MSG_STORM) can._main_storm = ls[1]||can.misc.SearchOrConf(can, chat.STORM)||msg.Option(ice.MSG_STORM)
}, },
_river: function(can, meta, cb) { return {view: html.ITEM, title: meta.name, list: [{icon: meta.icon}, {text: meta.name}, {icon: icon.CHEVRON_DOWN}], _init: function(target) { can.ui.river_list[meta.hash] = target, cb(target) }, _river: function(can, meta, cb) { return {view: html.ITEM, title: meta.name, list: [{icon: meta.icon}, {text: meta.name}, {icon: icon.CHEVRON_DOWN}], _init: function(target) { can.ui.river_list[meta.hash] = target, cb(target) },
@ -61,7 +61,9 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
can.run({}, [river, chat.STORM], function(msg) { var next = can.ui.river_list[river].nextSibling 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})) } 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})) }
can.db.storm_list[river] = msg.Table() can.db.storm_list[river] = msg.Table()
var _main_storm; msg.Table(function(item) { item.main && (_main_storm = item.hash) }), _main_storm = can._main_storm || _main_storm || (can.user.info.nodetype == web.WORKER? "desktop": "studio") var _main_storm; msg.Table(function(item) { item.main && (_main_storm = item.hash) }), _main_storm = can._main_storm || _main_storm || (
can.user.info.nodetype == web.WORKER? web.DESKTOP: can.misc.Search(can, ice.MSG_DEBUG) != ice.TRUE? web.DREAM: "studio"
)
var select = 0; list = can.page.Append(can, can._output, [{view: html.LIST, list: msg.Table(function(item, index) { var select = 0; list = can.page.Append(can, can._output, [{view: html.LIST, list: msg.Table(function(item, index) {
river == can._main_river && (item.hash == _main_storm) && (select = index) river == can._main_river && (item.hash == _main_storm) && (select = index)
return can.onimport._storm(can, item, river) return can.onimport._storm(can, item, river)

View File

@ -16,3 +16,4 @@ fieldset.plan>div.output>div.layout>div.layout>div.content>table.content td div.
fieldset.plan>div.output>div.layout>div.layout>div.content>table.content tr:first-child { height:30px; position:sticky; top:2px; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content tr:first-child { height:30px; position:sticky; top:2px; }
fieldset.plan>div.output>div.layout>div.layout>div.content>table.content th:first-child { width:40px; position:sticky; left:2px; } fieldset.plan>div.output>div.layout>div.layout>div.content>table.content th:first-child { width:40px; position:sticky; left:2px; }
fieldset.plan>div.output>div.layout>div.layout>div.profile>table.content tr:first-child { height:30px; position:sticky; top:2px; } fieldset.plan>div.output>div.layout>div.layout>div.profile>table.content tr:first-child { height:30px; position:sticky; top:2px; }
fieldset.plan.story>form.option>div.item.scale { display:none; }

View File

@ -43,12 +43,16 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(html.PADDI
return tabs return tabs
}); select && select.click() }); select && select.click()
}, },
field: function(can, meta, target) { var item = can.base.Obj(meta.meta), width = item.width field: function(can, meta, target) { var item = can.base.Obj(meta.meta)
// if (can.Option(nfs.PATH).indexOf(nfs.DF) > 0) { var ls = can.core.Split(can.Option(nfs.PATH), nfs.DF); item.space = ls[0] } // if (can.Option(nfs.PATH).indexOf(nfs.DF) > 0) { var ls = can.core.Split(can.Option(nfs.PATH), nfs.DF); item.space = ls[0] }
var padding = 2*can.Conf(html.PADDING); if (can.user.isMobile && !can.isCmdMode()) { padding *= 2 }
if (!item.width || parseInt(item.width) > can.ConfWidth()) { item.width = can.ConfWidth()-padding }
var width = item.width
can.onappend.plugin(can, item, function(sub) { can._plugins = (can._plugins||[]).concat([sub]) can.onappend.plugin(can, item, function(sub) { can._plugins = (can._plugins||[]).concat([sub])
sub.onimport.size(sub, can.base.Max(html.STORY_HEIGHT, can.ConfHeight()), sub.Conf("_width", width)||(can.ConfWidth()-2*can.Conf(html.PADDING)), true) sub.onimport.size(sub, can.base.Max(html.STORY_HEIGHT, can.ConfHeight()), sub.Conf("_width", width), true)
var size = sub.onimport.size; sub.onimport.size = function(can, height, width, auto, mode) { size(can, height, width, auto, mode), can.page.style(can, sub._output, html.MAX_HEIGHT, "", "overflow-y", "hidden") } var size = sub.onimport.size; sub.onimport.size = function(can, height, width, auto, mode) { size(can, height, width, auto, mode), can.page.style(can, sub._output, html.MAX_HEIGHT, "", "overflow-y", "hidden") }
can.core.Value(item, "auto.cmd") && can.onmotion.delay(function() { sub.runAction(sub.request({}, can.core.Value(item, "opts")), can.core.Value(item, "auto.cmd")) }) can.core.Value(item, "auto.cmd") && can.onmotion.delay(function() { sub.runAction(sub.request({}, can.core.Value(item, "opts")), can.core.Value(item, "auto.cmd")) })
can.page.style(can, sub._target, html.WIDTH, width)
}, can._output, target) }, can._output, target)
}, },
table: function(can, meta, target) { table: function(can, meta, target) {

View File

@ -1,5 +1,7 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_process: function(can, msg) { if (can.onimport[msg.OptionProcess()]) { return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, sub: can.sub, msg: msg, arg: msg.Option("_arg")}), true } }, _process: function(can, msg) {
if (msg.IsErr()) { can.user.toastFailure(can, msg.Result()); }
if (can.onimport[msg.OptionProcess()]) { return can.core.CallFunc([can.onimport, msg.OptionProcess()], {can: can, sub: can.sub, msg: msg, arg: msg.Option("_arg")}), true } },
_location: function(can, msg, arg) { can.user.jumps(arg) }, _location: function(can, msg, arg) { can.user.jumps(arg) },
_replace: function(can, msg, arg) { location.replace(arg) }, _replace: function(can, msg, arg) { location.replace(arg) },
_history: function(can, msg) { history.length == 1? can.user.close(): history.back() }, _history: function(can, msg) { history.length == 1? can.user.close(): history.back() },

View File

@ -3,10 +3,7 @@ Volcanos(chat.ONIMPORT, {
if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT) } if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT) }
can.page.Append(can, can._output, msg.Table(function(item) { can.page.Append(can, can._output, msg.Table(function(item) {
return {view: [[html.ITEM, item.type]], list: [item.type != html.BUTTON && {text: [can.user.trans(can, item.name, item._trans, html.INPUT), "", mdb.NAME]}, item.need == "must" && {text: ["*", "", "need"]}], _init: function(target) { return {view: [[html.ITEM, item.type]], list: [item.type != html.BUTTON && {text: [can.user.trans(can, item.name, item._trans, html.INPUT), "", mdb.NAME]}, item.need == "must" && {text: ["*", "", "need"]}], _init: function(target) {
item.type == html.BUTTON && (item.onclick = function(event) { var args = [] can.onappend.input(can, item, "", target)
can.core.Item(can.page.SelectArgs(can, can._output)[0], function(key, value) { args.push(key, value) })
can.Update(can.request(event, {_handle: ice.TRUE}), [ctx.ACTION, item.name].concat(args))
}), can.onappend.input(can, item, "", target)
}, onclick: function(event) { can.page.Select(can, event.currentTarget, html.INPUT, function(target) { target.focus() }) }} }, onclick: function(event) { can.page.Select(can, event.currentTarget, html.INPUT, function(target) { target.focus() }) }}
})), can.onappend.board(can, msg) })), can.onappend.board(can, msg)
}, },

View File

@ -8,17 +8,6 @@ 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) can.onappend.table(can, msg, null, target), can.onappend.board(can, msg, target), can.onmotion.story.auto(can, target)
} }
}, },
__project: function(can, msg) { var select, current = can.sup.db._zone||can.db.hash[0]||ice.DEV
msg.Table(function(value) {
var _target = can.onimport.item(can, value, function(event) { can.isCmdMode()? can.misc.SearchHash(can, value.name): can.sup.db._zone = value.name
if (can.onmotion.cache(can, function() { return value.name }, can.ui.content, can._status)) { return can.onimport.layout(can) }
can.run(can.request(event, {_toast: ice.PROCESS}), [value.name], function(msg) {
can.onimport.__content(can, msg), can.onappend._status(can, msg), can.onimport.layout(can)
})
}, function() {}, can.ui.project); select = (value.name == current? _target: select)||_target
}), select && select.click(), can.onmotion.orderShow(can, can.ui.project)
can.onappend.style(can, "output card", can.ui.content), can.onmotion.delay(can, function() { can.onimport.layout(can) })
}, __content: function(can, msg) { can.onimport.card(can, msg) },
card: function(can, msg, target) { target = target||can.ui.content||can._output card: function(can, msg, target) { target = target||can.ui.content||can._output
var list = msg.Table(function(value) { value.icon = value.icon||value.image var list = msg.Table(function(value) { value.icon = value.icon||value.image
var img = can.misc.Resource(can, value.icon, value.type == web.MASTER? "": value.name) var img = can.misc.Resource(can, value.icon, value.type == web.MASTER? "": value.name)