From e20b3aee1503a570d8e8b4f29f4d61a59473c8ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristram=20Gr=C3=A4bener?= Date: Mon, 27 Nov 2023 15:50:37 +0100 Subject: [PATCH] front: use RollingStockComfortType from OpenApi, not Comfort from legacy --- front/src/applications/operationalStudies/consts.ts | 4 ++-- .../components/RollingStockCard/RollingStockCard.tsx | 4 ++-- .../RollingStockCard/RollingStockCardDetail.tsx | 8 ++++---- .../rollingStock/components/RollingStockCurve.tsx | 10 +++++----- .../RollingStockEditor/AddRollingstockParam.tsx | 6 ++++-- .../RollingStockEditor/RollingStockEditorCurves.tsx | 8 ++++---- .../RollingStockInformationPanel.tsx | 4 ++-- .../RollingStockSelector/RollingStockHelpers.tsx | 8 ++++++-- .../RollingStockSelector/RollingStockSelector.tsx | 4 ++-- front/src/modules/rollingStock/consts.ts | 10 +++++----- front/src/modules/rollingStock/helpers/utils.ts | 6 +++--- front/src/reducers/rollingstockEditor/index.ts | 6 +++--- 12 files changed, 42 insertions(+), 36 deletions(-) diff --git a/front/src/applications/operationalStudies/consts.ts b/front/src/applications/operationalStudies/consts.ts index 093d775891a..c4968f94954 100644 --- a/front/src/applications/operationalStudies/consts.ts +++ b/front/src/applications/operationalStudies/consts.ts @@ -4,7 +4,7 @@ import { ObjectFieldsTypes } from 'utils/types'; import { Position, Feature } from 'geojson'; import { AllowanceValue, - Comfort, + RollingStockComfortType, ElectrificationRange, Electrified, Neutral, @@ -157,7 +157,7 @@ export const studyTypes = Object.keys(STUDY_TYPES) as StudyType[]; export type PowerRestrictionRange = LinearMetadataItem<{ value: string }>; export interface OsrdConfState { - rollingStockComfort: Comfort; + rollingStockComfort: RollingStockComfortType; name: string; trainCount: number; trainStep: number; diff --git a/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCard.tsx b/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCard.tsx index e77d91559a0..9ae4e3f910a 100644 --- a/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCard.tsx +++ b/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCard.tsx @@ -8,7 +8,7 @@ import { IoIosSpeedometer } from 'react-icons/io'; import { FaWeightHanging } from 'react-icons/fa'; import { AiOutlineColumnWidth } from 'react-icons/ai'; -import { Comfort, LightRollingStockWithLiveries } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType, LightRollingStockWithLiveries } from 'common/api/osrdEditoastApi'; import RollingStock2Img from 'modules/rollingStock/components/RollingStock2Img'; import RollingStockCardDetail from './RollingStockCardDetail'; import { RollingStockInfo } from '../RollingStockSelector/RollingStockHelpers'; @@ -31,7 +31,7 @@ const RollingStockCard = ({ ref2scroll = undefined, setOpenedRollingStockCardId, }: RollingStockCardProps) => { - const [curvesComfortList, setCurvesComfortList] = useState([]); + const [curvesComfortList, setCurvesComfortList] = useState([]); const ref2scrollWhenOpened: React.RefObject = useRef(null); diff --git a/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCardDetail.tsx b/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCardDetail.tsx index 39d89cea2ee..f5e54bb97aa 100644 --- a/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCardDetail.tsx +++ b/front/src/modules/rollingStock/components/RollingStockCard/RollingStockCardDetail.tsx @@ -3,7 +3,7 @@ import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; -import { Comfort, RollingStock, osrdEditoastApi } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType, RollingStock, osrdEditoastApi } from 'common/api/osrdEditoastApi'; import Loader from 'common/Loader'; import { setFailure } from 'reducers/main'; import RollingStock2Img from 'modules/rollingStock/components/RollingStock2Img'; @@ -13,12 +13,12 @@ type RollingStockCardDetailProps = { id: number; hideCurves?: boolean; form?: string; - curvesComfortList: Comfort[]; - setCurvesComfortList: (curvesComfortList: Comfort[]) => void; + curvesComfortList: RollingStockComfortType[]; + setCurvesComfortList: (curvesComfortList: RollingStockComfortType[]) => void; }; export const listCurvesComfort = (curvesData: RollingStock['effort_curves']) => { - const comfortList: Comfort[] = ['STANDARD']; + const comfortList: RollingStockComfortType[] = ['STANDARD']; Object.keys(curvesData.modes).forEach((mode) => { curvesData.modes[mode].curves.forEach((curve) => { if (curve.cond?.comfort) { diff --git a/front/src/modules/rollingStock/components/RollingStockCurve.tsx b/front/src/modules/rollingStock/components/RollingStockCurve.tsx index 8bcb224e3ef..cb7f443dbf9 100644 --- a/front/src/modules/rollingStock/components/RollingStockCurve.tsx +++ b/front/src/modules/rollingStock/components/RollingStockCurve.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useMemo, useState } from 'react'; import { PointTooltipProps, ResponsiveLine } from '@nivo/line'; import { useTranslation } from 'react-i18next'; -import { Comfort, RollingStock } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType, RollingStock } from 'common/api/osrdEditoastApi'; import { useSelector } from 'react-redux'; import { getElectricalProfile, getPowerRestriction } from 'reducers/rollingstockEditor/selectors'; import { STANDARD_COMFORT_LEVEL, THERMAL_TRACTION_IDENTIFIER } from 'modules/rollingStock/consts'; @@ -13,7 +13,7 @@ type EffortCurvesModes = RollingStock['effort_curves']['modes']; type TransformedCurves = { [index: string]: { mode: string; - comfort: Comfort; + comfort: RollingStockComfortType; speeds: number[]; max_efforts: number[]; electricalProfile: string | null; @@ -22,7 +22,7 @@ type TransformedCurves = { }; type ParsedCurves = { color: string; - comfort: Comfort; + comfort: RollingStockComfortType; data: { x: number; y: number; @@ -63,7 +63,7 @@ const parseData = ( }; function LegendComfortSwitches(props: { - curvesComfortList: Comfort[]; + curvesComfortList: RollingStockComfortType[]; comfortsStates: { [key: string]: boolean }; onComfortsStatesChange: (comfort: string) => void; }) { @@ -182,7 +182,7 @@ export default function RollingStockCurve({ hoveredElectricalParam, }: { data: EffortCurvesModes; - curvesComfortList: Comfort[]; + curvesComfortList: RollingStockComfortType[]; isOnEditionMode?: boolean; showPowerRestriction?: boolean; hoveredElectricalParam?: string | null; diff --git a/front/src/modules/rollingStock/components/RollingStockEditor/AddRollingstockParam.tsx b/front/src/modules/rollingStock/components/RollingStockEditor/AddRollingstockParam.tsx index fb8b11df459..9d7209de10c 100644 --- a/front/src/modules/rollingStock/components/RollingStockEditor/AddRollingstockParam.tsx +++ b/front/src/modules/rollingStock/components/RollingStockEditor/AddRollingstockParam.tsx @@ -1,5 +1,5 @@ import SelectImprovedSNCF from 'common/BootstrapSNCF/SelectImprovedSNCF'; -import { Comfort } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType } from 'common/api/osrdEditoastApi'; import { RollingStockSelectorParams } from 'modules/rollingStock/consts'; import React, { useState } from 'react'; import cx from 'classnames'; @@ -35,7 +35,9 @@ export default function AddRollingstockParam({ const optionsList = compact(allOptionsList) .filter( (option) => - !displayedLists[listName as keyof RollingStockSelectorParams].includes(option as Comfort) + !displayedLists[listName as keyof RollingStockSelectorParams].includes( + option as RollingStockComfortType + ) ) .map((option) => { if (listName === COMFORT_LEVELS_KEY) { diff --git a/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockEditorCurves.tsx b/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockEditorCurves.tsx index b54379d5a45..6016dbd0a8d 100644 --- a/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockEditorCurves.tsx +++ b/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockEditorCurves.tsx @@ -1,6 +1,6 @@ import { listCurvesComfort } from 'modules/rollingStock/components/RollingStockCard/RollingStockCardDetail'; import { - Comfort, + RollingStockComfortType, ConditionalEffortCurve, RollingStock, RollingStockWithLiveries, @@ -126,7 +126,7 @@ export default function RollingStockEditorCurves({ const [selectedCurves, setSelectedCurves] = useState(EmptySelectedCurves); const dispatchComfortLvl = (value: string) => { - dispatch(updateComfortLvl(value as Comfort)); + dispatch(updateComfortLvl(value as RollingStockComfortType)); }; const dispatchTractionMode = (value: string | null) => { dispatch(updateTractionMode(value)); @@ -398,7 +398,7 @@ export default function RollingStockEditorCurves({ if (!currentRsEffortCurve) return; const updatedModesCurves = Object.keys(currentRsEffortCurve.modes).reduce((acc, key) => { const currentMode = currentRsEffortCurve.modes[key]; - const newEmptyCurve = createEmptyCurve(value as Comfort); + const newEmptyCurve = createEmptyCurve(value as RollingStockComfortType); return { ...acc, [key]: { @@ -412,7 +412,7 @@ export default function RollingStockEditorCurves({ default_mode: prevState !== null ? prevState.default_mode : currentRsEffortCurve.default_mode, modes: updatedModesCurves, })); - dispatchComfortLvl(value as Comfort); + dispatchComfortLvl(value as RollingStockComfortType); }; const updateTractionModesList = (newTractionMode: string) => { diff --git a/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockInformationPanel.tsx b/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockInformationPanel.tsx index 815c6c4be12..0e968e851c1 100644 --- a/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockInformationPanel.tsx +++ b/front/src/modules/rollingStock/components/RollingStockEditor/RollingStockInformationPanel.tsx @@ -1,6 +1,6 @@ import cx from 'classnames'; import React, { useState } from 'react'; -import { Comfort, RollingStockWithLiveries } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType, RollingStockWithLiveries } from 'common/api/osrdEditoastApi'; import RollingStockCardDetail, { listCurvesComfort, } from 'modules/rollingStock/components/RollingStockCard/RollingStockCardDetail'; @@ -19,7 +19,7 @@ export default function RollingStockInformationPanel({ isEditing, rollingStock, }: RollingStockInformationPanelProps) { - const [curvesComfortList, setCurvesComfortList] = useState([]); + const [curvesComfortList, setCurvesComfortList] = useState([]); return (
diff --git a/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockHelpers.tsx b/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockHelpers.tsx index 82f835f865d..42cace4268c 100644 --- a/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockHelpers.tsx +++ b/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockHelpers.tsx @@ -1,7 +1,11 @@ import React from 'react'; import { IoIosSnow } from 'react-icons/io'; import { ImFire } from 'react-icons/im'; -import { Comfort, LightRollingStock, RollingStock } from 'common/api/osrdEditoastApi'; +import { + RollingStockComfortType, + LightRollingStock, + RollingStock, +} from 'common/api/osrdEditoastApi'; import { BiLockAlt } from 'react-icons/bi'; const RollingStockUnit = ({ unit, detail }: { unit: string; detail: string }) => { @@ -63,7 +67,7 @@ export const RollingStockInfo = ({ ); }; -export function comfort2pictogram(comfort: Comfort | undefined) { +export function comfort2pictogram(comfort: RollingStockComfortType | undefined) { switch (comfort) { case 'AC': return ( diff --git a/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockSelector.tsx b/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockSelector.tsx index 743e2b8937e..471dfb7d19a 100644 --- a/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockSelector.tsx +++ b/front/src/modules/rollingStock/components/RollingStockSelector/RollingStockSelector.tsx @@ -6,11 +6,11 @@ import { RollingStockInfo, } from 'modules/rollingStock/components/RollingStockSelector/RollingStockHelpers'; import { useModal } from 'common/BootstrapSNCF/ModalSNCF'; -import { Comfort, RollingStock } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType, RollingStock } from 'common/api/osrdEditoastApi'; type RollingStockProps = { rollingStockSelected?: RollingStock; - rollingStockComfort?: Comfort; + rollingStockComfort?: RollingStockComfortType; image?: JSX.Element; comfort?: string; comfortType?: string; diff --git a/front/src/modules/rollingStock/consts.ts b/front/src/modules/rollingStock/consts.ts index 2b4c17f9091..7fa427486eb 100644 --- a/front/src/modules/rollingStock/consts.ts +++ b/front/src/modules/rollingStock/consts.ts @@ -1,5 +1,5 @@ import { - Comfort, + RollingStockComfortType, ConditionalEffortCurve, EffortCurve, LoadingGaugeType, @@ -7,7 +7,7 @@ import { } from 'common/api/osrdEditoastApi'; export const THERMAL_TRACTION_IDENTIFIER = 'thermal'; -export const STANDARD_COMFORT_LEVEL: Comfort = 'STANDARD'; +export const STANDARD_COMFORT_LEVEL: RollingStockComfortType = 'STANDARD'; export const DEFAULT_SELECTORS_CLASSNAME = 'selector-SNCF'; @@ -35,14 +35,14 @@ export type SelectedCurves = { }; export type RollingStockSelectorParams = { - comfortLevels: Comfort[]; + comfortLevels: RollingStockComfortType[]; electricalProfiles: (string | null)[]; powerRestrictions: (string | null)[]; tractionModes: string[]; }; export interface RollingStockSelectorParam { - comfortLevels: Comfort; + comfortLevels: RollingStockComfortType; electricalProfiles: string | null; powerRestrictions: string | null; tractionModes: string; @@ -326,7 +326,7 @@ const ComfortLevels = { HEATING: 'HEATING', }; -export const comfortOptions = Object.keys(ComfortLevels) as Comfort[]; +export const comfortOptions = Object.keys(ComfortLevels) as RollingStockComfortType[]; export type ElectricalProfileByMode = { '1500': (string | null)[]; diff --git a/front/src/modules/rollingStock/helpers/utils.ts b/front/src/modules/rollingStock/helpers/utils.ts index 7185a972119..ed20d52c00c 100644 --- a/front/src/modules/rollingStock/helpers/utils.ts +++ b/front/src/modules/rollingStock/helpers/utils.ts @@ -1,5 +1,5 @@ import { - Comfort, + RollingStockComfortType, ConditionalEffortCurve, RollingStock, RollingStockForm, @@ -203,7 +203,7 @@ export const checkRollingStockFormValidity = ( }; export const createEmptyCurve = ( - comfort: Comfort, + comfort: RollingStockComfortType, electricalProfile: string | null = null, powerRestriction: string | null = null ) => ({ @@ -216,7 +216,7 @@ export const createEmptyCurve = ( }); /** given a tractionMode and a list of comfort, return empty EffortCurves */ -export const createEmptyCurves = (tractionMode: string, comforts: Comfort[]) => ({ +export const createEmptyCurves = (tractionMode: string, comforts: RollingStockComfortType[]) => ({ curves: comforts.map((comfort) => createEmptyCurve(comfort)), default_curve: { speeds: [0], max_efforts: [0] }, is_electric: tractionMode !== THERMAL_TRACTION_IDENTIFIER, diff --git a/front/src/reducers/rollingstockEditor/index.ts b/front/src/reducers/rollingstockEditor/index.ts index c105c23984d..e8bb77df996 100644 --- a/front/src/reducers/rollingstockEditor/index.ts +++ b/front/src/reducers/rollingstockEditor/index.ts @@ -1,5 +1,5 @@ import { STANDARD_COMFORT_LEVEL } from 'modules/rollingStock/consts'; -import { Comfort } from 'common/api/osrdEditoastApi'; +import { RollingStockComfortType } from 'common/api/osrdEditoastApi'; import produce from 'immer'; import { AnyAction, Dispatch } from 'redux'; @@ -10,7 +10,7 @@ export const POWER_RESTRICTION = 'rollingstock/POWER_RESTRICTION'; export const TRACTION_MODE = 'rollingstock/TRACTION_MODE'; export interface RsEditorCurvesState { - comfortLvl: Comfort; + comfortLvl: RollingStockComfortType; electricalProfile: string | null; powerRestriction: string | null; tractionMode: string | null; @@ -45,7 +45,7 @@ export default function reducer(inputState: RsEditorCurvesState | undefined, act }); } -export function updateComfortLvl(comfortLvl: Comfort) { +export function updateComfortLvl(comfortLvl: RollingStockComfortType) { return (dispatch: Dispatch) => { dispatch({ type: COMFORT_LEVEL,