@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
103 lines (102 loc) • 4.79 kB
JavaScript
// 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();
}
}
}
}