diff --git a/src/components/Export/exportLoadingModal.tsx b/src/components/Export/exportLoadingModal.tsx index 516a4a590111256fee86ad08c51baa7b67fc7492..47bcc4778b004bae11855d5cf96b3d93683165f3 100644 --- a/src/components/Export/exportLoadingModal.tsx +++ b/src/components/Export/exportLoadingModal.tsx @@ -11,6 +11,7 @@ import * as FileSaver from 'file-saver' import { Datachart, TimePeriod } from 'models' import React, { useCallback, useEffect } from 'react' import ConsumptionDataManager from 'services/consumption.service' +import EnedisMonthlyAnalysisDataService from 'services/enedisMonthlyAnalysisData.service' import * as XLSX from 'xlsx' import './exportLoadingModal.scss' @@ -21,6 +22,15 @@ interface ExportLoadingModalProps { selectedFluids: FluidType[] } +interface ExportDataSheet { + fluidName: string + data: ExportDataRow[] +} + +interface ExportDataRow { + [key: string]: string | number +} + const ExportLoadingModal: React.FC<ExportLoadingModalProps> = ({ open, handleCloseClick, @@ -34,7 +44,10 @@ const ExportLoadingModal: React.FC<ExportLoadingModalProps> = ({ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' const fileExtension = '.xlsx' - const exportToXlsx = (exportDataSheets: any, fileName: string) => { + const exportToXlsx = ( + exportDataSheets: ExportDataSheet[], + fileName: string + ) => { const wb = XLSX.utils.book_new() for (const dataSheet of exportDataSheets) { const ws = XLSX.utils.json_to_sheet(dataSheet.data) @@ -46,7 +59,7 @@ const ExportLoadingModal: React.FC<ExportLoadingModalProps> = ({ } const getExportDataFluid = useCallback( - async (fluidType: FluidType): Promise<any> => { + async (fluidType: FluidType): Promise<ExportDataSheet | null> => { const consumptionService = new ConsumptionDataManager(client) const firstDataDate = await consumptionService.fetchAllFirstDateData( [fluidType], @@ -74,15 +87,14 @@ const ExportLoadingModal: React.FC<ExportLoadingModalProps> = ({ ) if (dataLoad?.actualData) { - const exportDataFluid: any = {} - exportDataFluid.fluidName = t( - 'FLUID.' + FluidType[fluidType] + '.LABEL' - ) - exportDataFluid.data = [] + const exportDataSheet: ExportDataSheet = { + fluidName: t('FLUID.' + FluidType[fluidType] + '.LABEL'), + data: [], + } for (const data of dataLoad.actualData) { if (data.value != -1) { - const dataRow: any = {} + const dataRow: ExportDataRow = {} dataRow[t('export.month')] = data.date.month .toString() .padStart(2, '0') @@ -92,10 +104,27 @@ const ExportLoadingModal: React.FC<ExportLoadingModalProps> = ({ 'FLUID.' + FluidType[fluidType] + '.UNIT' )})` ] = data.value - exportDataFluid.data.push(dataRow) + if (fluidType === FluidType.ELECTRICITY) { + const emas = new EnedisMonthlyAnalysisDataService(client) + const maxPowerEntities = await emas.getMaxPowerByDate( + data.date.year, + data.date.month + ) + if (maxPowerEntities) { + const maxLoad = maxPowerEntities.reduce((max, entity) => { + if (entity.load > max) { + return entity.load + } + return max + }, 0) + dataRow[t('export.maxpower')] = maxLoad + } + } + exportDataSheet.data.push(dataRow) } } - return exportDataFluid + console.log(exportDataSheet) + return exportDataSheet } return null }, @@ -108,7 +137,7 @@ const ExportLoadingModal: React.FC<ExportLoadingModalProps> = ({ async function exportData(): Promise<void> { try { - const exportDataSheets: any[] = [] + const exportDataSheets: ExportDataSheet[] = [] for (const fluidType of selectedFluids) { const exportDataFluid = await getExportDataFluid(fluidType) if (exportDataFluid) exportDataSheets.push(exportDataFluid) diff --git a/src/locales/fr.json b/src/locales/fr.json index 87addeb078e03c01c04889cf7dcbabfd23fe9695..668cd81d695224d4b773d551132d1c528e607fda 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -1178,6 +1178,7 @@ "month": "Mois", "year": "Année", "consumption": "Consommation", + "maxpower": "Puissance max (kVA)", "button_close": "Fermer la fenêtre", "modal_start": { "accessibility_title": "Commencer le téléchargement",