///////////////////////////////////////////////////////////////////////////
|
// Copyright © 2014 - 2018 Esri. All Rights Reserved.
|
//
|
// Licensed under the Apache License Version 2.0 (the "License");
|
// you may not use this file except in compliance with the License.
|
// You may obtain a copy of the License at
|
//
|
// http://www.apache.org/licenses/LICENSE-2.0
|
//
|
// Unless required by applicable law or agreed to in writing, software
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// See the License for the specific language governing permissions and
|
// limitations under the License.
|
///////////////////////////////////////////////////////////////////////////
|
|
define([
|
'dojo/Evented',
|
'dojo/_base/html',
|
'dojo/_base/declare',
|
'./ValueProvider',
|
'dijit/_WidgetsInTemplateMixin',
|
'./DateValueSelector',
|
'dojo/text!./TwoDatesValueProvider.html'
|
// 'jimu/dijit/_filter/DateValueSelector'
|
],
|
function(Evented, html, declare, ValueProvider, _WidgetsInTemplateMixin, DateValueSelector, template) {
|
|
return declare([ValueProvider, _WidgetsInTemplateMixin, Evented], {
|
|
templateString: template,
|
|
postCreate: function(){
|
this.inherited(arguments);
|
html.addClass(this.domNode, 'jimu-two-dates-filter-value-provider');
|
|
this._dijit1 = new DateValueSelector({
|
popupInfo: this.popupInfo,
|
_fieldInfo: this.fieldInfo,
|
style:{"width":"100%"}
|
}, this._dijitDiv1);
|
this._dijit2 = new DateValueSelector({
|
popupInfo: this.popupInfo,
|
_fieldInfo: this.fieldInfo,
|
style:{"width":"100%"}
|
}, this._dijitDiv2);
|
},
|
_initDateSelectors:function(){
|
},
|
|
// _onRangeDateBlur:function(){
|
// if(this._dijit1.validate() && this._dijit2.validate()){
|
// var date1 = this._dijit1.get('value');
|
// var time1 = date1.getTime();
|
// var date2 = this._dijit2.get('value');
|
// var time2 = date2.getTime();
|
// if(time1 > time2){
|
// this._dijit1.set('value', date2);
|
// this._dijit2.set('value', date1);
|
// }
|
// }
|
// },
|
|
_onDateValueSelectorChanged: function(){
|
this.emit('change');
|
},
|
|
getDijits: function(){
|
return [this._dijit1, this._dijit2];
|
},
|
|
setValueObject: function(valueObj){
|
this._setValueObject(this._dijit1, valueObj, 'value1', 'virtualDate1');
|
this._setValueObject(this._dijit2, valueObj, 'value2', 'virtualDate2');
|
},
|
|
_setValueObject: function(dateValueSelector, valueObj, valueName, virtualDateName){
|
//valueName is 'value1' or 'value2'
|
if(this.isDefined(valueObj[valueName])){
|
var dateValueObject = {
|
value: null,
|
virtualDate: ''
|
};
|
dateValueObject.value = valueObj[valueName];
|
dateValueObject.virtualDate = valueObj[virtualDateName];
|
dateValueSelector.setValueObject(dateValueObject);
|
}
|
},
|
|
getValueObject: function(){
|
if(this.isValidValue()){
|
var dateValueObject1 = this._dijit1.getValueObject();
|
var dateValueObject2 = this._dijit2.getValueObject();
|
if(dateValueObject1.value && dateValueObject2.value){
|
return {
|
"isValid": true,
|
"type": this.partObj.valueObj.type,
|
"value1": dateValueObject1.value,//date string
|
"value2": dateValueObject2.value,//date string
|
"virtualDate1": dateValueObject1.virtualDate,//today,yesterday,...
|
"virtualDate2": dateValueObject2.virtualDate//today,yesterday,...
|
};
|
}else{
|
return null;
|
}
|
}
|
return null;
|
},
|
|
tryGetValueObject: function(){
|
if(this.isValidValue()){
|
return this.getValueObject();
|
}else if(this.isEmptyValue()){
|
return {
|
"isValid": true,
|
"type": this.partObj.valueObj.type,
|
"value1": null,//date string
|
"value2": null,//date string
|
"virtualDate1": null,//today,yesterday,...
|
"virtualDate2": null//today,yesterday,...
|
};
|
}
|
return null;
|
},
|
|
//-1 means invalid value type
|
//0 means empty value, this ValueProvider should be ignored
|
//1 means valid value
|
getStatus: function(){
|
if(this._dijit1.getStatus() === 1 && this._dijit2.getStatus() === 1){
|
return 1;
|
}else if(this._dijit1.getStatus() === -1 || this._dijit2.getStatus() === -1){
|
return -1;
|
}else{
|
return 0;
|
}
|
},
|
|
setRequired: function(required){
|
this._dijit1.set("required", required);
|
this._dijit2.set("required", required);
|
}
|
|
});
|
});
|