From b1ca16d30f13ab3beea592782148386d6cca9dd0 Mon Sep 17 00:00:00 2001 From: windy <1374721899@qq.com> Date: Fri, 19 Mar 2021 13:56:31 +0800 Subject: [PATCH 1/3] =?UTF-8?q?BI-82267=20=E5=8F=96=E6=B6=88=E7=BF=BB?= =?UTF-8?q?=E9=A1=B5=E9=99=90=E5=88=B6=E5=90=8E=E7=9A=84=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 1 + src/widget/date/calendar/picker.year.js | 4 +--- src/widget/date/calendar/popup.month.js | 6 +++++- src/widget/date/calendar/popup.year.js | 11 ++++++----- src/widget/dynamicdate/dynamicdate.combo.js | 3 +++ .../dynamicdatetime/dynamicdatetime.combo.js | 3 +++ src/widget/yearmonth/combo.yearmonth.js | 18 +++++++++++++++++- src/widget/yearquarter/combo.yearquarter.js | 18 +++++++++++++++++- 8 files changed, 53 insertions(+), 11 deletions(-) diff --git a/changelog.md b/changelog.md index e2e6d9c9e..d0aa79f1b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,6 @@ # 更新日志 2.0(2021-03) +- 时间类型控件无翻页限制 - 时间类型控件优化动态时间面板的交互 2.0(2021-02) diff --git a/src/widget/date/calendar/picker.year.js b/src/widget/date/calendar/picker.year.js index f07941be1..ac94ecd2b 100644 --- a/src/widget/date/calendar/picker.year.js +++ b/src/widget/date/calendar/picker.year.js @@ -83,9 +83,7 @@ BI.YearPicker = BI.inherit(BI.Widget, { width: 25 }] }); - this.setValue({ - year: this._year - }); + this.setValue(this._year); }, _checkLeftValid: function () { diff --git a/src/widget/date/calendar/popup.month.js b/src/widget/date/calendar/popup.month.js index 251511e77..f309ec4bd 100644 --- a/src/widget/date/calendar/popup.month.js +++ b/src/widget/date/calendar/popup.month.js @@ -18,6 +18,8 @@ BI.MonthPopup = BI.inherit(BI.Widget, { BI.MonthPopup.superclass._init.apply(this, arguments); var self = this, o = this.options; + this.selectedMonth = BI.getDate().getMonth() + 1; + this.month = BI.createWidget({ type: "bi.button_group", element: this, @@ -39,6 +41,7 @@ BI.MonthPopup = BI.inherit(BI.Widget, { }); this.month.on(BI.Controller.EVENT_CHANGE, function (type) { + self.selectedMonth = this.getValue()[0]; self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); if (type === BI.Events.CLICK) { self.fireEvent(BI.MonthPopup.EVENT_CHANGE); @@ -82,11 +85,12 @@ BI.MonthPopup = BI.inherit(BI.Widget, { }, getValue: function () { - return this.month.getValue()[0]; + return this.selectedMonth; }, setValue: function (v) { v = BI.parseInt(v); + this.selectedMonth = v; this.month.setValue([v]); } }); diff --git a/src/widget/date/calendar/popup.year.js b/src/widget/date/calendar/popup.year.js index 7480c9d4d..8c6c4d614 100644 --- a/src/widget/date/calendar/popup.year.js +++ b/src/widget/date/calendar/popup.year.js @@ -119,12 +119,13 @@ BI.YearPopup = BI.inherit(BI.Widget, { setValue: function (v) { var o = this.options; v = BI.parseInt(v); + // 切换年不受范围限制 // 对于年控件来说,只要传入的minDate和maxDate的year区间包含v就是合法的 - var startDate = BI.parseDateTime(o.min, "%Y-%X-%d"); - var endDate = BI.parseDateTime(o.max, "%Y-%X-%d"); - if (BI.checkDateVoid(v, 1, 1, BI.print(BI.getDate(startDate.getFullYear(), 0, 1), "%Y-%X-%d"), BI.print(BI.getDate(endDate.getFullYear(), 0, 1), "%Y-%X-%d"))[0]) { - v = BI.getDate().getFullYear(); - } + // var startDate = BI.parseDateTime(o.min, "%Y-%X-%d"); + // var endDate = BI.parseDateTime(o.max, "%Y-%X-%d"); + // if (BI.checkDateVoid(v, 1, 1, BI.print(BI.getDate(startDate.getFullYear(), 0, 1), "%Y-%X-%d"), BI.print(BI.getDate(endDate.getFullYear(), 0, 1), "%Y-%X-%d"))[0]) { + // v = BI.getDate().getFullYear(); + // } this.selectedYear = v; this.navigation.setSelect(BI.YearCalendar.getPageByYear(v)); diff --git a/src/widget/dynamicdate/dynamicdate.combo.js b/src/widget/dynamicdate/dynamicdate.combo.js index 05f48e61e..a99fa2ede 100644 --- a/src/widget/dynamicdate/dynamicdate.combo.js +++ b/src/widget/dynamicdate/dynamicdate.combo.js @@ -271,10 +271,13 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, { }, _checkValue: function (v) { + var o = this.options; switch (v.type) { case BI.DynamicDateCombo.Dynamic: return BI.isNotEmptyObject(v.value); case BI.DynamicDateCombo.Static: + var value = v.value || {}; + return !BI.checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; default: return true; } diff --git a/src/widget/dynamicdatetime/dynamicdatetime.combo.js b/src/widget/dynamicdatetime/dynamicdatetime.combo.js index 05f63156b..915430b12 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.combo.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.combo.js @@ -279,10 +279,13 @@ BI.DynamicDateTimeCombo = BI.inherit(BI.Single, { }, _checkValue: function (v) { + var o = this.options; switch (v.type) { case BI.DynamicDateCombo.Dynamic: return BI.isNotEmptyObject(v.value); case BI.DynamicDateCombo.Static: + var value = v.value || {}; + return !BI.checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; default: return true; } diff --git a/src/widget/yearmonth/combo.yearmonth.js b/src/widget/yearmonth/combo.yearmonth.js index 3bb38968f..d1500d969 100644 --- a/src/widget/yearmonth/combo.yearmonth.js +++ b/src/widget/yearmonth/combo.yearmonth.js @@ -99,7 +99,10 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, { }, { eventName: BI.DynamicYearMonthPopup.BUTTON_OK_EVENT_CHANGE, action: function () { - self.setValue(self.popup.getValue()); + var value = self.popup.getValue(); + if (self._checkValue(value)) { + self.setValue(value); + } self.combo.hideView(); self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); } @@ -159,6 +162,19 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, { } }, + _checkValue: function (v) { + var o = this.options; + switch (v.type) { + case BI.DynamicDateCombo.Dynamic: + return BI.isNotEmptyObject(v.value); + case BI.DynamicDateCombo.Static: + var value = v.value || {}; + return !BI.checkDateVoid(value.year, value.month, 1, o.minDate, o.maxDate)[0]; + default: + return true; + } + }, + setMinDate: function (minDate) { var o = this.options; o.minDate = minDate; diff --git a/src/widget/yearquarter/combo.yearquarter.js b/src/widget/yearquarter/combo.yearquarter.js index 6812ec99c..fca8ce2f1 100644 --- a/src/widget/yearquarter/combo.yearquarter.js +++ b/src/widget/yearquarter/combo.yearquarter.js @@ -99,7 +99,10 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { }, { eventName: BI.DynamicYearQuarterPopup.BUTTON_OK_EVENT_CHANGE, action: function () { - self.setValue(self.popup.getValue()); + var value = self.popup.getValue(); + if (self._checkValue(value)) { + self.setValue(value); + } self.combo.hideView(); self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); } @@ -159,6 +162,19 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { } }, + _checkValue: function (v) { + var o = this.options; + switch (v.type) { + case BI.DynamicDateCombo.Dynamic: + return BI.isNotEmptyObject(v.value); + case BI.DynamicDateCombo.Static: + var value = v.value || {}; + return !BI.checkDateVoid(value.year, (value.quarter - 1) * 3 + 1, 1, o.minDate, o.maxDate)[0]; + default: + return true; + } + }, + setMinDate: function (minDate) { var o = this.options; o.minDate = minDate; From dca95db7759cfe074010f76365a47fdb212b08c2 Mon Sep 17 00:00:00 2001 From: windy <1374721899@qq.com> Date: Fri, 19 Mar 2021 14:14:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/widget/datepane/datepane.js | 2 +- src/widget/datetimepane/datetimepane.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widget/datepane/datepane.js b/src/widget/datepane/datepane.js index d83b72022..3537797c3 100644 --- a/src/widget/datepane/datepane.js +++ b/src/widget/datepane/datepane.js @@ -123,7 +123,7 @@ BI.DynamicDatePane = BI.inherit(BI.Widget, { action: function () { var type = self.dateTab.getSelect(); if (type === BI.DynamicDateCombo.Dynamic) { - self.dynamicPane.checkValidation(true) && self.fireEvent(BI.DynamicDatePopup.BUTTON_OK_EVENT_CHANGE); + self.dynamicPane.checkValidation(true) && self.fireEvent(BI.DynamicDatePopup.EVENT_CHANGE); } else { self.fireEvent(BI.DynamicDatePane.EVENT_CHANGE); } diff --git a/src/widget/datetimepane/datetimepane.js b/src/widget/datetimepane/datetimepane.js index 4b971aa8c..166d016e8 100644 --- a/src/widget/datetimepane/datetimepane.js +++ b/src/widget/datetimepane/datetimepane.js @@ -123,7 +123,7 @@ BI.DynamicDateTimePane = BI.inherit(BI.Widget, { action: function () { var type = self.dateTab.getSelect(); if (type === BI.DynamicDateCombo.Dynamic) { - self.dynamicPane.checkValidation(true) && self.fireEvent(BI.DynamicDatePopup.BUTTON_OK_EVENT_CHANGE); + self.dynamicPane.checkValidation(true) && self.fireEvent(BI.DynamicDatePane.EVENT_CHANGE); } else { self.fireEvent(BI.DynamicDatePane.EVENT_CHANGE); } From 65b183e6679300937376cd6e6f7f586c8eef0fcc Mon Sep 17 00:00:00 2001 From: windy <1374721899@qq.com> Date: Fri, 19 Mar 2021 14:17:11 +0800 Subject: [PATCH 3/3] update --- src/widget/date/calendar/popup.month.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widget/date/calendar/popup.month.js b/src/widget/date/calendar/popup.month.js index f309ec4bd..2add27d54 100644 --- a/src/widget/date/calendar/popup.month.js +++ b/src/widget/date/calendar/popup.month.js @@ -40,8 +40,8 @@ BI.MonthPopup = BI.inherit(BI.Widget, { value: o.value }); - this.month.on(BI.Controller.EVENT_CHANGE, function (type) { - self.selectedMonth = this.getValue()[0]; + this.month.on(BI.Controller.EVENT_CHANGE, function (type, value) { + self.selectedMonth = value; self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); if (type === BI.Events.CLICK) { self.fireEvent(BI.MonthPopup.EVENT_CHANGE);