Skip to content

Commit

Permalink
Fix types in filter
Browse files Browse the repository at this point in the history
  • Loading branch information
sbrunner committed Jan 28, 2019
1 parent bf4a85f commit 8c0d502
Show file tree
Hide file tree
Showing 9 changed files with 113 additions and 90 deletions.
4 changes: 2 additions & 2 deletions contribs/gmf/src/drawing/drawFeatureComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,7 @@ Controller.prototype.handleMapContextMenu_ = function(evt) {
/**
* @param {?Array.<number>} vertexInfo Vertex information, in case a
* vertex was clicked using the right button.
* @param {!MenuEvent} evt Event.
* @param {!import('ngeo/filter/ruleComponent.js').MenuEvent} evt Event.
* @private
*/
Controller.prototype.handleMenuActionClick_ = function(vertexInfo, evt) {
Expand Down Expand Up @@ -756,7 +756,7 @@ Controller.prototype.handleTranslateEnd_ = function(evt) {


/**
* @param {!RotateEvent} evt Event.
* @param {!import('ngeo/interaction/Rotate.js').RotateEvent} evt Event.
* @private
*/
Controller.prototype.handleRotateEnd_ = function(evt) {
Expand Down
6 changes: 3 additions & 3 deletions contribs/gmf/src/editing/editFeatureComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -1251,7 +1251,7 @@ Controller.prototype.handleFeatureGeometryChange_ = function() {


/**
* @param {MenuEvent} evt Event.
* @param {import('ngeo/filter/ruleComponent.js').MenuEvent} evt Event.
* @private
*/
Controller.prototype.handleMenuActionClick_ = function(evt) {
Expand All @@ -1273,7 +1273,7 @@ Controller.prototype.handleMenuActionClick_ = function(evt) {


/**
* @param {MenuEvent} evt Event.
* @param {import('ngeo/filter/ruleComponent.js').MenuEvent} evt Event.
* @private
*/
Controller.prototype.handleMenuVertexActionClick_ = function(evt) {
Expand Down Expand Up @@ -1303,7 +1303,7 @@ Controller.prototype.handleTranslateEnd_ = function(evt) {


/**
* @param {!RotateEvent} evt Event.
* @param {!import('ngeo/interaction/Rotate.js').RotateEvent} evt Event.
* @private
*/
Controller.prototype.handleRotateEnd_ = function(evt) {
Expand Down
4 changes: 2 additions & 2 deletions contribs/gmf/src/filters/filterselectorComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -725,8 +725,8 @@ class Controller {

/**
* @typedef {Object} RuleCacheItem
* @property {Array.<ngeo.rule.Rule>} customRules
* @property {Array.<ngeo.rule.Rule>} directedRules
* @property {Array.<import('ngeo/rule/Rule.js').default>} customRules
* @property {Array.<import('ngeo/rule/Rule.js').default>} directedRules
*/


Expand Down
77 changes: 40 additions & 37 deletions src/filter/RuleHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import moment from 'moment';


/**
* @typedef {!RuleOptions|!GeometryOptions|!SelectOptions|!import('ngeo/rule/Text.js').TextOptions} AnyOptions
* @typedef {!import('ngeo/rule/Rule.js').RuleOptions|!import('ngeo/rule/Geometry.js').GeometryOptions|!import('ngeo/rule/Select.js').SelectOptions|!import('ngeo/rule/Text.js').TextOptions} AnyOptions
*/


Expand All @@ -24,7 +24,7 @@ import moment from 'moment';
* service.
*
* @typedef {Object} CreateFilterOptions
* @property {DataSource} dataSource The data source from which to get the filterRules that will be used to
* @property {import('ngeo/datasource/DataSource.js').default} dataSource The data source from which to get the filterRules that will be used to
* create the OL filter object.
* @property {boolean} [incDimensions] Whether to include the dimensions related filters. Default to `true`.
* @property {boolean} [incTime] Whether to include the data source's time values in the filter created. The
Expand All @@ -34,7 +34,7 @@ import moment from 'moment';
* should be included in the filter.
* @property {import("ol/format/filter/Filter.js").default} [filter] A filter that is directly given the the method instead of creating one.
* Useful to automatically combine the time values.
* @property {!Array.<Rule>} [filterRules] An alternative list of filter rules to use instead of those that are defined
* @property {!Array.<import('ngeo/rule/Rule.js').default>} [filterRules] An alternative list of filter rules to use instead of those that are defined
* within the data source. Useful when one wants to get the data of a given
* filter without applying it to the data source.
* @property {string} [srsName] The SRS name used with the spatial filters created by the method.
Expand All @@ -44,7 +44,7 @@ import moment from 'moment';
export class RuleHelper {

/**
* A service that provides utility methods to create `ngeo.rule.Rule`
* A service that provides utility methods to create `import('ngeo/rule/Rule.js').default`
* objects.
*
* @param {!angular.gettext.gettextCatalog} gettextCatalog Gettext service.
Expand Down Expand Up @@ -181,6 +181,7 @@ export class RuleHelper {
default:
if (isCustom) {
rule = new ngeoRuleText({
text: null,
name: name,
operator: RuleOperatorType.LIKE,
operators: [
Expand All @@ -192,6 +193,7 @@ export class RuleHelper {
});
} else {
rule = new ngeoRuleText({
text: null,
name: name,
operator: RuleOperatorType.LIKE,
propertyName: attribute.name
Expand All @@ -204,7 +206,7 @@ export class RuleHelper {
}

/**
* @param {!Array.<!RuleOptions|!SelectOptions>} optionsList List of options
* @param {!Array.<!import('ngeo/rule/Rule.js').RuleOptions|!import('ngeo/rule/Select.js').SelectOptions>} optionsList List of options
* @return {Array.<!import("ngeo/rule/Rule.js").default>} Rules.
* @export
*/
Expand All @@ -217,7 +219,7 @@ export class RuleHelper {
}

/**
* @param {!RuleOptions|!SelectOptions} options Options
* @param {!import('ngeo/rule/Rule.js').RuleOptions|!import('ngeo/rule/Select.js').SelectOptions} options Options
* @return {!import("ngeo/rule/Rule.js").default} Rule.
* @export
*/
Expand All @@ -232,20 +234,19 @@ export class RuleHelper {
rule = new ngeoRuleGeometry(options);
break;
case ngeoFormatAttributeType.SELECT:
const selectOptions = /** @type {!SelectOptions} */ (
options);
const selectOptions = /** @type {!import('ngeo/rule/Select.js').SelectOptions} */ (options);
console.assert(selectOptions.choices);
rule = new ngeoRuleSelect(selectOptions);
break;
default:
rule = new ngeoRuleText(options);
rule = new ngeoRuleText(/** @type {!import('ngeo/rule/Text').TextOptions} */ (options));
break;
}
return rule;
}

/**
* Create a new `ngeo.rule.Rule` object using an other given rule.
* Create a new `import('ngeo/rule/Rule.js').default` object using an other given rule.
*
* @param {!import("ngeo/rule/Rule.js").default} rule Original rule to clone.
* @return {!import("ngeo/rule/Rule.js").default} A clone rule.
Expand Down Expand Up @@ -291,9 +292,9 @@ export class RuleHelper {
);
} else if (rule instanceof ngeoRuleSelect) {
options.choices = rule.choices.slice(0);
clone = new ngeoRuleSelect(options);
clone = new ngeoRuleSelect(/** @type {!import('ngeo/rule/Select.js').SelectOptions} */ (options));
} else if (rule instanceof ngeoRuleText) {
clone = new ngeoRuleText(options);
clone = new ngeoRuleText(/** @type {!import('ngeo/rule/Text').TextOptions} */ (options));
} else {
clone = new ngeoRuleRule(options);
}
Expand Down Expand Up @@ -407,6 +408,7 @@ export class RuleHelper {
createFilter(options) {

const dataSource = /** @type {import("ngeo/datasource/OGC.js").default} */ (options.dataSource);
//const dataSource = options.dataSource;
let mainFilter = null;

if (options.filter) {
Expand Down Expand Up @@ -509,11 +511,11 @@ export class RuleHelper {
return null;
}

const expression = value.expression;
const lowerBoundary = value.lowerBoundary;
const expression = /** @type {import("ngeo/rule/Rule.js").RuleOptions} */(value).expression;
const lowerBoundary = /** @type {import("ngeo/rule/Rule.js").RuleOptions} */(value).lowerBoundary;
const operator = value.operator;
const propertyName = value.propertyName;
const upperBoundary = value.upperBoundary;
const upperBoundary = /** @type {import("ngeo/rule/Rule.js").RuleOptions} */(value).upperBoundary;

const rot = RuleOperatorType;
const rsot = RuleSpatialOperatorType;
Expand Down Expand Up @@ -605,29 +607,30 @@ export class RuleHelper {
}
} else if (spatialTypes.includes(operator)) {
const geometryName = dataSource.geometryName;
console.assert(rule instanceof ngeoRuleGeometry);
const geometry = rule.geometry;
if (operator === rsot.CONTAINS) {
filter = olFormatFilter.contains(
geometryName,
geometry,
opt_srsName
);
} else if (operator === rsot.INTERSECTS) {
filter = olFormatFilter.intersects(
geometryName,
geometry,
opt_srsName
);
} else if (operator === rsot.WITHIN) {
filter = olFormatFilter.within(
geometryName,
geometry,
opt_srsName
);
if (rule instanceof ngeoRuleGeometry) {
const geometry = rule.geometry;
if (operator === rsot.CONTAINS) {
filter = olFormatFilter.contains(
geometryName,
geometry,
opt_srsName
);
} else if (operator === rsot.INTERSECTS) {
filter = olFormatFilter.intersects(
geometryName,
geometry,
opt_srsName
);
} else if (operator === rsot.WITHIN) {
filter = olFormatFilter.within(
geometryName,
geometry,
opt_srsName
);
}
}
} else if (numericTypes.includes(operator)) {
const numericExpression = expression;
const numericExpression = /** @type {number} */(expression);
if (operator === rot.GREATER_THAN) {
filter = olFormatFilter.greaterThan(
propertyName,
Expand Down Expand Up @@ -686,7 +689,7 @@ export class RuleHelper {
/**
* Create and return an OpenLayers filter object using the available
* dimensions filters configuration within the data source.
* @param {import("ngeo/DataSource.js").default} dataSource Data source from which to create the
* @param {import("ngeo/datasource/OGC.js").OGCOptions} dataSource Data source from which to create the
* filter.
* @return {?import("ol/format/filter/Filter.js").default} Filter
* @private
Expand Down

0 comments on commit 8c0d502

Please sign in to comment.