From 5cd1789473cf1e7ffe9c4edd6a4a48d4609954d3 Mon Sep 17 00:00:00 2001 From: Nate-Wessel Date: Fri, 12 Jul 2024 19:08:19 +0000 Subject: [PATCH] show simple progress bar --- frontend/src/Sidebar/ResultsContainer.jsx | 35 +++++++++++++++-------- frontend/src/spatialData.js | 1 + 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/frontend/src/Sidebar/ResultsContainer.jsx b/frontend/src/Sidebar/ResultsContainer.jsx index e065c95..dc0af43 100644 --- a/frontend/src/Sidebar/ResultsContainer.jsx +++ b/frontend/src/Sidebar/ResultsContainer.jsx @@ -1,16 +1,21 @@ -import { useContext, useState } from 'react' +import { useContext, useState, useEffect } from 'react' import { DataContext } from '../Layout' import BigButton from './BigButton' - export default function ResultsContainer(){ const [ results, setResults ] = useState(undefined) const [ isFetchingData, setIsFetchingData ] = useState(false) + const [ doneCount, setDoneCount ] = useState(-1) const { data } = useContext(DataContext) const numResults = data.travelTimeQueries.length + useEffect(()=>{ + data.queue.on('active',()=>{ + setDoneCount(count => count + 1) + }) + },[]) return (
- {numResults} travel time{numResults == 1 ? '' : 's'} to estimate currently + {numResults} travel time{numResults == 1 ? '' : 's'} to be queried {numResults > 0 && ! isFetchingData && { setResults(undefined) @@ -23,26 +28,32 @@ export default function ResultsContainer(){ Submit Query } - {isFetchingData && -

Please wait while your request is being processed

- } + {isFetchingData && <> +

Finished fetching {doneCount}/{numResults} results

+ + } {results && <> r.resultsRecord('json'))))}`} > - - Download results as JSON - + Download results as JSON r.resultsRecord('csv')).join('\n'))}`} > - - Download results as CSV - + Download results as CSV }
) +} + +function ProgressBar({percentDone}){ + return ( + + + + + ) } \ No newline at end of file diff --git a/frontend/src/spatialData.js b/frontend/src/spatialData.js index 2fbe65b..f17ad41 100644 --- a/frontend/src/spatialData.js +++ b/frontend/src/spatialData.js @@ -128,4 +128,5 @@ export class SpatialData { .map( TTQ => () => TTQ.fetchData() ) ) } + get queue(){ return this.#queue } }