diff --git a/src/components/ContainerComponents/IndicatorsContainer/MultiFluidIndicatorsContainer.tsx b/src/components/ContainerComponents/IndicatorsContainer/MultiFluidIndicatorsContainer.tsx index 0b69b47401e1d1e083de10028d330f2ea26261b3..5f5cd02414524a88622ee09e58c5e4820aefa026 100644 --- a/src/components/ContainerComponents/IndicatorsContainer/MultiFluidIndicatorsContainer.tsx +++ b/src/components/ContainerComponents/IndicatorsContainer/MultiFluidIndicatorsContainer.tsx @@ -8,7 +8,7 @@ import { import { withClient, Client } from 'cozy-client' import PerformanceIndicator from 'components/ContentComponents/PerformanceIndicator/PerformanceIndicator' import IndicatorContainerSwitcher from 'components/ContainerComponents/IndicatorsContainer/IndicatorContainerSwitcher' -import ConsumptionPeriodSelector from 'services/consumptionPeriodSelectorService' +import TimePeriodService from 'services/timePeriod.service' import ConsumptionDataManager from 'services/consumptionDataManagerService' import PerformanceIndicatorService from 'services/performanceIndicator.service' import { translate } from 'cozy-ui/react/I18n' @@ -49,8 +49,8 @@ const MultiFluidIndicatorsContainer: React.FC<MultiFluidIndicatorsContainerProps const lastDate = await cdm.fetchLastDateData(fluidTypes) if (subscribed && lastDate) { - const consumptionPeriodSelector = new ConsumptionPeriodSelector() - const periods = consumptionPeriodSelector.getTimePeriods( + const timePeriodService = new TimePeriodService() + const periods = timePeriodService.getTimePeriods( lastDate, fluidTypes, timeStep diff --git a/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx b/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx index 9eb27546fb21056d2d20a40e7bf637a23200c3f3..93992ebde713346069aa882e201f34ea493f03ab 100644 --- a/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx +++ b/src/components/ContainerComponents/IndicatorsContainer/SingleFluidIndicatorsContainer.tsx @@ -8,7 +8,7 @@ import { import { FluidType } from 'enum/fluid.enum' import { withClient, Client } from 'cozy-client' import PerformanceIndicator from 'components/ContentComponents/PerformanceIndicator/PerformanceIndicator' -import ConsumptionPeriodSelector from 'services/consumptionPeriodSelectorService' +import TimePeriodService from 'services/timePeriod.service' import ConsumptionDataManager from 'services/consumptionDataManagerService' import PerformanceIndicatorService from 'services/performanceIndicator.service' import { translate } from 'cozy-ui/react/I18n' @@ -55,8 +55,8 @@ const SingleFluidIndicatorsContainer: React.FC<SingleFluidIndicatorsContainerPro const lastDate = await cdm.fetchLastDateData(fluidTypes) if (lastDate) { - const consumptionPeriodSelector = new ConsumptionPeriodSelector() - const periods = consumptionPeriodSelector.getTimePeriods( + const timePeriodService = new TimePeriodService() + const periods = timePeriodService.getTimePeriods( lastDate, fluidTypes, timeStep diff --git a/src/services/consumptionPeriodSelectorService.ts b/src/services/timePeriod.service.ts similarity index 90% rename from src/services/consumptionPeriodSelectorService.ts rename to src/services/timePeriod.service.ts index 21f0d294b5a9200afe8613cc77775ff669c81013..bb4438d1c1c37e52d3e110dadb11bc76f44e2177 100644 --- a/src/services/consumptionPeriodSelectorService.ts +++ b/src/services/timePeriod.service.ts @@ -1,21 +1,17 @@ import { DateTime } from 'luxon' import { FluidType } from 'enum/fluid.enum' import { ITimePeriod, TimeStep } from './dataConsumptionContracts' -import Config from '../../config.json' -import { FluidConfig } from 'models' - -export default class ConsumptionPeriodSelector { - private readonly _dataDelayOffsetConfig: FluidConfig[] - - constructor() { - this._dataDelayOffsetConfig = Config.fluidConfig - } +import ConfigService from 'services/fluidConfig.service' +export default class TimePeriodService { public getTimePeriods( date: DateTime, fluidTypes: FluidType[], timeStep: TimeStep - ): any { + ): { + timePeriod: ITimePeriod + comparisonTimePeriod: ITimePeriod + } { const endOfOffsetDate = this.applyOffsetToDate( date, this.calculateFluidTypesOffset(fluidTypes) @@ -48,8 +44,10 @@ export default class ConsumptionPeriodSelector { public calculateFluidTypesOffset(fluidTypes: FluidType[]): number { const allOffsets: number[] = [] + const configService = new ConfigService() + const fluidConfig = configService.getFluidConfig() fluidTypes.forEach(fluidType => - allOffsets.push(this._dataDelayOffsetConfig[fluidType].dataDelayOffset) + allOffsets.push(fluidConfig[fluidType].dataDelayOffset) ) // eslint-disable-next-line prefer-spread @@ -73,24 +71,21 @@ export default class ConsumptionPeriodSelector { public getLastDayOfTimePeriod(date: DateTime, timeStep: TimeStep): DateTime { switch (timeStep) { - case TimeStep.HALF_AN_HOUR || TimeStep.HOUR: + case TimeStep.HALF_AN_HOUR: + case TimeStep.HOUR: return DateTime.local(date.year, date.month, date.day) - case TimeStep.DAY: return DateTime.local(date.year, date.month, date.day) .setLocale('fr-CA') .endOf('week') - case TimeStep.MONTH: return DateTime.local(date.year, date.month, 1) .plus({ months: 1 }) .minus({ days: 1 }) - case TimeStep.YEAR: return DateTime.local(date.year, 1, 1) .plus({ years: 1 }) .minus({ days: 1 }) - default: return date } @@ -98,23 +93,20 @@ export default class ConsumptionPeriodSelector { public getLastDayOfCompletePeriod(date: DateTime, timeStep: TimeStep) { switch (timeStep) { - case TimeStep.HALF_AN_HOUR || TimeStep.HOUR: + case TimeStep.HALF_AN_HOUR: + case TimeStep.HOUR: return DateTime.local(date.year, date.month, date.day) - case TimeStep.DAY: return DateTime.local(date.year, date.month, date.day) .setLocale('fr-CA') .startOf('week') .minus({ days: 1 }) - case TimeStep.MONTH: return DateTime.local(date.year, date.month, 1).minus({ days: 1, }) - case TimeStep.YEAR: return DateTime.local(date.year, 1, 1).minus({ days: 1 }) - default: return date } @@ -125,20 +117,17 @@ export default class ConsumptionPeriodSelector { timeStep: TimeStep ) { switch (timeStep) { - case TimeStep.HALF_AN_HOUR || TimeStep.HOUR: + case TimeStep.HALF_AN_HOUR: + case TimeStep.HOUR: return DateTime.local(startDate.year, startDate.month, startDate.day) - case TimeStep.DAY: return DateTime.local(startDate.year, startDate.month, startDate.day) .setLocale('fr-CA') .startOf('week') - case TimeStep.MONTH: return DateTime.local(startDate.year, startDate.month, 1) - case TimeStep.YEAR: return DateTime.local(startDate.year, 1, 1) - default: return startDate } @@ -149,12 +138,10 @@ export default class ConsumptionPeriodSelector { timeStep: TimeStep ): ITimePeriod { // calculate last day of the tobe coimpleted period - const lastCompleteTimePeriod = { startDate: this.getStartDateFromEndDateByTimeStep(lastDay, timeStep), endDate: lastDay, } - return lastCompleteTimePeriod } @@ -166,13 +153,13 @@ export default class ConsumptionPeriodSelector { let comparisonTimePeriodEndDate: DateTime switch (timeStep) { - case TimeStep.HALF_AN_HOUR || TimeStep.HOUR: + case TimeStep.HALF_AN_HOUR: + case TimeStep.HOUR: comparisonTimePeriodStartDate = timePeriod.startDate.minus({ days: 1 }) comparisonTimePeriodEndDate = timePeriod.endDate.minus({ days: 1, }) break - case TimeStep.DAY: comparisonTimePeriodStartDate = timePeriod.startDate .minus({ days: 1 }) @@ -180,7 +167,6 @@ export default class ConsumptionPeriodSelector { .startOf('week') comparisonTimePeriodEndDate = timePeriod.startDate.minus({ days: 1 }) break - case TimeStep.MONTH: comparisonTimePeriodStartDate = DateTime.local( timePeriod.startDate.year - 1, @@ -193,7 +179,6 @@ export default class ConsumptionPeriodSelector { 1 ).endOf('month') break - case TimeStep.YEAR: comparisonTimePeriodStartDate = DateTime.local( timePeriod.startDate.year - 1, @@ -206,7 +191,6 @@ export default class ConsumptionPeriodSelector { timePeriod.endDate.day ).endOf('year') break - default: comparisonTimePeriodStartDate = timePeriod.startDate comparisonTimePeriodEndDate = timePeriod.endDate