"use strict";
define([
"jquery",
"underscore",
"backbone",
"models/maps/VectorFilter",
], function ($, _, Backbone, VectorFilter) {
/**
* @class VectorFilters
* @classdesc A VectorFilters collection is a set of conditions used to show or hide
* features of a vector layer on a map.
* @class VectorFilters
* @classcategory Collections/Maps
* @extends Backbone.Collection
* @since 2.18.0
* @constructor
*/
var VectorFilters = Backbone.Collection.extend(
/** @lends VectorFilters.prototype */ {
/**
* The class/model that this collection contains.
* @type {Backbone.Model}
*/
model: VectorFilter,
/**
* This function is used to determine if a feature should be shown or hidden based
* on the current filters.
* @param {Object} properties The properties of the feature to be filtered.
* (See the 'properties' attribute of {@link Feature#defaults}.)
* @returns {boolean} Returns true if the feature passes all of the filters.
*/
featureIsVisible: function (properties) {
try {
if (!properties) {
properties = {};
}
let visible = true;
this.each(function (filter) {
visible = visible && filter.featureIsVisible(properties);
});
return visible;
} catch (error) {
console.log(
"There was an error filtering a feature in a VectorFilters collection" +
". Error details: " +
error +
". The feature will be visible.",
);
return true;
}
},
},
);
return VectorFilters;
});