mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt wiki
This commit is contained in:
parent
11c33fca04
commit
9680710c57
22
frame.js
22
frame.js
@ -109,7 +109,7 @@ Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile)
|
||||
close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() },
|
||||
})
|
||||
Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
meta.index && (meta.name = meta.index), meta.name = can.core.Split(meta.name||"", "\t .\n").pop()
|
||||
meta.index && (meta.name = meta.index), meta.name = can.core.Split(meta.name||"", "\t .\n").pop()||can.Conf(mdb.NAME)
|
||||
field = field||can.onappend.field(can, meta.type, meta, target)._target
|
||||
var legend = can.page.SelectOne(can, field, html.LEGEND)
|
||||
var option = can.page.SelectOne(can, field, html.FORM_OPTION)
|
||||
@ -146,7 +146,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
msg.RunAction(event, can.core.Value(sub, chat._OUTPUTS_CURRENT), [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button)
|
||||
}) })
|
||||
}), can.base.isFunc(cb) && cb(sub)
|
||||
sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields)
|
||||
sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER, web.WIKI_WORD) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields)
|
||||
}); return sub
|
||||
},
|
||||
_option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
|
||||
@ -156,10 +156,15 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
list: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
|
||||
back: {name: "goback", cb: function(event) { can.onimport._back(can) }},
|
||||
refresh: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
|
||||
prev: {name: mdb.PREV, cb: function(event) { can.onaction.prev(event, can) }},
|
||||
next: {name: mdb.NEXT, cb: function(event) { can.onaction.next(event, can) }},
|
||||
prev: {name: mdb.PREV, cb: function(event) {
|
||||
var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
|
||||
sub.onaction && sub.onaction.prev? sub.onaction.prev(event, sub): can.onaction.prev(event, can)
|
||||
}},
|
||||
next: {name: mdb.NEXT, cb: function(event) {
|
||||
var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
|
||||
sub.onaction && sub.onaction.next? sub.onaction.next(event, sub): can.onaction.next(event, can)
|
||||
}},
|
||||
play: {name: web.PLAY},
|
||||
// create: {name: mdb.CREATE}, insert: {name: mdb.CREATE},
|
||||
"": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }},
|
||||
}[item.name||""]; if (!icon) { return } item.style = "icons"
|
||||
can.page.Append(can, option, [{view: [[html.ITEM, html.ICON, icon.name, item.name], html.DIV, can.page.unicode[icon.name]], title: item.name, onclick: icon.cb||function(event) {
|
||||
@ -168,7 +173,6 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
}}])
|
||||
})
|
||||
can.core.List(args.slice(can.core.List(meta.inputs, function(item) { if (item.type == mdb.TEXT) { return item } }).length), function(item, index) { meta.inputs.push({type: mdb.TEXT, name: "args"+index, value: item}) })
|
||||
|
||||
function add(item, next) { item = can.base.isString(item)? {type: html.TEXT, name: item}: item, item.type != html.BUTTON && index++
|
||||
return Volcanos(item.name, {_root: can._root, _follow: can.core.Keys(can._follow, item.name),
|
||||
_target: can.onappend.input(can, item, args[index]||opts[item.name], option||can._option), _option: option||can._option, _action: can._action, _output: can._output, _status: can._status,
|
||||
@ -236,8 +240,6 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) {
|
||||
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) })
|
||||
}
|
||||
|
||||
|
||||
can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) {
|
||||
action === false || can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
|
||||
action === false || sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS)), can.user.isMobile || sub.onappend.tools(sub, msg)
|
||||
@ -385,7 +387,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code
|
||||
if (text.indexOf("<fieldset") > 0) {
|
||||
can.page.Select(can, target, html.FIELDSET, function(target) { var data = target.dataset
|
||||
can.onappend.plugin(can, {index: data.index}, function(sub) {
|
||||
data.index && can.onappend.plugin(can, {index: data.index}, function(sub) {
|
||||
can.page.Modify(can, sub._legend, data.index.split(ice.PT).pop())
|
||||
}, can._output, target)
|
||||
})
|
||||
@ -620,7 +622,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
||||
index > 0 && can.page.ClassList.set(can, tr, html.HIDDEN, can.page.Select(can, tr, html.TD, function(td) { if (td.innerText.toLowerCase().indexOf(value.toLowerCase()) > -1) { return td } }) == 0)
|
||||
}) },
|
||||
delayResize: function(can, target, key) { can.onmotion.delay(can, function() { can.page.Select(can, target, key, function(_target) {
|
||||
can.page.style(can, target, html.WIDTH, _target.offsetWidth+10, html.LEFT, (window.innerWidth-_target.offsetWidth)/2)
|
||||
can.page.style(can, target, html.WIDTH, _target.offsetWidth+10, html.LEFT, (window.innerWidth-_target.offsetWidth)/2, html.TOP, (window.innerHeight-_target.offsetHeight)/2)
|
||||
}) }) },
|
||||
delayLong: function(can, cb, interval, key) { can.onmotion.delay(can, cb, interval||300, key) },
|
||||
delayOnce: function(can, cb, interval, list) {
|
||||
|
10
index.css
10
index.css
@ -137,7 +137,7 @@ div.output, fieldset>div.status, div.item.textarea, div.project div.item, div.co
|
||||
fieldset>div.status>legend { margin-left:2px; margin-right:0; height:30px; float:right; clear:none; }
|
||||
fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd) { padding:10px; margin:10px; }
|
||||
fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; }
|
||||
fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; z-index:10; }
|
||||
fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; top:0; z-index:10; }
|
||||
fieldset.plug { position:absolute; bottom:0; right:0; } fieldset.cmd fieldset.plug { position:fixed; bottom:32px; right:0; }
|
||||
fieldset.plug div.output table.content { width:100%; }
|
||||
// fieldset.plugin>div.output>fieldset.story { position:sticky; left:0; }
|
||||
@ -170,12 +170,16 @@ fieldset.float div.item.text:hover>span.icon.delete { visibility:hidden; }
|
||||
fieldset.float>form.option>div.text>input { display:none; }
|
||||
fieldset.float>form.option>div.text>span.value { padding:7px; height:32px; display:block; }
|
||||
/* fieldset.float>form.option>div.item.button { display:none; } */
|
||||
fieldset.story>form.option>div.icon { display:block; }
|
||||
fieldset.float>form.option>div.icon { display:block; }
|
||||
fieldset.full>form.option>div.icon { display:block; }
|
||||
fieldset.full>form.option>div.icon.delete { display:block; }
|
||||
fieldset.cmd>form.option>div.icon { display:block; }
|
||||
fieldset.cmd>form.option>div.item.button.icons { display:none; }
|
||||
fieldset.story>form.option>div.icon { display:block; }
|
||||
fieldset.story>form.option>div.item.button.icons { display:none; }
|
||||
fieldset.float>form.option>div.item.button.icons { display:none; }
|
||||
fieldset.full>form.option>div.item.button.icons { display:none; }
|
||||
fieldset.cmd>form.option>div.item.button.icons { display:none; }
|
||||
|
||||
fieldset.plug>form.option>div.icon { margin-left:5px; }
|
||||
div.carte.select.float { border-radius:0; }
|
||||
div.carte.select.float>div.item { text-align:center; }
|
||||
|
@ -70,6 +70,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { var themeMedia = window.matchMed
|
||||
onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) },
|
||||
onmain: function(can) {
|
||||
can.run({}, [], function(msg) { if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) {
|
||||
debugger
|
||||
return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN))
|
||||
} can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.avatar = msg.Option(aaa.AVATAR), can.user.info.background = msg.Option(aaa.BACKGROUND)
|
||||
can.user.info.language = msg.SearchOrOption(aaa.LANGUAGE)||navigator.language.split("-")[0], msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) })
|
||||
|
@ -114,27 +114,29 @@ Volcanos(chat.ONSYNTAX, {
|
||||
"/dev/null": code.CONSTANT, "/dev/stdout": code.CONSTANT, "/dev/stderr": code.CONSTANT,
|
||||
},
|
||||
}, configure: {link: "sh"},
|
||||
shy: {prefix: {"#": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: {
|
||||
"title": code.KEYWORD, "premenu": code.KEYWORD, "chapter": code.KEYWORD, "section": code.KEYWORD,
|
||||
"refer": code.KEYWORD, "image": code.KEYWORD,
|
||||
"spark": code.KEYWORD, "shell": code.KEYWORD, "field": code.KEYWORD,
|
||||
"chart": code.KEYWORD, "label": code.KEYWORD, "chain": code.KEYWORD, "sequence": code.KEYWORD,
|
||||
|
||||
shy: {prefix: {"#": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: {"source": code.KEYWORD,
|
||||
"title": code.KEYWORD, "navmenu": code.KEYWORD, "premenu": code.KEYWORD, "chapter": code.KEYWORD, "section": code.KEYWORD, "endmenu": code.KEYWORD,
|
||||
"refer": code.KEYWORD, "brief": code.KEYWORD, "spark": code.KEYWORD, "shell": code.KEYWORD, "parse": code.KEYWORD,
|
||||
"order": code.KEYWORD, "table": code.KEYWORD, "chart": code.KEYWORD, "label": code.KEYWORD, "chain": code.KEYWORD, "sequence": code.KEYWORD,
|
||||
"field": code.KEYWORD, "image": code.KEYWORD, "video": code.KEYWORD, "audio": code.KEYWORD,
|
||||
|
||||
"package": code.KEYWORD, "import": code.KEYWORD, "const": code.KEYWORD, "type": code.KEYWORD, "var": code.KEYWORD,
|
||||
"if": code.KEYWORD, "else": code.KEYWORD,
|
||||
"for": code.KEYWORD, "break": code.KEYWORD, "continue": code.KEYWORD,
|
||||
"for": code.KEYWORD, "range": code.KEYWORD, "break": code.KEYWORD, "continue": code.KEYWORD,
|
||||
"switch": code.KEYWORD, "case": code.KEYWORD, "default": code.KEYWORD,
|
||||
"func": code.KEYWORD, "defer": code.KEYWORD, "return": code.KEYWORD,
|
||||
"init": code.FUNCTION, "main": code.FUNCTION, "list": code.FUNCTION, "info": code.FUNCTION,
|
||||
"map": code.DATATYPE, "struct": code.DATATYPE, "interface": code.DATATYPE, "string": code.DATATYPE, "int": code.DATATYPE,
|
||||
"true": code.CONSTANT, "false": code.CONSTANT,
|
||||
"init": code.FUNCTION, "main": code.FUNCTION, "list": code.FUNCTION,
|
||||
"info": code.FUNCTION, "pwd": code.FUNCTION,
|
||||
"map": code.DATATYPE, "struct": code.DATATYPE, "interface": code.DATATYPE,
|
||||
"string": code.DATATYPE, "int": code.DATATYPE,
|
||||
"source": code.FUNCTION,
|
||||
|
||||
"kit": code.PACKAGE, "ice": code.PACKAGE, "m": code.OBJECT, "arg": code.OBJECT,
|
||||
"event": code.OBJECT, "can": code.OBJECT, "msg": code.OBJECT, "target": code.OBJECT,
|
||||
},
|
||||
func: function(can, push, text, indent, opts) { var ls = can.core.Split(text, "\t ")
|
||||
opts.chapter = opts.chapter||0
|
||||
if (ls[0] == "chapter") { opts.chapter++, opts.section = 0, push(opts.chapter+ice.SP+ls[1]) }
|
||||
if (ls[0] == "section") { opts.section++, push(opts.chapter+ice.PT+opts.section+ice.SP+ls[1]) }
|
||||
},
|
||||
},
|
||||
py: {prefix: {"#!": code.COMMENT, "# ": code.COMMENT}, keyword: {"import": code.KEYWORD, "from": code.KEYWORD, "return": code.KEYWORD, "print": code.FUNCTION}},
|
||||
go: {prefix: {"// ": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: {
|
||||
@ -230,6 +232,7 @@ Volcanos(chat.ONSYNTAX, {
|
||||
"table": code.KEYWORD, "thead": code.KEYWORD, "tbody": code.KEYWORD, "tr": code.KEYWORD, "th": code.KEYWORD, "td": code.KEYWORD,
|
||||
"h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD, "a": code.KEYWORD,
|
||||
"label": code.KEYWORD, "span": code.KEYWORD, "img": code.KEYWORD, "svg": code.KEYWORD, "div": code.KEYWORD,
|
||||
"video": code.KEYWORD,
|
||||
"hover": code.DATATYPE, "focus": code.DATATYPE, "not": code.DATATYPE, "type": code.FUNCTION, "name": code.FUNCTION,
|
||||
|
||||
"padding": code.FUNCTION, "padding-left": code.FUNCTION, "padding-top": code.FUNCTION,
|
||||
@ -293,12 +296,14 @@ Volcanos(chat.ONSYNTAX, {
|
||||
"contexts": code.CONSTANT,
|
||||
},
|
||||
},
|
||||
html: {
|
||||
html: {split: {operator: "<=/>"},
|
||||
keyword: {
|
||||
"DOCTYPE": code.KEYWORD, "html": code.KEYWORD, "head": code.KEYWORD, "body": code.KEYWORD,
|
||||
"meta": code.KEYWORD, "title": code.KEYWORD, "link": code.KEYWORD, "script": code.KEYWORD,
|
||||
"src": code.FUNCTION, "href": code.FUNCTION, "rel": code.FUNCTION, "style": code.FUNCTION, "width": code.FUNCTION, "height": code.FUNCTION,
|
||||
"class": code.FUNCTION,
|
||||
|
||||
"fieldset": code.KEYWORD, "legend": code.KEYWORD, "form": code.KEYWORD,
|
||||
"h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD,
|
||||
"p": code.KEYWORD, "a": code.KEYWORD, "br": code.KEYWORD, "hr": code.KEYWORD,
|
||||
"label": code.KEYWORD, "span": code.KEYWORD, "img": code.KEYWORD, "svg": code.KEYWORD, "div": code.KEYWORD,
|
||||
|
@ -4,7 +4,7 @@ fieldset.vimer>div.output input.current { background-color:transparent; color:tr
|
||||
fieldset.vimer>div.output input.current.insert { caret-color:black; }
|
||||
fieldset.vimer>div.output input.current.normal { caret-color:lightgray; }
|
||||
fieldset.vimer>div.output div.complete { background-color:unset; padding-top:0; display:none; overflow:auto; position:absolute; }
|
||||
fieldset.vimer>div.output div.complete.insert:not(.hide) { display:block; }
|
||||
fieldset.vimer>div.output div.complete.insert:not(.hide) { display:block; top:unset; }
|
||||
fieldset.vimer>div.output div.complete div.prefix { color:transparent; white-space:pre; float:left; }
|
||||
fieldset.vimer>div.output div.complete table.content thead { display:none; }
|
||||
fieldset.vimer>div.output div.complete table.content { width:unset; max-width:600px; display:block; }
|
||||
|
@ -1,5 +1,5 @@
|
||||
fieldset.feel div.output img { display:block; float:left; }
|
||||
fieldset.feel div.output video { display:block; float:left; }
|
||||
fieldset.feel.float div.output img { display:block; float:none; margin:auto; }
|
||||
fieldset.feel.float div.output video { display:block; float:none; margin:auto; }
|
||||
fieldset.feel.float div.status { display:block; }
|
||||
fieldset.feel.play.float div.output img { display:block; float:none; margin:auto; }
|
||||
fieldset.feel.play.float div.output video { display:block; float:none; margin:auto; }
|
||||
fieldset.feel.play.float div.status { display:block; }
|
||||
|
@ -1,10 +1,10 @@
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can)
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can), can.dir_root = msg.Option(nfs.DIR_ROOT)
|
||||
can._path = can.request(), can.list = [], msg.Table(function(value) { can.base.endWith(value.path, ice.PS)? can._path.Push(value): can.list.push(value) })
|
||||
can.ui = can.onlayout.profile(can, target), can._path.Table(function(item) { item.name = item.path
|
||||
can.ui = can.onappend.layout(can, can._output, "", [html.PROJECT, html.DISPLAY])
|
||||
can._path.Table(function(item) { item.name = item.path
|
||||
can.onimport.item(can, item, function() { can.Option(nfs.PATH, item.path), can.Update() }, function() {}, can.ui.project)
|
||||
}), can.isCmdMode() || can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can.ui.project)
|
||||
can.base.isFunc(cb) && cb(msg), can.Action(html.HEIGHT, ice.AUTO), can.Action(mdb.LIMIT, 6)
|
||||
can.dir_root = msg.Option(nfs.DIR_ROOT), can.onimport.page(can, can.list, can.begin = parseInt(msg.Option(cli.BEGIN)||"0"))
|
||||
}), cb(msg), can.onimport.page(can, can.list, can.begin = parseInt(msg.Option(cli.BEGIN)||"0"))
|
||||
can.isCmdMode() || can.onmotion.hidden(can, can._action), can.onmotion.delay(can, function() { can.onimport.layout(can) })
|
||||
},
|
||||
_file: function(can, path, index) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020"
|
||||
return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path(web.SHARE_LOCAL, can.dir_root||"", path)
|
||||
@ -18,6 +18,10 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.cl
|
||||
for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path, i) }
|
||||
can.Status({begin: begin, limit: limit, total: list.length})
|
||||
},
|
||||
layout: function(can) {
|
||||
can.page.style(can, can.ui.display, html.WIDTH, can.ConfWidth()-can.ui.project.offsetWidth-1)
|
||||
can.page.style(can, can.ui.project, html.HEIGHT, can.ui.display.offsetHeight)
|
||||
},
|
||||
}, [""])
|
||||
Volcanos(chat.ONFIGURE, {
|
||||
png: function(can, path, index) { return can.onfigure.image(can, path, index) },
|
||||
@ -45,17 +49,15 @@ Volcanos(chat.ONFIGURE, {
|
||||
webm: function(can, path) { return can.onfigure.video(can, path) },
|
||||
})
|
||||
Volcanos(chat.ONACTION, {list: [
|
||||
[html.HEIGHT, 100, 200, 400, 600, 800, ice.AUTO],
|
||||
[mdb.LIMIT, 1, 3, 6, 9, 12, 15, 20, 30, 50],
|
||||
[html.HEIGHT, ice.AUTO, 100, 200, 400, 600, 800, ice.AUTO],
|
||||
[mdb.LIMIT, 6, 1, 3, 6, 9, 12, 15, 20, 30, 50],
|
||||
[html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10],
|
||||
],
|
||||
height: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
limit: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
speed: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
|
||||
|
||||
prev: function(event, can) { if (can.begin > 0) { can.begin -= parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是第一页了") } },
|
||||
next: function(event, can) { if (can.begin + parseInt(can.Action(mdb.LIMIT)) < can.list.length) { can.begin += parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是最后一页了") } },
|
||||
|
||||
record0: function(event, can, name, cb) { can.user.input(event, can, [{name: nfs.FILE, value: name}], function(list) { var height = window.innerHeight
|
||||
navigator.mediaDevices.getDisplayMedia({video: {height: height}}).then(function(stream) {
|
||||
can.core.Next([3, 2, 1], function(item, next) { can.user.toast(can, item + "s 后开始截图"), can.onmotion.delay(can, next, 1000) }, function() { can.user.toast(can, "现在开始截图")
|
||||
@ -78,7 +80,7 @@ Volcanos(chat.ONACTION, {list: [
|
||||
}) },
|
||||
})
|
||||
Volcanos(chat.ONDETAIL, {list: ["关闭", "上一个", "下一个", "设置头像", "设置背景", "复制链接", "下载", "删除"], _init: function(can, index) {
|
||||
can.onappend._init(can, {type: "story feel float"}, [], function(sub) { can.sub = sub
|
||||
can.onappend._init(can, {type: "story feel play float"}, [], function(sub) { can.sub = sub, sub._legend.onclick = can._legend.onclick
|
||||
can.getActionSize(function(msg, left, top, width, height) { sub.onappend._action(can, can.ondetail.list, sub._action, can.ondetail), sub.onappend._status(sub, ["begin", nfs.FILE])
|
||||
sub.page.style(sub, sub._target, {left: left||0, top: top||0}), sub.page.style(sub, sub._output, html.HEIGHT, height-2*html.ACTION_HEIGHT, html.WIDTH, width)
|
||||
can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path); var cb = can.onfigure[can.base.Ext(path)]||can.onfigure[wiki.IMAGE]
|
||||
|
@ -1,31 +1,16 @@
|
||||
fieldset.word form.option input[name=path] { width:127px; }
|
||||
fieldset.word>form.option>div.item>input[name=path] { width:320px; }
|
||||
body.mobile fieldset.word>form.option>div.item>input[name=path] { width:180px; }
|
||||
body.webview fieldset.word>form.option>div.item>input[name=path] { width:160px; }
|
||||
|
||||
fieldset.word>div.navmenu { background-color:inherit; overflow:auto; min-width:120px; clear:both; float:left; }
|
||||
fieldset.word>div.navmenu div.list { margin-left:20px; }
|
||||
fieldset.word>div.navmenu div.item { font-size:1.4em; font-weight:bold; font-family:cursive; padding:4px 20px; }
|
||||
fieldset.word>div.navmenu>div.item { font-size:1.6em; }
|
||||
|
||||
fieldset.word a { word-break:break-all; }
|
||||
fieldset.word br.story { clear:both; }
|
||||
fieldset.word ul.story { text-align:left; }
|
||||
fieldset.word ul.story li.H2 { font-size:1.4em; font-weight:bold; }
|
||||
fieldset.word ul.story li.H3 { font-size:1.2em; }
|
||||
fieldset.word ul.story[data-type=premenu] { cursor:pointer; }
|
||||
fieldset.word ul.story[data-type=premenu] li:hover { background-color:cyan; color:blue; }
|
||||
fieldset.word ul.story[data-type=endmenu] { clear:both; }
|
||||
fieldset.word p.story[data-name=inner] { background-color:#4b6c8a7a; padding:4px 10px; border-left:solid 4px blue; margin:10px 0px; }
|
||||
fieldset.word p.story[data-name=inner]:hover { background-color:#c10c8a; cursor:copy; }
|
||||
fieldset.word table.content { display:block; max-height:400px; }
|
||||
// fieldset.word>div.output>fieldset.story:not(.float):not(.full) { margin:10px; }
|
||||
// fieldset.word>div.output>div.story { margin:10px; }
|
||||
fieldset.word>div.output>p.story { margin:10px; }
|
||||
fieldset.word>div.output { padding:10px; }
|
||||
// fieldset.word>div.output>fieldset.story { margin:10px; background-color:#58a4d37d; }
|
||||
fieldset.word fieldset.story.full { margin:0; }
|
||||
fieldset.word fieldset.story.float { margin:0; }
|
||||
fieldset.word>div.output>p.story { margin:10px; }
|
||||
fieldset.word>div.output>fieldset.story:not(:hover)>form.option { display:none; }
|
||||
fieldset.word>div.output>fieldset.story:not(:hover)>div.action { display:none; }
|
||||
fieldset.word a { word-break:break-all; }
|
||||
fieldset.word img { word-break:break-all; }
|
||||
|
||||
fieldset.word svg.story.auto defs marker { stroke:red; fill:red; }
|
||||
fieldset.word svg.story.auto rect { stroke:yellow; fill:black; }
|
||||
@ -38,29 +23,21 @@ body.white fieldset.word svg.story.auto text { stroke:blue; fill:blue; }
|
||||
body.white fieldset.word svg.story.auto line { stroke:red; stroke-width:1; }
|
||||
body.white fieldset.word svg.story.auto path { stroke:red; stroke-width:1; }
|
||||
|
||||
fieldset.word.float { padding:0; margin:0; position:fixed; left:0; top:0; z-index:10; }
|
||||
/* fieldset.word.float { padding:0; margin:0; width:-webkit-fill-available; position:fixed; left:0; top:0; z-index:10; } */
|
||||
fieldset.word.float>div.action { display:contents; }
|
||||
fieldset.word.float>div.status { clear:none; display:block; }
|
||||
fieldset.word.float>div.output { background-color:#f0f8ff80; text-align:center; overflow:auto; }
|
||||
fieldset.word.float>div.output>div.project { background-color:#4682b46b; padding:10px; position:fixed; right:0; top:32px; z-index:10; }
|
||||
fieldset.word.float div.content div.page { text-align:center; margin-top:32px; display:none; }
|
||||
fieldset.word.float div.content div.page.show { display:block; }
|
||||
fieldset.word.float div.content.grid div.page { background-color:#a4cbecb5; margin:10px; height:200px; width:200px; overflow:auto; display:block; float:left; }
|
||||
fieldset.word.float h1 { text-align:center; }
|
||||
fieldset.word.float h2 { text-align:center; }
|
||||
fieldset.word.float h3 { text-align:center; }
|
||||
|
||||
fieldset.word.play.float>div.action { display:contents; }
|
||||
fieldset.word.play.float>div.status { clear:none; }
|
||||
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 { text-align:center; display:none; }
|
||||
fieldset.word.play.float div.content div.page.show { display:block; }
|
||||
fieldset.word.play.float div.content.grid div.page { background-color:#a4cbecb5; margin:10px; height:200px; width:200px; 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 h3 { text-align:center; }
|
||||
fieldset.word.cmd>legend { display:none; }
|
||||
fieldset.word.cmd>form.option { display:none; }
|
||||
fieldset.word.cmd>div.action { display:none; }
|
||||
fieldset.word.cmd>div.status { display:none; }
|
||||
|
||||
div.story[data-type=spark][data-name=field]>div.menu { float:left; overflow:auto; }
|
||||
div.story[data-type=spark][data-name=field]>div.list { float:left; overflow:auto; }
|
||||
div.story[data-type=spark][data-name=field]>div.menu div.list div.item { padding:0 20px; }
|
||||
|
||||
div.story[data-type=spark][data-name=shell] label {
|
||||
div.story[data-type=spark] label {
|
||||
-webkit-user-select:none; /*webkit浏览器*/
|
||||
-khtml-user-select:none; /*早期浏览器*/
|
||||
-moz-user-select:none; /*火狐*/
|
||||
|
@ -1,85 +1,35 @@
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can)
|
||||
can.page.Modify(can, target, msg.Result())
|
||||
can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{}
|
||||
can.core.CallFunc([can.onimport, meta.type||target.tagName.toLowerCase()], [can, meta, target])
|
||||
can.core.CallFunc([can.onimport, can.onimport[meta.name]? meta.name: meta.type||target.tagName.toLowerCase()], [can, meta, target])
|
||||
meta.style && can.page.style(can, target, can.base.Obj(meta.style))
|
||||
})
|
||||
}), can.onmotion.delay(can, function() { can.onimport.layout(can) })
|
||||
},
|
||||
navmenu: function(can, meta, target) { var nav = can.sup._navmenu
|
||||
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, list = can.core.Split(item.meta.link)
|
||||
if (can.core.Value(can, list[0])) { return can.core.CallFunc([can, list[0]], list.slice(1)) }
|
||||
if (!link || link == can.Option(nfs.PATH)) { return false }
|
||||
var link = item.meta.link; if (!link || link == can.Option(nfs.PATH)) { return false }
|
||||
if (can.base.beginWith(link, web.HTTP)) { return can.user.open(link) }
|
||||
if (can.onmotion.cache(can, function() { can.isCmdMode() && can.user.title(item.meta.name); return can.Option(nfs.PATH, link) })) { return }
|
||||
return can.sup.Update(event, [link])
|
||||
}, nav)
|
||||
|
||||
can.getActionSize(function(msg) {
|
||||
can.page.style(can, nav, html.HEIGHT, can.ConfHeight()+(can.isCmdMode()? msg.Option(html.MARGIN_Y): 0))
|
||||
can.page.style(can, can._output, html.PADDING, 10, html.FLOAT, html.LEFT, html.CLEAR, html.NONE,
|
||||
html.HEIGHT, can.sup._navmenu.offsetHeight, html.MAX_WIDTH, can.ConfWidth(can.ConfWidth()-nav.offsetWidth),
|
||||
)
|
||||
})
|
||||
},
|
||||
premenu: function(can, meta, target) {
|
||||
can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
|
||||
can.page.Append(can, target, [{text: [_target.innerHTML, html.LI, _target.tagName], onclick: function() {
|
||||
_target.scrollIntoView()
|
||||
}}]), _target.onclick = function(event) { can.misc.Event(event, can, function(msg) {
|
||||
target.scrollIntoView()
|
||||
}) }
|
||||
})
|
||||
},
|
||||
premenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
|
||||
can.page.Append(can, target, [{text: [_target.innerHTML, html.DIV, html.ITEM], onclick: function() {
|
||||
_target.scrollIntoView()
|
||||
}}]), _target.onclick = function(event) { target.scrollIntoView() }
|
||||
}) },
|
||||
endmenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
|
||||
can.page.Append(can, target, [{text: [_target.innerHTML, html.DIV, html.ITEM], onclick: function() {
|
||||
_target.scrollIntoView()
|
||||
}}])
|
||||
}) },
|
||||
title: function(can, meta, target) { can.isCmdMode() && target.tagName == "H1" && can.user.title(meta.text) },
|
||||
spark: function(can, meta, target) {
|
||||
if (meta[mdb.NAME] == chat.FIELD) {
|
||||
function deep(text) { var d = 0
|
||||
for (var i = 0; i < text.length; i++) {
|
||||
switch (text[i]) {
|
||||
case ice.TB: d += 4; break
|
||||
case ice.SP: d++; break
|
||||
default: return d
|
||||
}
|
||||
}
|
||||
return d
|
||||
}
|
||||
var list = []; can.core.List(target.innerText.split(ice.NL), function(line) { var _deep = deep(line)
|
||||
while (list.length > 0) { if (_deep <= list[list.length-1]._deep) { list.pop() } else { break } }
|
||||
var ls = can.core.Split(line), item = {_deep: _deep, meta: {index: ls[0], name: ls[1], args: ls.slice(2)}, list: []}
|
||||
if (list.length > 0) { list[list.length-1].list.push(item) } list.push(item)
|
||||
})
|
||||
|
||||
var first; function show(item, index, target, output) {
|
||||
var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name||item.meta.index], onclick: function(event) {
|
||||
can.onmotion.select(can, view.menu, html.DIV_ITEM, event.target)
|
||||
if (ui.list.innerText) { return can.onmotion.toggle(can, ui.list) }
|
||||
if (can.onmotion.cache(can, function() { return index }, output)) { return }
|
||||
|
||||
can.core.List(item.list, function(item) {
|
||||
can.onappend.plugin(can, item.meta, function(sub) {
|
||||
sub.run = function(event, cmds, cb) { can.runActionCommand(event, item.meta.index, cmds, cb) }
|
||||
sub.ConfHeight(item.meta.height = can.ConfHeight()/2), sub.ConfWidth(item.meta.width = can.ConfWidth()-(can.user.isWindows? 181: 165))
|
||||
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth())
|
||||
}, output)
|
||||
})
|
||||
}}, html.LIST])
|
||||
can.core.List(item.list, function(item) { item.list.length > 0 && show(item, can.core.Keys(index, item.meta.index), ui.list, output) })
|
||||
ui.list.innerText == "" && (first = first||ui.item)
|
||||
}
|
||||
|
||||
var view = can.page.Appends(can, target, [
|
||||
{view: html.MENU, style: {height: can.ConfHeight()/2, width: 120}},
|
||||
{view: html.LIST, style: {height: can.ConfHeight()/2, width: can.ConfWidth()-(can.user.isWindows? 181: 185)}},
|
||||
])
|
||||
return show(list[0], list[0]._index, view.menu, view.list), first.click()
|
||||
}
|
||||
|
||||
if (meta[mdb.NAME] == html.INNER) { return can.onmotion.copy(can, target) }
|
||||
can.page.Select(can, target, html.SPAN, function(item) { can.onmotion.copy(can, item) })
|
||||
},
|
||||
field: function(can, meta, target, width) { var item = can.base.Obj(meta.meta)
|
||||
field: function(can, meta, target, width) { var item = can.base.Obj(meta.meta); item.inputs = item.list, item.feature = item.meta
|
||||
can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) {
|
||||
sub.run = function(event, cmds, cb, silent) { var msg = sub.request(event)
|
||||
if (msg.Option(nfs.PATH) == can.Option(nfs.PATH)) { msg.Option(nfs.PATH, "") }
|
||||
@ -94,7 +44,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
||||
})
|
||||
}, can._output, target)
|
||||
},
|
||||
|
||||
table: function(can, meta, target) {
|
||||
can.page.OrderTable(can, target), can.page.ClassList.add(can, target, chat.CONTENT)
|
||||
can.page.Select(can, target, html.TD, function(item) { can.onmotion.copy(can, item) })
|
||||
@ -111,63 +60,46 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
||||
})); can.page.style(can, ui._target, {left: event.clientX, top: event.clientY})
|
||||
}) }
|
||||
},
|
||||
image: function(can, meta, target) { can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight(), window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()) },
|
||||
video: function(can, meta, target) { can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight(), window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()) },
|
||||
image: function(can, meta, target) {
|
||||
can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight()-20, window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()-20)
|
||||
},
|
||||
video: function(can, meta, target) {
|
||||
can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight()-20, window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()-20)
|
||||
},
|
||||
audio: function(can, meta, target) {},
|
||||
|
||||
layout: function(can) {
|
||||
can.isCmdMode() && can.ConfHeight(can.page.height()) && can.page.styleHeight(can, can._output, "")
|
||||
|
||||
layout: function(can) { var height = can.ConfHeight(), width = can.ConfWidth()
|
||||
can.isCmdMode() && can.ConfHeight(can.page.height())
|
||||
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")
|
||||
} else {
|
||||
can.isCmdMode() && can.ConfHeight(can.page.height()) && can.page.styleHeight(can, can._output, "")
|
||||
}
|
||||
can.core.List(can._plugins, function(sub) {
|
||||
sub.ConfHeight(can.base.Min(300, can.ConfHeight()-300)), sub.ConfWidth(can.ConfWidth()-(can.user.isWindows? 40: 20))
|
||||
sub.onimport.size(sub, sub.ConfHeight(), sub.ConfWidth(), true)
|
||||
sub.ConfHeight(can.base.Min(300, height-300)), sub.ConfWidth(width-(can.user.isWindows? 40: 20))
|
||||
sub.onimport.size(sub, can.base.Min(300, height-300), width-(can.user.isWindows? 40: 20), true)
|
||||
})
|
||||
can.page.Select(can, can._output, can.page.Keys(html.IMG, html.VIDEO), function(target) { can.page.style(can, target, html.MAX_HEIGHT, height-20, html.MAX_WIDTH, width-20) })
|
||||
},
|
||||
}, [""])
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
_mode: {
|
||||
normal: {
|
||||
"n": function(event, can) { can.ondetail.next(can.sub) },
|
||||
"j": function(event, can) { can.ondetail.next(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) },
|
||||
},
|
||||
}, _engine: {},
|
||||
})
|
||||
Volcanos(chat.ONACTION, {
|
||||
_trans: {view: "视图"},
|
||||
Volcanos(chat.ONACTION, {_trans: {view: "视图"},
|
||||
onkeydown: function(event, can) { can.keylist = can.onkeymap._parse(event, can, "normal", can.keylist) },
|
||||
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 float"}, [], function(sub) {
|
||||
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"}, [], function(sub) { sub._legend.onclick = can._legend.onclick
|
||||
sub.run = can.run, sub.sup = can, can.sub = sub, can.onappend._action(sub, can.user.isMobile && can.page.height() > can.page.width()? [
|
||||
"大纲", "上一页", "下一页", "结束",
|
||||
]: [
|
||||
["布局", "开讲", "网格", "快闪"], "大纲", "首页", "上一页",
|
||||
["菜单"].concat(can.core.List(list, function(page) { return page[0].innerHTML })),
|
||||
"下一页", "隐藏", "结束",
|
||||
], sub._action, can.ondetail)
|
||||
|
||||
can.onengine.signal(can, "keymap.focus", can.request(event, {cb: function(event) {
|
||||
can.keylist = can.onkeymap._parse(event, can, "normal", can.keylist)
|
||||
}})), can.onkeymap._build(can)
|
||||
|
||||
], sub._action, can.ondetail), can.onkeymap._build(can)
|
||||
sub.page.style(sub, sub._target, "background", can._root._target.style.background)
|
||||
sub.page.style(sub, sub._output, html.HEIGHT, can.page.height()-2*html.ACTION_HEIGHT)
|
||||
sub.page.style(sub, sub._output, html.WIDTH, can.page.width())
|
||||
|
||||
sub.ui = sub.page.Append(sub, sub._output, [{view: chat.PROJECT}, {view: chat.CONTENT}])
|
||||
sub.ui = sub.page.Append(sub, sub._output, [chat.PROJECT, chat.CONTENT])
|
||||
can.core.List(sub.list = list, function(page, index) {
|
||||
can.onimport.item(can, {name: page[0].innerHTML}, function(event) {
|
||||
can.ondetail.show(sub, index)
|
||||
}, function(event) {}, sub.ui.project)
|
||||
|
||||
can.onimport.item(can, {name: page[0].innerHTML}, function(event) { can.ondetail.show(sub, index) }, function(event) {}, sub.ui.project)
|
||||
sub.page.Append(sub, sub.ui.content, [{view: "page"+(index==0? " first": ""), list: can.core.List(page, function(item) { var data = item.dataset||{}
|
||||
switch (data.type) {
|
||||
case wiki.PREMENU: item = item.cloneNode(false); break
|
||||
@ -177,20 +109,10 @@ Volcanos(chat.ONACTION, {
|
||||
return can.core.CallFunc([can.onimport, data.type], [sub, data, item, can.page.width()]), item
|
||||
}), }])
|
||||
}), can.onmotion.hidden(can, sub.ui.project), can.ondetail.show(sub, 0)
|
||||
|
||||
sub.onappend._status(sub, [mdb.PAGE, cli.FROM, cli.COST]), sub.Status(cli.FROM, can.base.Time())
|
||||
var from = new Date(); can.core.Timer({interval: 100}, function() { var now = new Date()
|
||||
sub.Status(cli.COST, can.base.Duration(now-from))
|
||||
})
|
||||
var from = new Date(); can.core.Timer({interval: 100}, function() { var now = new Date(); sub.Status(cli.COST, can.base.Duration(now-from)) })
|
||||
}, can._root._target)
|
||||
},
|
||||
view: function(event, can) {
|
||||
if (can._height) {
|
||||
can.page.styleHeight(can, can._target, can._height), can.page.styleHeight(can, can.sup._navmenu, can._height), delete(can._height)
|
||||
} else { can._height = can.page.styleHeight(can, can._target)
|
||||
can.page.styleHeight(can, can._target, ""), can.page.styleHeight(can, can.sup._navmenu, "")
|
||||
}
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONDETAIL, {list: ["删除"],
|
||||
show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT)
|
||||
@ -205,21 +127,15 @@ Volcanos(chat.ONDETAIL, {list: ["删除"],
|
||||
}
|
||||
})
|
||||
},
|
||||
next: function(sub) {
|
||||
sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) {
|
||||
page.nextSibling? sub.sup.ondetail.show(sub, page.nextSibling): sub.user.toast(sub, cli.END)
|
||||
})
|
||||
},
|
||||
prev: function(sub) {
|
||||
sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) {
|
||||
page.previousSibling? sub.sup.ondetail.show(sub, page.previousSibling): sub.user.toast(sub, cli.END)
|
||||
})
|
||||
},
|
||||
flash: function(sub) {
|
||||
sub.core.Next(sub.page.Select(sub, sub.ui.content, html.DIV_PAGE), function(page, next) {
|
||||
sub.sup.ondetail.show(sub, page), sub.onmotion.delay(sub, function() { next() })
|
||||
})
|
||||
},
|
||||
next: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) {
|
||||
page.nextSibling? sub.sup.ondetail.show(sub, page.nextSibling): sub.user.toast(sub.sup, cli.END)
|
||||
}) },
|
||||
prev: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) {
|
||||
page.previousSibling? sub.sup.ondetail.show(sub, page.previousSibling): sub.user.toast(sub.sup, cli.END)
|
||||
}) },
|
||||
flash: function(sub) { sub.core.Next(sub.page.Select(sub, sub.ui.content, html.DIV_PAGE), function(page, next) {
|
||||
sub.sup.ondetail.show(sub, page), sub.onmotion.delay(sub, next, 500)
|
||||
}) },
|
||||
grid: function(sub) { sub.page.styleClass(sub, sub.ui.content, "content grid") },
|
||||
|
||||
"开讲": function(event, can) { can.sup.ondetail.show(can, 0) },
|
||||
@ -235,3 +151,18 @@ Volcanos(chat.ONDETAIL, {list: ["删除"],
|
||||
"结束": function(event, can) { can.page.Remove(can, can._target) },
|
||||
"删除": function(event, sub) { sub.page.Remove(sub, sub._target) },
|
||||
})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
_mode: {
|
||||
normal: {
|
||||
"n": function(event, can) { can.ondetail.next(can.sub) },
|
||||
"j": function(event, can) { can.ondetail.next(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) },
|
||||
},
|
||||
}, _engine: {},
|
||||
})
|
||||
|
@ -77,6 +77,7 @@ Volcanos(chat.ONACTION, {list: [
|
||||
can.page.style(can, can._output, back.output), can.page.style(can, can._target, back.style), can.base.isFunc(load) && load(back)
|
||||
if (!sub) { return }
|
||||
sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.Mode(can.Mode()), sub.onlayout._init(sub)
|
||||
can._target.click()
|
||||
}
|
||||
},
|
||||
"刷新界面": function(event, can) { var sub = can._outputs[0]; sub.onlayout._init(sub), can.user.toastSuccess(can) },
|
||||
|
3
proto.js
3
proto.js
@ -79,6 +79,7 @@ var web = {CHAT: "chat",
|
||||
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage",
|
||||
SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/",
|
||||
|
||||
HTTP: "http",
|
||||
GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE",
|
||||
Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded",
|
||||
IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm",
|
||||
@ -307,7 +308,7 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
|
||||
can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) {
|
||||
key.indexOf("_") == 0 || key.indexOf("user.") == 0 || set(key, item.Option(key))
|
||||
}): can.core.Item(can.base.isFunc(item)? item(): item, set)
|
||||
}); set(ice.MSG_HEIGHT, can.ConfHeight()), set(ice.MSG_WIDTH, can.ConfWidth()), set(ice.MSG_MODE, can.Mode())
|
||||
}); set(ice.MSG_HEIGHT, can.ConfHeight()+""), set(ice.MSG_WIDTH, can.ConfWidth()+""), set(ice.MSG_MODE, can.Mode())
|
||||
return msg
|
||||
},
|
||||
runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf()
|
||||
|
Loading…
x
Reference in New Issue
Block a user