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-09-14 00:36:46 +08:00
parent e30eb0bfd5
commit 833b44685e
9 changed files with 51 additions and 26 deletions

View File

@ -81,6 +81,7 @@ var mdb = {FOREACH: "*", RANDOMS: "%",
NOTFOUND: "notfound",
NICK: "nick",
HELP: "help",
INFO: "info",
DATA: "data", VIEW: "view",
INPUTS: "inputs", CREATE: "create", REMOVE: "remove", UPDATE: "update",
INSERT: "insert", DELETE: "delete", MODIFY: "modify", SELECT: "select",

View File

@ -276,6 +276,7 @@ Volcanos(chat.ONAPPEND, {
can.base.isString(item)? /* 2.按键 */ {type: html.BUTTON, name: item, value: can.user.trans(can, item, meta._trans), onclick: function(event) {
run(event, item)
}}: item.length > 0? /* 3.列表 */ {type: html.SELECT, name: item[0], value: item.value, values: item.slice(1), onchange: function(event) { can.misc.Event(event, can, function(msg) {
if (!can.onexport) { return }
var button = event.target.value; can.onexport.session && can.onexport.session(can, "action:"+(item.name||item[0]), button)
can.onaction._select && can.onaction._select(event, can, item[0], button)
meta[item[0]]? can.core.CallFunc(meta[item[0]], [event, can, item[0], button]):
@ -1292,8 +1293,8 @@ Volcanos(chat.ONMOTION, {
},
slideAction: function(can, target) {
var action = can.page.Select(can, target.parentNode, html.DIV_ACTION)[0]
var beginY, beginX, beginLeft, max = can.base.Max(action.offsetWidth, 200, 60)
target.addEventListener("touchstart", function(event) { max = can.base.Max(action.offsetWidth, 200, 60)
var beginY, beginX, beginLeft, max = can.base.Max(action.offsetWidth, 240, 60)
target.addEventListener("touchstart", function(event) { max = can.base.Max(action.offsetWidth, 240, 60)
beginY = event.touches[0].clientY, beginX = event.touches[0].clientX, beginLeft = parseFloat(target.style.left)||0
})
target.addEventListener("touchmove", function(event) {

View File

@ -205,14 +205,14 @@ div.item.card img { height:60px; width:60px; margin:5px; }
div.item.card div.info { width:100%; }
div.item.card div.title { font-size:16px; }
div.item.card div.title span { margin-right:5px; }
div.item.card div.title span.type { border:var(--box-notice); color:var(--notice-bg-color); font-size:12px; padding:0 5px; margin-left:5px; }
div.item.card div.title span.role { border:var(--box-notice); color:var(--notice-bg-color); font-size:12px; padding:0 5px; margin-left:5px; }
div.item.card div.title span.status { border:var(--box-notice); color:var(--notice-bg-color); font-size:12px; padding:0 5px; margin-left:5px; }
div.item.card div.title span.type { border:var(--box-notice); color:var(--notice-bg-color); font-size:12px; padding:0 5px; }
div.item.card div.title span.role { border:var(--box-notice); color:var(--notice-bg-color); font-size:12px; padding:0 5px; }
div.item.card div.title span.status { border:var(--box-notice); color:var(--notice-bg-color); font-size:12px; padding:0 5px; }
div.item.card div.status { font-size:12px; color:gray; }
div.item.card div.status span { margin-right:5px; }
div.item.card div.action { max-width:200px; display:flex; align-items:center; }
div.item.card div.action { max-width:100%; display:flex; align-items:center; }
div.item.card div.action { position:absolute; right:0; }
div.item.card div.action input[type=button] { border:none; margin-left:5px; }
div.item.card div.action input[type=button] { border:none; color:var(--notice-bg-color); margin-left:5px; }
div.item.card div.action input[type=button].danger { color:var(--danger-bg-color) }
div.item.card div.action input[type=button]:last-child { margin-right:5px; }
div.item.card div.output { padding:10px 0; display:flex; transition:left .2s; }
@ -443,7 +443,7 @@ body>div.input input[name=submit]:hover { background-color:var(--notice-bg-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] { width:112px; }
body>div.input 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); }

View File

@ -251,9 +251,7 @@ Volcanos("user", {
], onclick: function(event) { if (!can.page.tagis(event.target, html.INPUT, html.TEXTAREA)) { can.onmotion.clearCarte(can) } }}])
var action = can.onappend._action(can, button||[html.SUBMIT, html.CANCEL], ui.action, {
_trans: {submit: msg.Option(web.SUBMIT)},
focus: function() {
can.onmotion.focus(can, can.page.Select(can, ui._target, html.INPUT_ARGS)[0])
},
focus: function() { can.onmotion.focus(can, can.page.Select(can, ui._target, html.INPUT_ARGS)[0]) },
Option: function(key, value, hidden) {
var target = can.page.Select(can, ui._target, "input.args[name="+key+"]")[0]
if (!target) { return }
@ -262,8 +260,7 @@ Volcanos("user", {
return target.value
},
cancel: function(event, can, button) {
button == "cancel" && msg._cancel && msg._cancel(event)
callback("afterInputs", button)
button == "cancel" && msg._cancel && msg._cancel(event), callback("afterInputs", button)
can.onengine.signal(can, "onremove", can.request(event, {query: can.page.getquery(can, ui._target)})), can.page.Remove(can, ui._target)
},
submit: function(event, can, button) { var args = [], data = {}, err = false

View File

@ -99,7 +99,9 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
lang(msg, function() { can.onmotion.clear(can), can.onimport._init(can, can.request(), can._output), can.onengine.signal(can, chat.ONLOGIN) })
}
can.run(can.request({}, {_method: http.GET}), [], function(msg) { lang(msg)
if (msg.Option(ice.MSG_PROCESS) == "_open") { return can.user.jumps(msg.Option("_arg")) }
if (msg.Option(ice.MSG_PROCESS) == "_open") {
// return can.user.jumps(msg.Option("_arg"))
}
can.ui.diy = can.base.Obj(msg.Option("diy"))||{}, can.__theme = can.onimport._theme(can, can.page.theme(function(theme) {
can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: can.__theme = can.onimport._theme(can, theme)})), can.onimport.theme(can)
})), can.onimport.theme(can, can.misc.Search(can, "theme")||"")

View File

@ -25,8 +25,12 @@ Volcanos(chat.ONFIGURE, {date: {
return now
} show(now), can._show = function(d) { d? _cb(show(now = new Date(now.getTime()+d*24*3600*1000))): _cb(show(now)) }
})},
onfocus: function(event, can, meta, target, cbs, mod) { if (target._selectonly) { target.blur() } },
onblur: function(event, can, sub, cb, target) { if (target._selectonly) { return } },
onfocus: function(event, can, meta, target, cbs, mod) {
if (target._selectonly) { can.onmotion.delay(can, function() { target.blur() }) }
},
onblur: function(event, can, sub, cb, target) {
if (target._selectonly) { return }
},
onkeydown: function(event, can, meta, cb, target, sub, last) { if (sub && sub.hidden()) { return last(event) } switch (event.key) {
case "n": can.page.SelectInput(can, sub._action, mdb.NEXT, function(target) { target.click(), sub._show() }); break
case "p": can.page.SelectInput(can, sub._action, mdb.PREV, function(target) { target.click(), sub._show() }); break

View File

@ -462,7 +462,7 @@ Volcanos(chat.ONACTION, {
show: function(event, can) { can._msg._profile_hidden = false, can.runAction(can.request(event, {_toast: "渲染中...", args: can.onexport.session(can, PROFILE_ARGS+can.Option(nfs.PATH)+can.Option(nfs.FILE))}), mdb.RENDER, [can.onexport.parse(can), can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) { can.onimport.profile(can, msg) }) },
exec: function(event, can) { can.runAction(can.request(event, {_toast: "执行中...", args: can.onexport.session(can, DISPLAY_ARGS+can.Option(nfs.PATH)+can.Option(nfs.FILE))}), mdb.ENGINE, [can.onexport.parse(can), can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) { can.onimport.display(can, msg) }) },
plug: function(event, can, button) {
function show(index, args) { input.cancel(); can.onimport.toolkit(can, {index: index, args: can.core.Split(args||"")}, function(sub) { sub.select() }) }
function show(index, args) { input.cancel({}, can, "cancel"); can.onimport.toolkit(can, {index: index, args: can.core.Split(args||"")}, function(sub) { sub.select() }) }
var input = can.user.input(can.request(event, {type: button}), can, [{type: html.TEXT, name: ctx.INDEX, run: function(event, cmds, cb) { can.run(event, cmds, function(msg) {
if (cmds[0] == ctx.ACTION && cmds[1] == mdb.INPUTS && cmds[2] == ctx.INDEX) { var _msg = can.request({})
can.core.Item(can.db.toolkit, function(index) { _msg.Push(ctx.INDEX, index) }), _msg.Push(ctx.INDEX, ""), _msg.Copy(msg), cb(_msg)
@ -480,7 +480,7 @@ Volcanos(chat.ONACTION, {
can.core.Item(can.onengine.plugin.meta, function(key, value) { push(ctx.INDEX, "can."+key) }), cb(_msg)
} else { cb(msg) }
}, true)
}}], function(list, input) { input.cancel(); var ls = can.core.Split(list[0], nfs.DF, nfs.DF); switch (ls[0]) {
}}], function(list, input) { input.cancel({}, can, "cancel"); var ls = can.core.Split(list[0], nfs.DF, nfs.DF); switch (ls[0]) {
case web.HTTP: return can.onimport.tabview(can, "", list[0], web.SPACE)
case nfs.LINE: return can.onaction.selectLine(can, parseInt(ls[1]), true)
case web.SPACE: return can.onimport.tabview(can, "", ls[1].indexOf(web.HTTP) == 0? list[0].slice(6): ls[1], web.SPACE)

View File

@ -16,7 +16,8 @@ Volcanos(chat.ONIMPORT, {
_clear: function(can, msg) { can.onmotion.clear(can) },
_inner: function(can, sub, msg) { sub = sub||can, can.onmotion.scrollIntoView(can, can.onappend.table(sub, msg)), can.onmotion.scrollIntoView(can, can.onappend.board(sub, msg)), can.onmotion.story.auto(sub) },
_cookie: function(can, msg) { can.misc.Cookie(can, msg._arg[0], msg._arg[1])
if (msg._arg[2]) { history.go(msg._arg[2])
if (msg._arg[2]) {
history.go(msg._arg[2])
can.onmotion.delay(can, function() { history.back() }, 300)
} else {
can.Update()

View File

@ -284,13 +284,16 @@ Volcanos(chat.ONIMPORT, {
sub._stacks_root.onexport.title(sub._stacks_root, current._name, can.ConfHelp(),
can._msg && can._msg.IsDetail()? can._msg.Append(html.TITLE)||can._msg.Append(mdb.NAME)||(can._msg.Append(UID)||"").slice(0, 6): ""
)
can.user.agent.init(can,
(can._msg && can._msg.IsDetail()? can._msg.Append(html.CONTENT)||can._msg.Append(mdb.INFO)||"": "")||current.city_name+" "+current._street,
can.Conf("icons")? can.misc.Resource(can, can.Conf("icons")): can.user.info.nodetype == "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(sup, value, function(sub) {
can.onimport.myField(can, sub)
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.myOption(sub)
can.page.SelectChild(can, _output, html.FIELDSET, function(target) { can.onmotion.toggle(can, target, target == sub._target) })
@ -314,9 +317,10 @@ Volcanos(chat.ONIMPORT, {
can.page.SelectChild(can, target, html.FIELDSET, function(target) { can.onmotion.toggle(can, target, target == sup._target) })
can.page.SelectChild(can, _output, "*", function(target) { can.onmotion.toggle(can, target, true) })
can.page.style(can, _action, html.DISPLAY, html.NONE), sup._output.innerHTML == "" && sup.Update()
can.user.isMobile && sup.onimport.size(sup, window.innerHeight, window.innerWidth, false)
}
} var plugin = can._stacks_current[0], _action = plugin._action, _output = plugin._output; current = plugin.current||{}
value.type = html.STORY, value.style = html.OUTPUT, value.height = can.ConfHeight()-48
value.type = html.STORY, value.style = html.OUTPUT, value.height = (can.user.isMobile? window.innerHeight: can.ConfHeight())-48
can.onappend.plugin(can, value, function(sub) { can._stacks_current.push(sub)
can.core.List(["_trans", "_style", "_icons", "_trans.input", "_trans.value"], function(key) {
var value = sub.Conf(key); value && can.core.Item(can.Conf(key), function(k, v) { value[k] = value[k]||v })
@ -358,14 +362,18 @@ Volcanos(chat.ONIMPORT, {
},
myTabs: function(can, key, list, target) { var last = can.misc.Cookie(can, key)
can.page.Append(can, can.ui.tabs, can.core.List(list, function(value) {
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, can.ui.tabs, "*", event.target), can.misc.Cookie(can, key, value == "all"? "": value), can.Update()
can.onmotion.select(can, target, "*", event.target), can.misc.Cookie(can, key, value == "all"? "": value), can.Update()
}}
}))
},
myView: function(can, msg, cb, cbs, target) {
can.onimport.itemcards(can, msg, cb, cbs, target)
can.onimport.itemcards(can, msg, cb, cbs, target||can.ui.list)
},
itemcards: function(can, msg, cb, cbs, target) { target = target||can._output
can.onimport.shareTitle(can, msg)
@ -417,6 +425,17 @@ Volcanos(chat.ONIMPORT, {
shareTitle: function(can, msg, title, content) { if (msg.IsDetail()) { var value = msg.TableDetail()
msg.Option("_share_title", (value[title]||value.name||value.uid).slice(0, 6)), msg.Option("_share_content", value[content]||value.info)
} },
titleAction: function(can, value, filter) { var filter = can.core.List(arguments).slice(2)
return can.user.isMobile && {view: html.ACTION, _init: function(target) { can.page.appendAction(can, value, target)
can.page.Select(can, target, html.INPUT_BUTTON, function(target) {
if (filter.length > 0) {
filter.indexOf(target.name) == -1 && can.page.Remove(can, target)
} else {
can.page.tagis(target, "input.notice") || can.page.Remove(can, target)
}
})
}}
},
})
Volcanos(chat.ONLAYOUT, {
_init: function(can, height, width) { can.core.CallFunc([can.onimport, html.LAYOUT], {can: can, height: height, width: width}) },