@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
23 lines (22 loc) • 1.16 kB
JavaScript
import WfsFilter from '../../wfs/wfsfilter.js';
import WfsFilterCondition from '../../wfs/wfsfiltercondition.js';
// Serialize WfsFilter to SharedFilter
export const serializeWfsFilter = (wfsFilter) => {
return {
conditions: wfsFilter.conditions.map((condition) => wfsFilterSerializerRecursive(condition)),
logicalOperator: wfsFilter.logicalOperator
};
};
const wfsFilterSerializerRecursive = (nestedFilter) => {
return 'conditions' in nestedFilter ? serializeWfsFilter(nestedFilter) : nestedFilter;
};
// Deserialize SharedFilter to WfsFilter
export const deserializeWfsFilter = (sharedFilter) => {
return new WfsFilter(sharedFilter.conditions.map((condition) => wfsFilterDeserializerRecursive(condition)), sharedFilter.logicalOperator);
};
const deserializeWfsCondition = (sharedFilter) => {
return new WfsFilterCondition(sharedFilter.property, sharedFilter.operator, sharedFilter.value, sharedFilter.value2, sharedFilter.propertyType);
};
const wfsFilterDeserializerRecursive = (sharedFilter) => {
return 'conditions' in sharedFilter ? deserializeWfsFilter(sharedFilter) : deserializeWfsCondition(sharedFilter);
};