Skip to content

Commit

Permalink
Merge pull request #4663 from adube/785-fix-querent-regression
Browse files Browse the repository at this point in the history
Fix regression in Querent
  • Loading branch information
adube committed Feb 20, 2019
2 parents f806366 + 091b05f commit 66b8882
Showing 1 changed file with 47 additions and 44 deletions.
91 changes: 47 additions & 44 deletions src/query/Querent.js
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,8 @@ export class Querent {
);

// (4.1) Count, if required
/** @type {angular.IPromise<number|void>} */
let countPromise;
if (wfsCount) {
/** @type {import('ol/format/WFS.js').WriteGetFeatureOptions} */
const getCountOptions = Object.assign(
Expand All @@ -676,8 +678,7 @@ export class Querent {
const featureCountRequest = xmlSerializer.serializeToString(
featureCountXml);
const canceler = this.registerCanceler_();
/** @type {angular.IPromise<number>} */
const countPromise = this.http_.post(
countPromise = this.http_.post(
url,
featureCountRequest,
{
Expand All @@ -691,50 +692,52 @@ export class Querent {
);
return meta['numberOfFeatures'];
});
} else {
countPromise = this.q_.resolve();
}

// (4.2) After count, do GetFeature (if required)
/**
* @param {number} numberOfFeatures value
* @returns {angular.IPromise<never>} undefined
*/
const then_ = (numberOfFeatures) => {
// `true` is returned if a count request was made AND there would
// be too many features.
if (numberOfFeatures === undefined || numberOfFeatures < maxFeatures) {

/** @type {import('ol/format/WFS.js').WriteGetFeatureOptions} */
const getFeatureOptions = Object.assign(
{
maxFeatures
},
getFeatureCommonOptions
);
const featureRequestXml = wfsFormat.writeGetFeature(
getFeatureOptions);
const featureRequest = xmlSerializer.serializeToString(
featureRequestXml);
console.assert(typeof url == 'string');
const canceler = this.registerCanceler_();
this.http_.post(
url,
featureRequest,
{
params: params,
headers: {'Content-Type': 'text/xml; charset=UTF-8'},
timeout: canceler.promise
}
).then((response) => {
getFeatureDefer.resolve(response);
});

} else {
getFeatureDefer.resolve(numberOfFeatures);
}
// (4.2) After count, do GetFeature (if required)
/**
* @param {number} numberOfFeatures value
* @returns {angular.IPromise<never>} undefined
*/
const afterCount_ = (numberOfFeatures) => {
// `true` is returned if a count request was made AND there would
// be too many features.
if (numberOfFeatures === undefined || numberOfFeatures < maxFeatures) {

/** @type {import('ol/format/WFS.js').WriteGetFeatureOptions} */
const getFeatureOptions = Object.assign(
{
maxFeatures
},
getFeatureCommonOptions
);
const featureRequestXml = wfsFormat.writeGetFeature(
getFeatureOptions);
const featureRequest = xmlSerializer.serializeToString(
featureRequestXml);
console.assert(typeof url == 'string');
const canceler = this.registerCanceler_();
this.http_.post(
url,
featureRequest,
{
params: params,
headers: {'Content-Type': 'text/xml; charset=UTF-8'},
timeout: canceler.promise
}
).then((response) => {
getFeatureDefer.resolve(response);
});

return undefined;
};
countPromise.then(then_);
}
} else {
getFeatureDefer.resolve(numberOfFeatures);
}

return undefined;
};
countPromise.then(afterCount_);
}

return this.q_.all(promises).then(
Expand Down

0 comments on commit 66b8882

Please sign in to comment.