UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

51 lines (50 loc) 1.85 kB
import { deserializeWfsFilter, serializeWfsFilter } from './wfsfilterserializer.js'; export default class SelectionSerializer { context; constructor(context) { this.context = context; } get state() { return this.context.stateManager.state; } brainSerialize(selection) { if (selection.selectionParameters.length > 0) { // Note: Currently only the first selection parameter is serialized return JSON.stringify(this.getSerializedSelectionParameter(selection.selectionParameters[0])); } return ''; } brainDeserialize(str) { if (str.trim().length > 0) { const shareState = JSON.parse(str); if (shareState.selectionQuery) { this.state.selection.initialSelectionQuery = this.getDeserializedSelectionQuery(shareState); } else if (shareState.selectionBox) { this.state.selection.initialSelectionBox = shareState.selectionBox; } } } getSerializedSelectionParameter(selectionParam) { let serializedSelectionQuery = undefined; if (selectionParam.selectionQuery) { serializedSelectionQuery = { query: serializeWfsFilter(selectionParam.selectionQuery), layerName: selectionParam.layers[0].name }; } return { selectionBox: selectionParam.selectionBox ?? undefined, selectionQuery: serializedSelectionQuery }; } getDeserializedSelectionQuery(sharedSelection) { if (!sharedSelection.selectionQuery) { return undefined; } return { query: deserializeWfsFilter(sharedSelection.selectionQuery.query), layerName: sharedSelection.selectionQuery?.layerName }; } }