UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

48 lines (47 loc) 1.58 kB
export default class ActiveBasemapsSerializer { context; constructor(context) { this.context = context; } get state() { return this.context.stateManager.state; } get preferNames() { return this.context.configManager.Config.share?.preferNames ?? false; } brainSerialize(activeBasemaps) { return this.serialize(activeBasemaps); } brainDeserialize(serializedString) { this.state.activeBasemaps = this.deserialize(serializedString); } serialize(basemaps) { const sharedBasemaps = []; for (const basemap of basemaps) { const sharedBasemap = { id: basemap.id, name: basemap.name, opacity: basemap.opacity }; sharedBasemaps.push(sharedBasemap); } return JSON.stringify(sharedBasemaps); } deserialize(str) { const sharedBasemaps = JSON.parse(str); const basemaps = []; for (const sharedBasemap of sharedBasemaps) { const basemap = this.preferNames ? Object.values(this.state.basemaps).find((b) => b.name === sharedBasemap.name) : Object.values(this.state.basemaps).find((b) => b.id === sharedBasemap.id); if (basemap) { basemap.opacity = sharedBasemap.opacity; basemaps.push(basemap); } else { console.error(`The basemap ${sharedBasemap.name} could not be deserialized`); } } return basemaps; } }