/////////////////////////////////////////////////////////////////////////// // 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/lang', 'dojo/_base/declare', 'dijit/_WidgetsInTemplateMixin', 'dojo/text!./DateIsInValueProvider.html', './ValueProvider', 'jimu/filterUtils', 'dijit/form/Select', 'dijit/form/DateTextBox' ], function(Evented, html, lang, declare, _WidgetsInTemplateMixin, template, ValueProvider, filterUtils) { return declare([ValueProvider, _WidgetsInTemplateMixin, Evented], { templateString: template, postMixInProperties: function(){ this.inherited(arguments); this.nls = window.jimuNls.filterBuilder; }, //options: virtualDates: null,//['today', 'yesterday', 'tomorrow'] postCreate: function(){ this.inherited(arguments); html.addClass(this.domNode, 'jimu-date-is-in-value-provider'); this.dateTypeSelect.addOption({ value: '', label: ' ' }); var values = ['thisWeek', 'thisMonth', 'thisQuarter', 'thisYear']; // var values = ['theseDays', 'thisWeek', 'thisMonth', 'thisQuarter', 'thisYear']; return values.forEach(lang.hitch(this, function(v){ this.dateTypeSelect.addOption({ value: v, label: this.nls[v] }); })); }, getDijits: function(){ return [this.dateTypeSelect]; }, _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); } }, //valueObj: {value,virtualDate} setValueObject: function(valueObj){ this.dateTypeSelect.set('value', valueObj.virtualDate); }, //return {value,virtualDate} getValueObject: function(){ if(!this.isValidValue()){ return null; } return this.tryGetValueObject(); }, //return {value,virtualDate} tryGetValueObject: function(){ if(this.isInvalidValue()){ return null; } var result = { "isValid": true, "type": this.partObj.valueObj.type, "value": null,//date.toDateString() "virtualDate": this.dateTypeSelect.get('value') }; var virtualDate = this.dateTypeSelect.get('value'); var date = filterUtils.getRealDateByVirtualDate(virtualDate); result.virtualDate = virtualDate; if(date){ result.value1 = date[0].toDateString(); result.value2 = date[1].toDateString(); } return result; }, setRequired: function(required){ this.dateTypeSelect.set("required", required); }, //-1 means invalid value type //0 means empty value, this ValueProvider should be ignored //1 means valid value getStatus: function(){ if(this.dateTypeSelect.get('value')){ return 1; }else{ return 0; } }, _onDateTypeSelectChanged: function(){ this.emit('change'); } }); });