diff --git a/src/services/appsMetadata.ts b/src/services/appsMetadata.ts index 320de941..fb489cac 100644 --- a/src/services/appsMetadata.ts +++ b/src/services/appsMetadata.ts @@ -4,7 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { Metadata, StudyMetadata } from '../utils'; +import { BaseVoltage, Metadata, StudyMetadata } from '../utils'; // https://github.com/gridsuite/deployment/blob/main/docker-compose/docker-compose.base.yml // https://github.com/gridsuite/deployment/blob/main/k8s/resources/common/config/apps-metadata.json @@ -39,14 +39,21 @@ export function isStudyMetadata(metadata: Metadata): metadata is StudyMetadata { export async function fetchStudyMetadata(): Promise { console.info(`Fetching study metadata...`); - const studyMetadata = (await fetchAppsMetadata()).filter(isStudyMetadata); + const studyMetadata = (await fetchAppsMetadata()).find(isStudyMetadata); if (!studyMetadata) { throw new Error('Study entry could not be found in metadata'); } else { - return studyMetadata[0]; // There should be only one study metadata + return studyMetadata; // There should be only one study metadata } } +export async function fetchBaseVoltages(): Promise { + console.info(`Fetching apps' base voltages...`); + const env = await fetchEnv(); + const res = await fetch(`${env.appsMetadataServerUrl}/apps-metadata-base-voltages.json`); + return res.json(); +} + export async function fetchFavoriteAndDefaultCountries(): Promise<{ favoriteCountries: string[]; defaultCountry?: string; diff --git a/src/utils/types/metadata.ts b/src/utils/types/metadata.ts index f5f1076f..ef0a9110 100644 --- a/src/utils/types/metadata.ts +++ b/src/utils/types/metadata.ts @@ -31,3 +31,21 @@ export type StudyMetadata = Metadata & { favoriteCountries?: string[]; substationPropertiesGlobalFilters?: Map; // used to generate user specific global filters }; + +type ThemeColors = Record; +type SldAndNadColors = { + darkThemeColors: ThemeColors; + lightThemeColors: ThemeColors; +}; + +export type BaseVoltageConfig = { + // used when calling powsybl server + name: string; + minValue: number; + maxValue: number; +}; +export type BaseVoltage = BaseVoltageConfig & { + // used to define the voltage ranges and their colors + networkMapColor: string; + sldAndNadColors: SldAndNadColors; +};