From bacad935a5feae3e013a38496396cbd3065e40f6 Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Mon, 23 Dec 2024 14:50:38 -0800 Subject: [PATCH] add work in progress code to get data for etas --- src/repository.ts | 5 +++-- src/repositoryDataLoader.ts | 31 ++++++++++++++++++++++++++++--- src/testData.ts | 4 ++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/repository.ts b/src/repository.ts index f0aafd3..501c9dc 100644 --- a/src/repository.ts +++ b/src/repository.ts @@ -41,10 +41,11 @@ export interface IEta { } export interface IOrderedStop { - nextStop?: IOrderedStop, - previousStop?: IOrderedStop, + nextStop?: IOrderedStop; + previousStop?: IOrderedStop; routeId: string; stopId: string; + position: number; } /** diff --git a/src/repositoryDataLoader.ts b/src/repositoryDataLoader.ts index b3b013b..ff949a9 100644 --- a/src/repositoryDataLoader.ts +++ b/src/repositoryDataLoader.ts @@ -37,13 +37,13 @@ export class RepositoryDataLoader { await this.fetchAndUpdateRouteDataForExistingSystems(); await this.fetchAndUpdateStopAndPolylineDataForRoutesInExistingSystems(); await this.fetchAndUpdateShuttleDataForExistingSystems(); - await this.fetchAndUpdateEtaData(); + await this.fetchAndUpdateEtaDataForExistingOrderedStops(); } catch (e) { console.error(e); } finally { // TODO test if memoization of shouldBeRunning works as intended, // I have no idea how JavaScript works - setTimeout(this.startFetchDataAndUpdate, timeout); + // setTimeout(this.startFetchDataAndUpdate, timeout); } } @@ -181,8 +181,30 @@ export class RepositoryDataLoader { })); } - private async fetchAndUpdateEtaData() { + private async fetchAndUpdateEtaDataForExistingOrderedStops() { + // TODO implement once I figure out how to associate ETA data with shuttles + // const systems = await this.repository.getSystems(); + // await Promise.all(systems.map(async (system: ISystem) => { + // const stops = await this.repository.getStopsBySystemId(system.id); + // + // await Promise.all(stops.map(async (stop: IStop) => { + // const orderedStops = await this.repository.getOrderedStopsByStopId(stop.id); + // + // await Promise.all(orderedStops.map(async (orderedStop) => { + // const params = { + // eta: "3", + // stopIds: stop.id, + // routeId: orderedStop.routeId, + // position: orderedStop.position, + // }; + // + // // How to get shuttle ID????????? + // // API doesn't provide it + // // I might be cooked + // })); + // })); + // })); } private async updateStopDataForSystemAndApiResponse(system: ISystem, json: any) { @@ -225,6 +247,7 @@ export class RepositoryDataLoader { constructedOrderedStop = { routeId, stopId, + position: index + 1, }; } @@ -232,12 +255,14 @@ export class RepositoryDataLoader { constructedOrderedStop.previousStop = { routeId, stopId: jsonOrderedStopData[index - 1][1], + position: index, }; } if (index < jsonOrderedStopData.length - 1) { constructedOrderedStop.nextStop = { routeId, stopId: jsonOrderedStopData[index + 1][1], + position: index + 2, }; } diff --git a/src/testData.ts b/src/testData.ts index 33af1ae..7142096 100644 --- a/src/testData.ts +++ b/src/testData.ts @@ -50,10 +50,12 @@ const orderedStopsForRedRoute: IOrderedStop[] = [ { routeId: routes[0].id, stopId: stops[0].id, + position: 1, }, { routeId: routes[0].id, stopId: stops[1].id, + position: 2, }, ]; @@ -61,10 +63,12 @@ const orderedStopsForTealRoute: IOrderedStop[] = [ { routeId: routes[1].id, stopId: stops[1].id, + position: 1, }, { routeId: routes[1].id, stopId: stops[0].id, + position: 2, }, ]