From 4eb4535d0477e1277e5040d954a4f01f2dc404b3 Mon Sep 17 00:00:00 2001 From: Thibault Reidy Date: Fri, 25 Oct 2024 16:02:12 +0200 Subject: [PATCH] feat: remove slidingWindowIdx and use currentSlidingWindow --- src/models/TemperatureIterator.test.ts | 3 +-- src/models/TemperatureIterator.ts | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/models/TemperatureIterator.test.ts b/src/models/TemperatureIterator.test.ts index 601b7b4..35e1a13 100644 --- a/src/models/TemperatureIterator.test.ts +++ b/src/models/TemperatureIterator.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; import { SIMULATION_SLIDING_WINDOW } from '@/config/simulation'; -// Import your class import { TemperatureRow } from '@/types/temperatures'; import { TimeUnit, TimeUnitType } from '@/types/time'; import { timeConversionFactors } from '@/utils/time'; @@ -153,7 +152,7 @@ describe('TemperatureIterator', () => { }); it('should use the default sliding window if none is provided', () => { - const temperatures = createDummyTemperatures(10, TimeUnit.days); + const temperatures = createDummyTemperatures(10, TimeUnit.hours); const iterator = new TemperatureIterator({ temperatures, measurementFrequency: TimeUnit.days, diff --git a/src/models/TemperatureIterator.ts b/src/models/TemperatureIterator.ts index 941783d..eb6360c 100644 --- a/src/models/TemperatureIterator.ts +++ b/src/models/TemperatureIterator.ts @@ -43,8 +43,6 @@ export class TemperatureIterator { private currentSlidingWindow: SlidingWindow; - private slidingWindowIdx: number; - /** * * @param temperatures - The complete array of loaded temperatures. @@ -75,8 +73,9 @@ export class TemperatureIterator { timeConversionFactors[measurementFrequency], // Convert window according to measurement frequency ); - this.slidingWindowIdx = initSlidingWindowIdx(this.slidingWindowSize); - this.currentSlidingWindow = initSlidingWindow(this.slidingWindowIdx); + this.currentSlidingWindow = initSlidingWindow( + initSlidingWindowIdx(this.slidingWindowSize), + ); } hasMore(): boolean { @@ -84,12 +83,15 @@ export class TemperatureIterator { return false; } - return this.slidingWindowIdx + 1 < this.numberOfRows; + return ( + this.currentSlidingWindow.idx + this.slidingWindowSize < this.numberOfRows + ); } reset(): void { - this.slidingWindowIdx = initSlidingWindowIdx(this.slidingWindowSize); - this.currentSlidingWindow = initSlidingWindow(this.slidingWindowIdx); + this.currentSlidingWindow = initSlidingWindow( + initSlidingWindowIdx(this.slidingWindowSize), + ); } getNext(): SlidingWindow { @@ -111,13 +113,6 @@ export class TemperatureIterator { const total = temperatures.reduce((sum, currVal) => sum + currVal, 0); const currentSize = temperatures.length; - // TODO: this is needed for now to work correctly! - // Without it, there is some weird case like: - // temperatures: [10, 11] - // getNext() -> [10, 11], expected [10, 11] - // getNext() -> [11], No more temperatures! - this.slidingWindowIdx = currIdx + 1; - this.currentSlidingWindow = { idx: currIdx, mean: Math.round(total / currentSize),