mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
add some
This commit is contained in:
parent
7ca69339be
commit
aec86f5d34
22
frame.js
22
frame.js
@ -1,6 +1,7 @@
|
||||
Volcanos(chat.ONENGINE, {
|
||||
_init: function(can, meta, list, cb, target) {
|
||||
can.Option = function() {}, can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) }
|
||||
can.Inputs = can.page.Append(can, document.body, ["inputs"])._target
|
||||
can.core.Next(list, function(item, next) { item.type = chat.PANEL
|
||||
can.onappend._init(can, item, item.list, function(sub) { can[item.name] = sub, sub.db = {}, sub.ui = {}, sub.db._boot = can.misc._time()
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, sub, cmds, cb) }
|
||||
@ -22,8 +23,11 @@ Volcanos(chat.ONENGINE, {
|
||||
if (panel.onengine._plugin(event, can, msg, panel, cmds, cb)) { return }
|
||||
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
||||
if (panel.onengine._static(event, can, msg, panel, cmds, cb)) { return }
|
||||
|
||||
var toast, _toast = msg.Option(chat._TOAST); if (_toast) { can.onmotion.delay(can, function() {
|
||||
if (sub.__toast || sub._toast) { return } toast = toast||can.user.toastProcess(sub, _toast) }, 30) }
|
||||
if (sub.__toast || sub._toast) { return } toast = toast||can.user.toastProcess(sub, _toast)
|
||||
}, 30) }
|
||||
|
||||
if (can.base.isUndefined(msg[ice.MSG_DAEMON])) {
|
||||
can.base.isUndefined(sub._daemon) && can.ondaemon._list[0] && (sub._daemon = can.ondaemon._list.push(sub)-1)
|
||||
if (sub._daemon) { msg.Option(ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], sub._daemon)) }
|
||||
@ -33,8 +37,12 @@ Volcanos(chat.ONENGINE, {
|
||||
names = can.base.MergeURL(names, ice.MSG_INDEX, sub.ConfIndex()), can.page.exportValue(sub, msg)
|
||||
can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds, names: names}))
|
||||
can.misc.Run(event, can, {names: names}, cmds, function(msg) {
|
||||
can.user.isMobile || toast && can.user.toastSuccess(msg._can, msg.Option(ctx.ACTION)+lex.SP+ice.SUCCESS)
|
||||
// can.user.isMobile ||
|
||||
toast && can.user.toastSuccess(msg._can, _toast)
|
||||
toast && toast.close && toast.close(), toast = true
|
||||
delete(sub._toast)
|
||||
delete(sub.__toast)
|
||||
|
||||
can.base.isFunc(cb) && cb(msg), Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(mdb.FS))] = msg
|
||||
})
|
||||
},
|
||||
@ -478,8 +486,10 @@ Volcanos(chat.ONAPPEND, {
|
||||
}
|
||||
input.onclick = item.onclick
|
||||
if (item.type == html.TEXT) {
|
||||
input.placeholder = can.user.trans(can, input.placeholder||input.name, item._trans, html.INPUT)
|
||||
input.title = can.user.trans(can, input.title||input.placeholder||input.name, item._trans, html.INPUT)
|
||||
if (!can.user.isMobile) {
|
||||
input.placeholder = can.user.trans(can, input.placeholder||input.name, item._trans, html.INPUT)
|
||||
input.title = can.user.trans(can, input.title||input.placeholder||input.name, item._trans, html.INPUT)
|
||||
}
|
||||
input.onkeydown = item.onkeydown||function(event) { if (event.key == code.ENTER) { return can.Update(), can.onkeymap.prevent(event) }
|
||||
can.onkeymap.input(event, can), can.onkeymap.selectOutput(event, can)
|
||||
}
|
||||
@ -522,7 +532,7 @@ Volcanos(chat.ONAPPEND, {
|
||||
can.user.trans(can, kit.Dict(target.name, target.value))
|
||||
return {type: html.BUTTON, name: target.name, value: target.value, style: _style}
|
||||
})
|
||||
function run(event, button) { button && can.run(can.request(event, value, can.Option())._event, [ctx.ACTION, button]), can.onkeymap.prevent(event) }
|
||||
function run(event, button) { button && can.run(can.request(event, value, can.Option(), {_toast: can.user.trans(can, button)})._event, [ctx.ACTION, button]), can.onkeymap.prevent(event) }
|
||||
if (list.length <= limit) {
|
||||
target.onclick = function(event) { run(event, event.target.name) }
|
||||
} else {
|
||||
@ -698,7 +708,7 @@ Volcanos(chat.ONAPPEND, {
|
||||
msg.IsDetail() && key == mdb.KEY? can.user.trans(can, _value, null, html.INPUT): can.user.trans(can, _value, null, "value."+key), html.TD,
|
||||
], onclick: function(event) { if (onclick()) { return } var target = event.target
|
||||
if (key == cli.QRCODE && can.page.tagis(event.target, html.IMG)) { can.user.opens(event.target.title) }
|
||||
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) { can.requestAction(request(event), target.name)
|
||||
if (can.page.tagis(target, html.INPUT) && target.type == html.BUTTON) { can.requestAction(request(event, {_toast: can.user.trans(can, target.name)}), target.name)
|
||||
meta && meta[target.name]? can.user.input(event, can, meta[target.name], function(args) { run(event, target.name, args) }, data): run(event, target.name)
|
||||
} else {
|
||||
can.sup.onimport.change(event, can.sup, key, value, null, data) || can.sup.onexport.record(can.sup, value, key, data, event)
|
||||
|
85
index.css
85
index.css
@ -403,47 +403,48 @@ body>div.carte div.item span.icon.next { line-height:22px; height:22px; float:ri
|
||||
body>div.carte div.item span.name { flex-grow:1; }
|
||||
body>div.carte.select.float>div.item { text-align:center; }
|
||||
body>div.carte.header.avatar img { width:370px; }
|
||||
body>div.input.process input { background-color:var(--disable-bg-color) !important; color:var(--disable-fg-color); border:var(--box-border) !important; }
|
||||
body>div.input.process input:hover { background-color:var(--disable-bg-color) !important; color:var(--disable-fg-color); border:var(--box-border) !important; }
|
||||
body>div.input { padding:var(--plugin-padding); }
|
||||
body>div.input { padding:var(--plugin-padding); }
|
||||
body>div.input>legend { background-color:var(--input-bg-color); float:right; padding:0; }
|
||||
body>div.input tr { margin:var(--button-margin); }
|
||||
body>div.input td { padding:var(--table-padding); }
|
||||
body>div.input td span.must { color:red; padding:0 5px; }
|
||||
body>div.input td:nth-child(2) { padding:var(--table-padding) 0; }
|
||||
body.mobile>div.input tr:not(.hide) { display:flex; flex-direction:column; margin:var(--button-margin); }
|
||||
body.mobile>div.input td { padding:0 var(--button-padding); margin:var(--button-margin); }
|
||||
body.mobile>div.input td:nth-child(1) { color:gray; font-size:var(--status-font-size); padding-left:var(--button-padding); margin-bottom:0; }
|
||||
body.mobile>div.input td:nth-child(2) { display:none; }
|
||||
body>div.input tr.img td:last-child>span { display:none; }
|
||||
body>div.input tr.img td:last-child>div.item { width:var(--river-width); flex-wrap:wrap; }
|
||||
body>div.input tr.img td:last-child>div.item>div { background-color:gray; margin:var(--input-margin); }
|
||||
body>div.input tr.img td:last-child>div>span { font-size:var(--action-height); }
|
||||
body>div.input tr.img td:last-child>div>span.icon { display:none; }
|
||||
body>div.input tr.icon td:last-child { position:relative; }
|
||||
body>div.input tr.icon td:last-child img:first-child { height:28px; width:28px; position:absolute; left:12px; top:12px; }
|
||||
body>div.input tr.icon td:last-child input { padding-left:var(--action-height); }
|
||||
body>div.input tr.icons td:last-child img { height:28px; width:28px; position:absolute; left:2px; top:2px; }
|
||||
body>div.input tr.icons td:last-child span:not(.icon) { font-family:var(--code-font-family); position:absolute; left:33px; }
|
||||
body>div.input tr.icons td:last-child input { padding-left:var(--action-height); }
|
||||
body>div.input td span.icon { margin-left:-20px; visibility:hidden; }
|
||||
body>div.input td span.icons { margin-left:-20px; visibility:hidden; }
|
||||
body>div.input td label { font-family:var(--code-font-family); }
|
||||
body>div.input td:hover span.icon { visibility:visible; }
|
||||
body>div.input td:hover span.icons { visibility:visible; }
|
||||
body:not(.mobile)>div.input textarea { height:var(--textarea-height); width:var(--form-width) !important; }
|
||||
body>div.input select { width:var(--form-width) !important; }
|
||||
body>div.input input.select[type=button] { width:var(--form-width) !important; }
|
||||
body>div.input input:not([type=button]) { width:var(--form-width) !important; padding-left:24px; }
|
||||
body>div.input input[type=text] { width:var(--form-width) !important; padding-left:24px; }
|
||||
body>div.input input[name=cancel] { border:var(--box-danger); }
|
||||
body>div.input input[name=submit] { border:var(--box-notice); }
|
||||
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:var(--table-padding); width:100%; position:sticky; bottom:0; flex-direction:row-reverse; cursor:move; }
|
||||
body>div.input div.action>div.item { margin-left:var(--button-margin); float:right; }
|
||||
body>div.input div.action>div.item>input[type=button] { min-width:112px; }
|
||||
body div.input.float.process input { background-color:var(--disable-bg-color) !important; color:var(--disable-fg-color); border:var(--box-border) !important; }
|
||||
body div.input.float.process input:hover { background-color:var(--disable-bg-color) !important; color:var(--disable-fg-color); border:var(--box-border) !important; }
|
||||
body div.input.float { padding:var(--plugin-padding); }
|
||||
body div.input.float { padding:var(--plugin-padding); }
|
||||
body div.input.float>legend { background-color:var(--input-bg-color); float:right; padding:0; }
|
||||
body div.input.float tr { margin:var(--button-margin); }
|
||||
body div.input.float td { padding:var(--table-padding); }
|
||||
body div.input.float td span.must { color:red; padding:0 5px; }
|
||||
body div.input.float td:nth-child(2) { padding:var(--table-padding) 0; }
|
||||
body.mobile div.input.float table { width:100%; }
|
||||
body.mobile div.input.float tr:not(.hide) { display:flex; flex-direction:column; margin:var(--button-margin); }
|
||||
body.mobile div.input.float td { padding:0 var(--button-padding); margin:var(--button-margin); }
|
||||
body.mobile div.input.float td:nth-child(1) { color:gray; font-size:var(--status-font-size); padding-left:var(--button-padding); margin-bottom:0; }
|
||||
body.mobile div.input.float td:nth-child(2) { display:none; }
|
||||
body div.input.float tr.img td:last-child>span { display:none; }
|
||||
body div.input.float tr.img td:last-child>div.item { width:var(--river-width); flex-wrap:wrap; }
|
||||
body div.input.float tr.img td:last-child>div.item>div { background-color:gray; margin:var(--input-margin); }
|
||||
body div.input.float tr.img td:last-child>div>span { font-size:var(--action-height); }
|
||||
body div.input.float tr.img td:last-child>div>span.icon { display:none; }
|
||||
body div.input.float tr.icon td:last-child { position:relative; }
|
||||
body div.input.float tr.icon td:last-child img:first-child { height:28px; width:28px; position:absolute; left:12px; top:12px; }
|
||||
body div.input.float tr.icon td:last-child input { padding-left:var(--action-height); }
|
||||
body div.input.float tr.icons td:last-child img { height:28px; width:28px; position:absolute; left:2px; top:2px; }
|
||||
body div.input.float tr.icons td:last-child span:not(.icon) { font-family:var(--code-font-family); position:absolute; left:33px; }
|
||||
body div.input.float tr.icons td:last-child input { padding-left:var(--action-height); }
|
||||
body div.input.float td span.icon { margin-left:-20px; visibility:hidden; }
|
||||
body div.input.float td span.icons { margin-left:-20px; visibility:hidden; }
|
||||
body div.input.float td label { font-family:var(--code-font-family); }
|
||||
body div.input.float td:hover span.icon { visibility:visible; }
|
||||
body div.input.float td:hover span.icons { visibility:visible; }
|
||||
body:not(.mobile)>div.input.float textarea { height:var(--textarea-height); width:var(--form-width) !important; }
|
||||
body div.input.float select { width:var(--form-width) !important; }
|
||||
body div.input.float input.select[type=button] { width:var(--form-width) !important; }
|
||||
body div.input.float input:not([type=button]) { width:var(--form-width) !important; padding-left:24px; }
|
||||
body div.input.float input[type=text] { width:var(--form-width) !important; padding-left:24px; }
|
||||
body div.input.float input[name=cancel] { border:var(--box-danger); }
|
||||
body div.input.float input[name=submit] { border:var(--box-notice); }
|
||||
body div.input.float input[name=submit]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||
body div.input.float input[name=cancel]:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
body div.input.float div.action { padding:var(--table-padding); width:100%; position:sticky; bottom:0; flex-direction:row-reverse; cursor:move; }
|
||||
body div.input.float div.action>div.item { margin-left:var(--button-margin); float:right; }
|
||||
body div.input.float div.action>div.item>input[type=button] { min-width:112px; }
|
||||
body>div.input.login { flex-direction:column; }
|
||||
body>div.input.login>div.action { border-bottom:var(--box-border); padding:0; flex-direction:row; }
|
||||
body>div.input.login>div.action>div.tabs { padding:var(--button-padding); }
|
||||
@ -470,7 +471,7 @@ body>div.upload div.status div.size { text-align:center; }
|
||||
body.mobile>div.input { margin:10px; width:calc(100% - 20px); left:0 !important; }
|
||||
body.mobile>div.input table { width:100%; }
|
||||
body.mobile>div.input td { padding:0; }
|
||||
body.mobile>div.input table input { width:100% !important; }
|
||||
body.mobile div.input.float table input { width:100% !important; }
|
||||
/* display */
|
||||
fieldset:not(.Action) { position:relative; }
|
||||
fieldset>form.option:not(.hide), fieldset>div.action:not(.hide):not(.flex) { display:contents; } .hide, .hidden { display:none; }
|
||||
|
@ -176,7 +176,7 @@ Volcanos("misc", {
|
||||
input.values = input.values || can.core.Split(input.value)
|
||||
}
|
||||
if (can.base.isIn(input.type, html.TEXT, html.TEXTAREA)) {
|
||||
input.placeholder = can.user.trans(can, input.placeholder||input.name, field, html.INPUT)
|
||||
// input.placeholder = can.user.trans(can, input.placeholder||input.name, field, html.INPUT)
|
||||
}
|
||||
if (input.type == html.BUTTON) {
|
||||
input.value = can.user.trans(can, input.value||input.name, field)
|
||||
@ -248,6 +248,11 @@ Volcanos("misc", {
|
||||
},
|
||||
ResourceFavicon: function(can, path, space) { return can.misc.Resource(can, path||can.user.info.favicon||nfs.SRC_MAIN_ICO, space) },
|
||||
ResourceIcons: function(can, path, space, serve) {
|
||||
if (!path) {
|
||||
if (can.user.info.nodetype == web.WORKER) {
|
||||
return can.misc.Resource(can, can.user.info.favicon, can.user.info.nodename)
|
||||
}
|
||||
}
|
||||
return can.misc.Resource(can, path||(can.page.isDark(can)? "usr/icons/volcanos.png": "usr/icons/icebergs.png"), space, serve)
|
||||
},
|
||||
Resource: function(can, path, space, serve) { if (!path) { return "" }
|
||||
@ -257,6 +262,7 @@ Volcanos("misc", {
|
||||
if (!can.base.beginWith(path, web.HTTP)) { if (serve && serve.indexOf(location.origin) == -1) { var u = can.base.ParseURL(serve); path = u.origin + path } }
|
||||
if (!space && can.base.beginWith(path, web.HTTP)) { return path }
|
||||
if (!space && path.indexOf("pod=") > 0) { return path }
|
||||
if (can.base.beginWith(path, "/") && path.indexOf("pod=") > 0) { return path }
|
||||
return can.base.MergeURL(path, ice.POD, space||can.ConfSpace()||can.misc.Search(can, ice.POD))
|
||||
},
|
||||
ShareLocal: function(can, path, space) { if (can.base.beginWith(path, web.HTTP, nfs.PS)) { return path }
|
||||
|
19
lib/page.js
19
lib/page.js
@ -85,9 +85,7 @@ Volcanos("page", {
|
||||
data.className = list[1]||data.className||name, data.type = html.PASSWORD
|
||||
} else if (item.img) {
|
||||
var list = can.core.List(item.img); type = html.IMG, data.src = list[0]
|
||||
if (can.base.contains(data.src, ".jpg")) {
|
||||
data.className = data.className||"jpg"
|
||||
}
|
||||
if (can.base.contains(data.src, ".jpg")) { data.className = data.className||"jpg" }
|
||||
} else if (item.row) { type = html.TR, item.list = item.row.map(function(text) { return {text: [text, item.sub||html.TD]} })
|
||||
} else if (item.th) { type = html.TR, item.list = item.th.map(function(text) { return {text: [text, html.TH]} })
|
||||
} else if (item.td) { type = html.TR, item.list = item.td.map(function(text) { return can.base.isObject(text)? text: {text: [text||"", html.TD]} }) }
|
||||
@ -95,11 +93,18 @@ Volcanos("page", {
|
||||
if (type == html.INPUT) {
|
||||
if (data.type == html.TEXT || data.type == html.PASSWORD || !data.type) {
|
||||
// data.autocomplete = data.autocomplete||"new-password"
|
||||
data.placeholder = (data.placeholder||name||"").split(nfs.PT).pop(), data.title = can.user.trans(can, data.title||data.placeholder, null, html.INPUT)
|
||||
if (!can.user.isMobile) {
|
||||
data.placeholder = (data.placeholder||name||"").split(nfs.PT).pop(), data.title = can.user.trans(can, data.title||data.placeholder, null, html.INPUT)
|
||||
}
|
||||
} else if (data.type == html.BUTTON) {
|
||||
// data.value = can.user.trans(can, data.value)
|
||||
}
|
||||
} if (type == html.TEXTAREA) { data.placeholder = can.user.trans(can, (data.placeholder||name||"").split(nfs.PT).pop(), null, html.INPUT) }
|
||||
}
|
||||
if (type == html.TEXTAREA) {
|
||||
if (!can.user.isMobile) {
|
||||
data.placeholder = can.user.trans(can, (data.placeholder||name||"").split(nfs.PT).pop(), null, html.INPUT)
|
||||
}
|
||||
}
|
||||
can.core.List(["className", "placeholder", "title"], function(key) { data[key] || delete(data[key]) })
|
||||
name && (data.name = name); var node = can.page.Create(can, type, data)
|
||||
value[type] = value[name] = value[can.core.Split(data.className)[0]] = node, value._target = value._target||node, value.first = value.first||node, value.last = node
|
||||
@ -432,7 +437,7 @@ Volcanos("page", {
|
||||
case html.TEXT:
|
||||
case html.FILTER:
|
||||
item.className||can.page.ClassList.add(can, item, ctx.ARGS), item.name = item.name||item.type, item.value = value||item.value||"";
|
||||
item.placeholder = item.placeholder||item.name
|
||||
//item.placeholder = item.placeholder||item.name
|
||||
break
|
||||
case html.UPLOAD: item.type = html.FILE, input.name = html.UPLOAD; break
|
||||
case html.BUTTON: item.value = item.value||item.name||mdb.LIST; break
|
||||
@ -490,7 +495,7 @@ Volcanos("page", {
|
||||
appendAction: function(can, value, target) { if (!value.action) { return } target.innerHTML = value.action
|
||||
can.page.Select(can, target, html.INPUT_BUTTON, function(target) {
|
||||
var style = can.Conf("_style."+target.name)||can.page.buttonStyle(can, target.name); style && can.onappend.style(can, style, target)
|
||||
target.onclick = function(event) { can.onkeymap.prevent(event), can.Update(can.request(event, value), [ctx.ACTION, target.name]) }
|
||||
target.onclick = function(event) { can.onkeymap.prevent(event), can.Update(can.request(event, value, {_toast: can.user.trans(can, target.name)}), [ctx.ACTION, target.name]) }
|
||||
})
|
||||
},
|
||||
parseAction: function(can, value) { var action = []
|
||||
|
16
lib/user.js
16
lib/user.js
@ -97,7 +97,7 @@ Volcanos("user", {
|
||||
var carte = can.user.toast(can, {content: content, title: title, action: action||[cli.CLOSE], duration: -1})
|
||||
can.page.style(can, carte._target, html.TOP, 200, html.BOTTOM, ""); return carte
|
||||
},
|
||||
toastProcess: function(can, content, title, progress) { return can.user.toast(can, {content: "🕑 "+(content||ice.PROCESS), title: title, duration: -1, progress: progress}) },
|
||||
toastProcess: function(can, content, title, progress) { return can.user.toast(can, {content: "🕑 "+(content||ice.PROCESS)+(can.user.isEnglish(can)? "": "中..."), title: title, duration: -1, progress: progress}) },
|
||||
toastFailure: function(can, content, title) { return can.user.toast(can, {content: "❌ "+(content||ice.FAILURE), title: title, duration: -1}) },
|
||||
toastSuccess: function(can, content, title, duration) {
|
||||
if (!can.user.isEnglish(can)) {
|
||||
@ -137,7 +137,7 @@ Volcanos("user", {
|
||||
}), _target: ui._target,
|
||||
}); can.onmotion.story.auto(can, ui._target)
|
||||
if (action._target.parentNode == document.body) { can.onmotion.delay(can, function() {
|
||||
can.page.style(can, action._target, html.TOP, (can.page.height() - action._target.offsetHeight)/4, html.LEFT, (can.page.width()-action._target.offsetWidth)/2)
|
||||
can.page.style(can, action._target, html.TOP, (can.page.height() - action._target.offsetHeight)/2, html.LEFT, (can.page.width()-action._target.offsetWidth)/2)
|
||||
}) }
|
||||
if (meta.action && meta.action.length == 1 && meta.action[0] === "") {
|
||||
can.page.Select(can, action._target, html.DIV_ACTION, function(target) { can.onmotion.hidden(can, target) })
|
||||
@ -234,8 +234,8 @@ Volcanos("user", {
|
||||
can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) { item.name && item.value && _msg.Option(item.name, item.value) }); (item.run||can.run)(event, cmds, cb, true)
|
||||
}, _enter: function(event) { return action.submit(event, can, html.SUBMIT), true }}, item), target)
|
||||
}, item.onkeydown = function(event) { if (event.key == code.ESCAPE) { event.target.blur() } }
|
||||
item.placeholder = can.user.trans(can, item.placeholder||item.name, null, html.INPUT)
|
||||
item.title = can.user.trans(can, item.title||item.placeholder||item.name, null, html.INPUT)
|
||||
// item.placeholder = can.user.trans(can, item.placeholder||item.name, null, html.INPUT)
|
||||
// item.title = can.user.trans(can, item.title||item.placeholder||item.name, null, html.INPUT)
|
||||
return {view: [[item.name, item.type, item.action], html.TR], list: [
|
||||
{type: html.TD, list: [
|
||||
{text: [can.user.trans(can, item.name||"", item._trans, html.INPUT), html.LABEL]},
|
||||
@ -243,9 +243,7 @@ Volcanos("user", {
|
||||
]}, {type: html.TD, list: []},
|
||||
{type: html.TD, _init: function(target) { can.onappend.input(can, item, msg.Option(item.name), target) }},
|
||||
], onclick: function(event) {
|
||||
can.page.Select(can, event.currentTarget, "input", function(target) {
|
||||
target.focus()
|
||||
})
|
||||
can.page.Select(can, event.currentTarget, "input", function(target) { target.focus() })
|
||||
}}
|
||||
})}]}, html.ACTION,
|
||||
], onclick: function(event) { if (!can.page.tagis(event.target, html.INPUT, html.TEXTAREA)) { can.onmotion.clearCarte(can) } }}])
|
||||
@ -298,7 +296,9 @@ Volcanos("user", {
|
||||
upload: function(event, can, cb, silent) { var begin = new Date()
|
||||
var ui = can.page.Append(can, document.body, [{view: [[html.UPLOAD, can.Conf(ctx.INDEX)||can.ConfIndex(), chat.FLOAT]], list: [
|
||||
html.ACTION, {view: html.OUTPUT, list: ["progress"]}, {view: html.STATUS, list: [html.SHOW, cli.COST, nfs.SIZE]},
|
||||
]}]); can.onlayout.figure(event, can, ui._target)
|
||||
]}])
|
||||
can.user.isMobile && can.page.style(can, ui._target, html.LEFT, 0, html.WIDTH, window.innerWidth)
|
||||
can.onlayout.figure(event, can, ui._target)
|
||||
var action = can.onappend._action(can, [{type: html.UPLOAD, onchange: function(event) { action.show(event, 0, event.target.files[0].size, 0) }}, {type: html.BUTTON, name: cli.CLOSE}], ui.action, {
|
||||
begin: function() { begin = new Date()
|
||||
var upload = can.page.Select(can, ui.action, html.INPUT_FILE)[0]; if (upload.files.length == 0) { return upload.focus() }
|
||||
|
@ -288,15 +288,6 @@ Volcanos(chat.ONIMPORT, {
|
||||
can.Conf(mdb.ICONS)? can.misc.Resource(can, can.Conf(mdb.ICONS)): can.user.info.nodetype == web.WORKER? can.misc.Resource(can, can.user.info.favicon, can.user.info.nodename): "",
|
||||
)
|
||||
},
|
||||
myPlugin: function(can, value, cb) {
|
||||
var key = [value.space||can.ConfSpace(), value.index||can.ConfIndex()].concat(value.args||"").join(",")
|
||||
var sup = can._stacks_root; sup._stacks = sup._stacks||{}; var sub = (sup._stacks[key]||[])[0]; if (sub) { return sub._select() }
|
||||
var _output = sup._target.parentNode; value.style = html.OUTPUT
|
||||
sup.onappend.plugin(can._root.Action, value, function(sub) { can.onimport.myField(can, sub)
|
||||
sub.onexport.output = function(_sub, msg) { _sub._stacks_current = sup._stacks[key] = [sub], _sub._stacks_root = sup, sub._select() }
|
||||
sub._select = function() { can.onimport.myPluginSelect(can, sub, _output) }, sub._select(), cb && cb(sub)
|
||||
}, _output)
|
||||
},
|
||||
myField: function(can, sub) {
|
||||
sub.onexport._output = function(_sub) {
|
||||
can.core.Item(can.onimport, function(key, value) { _sub.onimport[key] = _sub.onimport[key]||value })
|
||||
@ -307,10 +298,19 @@ Volcanos(chat.ONIMPORT, {
|
||||
myPluginSelect: function(can, sub, _output) {
|
||||
can.page.SelectChild(can, _output, html.FIELDSET, function(target) { can.onmotion.toggle(can, target, target == sub._target) })
|
||||
can.page.SelectChild(can, sub._output, "*", function(target) { can.onmotion.toggle(can, target, true) })
|
||||
can.page.style(can, sub._action, html.DISPLAY, html.NONE), sub._output.innerHTML == "" && sub.Update()
|
||||
can.user.isMobile && sub.onimport.size(sub, window.innerHeight, window.innerWidth, false)
|
||||
can.page.style(can, sub._action, html.DISPLAY, html.NONE)
|
||||
can.user.isMobile? sub.onimport.size(sub, window.innerHeight, window.innerWidth, false): sub.onimport.size(sub, sub.ConfHeight(), sub.ConfWidth(), false)
|
||||
can.onimport.myOption(sub)
|
||||
},
|
||||
myPlugin: function(can, value, cb) {
|
||||
var key = [value.space||can.ConfSpace(), value.index||can.ConfIndex()].concat(value.args||"").join(",")
|
||||
var sup = can._stacks_root; sup._stacks = sup._stacks||{}; var sub = (sup._stacks[key]||[])[0]; if (sub) { return sub._select() }
|
||||
var _output = sup._target.parentNode; value.style = html.OUTPUT
|
||||
sup.onappend.plugin(can._root.Action, value, function(sub) { can.onimport.myField(can, sub)
|
||||
sub.onexport.output = function(_sub, msg) { _sub._stacks_current = sup._stacks[key] = [sub], _sub._stacks_root = sup, sub._select() }
|
||||
sub._select = function() { can.onimport.myPluginSelect(can, sub, _output) }, sub._select(), cb && cb(sub)
|
||||
}, _output)
|
||||
},
|
||||
myStory: function(can, value) {
|
||||
if (!can._stacks_current) { var sup = can.sup; can._stacks_root = sup, sup._stacks = {}
|
||||
var key = [can.ConfSpace(), can.ConfIndex()].concat(can.base.trim(can.core.Item(can.Option(), function(key, value) { return value }))).join(",")
|
||||
@ -327,11 +327,12 @@ Volcanos(chat.ONIMPORT, {
|
||||
var run = sub.run; sub.run = function(event, cmds, cb) {
|
||||
run(can.request(event, {
|
||||
city_name: current[CITY_NAME], street_name: current[STREET_NAME], place_name: current[PLACE_NAME],
|
||||
dashboard_uid: current["dashboard_uid"], command_uid: sub.Conf("command_uid"), portal_name: can.ConfHelp(),
|
||||
dashboard_uid: current["dashboard_uid"], storage_uid: current["storage_uid"],
|
||||
command_uid: sub.Conf("command_uid"), portal_name: can.ConfHelp(),
|
||||
}, can.base.Obj(sub.Conf("field.option"))), cmds, cb)
|
||||
}
|
||||
sub.onimport._field = function(sub, msg, cb) {
|
||||
msg.Table(function(value) { value._goback = function() { goback(true) }, can.onimport.myStory(can, value) })
|
||||
msg.Table(function(value) { value._goback = function(event) { goback(event, true) }, can.onimport.myStory(can, value) })
|
||||
}
|
||||
can.onimport.myField(can, sub)
|
||||
sub.onexport.output = function(_sub, msg) { _sub._stacks_current = can._stacks_current, _sub._stacks_root = can._stacks_root
|
||||
@ -339,19 +340,21 @@ Volcanos(chat.ONIMPORT, {
|
||||
sub.sub.onaction._goback = goback
|
||||
can.page.style(can, sub._output, "left", "0")
|
||||
}, can.page.style(can, sub._output, "left", "100")
|
||||
function goback(clear) { if (value._goback) { return value._goback() }
|
||||
function goback(event, clear) { if (value._goback) { return value._goback(event) }
|
||||
sub.request(event, {_toast: can.user.trans(can, "reload", "刷新")})
|
||||
if (clear) { if (sub.Option(UID)) { sub.Option(UID, "") } }
|
||||
if (sub.Option(UID)) { return sub.Option(UID, ""), sub.Update() }
|
||||
if (sub.Option(UID)) { return sub.Option(UID, ""), sub.Update(event) }
|
||||
var last = can._stacks_current.pop(); can.page.Remove(can, last._target)
|
||||
var last = can._stacks_current[can._stacks_current.length-1]; if (last._select) {
|
||||
if (last.ConfIndex().split(".").pop() == "message") { last.Update() }
|
||||
if (last.ConfIndex().split(".").pop() == "message") { last.Update(event) }
|
||||
can._stacks_current.length == 1 && last._output.innerHTML == "" && last.Update(event)
|
||||
return last._select()
|
||||
}
|
||||
}
|
||||
function reload() { sub.Update() }
|
||||
function reload(event) { sub.Update(sub.request(event, {_toast: can.user.trans(can, "reload", "刷新")})) }
|
||||
sub._select = function() { can.onimport.myOption(sub)
|
||||
can.page.SelectChild(can, _output, "*", function(target) { can.onmotion.toggle(can, target, target == sub._target) })
|
||||
var list = [can.page.button(can, can.user.trans(can, "goback", "返回"), function(event) { goback() }), can.page.button(can, can.user.trans(can, "reload", "刷新"), function(event) { reload() })]
|
||||
var list = [can.page.button(can, can.user.trans(can, "", "返回"), function(event) { goback(event) }), can.page.button(can, can.user.trans(can, "reload", "刷新"), function(event) { reload(event) })]
|
||||
can.page.Appends(can, _action, list), can.page.style(can, _action, html.DISPLAY, html.BLOCK)
|
||||
can.user.isMobile && sub.onimport.size(sub, window.innerHeight-ACTION_HEIGHT, window.innerWidth, false)
|
||||
}, sub._select()
|
||||
@ -362,9 +365,6 @@ Volcanos(chat.ONIMPORT, {
|
||||
},
|
||||
myTabs: function(can, key, list, target) { var last = can.misc.Cookie(can, key)
|
||||
if (!target && !can.ui.tabs) { can.ui = can.page.Append(can, can._output, [html.TABS, html.LIST]) } target = target||can.ui.tabs
|
||||
can.onimport.layout = can.onimport.layout||function(can) {
|
||||
can.ui.list && can.page.styleHeight(can, can.ui.list, can.ConfHeight()-can.ui.tabs.offsetHeight)
|
||||
}
|
||||
can.page.Append(can, target, can.core.List(list, function(value) {
|
||||
return {text: [can.user.trans(can, value, "", "value."+key), "", [value, value == "all" && last == "" || value == last? html.SELECT: ""]], onclick: function(event) {
|
||||
can.onmotion.select(can, target, "*", event.target), can.misc.Cookie(can, key, value == "all"? "": value), can.Update()
|
||||
@ -415,14 +415,7 @@ Volcanos(chat.ONIMPORT, {
|
||||
}}
|
||||
},
|
||||
textView: function(can, value, key, type) {
|
||||
if (!key) {
|
||||
can.core.Item(value, function(k, v) {
|
||||
if (k == "status" || can.base.endWith(k, "_status")) {
|
||||
key = k
|
||||
}
|
||||
})
|
||||
}
|
||||
if (!type) { type = key.split("_").pop() }
|
||||
key || can.core.Item(value, function(k, v) { if (k == "status" || can.base.endWith(k, "_status")) { key = k } }); if (!type) { type = key.split("_").pop() }
|
||||
return value[key] && value[key] != "finish" && {text: [can.user.transValue(can, value, key), "", [type, value[key], can.Conf("_trans.value."+key+".style."+value[key])||""]]}
|
||||
},
|
||||
authView: function(can, value) { return can.base.isIn(value.auth_status, "issued", "2") && {view: [aaa.AUTH, html.SPAN], list: [{icon: "bi bi-patch-check-fill", style: {color: "var(--notice-bg-color)"}}]} },
|
||||
|
2
proto.js
2
proto.js
@ -65,7 +65,7 @@ var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, _cache: {},
|
||||
can.core.List(arguments, function(item, index) { if (!item || index == 0) { return } can.core.Item(item, set) }); return msg
|
||||
},
|
||||
requestPodCmd: function(event) { return can.request(event, {pod: can.ConfSpace(), index: can.ConfIndex()}) },
|
||||
requestAction: function(event, button) { return can.request(event, {action: button, _toast: event.isTrusted? button+lex.SP+ice.PROCESS: ""}) },
|
||||
requestAction: function(event, button) { return can.request(event, {action: button, _toast: event.isTrusted? can.user.trans(can, button): ""}) },
|
||||
runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf()
|
||||
if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { var msg = can.request(event, {action: cmds[1]})
|
||||
if (can.base.isFunc(meta.feature[cmds[1]])) { return meta.feature[cmds[1]](can, msg, cmds.slice(2)) }
|
||||
|
Loading…
x
Reference in New Issue
Block a user