diff -urN org/reports.toptriggers.js.php new/reports.toptriggers.js.php --- org/reports.toptriggers.js.php 2014-12-25 16:43:28.000000000 +0900 +++ new/reports.toptriggers.js.php 2014-12-26 11:05:34.000000000 +0900 @@ -6,128 +6,66 @@ */ function setPeriod(period) { var date = new Date(), + fr_date, to_date, newPeriod = []; switch (period) { case : - newPeriod = { - 'fromYear': date.getFullYear(), - 'fromMonth': date.getMonth() + 1, - 'fromDay': date.getDate(), - 'tillYear': date.getFullYear(), - 'tillMonth': date.getMonth() + 1, - 'tillDay': date.getDate() + 1 - } + fr_date = date; + to_date = computeDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), 1); break; case : - date.setTime(date.getTime() - * 1000); - - newPeriod = { - 'fromYear': date.getFullYear(), - 'fromMonth': date.getMonth() + 1, - 'fromDay': date.getDate(), - 'tillYear': date.getFullYear(), - 'tillMonth': date.getMonth() + 1, - 'tillDay': date.getDate() + 1 - } + fr_date = computeDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), -1); + to_date = date; break; case : var weekBegin = date.getTime() - (date.getDay() - 1) * * 1000, weekEnd = weekBegin + * 1000 * 7, - dateFrom = new Date(date.setTime(weekBegin)), - dateTill = new Date(date.setTime(weekEnd)); - - newPeriod = { - 'fromYear': dateFrom.getFullYear(), - 'fromMonth': dateFrom.getMonth() + 1, - 'fromDay': dateFrom.getDate(), - 'tillYear': dateTill.getFullYear(), - 'tillMonth': dateTill.getMonth() + 1, - 'tillDay': dateTill.getDate() - } + fr_date = new Date(date.setTime(weekBegin)), + to_date = new Date(date.setTime(weekEnd)); break; case : - newPeriod = { - 'fromYear': date.getFullYear(), - 'fromMonth': date.getMonth() + 1, - 'fromDay': '1', - 'tillYear': date.getFullYear(), - 'tillMonth': date.getMonth() + 2, - 'tillDay': '1' - } + fr_date = new Date(date.getFullYear(), date.getMonth(), 1); + to_date = computeMonth(date.getFullYear(), date.getMonth() + 1, 1, 1); break; case : - newPeriod = { - 'fromYear': date.getFullYear(), - 'fromMonth': '1', - 'fromDay': '1', - 'tillYear': date.getFullYear() + 1, - 'tillMonth': '1', - 'tillDay': '1' - } + fr_date = new Date(date.getFullYear(), 0, 1); + to_date = new Date(date.getFullYear() + 1, 0, 1); break; case : var lastWeekBegin = date.getTime() + ( - date.getDay() - 6) * * 1000, lastWeekEnd = lastWeekBegin + * 1000 * 7, - dateFrom = new Date(date.setTime(lastWeekBegin)), - dateTill = new Date(date.setTime(lastWeekEnd)); - - newPeriod = { - 'fromYear': dateFrom.getFullYear(), - 'fromMonth': dateFrom.getMonth() + 1, - 'fromDay': dateFrom.getDate(), - 'tillYear': dateTill.getFullYear(), - 'tillMonth': dateTill.getMonth() + 1, - 'tillDay': dateTill.getDate() - } + fr_date = new Date(date.setTime(lastWeekBegin)), + to_date = new Date(date.setTime(lastWeekEnd)); break; case : - if (date.getMonth() == 0) { - // 11 month is december - date = new Date(date.getFullYear() - 1, 11, 31); - } - else { - date = new Date(date.getFullYear(), date.getMonth() - 1, - daysInMonth(date.getFullYear(), date.getMonth() - 1) - ); - } - - newPeriod = { - 'fromYear': date.getFullYear(), - 'fromMonth': date.getMonth() + 1, - 'fromDay': '1', - 'tillYear': date.getFullYear(), - 'tillMonth': date.getMonth() + 2, - 'tillDay': '1' - } + fr_date = computeMonth(date.getFullYear(), date.getMonth() + 1, 1, -1); + to_date = new Date(date.getFullYear(), date.getMonth(), 1); break; case : - newPeriod = { - 'fromYear': date.getFullYear() - 1, - 'fromMonth': '1', - 'fromDay': '1', - 'tillYear': date.getFullYear(), - 'tillMonth': '1', - 'tillDay': '1' - } + fr_date = new Date(date.getFullYear() - 1, 0, 1); + to_date = new Date(date.getFullYear(), 0, 1); break; default: - newPeriod = { - 'fromYear': date.getFullYear(), - 'fromMonth': date.getMonth() + 1, - 'fromDay': date.getDate(), - 'tillYear': date.getFullYear(), - 'tillMonth': date.getMonth() + 1, - 'tillDay': date.getDate() + 1 - } + fr_date = date; + to_date = computeDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), 1); + } + + newPeriod = { + 'fromYear': fr_date.getFullYear(), + 'fromMonth': fr_date.getMonth() + 1, + 'fromDay': fr_date.getDate(), + 'tillYear': to_date.getFullYear(), + 'tillMonth': to_date.getMonth() + 1, + 'tillDay': to_date.getDate() } updatePeriod(newPeriod); @@ -168,4 +106,48 @@ jQuery('#filter_from').val(data.fromYear+''+data.fromMonth+''+data.fromDay+'000000'); jQuery('#filter_till').val(data.tillYear+''+data.tillMonth+''+data.tillDay+'000000'); } + + /** + * get the last day of the month. + * + * @param int year + * @param int month + */ + function getMonthEndDay(year, month) { + var dt = new Date(year, month, 0); + return dt.getDate(); + } + + /** + * number of days add or subtract. + * + * @param int year + * @param int month + * @param int day + * @param int addDays + */ + function computeDate(year, month, day, addDays) { + var dt = new Date(year, month - 1, day); + var baseSec = dt.getTime(); + var addSec = addDays * 86400000; + var targetSec = baseSec + addSec; + dt.setTime(targetSec); + return dt; + } + + /** + * number of month add or subtract. + * + * @param int year + * @param int month + * @param int day + * @param int addMonths + */ + function computeMonth(year, month, day, addMonths) { + month += addMonths; + var endDay = getMonthEndDay(year, month); + if(day > endDay) day = endDay; + var dt = new Date(year, month - 1, day); + return dt; + }