UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

77 lines (76 loc) 3.84 kB
import proj4 from 'proj4'; import { register } from 'ol/proj/proj4'; import ConfigManager from './tools/configuration/configmanager'; import OfflineManager from './tools/offline/offlinemanager'; import ShareManager from './tools/share/sharemanager'; import StateManager from './tools/state/statemanager'; import ThemesManager from './tools/themes/themesmanager'; import LogManager from './tools/logging/logmanager'; import AuthManager from './tools/auth/authmanager'; import ErrorManager from './tools/error/errormanager'; import CsvManager from './tools/export/csvmanager'; import I18nManager from './tools/i18n/i18nmanager'; import WfsManager from './tools/wfs/wfsmanager'; import OrderingManager from './tools/ordering/orderingmanager'; async function initializeServiceWorker() { const storeVersion = 6; const dbCacheName = 'geogirafe-cache'; if (!navigator?.serviceWorker) { console.warn("Service worker could not be initialized. Authentication and offline maps won't work"); return; } const registration = await navigator.serviceWorker.register('service-worker.js'); if (!registration.active) { console.warn("Service worker could not be initialized. Authentication and offline maps won't work"); return; } // Communicate logging configuration to service-worker const config = ConfigManager.getInstance().Config; registration.active.postMessage({ logLevel: config.general.logLevel }); // Communicate oauth configuration to service-worker const issuerConfig = config.oauth?.issuer ?? config.gmfauth; const gmfConfig = config.oauth?.geomapfish ?? config.gmfauth; if (issuerConfig && gmfConfig) { const issuerHostname = new URL(issuerConfig.url).hostname; const audience = [...issuerConfig.audience, issuerHostname]; registration.active.postMessage({ audience: audience, audienceExcludedPaths: issuerConfig.audienceExcludedPaths, authMode: gmfConfig.authMode, refererPolicy: gmfConfig.refererPolicy }); } await OfflineManager.getInstance().setServiceWorker(registration.active, storeVersion, dbCacheName); await AuthManager.getInstance().initialize(registration.active); } export async function initialize() { // First of all : Load the configuration await ConfigManager.getInstance().loadConfig(); await LogManager.getInstance().initLogging(); // Default configuration for Cesium (see https://cesium.com/learn/cesiumjs-learn/cesiumjs-quickstart/) window.CESIUM_BASE_URL = 'lib/cesium/'; // Register custom EPSG // https://epsg.io/21781 proj4.defs('EPSG:21781', '+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=660.077,13.551,369.344,2.484,1.783,2.939,5.66 +units=m +no_defs'); // https://epsg.io/2056 proj4.defs('EPSG:2056', '+proj=somerc +lat_0=46.9524055555556 +lon_0=7.43958333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs +type=crs'); register(proj4); // Register Service Worker await initializeServiceWorker(); // Initialize the managers ErrorManager.getInstance(); CsvManager.getInstance(); I18nManager.getInstance(); WfsManager.getInstance(); OrderingManager.getInstance(); await ThemesManager.getInstance().initialize(); // Add the state to document, so that it will be accessible everywhere document.geogirafe = { state: StateManager.getInstance().state, stateManager: StateManager.getInstance(), shareManager: ShareManager.getInstance(), offlineManager: OfflineManager.getInstance(), themesManager: ThemesManager.getInstance(), configManager: ConfigManager.getInstance() }; }