Skip to content

Commit aabc3ad

Browse files
committed
more seamless county subdivision changes
1 parent acf593d commit aabc3ad

File tree

1 file changed

+56
-15
lines changed

1 file changed

+56
-15
lines changed

site/assets/js/map.js

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,15 @@ let originParam = LODES_ORIGIN,
123123
jobSegmentParam = LODES_JOB_SEGMENT,
124124
yearParam = LODES_YEAR,
125125
geographyParam = LODES_GEOGRAPHY,
126-
idParam = null;
126+
idParam = null,
127+
countySubdivisionIdParam = null;
127128

128129
let validOrigin = true,
129130
validJobSegment = true,
130131
validYear = true,
131132
validGeography = true,
132-
validId = true;
133+
validId = true,
134+
validCountySubdivisionId= true;
133135

134136
const getTilesUrl = function getTilesUrl({
135137
year = LODES_YEAR,
@@ -317,9 +319,11 @@ class ColorScale {
317319
getLabelsForGeography(geography) {
318320
switch (geography) {
319321
case "county":
320-
return ["1", "2-100", "101-1,000", "1,001-10,000", "10,000+"];
322+
return ["1", "2-100", "101-1,000", "1,001-9,999", "10,000+"];
323+
case "county_subdivision":
324+
return ["1", "2-50", "51-150", "150-499", "500+"];
321325
default:
322-
return ["1", "2-10", "11-20", "21-30", "30+"];
326+
return ["1", "2-10", "11-20", "21-29", "30+"];
323327
}
324328
}
325329

@@ -543,6 +547,17 @@ class Map {
543547
{ layers: [`geo_fill_${geographyParam}`] }
544548
);
545549

550+
const [couSubFeature] = this.map.queryRenderedFeatures(
551+
feat.point,
552+
{ layers: [`geo_fill_county_subdivision`] }
553+
);
554+
555+
if(couSubFeature) {
556+
countySubdivisionIdParam = couSubFeature?.properties.id
557+
validCountySubdivisionId = validIdInput(countySubdivisionIdParam);
558+
setUrlParam("countySubdivisionId", countySubdivisionIdParam);
559+
}
560+
546561
if(geometryFeature) {
547562
this.updateSelectedFeature(geometryFeature.properties.id)
548563
}
@@ -950,12 +965,17 @@ class ParquetProcessor {
950965
setUrlParam("origin", originParam);
951966

952967
idParam = urlParams.get("id");
968+
countySubdivisionIdParam = urlParams.get("countySubdivisionId");
953969
validId = validIdInput(idParam);
970+
validCountySubdivisionId = validIdInput(countySubdivisionIdParam);
954971

955-
if (idParam && validId) {
972+
const valid = geographyParam == "county_subdivision" ? countySubdivisionIdParam && validCountySubdivisionId : idParam && validId
973+
974+
if (valid) {
975+
const id = geographyParam == "county_subdivision" ? countySubdivisionIdParam : idParam
956976
await processor.runQuery(
957977
map, originParam, jobSegmentParam, yearParam, geographyParam,
958-
idParam.substring(0, 2), idParam
978+
idParam.substring(0, 2), id
959979
);
960980

961981
if(map.hoveredPolygonId[geographyParam]) {
@@ -975,12 +995,17 @@ class ParquetProcessor {
975995
setUrlParam("jobSegment", jobSegmentParam);
976996

977997
idParam = urlParams.get("id");
998+
countySubdivisionIdParam = urlParams.get("countySubdivisionId");
978999
validId = validIdInput(idParam);
1000+
validCountySubdivisionId = validIdInput(countySubdivisionIdParam);
1001+
1002+
const valid = geographyParam == "county_subdivision" ? countySubdivisionIdParam && validCountySubdivisionId : idParam && validId
9791003

980-
if (idParam && validId) {
1004+
if (valid) {
1005+
const id = geographyParam == "county_subdivision" ? countySubdivisionIdParam : idParam;
9811006
await processor.runQuery(
9821007
map, originParam, jobSegmentParam, yearParam, geographyParam,
983-
idParam.substring(0, 2), idParam
1008+
idParam.substring(0, 2), id
9841009
);
9851010

9861011
if(map.hoveredPolygonId[geographyParam]) {
@@ -1002,12 +1027,17 @@ class ParquetProcessor {
10021027
setUrlParam("geography", geographyParam);
10031028

10041029
idParam = urlParams.get("id");
1030+
countySubdivisionIdParam = urlParams.get("countySubdivisionId");
10051031
validId = validIdInput(idParam);
1032+
validCountySubdivisionId = validIdInput(countySubdivisionIdParam);
1033+
1034+
const valid = geographyParam == "county_subdivision" ? countySubdivisionIdParam && validCountySubdivisionId : idParam && validId
10061035

1007-
if (idParam && validId) {
1036+
if (valid) {
1037+
const id = geographyParam == "county_subdivision" ? countySubdivisionIdParam : idParam;
10081038
await processor.runQuery(
10091039
map, originParam, jobSegmentParam, yearParam, geographyParam,
1010-
idParam.substring(0, 2), idParam
1040+
idParam.substring(0, 2), id
10111041
);
10121042

10131043
if(map.hoveredPolygonId[geographyParam]) {
@@ -1027,12 +1057,17 @@ class ParquetProcessor {
10271057
setUrlParam("year", yearParam);
10281058

10291059
idParam = urlParams.get("id");
1060+
countySubdivisionIdParam = urlParams.get("countySubdivisionId");
10301061
validId = validIdInput(idParam);
1062+
validCountySubdivisionId = validIdInput(countySubdivisionIdParam);
10311063

1032-
if (idParam && validId) {
1064+
const valid = geographyParam == "county_subdivision" ? countySubdivisionIdParam && validCountySubdivisionId : idParam && validId
1065+
1066+
if (valid) {
1067+
const id = geographyParam == "county_subdivision" ? countySubdivisionIdParam : idParam;
10331068
await processor.runQuery(
10341069
map, originParam, jobSegmentParam, yearParam, geographyParam,
1035-
idParam.substring(0, 2), idParam
1070+
idParam.substring(0, 2), id
10361071
);
10371072

10381073
if(map.hoveredPolygonId[geographyParam]) {
@@ -1067,16 +1102,22 @@ class ParquetProcessor {
10671102

10681103
if (validOrigin && validYear && validGeography) {
10691104
idParam = urlParams.get("id");
1105+
countySubdivisionIdParam = urlParams.get("countySubdivisionId");
10701106
validId = validIdInput(idParam);
1107+
validCountySubdivisionId = validIdInput(countySubdivisionIdParam);
1108+
10711109
document.getElementById("year").value = yearParam;
10721110

1073-
if (idParam && validId) {
1111+
const valid = geographyParam == "county_subdivision" ? countySubdivisionIdParam && validCountySubdivisionId : idParam && validId
1112+
1113+
if (valid) {
1114+
const id = geographyParam == "county_subdivision" ? countySubdivisionIdParam : idParam
10741115
await processor.runQuery(
10751116
map, originParam, jobSegmentParam, yearParam, geographyParam,
1076-
idParam.substring(0, 2), idParam
1117+
idParam.substring(0, 2), id
10771118
);
10781119

1079-
const truncId = map.truncateId(geographyParam, idParam)
1120+
const truncId = map.truncateId(geographyParam, id)
10801121
map.updateGeoIdDisplay(idParam, map.processor.previousResults[geographyParam][truncId]?.count)
10811122
}
10821123
}

0 commit comments

Comments
 (0)