forked from x/volcanos
opt some
This commit is contained in:
parent
4b6410c645
commit
a41445b91f
36
frame.js
36
frame.js
@ -37,11 +37,11 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
|
||||
if (panel.onengine._plugin(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() { toast = toast||can.user.toastProcess(msg._can, _toast) }) }
|
||||
var toast, _toast = msg.Option(chat._TOAST); if (_toast) { can.onmotion.delay(can, function() { toast = toast||can.user.toastProcess(msg._can, _toast) }, 1000) }
|
||||
msg.option = can.core.List(msg.option, function(item) { return [chat._TOAST, ice.MSG_HANDLE].indexOf(item) > -1 && delete(msg[item])? undefined: item })
|
||||
can.getHeader(chat.TOPIC, function(topic) { msg.Option(chat.TOPIC, topic) })
|
||||
if (can.base.isUndefined(msg._daemon)) { var sub = msg._can
|
||||
can.base.isUndefined(sub._daemon) && can.ondaemon._list[0] && (sub._daemon = can.ondaemon._list.push(can)-1)
|
||||
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)) }
|
||||
} can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds}))
|
||||
|
||||
@ -85,13 +85,13 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
|
||||
})
|
||||
Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile) { return }
|
||||
can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||"", text: can.user.title()}, function(event, msg, cmd, arg) { if (!msg) { return }
|
||||
var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)]; can.base.isFunc(sub.ondaemon[cmd])?
|
||||
can.core.CallFunc(sub.ondaemon[cmd], {can: can, sub: sub, msg: msg, cmd: cmd, arg: arg, cb: function() { msg.Reply() }}):
|
||||
var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)]||can; can.base.isFunc(sub.ondaemon[cmd])?
|
||||
can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: function() { msg.Reply() }}):
|
||||
can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), function() { msg.Reply() })
|
||||
})
|
||||
}, _list: [""],
|
||||
pwd: function(can, msg, arg) { can._wss_name = can.ondaemon._list[0] = arg[0] },
|
||||
toast: function(can, msg, arg) { can.core.CallFunc(can.user.toast, [can].concat(arg)) },
|
||||
toast: function(can, msg, sub, arg) { can.core.CallFunc(can.user.toast, [sub].concat(arg)) },
|
||||
refresh: function(can, msg, sub) { sub.Update() },
|
||||
input: function(can, msg, sub, arg) { can.page.Select(can, sub._target, "input:focus", function(target) { target.value += arg[0] }) },
|
||||
action: function(can, msg, sub, arg) {
|
||||
@ -160,7 +160,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
Option: can.Option, Action: can.Action, Status: can.Status, Input: can.Input,
|
||||
CloneInput: function() { can.onmotion.focus(can, add(item)._target) }, CloneField: can.Clone,
|
||||
}, [item.display, chat.PLUGIN_INPUT_JS], function(sub) { sub.Conf(item)
|
||||
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event)
|
||||
sub.run = function(event, cmds, cb, silent) { var msg = can.request(event, kit.Dict(chat._TOAST, ice.PROCESS))
|
||||
if (msg.RunAction(event, sub, cmds)) { return }
|
||||
if (msg.RunAction(event, can.core.Value(can, chat._OUTPUTS_CURRENT), cmds)) { return }
|
||||
can.Update(event, can.Input(cmds, !silent), cb, silent)
|
||||
@ -169,7 +169,8 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
can.core.ItemCB(sub.onaction, function(key, cb) { sub._target[key] = function(event) { cb(can.request(event)._event, sub) } })
|
||||
can.core.ItemCB(item, function(key, cb) { sub._target[key] = function(event) { cb(can.request(event)._event, sub) } })
|
||||
skip? next(): can.core.CallFunc([sub.onaction, chat._INIT], {can: sub, meta: item, cb: next, target: sub._target});
|
||||
(item.action||can.core.Value(meta, [ctx.FEATURE, ctx.INPUTS])) && can.onappend.figure(sub, item, sub._target, function(_sub, value) {
|
||||
// (item.action||can.core.Value(meta, [ctx.FEATURE, ctx.INPUTS])) && can.onappend.figure(sub, item, sub._target, function(_sub, value) {
|
||||
can.onappend.figure(sub, item, sub._target, function(_sub, value) {
|
||||
sub._target.value = value, can.onmotion.focus(can, sub._target), can.onmotion.delay(can, function() { can.Update() })
|
||||
})
|
||||
})
|
||||
@ -178,7 +179,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
_action: function(can, list, action, meta) { meta = meta||can.onaction||{}, action = action||can._action, can.onmotion.clear(can, action)
|
||||
return can.core.List(can.page.inputs(can, can.base.getValid(can.base.Obj(list), can.core.Value(can, [chat.ONACTION, mdb.LIST]), can.core.Item(meta))||[]), function(item) {
|
||||
!can.base.isUndefined(item) && can.onappend.input(can, item == ""? /* 空白 */ {type: html.SPACE}:
|
||||
can.base.isString(item)? /* 按键 */ {type: html.BUTTON, value: can.user.trans(can, item), onclick: function(event) {
|
||||
can.base.isString(item)? /* 按键 */ {type: html.BUTTON, name: item, value: can.user.trans(can, item), onclick: function(event) {
|
||||
var cb = meta[item]||meta[chat._ENGINE]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
||||
}, onkeydown: function(event) { if (event.key == lang.ENTER) {
|
||||
var cb = meta[item]||meta[chat._ENGINE]; cb? can.core.CallFunc(cb, {event: event, can: can, button: item}): can.run(event, [ctx.ACTION, item].concat(can.sup.Input()))
|
||||
@ -251,7 +252,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
case html.SPACE: return can.page.Append(can, target, [{view: can.base.join([html.ITEM, html.SPACE])}])
|
||||
}
|
||||
var input = can.page.input(can, can.base.Copy({}, item), value)
|
||||
if (item.type == html.SELECT && item.value) { input._init = function(target) { target.value = item.value } }
|
||||
if (item.type == html.SELECT && item.value) {
|
||||
input._init = function(target) { target.value = item.value }
|
||||
}
|
||||
if (item.type == html.TEXT) { input.onkeydown = item.onkeydown||function(event) {
|
||||
can.onkeymap.input(event, can), can.onkeymap.selectOutput(event, can), event.key == lang.ENTER && can.onkeymap.prevent(event)
|
||||
} }
|
||||
@ -330,19 +333,22 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
can.onappend._plugin(can, value, meta, cbs, target, field)
|
||||
}) }); return res
|
||||
},
|
||||
figure: function(can, meta, target, cb) { if (meta.action == ice.AUTO || can.base.In(meta.type, html.BUTTON, html.SELECT)) { return }
|
||||
figure: function(can, meta, target, cb) { if (meta.action == ice.AUTO || can.base.isIn(meta.type, html.BUTTON)) { return }
|
||||
var input = meta.action||mdb.KEY; can.require([chat.PLUGIN_INPUT+input+nfs._JS], function(can) {
|
||||
function _cb(sub, value, old) { if (value == old) { return } can.base.isFunc(cb)? cb(sub, value, old): target.value = value||"", can.onmotion.focus(can, target) }
|
||||
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]; target[key] = function(event) {
|
||||
can.core.CallFunc(on, {event: event, can: can, meta: meta, target: target, last: last||function(){}, sub: target._can, cb: _cb, cbs: function(cb) {
|
||||
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]||function(){}; target[key] = function(event) {
|
||||
target._can && can.onlayout.figure(event, can, target._can._target)
|
||||
can.core.CallFunc(on, {event: event, can: can, meta: meta, cb: _cb, target: target, sub: target._can, last: last, cbs: function(cb) {
|
||||
if (target._can) { return can.onmotion.toggle(can, target._can._target, true), can.base.isFunc(cb) && cb(target._can, _cb) }
|
||||
can.onappend._init(can, {type: html.INPUT, name: input, pos: chat.FLOAT, mode: meta.mode}, [chat.PLUGIN_INPUT+input+nfs._JS], function(sub) { sub.Conf(meta)
|
||||
sub.run = function(event, cmds, cb) { var msg = sub.request(event)
|
||||
if (meta.range) { for (var i = meta.range[0]; i < meta.range[1]; i += meta.range[2]||1) { msg.Push(mdb.VALUE, i) } cb(msg); return }
|
||||
(meta.run||can.run)(sub.request(event, can.Option()), cmds, cb, true)
|
||||
}, target._can = sub, sub.close = function() { can.page.Remove(can, sub._target), delete(target._can) }
|
||||
}, target._can = sub, can.base.Copy(sub, can.onfigure[input], true)
|
||||
sub.close = function() { can.page.Remove(can, sub._target), delete(target._can) }
|
||||
sub.hidden = function() { return sub._target.style.display == html.NONE }
|
||||
can.onlayout.figure({target: target}, can, sub._target), can.page.style(sub, sub._target, meta.style)
|
||||
can.page.style(can, sub._outupt, html.MAX_HEIGHT, can.page.height()-sub._target.offsetTop-2*html.ACTION_HEIGHT)
|
||||
can.page.style(can, sub._output, html.MAX_HEIGHT, can.base.Max(can.page.height()-sub._target.offsetTop-2*html.ACTION_HEIGHT, can.page.height()/2))
|
||||
can.base.isFunc(cb) && cb(sub, _cb), can.base.isFunc(meta._init) && meta._init(sub, sub._target)
|
||||
}, document.body)
|
||||
}})
|
||||
@ -509,7 +515,6 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) {
|
||||
document.body.onclick = function(event) {
|
||||
if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return }
|
||||
if (can.page.tagis(event.target, html.A) && can.user.isWebview) { return event.shiftKey? window.outopen(event.target.href): can.user.open(event.target.href) }
|
||||
// can.page.Select(can, document.body, can.page.Keys("div.carte.float", "fieldset.input.key.float"), function(target) { can.page.Remove(can, target) })
|
||||
can.page.Select(can, document.body, can.page.Keys("div.carte.float"), function(target) { can.page.Remove(can, target) })
|
||||
}
|
||||
can.onkeymap._build(can), document.body.onkeydown = function(event) {
|
||||
@ -636,4 +641,3 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) {
|
||||
},
|
||||
prevent: function(event) { event && (event.stopPropagation(), event.preventDefault()); return true },
|
||||
})
|
||||
|
||||
|
12
lib/base.js
12
lib/base.js
@ -8,12 +8,12 @@ Volcanos("base", {
|
||||
if (val.length > 0) { return val } for (var k in val) { return val } return def
|
||||
} catch (e) { return val&&val.split&&val.split(ice.FS) || def }
|
||||
},
|
||||
Copy: function(to, from, skip) { if (!from) { return to }
|
||||
if (arguments.length == 2 || typeof skip == lang.BOOLEAN) {
|
||||
Copy: function(to, from, hold) { if (!from) { return to }
|
||||
if (arguments.length == 2 || typeof hold == lang.BOOLEAN) {
|
||||
for (var k in from) {
|
||||
if (skip && to[k] != undefined) { continue }
|
||||
if (from[k] === "") { delete(to[k]); continue }
|
||||
to[k] = from[k]
|
||||
if (k == undefined) { continue }
|
||||
if (hold && to.hasOwnProperty(k) && to[k] != undefined) { continue }
|
||||
if (from[k] === "") { delete(to[k]) } else { to[k] = from[k] }
|
||||
} return to
|
||||
} for (var i = 2; i < arguments.length; i++) { var k = arguments[i]; to[k] = from[k] } return to
|
||||
},
|
||||
@ -95,7 +95,7 @@ Volcanos("base", {
|
||||
} return res
|
||||
},
|
||||
AddUniq: function(list, value) { list = list||[]; return list.indexOf(value) == -1 && list.push(value), list },
|
||||
In: function(item) { var args = arguments; for (var i = 1; i < args; i++) {
|
||||
isIn: function(item) { var args = arguments; for (var i = 1; i < args; i++) {
|
||||
if (typeof args[i] == lang.OBJECT && args[i].length > 0 && args[i].indexOf(item) > -1) { return true }
|
||||
if (item == args[i]) { return true }
|
||||
} },
|
||||
|
@ -84,7 +84,7 @@ Volcanos("user", {info: {}, agent: {
|
||||
can.user.copy(event, can, meta.title)
|
||||
}}, {view: "duration", title: "点击关闭", onclick: function() { action.close() }},
|
||||
can.base.isObject(meta.content)? meta.content: {text: [meta.content||"", html.DIV, nfs.CONTENT]},
|
||||
html.ACTION, can.base.isUndefined(meta.progress) && {view: "progress", style: {width: width}, list: [
|
||||
html.ACTION, !can.base.isUndefined(meta.progress) && {view: "progress", style: {width: width}, list: [
|
||||
{view: "current", style: {width: (meta.progress||0)/100*width}},
|
||||
]},
|
||||
] }]); can.onengine.signal(can, chat.ONTOAST, can.request({}, {time: can.misc._time(), title: meta.title, content: meta.content, fileline: can.misc.FileLine(-3)}))
|
||||
@ -95,7 +95,8 @@ Volcanos("user", {info: {}, agent: {
|
||||
timer: can.core.Timer({interval: 100, length: (parseInt(meta.duration||1000))/100}, function(event, interval, index) {
|
||||
if (index > 30) { ui.duration.innerHTML = parseInt(index/10)+ice.PT+(index%10)+"s..." }
|
||||
}, function() { action.close() }), _target: ui._target, ui: ui,
|
||||
}); can.onmotion.story.auto(can, ui._target); return action
|
||||
}); can.onmotion.story.auto(can, ui._target)
|
||||
return can._toast && (can._toast.close(), delete(can._toast)), can._toast = action
|
||||
},
|
||||
share: function(can, msg, cmd) {
|
||||
can.run(msg, cmd||[ctx.ACTION, chat.SHARE], function(msg) {
|
||||
|
@ -176,7 +176,7 @@ div.output.card div.item.stop { color:gray; }
|
||||
|
||||
/* white */
|
||||
body.white { background-color:rgba(5,34,56,0.75); color:white; }
|
||||
body.white select { background-color:yellowgreen; color:white; }
|
||||
body.white select { background-color:yellowgreen; color:white; opacity:1; }
|
||||
body.white textarea { background-color:white; }
|
||||
body.white input[type=password] { background-color:white; }
|
||||
body.white input[type=text] { background-color:white; }
|
||||
|
@ -1,12 +1,12 @@
|
||||
Volcanos(chat.ONACTION, {
|
||||
_init: function(can, meta, target) { meta.type == html.BUTTON && meta.action == ice.AUTO && !can.sup._delay_init && target.click() },
|
||||
run: function(event, can) { can.run(can.request(event, {_toast: ice.PROCESS})) },
|
||||
list: function(event, can) { can.sup.Conf("mode") != chat.SIMPLE && can.run(event) },
|
||||
run: function(event, can) { can.run(event) },
|
||||
list: function(event, can) { can.sup.isSimpleMode() || can.run(event) },
|
||||
back: function(event, can) { can.sup.onimport._back(can.sup) },
|
||||
refresh: function(event, can) { can.run(event) },
|
||||
|
||||
onclick: function(event, can) { can.Conf(mdb.TYPE) == html.BUTTON && can.run(can.request(event, {_toast: ice.PROCESS}), [ctx.ACTION, can.Conf(mdb.NAME)].concat(can.sup.Input())) },
|
||||
onchange: function(event, can) { can.Conf(mdb.TYPE) == html.SELECT && can.run(can.request(event, {_toast: ice.PROCESS})) },
|
||||
onclick: function(event, can) { can.Conf(mdb.TYPE) == html.BUTTON && can.run(event, [ctx.ACTION, can.Conf(mdb.NAME)].concat(can.sup.Input())) },
|
||||
onchange: function(event, can) { can.Conf(mdb.TYPE) == html.SELECT && can.run(event) },
|
||||
onkeydown: function(event, can) { can.onkeymap.input(event, can, event.target)
|
||||
if (can.Conf(mdb.TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
|
||||
if (event.key == lang.ENTER) { return can.run(event), can.onmotion.focus(can, event.target), can.onkeymap.prevent(event) }
|
||||
|
@ -1,60 +1,61 @@
|
||||
Volcanos(chat.ONFIGURE, {help: "控件详情", date: {onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) {
|
||||
function set(now) { cbs(can, can.user.time(can, now), target.value) }
|
||||
Volcanos(chat.ONFIGURE, {date: {
|
||||
onclick: function(event, can, meta, target, cbs) { cbs(function(can, cb) {
|
||||
function set(now) { cb(can, can.user.time(can, now), target.value) }
|
||||
|
||||
// 添加控件
|
||||
var now = target.value? new Date(target.value): new Date()
|
||||
can._trans = kit.Dict("today", "今天", mdb.NEXT, "下一月", mdb.PREV, "上一月")
|
||||
can.onmotion.clear(can, can._action), can.onappend._action(can, [cli.CLOSE,
|
||||
["hour"].concat(can.core.List(24)), ["minute"].concat(can.core.List(0, 60, 5)), ["second"].concat(can.core.List(0, 60, 5)),
|
||||
"today", "", mdb.PREV, ["year"].concat(can.core.List(now.getFullYear() - 10, now.getFullYear() + 10)),
|
||||
["month"].concat(can.core.List(1, 13)), mdb.NEXT,
|
||||
], can._action, {close: function(event) { can.close() },
|
||||
"hour": function(event, can, key, value) { now.setHours(parseInt(value)||0), show(now) },
|
||||
"minute": function(event, can, key, value) { now.setMinutes(parseInt(value)||0), show(now) },
|
||||
"second": function(event, can, key, value) { now.setSeconds(parseInt(value)||0), show(now) },
|
||||
"today": function(event) { now = new Date(), set(show(now)) },
|
||||
var now = target.value? new Date(target.value): new Date()
|
||||
can.user.trans(can, kit.Dict("today", "今天", mdb.NEXT, "下一月", mdb.PREV, "上一月"))
|
||||
can.onmotion.clear(can, can._action), can.onappend._action(can, [cli.CLOSE,
|
||||
["hour"].concat(can.core.List(24)), ["minute"].concat(can.core.List(0, 60, 5)), ["second"].concat(can.core.List(0, 60, 5)),
|
||||
"today", "", mdb.PREV, ["year"].concat(can.core.List(now.getFullYear() - 10, now.getFullYear() + 10)),
|
||||
["month"].concat(can.core.List(1, 13)), mdb.NEXT,
|
||||
], can._action, {close: function(event) { can.close() },
|
||||
"hour": function(event, can, key, value) { now.setHours(parseInt(value)||0), show(now) },
|
||||
"minute": function(event, can, key, value) { now.setMinutes(parseInt(value)||0), show(now) },
|
||||
"second": function(event, can, key, value) { now.setSeconds(parseInt(value)||0), show(now) },
|
||||
"today": function(event) { now = new Date(), set(show(now)) },
|
||||
|
||||
"prev": function(event) { now.setMonth(now.getMonth()-1), show(now) },
|
||||
"year": function(event, can, key, value) { now.setFullYear(parseInt(value)), show(now) },
|
||||
"month": function(event, can, key, value) { now.setMonth(parseInt(value)-1), show(now) },
|
||||
"next": function(event) { now.setMonth(now.getMonth()+1), show(now) },
|
||||
"prev": function(event) { now.setMonth(now.getMonth()-1), set(show(now)) },
|
||||
"year": function(event, can, key, value) { now.setFullYear(parseInt(value)), show(now) },
|
||||
"month": function(event, can, key, value) { now.setMonth(parseInt(value)-1), show(now) },
|
||||
"next": function(event) { now.setMonth(now.getMonth()+1), set(show(now)) },
|
||||
|
||||
"随机": function(event) { now.setDate((Math.random() * 100 - 50) + now.getDate()), show(now) },
|
||||
"前一年": function(event) { now.setFullYear(now.getFullYear()-1), show(now) },
|
||||
"后一年": function(event) { now.setFullYear(now.getFullYear()+1), show(now) },
|
||||
})
|
||||
"随机": function(event) { now.setDate((Math.random() * 100 - 50) + now.getDate()), show(now) },
|
||||
"前一年": function(event) { now.setFullYear(now.getFullYear()-1), show(now) },
|
||||
"后一年": function(event) { now.setFullYear(now.getFullYear()+1), show(now) },
|
||||
})
|
||||
|
||||
can.onmotion.clear(can, can._status)
|
||||
can._table = can.page.Appends(can, can._output, [{view: [chat.CONTENT, html.TABLE]}]).first
|
||||
var today = new Date(); function show(now) {
|
||||
// 设置控件
|
||||
can.Action("year", now.getFullYear())
|
||||
can.Action("month", now.getMonth()+1)
|
||||
can.Action("hour", now.getHours())
|
||||
can.Action("minute", parseInt(now.getMinutes()/5)*5)
|
||||
can.Action("second", parseInt(now.getSeconds()/5)*5)
|
||||
can._table = can.page.Appends(can, can._output, [{view: [chat.CONTENT, html.TABLE]}]).first
|
||||
var today = new Date(); function show(now) {
|
||||
can.Action("year", now.getFullYear())
|
||||
can.Action("month", now.getMonth()+1)
|
||||
can.Action("hour", now.getHours())
|
||||
can.Action("minute", parseInt(now.getMinutes()/5)*5)
|
||||
can.Action("second", parseInt(now.getSeconds()/5)*5)
|
||||
|
||||
// 设置组件
|
||||
can.page.Appends(can, can._table, [{th: ["日", "一", "二", "三", "四", "五", "六"]}])
|
||||
var tr; function add(day, type) { if (day.getDay() == 0) { tr = can.page.Append(can, can._table, [{type: html.TR}]).last }
|
||||
can.page.Append(can, tr, [{text: [day.getDate(), html.TD, can.base.Time(today, "%y-%m-%d") == can.base.Time(day, "%y-%m-%d")? html.SELECT: type],
|
||||
dataset: {date: day.getTime()}, onclick: function(event) {
|
||||
set(now = new Date(parseInt(event.target.dataset.date)))
|
||||
},
|
||||
}])
|
||||
}
|
||||
can.page.Appends(can, can._table, [{th: ["日", "一", "二", "三", "四", "五", "六"]}])
|
||||
var tr; function add(day, type) { if (day.getDay() == 0) { tr = can.page.Append(can, can._table, [{type: html.TR}]).last }
|
||||
can.page.Append(can, tr, [{text: [day.getDate(), html.TD, can.base.Time(today, "%y-%m-%d") == can.base.Time(day, "%y-%m-%d")? html.SELECT: type],
|
||||
dataset: {date: day.getTime()}, onclick: function(event) { set(now = new Date(parseInt(event.target.dataset.date))) },
|
||||
}])
|
||||
}
|
||||
|
||||
// 时间区间
|
||||
var one = new Date(now); one.setDate(1)
|
||||
var end = new Date(now); end.setMonth(now.getMonth()+1), end.setDate(1)
|
||||
var head = new Date(one); head.setDate(one.getDate()-one.getDay())
|
||||
var tail = new Date(end); tail.setDate(end.getDate()+7-end.getDay())
|
||||
var one = new Date(now); one.setDate(1)
|
||||
var end = new Date(now); end.setMonth(now.getMonth()+1), end.setDate(1)
|
||||
var head = new Date(one); head.setDate(one.getDate()-one.getDay())
|
||||
var tail = new Date(end); tail.setDate(end.getDate()+7-end.getDay())
|
||||
|
||||
// 时间序列
|
||||
for (var day = new Date(head); day < one; day.setDate(day.getDate()+1)) { add(day, mdb.PREV) }
|
||||
for (var day = new Date(one); day < end; day.setDate(day.getDate()+1)) { add(day, mdb.MAIN) }
|
||||
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) { add(day, mdb.NEXT) }
|
||||
|
||||
return now
|
||||
} show(now), can.onlayout.figure(event, can)
|
||||
})}} })
|
||||
for (var day = new Date(head); day < one; day.setDate(day.getDate()+1)) { add(day, mdb.PREV) }
|
||||
for (var day = new Date(one); day < end; day.setDate(day.getDate()+1)) { add(day, mdb.MAIN) }
|
||||
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) { add(day, mdb.NEXT) }
|
||||
return now
|
||||
} show(now)
|
||||
can._show = function(_now) { set(now = show(_now)) }
|
||||
can._now = function() { return now }
|
||||
})},
|
||||
onkeydown: function(event, can, meta, cb, target, sub, last) { if (sub.hidden()) { return } switch (event.key) {
|
||||
case "n": can.page.Select(can, sub._action, "input[name=next]", function(target) { target.click() }); break
|
||||
case "p": can.page.Select(can, sub._action, "input[name=prev]", function(target) { target.click() }); break
|
||||
case "j": sub._show(can.base.TimeAdd(sub._now(), 1)); break
|
||||
case "k": sub._show(can.base.TimeAdd(sub._now(), -1)); break
|
||||
} },
|
||||
} })
|
||||
|
@ -1,24 +1,34 @@
|
||||
Volcanos(chat.ONFIGURE, {key: {
|
||||
_show: function(can, msg, cb, target, name) { if (!can.onmotion.toggle(can, can._target, msg.Length() != 0)) { return }
|
||||
_show: function(can, msg, cb, target, name) { if (msg.Length() == 0 || msg.Length() == 1 && msg.Append(name) == target.value) { return can.onmotion.hidden(can) }
|
||||
can.onmotion.clear(can), can.onappend.table(can, msg, function(value, key, index, line) { value = line[key]
|
||||
return {text: [value, html.TD], style: msg.append && msg.append.length == 1? kit.Dict(html.MIN_WIDTH, target.offsetWidth-16): {}, onclick: function(event) {
|
||||
cb(can, value, target.value), msg.Option(ice.MSG_PROCESS) == ice.PROCESS_AGAIN && can.onmotion.delay(can, function() { can.onfigure.key._load(event, can, cb, target, name, value) })
|
||||
cb(can, value, target.value), msg.Option(ice.MSG_PROCESS) == ice.PROCESS_AGAIN && can.onmotion.delay(can, function() { can._load(event, can, cb, target, name, value) })
|
||||
can._delay_hidden = true
|
||||
}}
|
||||
}), can.onappend._status(can, [mdb.TOTAL, mdb.INDEX]), can.Status(mdb.TOTAL, msg.Length())
|
||||
},
|
||||
_load: function(event, can, cb, target, name, value) { can.runAction(event, mdb.INPUTS, [name, value||target.value], function(msg) {
|
||||
_load: function(event, can, cb, target, name, value) { can.runAction(event, mdb.INPUTS, [name, value||""], function(msg) {
|
||||
name == ctx.INDEX && can.core.Item(can.onengine.plugin.meta, function(key) { msg.Push(ctx.INDEX, can.core.Keys(ice.CAN, key)) })
|
||||
can.onfigure.key._show(can, msg, cb, target, name)
|
||||
can._show(can, msg, cb, target, name)
|
||||
}) },
|
||||
onfocus: function(event, can, meta, target, cbs) { can.onmotion.delay(can, function() { cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
meta.msg && meta.msg.Length() > 0? can.onfigure.key._show(sub, meta.msg, cb, target, meta.name): can.onfigure.key._load(event, sub, cb, target, meta.name)
|
||||
}) }, 30) },
|
||||
onblur: function(event, can, sub) { can.onmotion.delay(can, function() { can.onmotion.hidden(can, sub._target) }, 10) },
|
||||
onkeydown: function(event, can, meta, cb, target, sub, last) { switch (event.key) {
|
||||
onfocus: function(event, can, meta, target, cbs) {
|
||||
cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
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)
|
||||
}) },
|
||||
onclick: function(event, can, meta, target, cbs) {
|
||||
cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return }
|
||||
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) {
|
||||
can.onmotion.delay(can, function() { sub._delay_hidden || can.onmotion.hidden(can, sub._target), sub._delay_hidden = false }, 300)
|
||||
},
|
||||
onkeydown: function(event, can, meta, cb, target, sub, last) { if (sub.hidden()) { return } switch (event.key) {
|
||||
case "n":
|
||||
case "p":
|
||||
case lang.TAB: can.onkeymap.selectInputs(event, sub, function() { can.onfigure.key._load(event, sub, cb, target, meta.name) }, target); break
|
||||
case lang.TAB: can.onkeymap.selectInputs(event, sub, function() { sub._load(event, sub, cb, target, meta.name) }, target); break
|
||||
case lang.ENTER: if (meta._enter && (!can.page.tagis(event.target, html.TEXTAREA) || event.ctrlKey) && meta._enter(event)) { break }
|
||||
default: can.onkeymap.selectCtrlN(event, can, sub._output, "tr:not(.hidden) td:first-child", function(td) { return cb(sub, td.innerText, target.value), td }) || last(event)
|
||||
default: can.onkeymap.selectCtrlN(event, can, sub._output, "tr:not(.hidden)>td:first-child", function(td) { return cb(sub, td.innerText, target.value), td }) || last(event)
|
||||
target.value == "" && sub._load(event, sub, cb, target, meta.name)
|
||||
} },
|
||||
}})
|
||||
|
Loading…
x
Reference in New Issue
Block a user