currentValue.map(function(val) { val = CQLUtils.generateFilter(undefined, 'anyGeo', val) if (val === undefined) { return val } return _.omit( CQLUtils.transformCQLToFilter( CQLUtils.transformFilterToCQL(val) ), ['property'] ) })
constructFilter: function () { var filters = []; var timeRange = this.basicTime.currentView.model.getValue()[0]; var timeBefore, timeAfter, timeLast, timeUnit; switch (timeRange) { case 'before': timeBefore = this.basicTimeBefore.currentView.model.getValue()[0]; break; case 'after': timeAfter = this.basicTimeAfter.currentView.model.getValue()[0]; break; case 'between': timeBefore = this.basicTimeBetweenBefore.currentView.model.getValue()[0]; timeAfter = this.basicTimeBetweenAfter.currentView.model.getValue()[0]; break; case 'relative': timeLast = Math.floor(this.basicTimeRelativeValue.currentView.model.getValue()[0]); timeUnit = this.basicTimeRelativeUnit.currentView.model.getValue()[0]; break; } if (timeBefore) { var timeFilter = { type: 'OR', filters: [ CQLUtils.generateFilter('BEFORE', 'created', timeBefore), CQLUtils.generateFilter('BEFORE', 'modified', timeBefore), CQLUtils.generateFilter('BEFORE', 'effective', timeBefore), CQLUtils.generateFilter('BEFORE', 'metacard.created', timeBefore), CQLUtils.generateFilter('BEFORE', 'metacard.modified', timeBefore) ] }; filters.push(timeFilter); } if (timeAfter) { var timeFilter = { type: 'OR', filters: [ CQLUtils.generateFilter('AFTER', 'created', timeAfter), CQLUtils.generateFilter('AFTER', 'modified', timeAfter), CQLUtils.generateFilter('AFTER', 'effective', timeAfter), CQLUtils.generateFilter('AFTER', 'metacard.created', timeAfter), CQLUtils.generateFilter('AFTER', 'metacard.modified', timeAfter) ] }; filters.push(timeFilter); } if (timeLast) { var duration; if (timeUnit === 'm' || timeUnit === 'h') { duration = "PT" + timeLast + timeUnit.toUpperCase(); } else { duration = "P" + timeLast + timeUnit.toUpperCase(); } var relativeFunction = 'RELATIVE(' + duration + ')'; var timeDuration = { type: 'OR', filters: [ CQLUtils.generateFilter('=', 'created', relativeFunction), CQLUtils.generateFilter('=', 'modified', relativeFunction), CQLUtils.generateFilter('=', 'effective', relativeFunction), CQLUtils.generateFilter('=', 'metacard.created', relativeFunction), CQLUtils.generateFilter('=', 'metacard.modified', relativeFunction) ] }; filters.push(timeDuration); } return filters; },
constructFilter: function () { // Determine which option is selected for altitude range var filters = []; var altitudeSelect = this.basicAltitude .currentView.model.getValue()[0]; var altitudeUnit = this.basicAltitudeUnits.currentView.model.getValue()[0]; switch (altitudeSelect) { // Build filters for altitude case 'above': // Handle Above altitude selected var aboveAltitude = parseFloat( this.basicAltitudeAbove.currentView.model.getValue()[0]); aboveAltitude = DistanceUtils.getDistanceInMeters(aboveAltitude, altitudeUnit); aboveAltitude = DistanceUtils.altitudeRound(aboveAltitude); var aboveAltitudeFilter = CQLUtils.generateFilter('>=', 'location.altitude-meters', aboveAltitude); filters.push(aboveAltitudeFilter); break; case 'below': // Handle Below altitude selected var belowAltitude = parseFloat( this.basicAltitudeBelow.currentView.model.getValue()[0]); belowAltitude = DistanceUtils.getDistanceInMeters(belowAltitude, altitudeUnit); belowAltitude = DistanceUtils.altitudeRound(belowAltitude); var belowAltitudeFilter = CQLUtils.generateFilter('<=', 'location.altitude-meters', belowAltitude); filters.push(belowAltitudeFilter); break; case 'between': // Handle between altitude selected var aboveAltitude = parseFloat( this.basicAltitudeBetweenAbove .currentView.model.getValue()[0]); var belowAltitude = parseFloat( this.basicAltitudeBetweenBelow .currentView.model.getValue()[0]); aboveAltitude = DistanceUtils.getDistanceInMeters(aboveAltitude, altitudeUnit); aboveAltitude = DistanceUtils.altitudeRound(aboveAltitude); belowAltitude = DistanceUtils.getDistanceInMeters(belowAltitude, altitudeUnit); belowAltitude = DistanceUtils.altitudeRound(belowAltitude); var aboveAltitudeFilter = CQLUtils.generateFilter('>=', 'location.altitude-meters', aboveAltitude); var belowAltitudeFilter = CQLUtils.generateFilter('<=', 'location.altitude-meters', belowAltitude); var altitudeFilters = { type: "AND", filters: [aboveAltitudeFilter, belowAltitudeFilter] }; filters.push(altitudeFilters); break; case 'any': default: break; } return filters; },