mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 00:38:05 +08:00
add some
This commit is contained in:
parent
d9e09c0dc3
commit
23f1142ae7
11
frame.js
11
frame.js
@ -557,7 +557,10 @@ Volcanos(chat.ONAPPEND, {
|
||||
checkbox: function(can, table, msg) {
|
||||
can.page.Select(can, table, "tr>th:first-child,tr>td:first-child", function(target) {
|
||||
can.page.insertBefore(can, [{type: target.tagName, list: [{type: html.INPUT, data: {type: html.CHECKBOX}, onchange: function(event) {
|
||||
can.page.tagis(target, html.TH) && can.page.Select(can, table, "tr>td:first-child>input[type=checkbox]", function(target) { target.checked = event.target.checked })
|
||||
can.page.tagis(target, html.TH) && can.page.Select(can, table, "tr>td:first-child>input[type=checkbox]", function(target) {
|
||||
if (can.page.ClassList.has(can, can.page.parentNode(can, target, html.TR), html.HIDE)) { return }
|
||||
target.checked = event.target.checked
|
||||
})
|
||||
var list = {}, key = can.page.SelectArgs(can, can._option, "", function(target) { if (target.value == "") { return target.name } })
|
||||
can.page.Select(can, table, "tr>td:first-child>input[type=checkbox]", function(target) { can.page.ClassList.set(can, can.page.parentNode(can, target, html.TR), html.SELECT, target.checked)
|
||||
target.checked && can.core.List(key, function(key) { if (!msg[key]) { return } list[key] = (list[key]||[]).concat([msg[key][can.page.parentNode(can, target, html.TR).dataset.index]]) })
|
||||
@ -931,7 +934,7 @@ Volcanos(chat.ONAPPEND, {
|
||||
msg.append.length == 1 && can.page.ClassList.add(can, sub._target, chat.SIMPLE)
|
||||
can.page.style(can, sub._target, html.MAX_HEIGHT, can.page.height()/2, html.MIN_WIDTH, target.offsetWidth, html.MAX_WIDTH, can.page.width()/2)
|
||||
can.onlayout.figure({target: target}, can, sub._target, false, 200, function(height, width) {
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, height-sub._status.offsetHeight)
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, height-sub._status.offsetHeight-sub._action.offsetHeight)
|
||||
sub.Status(html.HEIGHT, parseInt(height-sub._status.offsetHeight)), sub.Status(html.WIDTH, parseInt(width))
|
||||
})
|
||||
}
|
||||
@ -1072,7 +1075,7 @@ Volcanos(chat.ONMOTION, {
|
||||
},
|
||||
modify: function(can, target, cb, item) { var back = target.innerHTML, _target = target
|
||||
if (back.length > 120 || back.indexOf(lex.NL) > -1) { return can.onmotion.modifys(can, target, cb) }
|
||||
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {width: can.base.Max(target.offsetWidth-20, 400)}, onkeydown: function(event) { switch (event.key) {
|
||||
var ui = can.page.Appends(can, target, [{type: html.INPUT, value: target.innerText, style: {width: can.base.Max(target.offsetWidth-20, can.ConfWidth())}, onkeydown: function(event) { switch (event.key) {
|
||||
case code.ENTER: target.innerHTML = event.target.value, event.target.value == back || cb(event, event.target.value.trim(), back); break
|
||||
case code.ESCAPE: target.innerHTML = back; break
|
||||
default: can.onkeymap.input(event, can)
|
||||
@ -1082,7 +1085,7 @@ Volcanos(chat.ONMOTION, {
|
||||
},
|
||||
modifys: function(can, target, cb, item) { var back = target.innerHTML
|
||||
var ui = can.page.Appends(can, target, [{type: html.TEXTAREA, value: target.innerText, style: {
|
||||
height: can.base.Min(target.offsetHeight-20, 60), width: can.base.Max(target.offsetWidth-20, 400),
|
||||
height: can.base.Min(target.offsetHeight-20, 60), width: can.base.Max(target.offsetWidth-20, can.ConfWidth()),
|
||||
}, onkeydown: function(event) { switch (event.key) {
|
||||
case code.ENTER: if (event.ctrlKey) { target.innerHTML = event.target.value, event.target.value == back || cb(event, event.target.value.trim(), back) } break
|
||||
case code.ESCAPE: target.innerHTML = back; break
|
||||
|
12
index.css
12
index.css
@ -130,8 +130,8 @@ table.content td.option { cursor:pointer; }
|
||||
table.content td { padding:var(--table-padding); }
|
||||
table.content td i { padding:var(--input-padding); }
|
||||
table.content:not(.detail) td input.icons { display:none; }
|
||||
table.content.checkbox th:first-child { text-align:center; padding:var(--table-padding); position:sticky; left:2px; }
|
||||
table.content.checkbox td:first-child { text-align:center; padding:var(--table-padding); position:sticky; left:2px; }
|
||||
table.content.checkbox th:first-child { text-align:center; padding:var(--table-padding); position:sticky; left:2px; width:20px; }
|
||||
table.content.checkbox td:first-child { text-align:center; padding:var(--table-padding); position:sticky; left:2px; width:20px; }
|
||||
table.content.action th:last-child { text-align:center; padding:var(--table-padding); position:sticky; right:2px; }
|
||||
table.content.action td:last-child { text-align:center; padding:var(--table-padding); position:sticky; right:2px; }
|
||||
table.content.action td:last-child i { color:var(--notice-bg-color); }
|
||||
@ -291,9 +291,10 @@ fieldset>div.action>div.item { margin-right:var(--input-margin); }
|
||||
fieldset.input>legend { display:none; }
|
||||
fieldset.input.icons table { width:100%; text-align:center; }
|
||||
fieldset.input.key div.action { display:none; }
|
||||
fieldset.input.key div.action div.item.state { display:none; }
|
||||
fieldset.input.key div.output table.content { font-family:var(--code-font-family); width:100%; }
|
||||
fieldset.input.key div.output table.content td:first-child { cursor:pointer; }
|
||||
fieldset.input.key div.output table.content td:not(:first-child) { background-color:unset !important; color:var(--disable-fg-color); cursor:default; }
|
||||
fieldset.input.key div.output table.content:not(.checkbox) td:not(:first-child) { background-color:unset !important; color:var(--disable-fg-color); cursor:default; }
|
||||
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[src*=".jpg"] { padding:5px; }
|
||||
@ -352,6 +353,7 @@ body>div.carte input[name=filter] { margin:var(--input-margin); width:calc(100%
|
||||
body>div.carte div.item:not(.hide) { white-space:pre; padding:var(--button-padding); display:flex; align-items:center; }
|
||||
body>div.carte div.item i:first-child { margin-right:var(--button-margin); }
|
||||
body>div.carte div.item span.icon.next { line-height:22px; height:22px; float:right; }
|
||||
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; }
|
||||
@ -546,6 +548,8 @@ fieldset.input div.output { background-color:var(--input-bg-color); }
|
||||
fieldset.input div.output>table.content { border-collapse:collapse; }
|
||||
fieldset.input tr:hover { background-color:var(--tr-hover-bg-color); }
|
||||
fieldset.input td:hover { background-color:var(--td-hover-bg-color); }
|
||||
fieldset.input table.checkbox.content td:first-child { box-shadow:none; }
|
||||
fieldset.input table.checkbox.content th.select { border:none; }
|
||||
fieldset.input>span.close { padding:var(--input-padding); position:absolute; top:0; right:0; line-height:16px; }
|
||||
fieldset.input>span.close:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); cursor:pointer; }
|
||||
div.float { background-color:var(--float-bg-color); }
|
||||
@ -593,7 +597,7 @@ fieldset>div.status>legend.select { box-shadow:var(--legend-box-shadow); }
|
||||
fieldset>div.status>legend:hover { box-shadow:var(--legend-box-shadow); }
|
||||
fieldset.Action>div.toast>div.toast:hover { box-shadow:var(--notice-box-shadow); }
|
||||
table.content th { box-shadow:var(--th-box-shadow); }
|
||||
table.content th.select { border:var(--box-notice); }
|
||||
// table.content th.select { border:var(--box-notice); }
|
||||
table.content.checkbox td:first-child { box-shadow:var(--th-box-shadow); }
|
||||
table.content.action td:last-child { box-shadow:var(--th-box-shadow); }
|
||||
table.content.detail tr.action td { box-shadow:var(--th-box-shadow); }
|
||||
|
@ -159,8 +159,7 @@ Volcanos("user", {
|
||||
}) }
|
||||
var isinput = can.page.tagis(event.target, html.INPUT)
|
||||
var ui = can.page.Append(can, document.body, [{view: [[chat.CARTE,
|
||||
can.Conf(ctx.INDEX)||can.ConfIndex(), msg.Option(ctx.ACTION), meta._style||msg.Option("_style"),
|
||||
chat.FLOAT,
|
||||
can.Conf(ctx.INDEX)||can.ConfIndex(), msg.Option(ctx.ACTION), meta._style||msg.Option("_style"), chat.FLOAT,
|
||||
]], list: can.core.List(list, function(item, index) {
|
||||
if (typeof item == code.FUNCTION) { item = item(can); if (!item) { return } }
|
||||
if (item === "") { return {type: html.HR} }
|
||||
@ -175,7 +174,7 @@ Volcanos("user", {
|
||||
var _style = can.page.buttonStyle(can, item)
|
||||
return {
|
||||
view: [[html.ITEM, item, _style]],
|
||||
list: [can.page.icons(can, item), {text: can.user.trans(can, item, trans)}],
|
||||
list: [can.page.icons(can, item), {text: [can.user.trans(can, item, trans), "", "name"]}],
|
||||
onclick: function(event) { click(event, item, index) },
|
||||
onmouseenter: function(event) { remove_sub(carte) },
|
||||
}
|
||||
@ -186,7 +185,7 @@ Volcanos("user", {
|
||||
}, carte, trans); carte._sub = sub }
|
||||
return {view: html.ITEM, list: [
|
||||
can.page.icons(can, item[0]),
|
||||
{text: can.user.trans(can, item[0], trans)},
|
||||
{text: [can.user.trans(can, item[0], trans), "", "name"]},
|
||||
{text: [lex.SP+can.page.unicode.next, "", [html.ICON, "next"]]}
|
||||
], onmouseenter: subs, onclick: subs}
|
||||
}
|
||||
@ -348,7 +347,7 @@ Volcanos("user", {
|
||||
can.onappend.figure(can, {action: "date", _hold: true}, target, function(sub, value) {})
|
||||
can.core.Timer({interval: 100}, function() { can.page.Modify(can, target, can.user.time(can, null, "%H:%M:%S %w")) })
|
||||
}},
|
||||
avatar: {view: [[html.ITEM, "state", aaa.AVATAR]], list: [{img: can.user.info.avatar}], onclick: function(event) { header && header.onaction.avatar(event, header) }},
|
||||
avatar: {view: [[html.ITEM, "state", aaa.AVATAR]], list: [{img: can.misc.Resource(can, can.user.info.avatar)}], onclick: function(event) { header && header.onaction.avatar(event, header) }},
|
||||
usernick: {view: [[html.ITEM, "state", aaa.USERNICK, html.FLEX], "", can.user.info.usernick], onclick: function(event) { header && header.onaction.usernick(event, header) }, _init: function(target) {
|
||||
can = can._fields? can.sup: can
|
||||
can.ui.head = target.parentNode
|
||||
|
@ -185,7 +185,7 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
|
||||
})
|
||||
Volcanos(chat.ONEXPORT, {
|
||||
language: function(can) { return can.user.info.language },
|
||||
avatar: function(can) { return can.user.info.avatar == "void"? "": can.user.info.avatar },
|
||||
avatar: function(can) { return can.misc.Resource(can, can.user.info.avatar == "void"? "": can.user.info.avatar) },
|
||||
background: function(can) { return can.user.info.background == "void"? "": can.user.info.background },
|
||||
theme: function(can) { return can._theme || can.misc.SearchOrConf(can, chat.THEME) || can.__theme || (can.base.isNight()? html.DARK: html.LIGHT) },
|
||||
height: function(can) { return can._target.offsetHeight },
|
||||
|
@ -141,18 +141,23 @@ Volcanos(chat.ONEXPORT, {
|
||||
})
|
||||
Volcanos(chat.ONENGINE, {
|
||||
_engine: function(event, can, msg, panel, cmds, cb) {
|
||||
function right(role) { if (!role || role == aaa.VOID) { return true }
|
||||
return can.core.List(can.core.Split(can.user.info.userrole||aaa.VOID), function(userrole) {
|
||||
if (can.base.isIn(userrole, role, aaa.TECH, aaa.ROOT)) { return true }
|
||||
}).length > 0
|
||||
}
|
||||
if (typeof can.river == code.FUNCTION) { can.river = can.river(can) } var list = can.river
|
||||
cmds.length == 0 && can.core.ItemOrder(list, mdb.ORDER, function(key, value) { if (!value) { return }
|
||||
if (value.debug && can.misc.Search(can, ice.MSG_DEBUG) != ice.TRUE) { return }
|
||||
if (value.nodetype && value.nodetype != can.user.info.nodetype) { return }
|
||||
if (can.base.isIn(can.user.info.userrole||aaa.VOID, value.type||aaa.VOID, aaa.TECH, aaa.ROOT)) {
|
||||
if (right(value.type)) {
|
||||
can.core.Item(value.storm).length > 0 && msg.Push({hash: key, name: can.user.isEnglish(can)? key: value.name, icon: value.icon||"", main: value.main||false})
|
||||
}
|
||||
})
|
||||
if (cmds.length != 1 && cmds[1] != chat.STORM) { return false } var river = list[cmds[0]]; if (!river) { return false }
|
||||
can.core.ItemOrder(river.storm, mdb.ORDER, function(key, value) { if (!value) { return }
|
||||
if (value.nodetype && value.nodetype != can.user.info.nodetype) { return }
|
||||
if (can.base.isIn(can.user.info.userrole||aaa.VOID, value.type||aaa.VOID, aaa.TECH, aaa.ROOT)) {
|
||||
if (right(value.type)) {
|
||||
msg.Push({hash: key, name: can.user.isEnglish(can)? key: value.name||(can.user.trans(can, key)+" "+key), icon: value.icon||icon[key]||"", main: value.main||false})
|
||||
}
|
||||
}), can.base.isFunc(cb) && cb(msg); return true
|
||||
|
@ -7,7 +7,23 @@ Volcanos(chat.ONFIGURE, {key: {
|
||||
can._show(can, msg, cb, target, name)
|
||||
})
|
||||
},
|
||||
_show: function(can, msg, cb, target, name) { msg.Option(ice.TABLE_CHECKBOX, "")
|
||||
_show: function(can, msg, cb, target, name) {
|
||||
// msg.Option(ice.TABLE_CHECKBOX, "")
|
||||
if (msg.Option(ice.TABLE_CHECKBOX) == ice.TRUE) { target._hold = true
|
||||
can.onappend._action(can, [html.CANCEL, html.CONFIRM, html.FILTER], can._action, {
|
||||
cancel: function() {
|
||||
can.onmotion.focus(can, target), can.onmotion.hidden(can, can._target)
|
||||
},
|
||||
confirm: function() { var list = msg.Table()
|
||||
can.base.isFunc(cb) && cb(can, can.page.Select(can, can._output, html.TR, function(target) {
|
||||
if (can.page.ClassList.has(can, target, html.SELECT)) {
|
||||
return list[target.dataset.index][msg.append[0]]
|
||||
}
|
||||
}).join(","), target.value)
|
||||
can.onmotion.focus(can, target), can.onmotion.hidden(can, can._target)
|
||||
},
|
||||
})
|
||||
}
|
||||
if (msg.Length() == 0 || msg.Length() == 1 && msg.Append(name) == target.value && target.value != "") { return can.onmotion.hidden(can) }
|
||||
if (can.base.isIn(msg.append[msg.append.length-1], ctx.ACTION, "cb")) { msg.append = msg.append.slice(0, -1) } var list = {}
|
||||
can.onmotion.clear(can), can.onappend.table(can, msg, function(value, key, index, item) { value = item[key]
|
||||
@ -39,20 +55,22 @@ Volcanos(chat.ONFIGURE, {key: {
|
||||
},
|
||||
onfocus: function(event, can, meta, target, cbs, mod) {
|
||||
can.onengine.signal(can, "onevent", can.request(event));
|
||||
meta._force && mod.onclick(event, can, meta, target, cbs) },
|
||||
meta._force && mod.onclick(event, can, meta, target, cbs)
|
||||
},
|
||||
onclick: function(event, can, meta, target, cbs) {
|
||||
can.onengine.signal(can, "onevent", can.request(event));
|
||||
(target.value == "" || meta._force) && cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
sub.sup = can._fields? can.sup: can
|
||||
meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value)
|
||||
}) },
|
||||
onblur: function(event, can, sub, cb, target) {
|
||||
can.onengine.signal(can, "onevent", can.request(event, {query: can.page.getquery(can, target)+","+target.value}));
|
||||
sub && can.onmotion.delay(can, sub.close, 300) },
|
||||
onblur: function(event, can, sub, cb, target) { if (target._hold) { return }
|
||||
can.onengine.signal(can, "onevent", can.request(event, {query: can.page.getquery(can, target)+","+target.value}))
|
||||
sub && can.onmotion.delay(can, sub.close, 300)
|
||||
},
|
||||
onkeyup: function(event, can, meta, cb, target, sub, last) { if (event.key == code.TAB) { return }
|
||||
if (event.key == code.ENTER) { return meta._enter && (!can.page.tagis(event.target, html.TEXTAREA) || event.ctrlKey) && meta._enter(event, target.value)? sub && sub.close(): last(event) }
|
||||
if (!sub) { return } can.onmotion.toggle(can, sub._target, true)
|
||||
sub.hidden() || can.onkeymap.selectCtrlN(event, can, sub._output, "tr:not(.hidden)>td:first-child", function(td) { return meta.select && (sub.close(), meta.select(target.value = td.innerText)), cb(sub, td.innerText, target.value), td })
|
||||
|| can.onmotion.delayOnce(can, function() { can.onkeymap.selectInputs(event, sub, function() { sub._load(event, sub, cb, target, meta.name) }, target) }, target.value.length < 3? 500: 150)
|
||||
|| can.onmotion.delayOnce(can, function() { can.onkeymap.selectInputs(event, sub, function() { sub._load(event, sub, cb, target, meta.name) }, target) }, target.value.length < 3? 500: 150)
|
||||
},
|
||||
}})
|
||||
|
Loading…
x
Reference in New Issue
Block a user