Browse Source

BI-17245 年月区间控件

master
windy 7 years ago
parent
commit
4d385c2f0c
  1. 4
      demo/js/config/widget.js
  2. 45
      demo/js/widget/yearmonthinterval/demo.year_month_interval.js
  3. 10
      dist/bundle.css
  4. 240
      dist/bundle.js
  5. 50
      dist/demo.js
  6. 10
      dist/fineui.css
  7. 10
      dist/widget.css
  8. 240
      dist/widget.js
  9. 4
      src/css/widget/timeinterval/timeinterval.css
  10. 6
      src/css/widget/yearmonthinterval/yearmonthinterval.css
  11. 2
      src/less/widget/timeinterval/timeinterval.less
  12. 10
      src/less/widget/yearmonthinterval/yearmonthinterval.less
  13. 6
      src/widget/dynamic/year/combo.year.js
  14. 1
      src/widget/dynamic/year/popup.year.js
  15. 26
      src/widget/dynamic/yearmonth/combo.yearmonth.js
  16. 1
      src/widget/dynamic/yearmonth/popup.yearmonth.js
  17. 14
      src/widget/dynamic/yearmonth/trigger.yearmonth.js
  18. 6
      src/widget/dynamic/yearquarter/combo.yearquarter.js
  19. 1
      src/widget/dynamic/yearquarter/popup.yearquarter.js
  20. 4
      src/widget/dynamicdate/dynamicdate.combo.js
  21. 180
      src/widget/yearmonthinterval/yearmonthinterval.js

4
demo/js/config/widget.js

