UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

103 lines (102 loc) • 4.79 kB
// SPDX-License-Identifier: Apache-2.0 import DragManager from '../../tools/layers/dragmanager.js'; import ApplicationLifeCycleManager from '../app/lifecyclemanager.js'; import AuthManager from '../auth/authmanager.js'; import PluginManager from '../auth/pluginmanager.js'; import ConfigManager from '../configuration/configmanager.js'; import ErrorManager from '../error/errormanager.js'; import I18nManager from '../i18n/i18nmanager.js'; import LayerManager from '../layers/layermanager.js'; import SnapManager from '../layers/snapmanager.js'; import LocalFileManager from '../localfile/localfilemanager.js'; import LogManager from '../logging/logmanager.js'; import OfflineManager from '../offline/offlinemanager.js'; import OgcApiFeaturesManager from '../ogcapi/ogcapifeaturesmanager.js'; import OnBoardingManager from '../onboarding/onboardingmanager.js'; import OrderingManager from '../ordering/orderingmanager.js'; import SessionManager from '../share/sessionmanager.js'; import ShareManager from '../share/sharemanager.js'; import StateSerializer from '../share/stateserializer.js'; import ComponentManager from '../state/componentManager.js'; import MapManager from '../state/mapManager.js'; import StateManager from '../state/statemanager.js'; import UserInteractionManager from '../state/userInteractionManager.js'; import CustomThemesManager from '../themes/customthemesmanager.js'; import ThemesHelper from '../themes/themeshelper.js'; import ThemesManager from '../themes/themesmanager.js'; import UserLayerManager from '../themes/userlayermanager.js'; import PermalinkManager from '../url/permalinkmanager.js'; import UrlManager from '../url/urlmanager.js'; import UserDataManager from '../userdata/userdatamanager.js'; import WfsManager from '../wfs/wfsmanager.js'; import WmsManager from '../wms/wmsmanager.js'; import WmtsManager from '../wmts/wmtsmanager.js'; import SelectionManager from '../selection/selectionmanager.js'; import ThemeFavoritesManager from '../themes/themefavoritesmanager.js'; import SearchManager from '../search/searchmanager.js'; import FeedbackManager from '../feedback/feedbackmanager.js'; export default class ContextInitializationHelper { // NOTE: This order is important, because the singletons will be initialized in this order // And some singletons need other ones ! Managers = [ ['componentManager', ComponentManager], ['userDataManager', UserDataManager], ['configManager', ConfigManager], ['logManager', LogManager], ['stateManager', StateManager], ['orderingManager', OrderingManager], ['applicationLifeCycleManager', ApplicationLifeCycleManager], ['mapManager', MapManager], ['offlineManager', OfflineManager], ['snapManager', SnapManager], ['authManager', AuthManager], ['pluginManager', PluginManager], ['i18nManager', I18nManager], ['userInteractionManager', UserInteractionManager], ['urlManager', UrlManager], ['dragManager', DragManager], ['permalinkManager', PermalinkManager], ['layerManager', LayerManager], ['userLayerManager', UserLayerManager], ['themesHelper', ThemesHelper], ['stateSerializer', StateSerializer], ['sessionManager', SessionManager], ['shareManager', ShareManager], ['wfsManager', WfsManager], ['errorManager', ErrorManager], ['customThemesManager', CustomThemesManager], ['themesManager', ThemesManager], ['wmsManager', WmsManager], ['wmtsManager', WmtsManager], ['selectionManager', SelectionManager], ['localFileManager', LocalFileManager], ['ogcApiFeaturesManager', OgcApiFeaturesManager], ['onBoardingManager', OnBoardingManager], ['themeFavoritesManager', ThemeFavoritesManager], ['searchManager', SearchManager], ['feedbackManager', FeedbackManager] ]; constructContext(context, ignoreProperties) { // Create all singletons for (const [name, ctor] of this.Managers) { if (!ignoreProperties?.includes(name)) { context[name] = new ctor(context); } } } async initializeContext(context) { // Initialize all singletons for (const [name] of this.Managers) { // If there are some local Hook method that was defined, // we call it instead of the default initializeSingleton() method. const hook = context[`${name}Hook`]; if (hook) { await hook.call(context); } else { // Call the standard initializeSingleton() method. await context[name].initializeSingleton(); } } } }