Browse Source

Merge pull request #307 in FUI/fineui from ~WINDY/fui:master to master

* commit 'babe03a01928807db718c13c79e0416e6bc14524':
  BI-17618 date.js整理
  时间控件的些许问题
es6
guy 7 years ago
parent
commit
ca3809ab77
  1. 88
      dist/_fineui.min.js
  2. 56
      dist/bundle.js
  3. 88
      dist/bundle.min.js
  4. 4
      dist/case.js
  5. 27
      dist/core.js
  6. 88
      dist/fineui.min.js
  7. 25
      dist/widget.js
  8. 4
      src/case/calendar/calendar.js
  9. 27
      src/core/proto/date.js
  10. 8
      src/widget/date/trigger.date.js
  11. 13
      src/widget/datepane/card.static.datepane.js
  12. 4
      src/widget/dynamicdate/dynamicdate.caculate.js
  13. 27
      utils/utils.js

88
dist/_fineui.min.js vendored

File diff suppressed because one or more lines are too long

56
dist/bundle.js vendored

@ -29214,17 +29214,18 @@ Date.prototype.getOffsetDate = function (offset) {
return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5); return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5);
}; };
Date.prototype.getAfterMulQuarter = function (n) { Date.prototype.getOffsetQuarter = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n * 3); var day = dt.getDate();
return dt; var monthDay = BI.getDate(dt.getFullYear(), dt.getMonth() + BI.parseInt(n) * 3, 1).getMonthDays();
}; if (day > monthDay) {
// 获得n个季度前的日期 day = monthDay;
Date.prototype.getBeforeMulQuarter = function (n) { }
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); dt.setDate(day);
dt.setMonth(dt.getMonth() - n * 3); dt.setMonth(dt.getMonth() + parseInt(n) * 3);
return dt; return dt;
}; };
// 得到本季度的起始月份 // 得到本季度的起始月份
Date.prototype.getQuarterStartMonth = function () { Date.prototype.getQuarterStartMonth = function () {
var quarterStartMonth = 0; var quarterStartMonth = 0;
@ -29252,16 +29253,6 @@ Date.prototype.getQuarterEndDate = function () {
var quarterEndMonth = this.getQuarterStartMonth() + 2; var quarterEndMonth = this.getQuarterStartMonth() + 2;
return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth)); return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth));
}; };
Date.prototype.getAfterMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n | 0);
return dt;
};
Date.prototype.getBeforeMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() - n | 0);
return dt;
};
// 指定日期n个月之前或之后的日期 // 指定日期n个月之前或之后的日期
Date.prototype.getOffsetMonth = function (n) { Date.prototype.getOffsetMonth = function (n) {
@ -73708,7 +73699,7 @@ BI.extend(BI.Calendar, {
var year = BI.getDate().getFullYear(); var year = BI.getDate().getFullYear();
var month = BI.getDate().getMonth(); var month = BI.getDate().getMonth();
var page = (json.year - year) * 12; var page = (json.year - year) * 12;
page += json.month - month; page += json.month - 1 - month;
return page; return page;
}, },
getDateJSONByPage: function (v) { getDateJSONByPage: function (v) {
@ -73725,7 +73716,7 @@ BI.extend(BI.Calendar, {
var month = page >= 0 ? (page % 12) : ((12 + page % 12) % 12); var month = page >= 0 ? (page % 12) : ((12 + page % 12) % 12);
return { return {
year: BI.getDate().getFullYear() + year, year: BI.getDate().getFullYear() + year,
month: month month: month + 1
}; };
} }
}); });
@ -87822,12 +87813,12 @@ BI.shortcut("bi.date_combo", BI.DateCombo);BI.DateTrigger = BI.inherit(BI.Trigge
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_PREV: case BI.DateTrigger.MULTI_DATE_QUARTER_PREV:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_PREV]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_PREV];
date = BI.getDate().getBeforeMulQuarter(value); date = BI.getDate().getOffsetQuarter(-value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_AFTER: case BI.DateTrigger.MULTI_DATE_QUARTER_AFTER:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_AFTER]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_AFTER];
date = BI.getDate().getAfterMulQuarter(value); date = BI.getDate().getOffsetQuarter(value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_BEGIN: case BI.DateTrigger.MULTI_DATE_QUARTER_BEGIN:
@ -87842,12 +87833,12 @@ BI.shortcut("bi.date_combo", BI.DateCombo);BI.DateTrigger = BI.inherit(BI.Trigge
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_PREV: case BI.DateTrigger.MULTI_DATE_MONTH_PREV:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_PREV]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_PREV];
date = BI.getDate().getBeforeMultiMonth(value); date = BI.getDate().getOffsetMonth(-value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_AFTER: case BI.DateTrigger.MULTI_DATE_MONTH_AFTER:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_AFTER]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_AFTER];
date = BI.getDate().getAfterMultiMonth(value); date = BI.getDate().getOffsetMonth(value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_BEGIN: case BI.DateTrigger.MULTI_DATE_MONTH_BEGIN:
@ -87998,8 +87989,19 @@ BI.StaticDatePaneCard = BI.inherit(BI.Widget, {
max: o.max max: o.max
}); });
this.datePicker.on(BI.DatePicker.EVENT_CHANGE, function () { this.datePicker.on(BI.DatePicker.EVENT_CHANGE, function () {
self.selectedTime = self.datePicker.getValue(); var value = self.datePicker.getValue();
var monthDay = BI.getDate(value.year, value.month - 1, 1).getMonthDays();
var day = self.selectedTime.day || 0;
if (day > monthDay) {
day = monthDay;
}
self.selectedTime = {
year: value.year,
month: value.month,
day: day
};
self.calendar.setSelect(BI.Calendar.getPageByDateJSON(self.selectedTime)); self.calendar.setSelect(BI.Calendar.getPageByDateJSON(self.selectedTime));
self.calendar.setValue(self.selectedTime);
}); });
this.calendar = BI.createWidget({ this.calendar = BI.createWidget({
@ -89576,10 +89578,10 @@ BI.shortcut("bi.down_list_popup", BI.DownListPopup);/**
date = BI.getDate((date.getFullYear() + BI.parseInt(obj.year)), date.getMonth(), date.getDate()); date = BI.getDate((date.getFullYear() + BI.parseInt(obj.year)), date.getMonth(), date.getDate());
} }
if (BI.isNotNull(obj.quarter)) { if (BI.isNotNull(obj.quarter)) {
date = date.getAfterMulQuarter(BI.parseInt(obj.quarter)); date = date.getOffsetQuarter(BI.parseInt(obj.quarter));
} }
if (BI.isNotNull(obj.month)) { if (BI.isNotNull(obj.month)) {
date = date.getAfterMultiMonth(BI.parseInt(obj.month)); date = date.getOffsetMonth(BI.parseInt(obj.month));
} }
if (BI.isNotNull(obj.week)) { if (BI.isNotNull(obj.week)) {
date = date.getOffsetDate(BI.parseInt(obj.week) * 7); date = date.getOffsetDate(BI.parseInt(obj.week) * 7);

88
dist/bundle.min.js vendored

File diff suppressed because one or more lines are too long

4
dist/case.js vendored

@ -1768,7 +1768,7 @@ BI.extend(BI.Calendar, {
var year = BI.getDate().getFullYear(); var year = BI.getDate().getFullYear();
var month = BI.getDate().getMonth(); var month = BI.getDate().getMonth();
var page = (json.year - year) * 12; var page = (json.year - year) * 12;
page += json.month - month; page += json.month - 1 - month;
return page; return page;
}, },
getDateJSONByPage: function (v) { getDateJSONByPage: function (v) {
@ -1785,7 +1785,7 @@ BI.extend(BI.Calendar, {
var month = page >= 0 ? (page % 12) : ((12 + page % 12) % 12); var month = page >= 0 ? (page % 12) : ((12 + page % 12) % 12);
return { return {
year: BI.getDate().getFullYear() + year, year: BI.getDate().getFullYear() + year,
month: month month: month + 1
}; };
} }
}); });

27
dist/core.js vendored

@ -29214,17 +29214,18 @@ Date.prototype.getOffsetDate = function (offset) {
return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5); return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5);
}; };
Date.prototype.getAfterMulQuarter = function (n) { Date.prototype.getOffsetQuarter = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n * 3); var day = dt.getDate();
return dt; var monthDay = BI.getDate(dt.getFullYear(), dt.getMonth() + BI.parseInt(n) * 3, 1).getMonthDays();
}; if (day > monthDay) {
// 获得n个季度前的日期 day = monthDay;
Date.prototype.getBeforeMulQuarter = function (n) { }
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); dt.setDate(day);
dt.setMonth(dt.getMonth() - n * 3); dt.setMonth(dt.getMonth() + parseInt(n) * 3);
return dt; return dt;
}; };
// 得到本季度的起始月份 // 得到本季度的起始月份
Date.prototype.getQuarterStartMonth = function () { Date.prototype.getQuarterStartMonth = function () {
var quarterStartMonth = 0; var quarterStartMonth = 0;
@ -29252,16 +29253,6 @@ Date.prototype.getQuarterEndDate = function () {
var quarterEndMonth = this.getQuarterStartMonth() + 2; var quarterEndMonth = this.getQuarterStartMonth() + 2;
return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth)); return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth));
}; };
Date.prototype.getAfterMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n | 0);
return dt;
};
Date.prototype.getBeforeMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() - n | 0);
return dt;
};
// 指定日期n个月之前或之后的日期 // 指定日期n个月之前或之后的日期
Date.prototype.getOffsetMonth = function (n) { Date.prototype.getOffsetMonth = function (n) {

88
dist/fineui.min.js vendored

File diff suppressed because one or more lines are too long

25
dist/widget.js vendored

@ -1311,12 +1311,12 @@ BI.shortcut("bi.date_combo", BI.DateCombo);BI.DateTrigger = BI.inherit(BI.Trigge
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_PREV: case BI.DateTrigger.MULTI_DATE_QUARTER_PREV:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_PREV]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_PREV];
date = BI.getDate().getBeforeMulQuarter(value); date = BI.getDate().getOffsetQuarter(-value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_AFTER: case BI.DateTrigger.MULTI_DATE_QUARTER_AFTER:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_AFTER]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_AFTER];
date = BI.getDate().getAfterMulQuarter(value); date = BI.getDate().getOffsetQuarter(value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_BEGIN: case BI.DateTrigger.MULTI_DATE_QUARTER_BEGIN:
@ -1331,12 +1331,12 @@ BI.shortcut("bi.date_combo", BI.DateCombo);BI.DateTrigger = BI.inherit(BI.Trigge
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_PREV: case BI.DateTrigger.MULTI_DATE_MONTH_PREV:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_PREV]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_PREV];
date = BI.getDate().getBeforeMultiMonth(value); date = BI.getDate().getOffsetMonth(-value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_AFTER: case BI.DateTrigger.MULTI_DATE_MONTH_AFTER:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_AFTER]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_AFTER];
date = BI.getDate().getAfterMultiMonth(value); date = BI.getDate().getOffsetMonth(value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_BEGIN: case BI.DateTrigger.MULTI_DATE_MONTH_BEGIN:
@ -1487,8 +1487,19 @@ BI.StaticDatePaneCard = BI.inherit(BI.Widget, {
max: o.max max: o.max
}); });
this.datePicker.on(BI.DatePicker.EVENT_CHANGE, function () { this.datePicker.on(BI.DatePicker.EVENT_CHANGE, function () {
self.selectedTime = self.datePicker.getValue(); var value = self.datePicker.getValue();
var monthDay = BI.getDate(value.year, value.month - 1, 1).getMonthDays();
var day = self.selectedTime.day || 0;
if (day > monthDay) {
day = monthDay;
}
self.selectedTime = {
year: value.year,
month: value.month,
day: day
};
self.calendar.setSelect(BI.Calendar.getPageByDateJSON(self.selectedTime)); self.calendar.setSelect(BI.Calendar.getPageByDateJSON(self.selectedTime));
self.calendar.setValue(self.selectedTime);
}); });
this.calendar = BI.createWidget({ this.calendar = BI.createWidget({
@ -3065,10 +3076,10 @@ BI.shortcut("bi.down_list_popup", BI.DownListPopup);/**
date = BI.getDate((date.getFullYear() + BI.parseInt(obj.year)), date.getMonth(), date.getDate()); date = BI.getDate((date.getFullYear() + BI.parseInt(obj.year)), date.getMonth(), date.getDate());
} }
if (BI.isNotNull(obj.quarter)) { if (BI.isNotNull(obj.quarter)) {
date = date.getAfterMulQuarter(BI.parseInt(obj.quarter)); date = date.getOffsetQuarter(BI.parseInt(obj.quarter));
} }
if (BI.isNotNull(obj.month)) { if (BI.isNotNull(obj.month)) {
date = date.getAfterMultiMonth(BI.parseInt(obj.month)); date = date.getOffsetMonth(BI.parseInt(obj.month));
} }
if (BI.isNotNull(obj.week)) { if (BI.isNotNull(obj.week)) {
date = date.getOffsetDate(BI.parseInt(obj.week) * 7); date = date.getOffsetDate(BI.parseInt(obj.week) * 7);

4
src/case/calendar/calendar.js

@ -177,7 +177,7 @@ BI.extend(BI.Calendar, {
var year = BI.getDate().getFullYear(); var year = BI.getDate().getFullYear();
var month = BI.getDate().getMonth(); var month = BI.getDate().getMonth();
var page = (json.year - year) * 12; var page = (json.year - year) * 12;
page += json.month - month; page += json.month - 1 - month;
return page; return page;
}, },
getDateJSONByPage: function (v) { getDateJSONByPage: function (v) {
@ -194,7 +194,7 @@ BI.extend(BI.Calendar, {
var month = page >= 0 ? (page % 12) : ((12 + page % 12) % 12); var month = page >= 0 ? (page % 12) : ((12 + page % 12) % 12);
return { return {
year: BI.getDate().getFullYear() + year, year: BI.getDate().getFullYear() + year,
month: month month: month + 1
}; };
} }
}); });

27
src/core/proto/date.js

@ -72,17 +72,18 @@ Date.prototype.getOffsetDate = function (offset) {
return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5); return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5);
}; };
Date.prototype.getAfterMulQuarter = function (n) { Date.prototype.getOffsetQuarter = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n * 3); var day = dt.getDate();
return dt; var monthDay = BI.getDate(dt.getFullYear(), dt.getMonth() + BI.parseInt(n) * 3, 1).getMonthDays();
}; if (day > monthDay) {
// 获得n个季度前的日期 day = monthDay;
Date.prototype.getBeforeMulQuarter = function (n) { }
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); dt.setDate(day);
dt.setMonth(dt.getMonth() - n * 3); dt.setMonth(dt.getMonth() + parseInt(n) * 3);
return dt; return dt;
}; };
// 得到本季度的起始月份 // 得到本季度的起始月份
Date.prototype.getQuarterStartMonth = function () { Date.prototype.getQuarterStartMonth = function () {
var quarterStartMonth = 0; var quarterStartMonth = 0;
@ -110,16 +111,6 @@ Date.prototype.getQuarterEndDate = function () {
var quarterEndMonth = this.getQuarterStartMonth() + 2; var quarterEndMonth = this.getQuarterStartMonth() + 2;
return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth)); return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth));
}; };
Date.prototype.getAfterMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n | 0);
return dt;
};
Date.prototype.getBeforeMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() - n | 0);
return dt;
};
// 指定日期n个月之前或之后的日期 // 指定日期n个月之前或之后的日期
Date.prototype.getOffsetMonth = function (n) { Date.prototype.getOffsetMonth = function (n) {

8
src/widget/date/trigger.date.js

@ -170,12 +170,12 @@ BI.DateTrigger = BI.inherit(BI.Trigger, {
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_PREV: case BI.DateTrigger.MULTI_DATE_QUARTER_PREV:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_PREV]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_PREV];
date = BI.getDate().getBeforeMulQuarter(value); date = BI.getDate().getOffsetQuarter(-value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_AFTER: case BI.DateTrigger.MULTI_DATE_QUARTER_AFTER:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_AFTER]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_QUARTER_AFTER];
date = BI.getDate().getAfterMulQuarter(value); date = BI.getDate().getOffsetQuarter(value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_QUARTER_BEGIN: case BI.DateTrigger.MULTI_DATE_QUARTER_BEGIN:
@ -190,12 +190,12 @@ BI.DateTrigger = BI.inherit(BI.Trigger, {
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_PREV: case BI.DateTrigger.MULTI_DATE_MONTH_PREV:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_PREV]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_PREV];
date = BI.getDate().getBeforeMultiMonth(value); date = BI.getDate().getOffsetMonth(-value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_AFTER: case BI.DateTrigger.MULTI_DATE_MONTH_AFTER:
var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_AFTER]; var text = value + BI.DateTrigger.MULTI_DATE_SEGMENT_NUM[BI.DateTrigger.MULTI_DATE_MONTH_AFTER];
date = BI.getDate().getAfterMultiMonth(value); date = BI.getDate().getOffsetMonth(value);
_setInnerValue(date, text); _setInnerValue(date, text);
break; break;
case BI.DateTrigger.MULTI_DATE_MONTH_BEGIN: case BI.DateTrigger.MULTI_DATE_MONTH_BEGIN:

13
src/widget/datepane/card.static.datepane.js

@ -30,8 +30,19 @@ BI.StaticDatePaneCard = BI.inherit(BI.Widget, {
max: o.max max: o.max
}); });
this.datePicker.on(BI.DatePicker.EVENT_CHANGE, function () { this.datePicker.on(BI.DatePicker.EVENT_CHANGE, function () {
self.selectedTime = self.datePicker.getValue(); var value = self.datePicker.getValue();
var monthDay = BI.getDate(value.year, value.month - 1, 1).getMonthDays();
var day = self.selectedTime.day || 0;
if (day > monthDay) {
day = monthDay;
}
self.selectedTime = {
year: value.year,
month: value.month,
day: day
};
self.calendar.setSelect(BI.Calendar.getPageByDateJSON(self.selectedTime)); self.calendar.setSelect(BI.Calendar.getPageByDateJSON(self.selectedTime));
self.calendar.setValue(self.selectedTime);
}); });
this.calendar = BI.createWidget({ this.calendar = BI.createWidget({

4
src/widget/dynamicdate/dynamicdate.caculate.js

@ -11,10 +11,10 @@
date = BI.getDate((date.getFullYear() + BI.parseInt(obj.year)), date.getMonth(), date.getDate()); date = BI.getDate((date.getFullYear() + BI.parseInt(obj.year)), date.getMonth(), date.getDate());
} }
if (BI.isNotNull(obj.quarter)) { if (BI.isNotNull(obj.quarter)) {
date = date.getAfterMulQuarter(BI.parseInt(obj.quarter)); date = date.getOffsetQuarter(BI.parseInt(obj.quarter));
} }
if (BI.isNotNull(obj.month)) { if (BI.isNotNull(obj.month)) {
date = date.getAfterMultiMonth(BI.parseInt(obj.month)); date = date.getOffsetMonth(BI.parseInt(obj.month));
} }
if (BI.isNotNull(obj.week)) { if (BI.isNotNull(obj.week)) {
date = date.getOffsetDate(BI.parseInt(obj.week) * 7); date = date.getOffsetDate(BI.parseInt(obj.week) * 7);

27
utils/utils.js

@ -10379,17 +10379,18 @@ Date.prototype.getOffsetDate = function (offset) {
return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5); return BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()) + offset * 864e5);
}; };
Date.prototype.getAfterMulQuarter = function (n) { Date.prototype.getOffsetQuarter = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n * 3); var day = dt.getDate();
return dt; var monthDay = BI.getDate(dt.getFullYear(), dt.getMonth() + BI.parseInt(n) * 3, 1).getMonthDays();
}; if (day > monthDay) {
// 获得n个季度前的日期 day = monthDay;
Date.prototype.getBeforeMulQuarter = function (n) { }
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); dt.setDate(day);
dt.setMonth(dt.getMonth() - n * 3); dt.setMonth(dt.getMonth() + parseInt(n) * 3);
return dt; return dt;
}; };
// 得到本季度的起始月份 // 得到本季度的起始月份
Date.prototype.getQuarterStartMonth = function () { Date.prototype.getQuarterStartMonth = function () {
var quarterStartMonth = 0; var quarterStartMonth = 0;
@ -10417,16 +10418,6 @@ Date.prototype.getQuarterEndDate = function () {
var quarterEndMonth = this.getQuarterStartMonth() + 2; var quarterEndMonth = this.getQuarterStartMonth() + 2;
return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth)); return BI.getDate(this.getFullYear(), quarterEndMonth, this.getMonthDays(quarterEndMonth));
}; };
Date.prototype.getAfterMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() + n | 0);
return dt;
};
Date.prototype.getBeforeMultiMonth = function (n) {
var dt = BI.getDate(BI.getTime(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()));
dt.setMonth(dt.getMonth() - n | 0);
return dt;
};
// 指定日期n个月之前或之后的日期 // 指定日期n个月之前或之后的日期
Date.prototype.getOffsetMonth = function (n) { Date.prototype.getOffsetMonth = function (n) {

Loading…
Cancel
Save