//morningf@foxmail.com
var ccFile = require('../../utils/calendar-converter.js')
var calendarConverter = new ccFile.CalendarConverter();
//月份天數(shù)表
var DAY_OF_MONTH = [
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
];
//判斷當(dāng)前年是否閏年
var isLeapYear = function(year){
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
return 1
else
return 0
};
//獲取當(dāng)月有多少天
var getDayCount = function(year, month){
return DAY_OF_MONTH[isLeapYear(year)][month];
};
//獲取當(dāng)前索引下是幾號(hào)
var getDay = function(index) {
return index - curDayOffset;
};
var pageData = {
date: "", //當(dāng)前日期字符串
//arr數(shù)據(jù)是與索引對(duì)應(yīng)的數(shù)據(jù)信息
arrIsShow: [], //是否顯示此日期
arrDays: [], //關(guān)于幾號(hào)的信息
arrInfoEx: [], //農(nóng)歷節(jié)假日等擴(kuò)展信息
arrInfoExShow: [], //處理后用于顯示的擴(kuò)展信息
//選擇一天時(shí)顯示的信息
detailData: {
curDay: "", //detail中顯示的日信息
curInfo1: "",
curInfo2: "",
}
}
//設(shè)置當(dāng)前詳細(xì)信息的索引,前臺(tái)的詳細(xì)信息會(huì)被更新
var setCurDetailIndex = function(index){
var curEx = pageData.arrInfoEx[index];
curDay = curEx.sDay - 1;
pageData.detailData.curDay = curEx.sDay;
pageData.detailData.curInfo1 = "農(nóng)歷" + curEx.lunarMonth + "月" + curEx.lunarDay;
pageData.detailData.curInfo2 = curEx.cYear+curEx.lunarYear + "年 " + curEx.cMonth + "月 " + curEx.cDay + "日 " + curEx.lunarFestival;
}
//刷新全部數(shù)據(jù)
var refreshPageData = function(year, month, day){
pageData.date = year+'年'+(month+1)+'月';
var offset = new Date(year, month, 1).getDay();
for (var i = 0; i < 42; ++i)
{
pageData.arrIsShow[i] = i < offset || i >= getDayCount(year, month) + offset ? false : true;
pageData.arrDays[i] = i - offset + 1;
var d = new Date(year, month, i - offset + 1);
var dEx = calendarConverter.solar2lunar(d);
pageData.arrInfoEx[i] = dEx;
if ("" != dEx.lunarFestival)
{
pageData.arrInfoExShow[i] = dEx.lunarFestival;
}
else if ("初一" === dEx.lunarDay)
{
pageData.arrInfoExShow[i] = dEx.lunarMonth + "月";
}
else
{
pageData.arrInfoExShow[i] = dEx.lunarDay;
}
}
setCurDetailIndex(offset + day);
};
var curDate = new Date();
var curMonth = curDate.getMonth();
var curYear = curDate.getFullYear();
var curDay = curDate.getDay();
refreshPageData(curYear, curMonth, curDay);
Page({
data: pageData,
onLoad: function(options){
},
goToday: function(e){
curDate = new Date();
curMonth = curDate.getMonth();
curYear = curDate.getFullYear();
curDay = curDate.getDay();
refreshPageData(curYear, curMonth, curDay);
this.setData(pageData);
},
goLastMonth: function(e){
if (0 == curMonth)
{
curMonth = 11;
--curYear
}
else
{
--curMonth;
}
refreshPageData(curYear, curMonth, 0);
this.setData(pageData);
},
goNextMonth: function(e){
if (11 == curMonth)
{
curMonth = 0;
++curYear
}
else
{
++curMonth;
}
refreshPageData(curYear, curMonth, 0);
this.setData(pageData);
},
selectDay: function(e){
setCurDetailIndex(e.currentTarget.dataset.dayIndex);
this.setData({
detailData: pageData.detailData,
})
},
bindDateChange: function(e){
var arr = e.detail.value.split("-");
refreshPageData(+arr[0], arr[1]-1, arr[2]-1);
this.setData(pageData);
},
});