mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
add some
This commit is contained in:
parent
aec86f5d34
commit
5f3ccc5c65
59
frame.js
59
frame.js
@ -1,7 +1,7 @@
|
||||
Volcanos(chat.ONENGINE, {
|
||||
_init: function(can, meta, list, cb, target) {
|
||||
can.user.isMobile && (can.Inputs = can.page.Append(can, document.body, ["inputs"])._target)
|
||||
can.Option = function() {}, can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) }
|
||||
can.Inputs = can.page.Append(can, document.body, ["inputs"])._target
|
||||
can.core.Next(list, function(item, next) { item.type = chat.PANEL
|
||||
can.onappend._init(can, item, item.list, function(sub) { can[item.name] = sub, sub.db = {}, sub.ui = {}, sub.db._boot = can.misc._time()
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, sub, cmds, cb) }
|
||||
@ -23,11 +23,9 @@ Volcanos(chat.ONENGINE, {
|
||||
if (panel.onengine._plugin(event, can, msg, panel, cmds, cb)) { return }
|
||||
if (panel.onengine._engine(event, can, msg, panel, cmds, cb)) { return }
|
||||
if (panel.onengine._static(event, can, msg, panel, cmds, cb)) { return }
|
||||
|
||||
var toast, _toast = msg.Option(chat._TOAST); if (_toast) { can.onmotion.delay(can, function() {
|
||||
if (sub.__toast || sub._toast) { return } toast = toast||can.user.toastProcess(sub, _toast)
|
||||
}, 30) }
|
||||
|
||||
if (sub.__toast || sub._toast) { return } toast = toast||can.user.toastProcess(sub, can.user.trans(sub, _toast))
|
||||
}, 0) }
|
||||
if (can.base.isUndefined(msg[ice.MSG_DAEMON])) {
|
||||
can.base.isUndefined(sub._daemon) && can.ondaemon._list[0] && (sub._daemon = can.ondaemon._list.push(sub)-1)
|
||||
if (sub._daemon) { msg.Option(ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], sub._daemon)) }
|
||||
@ -37,12 +35,7 @@ Volcanos(chat.ONENGINE, {
|
||||
names = can.base.MergeURL(names, ice.MSG_INDEX, sub.ConfIndex()), can.page.exportValue(sub, msg)
|
||||
can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds, names: names}))
|
||||
can.misc.Run(event, can, {names: names}, cmds, function(msg) {
|
||||
// can.user.isMobile ||
|
||||
toast && can.user.toastSuccess(msg._can, _toast)
|
||||
toast && toast.close && toast.close(), toast = true
|
||||
delete(sub._toast)
|
||||
delete(sub.__toast)
|
||||
|
||||
toast && can.user.toastSuccess(msg._can, _toast), toast && toast.close && toast.close(), toast = true, delete(sub._toast), delete(sub.__toast)
|
||||
can.base.isFunc(cb) && cb(msg), Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(mdb.FS))] = msg
|
||||
})
|
||||
},
|
||||
@ -376,12 +369,16 @@ Volcanos(chat.ONAPPEND, {
|
||||
} msg.Defer(), can.base.isFunc(cb) && cb(msg)
|
||||
can._output.scrollTop = output_old.scrollTop, can._output.scrollLeft = output_old.scrollLeft
|
||||
can.isCmdMode() && can.user.agent.init(can, can.user.info.titles)
|
||||
sub.onmotion.touchAction(sub)
|
||||
can.page.style(can, can._target, "visibility", ""), can.page.style(can, can._output, "visibility", "")
|
||||
if (!can.page.ClassList.has(can, can._target, "_back") && !can.page.ClassList.has(can, can._target, "_goto")) {
|
||||
can.page.ClassList.del(can, can._output, "_prepare"), can.page.style(can, can._output, html.LEFT, 0)
|
||||
can.page.Remove(can, output_old)
|
||||
return
|
||||
}
|
||||
can.page.ClassList.del(can, can._output, "_prepare"), can.page.style(can, can._output, html.LEFT, 0)
|
||||
can.page.Remove(can, output_old)
|
||||
return
|
||||
var width = can.ConfWidth(), begin = width-200; can.page.ClassList.add(can, output_old, "_unload")
|
||||
can.core.Timer({length: (width-begin)/10, interval: 10}, function(timer, interval, index, list) {
|
||||
if (can.page.ClassList.has(can, can._target, "_back")) {
|
||||
@ -1310,11 +1307,17 @@ Volcanos(chat.ONMOTION, {
|
||||
target.addEventListener("touchmove", function(event) {
|
||||
if (Math.abs(event.touches[0].clientY - beginY) > Math.abs(event.touches[0].clientX - beginX)) { return }
|
||||
var left = event.touches[0].clientX - beginX + beginLeft; target._left = left
|
||||
if (beginLeft == 0 && left > 0) { return }
|
||||
if (left < 0 && left > -max) { can.page.style(can, event.currentTarget, {left: left}) }
|
||||
can.onmotion.select(can, target.parentNode.parentNode, html.DIV_ITEM, target.parentNode)
|
||||
can.onkeymap.prevent(event)
|
||||
})
|
||||
target.addEventListener("touchend", function(event) { var left = target._left
|
||||
var msg = can.request(event)
|
||||
if (event.currentTarget.offsetLeft < 0) {
|
||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } msg.Option(ice.MSG_HANDLE, ice.TRUE)
|
||||
|
||||
}
|
||||
if (left < -max/2) {
|
||||
can.page.style(can, event.currentTarget, {left: -max})
|
||||
} else {
|
||||
@ -1325,6 +1328,40 @@ Volcanos(chat.ONMOTION, {
|
||||
})
|
||||
})
|
||||
},
|
||||
touchAction: function(can, target) { target = target||can.ui.list||can.ui.output||can._output
|
||||
var beginY = 0, beginX = 0, spanY = 0, spanX = 0, data
|
||||
function direction() {
|
||||
if (Math.abs(spanX) > Math.abs(spanY)) {
|
||||
if (Math.abs(spanX) < 50) {
|
||||
return "move"
|
||||
} else if (spanX > 0) {
|
||||
return "right"
|
||||
} else {
|
||||
return "left"
|
||||
}
|
||||
} else {
|
||||
if (Math.abs(spanY) < 50) {
|
||||
return "move"
|
||||
} else if (spanY > 0) {
|
||||
return "down"
|
||||
} else {
|
||||
return "up"
|
||||
}
|
||||
}
|
||||
}
|
||||
target.ontouchstart = function(event) {
|
||||
beginY = event.touches[0].clientY, beginX = event.touches[0].clientX, spanY = 0, spanX = 0
|
||||
}
|
||||
target.ontouchmove = function(event) { var msg = can.request(event)
|
||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } msg.Option(ice.MSG_HANDLE, ice.TRUE)
|
||||
spanY = event.touches[0].clientY-beginY, spanX = event.touches[0].clientX-beginX
|
||||
can.onaction.onslidemove(event, can, data = {beginX: beginX, beginY: beginY, spanX: spanX, spanY: spanY}, direction())
|
||||
}
|
||||
target.ontouchend = function(event) { var msg = can.request(event)
|
||||
if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } msg.Option(ice.MSG_HANDLE, ice.TRUE)
|
||||
data && can.onaction["onslide"+direction()](event, can, data, direction(), target)
|
||||
}
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
_init: function(can, target) { target = target||document.body, can.onkeymap._build(can)
|
||||
|
@ -60,10 +60,10 @@ Volcanos(chat.ONACTION, {_trans: {input: {main: "程序", top: "顶域"}},
|
||||
_runs: function(event, can, button, cb) { var meta = can.Conf(), msg = can.request(event); msg.Option(ctx.ACTION, button)
|
||||
can.user.input(event, can, meta.feature[button], function(data, args) { msg.Option(data), can.onaction._run(event, can, button, args, cb) })
|
||||
},
|
||||
save: function(event, can, button) { var p = can.Option(nfs.PATH)+can.Option(nfs.FILE); can.user.toastProcess(can, p, button)
|
||||
can.request(event, {file: can.Option(nfs.FILE), content: can.onexport.content(can)})
|
||||
save: function(event, can, button) {
|
||||
can.request(event, {file: can.Option(nfs.FILE), content: can.onexport.content(can), _toast: button})
|
||||
can.onaction._run(event, can, button, [can.onexport.parse(can), can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||
can.onaction.reload(can, msg), can.user.toastSuccess(can, p, button)
|
||||
can.onaction.reload(can, msg)
|
||||
})
|
||||
},
|
||||
reload: function(can, msg) {
|
||||
@ -90,7 +90,7 @@ Volcanos(chat.ONACTION, {_trans: {input: {main: "程序", top: "顶域"}},
|
||||
script: function(event, can, button) { can.onaction._runs(event, can, button) },
|
||||
create: function(event, can, button) { can.onaction._runs(event, can, button) },
|
||||
module: function(event, can, button) { can.onaction._runs(can.request(event, {title: can.user.trans(can, button, "创建模块")}), can, button) },
|
||||
compile: function(event, can, button) { var msg = can.request(event); msg.Option(chat._TOAST, "")
|
||||
compile: function(event, can, button) { var msg = can.request(event, {_toast: button})
|
||||
can.runAction(event, button, [], function(msg) { can.ui.search && can.ui.search.hidden()
|
||||
if (msg.Length() > 0 || msg.Result()) { return can.onimport.exts(can, "inner/search.js", function(sub) { can.ui.search = sub, sub.select()
|
||||
can.onmotion.delay(can, function() { can.onappend._output(sub, msg, sub.Conf(ctx.DISPLAY)) })
|
||||
|
@ -335,23 +335,34 @@ Volcanos(chat.ONIMPORT, {
|
||||
msg.Table(function(value) { value._goback = function(event) { goback(event, true) }, can.onimport.myStory(can, value) })
|
||||
}
|
||||
can.onimport.myField(can, sub)
|
||||
var margin = 100; can.page.style(can, sub._target, html.LEFT, margin)
|
||||
can.core.Timer({interval: 10, length: 50}, function(timer, interval, index, list) {
|
||||
can.page.style(can, sub._target, html.LEFT, margin-(index+1)*(margin/list.length))
|
||||
}, function() {})
|
||||
sub.onexport.output = function(_sub, msg) { _sub._stacks_current = can._stacks_current, _sub._stacks_root = can._stacks_root
|
||||
sub._select(), msg.Option(ice.MSG_ACTION) && can.onappend._action(sub, msg.Option(ice.MSG_ACTION), _action, null, true)
|
||||
sub.sub.onaction._goback = goback
|
||||
can.page.style(can, sub._output, "left", "0")
|
||||
}, can.page.style(can, sub._output, "left", "100")
|
||||
function goback(event, clear) { if (value._goback) { return value._goback(event) }
|
||||
}
|
||||
function goback(event, clear) {
|
||||
if (can._stacks_current.length == 1) { return }
|
||||
if (value._goback) { return value._goback(event) }
|
||||
sub.request(event, {_toast: can.user.trans(can, "reload", "刷新")})
|
||||
if (clear) { if (sub.Option(UID)) { sub.Option(UID, "") } }
|
||||
if (sub.Option(UID)) { return sub.Option(UID, ""), sub.Update(event) }
|
||||
var last = can._stacks_current.pop(); can.page.Remove(can, last._target)
|
||||
var _last = can._stacks_current.pop()
|
||||
can.core.Timer({interval: 10, length: 50}, function(timer, interval, index, list) {
|
||||
can.page.style(can, _last._target, html.LEFT, (index+1)*(margin/list.length))
|
||||
}, function() { can.page.Remove(can, _last._target)
|
||||
var last = can._stacks_current[can._stacks_current.length-1]; if (last._select) {
|
||||
if (last.ConfIndex().split(".").pop() == "message") { last.Update(event) }
|
||||
can._stacks_current.length == 1 && last._output.innerHTML == "" && last.Update(event)
|
||||
return last._select()
|
||||
}
|
||||
})
|
||||
}
|
||||
function reload(event) {
|
||||
sub.Update(sub.request(event, {_toast: can.user.trans(can, "reload", "刷新")}))
|
||||
}
|
||||
function reload(event) { sub.Update(sub.request(event, {_toast: can.user.trans(can, "reload", "刷新")})) }
|
||||
sub._select = function() { can.onimport.myOption(sub)
|
||||
can.page.SelectChild(can, _output, "*", function(target) { can.onmotion.toggle(can, target, target == sub._target) })
|
||||
var list = [can.page.button(can, can.user.trans(can, "", "返回"), function(event) { goback(event) }), can.page.button(can, can.user.trans(can, "reload", "刷新"), function(event) { reload(event) })]
|
||||
@ -392,7 +403,7 @@ Volcanos(chat.ONIMPORT, {
|
||||
var style = can.Conf("_style."+target.name); style && can.page.ClassList.add(can, target, style)
|
||||
})
|
||||
},
|
||||
itemcard: function(can, value, list, cb) {
|
||||
itemcard: function(can, value, list, cb) { if (!list) { return }
|
||||
can.core.List(list, function(item) { if (!item || !item.list) { return }
|
||||
for (var i = 0; i < item.list.length; i++) { if (item.list[i] && typeof item.list[i] == code.STRING) { item.list[i] = {text: item.list[i]} } }
|
||||
})
|
||||
@ -470,6 +481,29 @@ Volcanos(chat.ONACTION, {
|
||||
if (can.onkeymap.selectCtrlN(event, can, can.ui.tabs||can._action, html.DIV_TABS)) { return }
|
||||
can.onkeymap._parse(event, can)
|
||||
},
|
||||
onslidemove: function(event, can, data, direction) {
|
||||
// can.user.toast(can, [direction, data.spanX, data.spanY].join(","))
|
||||
},
|
||||
onslideright: function(event, can, data, direction) {
|
||||
can.onaction._goback && can.onaction._goback(event)
|
||||
},
|
||||
onslideleft: function(event, can, data, direction) {
|
||||
var button = can.base.Obj(can._msg.Option("_action"), [])[0]
|
||||
button && can.run({}, [ctx.ACTION, button])
|
||||
},
|
||||
onslidedown: function(event, can, data, direction) {
|
||||
var target = can.ui.list||can.ui.output||can._output
|
||||
if (target.scrollTop == 0) {
|
||||
can.Update(can.request(event, {_toast: "reload"}))
|
||||
}
|
||||
},
|
||||
onslideup: function(event, can, data, direction) {
|
||||
return
|
||||
var target = can.ui.list||can._output
|
||||
if (target.offsetHeight+target.scrollTop == target.scrollHeight) {
|
||||
can.Update(can.request(event, {_toast: "reload"}))
|
||||
}
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
escape: function(event, can) {}, enter: function(event, can) {},
|
||||
|
Loading…
x
Reference in New Issue
Block a user