1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00

opt date.js

This commit is contained in:
harveyshao 2023-02-11 23:56:16 +08:00
parent 58d8223aaf
commit 300e58f7e5
4 changed files with 22 additions and 38 deletions

View File

@ -323,8 +323,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}])
},
input: function(can, item, value, target, style) { if ([html.BR, html.HR].indexOf(item.type) > -1) { return can.page.Append(can, target, [item]) }
var icon = []
var _item = can.base.Copy({className: "", type: "", name: ""}, item)
var icon = [], _item = can.base.Copy({className: "", type: "", name: ""}, item)
var input = can.page.input(can, _item, value); input.title = can.Conf(can.core.Keys(ctx.FEATURE, chat.TITLE, item.name))||""
if (item.type == html.SELECT && (value || _item.value)) { input._init = function(target) { target.value = value||_item.value } }
if (item.type == html.TEXT) { input.onkeydown = item.onkeydown||function(event) {
@ -337,22 +336,12 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (item.range) { input._init = function(target) { can.onappend.figure(can, item, target, function(sub, value, old) {
target.value = value, can.core.CallFunc([can.onaction, item.name], [event, can, item.name])
}) } }
/*
if (item.type == html.SELECT) { var ui = can.page.Append(can, target, [{view: [[html.ITEM, item.type, item.name].concat(style)],
list: [input].concat([{type: html.INPUT, value: _item.value||_item.values[0], data: {type: html.BUTTON}, onclick: function(event) { var target = event.target
var carte = can.user.carte(event, can, {}, _item.values, function(event, button) { target.value = button, ui.select.value = button, ui.select.onchange({target: ui.select}) })
can.onappend.style(can, [html.SELECT, item.name], carte._target), can.page.style(can, carte._target, html.MIN_WIDTH, event.target.offsetWidth)
}, _init: function(target) { can.onmotion.delay(can, function() {
target.value = ui.select.value, can.page.style(can, target, html.WIDTH, ui.select.offsetWidth+10), can.onappend.style(can, html.HIDE, ui.select)
}) }}, {text: ["\u25BF", html.SPAN, html.ICON]}])
}]); return ui[item.name] }
*/
var _input = can.page.Append(can, target, [{view: [[html.ITEM, item.type, item.name].concat(style)], list: [input].concat(icon), _init: function(target, _input) {
item.type == html.SELECT && can.onappend.select(can, _input.select, _item)
}}])[item.name]; return _input
},
select: function(can, select, item) {
return can.page.Append(can, select.parentNode, [{view: [html.SELECT, html.INPUT], value: item.value||item.values[0], data: {type: html.BUTTON}, onclick: function(event) { var target = event.target
return can.page.Append(can, select.parentNode, [{type: html.INPUT, value: item.value||item.values[0], data: {className: html.SELECT, type: html.BUTTON, name: item.name}, onclick: function(event) { var target = event.target
var carte = can.user.carte(event, can, {}, item.values, function(event, button) { if (target.value == button) { return }
target.value = button, select.value = button, select.onchange && select.onchange({target: select}) })
can.onappend.style(can, [html.SELECT, item.name], carte._target), can.page.style(can, carte._target, html.MIN_WIDTH, event.target.offsetWidth)

View File

@ -1,3 +1,18 @@
Volcanos("date", {
List: function(can, cb, now, head) { var list = [{th: head||(can.user.info.language == "en"? ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]: ["日", "一", "二", "三", "四", "五", "六"])}]
var tr; function _cb(day, type) { if (day.getDay() == 0) { list.push(tr = {type: html.TR, list: []}) } var lunar = can.date.solar2lunar(day), _day = new Date(day)
tr.list.push({view: [can.base.isIn(can.base.Time(day, "%y-%m-%d"), can.base.Time(now, "%y-%m-%d"))? html.SELECT: type, html.TD],
onclick: function(event) { cb(event, _day) }, list: [{text: day.getDate()+""}, {text: [lunar.autoDay, "", lunar.autoClass]}],
})
}
var first = new Date(now); first.setDate(1); var last = new Date(first); last.setMonth(last.getMonth()+1)
var begin = new Date(first); begin.setDate(first.getDate()-first.getDay()); var end = new Date(last); end.setDate(last.getDate()+7-last.getDay())
for (var day = new Date(begin); day < first; day.setDate(day.getDate()+1)) { _cb(day, mdb.PREV) }
for (var day = new Date(first); day < last; day.setDate(day.getDate()+1)) { _cb(day, mdb.MAIN) }
for (var day = new Date(last); day < end; day.setDate(day.getDate()+1)) { _cb(day, mdb.NEXT) }
return list
},
})
Volcanos("date", { // @1900-2100区间内的公历转农历
solar2lunar: function(date) { var y = date.getFullYear(), m = date.getMonth()+1, d = date.getDate()
var day = (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(1900,0,31))/86400000

View File

@ -17,7 +17,7 @@ Volcanos("page", {
if (can.base.isObject(key)) { return can.core.Item(key, function(key, value) { can.page.SelectArgs(can, target, key, value) }), [key] }
if (!can.base.isFunc(cb)) { var value = cb; cb = function(item) { return item.name && (can.base.isUndefined(value)? item.value: (item.value = value))||"" } }
if (key.indexOf(ice.PT) > -1) { return [""] }
return can.page.Select(can, target, key? "select[name="+key+"],"+"input[name="+key+"],"+"textarea[name="+key+"]": ".args", cb)
return can.page.Select(can, target, key? "select[name="+key+"],"+"input.select[type=button][name="+key+"],"+"input[name="+key+"],"+"textarea[name="+key+"]": ".args", cb)
},
SelectInput: function(can, target, name, cb) { return can.page.Select(can, target, "input[name="+name+"]", cb)[0] },
SelectChild: function(can, target, key, cb) { var i = 0; return can.page.Select(can, target, key, function(node) { if (node.parentNode == target) { return cb(node, i++) } }) },

View File

@ -21,29 +21,9 @@ Volcanos(chat.ONFIGURE, {date: {
chat._TRANS, kit.Dict(TODAY, "今天", mdb.NEXT, "下一月", mdb.PREV, "上一月", "over", "去年", "come", "今年"),
)), can._table = can.page.Appends(can, can._output, [{view: [chat.CONTENT, html.TABLE]}])._target
target.value == "" && (now.setMinutes(now.getMinutes()>30? 30: 0), now.setSeconds(0))
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 } var _day = new Date(day)
var l = can.date.solar2lunar(day)
can.page.Append(can, tr, [{view: [can.base.isIn(can.base.Time(day, "%y-%m-%d"), can.base.Time(now, "%y-%m-%d"), can.base.Time(today, "%y-%m-%d"))? html.SELECT: type, html.TD],
onclick: function(event) { _day.setHours(now.getHours()), _day.setMinutes(now.getMinutes()), _day.getSeconds(now.getSeconds()), _cb(_day), meta._hold? show(_day): can.close() },
list: [{text: day.getDate()+""}, {text: l.autoDay, "className": l.autoClass}]}])
}
var one = new Date(now); one.setDate(1)
var end = new Date(now); end.setMonth(end.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) }
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, can.date.List(can, function(event, day) { day.setHours(now.getHours()), day.setMinutes(now.getMinutes()), day.getSeconds(now.getSeconds()), _cb(day), can.close() }, now))
var l = can.date.solar2lunar(now); can.page.Appends(can, can._status, [{view: "today", inner: [l.gzYear, l.Animal+"年", l.cnMonth, l.cnDay, l.lunarFestival||l.festival||l.Term, l.Astro].join(ice.SP)}])
return now
}