@@ -60,17 +60,25 @@ const socrataServiceRequestSchema = object({
6060
6161const srArraySchema = array ( ) . of ( socrataServiceRequestSchema ) ;
6262
63- export async function getServiceRequestSocrata ( ) {
63+ export async function getServiceRequestSocrata ( startDate , endDate ) {
6464 const dataLoadStartTime = performance . now ( ) ;
6565
6666 try {
67- // Fetch current year SR data through Socrata API
68- const currentYear = String ( new Date ( ) . getFullYear ( ) ) ;
69- const currentYearFilename = `https://data.lacity.org/resource/${ dataResources [ currentYear ] } .json`
70- const response = await fetch (
71- currentYearFilename
67+ // Build list of years covered by the date range
68+ const startYear = moment ( startDate ) . year ( ) ;
69+ const endYear = moment ( endDate ) . year ( ) ;
70+ const years = [ ] ;
71+ for ( let year = startYear ; year <= endYear ; year ++ ) {
72+ years . push ( String ( year ) ) ;
73+ }
74+
75+ // Fetch full year data for each year in parallel
76+ const unvalidatedByYear = await Promise . all (
77+ years . map ( ( year ) =>
78+ fetch ( `https://data.lacity.org/resource/${ dataResources [ year ] } .json` )
79+ . then ( ( res ) => res . json ( ) )
80+ )
7281 ) ;
73- const unvalidatedSrs = await response . json ( ) ;
7482
7583 const dataLoadEndTime = performance . now ( ) ;
7684 console . log (
@@ -80,7 +88,12 @@ export async function getServiceRequestSocrata() {
8088 ) ;
8189
8290 const mapLoadStartTime = performance . now ( ) ;
83- const validatedSrs = await srArraySchema . validate ( unvalidatedSrs ) ;
91+ const validatedByYear = await Promise . all (
92+ unvalidatedByYear . map ( ( unvalidatedSrs ) =>
93+ srArraySchema . validate ( unvalidatedSrs )
94+ )
95+ ) ;
96+ const validatedSrs = validatedByYear . flat ( ) ;
8497 const mapLoadEndTime = performance . now ( ) ;
8598 console . log (
8699 `Socrata map preparation time: ${ Math . floor (
0 commit comments