mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
opt wiki
This commit is contained in:
parent
4646f45cc2
commit
57f26fff6d
13
frame.js
13
frame.js
@ -570,12 +570,15 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
},
|
||||
},
|
||||
scrollHold: function(can, cb, target) { target = target || can._output; var left = target.scrollLeft; cb(), target.scrollLeft = left },
|
||||
scrollIntoView: function(can, target) {
|
||||
var offset = target.offsetTop - target.parentNode.scrollTop
|
||||
can.core.Timer({interval: 10, length: offset/10}, function() {
|
||||
target.parentNode.scrollTop += 10
|
||||
scrollIntoView: function(can, target) { if (can._scroll) { return } can._scroll = true
|
||||
var offset = target.offsetTop - target.parentNode.scrollTop, step = offset < 0? -20: 20
|
||||
if (Math.abs(offset) > 1000) {
|
||||
return target.parentNode.scrollTop = target.offsetTop, delete(can._scroll)
|
||||
}
|
||||
can.core.Timer({interval: 10, length: offset/step}, function() {
|
||||
target.parentNode.scrollTop += step
|
||||
}, function() {
|
||||
target.parentNode.scrollTop = target.offsetTop
|
||||
target.parentNode.scrollTop = target.offsetTop, delete(can._scroll)
|
||||
})
|
||||
},
|
||||
clearFloat: function(can) {
|
||||
|
@ -532,7 +532,8 @@ body.windows fieldset.inner>div.output { overflow:hidden; }
|
||||
body.windows fieldset.inner>div.output>div.layout>div.layout>div.profile { overflow:hidden; }
|
||||
/* scrollbar */
|
||||
div.scrollbar {
|
||||
background-color:#0000ff66;
|
||||
/* background-color:#0000ff66; */
|
||||
background-color:var(--hover-bg-color);
|
||||
font-size:8px !important; line-height:10px;
|
||||
border-radius:10px; position:absolute; visibility:hidden;
|
||||
}
|
||||
|
@ -125,9 +125,10 @@ Volcanos("user", {
|
||||
function remove_sub(carte) { carte._sub && can.page.Remove(can, carte._sub._target), delete(carte._sub) } parent? remove_sub(parent): can.onmotion.clearCarte(can)
|
||||
meta = meta||can.ondetail||can.onaction||{}, list = can.base.getValid(list, meta.list, can.core.Item(meta)), trans = trans||meta._trans; if (!list || list.length == 0) { return }
|
||||
var _events = event._events||event
|
||||
function click(event, button) { can.misc.Event(event, can, function() { can.request(event, {action: button}), can.onkeymap.prevent(event), event._events = _events
|
||||
if (can.base.isFunc(cb) && cb(event, button, meta, carte)) { return }
|
||||
(meta[button]? can.core.CallFunc([meta, button], {event: event, can: can, msg: msg, button: button}): can.Update(event, [ctx.ACTION, button])) || can.onmotion.clearCarte(can)
|
||||
function click(event, button) { can.misc.Event(event, can, function() { can.request(event, {action: button}), can.onkeymap.prevent(event), event._events = _events;
|
||||
(can.base.isFunc(cb)? cb(event, button, meta, carte):
|
||||
meta[button]? can.core.CallFunc([meta, button], {event: event, can: can, msg: msg, button: button}):
|
||||
can.Update(event, [ctx.ACTION, button])) || can.onmotion.clearCarte(can)
|
||||
}) }
|
||||
var isinput = can.page.tagis(event.target, html.INPUT)
|
||||
var ui = can.page.Append(can, document.body, [{view: [[chat.CARTE, meta._style||can.base.replaceAll(can.ConfIndex()||"", nfs.PT, lex.SP)||"", chat.FLOAT]], list: can.core.List(list, function(item, index) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can)
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) {
|
||||
if (can.Option(mdb.TYPE)) { return can.onimport[can.Option(mdb.TYPE)](can, msg, can.Option(mdb.FIELD)) }
|
||||
can.ui = can.onlayout.display(can), can.table = can.onappend.table(can, msg, function(value, key, index, line) { return can.onimport._value(can, value) }, can.ui.content)
|
||||
can.base.isFunc(cb) && cb(msg), can.onappend._status(can, msg.append), can.onaction._compute(event, can)
|
||||
can.ui = can.onappend.layout(can), can.table = can.onappend.table(can, msg, function(value, key, index, line) { return can.onimport._value(can, value) }, can.ui.content)
|
||||
cb && cb(msg), can.onappend._status(can, msg.append), can.onaction._compute(event, can)
|
||||
},
|
||||
_value: function(can, value) {
|
||||
return {text: [value, html.TD], oncontextmenu: function(event) {
|
||||
@ -19,7 +19,7 @@ Volcanos(chat.ONFIGURE, {
|
||||
"最小": function(event, can, res, td, index) { (res[index] === undefined || parseFloat(td.innerText) < parseFloat(res[index])) && (res[index] = parseFloat(td.innerText)) },
|
||||
"平均": function(event, can, res, td, index, cols, rows, nrow) { res[index] = parseFloat(td.innerText) + (res[index]||0); if (nrow == rows.length - 1) { res[index] = res[index] / nrow } },
|
||||
})
|
||||
Volcanos(chat.ONACTION, {list: [ice.SAVE,
|
||||
Volcanos(chat.ONACTION, {list: [nfs.SAVE,
|
||||
[ice.MODE, "全选", "多选", "块选", "反选", "拖动", "编辑"],
|
||||
[ice.EXEC, "求和", "最大", "最小", "平均"],
|
||||
],
|
||||
|
@ -3,7 +3,6 @@ fieldset.word>div.output>p { margin:20px auto; }
|
||||
fieldset.word>div.output div.story.flex { display:flex; justify-content:center; }
|
||||
fieldset.word>div.output div.story.flex>* { padding:20px; }
|
||||
fieldset.word>div.output h2.story[data-type=spark][data-name=title] { text-align:center; }
|
||||
// fieldset.word>div.output h2 { margin-top:40px; }
|
||||
fieldset.word>div.output h3 { margin-top:20px; }
|
||||
fieldset.word>div.output table { width:100%; }
|
||||
fieldset.word>div.output img { max-height:100%; max-width:100%; }
|
||||
@ -29,15 +28,13 @@ div.story[data-type=spark_tabs]>div.story:not(.select) { display:none; }
|
||||
|
||||
fieldset.word.play.float { top:0; }
|
||||
fieldset.word.play.float>div.action { display:contents; }
|
||||
fieldset.word.play.float>div.status { clear:none; }
|
||||
fieldset.word.play.float>div.status { clear:none; display:contents; }
|
||||
fieldset.word.play.float>div.output>div.project { background-color:#4682b46b; padding:10px; position:fixed; right:0; top:32px; z-index:10; }
|
||||
fieldset.word.play.float div.content div.page { display:none; }
|
||||
// fieldset.word.play.float div.content div.page { text-align:center; display:none; }
|
||||
fieldset.word.play.float div.content div.page.show { display:block; }
|
||||
fieldset.word.play.float div.content div.page ul { text-align:left; }
|
||||
// fieldset.word.play.float div.content div.page fieldset { text-align:center; }
|
||||
fieldset.word.play.float div.content.grid div.page { background-color:#a4cbecb5; margin:10px; height:320px; width:30%; overflow:auto; display:block; float:left; }
|
||||
fieldset.word.play.float h1 { text-align:center; }
|
||||
fieldset.word.play.float h2 { text-align:center; }
|
||||
fieldset.word.play.float svg { display:block; margin:0 auto; }
|
||||
fieldset.word.play.float h3 { text-align:center; }
|
||||
fieldset.word.play.float svg { display:block; margin:0 auto; }
|
||||
|
@ -1,14 +1,14 @@
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(html.PADDING, 10)
|
||||
can.onmotion.clear(can), can.page.Modify(can, target, msg.Result()), can.onimport._display(can, target)
|
||||
can.page.Modify(can, target, msg.Results()), can.onimport._content(can, target)
|
||||
can.onmotion.delay(can, function() { can.onappend.scroll(can, can._output) })
|
||||
},
|
||||
_display: function(can, target, cb) { can.onappend.style(can, web.WIKI_WORD)
|
||||
_content: function(can, target, cb) { can.onappend.style(can, web.WIKI_WORD)
|
||||
can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{}; cb && cb(target, meta)
|
||||
can.core.CallFunc([can.onimport, can.onimport[meta.name]? meta.name: meta.type||target.tagName.toLowerCase()], [can, meta, target])
|
||||
var _meta = can.base.Obj(meta.meta); _meta && _meta.style && can.page.style(can, target, can.base.Obj(_meta.style))
|
||||
meta.style && can.page.style(can, target, can.base.Obj(meta.style))
|
||||
})
|
||||
can.page.Select(can, target, "a", function(target) {
|
||||
can.page.Select(can, target, html.A, function(target) {
|
||||
target.innerText = target.innerText || target.href, target.href = target.href || target.innerText, target.target = target || "_blank"
|
||||
})
|
||||
},
|
||||
@ -16,20 +16,20 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(html.PADDI
|
||||
nav = can.onmotion.clear(can, nav||can.page.insertBefore(can, [wiki.NAVMENU], can._output)), can.sup._navmenu = nav
|
||||
can.onimport.list(can, can.base.Obj(meta.data), function(event, item) {
|
||||
var link = item.meta.link; if (!link || link == can.Option(nfs.PATH)) { return false }
|
||||
if (can.base.beginWith(link, web.HTTP, nfs.PS)) { return can.user.opens(link) }
|
||||
if (can.onmotion.cache(can, function() { can.isCmdMode() && can.user.title(item.meta.name); return can.Option(nfs.PATH, link) })) { return }
|
||||
if (can.base.beginWith(link, nfs.PS, web.HTTP)) { return can.user.opens(link) }
|
||||
if (can.onmotion.cache(can, function() { return can.onexport.title(can, item.meta.name), can.Option(nfs.PATH, link) })) { return }
|
||||
return can.sup.Update(event, [link])
|
||||
}, nav)
|
||||
can.onimport.layout(can)
|
||||
},
|
||||
premenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
|
||||
can.onimport.item(can, {name: _target.innerHTML}, function() { _target.scrollIntoView() }, function() {}, target), _target.onclick = function(event) { target.scrollIntoView() }
|
||||
premenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(html.H2, html.H3), function(_target) {
|
||||
can.onimport.item(can, {name: _target.innerHTML}, function() { can.onmotion.scrollIntoView(can, _target) }, function() {}, target)
|
||||
_target.onclick = function(event) { can.onmotion.scrollIntoView(can, target) }
|
||||
}) },
|
||||
endmenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
|
||||
can.onimport.item(can, {name: _target.innerHTML}, function() { _target.scrollIntoView() }, function() {}, target)
|
||||
endmenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(html.H2, html.H3), function(_target) {
|
||||
can.onimport.item(can, {name: _target.innerHTML}, function() { can.onmotion.scrollIntoView(can, _target) }, function() {}, target)
|
||||
}) },
|
||||
title: function(can, meta, target) {
|
||||
can.isCmdMode() && target.tagName == "H1" && can.user.title(meta.text)
|
||||
},
|
||||
title: function(can, meta, target) { can.page.tagis(target, html.H1) && can.onexport && can.onexport.title(can, meta.text) },
|
||||
spark: function(can, meta, target) {
|
||||
if (meta[mdb.NAME] == html.INNER) { return can.onmotion.copy(can, target) }
|
||||
can.page.Select(can, target, "kbd,samp", function(item) { can.onmotion.copy(can, item, function() {
|
||||
@ -46,6 +46,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(html.PADDI
|
||||
field: function(can, meta, target) { var item = can.base.Obj(meta.meta), width = item.width
|
||||
can.onappend.plugin(can, item, function(sub) { can._plugins = (can._plugins||[]).concat([sub])
|
||||
sub.onimport.size(sub, can.base.Min(can.ConfHeight()/2, 300, 600), sub.Conf("_width", width)||(can.ConfWidth()-2*can.Conf(html.PADDING)), 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")
|
||||
}
|
||||
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._output, target)
|
||||
},
|
||||
@ -64,19 +67,19 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(html.PADDI
|
||||
})); can.page.style(can, ui._target, {left: event.clientX, top: event.clientY})
|
||||
}) }
|
||||
},
|
||||
|
||||
layout: function(can, height, width) { can.onmotion.delay(can, function() { padding = can.Conf(html.PADDING)
|
||||
if (can.isCmdMode()) { can.ConfHeight(can.page.height()), can.ConfWidth(can.page.width()) }
|
||||
if (can.sup._navmenu) { can.page.style(can, can.sup._navmenu, html.HEIGHT, can.ConfHeight())
|
||||
can.page.style(can, can._output, html.HEIGHT, height, html.WIDTH, width = can.ConfWidth()-can.sup._navmenu.offsetWidth, "clear", "none", "float", "left")
|
||||
layout: function(can) { can.onmotion.delay(can, function() { padding = can.Conf(html.PADDING)
|
||||
if (can.isCmdMode()) { can.ConfHeight(can.page.height()-html.ACTION_HEIGHT-1), can.ConfWidth(can.page.width()) }
|
||||
if (can.sup._navmenu) {
|
||||
can.ConfWidth(can.ConfWidth()-can.sup._navmenu.offsetWidth)
|
||||
can.page.style(can, can.sup._navmenu, html.HEIGHT, can.ConfHeight())
|
||||
can.page.style(can, can._output, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth(), "clear", "none", "float", "left")
|
||||
} else {
|
||||
can.isCmdMode() && can.page.styleHeight(can, can._output, "")
|
||||
}
|
||||
can.core.List(can._plugins, function(sub) { sub.onimport.size(sub, can.base.Min(can.ConfHeight()/2, 300, 600), sub.Conf("_width")||(can.ConfWidth()-2*padding), true) })
|
||||
}, 100) },
|
||||
}, 0) },
|
||||
}, [""])
|
||||
Volcanos(chat.ONACTION, {_trans: {view: "视图"},
|
||||
onkeydown: function(event, can) { can.keylist = can.onkeymap._parse(event, can, "normal", can.keylist) },
|
||||
Volcanos(chat.ONACTION, {
|
||||
play: function(event, can) { var list = [], current = []
|
||||
can.page.Select(can, can._output, wiki.STORY_ITEM, function(item) { can.page.tagis(item, "h1", "h2", "h3") && list.push(current = []), current.push(item) })
|
||||
can.onappend._init(can, {type: "story word play float", height: can.page.height(), width: can.page.width(), padding: 10}, [], function(sub) { sub._legend.onclick = can._legend.onclick
|
||||
@ -107,7 +110,7 @@ Volcanos(chat.ONACTION, {_trans: {view: "视图"},
|
||||
}, can._root._target)
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONDETAIL, {list: ["删除"],
|
||||
Volcanos(chat.ONDETAIL, {
|
||||
show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT)
|
||||
sub.page.Select(sub, sub.ui.content, html.DIV_PAGE, function(page, index) {
|
||||
if (index == which || page == which) {
|
||||
@ -158,14 +161,13 @@ Volcanos(chat.ONDETAIL, {list: ["删除"],
|
||||
})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
_mode: {
|
||||
normal: {
|
||||
"n": function(event, can) { can.ondetail.next(can.sub) },
|
||||
plugin: {
|
||||
"j": function(event, can) { can.ondetail.next(can.sub) },
|
||||
"k": function(event, can) { can.ondetail.prev(can.sub) },
|
||||
"n": function(event, can) { can.ondetail.next(can.sub) },
|
||||
"p": function(event, can) { can.ondetail.prev(can.sub) },
|
||||
"ArrowRight": function(event, can) { can.ondetail.next(can.sub) },
|
||||
"ArrowLeft": function(event, can) { can.ondetail.prev(can.sub) },
|
||||
"k": function(event, can) { can.ondetail.prev(can.sub) },
|
||||
"p": function(event, can) { can.ondetail.prev(can.sub) },
|
||||
|
||||
"q": function(event, can) { can.ondetail["结束"](event, can.sub) },
|
||||
"h": function(event, can) { can.ondetail["隐藏"](event, can.sub) },
|
||||
},
|
||||
|
@ -41,11 +41,13 @@ Volcanos(chat.ONIMPORT, {
|
||||
can.page.Select(can, input.parentNode, "span.value", function(target) { target.innerText = value })
|
||||
return input.value = value, can.Update(event, can.Input([], true), cb), input
|
||||
})[0] },
|
||||
_size: function(can, height, width, auto, mode) {},
|
||||
size: function(can, height, width, auto, mode) {
|
||||
can.Conf("_auto", auto), can.Mode(mode), can.ConfHeight(height), can.ConfWidth(width), height -= can.onexport.actionHeight(can)+can.onexport.statusHeight(can)
|
||||
auto || auto == undefined? (can.page.style(can, can._output, html.HEIGHT, "", html.WIDTH, "", html.MAX_HEIGHT, height, html.MAX_WIDTH, width), can.page.style(can, can._target, html.HEIGHT, "", html.WIDTH, "")):
|
||||
(can.page.style(can, can._output, html.HEIGHT, height, html.WIDTH, width, html.MAX_HEIGHT, "", html.MAX_WIDTH, ""), can.page.style(can, can._target, html.WIDTH, width))
|
||||
var sub = can.sub; if (!sub) { return auto } sub.Mode(mode), sub.ConfHeight(height), sub.ConfWidth(width)
|
||||
can.onimport._size(can)
|
||||
mode? sub.onlayout[mode](sub, height, width): sub.onlayout._init(sub, height, width); return auto
|
||||
},
|
||||
display_size: function(can, sub) { var border = 1
|
||||
|
@ -17,7 +17,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(ca
|
||||
} can.core.List(tree.list, function(item) { tree.width += can.onimport._width(can, item) }); return tree.width },
|
||||
_color: function(can, tree) { return tree.meta.color || (tree.list == 0? cli.PURPLE: cli.YELLOW) },
|
||||
layout: function(can) {
|
||||
// can.page.ClassList.has(can, can._fields, html.FLOAT) || can.page.style(can, can._output, html.MAX_HEIGHT, "")
|
||||
// can.page.ClassList.has(can, can._fields, html.FLOAT) || can.page.style(can, can._output, html.MAX_HEIGHT, "", "overflow", "hidden")
|
||||
can.ui.svg && can.ui.svg.Val(svg.FONT_SIZE, can.size = parseInt(can.Action(html.SIZE)||24)), can.margin = parseInt(can.Action(html.MARGIN)||10)
|
||||
can._tree && can._tree[can.dir_root] && can.core.CallFunc(can.onaction[can.Action(html.VIEW)||"横向"], [event, can, can.Action(html.VIEW)])
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user