|
1 |
| -import { useMemo } from 'react'; |
| 1 | +import { useCallback, useMemo } from 'react'; |
2 | 2 |
|
3 | 3 | import { Button } from '@osrd-project/ui-core';
|
4 | 4 | import { Download, File } from '@osrd-project/ui-icons';
|
5 |
| -import { BlobProvider } from '@react-pdf/renderer'; |
| 5 | +import { pdf } from '@react-pdf/renderer'; |
6 | 6 | import { useTranslation } from 'react-i18next';
|
7 | 7 |
|
8 | 8 | import type {
|
@@ -55,30 +55,32 @@ const SimulationResultExport = ({
|
55 | 55 | [simulatedTrain]
|
56 | 56 | );
|
57 | 57 |
|
| 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 | + |
58 | 74 | return (
|
59 | 75 | <div className="simulation-sheet-container">
|
60 | 76 | {/* 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 | + /> |
82 | 84 |
|
83 | 85 | {/* Export simulation CSV */}
|
84 | 86 | <Button
|
|
0 commit comments