Skip to content

Commit

Permalink
front: display simulation results in stdcm
Browse files Browse the repository at this point in the history
  • Loading branch information
Akctarus committed Jun 27, 2024
1 parent c689e8f commit 9ec851e
Show file tree
Hide file tree
Showing 12 changed files with 476 additions and 15 deletions.
6 changes: 6 additions & 0 deletions front/public/locales/en/stdcm-simulation-report-sheet.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
"conventionalSign": "conv. sign",
"convoy": "convoy",
"crossedATE": "crossed ATE",
"displayAll": "Display all operational points",
"displayMain": "Display main operational points",
"downloadSimulationSheet": "Download simulation report sheet",
"endStop": "end",
"for": "for",
"formattedDate": "{{year}}/{{month}}/{{day}} at {{hours}}:{{minutes}}",
"from": "from",
"gesicoRequest":"and attach this document to your GESICO DSDM request.",
"maxLength": "max. length",
"maxSpeed": "max. speed",
"maxWeight": "max. weight",
Expand All @@ -21,8 +25,10 @@
"requestedRoute": "requested route",
"scheduledArrival": "scheduled arrival at",
"scheduledDeparture": "scheduled departure at",
"selectThisSimulation": "Select this simulation",
"serviceStop": "Service stop",
"simulation": "Simulation",
"simulationSelected": "You have selected this simulation",
"speedLimitByTag": "speed limit by tag",
"startStop": "start",
"stdcm": "ST DCM",
Expand Down
2 changes: 2 additions & 0 deletions front/public/locales/en/stdcm.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
"consist": "Consist",
"tractionEngine": "Traction engine"
},
"formattedCreationDate": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}",
"loaderImageLegend": "The TGV Nord line",
"notificationTitle": "Phase 1: from D-7 to D-1 5pm, on the Perrigny-Miramas axis.",
"pathfindingFailed": "No paths have been found for these waypoints.",
"pleaseWait": "Please wait…",
"simulation":{
"available": "Simulation available",
"averageRequestTime": "For your request, the time required is generally 90 seconds.",
"calculatingSimulation": "Calculation in progress...",
"getSimulation": "Get the simulation",
Expand Down
6 changes: 6 additions & 0 deletions front/public/locales/fr/stdcm-simulation-report-sheet.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
"conventionalSign": "signe conv.",
"convoy": "convoi",
"crossedATE": "ATE croisé",
"displayAll": "Afficher tous les jalons",
"displayMain": "Afficher les jalons principaux",
"downloadSimulationSheet": "Télécharger la fiche de simulation",
"endStop": "arrivée",
"for": "pour",
"formattedDate": "le {{day}}/{{month}}/{{year}} à {{hours}}:{{minutes}}",
"from": "du",
"gesicoRequest":"et joignez ce document à votre demande GESICO DSDM",
"maxLength": "longueur max.",
"maxSpeed": "vitesse max.",
"maxWeight": "tonnage max.",
Expand All @@ -21,8 +25,10 @@
"requestedRoute": "parcours demandé",
"scheduledArrival": "arrivée prévue à",
"scheduledDeparture": "départ prévu à",
"selectThisSimulation": "Retenir cette simulation",
"serviceStop": "Arrêt de service",
"simulation": "Simulation",
"simulationSelected": "Vous avez retenu cette simulation",
"speedLimitByTag": "code de composition",
"startStop":"départ",
"stdcm": "ST DCM",
Expand Down
2 changes: 2 additions & 0 deletions front/public/locales/fr/stdcm.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
"consist": "Convoi",
"tractionEngine": "Engin de traction"
},
"formattedCreationDate": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}",
"loaderImageLegend": "La ligne TGV Nord",
"notificationTitle": "Phase 1 : de J-7 à J-1 17h, sur l’axe Perrigny—Miramas.",
"pathfindingFailed": "Aucun chemin n'a été trouvé pour ces points de jalonnement.",
"pleaseWait": "Veuillez patientez…",
"simulation":{
"available": "Simulation disponible",
"averageRequestTime": "Pour votre demande, le temps nécessaire est généralement de 90 secondes.",
"calculatingSimulation": "Calcul en cours...",
"getSimulation": "Obtenir la simulation",
Expand Down
6 changes: 5 additions & 1 deletion front/src/applications/stdcm/views/StdcmConfig.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,11 @@ const StdcmConfig = ({
: 'stdcm-map-noSimulation'
}`}
>
<Map setMapCanvas={setMapCanvas} pathProperties={pathProperties} />
<Map
setMapCanvas={setMapCanvas}
pathProperties={pathProperties}
currentStdcmRequestStatus={currentStdcmRequestStatus}
/>
</div>
)}
</div>
Expand Down
6 changes: 3 additions & 3 deletions front/src/applications/stdcm/views/StdcmResultsV2.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ type StcdmResultsProps = {
creationDate?: Date;
};

const codeNumber = generateCodeNumber();
const simulationReportSheetNumber = generateCodeNumber();

// TODO TS2 : Adapt StdcmResult to trainSchedule v2 (SpaceTimeChart and SpeedSpaceChart)

Expand All @@ -46,12 +46,12 @@ const StcdmResultsV2 = ({
pathProperties={pathProperties}
rollingStockData={rollingStockData}
speedLimitByTag={speedLimitByTag}
simulationReportSheetNumber={codeNumber}
simulationReportSheetNumber={simulationReportSheetNumber}
mapCanvas={mapCanvas}
creationDate={creationDate}
/>
}
fileName={`STDCM-${codeNumber}.pdf`}
fileName={`STDCM-${simulationReportSheetNumber}.pdf`}
>
{t('stdcm:stdcmSimulationReport')}
</PDFDownloadLink>
Expand Down
15 changes: 14 additions & 1 deletion front/src/applications/stdcmV2/components/StdcmConfig.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useTranslation } from 'react-i18next';
import type { ManageTrainSchedulePathProperties } from 'applications/operationalStudies/types';
import STDCM_REQUEST_STATUS from 'applications/stdcm/consts';
import useStdcm from 'applications/stdcm/hooks/useStdcm';
import type { StdcmV2SuccessResponse } from 'applications/stdcm/types';
import { useOsrdConfActions } from 'common/osrdContext';
import usePathfindingV2 from 'modules/pathfinding/hook/usePathfinding';
import { Map } from 'modules/trainschedule/components/ManageTrainSchedule';
Expand All @@ -26,18 +27,21 @@ const StdcmConfig = ({
pathProperties,
setPathProperties,
setCurrentSimulationInputs,
setStdcmSimulationResults,
}: {
currentSimulationInputs: StdcmSimulationResult['input'] | undefined;
pathProperties?: ManageTrainSchedulePathProperties;
setPathProperties: (pathProperties?: ManageTrainSchedulePathProperties) => void;
setCurrentSimulationInputs: React.Dispatch<
React.SetStateAction<StdcmSimulationResult['input'] | undefined>
>;
setStdcmSimulationResults: (stdcmSimulationResults: StdcmV2SuccessResponse | undefined) => void;
}) => {
const { t } = useTranslation('stdcm');
const loaderRef = useRef<HTMLDivElement>(null);

const { launchStdcmRequest, cancelStdcmRequest, currentStdcmRequestStatus } = useStdcm();
const { launchStdcmRequest, cancelStdcmRequest, currentStdcmRequestStatus, stdcmV2Results } =
useStdcm();
const isPending = currentStdcmRequestStatus === STDCM_REQUEST_STATUS.pending;

const dispatch = useAppDispatch();
Expand All @@ -61,6 +65,10 @@ const StdcmConfig = ({
dispatch(updateStdcmStandardAllowance({ type: 'time_per_distance', value: 4.5 }));
}, []);

useEffect(() => {
setStdcmSimulationResults(stdcmV2Results);
}, [stdcmV2Results]);

return (
<div className="stdcm-v2__body">
<div className="stdcm-v2-simulation-settings">
Expand Down Expand Up @@ -102,6 +110,11 @@ const StdcmConfig = ({
}}
/>
)}
{currentStdcmRequestStatus === 'SUCCESS' && (
<div className="simulation-availaible ml-n5">
<span>{t('simulation.available')}</span>
</div>
)}
{pathfindingState.error && (
<div className="warning-box">
<span>
Expand Down
81 changes: 81 additions & 0 deletions front/src/applications/stdcmV2/components/StdcmResults.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import React, { useState } from 'react';

import { CheckCircle } from '@osrd-project/ui-icons';
import { useTranslation } from 'react-i18next';

import type { ManageTrainSchedulePathProperties } from 'applications/operationalStudies/types';
import type { StdcmV2SuccessResponse } from 'applications/stdcm/types';
import { generateCodeNumber } from 'applications/stdcm/utils';
import type { RollingStockWithLiveries } from 'common/api/osrdEditoastApi';
import { Map } from 'modules/trainschedule/components/ManageTrainSchedule';
import { formatDateToString } from 'utils/date';

import StdcmTableResults from './StdcmTableResults';

type StcdmResultsV2Props = {
stdcmData: StdcmV2SuccessResponse;
pathProperties?: ManageTrainSchedulePathProperties;
rollingStockData: RollingStockWithLiveries;
speedLimitByTag?: string;
currentStdcmRequestStatus?: string;
creationDate?: Date;
};

const StcdmResults = ({
stdcmData,
pathProperties,
rollingStockData,
speedLimitByTag,
currentStdcmRequestStatus,
creationDate,
}: StcdmResultsV2Props) => {
const { t } = useTranslation('stdcm');
const date = creationDate && t('formattedCreationDate', formatDateToString(creationDate));

const [isSimulationSelected, setIsSimulationSelected] = useState(false);

const [mapCanvas, setMapCanvas] = useState<string>();

const simulationReportSheetNumber = generateCodeNumber();

return (
<main className="stdcm-v2-results">
<div className="simuation-banner">
<div
className="simulation-validated"
style={{ color: isSimulationSelected ? '#0B723C' : '' }}
>
Simulation n°1
{isSimulationSelected && (
<div className="check-circle">
<CheckCircle variant="fill" />
</div>
)}
</div>
<div className="creation-date">{date}</div>
</div>
<div className="simuation-results">
<StdcmTableResults
stdcmData={stdcmData}
pathProperties={pathProperties}
rollingStockData={rollingStockData}
speedLimitByTag={speedLimitByTag}
creationDate={creationDate}
simulationReportSheetNumber={simulationReportSheetNumber}
setIsSimulationSelected={setIsSimulationSelected}
mapCanvas={mapCanvas}
/>
<div className="osrd-config-item-container osrd-config-item-container-map map-results">
<Map
hideAttribution
setMapCanvas={setMapCanvas}
pathProperties={pathProperties}
currentStdcmRequestStatus={currentStdcmRequestStatus}
/>
</div>
</div>
</main>
);
};

export default StcdmResults;
Loading

0 comments on commit 9ec851e

Please sign in to comment.