Skip to content

Commit

Permalink
front: remove map feature from simualtion report sheet
Browse files Browse the repository at this point in the history
Signed-off-by: Achraf Mohyeddine <a.mohyeddine@gmail.com>
  • Loading branch information
achrafmohye committed Jan 7, 2025
1 parent 3613a9b commit 382d08d
Show file tree
Hide file tree
Showing 5 changed files with 2 additions and 76 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import { useEffect, useState } from 'react';

import { Table, TR, TH, TD } from '@ag-media/react-pdf-table';
import { Page, Text, Image, Document, View, Link } from '@react-pdf/renderer';
import type { TFunction } from 'i18next';
Expand All @@ -14,7 +12,7 @@ import { capitalizeFirstLetter } from 'utils/strings';

import styles from './SimulationReportStyleSheet';
import type { SimulationReportSheetProps } from '../../types';
import { base64ToJpeg, getStopDurationTime } from '../../utils/formatSimulationReportSheet';
import { getStopDurationTime } from '../../utils/formatSimulationReportSheet';

const getSecondaryCode = ({ location }: StdcmPathStep) => location!.secondary_code;

Expand All @@ -40,7 +38,6 @@ const SimulationReportSheet = ({
stdcmData,
consist,
simulationReportSheetNumber,
mapCanvas,
operationalPointsList,
}: SimulationReportSheetProps) => {
const { t } = useTranslation(['stdcm-simulation-report-sheet', 'stdcm']);
Expand All @@ -63,28 +60,6 @@ const SimulationReportSheet = ({
path_number2: 'n°YYYYYY',
};

const [mapImageUrl, setMapImageUrl] = useState<string | null>(null);

// Convert image to JPEG
useEffect(() => {
if (mapCanvas) {
base64ToJpeg(mapCanvas, 0.8).then((blob) => {
const objectUrl = URL.createObjectURL(blob);
setMapImageUrl(objectUrl);
});
}
}, [mapCanvas]);

// Cleanup the object URL when the component is unmounted or before a new one is created
useEffect(
() => () => {
if (mapImageUrl) {
URL.revokeObjectURL(mapImageUrl);
}
},
[mapImageUrl]
);

return (
<Document>
<Page wrap={false} style={styles.main.page} size={[1344]}>
Expand Down Expand Up @@ -412,14 +387,8 @@ const SimulationReportSheet = ({
);
})}
</Table>
<View style={styles.simulation.horizontalBar} />
</View>
</View>
{mapCanvas && (
<View style={styles.map.map} id="simulationMap">
{mapImageUrl && <Image src={mapImageUrl} />}
</View>
)}
<View style={styles.footer.warrantyBox}>
<Text style={styles.footer.warrantyMessage}>{t('withoutWarranty')}</Text>
</View>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,6 @@ const styles = {
warrantyBox: {
height: '64',
marginTop: '16',
borderTop: '1 solid #D3D1CF',
display: 'flex',
alignItems: 'center',
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useMemo, useState } from 'react';
import { useMemo } from 'react';

import { Button } from '@osrd-project/ui-core';
import { PDFDownloadLink } from '@react-pdf/renderer';
Expand Down Expand Up @@ -46,7 +46,6 @@ const StcdmResults = ({
pathTrackRanges,
}: StcdmResultsProps) => {
const { t } = useTranslation('stdcm', { keyPrefix: 'simulation.results' });
const [mapCanvas, setMapCanvas] = useState<string>();

const selectedSimulation = simulationsList[selectedSimulationIndex];
const { outputs } = selectedSimulation || {};
Expand Down Expand Up @@ -105,7 +104,6 @@ const StcdmResults = ({
stdcmData={outputs.results}
consist={selectedSimulation.inputs.consist}
simulationReportSheetNumber={simulationReportSheetNumber}
mapCanvas={mapCanvas}
operationalPointsList={operationalPointsList}
/>
}
Expand Down Expand Up @@ -172,7 +170,6 @@ const StcdmResults = ({
hideAttribution
showStdcmAssets
isFeasible={!hasConflictResults}
setMapCanvas={setMapCanvas}
pathGeometry={outputs?.pathProperties?.geometry}
simulationPathSteps={markersInfo}
/>
Expand Down
1 change: 0 additions & 1 deletion front/src/applications/stdcm/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ export type SimulationReportSheetProps = {
stdcmData: StdcmSuccessResponse;
consist: StdcmSimulationInputs['consist'];
simulationReportSheetNumber: string;
mapCanvas?: string;
operationalPointsList: StdcmResultsOperationalPoint[];
};

Expand Down
38 changes: 0 additions & 38 deletions front/src/applications/stdcm/utils/formatSimulationReportSheet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,41 +143,3 @@ export function getOperationalPointsWithTimes(

return opResults;
}

/**
* Converts a base64 image into a JPEG blob while reducing quality.
* @param base64Image - Image in base64
* @param quality - Image quality (between 0 and 1, where 1 is the best quality)
* @returns {Promise<Blob>} - Return an optimised JPEG Blob
*/
export const base64ToJpeg = (base64Image: string, quality: number): Promise<Blob> =>
new Promise((resolve, reject) => {
const img = new Image();
img.src = base64Image;
img.onload = () => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
if (!ctx) {
reject(new Error('Could not get canvas context'));
return;
}
canvas.width = img.width;
canvas.height = img.height;

ctx.drawImage(img, 0, 0);

canvas.toBlob(
(blob) => {
if (blob) {
resolve(blob);
}
},
'image/jpeg',
quality
);
};

img.onerror = (error) => {
reject(error);
};
});

0 comments on commit 382d08d

Please sign in to comment.