From e6dfde7c671bbf8a7e1f3724c70c23e819e4dad6 Mon Sep 17 00:00:00 2001 From: windy <1374721899@qq.com> Date: Mon, 12 Jul 2021 13:44:09 +0800 Subject: [PATCH] =?UTF-8?q?BI-84927=20=E7=BB=86=E5=8C=96=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=8E=A7=E4=BB=B6=E6=A0=87=E7=BA=A2=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 1 + src/widget/dynamicdate/dynamicdate.trigger.js | 18 ++++++++++++++++-- .../dynamicdatetime/dynamicdatetime.trigger.js | 18 ++++++++++++++++-- src/widget/year/trigger.year.js | 12 ++++++++++-- src/widget/yearmonth/trigger.yearmonth.js | 18 +++++++++++++++++- src/widget/yearquarter/trigger.yearquarter.js | 16 ++++++++++++++-- 6 files changed, 74 insertions(+), 9 deletions(-) diff --git a/changelog.md b/changelog.md index 5185abbcf..4506df680 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,6 @@ # 更新日志 2.0(2021-07) +- 优化了日期类型控件标红时的报错提示 - 支持虚拟dom - 修复了树控件节点未初始化时调用树的getValue始终为空的问题 diff --git a/src/widget/dynamicdate/dynamicdate.trigger.js b/src/widget/dynamicdate/dynamicdate.trigger.js index ae8fcda03..6a6170e91 100644 --- a/src/widget/dynamicdate/dynamicdate.trigger.js +++ b/src/widget/dynamicdate/dynamicdate.trigger.js @@ -22,6 +22,8 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { BI.DynamicDateTrigger.superclass._init.apply(this, arguments); var self = this, o = this.options, c = this._const; this.storeTriggerValue = ""; + var start = BI.parseDateTime(o.min, "%Y-%X-%d"); + var end = BI.parseDateTime(o.max, "%Y-%X-%d"); this.editor = BI.createWidget({ type: "bi.sign_editor", height: o.height, @@ -42,11 +44,23 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { vgap: c.vgap, allowBlank: true, watermark: BI.isKey(o.watermark) ? o.watermark : BI.i18nText("BI-Basic_Unrestricted"), - errorText: function () { + errorText: function (v) { var str = ""; if (!BI.isKey(o.format)) { - str = self.editor.isEditing() ? BI.i18nText("BI-Date_Trigger_Error_Text") : BI.i18nText("BI-Year_Trigger_Invalid_Text"); + if (!self._dateCheck(v)) { + str = self.editor.isEditing() ? BI.i18nText("BI-Date_Trigger_Error_Text") : BI.i18nText("BI-Year_Trigger_Invalid_Text"); + } else { + str = BI.i18nText("BI-Basic_Date_Range_Error", + start.getFullYear(), + start.getMonth() + 1, + start.getDate(), + end.getFullYear(), + end.getMonth() + 1, + end.getDate() + ); + } } + return str; }, title: BI.bind(this._getTitle, this) diff --git a/src/widget/dynamicdatetime/dynamicdatetime.trigger.js b/src/widget/dynamicdatetime/dynamicdatetime.trigger.js index 53fd8ef6b..1d2066516 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.trigger.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.trigger.js @@ -22,6 +22,8 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { BI.DynamicDateTimeTrigger.superclass._init.apply(this, arguments); var self = this, o = this.options, c = this._const; this.storeTriggerValue = ""; + var start = BI.parseDateTime(o.min, "%Y-%X-%d"); + var end = BI.parseDateTime(o.max, "%Y-%X-%d"); this.editor = BI.createWidget({ type: "bi.sign_editor", height: o.height, @@ -42,11 +44,23 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { vgap: c.vgap, allowBlank: true, watermark: BI.isKey(o.watermark) ? o.watermark : BI.i18nText("BI-Basic_Unrestricted"), - errorText: function () { + errorText: function (v) { var str = ""; if (!BI.isKey(o.format)) { - str = self.editor.isEditing() ? BI.i18nText("BI-Basic_Date_Time_Error_Text") : BI.i18nText("BI-Year_Trigger_Invalid_Text"); + if (!self._dateCheck(v)) { + str = self.editor.isEditing() ? BI.i18nText("BI-Date_Trigger_Error_Text") : BI.i18nText("BI-Year_Trigger_Invalid_Text"); + } else { + str = BI.i18nText("BI-Basic_Date_Range_Error", + start.getFullYear(), + start.getMonth() + 1, + start.getDate(), + end.getFullYear(), + end.getMonth() + 1, + end.getDate() + ); + } } + return str; }, title: BI.bind(this._getTitle, this) diff --git a/src/widget/year/trigger.year.js b/src/widget/year/trigger.year.js index 577e9c317..be289ee71 100644 --- a/src/widget/year/trigger.year.js +++ b/src/widget/year/trigger.year.js @@ -22,6 +22,8 @@ BI.DynamicYearTrigger = BI.inherit(BI.Trigger, { _init: function () { BI.DynamicYearTrigger.superclass._init.apply(this, arguments); var self = this, o = this.options, c = this._const; + var start = BI.parseDateTime(o.min, "%Y-%X-%d"); + var end = BI.parseDateTime(o.max, "%Y-%X-%d"); this.editor = BI.createWidget({ type: "bi.sign_editor", height: o.height, @@ -35,9 +37,15 @@ BI.DynamicYearTrigger = BI.inherit(BI.Trigger, { vgap: c.vgap, watermark: BI.i18nText("BI-Basic_Unrestricted"), allowBlank: true, - errorText: function () { + errorText: function (v) { + if (BI.isPositiveInteger(v)) { + return BI.i18nText("BI-Basic_Year_Range_Error", + start.getFullYear(), + end.getFullYear()); + } + return BI.i18nText("BI-Year_Trigger_Invalid_Text"); - } + }, }); this.editor.on(BI.SignEditor.EVENT_KEY_DOWN, function () { self.fireEvent(BI.DynamicYearTrigger.EVENT_KEY_DOWN, arguments); diff --git a/src/widget/yearmonth/trigger.yearmonth.js b/src/widget/yearmonth/trigger.yearmonth.js index 0266d7aa4..a41747a8c 100644 --- a/src/widget/yearmonth/trigger.yearmonth.js +++ b/src/widget/yearmonth/trigger.yearmonth.js @@ -21,6 +21,9 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { BI.DynamicYearMonthTrigger.superclass._init.apply(this, arguments); var o = this.options; + var start = BI.parseDateTime(o.min, "%Y-%X-%d"); + var end = BI.parseDateTime(o.max, "%Y-%X-%d"); + this.yearEditor = this._createEditor(true); this.monthEditor = this._createEditor(false); @@ -62,6 +65,8 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { _createEditor: function (isYear) { var self = this, o = this.options, c = this._const; + var start = BI.parseDateTime(o.min, "%Y-%X-%d"); + var end = BI.parseDateTime(o.max, "%Y-%X-%d"); var editor = BI.createWidget({ type: "bi.sign_editor", height: o.height, @@ -78,7 +83,18 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { }, watermark: BI.i18nText("BI-Basic_Unrestricted"), errorText: function (v) { - return BI.i18nText("BI-Year_Trigger_Invalid_Text"); + var year = isYear ? v : self.yearEditor.getValue(); + var month = isYear ? self.monthEditor.getValue() : v; + if (!BI.isPositiveInteger(year) || !BI.isPositiveInteger(month) || month > 12) { + return BI.i18nText("BI-Year_Trigger_Invalid_Text"); + } + + return BI.i18nText("BI-Basic_Year_Month_Range_Error", + start.getFullYear(), + start.getMonth() + 1, + end.getFullYear(), + end.getMonth() + 1 + ); }, hgap: c.hgap, vgap: c.vgap, diff --git a/src/widget/yearquarter/trigger.yearquarter.js b/src/widget/yearquarter/trigger.yearquarter.js index eb807eff2..bf19e80cb 100644 --- a/src/widget/yearquarter/trigger.yearquarter.js +++ b/src/widget/yearquarter/trigger.yearquarter.js @@ -60,6 +60,8 @@ BI.DynamicYearQuarterTrigger = BI.inherit(BI.Trigger, { _createEditor: function (isYear) { var self = this, o = this.options, c = this._const; + var start = BI.parseDateTime(o.min, "%Y-%X-%d"); + var end = BI.parseDateTime(o.max, "%Y-%X-%d"); var editor = BI.createWidget({ type: "bi.sign_editor", height: o.height, @@ -75,12 +77,22 @@ BI.DynamicYearQuarterTrigger = BI.inherit(BI.Trigger, { return false; }, errorText: function (v) { - return BI.i18nText("BI-Year_Trigger_Invalid_Text"); + var year = isYear ? v : self.yearEditor.getValue(); + var quarter = isYear ? self.quarterEditor.getValue() : v; + if (!BI.isPositiveInteger(year) || !BI.isPositiveInteger(quarter) || quarter > 4) { + return BI.i18nText("BI-Year_Trigger_Invalid_Text"); + } + + return BI.i18nText("BI-Basic_Year_Quarter_Range_Error", + start.getFullYear(), + BI.getQuarter(start), + end.getFullYear(), + BI.getQuarter(end) + ); }, watermark: BI.i18nText("BI-Basic_Unrestricted"), hgap: c.hgap, vgap: c.vgap, - title: "", allowBlank: true }); editor.on(BI.SignEditor.EVENT_KEY_DOWN, function () {