Skip to content

Commit 23086d8

Browse files
author
Sara Siegal
committed
interim checkin
1 parent 3ffa1f3 commit 23086d8

4 files changed

Lines changed: 627 additions & 9 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,6 @@ venv/
4343

4444
.DS_Store
4545

46+
# claude
47+
CLAUDE.md
48+
/.claude

src/features/Map/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ class MapContainer extends React.Component {
329329
endDate
330330
);
331331
} else {
332-
requests = await getServiceRequestSocrata();
332+
requests = await getServiceRequestSocrata(startDate, endDate);
333333
}
334334
return requests;
335335
}

src/utils/DataService.js

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,25 @@ const socrataServiceRequestSchema = object({
6060

6161
const 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

Comments
 (0)