Skip to content

Commit ef038d3

Browse files
committed
front: stop heating the room when selecting a train
Spring is coming. We were generating the PDF report (rendering and all) each time a train was selected. Instead, only generate the PDF when the user clicks the download button. Signed-off-by: Simon Ser <[email protected]>
1 parent cf4a914 commit ef038d3

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

front/src/modules/simulationResult/SimulationResultExport/SimulationResultsExport.tsx

+25-23
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { useMemo } from 'react';
1+
import { useCallback, useMemo } from 'react';
22

33
import { Button } from '@osrd-project/ui-core';
44
import { Download, File } from '@osrd-project/ui-icons';
5-
import { BlobProvider } from '@react-pdf/renderer';
5+
import { pdf } from '@react-pdf/renderer';
66
import { useTranslation } from 'react-i18next';
77

88
import type {
@@ -55,30 +55,32 @@ const SimulationResultExport = ({
5555
[simulatedTrain]
5656
);
5757

58+
const exportTrainPDF = useCallback(async () => {
59+
const doc = (
60+
<SimulationReportSheetScenario
61+
path={path}
62+
scenarioData={scenarioData}
63+
trainData={simulationSheetData}
64+
operationalPointsList={operationalPoints}
65+
mapCanvas={mapCanvas}
66+
/>
67+
);
68+
const blob = await pdf(doc).toBlob();
69+
const url = URL.createObjectURL(blob);
70+
window.open(url, '_blank');
71+
URL.revokeObjectURL(url);
72+
}, [path, scenarioData, simulationSheetData, operationalPoints, mapCanvas]);
73+
5874
return (
5975
<div className="simulation-sheet-container">
6076
{/* Export simulation PDF */}
61-
<BlobProvider
62-
document={
63-
<SimulationReportSheetScenario
64-
path={path}
65-
scenarioData={scenarioData}
66-
trainData={simulationSheetData}
67-
operationalPointsList={operationalPoints}
68-
mapCanvas={mapCanvas}
69-
/>
70-
}
71-
>
72-
{({ url }) => (
73-
<Button
74-
onClick={() => window.open(url!, '_blank')}
75-
variant="Quiet"
76-
label={t('simulationSheet')}
77-
size="medium"
78-
leadingIcon={<File />}
79-
/>
80-
)}
81-
</BlobProvider>
77+
<Button
78+
onClick={exportTrainPDF}
79+
variant="Quiet"
80+
label={t('simulationSheet')}
81+
size="medium"
82+
leadingIcon={<File />}
83+
/>
8284

8385
{/* Export simulation CSV */}
8486
<Button

0 commit comments

Comments
 (0)