@ -198,6 +198,10 @@ Demo.WIDGET_CONFIG = [{
pId: 412,
text: "bi.time_interval",
value: "demo.time_interval"
}, {
pId: 412,
text: "bi.year_month_interval",
value: "demo.year_month_interval"
}, {
pId: 4,
id: 413,

45
demo/js/widget/yearmonthinterval/demo.year_month_interval.js

@ -0,0 +1,45 @@
Demo.YearMonthInterval = BI.inherit(BI.Widget, {
props: {
baseCls: ""
},
render: function () {
var self = this;
return {
type: "bi.horizontal_auto",
items: [{
type: "bi.year_month_interval",
ref: function (_ref) {
self.interval = _ref;
},
value: {
start: {
type: 2,
value: {
year: -1,
month: 1
}
},
end: {
type: 1,
value: {
year: 2018,
month: 0
}
}
},
width: 400
}, {
type: "bi.button",
text: "getValue",
handler: function () {
BI.Msg.toast(JSON.stringify(self.interval.getValue()));
},
width: 300
}],
vgap: 20
};
}
});
BI.shortcut("demo.year_month_interval", Demo.YearMonthInterval);

10
dist/bundle.css vendored

@ -5088,10 +5088,10 @@ ul.ztree.zTreeDragUL {
-moz-border-radius: 3px;
border-radius: 3px;
}
.bi-param-time-interval.time-error .bi-input {
.bi-time-interval.time-error .bi-input {
color: #ff4949;
}
.bi-param-time-interval.time-error .sign-editor-text {
.bi-time-interval.time-error .sign-editor-text {
color: #ff4949;
}
.bi-year-popup .year-popup-navigation {
@ -5134,6 +5134,12 @@ ul.ztree.zTreeDragUL {
-moz-border-radius: 2px;
border-radius: 2px;
}
.bi-year-month-interval.time-error .bi-input {
color: #ff4949;
}
.bi-year-month-interval.time-error .sign-editor-text {
color: #ff4949;
}
html,
button,
input,

240
dist/bundle.js vendored

@ -89688,7 +89688,7 @@ BI.shortcut("bi.static_year_card", BI.StaticYearCard);BI.DynamicYearCombo = BI.i
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -89798,7 +89798,7 @@ BI.shortcut("bi.static_year_card", BI.StaticYearCard);BI.DynamicYearCombo = BI.i
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -89812,7 +89812,7 @@ BI.shortcut("bi.static_year_card", BI.StaticYearCard);BI.DynamicYearCombo = BI.i
switch (type) {
case BI.DynamicYearCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -89934,7 +89934,6 @@ BI.DynamicYearPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearCombo.Static,
ref: function () {
self.dateTab = this;
},
@ -90383,14 +90382,14 @@ BI.shortcut("bi.dynamic_year_month_card", BI.DynamicYearMonthCard);BI.StaticYear
}
});
BI.StaticYearMonthCard.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearMonthCombo = BI.inherit(BI.Single, {
props: {
baseCls: "bi-year-month-combo bi-border",
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -90411,6 +90410,10 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_ERROR, function () {
self.combo.isViewVisible() && self.combo.hideView();
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_ERROR);
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_VALID, function () {
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_VALID);
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_CONFIRM, function () {
if (self.combo.isViewVisible()) {
@ -90419,6 +90422,9 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
self.storeValue = self.trigger.getValue();
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_CONFIRM);
});
this.trigger.on(BI.DynamicYearMonthCombo.EVENT_FOCUS, function () {
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_FOCUS);
});
this.combo = BI.createWidget({
type: "bi.combo",
@ -90491,7 +90497,7 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -90505,7 +90511,7 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
switch (type) {
case BI.DynamicYearMonthCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -90516,6 +90522,10 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
}
},
hideView: function () {
this.combo.hideView();
},
setValue: function (v) {
this.storeValue = v;
this.trigger.setValue(v);
@ -90524,9 +90534,16 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
getValue: function () {
return this.storeValue;
},
getKey: function () {
return this.trigger.getKey();
}
});
BI.DynamicYearMonthCombo.EVENT_ERROR = "EVENT_ERROR";
BI.DynamicYearMonthCombo.EVENT_VALID = "EVENT_VALID";
BI.DynamicYearMonthCombo.EVENT_FOCUS = "EVENT_FOCUS";
BI.DynamicYearMonthCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
BI.shortcut("bi.dynamic_year_month_combo", BI.DynamicYearMonthCombo);
@ -90627,7 +90644,6 @@ BI.DynamicYearMonthPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearCombo.Static,
ref: function () {
self.dateTab = this;
},
@ -90855,6 +90871,15 @@ BI.shortcut("bi.dynamic_year_month_popup", BI.DynamicYearMonthPopup);BI.DynamicY
editor.on(BI.SignEditor.EVENT_ERROR, function () {
self.fireEvent(BI.DynamicYearMonthTrigger.EVENT_ERROR);
});
editor.on(BI.SignEditor.EVENT_VALID, function () {
var year = self.yearEditor.getValue();
var month = self.monthEditor.getValue();
if(BI.isNotEmptyString(year) && BI.isNotEmptyString(month)) {
if(BI.isPositiveInteger(year) && month >= 1 && month <= 12 && !BI.checkDateVoid(year, month, 1, o.min, o.max)[0]) {
self.fireEvent(BI.DynamicYearMonthTrigger.EVENT_VALID);
}
}
});
editor.on(BI.SignEditor.EVENT_CHANGE, function () {
if(isYear) {
self._autoSwitch(editor.getValue());
@ -90923,8 +90948,13 @@ BI.shortcut("bi.dynamic_year_month_popup", BI.DynamicYearMonthPopup);BI.DynamicY
getValue: function () {
return this.storeValue;
},
getKey: function () {
return this.yearEditor.getValue() + "-" + this.monthEditor.getValue();
}
});
BI.DynamicYearMonthTrigger.EVENT_VALID = "EVENT_FOCUS";
BI.DynamicYearMonthTrigger.EVENT_FOCUS = "EVENT_FOCUS";
BI.DynamicYearMonthTrigger.EVENT_ERROR = "EVENT_ERROR";
BI.DynamicYearMonthTrigger.EVENT_START = "EVENT_START";
@ -91120,7 +91150,7 @@ BI.shortcut("bi.static_year_quarter_card", BI.StaticYearQuarterCard);BI.DynamicY
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -91221,7 +91251,7 @@ BI.shortcut("bi.static_year_quarter_card", BI.StaticYearQuarterCard);BI.DynamicY
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -91235,7 +91265,7 @@ BI.shortcut("bi.static_year_quarter_card", BI.StaticYearQuarterCard);BI.DynamicY
switch (type) {
case BI.DynamicYearQuarterCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -91350,7 +91380,6 @@ BI.extend(BI.DynamicYearQuarterCombo, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearQuarterCombo.Static,
ref: function () {
self.dateTab = this;
},
@ -92050,7 +92079,7 @@ BI.extend(BI.DynamicDateCard, {
self.changeIcon = this;
}
},
width: 30
width: 24
}, {
type: "bi.absolute",
items: [{
@ -92235,7 +92264,7 @@ BI.extend(BI.DynamicDateCard, {
switch (type) {
case BI.DynamicDateCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -108571,7 +108600,186 @@ BI.YearMonthCombo = BI.inherit(BI.Widget, {
});
BI.YearMonthCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.YearMonthCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
BI.shortcut("bi.year_month_combo", BI.YearMonthCombo);/**
BI.shortcut("bi.year_month_combo", BI.YearMonthCombo);BI.YearMonthInterval = BI.inherit(BI.Single, {
constants: {
height: 25,
width: 25,
lgap: 15,
offset: -15,
timeErrorCls: "time-error",
DATE_MIN_VALUE: "1900-01-01",
DATE_MAX_VALUE: "2099-12-31"
},
props: {
extraCls: "bi-year-month-interval"
},
_init: function () {
var self = this, o = this.options;
BI.YearMonthInterval.superclass._init.apply(this, arguments);
o.value = o.value || {};
this.left = this._createCombo(o.value.start);
this.right = this._createCombo(o.value.end);
this.label = BI.createWidget({
type: "bi.label",
height: this.constants.height,
width: this.constants.width,
text: "-"
});
BI.createWidget({
element: self,
type: "bi.center",
hgap: 15,
height: this.constants.height,
items: [{
type: "bi.absolute",
items: [{
el: self.left,
left: this.constants.offset,
right: 0,
top: 0,
bottom: 0
}]
}, {
type: "bi.absolute",
items: [{
el: self.right,
left: 0,
right: this.constants.offset,
top: 0,
bottom: 0
}]
}]
});
BI.createWidget({
type: "bi.horizontal_auto",
element: this,
items: [
self.label
]
});
},
_createCombo: function (v) {
var self = this;
var combo = BI.createWidget({
type: "bi.dynamic_year_month_combo",
value: v
});
combo.on(BI.DynamicYearMonthCombo.EVENT_ERROR, function () {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
});
combo.on(BI.DynamicYearMonthCombo.EVENT_VALID, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
BI.Bubbles.show("error", BI.i18nText("BI-Time_Interval_Error_Text"), self, {
offsetStyle: "center"
});
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
} else {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
}
});
combo.on(BI.DynamicYearMonthCombo.EVENT_FOCUS, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
BI.Bubbles.show("error", BI.i18nText("BI-Time_Interval_Error_Text"), self, {
offsetStyle: "center"
});
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
} else {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
}
});
combo.on(BI.DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW, function () {
self.left.hideView();
self.right.hideView();
});
combo.on(BI.DynamicYearMonthCombo.EVENT_CONFIRM, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
}else{
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_CHANGE);
}
});
return combo;
},
_dateCheck: function (date) {
return BI.parseDateTime(date, "%Y-%x").print("%Y-%x") === date || BI.parseDateTime(date, "%Y-%X").print("%Y-%X") === date;
},
// 判是否在最大最小之间
_checkVoid: function (obj) {
return !BI.checkDateVoid(obj.year, obj.month, 1, this.constants.DATE_MIN_VALUE, this.constants.DATE_MAX_VALUE)[0];
},
// 判格式合法
_check: function (smallDate, bigDate) {
var smallObj = smallDate.match(/\d+/g), bigObj = bigDate.match(/\d+/g);
return this._dateCheck(smallDate) && BI.checkDateLegal(smallDate) && this._checkVoid({
year: smallObj[0],
month: smallObj[1],
day: 1
}) && this._dateCheck(bigDate) && BI.checkDateLegal(bigDate) && this._checkVoid({
year: bigObj[0],
month: bigObj[1],
day: 1
});
},
_compare: function (smallDate, bigDate) {
smallDate = BI.parseDateTime(smallDate, "%Y-%X").print("%Y-%X");
bigDate = BI.parseDateTime(bigDate, "%Y-%X").print("%Y-%X");
return BI.isNotNull(smallDate) && BI.isNotNull(bigDate) && smallDate > bigDate;
},
_setTitle: function (v) {
this.left.setTitle(v);
this.right.setTitle(v);
this.label.setTitle(v);
},
_clearTitle: function () {
this.left.setTitle("");
this.right.setTitle("");
this.label.setTitle("");
},
setValue: function (date) {
date = date || {};
this.left.setValue(date.start);
this.right.setValue(date.end);
},
getValue: function () {
return {start: this.left.getValue(), end: this.right.getValue()};
}
});
BI.YearMonthInterval.EVENT_VALID = "EVENT_VALID";
BI.YearMonthInterval.EVENT_ERROR = "EVENT_ERROR";
BI.YearMonthInterval.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.year_month_interval", BI.YearMonthInterval);/**
* 年份 + 月份下拉框
*
* @class BI.YearQuarterCombo

50
dist/demo.js vendored

@ -5852,6 +5852,10 @@ Demo.FIX_CONFIG = [{
pId: 412,
text: "bi.time_interval",
value: "demo.time_interval"
}, {
pId: 412,
text: "bi.year_month_interval",
value: "demo.year_month_interval"
}, {
pId: 4,
id: 413,
@ -14512,7 +14516,51 @@ Demo.YearMonthCombo = BI.inherit(BI.Widget, {
}
});
BI.shortcut("demo.year_month_combo", Demo.YearMonthCombo);/**
BI.shortcut("demo.year_month_combo", Demo.YearMonthCombo);Demo.YearMonthInterval = BI.inherit(BI.Widget, {
props: {
baseCls: ""
},
render: function () {
var self = this;
return {
type: "bi.horizontal_auto",
items: [{
type: "bi.year_month_interval",
ref: function (_ref) {
self.interval = _ref;
},
value: {
start: {
type: 2,
value: {
year: -1,
month: 1
}
},
end: {
type: 1,
value: {
year: 2018,
month: 0
}
}
},
width: 400
}, {
type: "bi.button",
text: "getValue",
handler: function () {
BI.Msg.toast(JSON.stringify(self.interval.getValue()));
},
width: 300
}],
vgap: 20
};
}
});
BI.shortcut("demo.year_month_interval", Demo.YearMonthInterval);/**
* Created by Dailer on 2017/7/13.
*/
Demo.YearQuarterCombo = BI.inherit(BI.Widget, {

10
dist/fineui.css vendored

@ -5088,10 +5088,10 @@ ul.ztree.zTreeDragUL {
-moz-border-radius: 3px;
border-radius: 3px;
}
.bi-param-time-interval.time-error .bi-input {
.bi-time-interval.time-error .bi-input {
color: #ff4949;
}
.bi-param-time-interval.time-error .sign-editor-text {
.bi-time-interval.time-error .sign-editor-text {
color: #ff4949;
}
.bi-year-popup .year-popup-navigation {
@ -5134,6 +5134,12 @@ ul.ztree.zTreeDragUL {
-moz-border-radius: 2px;
border-radius: 2px;
}
.bi-year-month-interval.time-error .bi-input {
color: #ff4949;
}
.bi-year-month-interval.time-error .sign-editor-text {
color: #ff4949;
}
html,
button,
input,

10
dist/widget.css vendored

@ -612,10 +612,10 @@
-moz-border-radius: 3px;
border-radius: 3px;
}
.bi-param-time-interval.time-error .bi-input {
.bi-time-interval.time-error .bi-input {
color: #ff4949;
}
.bi-param-time-interval.time-error .sign-editor-text {
.bi-time-interval.time-error .sign-editor-text {
color: #ff4949;
}
.bi-year-popup .year-popup-navigation {
@ -658,3 +658,9 @@
-moz-border-radius: 2px;
border-radius: 2px;
}
.bi-year-month-interval.time-error .bi-input {
color: #ff4949;
}
.bi-year-month-interval.time-error .sign-editor-text {
color: #ff4949;
}

240
dist/widget.js vendored

@ -3016,7 +3016,7 @@ BI.shortcut("bi.static_year_card", BI.StaticYearCard);BI.DynamicYearCombo = BI.i
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -3126,7 +3126,7 @@ BI.shortcut("bi.static_year_card", BI.StaticYearCard);BI.DynamicYearCombo = BI.i
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -3140,7 +3140,7 @@ BI.shortcut("bi.static_year_card", BI.StaticYearCard);BI.DynamicYearCombo = BI.i
switch (type) {
case BI.DynamicYearCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -3262,7 +3262,6 @@ BI.DynamicYearPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearCombo.Static,
ref: function () {
self.dateTab = this;
},
@ -3711,14 +3710,14 @@ BI.shortcut("bi.dynamic_year_month_card", BI.DynamicYearMonthCard);BI.StaticYear
}
});
BI.StaticYearMonthCard.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearMonthCombo = BI.inherit(BI.Single, {
props: {
baseCls: "bi-year-month-combo bi-border",
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -3739,6 +3738,10 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_ERROR, function () {
self.combo.isViewVisible() && self.combo.hideView();
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_ERROR);
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_VALID, function () {
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_VALID);
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_CONFIRM, function () {
if (self.combo.isViewVisible()) {
@ -3747,6 +3750,9 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
self.storeValue = self.trigger.getValue();
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_CONFIRM);
});
this.trigger.on(BI.DynamicYearMonthCombo.EVENT_FOCUS, function () {
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_FOCUS);
});
this.combo = BI.createWidget({
type: "bi.combo",
@ -3819,7 +3825,7 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -3833,7 +3839,7 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
switch (type) {
case BI.DynamicYearMonthCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -3844,6 +3850,10 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
}
},
hideView: function () {
this.combo.hideView();
},
setValue: function (v) {
this.storeValue = v;
this.trigger.setValue(v);
@ -3852,9 +3862,16 @@ BI.shortcut("bi.static_year_month_card", BI.StaticYearMonthCard);BI.DynamicYearM
getValue: function () {
return this.storeValue;
},
getKey: function () {
return this.trigger.getKey();
}
});
BI.DynamicYearMonthCombo.EVENT_ERROR = "EVENT_ERROR";
BI.DynamicYearMonthCombo.EVENT_VALID = "EVENT_VALID";
BI.DynamicYearMonthCombo.EVENT_FOCUS = "EVENT_FOCUS";
BI.DynamicYearMonthCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
BI.shortcut("bi.dynamic_year_month_combo", BI.DynamicYearMonthCombo);
@ -3955,7 +3972,6 @@ BI.DynamicYearMonthPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearCombo.Static,
ref: function () {
self.dateTab = this;
},
@ -4183,6 +4199,15 @@ BI.shortcut("bi.dynamic_year_month_popup", BI.DynamicYearMonthPopup);BI.DynamicY
editor.on(BI.SignEditor.EVENT_ERROR, function () {
self.fireEvent(BI.DynamicYearMonthTrigger.EVENT_ERROR);
});
editor.on(BI.SignEditor.EVENT_VALID, function () {
var year = self.yearEditor.getValue();
var month = self.monthEditor.getValue();
if(BI.isNotEmptyString(year) && BI.isNotEmptyString(month)) {
if(BI.isPositiveInteger(year) && month >= 1 && month <= 12 && !BI.checkDateVoid(year, month, 1, o.min, o.max)[0]) {
self.fireEvent(BI.DynamicYearMonthTrigger.EVENT_VALID);
}
}
});
editor.on(BI.SignEditor.EVENT_CHANGE, function () {
if(isYear) {
self._autoSwitch(editor.getValue());
@ -4251,8 +4276,13 @@ BI.shortcut("bi.dynamic_year_month_popup", BI.DynamicYearMonthPopup);BI.DynamicY
getValue: function () {
return this.storeValue;
},
getKey: function () {
return this.yearEditor.getValue() + "-" + this.monthEditor.getValue();
}
});
BI.DynamicYearMonthTrigger.EVENT_VALID = "EVENT_FOCUS";
BI.DynamicYearMonthTrigger.EVENT_FOCUS = "EVENT_FOCUS";
BI.DynamicYearMonthTrigger.EVENT_ERROR = "EVENT_ERROR";
BI.DynamicYearMonthTrigger.EVENT_START = "EVENT_START";
@ -4448,7 +4478,7 @@ BI.shortcut("bi.static_year_quarter_card", BI.StaticYearQuarterCard);BI.DynamicY
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -4549,7 +4579,7 @@ BI.shortcut("bi.static_year_quarter_card", BI.StaticYearQuarterCard);BI.DynamicY
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -4563,7 +4593,7 @@ BI.shortcut("bi.static_year_quarter_card", BI.StaticYearQuarterCard);BI.DynamicY
switch (type) {
case BI.DynamicYearQuarterCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -4678,7 +4708,6 @@ BI.extend(BI.DynamicYearQuarterCombo, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearQuarterCombo.Static,
ref: function () {
self.dateTab = this;
},
@ -5378,7 +5407,7 @@ BI.extend(BI.DynamicDateCard, {
self.changeIcon = this;
}
},
width: 30
width: 24
}, {
type: "bi.absolute",
items: [{
@ -5563,7 +5592,7 @@ BI.extend(BI.DynamicDateCard, {
switch (type) {
case BI.DynamicDateCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -21899,7 +21928,186 @@ BI.YearMonthCombo = BI.inherit(BI.Widget, {
});
BI.YearMonthCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.YearMonthCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
BI.shortcut("bi.year_month_combo", BI.YearMonthCombo);/**
BI.shortcut("bi.year_month_combo", BI.YearMonthCombo);BI.YearMonthInterval = BI.inherit(BI.Single, {
constants: {
height: 25,
width: 25,
lgap: 15,
offset: -15,
timeErrorCls: "time-error",
DATE_MIN_VALUE: "1900-01-01",
DATE_MAX_VALUE: "2099-12-31"
},
props: {
extraCls: "bi-year-month-interval"
},
_init: function () {
var self = this, o = this.options;
BI.YearMonthInterval.superclass._init.apply(this, arguments);
o.value = o.value || {};
this.left = this._createCombo(o.value.start);
this.right = this._createCombo(o.value.end);
this.label = BI.createWidget({
type: "bi.label",
height: this.constants.height,
width: this.constants.width,
text: "-"
});
BI.createWidget({
element: self,
type: "bi.center",
hgap: 15,
height: this.constants.height,
items: [{
type: "bi.absolute",
items: [{
el: self.left,
left: this.constants.offset,
right: 0,
top: 0,
bottom: 0
}]
}, {
type: "bi.absolute",
items: [{
el: self.right,
left: 0,
right: this.constants.offset,
top: 0,
bottom: 0
}]
}]
});
BI.createWidget({
type: "bi.horizontal_auto",
element: this,
items: [
self.label
]
});
},
_createCombo: function (v) {
var self = this;
var combo = BI.createWidget({
type: "bi.dynamic_year_month_combo",
value: v
});
combo.on(BI.DynamicYearMonthCombo.EVENT_ERROR, function () {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
});
combo.on(BI.DynamicYearMonthCombo.EVENT_VALID, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
BI.Bubbles.show("error", BI.i18nText("BI-Time_Interval_Error_Text"), self, {
offsetStyle: "center"
});
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
} else {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
}
});
combo.on(BI.DynamicYearMonthCombo.EVENT_FOCUS, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
BI.Bubbles.show("error", BI.i18nText("BI-Time_Interval_Error_Text"), self, {
offsetStyle: "center"
});
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
} else {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
}
});
combo.on(BI.DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW, function () {
self.left.hideView();
self.right.hideView();
});
combo.on(BI.DynamicYearMonthCombo.EVENT_CONFIRM, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
}else{
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_CHANGE);
}
});
return combo;
},
_dateCheck: function (date) {
return BI.parseDateTime(date, "%Y-%x").print("%Y-%x") === date || BI.parseDateTime(date, "%Y-%X").print("%Y-%X") === date;
},
// 判是否在最大最小之间
_checkVoid: function (obj) {
return !BI.checkDateVoid(obj.year, obj.month, 1, this.constants.DATE_MIN_VALUE, this.constants.DATE_MAX_VALUE)[0];
},
// 判格式合法
_check: function (smallDate, bigDate) {
var smallObj = smallDate.match(/\d+/g), bigObj = bigDate.match(/\d+/g);
return this._dateCheck(smallDate) && BI.checkDateLegal(smallDate) && this._checkVoid({
year: smallObj[0],
month: smallObj[1],
day: 1
}) && this._dateCheck(bigDate) && BI.checkDateLegal(bigDate) && this._checkVoid({
year: bigObj[0],
month: bigObj[1],
day: 1
});
},
_compare: function (smallDate, bigDate) {
smallDate = BI.parseDateTime(smallDate, "%Y-%X").print("%Y-%X");
bigDate = BI.parseDateTime(bigDate, "%Y-%X").print("%Y-%X");
return BI.isNotNull(smallDate) && BI.isNotNull(bigDate) && smallDate > bigDate;
},
_setTitle: function (v) {
this.left.setTitle(v);
this.right.setTitle(v);
this.label.setTitle(v);
},
_clearTitle: function () {
this.left.setTitle("");
this.right.setTitle("");
this.label.setTitle("");
},
setValue: function (date) {
date = date || {};
this.left.setValue(date.start);
this.right.setValue(date.end);
},
getValue: function () {
return {start: this.left.getValue(), end: this.right.getValue()};
}
});
BI.YearMonthInterval.EVENT_VALID = "EVENT_VALID";
BI.YearMonthInterval.EVENT_ERROR = "EVENT_ERROR";
BI.YearMonthInterval.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.year_month_interval", BI.YearMonthInterval);/**
* 年份 + 月份下拉框
*
* @class BI.YearQuarterCombo

4
src/css/widget/timeinterval/timeinterval.css

@ -1,6 +1,6 @@
.bi-param-time-interval.time-error .bi-input {
.bi-time-interval.time-error .bi-input {
color: #ff4949;
}
.bi-param-time-interval.time-error .sign-editor-text {
.bi-time-interval.time-error .sign-editor-text {
color: #ff4949;
}

6
src/css/widget/yearmonthinterval/yearmonthinterval.css

@ -0,0 +1,6 @@
.bi-year-month-interval.time-error .bi-input {
color: #ff4949;
}
.bi-year-month-interval.time-error .sign-editor-text {
color: #ff4949;
}

2
src/less/widget/timeinterval/timeinterval.less

@ -1,6 +1,6 @@
@import "../../index";
.bi-param-time-interval{
.bi-time-interval{
&.time-error .bi-input{
color:@color-bi-text-failure
}

10
src/less/widget/yearmonthinterval/yearmonthinterval.less

@ -0,0 +1,10 @@
@import "../../index";
.bi-year-month-interval{
&.time-error .bi-input{
color:@color-bi-text-failure
}
&.time-error .sign-editor-text{
color:@color-bi-text-failure
}
}

6
src/widget/dynamic/year/combo.year.js

@ -5,7 +5,7 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, {
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -115,7 +115,7 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, {
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -129,7 +129,7 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, {
switch (type) {
case BI.DynamicYearCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:

1
src/widget/dynamic/year/popup.year.js

@ -91,7 +91,6 @@ BI.DynamicYearPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearCombo.Static,
ref: function () {
self.dateTab = this;
},

26
src/widget/dynamic/yearmonth/combo.yearmonth.js

@ -1,11 +1,11 @@
BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
BI.DynamicYearMonthCombo = BI.inherit(BI.Single, {
props: {
baseCls: "bi-year-month-combo bi-border",
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -26,6 +26,10 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_ERROR, function () {
self.combo.isViewVisible() && self.combo.hideView();
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_ERROR);
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_VALID, function () {
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_VALID);
});
this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_CONFIRM, function () {
if (self.combo.isViewVisible()) {
@ -34,6 +38,9 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
self.storeValue = self.trigger.getValue();
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_CONFIRM);
});
this.trigger.on(BI.DynamicYearMonthCombo.EVENT_FOCUS, function () {
self.fireEvent(BI.DynamicYearMonthCombo.EVENT_FOCUS);
});
this.combo = BI.createWidget({
type: "bi.combo",
@ -106,7 +113,7 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -120,7 +127,7 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
switch (type) {
case BI.DynamicYearMonthCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:
@ -131,6 +138,10 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
}
},
hideView: function () {
this.combo.hideView();
},
setValue: function (v) {
this.storeValue = v;
this.trigger.setValue(v);
@ -139,9 +150,16 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Widget, {
getValue: function () {
return this.storeValue;
},
getKey: function () {
return this.trigger.getKey();
}
});
BI.DynamicYearMonthCombo.EVENT_ERROR = "EVENT_ERROR";
BI.DynamicYearMonthCombo.EVENT_VALID = "EVENT_VALID";
BI.DynamicYearMonthCombo.EVENT_FOCUS = "EVENT_FOCUS";
BI.DynamicYearMonthCombo.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW";
BI.shortcut("bi.dynamic_year_month_combo", BI.DynamicYearMonthCombo);

1
src/widget/dynamic/yearmonth/popup.yearmonth.js

@ -91,7 +91,6 @@ BI.DynamicYearMonthPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearCombo.Static,
ref: function () {
self.dateTab = this;
},

14
src/widget/dynamic/yearmonth/trigger.yearmonth.js

@ -113,6 +113,15 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, {
editor.on(BI.SignEditor.EVENT_ERROR, function () {
self.fireEvent(BI.DynamicYearMonthTrigger.EVENT_ERROR);
});
editor.on(BI.SignEditor.EVENT_VALID, function () {
var year = self.yearEditor.getValue();
var month = self.monthEditor.getValue();
if(BI.isNotEmptyString(year) && BI.isNotEmptyString(month)) {
if(BI.isPositiveInteger(year) && month >= 1 && month <= 12 && !BI.checkDateVoid(year, month, 1, o.min, o.max)[0]) {
self.fireEvent(BI.DynamicYearMonthTrigger.EVENT_VALID);
}
}
});
editor.on(BI.SignEditor.EVENT_CHANGE, function () {
if(isYear) {
self._autoSwitch(editor.getValue());
@ -181,8 +190,13 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, {
getValue: function () {
return this.storeValue;
},
getKey: function () {
return this.yearEditor.getValue() + "-" + this.monthEditor.getValue();
}
});
BI.DynamicYearMonthTrigger.EVENT_VALID = "EVENT_FOCUS";
BI.DynamicYearMonthTrigger.EVENT_FOCUS = "EVENT_FOCUS";
BI.DynamicYearMonthTrigger.EVENT_ERROR = "EVENT_ERROR";
BI.DynamicYearMonthTrigger.EVENT_START = "EVENT_START";

6
src/widget/dynamic/yearquarter/combo.yearquarter.js

@ -5,7 +5,7 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, {
behaviors: {},
min: "1900-01-01", // 最小日期
max: "2099-12-31", // 最大日期
height: 25
height: 24
},
_init: function () {
@ -106,7 +106,7 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, {
self.changeIcon = this;
}
},
width: 30
width: 24
}, this.combo]
});
this._checkDynamicValue(o.value);
@ -120,7 +120,7 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, {
switch (type) {
case BI.DynamicYearQuarterCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:

1
src/widget/dynamic/yearquarter/popup.yearquarter.js

@ -84,7 +84,6 @@ BI.DynamicYearQuarterPopup = BI.inherit(BI.Widget, {
var self = this, o = this.options;
return {
type: "bi.tab",
showIndex: BI.DynamicYearQuarterCombo.Static,
ref: function () {
self.dateTab = this;
},

4
src/widget/dynamicdate/dynamicdate.combo.js

@ -31,7 +31,7 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, {
self.changeIcon = this;
}
},
width: 30
width: 24
}, {
type: "bi.absolute",
items: [{
@ -216,7 +216,7 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, {
switch (type) {
case BI.DynamicDateCombo.Dynamic:
this.changeIcon.setVisible(true);
this.comboWrapper.attr("items")[0].width = 30;
this.comboWrapper.attr("items")[0].width = 24;
this.comboWrapper.resize();
break;
default:

180
src/widget/yearmonthinterval/yearmonthinterval.js

@ -0,0 +1,180 @@
BI.YearMonthInterval = BI.inherit(BI.Single, {
constants: {
height: 25,
width: 25,
lgap: 15,
offset: -15,
timeErrorCls: "time-error",
DATE_MIN_VALUE: "1900-01-01",
DATE_MAX_VALUE: "2099-12-31"
},
props: {
extraCls: "bi-year-month-interval"
},
_init: function () {
var self = this, o = this.options;
BI.YearMonthInterval.superclass._init.apply(this, arguments);
o.value = o.value || {};
this.left = this._createCombo(o.value.start);
this.right = this._createCombo(o.value.end);
this.label = BI.createWidget({
type: "bi.label",
height: this.constants.height,
width: this.constants.width,
text: "-"
});
BI.createWidget({
element: self,
type: "bi.center",
hgap: 15,
height: this.constants.height,
items: [{
type: "bi.absolute",
items: [{
el: self.left,
left: this.constants.offset,
right: 0,
top: 0,
bottom: 0
}]
}, {
type: "bi.absolute",
items: [{
el: self.right,
left: 0,
right: this.constants.offset,
top: 0,
bottom: 0
}]
}]
});
BI.createWidget({
type: "bi.horizontal_auto",
element: this,
items: [
self.label
]
});
},
_createCombo: function (v) {
var self = this;
var combo = BI.createWidget({
type: "bi.dynamic_year_month_combo",
value: v
});
combo.on(BI.DynamicYearMonthCombo.EVENT_ERROR, function () {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
});
combo.on(BI.DynamicYearMonthCombo.EVENT_VALID, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
BI.Bubbles.show("error", BI.i18nText("BI-Time_Interval_Error_Text"), self, {
offsetStyle: "center"
});
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
} else {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
}
});
combo.on(BI.DynamicYearMonthCombo.EVENT_FOCUS, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
BI.Bubbles.show("error", BI.i18nText("BI-Time_Interval_Error_Text"), self, {
offsetStyle: "center"
});
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
} else {
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
}
});
combo.on(BI.DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW, function () {
self.left.hideView();
self.right.hideView();
});
combo.on(BI.DynamicYearMonthCombo.EVENT_CONFIRM, function () {
BI.Bubbles.hide("error");
var smallDate = self.left.getKey(), bigDate = self.right.getKey();
if (self._check(smallDate, bigDate) && self._compare(smallDate, bigDate)) {
self._setTitle(BI.i18nText("BI-Time_Interval_Error_Text"));
self.element.addClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_ERROR);
}else{
self._clearTitle();
self.element.removeClass(self.constants.timeErrorCls);
self.fireEvent(BI.YearMonthInterval.EVENT_CHANGE);
}
});
return combo;
},
_dateCheck: function (date) {
return BI.parseDateTime(date, "%Y-%x").print("%Y-%x") === date || BI.parseDateTime(date, "%Y-%X").print("%Y-%X") === date;
},
// 判是否在最大最小之间
_checkVoid: function (obj) {
return !BI.checkDateVoid(obj.year, obj.month, 1, this.constants.DATE_MIN_VALUE, this.constants.DATE_MAX_VALUE)[0];
},
// 判格式合法
_check: function (smallDate, bigDate) {
var smallObj = smallDate.match(/\d+/g), bigObj = bigDate.match(/\d+/g);
return this._dateCheck(smallDate) && BI.checkDateLegal(smallDate) && this._checkVoid({
year: smallObj[0],
month: smallObj[1],
day: 1
}) && this._dateCheck(bigDate) && BI.checkDateLegal(bigDate) && this._checkVoid({
year: bigObj[0],
month: bigObj[1],
day: 1
});
},
_compare: function (smallDate, bigDate) {
smallDate = BI.parseDateTime(smallDate, "%Y-%X").print("%Y-%X");
bigDate = BI.parseDateTime(bigDate, "%Y-%X").print("%Y-%X");
return BI.isNotNull(smallDate) && BI.isNotNull(bigDate) && smallDate > bigDate;
},
_setTitle: function (v) {
this.left.setTitle(v);
this.right.setTitle(v);
this.label.setTitle(v);
},
_clearTitle: function () {
this.left.setTitle("");
this.right.setTitle("");
this.label.setTitle("");
},
setValue: function (date) {
date = date || {};
this.left.setValue(date.start);
this.right.setValue(date.end);
},
getValue: function () {
return {start: this.left.getValue(), end: this.right.getValue()};
}
});
BI.YearMonthInterval.EVENT_VALID = "EVENT_VALID";
BI.YearMonthInterval.EVENT_ERROR = "EVENT_ERROR";
BI.YearMonthInterval.EVENT_CHANGE = "EVENT_CHANGE";
BI.shortcut("bi.year_month_interval", BI.YearMonthInterval);
Loading…
Cancel
Save