diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 43888da5..d7d800b3 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -16,7 +16,9 @@ on: branches: [ main ] pull_request: # The branches below must be a subset of the branches above - branches: [ main ] + branches: + - main + - '**/release/**' schedule: - cron: '42 4 * * 1' diff --git a/.github/workflows/deploy_fe_staging.yml b/.github/workflows/deploy_fe_staging.yml index 53f51df0..6ae9b308 100644 --- a/.github/workflows/deploy_fe_staging.yml +++ b/.github/workflows/deploy_fe_staging.yml @@ -53,8 +53,9 @@ jobs: uses: cypress-io/github-action@v2 with: working-directory: ${{env.WORKING_DIRECTORY}} + browser: chrome start: npm start - wait-on: "http://localhost:8000" + wait-on: "http://localhost:8000/en" - name: Upload Artifact uses: actions/upload-artifact@v2 with: diff --git a/client/cypress/integration/About.feature b/client/cypress/integration/About.feature index 720808aa..4b682e63 100644 --- a/client/cypress/integration/About.feature +++ b/client/cypress/integration/About.feature @@ -1,15 +1,15 @@ Feature: The About page will open from all other pages - Scenario: About page open when navigating from Explore the Tool page - Given I am on the "Explore the tool" page - When I click on the "About" page in the navigation - Then I see "About" in the title - Scenario: About page open when navigating from Methodology page Given I am on the "Methodology" page When I click on the "About" page in the navigation Then I see "About" in the title + Scenario: About page open when navigating from Explore the Tool page + Given I am on the "Explore the tool" page + When I click on the "About" page in the navigation + Then I see "About" in the title + Scenario: About page open when navigating from Contact page Given I am on the "Contact" page When I click on the "About" page in the navigation diff --git a/client/cypress/integration/PublicEngLinks.feature b/client/cypress/integration/PublicEngLinks.feature index 0345a5e5..bd4517b7 100644 --- a/client/cypress/integration/PublicEngLinks.feature +++ b/client/cypress/integration/PublicEngLinks.feature @@ -1,32 +1,14 @@ Feature: All links on Public Eng page are functional - Scenario: Anyone should be able to register on Mar 9th - Given I am on the "Public" page - When I look for the "Mar 9 Reg Link" CTA - And I click on the "Mar 9 Reg Link" event - Then the link should respond successfully + # Scenario: Anyone should be able to register on Mar 22th + # Given I am on the "Public" page + # When I look for the "Mar 22 Reg Link" CTA + # And I click on the "Mar 22 Reg Link" event + # Then the link should respond successfully - Scenario: Anyone should be able to register on Mar 10th - Given I am on the "Public" page - When I look for the "Mar 10 Reg Link" CTA - And I click on the "Mar 10 Reg Link" event - Then the link should respond successfully - - Scenario: Anyone should be able to register on Mar 16th - Given I am on the "Public" page - When I look for the "Mar 16 Reg Link" CTA - And I click on the "Mar 16 Reg Link" event - Then the link should respond successfully - - Scenario: Anyone should be able to register on Mar 22th - Given I am on the "Public" page - When I look for the "Mar 22 Reg Link" CTA - And I click on the "Mar 22 Reg Link" event - Then the link should respond successfully - - Scenario: Anyone should be able to register on Apr 15th - Given I am on the "Public" page - When I look for the "Apr 15 Reg Link" CTA - And I click on the "Apr 15 Reg Link" event - Then the link should respond successfully + # Scenario: Anyone should be able to register on Apr 15th + # Given I am on the "Public" page + # When I look for the "Apr 15 Reg Link" CTA + # And I click on the "Apr 15 Reg Link" event + # Then the link should respond successfully diff --git a/client/package-lock.json b/client/package-lock.json index 57b75fce..d7bbf7f8 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -48,9 +48,9 @@ "axe-core": "^4.4.1", "babel-jest": "^27.5.1", "babel-preset-gatsby": "^1.14.0", - "cypress": "^9.5.2", + "cypress": "^8.3.0", "cypress-axe": "^0.14.0", - "cypress-cucumber-preprocessor": "^4.3.1", + "cypress-cucumber-preprocessor": "^4.2.0", "eslint": "^7.32.0", "eslint-config-google": "^0.14.0", "eslint-plugin-cypress": "^2.12.1", @@ -4129,9 +4129,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", "dev": true }, "node_modules/@types/sizzle": { @@ -7925,26 +7925,25 @@ } }, "node_modules/cypress": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.5.2.tgz", - "integrity": "sha512-gYiQYvJozMzDOriUV1rCt6CeRM/pRK4nhwGJj3nJQyX2BoUdTCVwp30xDMKc771HiNVhBtgj5o5/iBdVDVXQUg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.3.0.tgz", + "integrity": "sha512-zA5Rcq8AZIfRfPXU0CCcauofF+YpaU9HYbfqkunFTmFV0Kdlo14tNjH2E3++MkjXKFnv3/pXq+HgxWtw8CSe8Q==", "dev": true, "hasInstallScript": true, "dependencies": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^2.88.5", "@cypress/xvfb": "^1.2.4", "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", + "@types/sinonjs__fake-timers": "^6.0.2", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", "blob-util": "^2.0.2", "bluebird": "^3.7.2", - "buffer": "^5.6.0", "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", + "cli-table3": "~0.6.0", "commander": "^5.1.0", "common-tags": "^1.8.0", "dayjs": "^1.10.4", @@ -7966,12 +7965,12 @@ "minimist": "^1.2.5", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", + "ramda": "~0.27.1", "request-progress": "^3.0.0", - "semver": "^7.3.2", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", + "url": "^0.11.0", "yauzl": "^2.10.0" }, "bin": { @@ -7995,12 +7994,12 @@ } }, "node_modules/cypress-cucumber-preprocessor": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.3.1.tgz", - "integrity": "sha512-BKUYXqoTeKzkPXohEczDtpAwRCY0ZPtIpfRwJut16yNLqdXQMV+aItwanxe3cbJTFlwg562NAjL4LMdiOhkAjg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.2.0.tgz", + "integrity": "sha512-iVm+gUROvg8lDIFStP4/B+0xHAwj6c6HCoUtkZqq8Ee/tcqe2Vlhz1eAq2Q5+tzmCk2/CIh06suvqB+RQpjWBw==", "dev": true, "dependencies": { - "@cypress/browserify-preprocessor": "^3.0.2", + "@cypress/browserify-preprocessor": "^3.0.1", "chai": "^4.2.0", "chokidar": "3.5.2", "cosmiconfig": "^4.0.0", @@ -8062,30 +8061,6 @@ "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", "dev": true }, - "node_modules/cypress/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/cypress/node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -8110,12 +8085,6 @@ "node": ">=10" } }, - "node_modules/cypress/node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "dev": true - }, "node_modules/cypress/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -20444,6 +20413,12 @@ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" }, + "node_modules/ramda": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "dev": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -29834,9 +29809,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", "dev": true }, "@types/sizzle": { @@ -32819,25 +32794,24 @@ } }, "cypress": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.5.2.tgz", - "integrity": "sha512-gYiQYvJozMzDOriUV1rCt6CeRM/pRK4nhwGJj3nJQyX2BoUdTCVwp30xDMKc771HiNVhBtgj5o5/iBdVDVXQUg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.3.0.tgz", + "integrity": "sha512-zA5Rcq8AZIfRfPXU0CCcauofF+YpaU9HYbfqkunFTmFV0Kdlo14tNjH2E3++MkjXKFnv3/pXq+HgxWtw8CSe8Q==", "dev": true, "requires": { - "@cypress/request": "^2.88.10", + "@cypress/request": "^2.88.5", "@cypress/xvfb": "^1.2.4", "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", + "@types/sinonjs__fake-timers": "^6.0.2", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", "blob-util": "^2.0.2", "bluebird": "^3.7.2", - "buffer": "^5.6.0", "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", + "cli-table3": "~0.6.0", "commander": "^5.1.0", "common-tags": "^1.8.0", "dayjs": "^1.10.4", @@ -32859,12 +32833,12 @@ "minimist": "^1.2.5", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", + "ramda": "~0.27.1", "request-progress": "^3.0.0", - "semver": "^7.3.2", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", + "url": "^0.11.0", "yauzl": "^2.10.0" }, "dependencies": { @@ -32874,16 +32848,6 @@ "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", "dev": true }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -32902,12 +32866,6 @@ "universalify": "^2.0.0" } }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -32927,12 +32885,12 @@ "requires": {} }, "cypress-cucumber-preprocessor": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.3.1.tgz", - "integrity": "sha512-BKUYXqoTeKzkPXohEczDtpAwRCY0ZPtIpfRwJut16yNLqdXQMV+aItwanxe3cbJTFlwg562NAjL4LMdiOhkAjg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-4.2.0.tgz", + "integrity": "sha512-iVm+gUROvg8lDIFStP4/B+0xHAwj6c6HCoUtkZqq8Ee/tcqe2Vlhz1eAq2Q5+tzmCk2/CIh06suvqB+RQpjWBw==", "dev": true, "requires": { - "@cypress/browserify-preprocessor": "^3.0.2", + "@cypress/browserify-preprocessor": "^3.0.1", "chai": "^4.2.0", "chokidar": "3.5.2", "cosmiconfig": "^4.0.0", @@ -42194,6 +42152,12 @@ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" }, + "ramda": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", diff --git a/client/package.json b/client/package.json index 3749f601..ea48bdb0 100644 --- a/client/package.json +++ b/client/package.json @@ -47,9 +47,9 @@ "axe-core": "^4.4.1", "babel-jest": "^27.5.1", "babel-preset-gatsby": "^1.14.0", - "cypress": "^9.5.2", + "cypress": "^8.3.0", "cypress-axe": "^0.14.0", - "cypress-cucumber-preprocessor": "^4.3.1", + "cypress-cucumber-preprocessor": "^4.2.0", "eslint": "^7.32.0", "eslint-config-google": "^0.14.0", "eslint-plugin-cypress": "^2.12.1", diff --git a/client/src/components/AreaDetail/AreaDetail.tsx b/client/src/components/AreaDetail/AreaDetail.tsx index 0c55899b..f6a4872f 100644 --- a/client/src/components/AreaDetail/AreaDetail.tsx +++ b/client/src/components/AreaDetail/AreaDetail.tsx @@ -1,21 +1,23 @@ /* eslint-disable quotes */ // External Libs: import React from 'react'; -import {useIntl, FormattedMessage} from 'gatsby-plugin-intl'; +import {useIntl} from 'gatsby-plugin-intl'; import {Accordion, Button} from '@trussworks/react-uswds'; // Components: import Category from '../Category'; import DisadvantageDot from '../DisadvantageDot'; +import ExceedBurden from '../ExceedBurden'; import Indicator from '../Indicator'; // Styles and constants import * as styles from './areaDetail.module.scss'; import * as constants from '../../data/constants'; import * as EXPLORE_COPY from '../../data/copy/explore'; -import * as CONTACT_COPY from '../../data/copy/contact'; +import * as COMMON_COPY from '../../data/copy/common'; + // @ts-ignore -// import mailIcon from '/node_modules/uswds/dist/img/usa-icons/mail.svg'; +import mailIcon from '/node_modules/uswds/dist/img/usa-icons/mail_outline.svg'; interface IAreaDetailProps { properties: constants.J40Properties, @@ -35,6 +37,7 @@ export interface indicatorInfo { value: number, isDisadvagtaged: boolean, isPercent?: boolean, + threshold?: number, } const AreaDetail = ({properties}:IAreaDetailProps) => { @@ -97,8 +100,8 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { } if (indicatorName === 'poverty') { return properties.hasOwnProperty(constants - .POVERTY_PROPERTY_PERCENTILE) ? - properties[constants.POVERTY_PROPERTY_PERCENTILE] : null; + .POVERTY_BELOW_100_PERCENTILE) ? + properties[constants.POVERTY_BELOW_100_PERCENTILE] : null; } if (indicatorName === 'highSchool') { return properties.hasOwnProperty(constants @@ -117,18 +120,18 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { if (sidePanelState === constants.SIDE_PANEL_STATE_VALUES.ISLAND_AREAS) { if (indicatorName === 'lowMedInc') { return properties.hasOwnProperty(constants - .IS_GTE_90_ISLAND_AREA_LOW_MEDIAN_INCOME_AND_IS_LOW_HS_EDU_2009) ? - properties[constants.IS_GTE_90_ISLAND_AREA_LOW_MEDIAN_INCOME_AND_IS_LOW_HS_EDU_2009] : null; + .IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_LOW_MEDIAN_INCOME) ? + properties[constants.IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_LOW_MEDIAN_INCOME] : null; } if (indicatorName === 'unemploy') { return properties.hasOwnProperty(constants - .IS_GTE_90_ISLAND_AREA_UNEMPLOYMENT_AND_IS_LOW_HS_EDU_2009) ? - properties[constants.IS_GTE_90_ISLAND_AREA_UNEMPLOYMENT_AND_IS_LOW_HS_EDU_2009] : null; + .IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_UNEMPLOYMENT) ? + properties[constants.IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_UNEMPLOYMENT] : null; } if (indicatorName === 'poverty') { return properties.hasOwnProperty(constants - .IS_GTE_90_ISLAND_AREA_BELOW_100_POVERTY_AND_IS_LOW_HS_EDU_2009) ? - properties[constants.IS_GTE_90_ISLAND_AREA_BELOW_100_POVERTY_AND_IS_LOW_HS_EDU_2009] : null; + .IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_BELOW_100_POVERTY) ? + properties[constants.IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_BELOW_100_POVERTY] : null; } if (indicatorName === 'highSchool') { return properties.hasOwnProperty(constants @@ -139,18 +142,18 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { if (indicatorName === 'lowMedInc') { return properties.hasOwnProperty(constants - .IS_GTE_90_LOW_MEDIAN_INCOME_AND_LOW_HIGH_SCHOOL_EDU) ? - properties[constants.IS_GTE_90_LOW_MEDIAN_INCOME_AND_LOW_HIGH_SCHOOL_EDU] : null; + .IS_EXCEEDS_THRESH_FOR_LOW_MEDIAN_INCOME) ? + properties[constants.IS_EXCEEDS_THRESH_FOR_LOW_MEDIAN_INCOME] : null; } if (indicatorName === 'unemploy') { return properties.hasOwnProperty(constants - .IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU) ? - properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] : null; + .IS_EXCEEDS_THRESH_FOR_UNEMPLOYMENT) ? + properties[constants.IS_EXCEEDS_THRESH_FOR_UNEMPLOYMENT] : null; } if (indicatorName === 'poverty') { return properties.hasOwnProperty(constants - .IS_GTE_90_BELOW_100_POVERTY_AND_LOW_HIGH_SCHOOL_EDU) ? - properties[constants.IS_GTE_90_BELOW_100_POVERTY_AND_LOW_HIGH_SCHOOL_EDU] : null; + .IS_EXCEEDS_THRESH_FOR_BELOW_100_POVERTY) ? + properties[constants.IS_EXCEEDS_THRESH_FOR_BELOW_100_POVERTY] : null; } if (indicatorName === 'highSchool') { return properties.hasOwnProperty(constants @@ -166,24 +169,24 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.EXP_AG_LOSS), value: properties.hasOwnProperty(constants.EXP_AGRICULTURE_LOSS_PERCENTILE) ? properties[constants.EXP_AGRICULTURE_LOSS_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_EXP_AGR_LOSS_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_EXP_AGR_LOSS_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_EXP_AGR_LOSS] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_EXP_AGR_LOSS] : null, }; const expBldLoss:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.EXP_BLD_LOSS), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.EXP_BLD_LOSS), value: properties.hasOwnProperty(constants.EXP_BUILDING_LOSS_PERCENTILE) ? properties[constants.EXP_BUILDING_LOSS_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_EXP_BLD_LOSS_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_EXP_BLD_LOSS_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_EXP_BLD_LOSS] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_EXP_BLD_LOSS] : null, }; const expPopLoss:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.EXP_POP_LOSS), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.EXP_POP_LOSS), value: properties.hasOwnProperty(constants.EXP_POPULATION_LOSS_PERCENTILE) ? properties[constants.EXP_POPULATION_LOSS_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_EXP_POP_LOSS_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_EXP_POP_LOSS_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_EXP_POP_LOSS] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_EXP_POP_LOSS] : null, }; const lowInc:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LOW_INCOME), @@ -192,15 +195,17 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { properties[constants.POVERTY_BELOW_200_PERCENTILE] : null, isDisadvagtaged: properties[constants.IS_FEDERAL_POVERTY_LEVEL_200] ? properties[constants.IS_FEDERAL_POVERTY_LEVEL_200] : null, + threshold: 65, }; const higherEd:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.HIGH_ED), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.HIGH_ED), - value: properties.hasOwnProperty(constants.HIGHER_ED_PERCENTILE) ? - properties[constants.HIGHER_ED_PERCENTILE] : null, + value: properties.hasOwnProperty(constants.NON_HIGHER_ED_PERCENTILE) ? + properties[constants.NON_HIGHER_ED_PERCENTILE] : null, isDisadvagtaged: properties[constants.IS_HIGHER_ED_PERCENTILE] ? properties[constants.IS_HIGHER_ED_PERCENTILE] : null, isPercent: true, + threshold: 80, }; const energyBurden:indicatorInfo = { @@ -208,16 +213,16 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.ENERGY_BURDEN), value: properties.hasOwnProperty(constants.ENERGY_PERCENTILE) ? properties[constants.ENERGY_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_ENERGY_BURDEN_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_ENERGY_BURDEN_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_ENERGY_BURDEN] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_ENERGY_BURDEN] : null, }; const pm25:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.PM_2_5), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.PM_2_5), value: properties.hasOwnProperty(constants.PM25_PERCENTILE) ? properties[constants.PM25_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_PM25_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_PM25_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_PM25] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_PM25] : null, }; const dieselPartMatter:indicatorInfo = { @@ -225,16 +230,16 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.DIESEL_PARTICULATE_MATTER), value: properties.hasOwnProperty(constants.DIESEL_MATTER_PERCENTILE) ? properties[constants.DIESEL_MATTER_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_DIESEL_PM_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_DIESEL_PM_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_DIESEL_PM] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_DIESEL_PM] : null, }; const trafficVolume:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.TRAFFIC_VOLUME), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.TRAFFIC_VOLUME), value: properties.hasOwnProperty(constants.TRAFFIC_PERCENTILE) ? properties[constants.TRAFFIC_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_TRAFFIC_PROX_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_TRAFFIC_PROX_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_TRAFFIC_PROX] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_TRAFFIC_PROX] : null, }; const houseBurden:indicatorInfo = { @@ -242,16 +247,16 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.HOUSE_BURDEN), value: properties.hasOwnProperty(constants.HOUSING_BURDEN_PROPERTY_PERCENTILE) ? properties[constants.HOUSING_BURDEN_PROPERTY_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_HOUSE_BURDEN_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_HOUSE_BURDEN_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_HOUSE_BURDEN] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_HOUSE_BURDEN] : null, }; const leadPaint:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LEAD_PAINT), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.LEAD_PAINT), value: properties.hasOwnProperty(constants.LEAD_PAINT_PERCENTILE) ? properties[constants.LEAD_PAINT_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_LEAD_PAINT_AND_MEDIAN_HOME_VAL_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_LEAD_PAINT_AND_MEDIAN_HOME_VAL_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_LEAD_PAINT_AND_MEDIAN_HOME_VAL] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_LEAD_PAINT_AND_MEDIAN_HOME_VAL] : null, }; // const medHomeVal:indicatorInfo = { // label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.MED_HOME_VAL), @@ -266,24 +271,24 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.PROX_HAZ), value: properties.hasOwnProperty(constants.PROXIMITY_TSDF_SITES_PERCENTILE) ? properties[constants.PROXIMITY_TSDF_SITES_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_HAZARD_WASTE_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_HAZARD_WASTE_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_HAZARD_WASTE] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_HAZARD_WASTE] : null, }; const proxNPL:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.PROX_NPL), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.PROX_NPL), value: properties.hasOwnProperty(constants.PROXIMITY_NPL_SITES_PERCENTILE) ? properties[constants.PROXIMITY_NPL_SITES_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_SUPERFUND_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_SUPERFUND_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_SUPERFUND] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_SUPERFUND] : null, }; const proxRMP:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.PROX_RMP), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.PROX_RMP), value: properties.hasOwnProperty(constants.PROXIMITY_RMP_SITES_PERCENTILE) ? properties[constants.PROXIMITY_RMP_SITES_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_RMP_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_RMP_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_RMP] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_RMP] : null, }; const wasteWater:indicatorInfo = { @@ -291,8 +296,8 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.WASTE_WATER), value: properties.hasOwnProperty(constants.WASTEWATER_PERCENTILE) ? properties[constants.WASTEWATER_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_WASTEWATER_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_WASTEWATER_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_WASTEWATER] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_WASTEWATER] : null, }; const asthma:indicatorInfo = { @@ -300,32 +305,32 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.ASTHMA), value: properties.hasOwnProperty(constants.ASTHMA_PERCENTILE) ? properties[constants.ASTHMA_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_ASTHMA_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_ASTHMA_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_ASTHMA] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_ASTHMA] : null, }; const diabetes:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.DIABETES), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.DIABETES), value: properties.hasOwnProperty(constants.DIABETES_PERCENTILE) ? properties[constants.DIABETES_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_DIABETES_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_DIABETES_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_DIABETES] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_DIABETES] : null, }; const heartDisease:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.HEART_DISEASE), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.HEART_DISEASE), value: properties.hasOwnProperty(constants.HEART_PERCENTILE) ? properties[constants.HEART_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_HEART_DISEASE_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_HEART_DISEASE_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_HEART_DISEASE] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_HEART_DISEASE] : null, }; const lifeExpect:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LIFE_EXPECT), description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.LOW_LIFE_EXPECT), value: properties.hasOwnProperty(constants.LIFE_PERCENTILE) ? properties[constants.LIFE_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_LOW_LIFE_EXP_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_LOW_LIFE_EXP_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_LOW_LIFE_EXP] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_LOW_LIFE_EXP] : null, }; const lingIso:indicatorInfo = { @@ -333,8 +338,8 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.LING_ISO), value: properties.hasOwnProperty(constants.LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE) ? properties[constants.LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE] : null, - isDisadvagtaged: properties[constants.IS_GTE_90_LINGUISITIC_ISO_AND_IS_LOW_INCOME] ? - properties[constants.IS_GTE_90_LINGUISITIC_ISO_AND_IS_LOW_INCOME] : null, + isDisadvagtaged: properties[constants.IS_EXCEEDS_THRESH_FOR_LINGUISITIC_ISO] ? + properties[constants.IS_EXCEEDS_THRESH_FOR_LINGUISITIC_ISO] : null, }; const lowMedInc:indicatorInfo = { label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LOW_MED_INC), @@ -360,65 +365,111 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { value: getWorkForceIndicatorValue('highSchool'), isDisadvagtaged: getWorkForceIndicatorIsDisadv('highSchool'), isPercent: true, + threshold: 10, }; - // Aggregate indicators based on categories + /** + * Aggregate indicators based on categories + * + * The indicators property must be an array with last two elements being the + * socioeconomic burdens. + */ let categories = [ { id: 'climate-change', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLIMATE), - indicators: [expAgLoss, expBldLoss, expPopLoss, lowInc, higherEd], + indicators: [expAgLoss, expBldLoss, expPopLoss], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_CLIMATE_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_CLIMATE_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_CLIMATE_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_CLIMATE_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'clean-energy', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLEAN_ENERGY), - indicators: [energyBurden, pm25, lowInc, higherEd], + indicators: [energyBurden, pm25], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_ENERGY_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_ENERGY_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_ENERGY_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_ENERGY_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'clean-transport', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLEAN_TRANSPORT), - indicators: [dieselPartMatter, trafficVolume, lowInc, higherEd], + indicators: [dieselPartMatter, trafficVolume], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_TRANSPORT_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_TRANSPORT_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_TRANSPORT_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_TRANSPORT_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'sustain-house', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.SUSTAIN_HOUSE), - indicators: [houseBurden, leadPaint, lowInc, higherEd], + indicators: [houseBurden, leadPaint], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_HOUSING_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_HOUSING_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_HOUSING_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_HOUSING_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'leg-pollute', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.LEG_POLLUTE), - indicators: [proxHaz, proxNPL, proxRMP, lowInc, higherEd], + indicators: [proxHaz, proxNPL, proxRMP], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_POLLUTION_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_POLLUTION_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_POLLUTION_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_POLLUTION_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'clean-water', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLEAN_WATER), - indicators: [wasteWater, lowInc, higherEd], + indicators: [wasteWater], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_WATER_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_WATER_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_WATER_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_WATER_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'health-burdens', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.HEALTH_BURDEN), - indicators: [asthma, diabetes, heartDisease, lifeExpect, lowInc, higherEd], + indicators: [asthma, diabetes, heartDisease, lifeExpect], + socioEcIndicators: [lowInc, higherEd], isDisadvagtaged: properties[constants.IS_HEALTH_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_HEALTH_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_HEALTH_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_HEALTH_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, { id: 'work-dev', titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.WORK_DEV), - indicators: [lingIso, lowMedInc, , unemploy, poverty, highSchool, higherEd], + indicators: [lingIso, lowMedInc, , unemploy, poverty], + socioEcIndicators: [highSchool, higherEd], isDisadvagtaged: properties[constants.IS_WORKFORCE_FACTOR_DISADVANTAGED_M] ? properties[constants.IS_WORKFORCE_FACTOR_DISADVANTAGED_M] : null, + isExceed1MoreBurden: properties[constants.IS_WORKFORCE_EXCEED_ONE_OR_MORE_INDICATORS_M] ? + properties[constants.IS_WORKFORCE_EXCEED_ONE_OR_MORE_INDICATORS_M] : null, + isExceedBothSocioBurdens: properties[constants.IS_WORKFORCE_EXCEED_BOTH_SOCIO_INDICATORS_M] ? + properties[constants.IS_WORKFORCE_EXCEED_BOTH_SOCIO_INDICATORS_M] : null, }, ]; @@ -448,16 +499,31 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { title: , content: ( <> - {/* Category Header */} -
-
{intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.INDICATOR)}
-
{intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.PERCENTILE)}
-
+ {/* Exceeds one or more burdens */} + - {/* Category Indicators */} + {/* indicators */} {category.indicators.map((indicator:any, index:number) => { return ; })} + + {/* AND */} +
AND
+ + {/* Exceeds both socioeconomic burdens */} + + + {/* socio-economic indicators */} + {category.socioEcIndicators.map((indicator:any, index:number) => { + return ; + })} + ), expanded: false, @@ -521,35 +587,38 @@ const AreaDetail = ({properties}:IAreaDetailProps) => { } - {/* Number of thresholds exceeded */} -
0 ? - styles.showThresholdExceed : styles.hideThresholdExceed - }> - + {/* Number of categories exceeded */} +
+ {EXPLORE_COPY.numberOfCategoriesExceeded(properties[constants.COUNT_OF_CATEGORIES_DISADV])}
+ {/* Number of thresholds exceeded */} +
+ {EXPLORE_COPY.numberOfThresholdsExceeded(properties[constants.TOTAL_NUMBER_OF_DISADVANTAGE_INDICATORS])} +
{/* Send Feedback button */} @@ -107,14 +116,15 @@ exports[`rendering of the AreaDetail checks if indicators for ISLAND AREAS are p >
- Indicator + At or above at least one threshold?
- Percentile (0-100) + No
  • @@ -124,17 +134,36 @@ exports[`rendering of the AreaDetail checks if indicators for ISLAND AREAS are p
    - 60 - - - th - - +
    +
    + 60 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 90th +
    +
    + percentile +
    +
  • @@ -144,55 +173,177 @@ exports[`rendering of the AreaDetail checks if indicators for ISLAND AREAS are p
    - 90 - - - th - - +
    +
    + 90 + + + th + + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 90th +
    +
    + percentile +
    +
  • Poverty
    - Percent of a tract's population in households where the household income is at or below 100% of - the Federal poverty level + Percent of a census tract's population in households where the household income is at or below 100% + of the Federal poverty level
    - 80 - - - th - - +
    +
    + 50 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 90th +
    +
    + percentile +
    +
  • - High school degree attainment rate + High school degree non-attainment
    - Proportion of people ages 25 years or older whose education level is less than a high school diploma + Percent of people ages 25 years or older whose education level is less than a high school diploma
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
    +
    +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
    +
  • +
    +
    + High school degree non-attainment +
    + + Percent of people ages 25 years or older whose education level is less than a high school diploma + +
    +
    +
    +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
    +
    +
    +
  • +
  • +
    +
    + Higher education non-enrollement +
    + + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school + +
    +
    +
    +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -255,7 +406,10 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - of thresholds exceeded + Disadvantaged in 5 categories +
    +
    + At or above 3 thresholds
    - Send feedback +
    + Send feedback +
    + tbd
    @@ -309,50 +469,73 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • Expected agriculture loss rate
    - Economic loss rate to agriculture resulting from natural hazards + Economic loss rate to agricultural value resulting from natural hazards each year
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • Expected building loss rate
    - Economic loss rate to buildings resulting from natural hazards + Economic loss rate to agricultural value resulting from natural hazards each year
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -364,15 +547,37 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -384,32 +589,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -442,14 +677,15 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -459,33 +695,66 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • PM2.5 in the air
    - Fine inhalable particles, 2.5 micrometers and smaller + Fine inhalable particles, 2.5 micrometers or smaller
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -497,32 +766,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -539,7 +838,7 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Clean transportation + Clean transit
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -572,15 +872,26 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -590,15 +901,37 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -610,32 +943,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -668,14 +1031,15 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -685,17 +1049,36 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 95 - - - th - - +
    +
    + 95 + + + th + + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 90th +
    +
    + percentile +
    +
  • @@ -707,15 +1090,37 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -727,32 +1132,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -785,14 +1220,15 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -802,51 +1238,95 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • - Proximity to NPL sites + Proximity to National Priorities List (NPL) sites
    Proposed or listed NPL (Superfund) sites within 5 kilometers
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • - Proximity to RMP facilities + Proximity to Risk Management Plan (RMP) facilities
    - Risk Management Plan facilities within 5 kilometers + RMP facilities within 5 kilometers
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -858,32 +1338,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -916,14 +1426,15 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -933,15 +1444,37 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -953,32 +1486,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -1011,14 +1574,15 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -1028,15 +1592,26 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -1049,35 +1624,59 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • Heart disease
    - Weighted percent of people ages 18 years and older who have been told they have heart disease + Navigate to the explore the tool page. When the map is in view, click on the map. The side panel + will show an indicator desciption of Weighted percent of people ages 18 years and older who have + been told they have heart disease
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -1087,15 +1686,37 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
  • @@ -1107,32 +1728,62 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 19 - - - th - - +
    +
    + 19 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 65th +
    +
    + percentile +
    +
  • - Higher ed enrollment rate + Higher education non-enrollement
    - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - N/A - - % - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -1165,14 +1816,15 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -1184,17 +1836,36 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 97 - - - th - - +
    +
    + 97 + + + th + + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 90th +
    +
    + percentile +
    +
  • @@ -1204,15 +1875,26 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -1222,75 +1904,154 @@ exports[`rendering of the AreaDetail checks if indicators for NATION is present
    - 96 - - - th - - +
    +
    + 96 + + + th + + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 90th +
    +
    + percentile +
    +
  • Poverty
    - Percent of a tract's population in households where the household income is at or below 100% of - the Federal poverty level + Percent of a census tract's population in households where the household income is at or below 100% + of the Federal poverty level
    - 19 - - - th - - +
    +
    + 12 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 90th +
    +
    + percentile +
    +
    +
    +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
    +
  • +
    +
    + High school degree non-attainment +
    + + Percent of people ages 25 years or older whose education level is less than a high school diploma + +
    +
    +
    +
    +
    + 98 + + % + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 10 +
    +
    + percent +
    +
  • - High school degree attainment rate + Higher education non-enrollement
    - Proportion of people ages 25 years or older whose education level is less than a high school diploma + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - 98 - - % - -
    -
    -
  • -
  • -
    -
    - Higher ed enrollment rate
    - - Percent of population enrolled in college, university, or graduate school - +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    -
    -
    - N/A - - % -
  • @@ -1353,7 +2114,10 @@ exports[`rendering of the AreaDetail checks if indicators for PUERTO RICO are pr
    - of thresholds exceeded + Disadvantaged in 5 categories +
    +
    + At or above 3 thresholds
    - Send feedback +
    + Send feedback +
    + tbd
    @@ -1407,14 +2177,15 @@ exports[`rendering of the AreaDetail checks if indicators for PUERTO RICO are pr >
    - Indicator + At or above at least one threshold?
    - Percentile (0-100) + No
  • @@ -1426,17 +2197,36 @@ exports[`rendering of the AreaDetail checks if indicators for PUERTO RICO are pr
    - 97 - - - th - - +
    +
    + 97 + + + th + + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 90th +
    +
    + percentile +
    +
  • @@ -1446,15 +2236,26 @@ exports[`rendering of the AreaDetail checks if indicators for PUERTO RICO are pr
    - N/A - - - +
    +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    +
  • @@ -1464,75 +2265,154 @@ exports[`rendering of the AreaDetail checks if indicators for PUERTO RICO are pr
    - 96 - - - th - - +
    +
    + 96 + + + th + + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 90th +
    +
    + percentile +
    +
  • Poverty
    - Percent of a tract's population in households where the household income is at or below 100% of - the Federal poverty level + Percent of a census tract's population in households where the household income is at or below 100% + of the Federal poverty level
    - 19 - - - th - - +
    +
    + 12 + + + th + + +
    +
    + an icon for the down arrow +
    +
    +
    +
    + below 90th +
    +
    + percentile +
    +
    +
    +
    +
  • +
    + AND +
    +
    +
    + At or above both associated thresholds? +
    +
    + No +
    +
    +
  • +
    +
    + High school degree non-attainment +
    + + Percent of people ages 25 years or older whose education level is less than a high school diploma + +
    +
    +
    +
    +
    + 98 + + % + +
    +
    + an icon for the up arrow +
    +
    +
    +
    + above 10 +
    +
    + percent +
    +
  • - High school degree attainment rate + Higher education non-enrollement
    - Proportion of people ages 25 years or older whose education level is less than a high school diploma + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school
    - 98 - - % - -
    -
    -
  • -
  • -
    -
    - Higher ed enrollment rate
    - - Percent of population enrolled in college, university, or graduate school - +
    +
    + an icon to represent data is unavailable +
    +
    +
    +
    + data is not available +
    -
    -
    - N/A - - % -
  • diff --git a/client/src/components/AreaDetail/tests/areaDetail.test.tsx b/client/src/components/AreaDetail/tests/areaDetail.test.tsx index f458ab53..80698b14 100644 --- a/client/src/components/AreaDetail/tests/areaDetail.test.tsx +++ b/client/src/components/AreaDetail/tests/areaDetail.test.tsx @@ -7,7 +7,7 @@ import * as constants from '../../../data/constants'; describe('rendering of the AreaDetail', () => { const properties = { - [constants.POVERTY_PROPERTY_PERCENTILE]: .12, + [constants.POVERTY_BELOW_100_PERCENTILE]: .12, [constants.HIGH_SCHOOL_PROPERTY_PERCENTILE]: .98, [constants.LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE]: .97, [constants.UNEMPLOYMENT_PROPERTY_PERCENTILE]: .96, @@ -15,8 +15,10 @@ describe('rendering of the AreaDetail', () => { [constants.SCORE_PROPERTY_HIGH]: .95, [constants.GEOID_PROPERTY]: 98729374234, [constants.TOTAL_POPULATION]: 3435435, - [constants.POVERTY_PROPERTY_PERCENTILE]: .19, + [constants.POVERTY_BELOW_200_PERCENTILE]: .19, [constants.SIDE_PANEL_STATE]: constants.SIDE_PANEL_STATE_VALUES.NATION, + [constants.COUNT_OF_CATEGORIES_DISADV]: 5, + [constants.TOTAL_NUMBER_OF_DISADVANTAGE_INDICATORS]: 3, }; @@ -49,7 +51,7 @@ describe('rendering of the AreaDetail', () => { [constants.ISLAND_AREAS_UNEMPLOYMENT_LOW_HS_EDU_PERCENTILE_FIELD]: .9, [constants.ISLAND_AREAS_POVERTY_LOW_HS_EDU_PERCENTILE_FIELD]: .8, [constants.ISLAND_AREAS_LOW_MEDIAN_INCOME_LOW_HS_EDU_PERCENTILE_FIELD]: .6, - [constants.ISLAND_AREAS_LOW_HS_EDU_PERCENTILE_FIELD]: .5, + [constants.ISLAND_AREAS_POVERTY_LOW_HS_EDU_PERCENTILE_FIELD]: .5, [constants.SIDE_PANEL_STATE]: constants.SIDE_PANEL_STATE_VALUES.ISLAND_AREAS, }; diff --git a/client/src/components/Categories/__snapshots__/Categories.test.tsx.snap b/client/src/components/Categories/__snapshots__/Categories.test.tsx.snap index 4242dbec..9739ad59 100644 --- a/client/src/components/Categories/__snapshots__/Categories.test.tsx.snap +++ b/client/src/components/Categories/__snapshots__/Categories.test.tsx.snap @@ -34,12 +34,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -61,8 +59,6 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > expected population loss rate - -

    @@ -76,11 +72,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -97,12 +93,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -118,8 +112,6 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > PM2.5 in the air - -

    @@ -133,11 +125,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -154,7 +146,7 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    @@ -190,11 +182,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -211,12 +203,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -232,15 +222,12 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > median home value - is at or less than - the 90th percentile OR at or above the 90th percentile for the + is at or less than the 90th percentile OR at or above the 90th percentile for the housing cost burden - -

    @@ -254,11 +241,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -275,12 +262,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -302,8 +287,6 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > proximity to Risk Management Plan (RMP) facilities - -

    @@ -317,11 +300,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -338,12 +321,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -353,8 +334,6 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > wastewater discharge - -

    @@ -368,11 +347,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -389,12 +368,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -422,8 +399,6 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low life expectancy - -

    @@ -437,11 +412,11 @@ exports[`rendering of the Categories checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education @@ -458,12 +433,10 @@ exports[`rendering of the Categories checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -474,21 +447,18 @@ exports[`rendering of the Categories checks if component renders 1`] = ` low median income as a percentage of area median income OR - linguistic isolation - OR - + OR unemployment - OR - percent individuals in households at or below 100% Federal + OR percent individuals in households at or below 100% Federal @@ -498,23 +468,20 @@ exports[`rendering of the Categories checks if component renders 1`] = `

    - - AND - is at or less than 90% for + 10% or more of adults 25 or older have not attained a - high school degree attainment rate + high school degree - for adults 25 years and older AND - at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education diff --git a/client/src/components/CategoryCard/__snapshots__/CategoryCard.test.tsx.snap b/client/src/components/CategoryCard/__snapshots__/CategoryCard.test.tsx.snap index d6db1102..164e50e3 100644 --- a/client/src/components/CategoryCard/__snapshots__/CategoryCard.test.tsx.snap +++ b/client/src/components/CategoryCard/__snapshots__/CategoryCard.test.tsx.snap @@ -12,12 +12,10 @@ exports[`rendering of the CategoryCard checks if component renders 1`] = ` identified as disadvantaged - +

    - - IF @@ -39,8 +37,6 @@ exports[`rendering of the CategoryCard checks if component renders 1`] = ` > expected population loss rate - -

    @@ -54,11 +50,11 @@ exports[`rendering of the CategoryCard checks if component renders 1`] = ` > low income - AND at or below 20% for + AND 80% or more of adults 15 or older are not enrolled in - higher ed enrollment rate + higher education diff --git a/client/src/components/DatasetCard/DatasetCard.tsx b/client/src/components/DatasetCard/DatasetCard.tsx new file mode 100644 index 00000000..f180ae24 --- /dev/null +++ b/client/src/components/DatasetCard/DatasetCard.tsx @@ -0,0 +1,80 @@ +/* eslint-disable valid-jsdoc */ +import React from 'react'; +import {useIntl} from 'gatsby-plugin-intl'; + +import * as styles from './datasetCard.module.scss'; +import * as METHODOLOGY_COPY from '../../data/copy/methodology'; + +interface IDatasetCardProps { + datasetCardProps: METHODOLOGY_COPY.IIndicators +} + +/** + * This component will take in a card and render a dataset card + * + * @param {IDatasetCardProps} + * @return {JSX.Element} + */ +const DatasetCard = ({datasetCardProps}:IDatasetCardProps) => { + const intl = useIntl(); + + return ( +

    + {/* Dataset header */} +

    {datasetCardProps.indicator}

    + + {/* Dataset description */} +
    + {datasetCardProps.description} +
    + + {/* Dataset note */} + {datasetCardProps.note &&
    +

    {datasetCardProps.note}

    +
    } + +
      + + {/* Dataset Used in */} +
    • + + {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.USED_IN)} + + {datasetCardProps.usedIn} +
    • + + {/* Dataset Responsible Party */} +
    • + + {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.RESP_PARTY)} + + {datasetCardProps.responsibleParty} +
    • + + + {datasetCardProps.sources.map((dataSource, index) => ( + + {/* Dataset Source */} +
    • + + {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.SOURCE)} + + {dataSource.source} +
    • + + {/* Dataset Available for */} +
    • + + {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.AVAILABLE_FOR)} + + {dataSource.availableFor} +
    • +
      + ))} + +
    +
    + ); +}; + +export default DatasetCard; diff --git a/client/src/components/DatasetCard/index.tsx b/client/src/components/DatasetCard/index.tsx index 562f2a19..a90117fb 100644 --- a/client/src/components/DatasetCard/index.tsx +++ b/client/src/components/DatasetCard/index.tsx @@ -1,68 +1,3 @@ -import React from 'react'; -import {useIntl} from 'gatsby-plugin-intl'; - -import * as styles from './datasetCard.module.scss'; -import * as METHODOLOGY_COPY from '../../data/copy/methodology'; - -interface IDatasetCardProps { - datasetCardProps: METHODOLOGY_COPY.IIndicators -} - -const DatasetCard = ({datasetCardProps}:IDatasetCardProps) => { - const intl = useIntl(); - - return ( -
    - {/* Dataset header */} -

    {datasetCardProps.indicator}

    - - {/* Dataset description */} -
    - {datasetCardProps.description} -
    - -
      - - {/* Dataset Used in */} -
    • - - {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.USED_IN)} - - {datasetCardProps.usedIn} -
    • - - {/* Dataset Responsible Party */} -
    • - - {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.RESP_PARTY)} - - {datasetCardProps.responsibleParty} -
    • - - - {datasetCardProps.sources.map((dataSource) => ( - <> - {/* Dataset Source */} -
    • - - {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.SOURCE)} - - {dataSource.source} -
    • - - {/* Dataset Available for */} -
    • - - {intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.AVAILABLE_FOR)} - - {dataSource.availableFor} -
    • - - ))} - -
    -
    - ); -}; +import DatasetCard from './DatasetCard'; export default DatasetCard; diff --git a/client/src/components/DatasetCard/tests/datasetCard.test.tsx b/client/src/components/DatasetCard/tests/datasetCard.test.tsx index 0ad7af8f..ba45f69c 100644 --- a/client/src/components/DatasetCard/tests/datasetCard.test.tsx +++ b/client/src/components/DatasetCard/tests/datasetCard.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import {render} from '@testing-library/react'; import {LocalizedComponent} from '../../../test/testHelpers'; -import DatasetCard from '../../DatasetCard'; +import DatasetCard from '../DatasetCard'; import * as METHODOLOGY_COPY from '../../../data/copy/methodology'; diff --git a/client/src/components/DatasetContainer/index.tsx b/client/src/components/DatasetContainer/index.tsx index 8521e49c..a0ea1e1c 100644 --- a/client/src/components/DatasetContainer/index.tsx +++ b/client/src/components/DatasetContainer/index.tsx @@ -34,8 +34,8 @@ const DatasetContainer = () => {
    - {METHODOLOGY_COPY.INDICATORS.map((card) => )}
    diff --git a/client/src/components/DatasetContainer/tests/__snapshots__/datasetContainer.test.tsx.snap b/client/src/components/DatasetContainer/tests/__snapshots__/datasetContainer.test.tsx.snap index e5f3f335..47eca94c 100644 --- a/client/src/components/DatasetContainer/tests/__snapshots__/datasetContainer.test.tsx.snap +++ b/client/src/components/DatasetContainer/tests/__snapshots__/datasetContainer.test.tsx.snap @@ -101,11 +101,11 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis id="high-ed-enroll-rate" >

    - Higher ed enrollment rate + Higher education non-enrollment

    - Percent of people who are currently enrolled in college or graduate school. + Percent of people 15 or older who are not currently enrolled in college, university, or graduate school.
      @@ -140,7 +140,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis Available for: - All U.S. states and the District of Columbia + All U.S. states, the District of Columbia, and Puerto Rico
    @@ -380,8 +380,6 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis Source: - - Fusion of model and monitor data - from 2017 as compiled by EPA’s EJSCREEN, sourced from EPA National Air - Toxics Assessment (NATA) and the U.S. Department of Transportation (DOT) traffic data + from 2017 as compiled by EPA’s EJSCREEN, sourced from EPA National Air Toxics Assessment (NATA) and the U.S. Department of Transportation (DOT) traffic data
  • @@ -995,23 +992,19 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
    Average number of years of life a person who has attained a given age can expect to live. - -

    - - Note: - - - Unlike most of the other datasets, high values of this data indicate low burdens. For - percentile calculations of burden, the percentile is calculated in reverse order, so that the - census tract with the highest life expectancy relative to area life expectancy (lowest burden - on this measure) is at the 0th percentile, and the census tract with the lowest life - expectancy relative to area life expectancy (highest burden on this measure) is at the - 100th percentile. Census tracts with the highest number have the lowest life expectancy. - -

    -
    +
    +

    + + + + Note: + + The percentiles for this dataset have been reversed so that census tracts with lower numbers have higher life expectancies and the census tracts with higher numbers have lower life expectancy when compared to life expectancy in the area. + +

    +
    • @@ -1057,23 +1050,19 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
      Median income of the census tract calculated as a percent of the area’s median income. - -

      - - Note: - - - Unlike most of the other datasets, high values of this data indicate low burdens. For - percentile calculations of burden, the percentile is calculated in reverse order, so that the - census tract with the highest median income relative to area median income (lowest burden on this - measure) is at the 0th percentile, and the census tract with the lowest median income relative to - area median income (highest burden on this measure) is at the 100th percentile. Census tracts with - the highest number have the lowest median income. - -

      -
      +
      +

      + + + + Note: + + The percentiles for this dataset have been reversed so that census tracts with lower numbers have higher median incomes and census tracts with the higher numbers have lower median income when compared to area median income. + +

      +
      • @@ -1319,12 +1308,11 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis id="high-school" >

        - High school degree attainment rate + High school degree non-attainment

        - Percent of people ages 25 years or older in a census tract whose - education level is less than a high school diploma. + Percent of people age 25 years or older in a census tract whose education level is less than a high school diploma.
          diff --git a/client/src/components/ExceedBurden/ExceedBurden.module.scss b/client/src/components/ExceedBurden/ExceedBurden.module.scss new file mode 100644 index 00000000..a6b23236 --- /dev/null +++ b/client/src/components/ExceedBurden/ExceedBurden.module.scss @@ -0,0 +1,27 @@ +@use '../../styles/design-system.scss' as *; + +// styles for all burden containers +@mixin baseBurdenContainer { + display: flex; + @include u-text('bold'); + + .burdenQuestion { + flex: 0 1 77%; + @include typeset('sans', '2xs', 2); + } + + .burdenValue { + margin-left: 2.2rem; + } +} + +// styles for first burden container +.exceedBurdenContainer { + @include baseBurdenContainer(); + @include u-padding-bottom(1); +} + +// styles for second burden container +// .exceedBurdenContainer ~ .exceedBurdenContainer { +// @include baseBurdenContainer(); +// } diff --git a/client/src/components/ExceedBurden/ExceedBurden.module.scss.d.ts b/client/src/components/ExceedBurden/ExceedBurden.module.scss.d.ts new file mode 100644 index 00000000..76fca558 --- /dev/null +++ b/client/src/components/ExceedBurden/ExceedBurden.module.scss.d.ts @@ -0,0 +1,14 @@ +declare namespace ExceedBurdenNamespace { + export interface IExceedBurden { + exceedBurdenContainer: string; + burdenQuestion: string; + burdenValue: string; + } + } + +declare const ExceedBurdenModule: ExceedBurdenNamespace.IExceedBurden & { + /** WARNING: Only available when `css-loader` is used without `style-loader` or `mini-css-extract-plugin` */ + locals: ExceedBurdenNamespace.IExceedBurden; + }; + + export = ExceedBurdenModule; diff --git a/client/src/components/ExceedBurden/ExceedBurden.test.tsx b/client/src/components/ExceedBurden/ExceedBurden.test.tsx new file mode 100644 index 00000000..3eed69d0 --- /dev/null +++ b/client/src/components/ExceedBurden/ExceedBurden.test.tsx @@ -0,0 +1,45 @@ +import * as React from 'react'; +import {render} from '@testing-library/react'; +import {LocalizedComponent} from '../../test/testHelpers'; +import ExceedBurden from './ExceedBurden'; +import * as EXPLORE_COPY from '../../data/copy/explore'; + +describe('test rendering of Exceeds one or more burdens when', () => { + it('is burdended', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); + + it('is NOT burdended', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); +}); + +describe('test rendering of Exceeds both socioeco burdens when', () => { + it('is burdended', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); + + it('is NOT burdended', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); +}); diff --git a/client/src/components/ExceedBurden/ExceedBurden.tsx b/client/src/components/ExceedBurden/ExceedBurden.tsx new file mode 100644 index 00000000..408f7b22 --- /dev/null +++ b/client/src/components/ExceedBurden/ExceedBurden.tsx @@ -0,0 +1,23 @@ +import React from 'react'; + +import * as styles from './ExceedBurden.module.scss'; +import * as EXPLORE_COPY from '../../data/copy/explore'; + +interface IExceedBurden { + text: React.ReactElement; + isBurdened: boolean; +} +const ExceedBurden = ({text, isBurdened}:IExceedBurden) => { + return ( +
          +
          + {text} +
          +
          + {isBurdened ? EXPLORE_COPY.SIDE_PANEL_SPACERS.YES : EXPLORE_COPY.SIDE_PANEL_SPACERS.NO} +
          +
          + ); +}; + +export default ExceedBurden; diff --git a/client/src/components/ExceedBurden/__snapshots__/ExceedBurden.test.tsx.snap b/client/src/components/ExceedBurden/__snapshots__/ExceedBurden.test.tsx.snap new file mode 100644 index 00000000..2d7f3134 --- /dev/null +++ b/client/src/components/ExceedBurden/__snapshots__/ExceedBurden.test.tsx.snap @@ -0,0 +1,53 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`test rendering of Exceeds both socioeco burdens when is NOT burdended 1`] = ` + +
          +
          + At or above both associated thresholds? +
          +
          + No +
          +
          +
          +`; + +exports[`test rendering of Exceeds both socioeco burdens when is burdended 1`] = ` + +
          +
          + At or above at least one threshold? +
          +
          + Yes +
          +
          +
          +`; + +exports[`test rendering of Exceeds one or more burdens when is NOT burdended 1`] = ` + +
          +
          + At or above at least one threshold? +
          +
          + No +
          +
          +
          +`; + +exports[`test rendering of Exceeds one or more burdens when is burdended 1`] = ` + +
          +
          + At or above at least one threshold? +
          +
          + Yes +
          +
          +
          +`; diff --git a/client/src/components/ExceedBurden/index.tsx b/client/src/components/ExceedBurden/index.tsx new file mode 100644 index 00000000..d32835b2 --- /dev/null +++ b/client/src/components/ExceedBurden/index.tsx @@ -0,0 +1,3 @@ +import ExceedBurden from './ExceedBurden'; + +export default ExceedBurden; diff --git a/client/src/components/Indicator/Indicator.module.scss b/client/src/components/Indicator/Indicator.module.scss index 25957599..149c956f 100644 --- a/client/src/components/Indicator/Indicator.module.scss +++ b/client/src/components/Indicator/Indicator.module.scss @@ -4,14 +4,12 @@ @mixin indicator { display: flex; flex-direction: column; - @include u-padding-bottom(3); - &:last-child { - border-bottom: none; - @include u-padding-bottom(0); - } + @include u-padding-top(1.5); + @include u-padding-bottom(1.5); .indicatorRow { display: flex; + justify-content: space-between; @media screen and (max-width: $mobileBreakpoint) { flex: 1 0 40%; @@ -21,15 +19,16 @@ } .indicatorName { - flex: 0 1 77%; + // flex: 0 1 77%; + flex-basis: 60%; display: flex; flex-direction: column; @include typeset('sans', '2xs', 2); - @include u-text('bold'); + @include u-text('medium'); .indicatorDesc { @include typeset('sans', '3xs', 2); - @include u-text('normal'); + @include u-text('thin'); max-width: 12rem; @include u-margin-top(0); @media screen and (max-width: 1024px) { @@ -38,13 +37,47 @@ } } - .indicatorValue { - margin-left: 2.2rem; - - .indicatorSuperscript { - top: -0.2em + .indicatorValueCol { + display: flex; + flex-direction: column; + + .indicatorValueRow { + display: flex; + align-self: end; + + .indicatorValue { + margin-left: 2.2rem; + + .indicatorSuperscript { + top: -0.2em + } + } + + .indicatorArrow { + margin-bottom: -.375rem; + + img { + max-width: none; + height: 1.5rem; + width: 1.5rem; + + } + .unavailable { + opacity: .2; + } + } } - } + + .indicatorValueSubText{ + display: flex; + flex-direction: column; + align-self: flex-end; + text-align: right; + @include typeset('sans', '3xs', 2); + @include u-text('thin'); + } + } + } } @@ -55,5 +88,27 @@ .disadvantagedIndicator { @include indicator; - @include u-text('blue-warm-70v'); + @include u-bg('blue-warm-10'); + + // A darker bg color: + // background-color: #D2DAE3; + + // Add a border + // border: 1px solid #1A4480; + + margin: 0 -20px 1px -20px; + @include u-padding-left(2.5); + @include u-padding-right(2.5); + + + // Overwrite indicator mixin with bolder fonts for disadv. indicator + .indicatorRow { + .indicatorName { + @include u-text('bold'); + + .indicatorDesc { + @include u-text('normal'); + } + } + } } \ No newline at end of file diff --git a/client/src/components/Indicator/Indicator.module.scss.d.ts b/client/src/components/Indicator/Indicator.module.scss.d.ts index 868b76e6..6d10859d 100644 --- a/client/src/components/Indicator/Indicator.module.scss.d.ts +++ b/client/src/components/Indicator/Indicator.module.scss.d.ts @@ -4,8 +4,13 @@ declare namespace IndicatorNamespace { indicatorBoxAdditional:string; indicatorRow:string; indicatorName:string; + indicatorValueCol:string; + indicatorValueRow:string; indicatorValue:string; indicatorSuperscript:string; + indicatorArrow:string; + unavailable:string; + indicatorValueSubText:string; indicatorDesc:string; disadvantagedIndicator:string; } diff --git a/client/src/components/Indicator/Indicator.test.tsx b/client/src/components/Indicator/Indicator.test.tsx index 512cf12e..7480f528 100644 --- a/client/src/components/Indicator/Indicator.test.tsx +++ b/client/src/components/Indicator/Indicator.test.tsx @@ -1,13 +1,18 @@ import * as React from 'react'; -import {render} from '@testing-library/react'; +import {render, screen} from '@testing-library/react'; import {LocalizedComponent} from '../../test/testHelpers'; -import Indicator, {readablePercentile} from './Indicator'; -import {indicatorInfo} from '../AreaDetail'; +import Indicator, {IndicatorValueIcon, IndicatorValueSubText, DisplayStatUnit} from './Indicator'; +import {indicatorInfo} from '../AreaDetail/AreaDetail'; + +import * as EXPLORE_COPY from '../../data/copy/explore'; const highSchool:indicatorInfo = { label: 'some label', description: 'some description', value: 97, + isDisadvagtaged: true, + isPercent: true, + threshold: 20, }; describe('rendering of the Indicator', () => { @@ -22,9 +27,160 @@ describe('rendering of the Indicator', () => { }); }); -describe('tests the readablePercentile function', () => { - expect(readablePercentile(.98)).toEqual(98); - expect(readablePercentile(.07)).toEqual(7); - expect(readablePercentile(.123)).toEqual(12); - expect(readablePercentile(.789)).toEqual(79); +describe('test rendering of Indicator value icons', () => { + it('renders the up arrow when value is above threshold', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + screen.getByAltText(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.ARROW_UP.defaultMessage); + }); + it('renders the down arrow when the value is above the threshold', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + screen.getByAltText(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.ARROW_DOWN.defaultMessage); + }); + + it('renders the down arrow when the value is zero', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + screen.getByAltText(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.ARROW_DOWN.defaultMessage); + }); + + it('renders the unavailable icon when the value is null', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + screen.getByAltText(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.UNAVAILABLE.defaultMessage); + }); +}); + +describe('test rendering of Indicator value sub-text', () => { + it('renders the "above 90 percentile"', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + console.log(asFragment()); + }); + it('renders the "below 90 percentile"', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); + it('renders the "data is not available"', () => { + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); +}); + +describe('test that the unit suffix renders correctly', ()=> { + it('renders correctly when the value is a percentile', () => { + const lowLife:indicatorInfo = { + label: 'some label', + description: 'some description', + value: 97, + isDisadvagtaged: true, + isPercent: false, + threshold: 20, + }; + + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); + it('renders correctly when the value is a percent', () => { + const lowLife:indicatorInfo = { + label: 'some label', + description: 'some description', + value: 97, + isDisadvagtaged: true, + isPercent: true, + threshold: 20, + }; + + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); + it('renders correctly when the value is a null', () => { + const lowLife:indicatorInfo = { + label: 'some label', + description: 'some description', + value: null, + isDisadvagtaged: true, + isPercent: false, + }; + + const {asFragment} = render( + + + , + ); + expect(asFragment()).toMatchSnapshot(); + }); }); diff --git a/client/src/components/Indicator/Indicator.tsx b/client/src/components/Indicator/Indicator.tsx index 14abcea1..76c9231d 100644 --- a/client/src/components/Indicator/Indicator.tsx +++ b/client/src/components/Indicator/Indicator.tsx @@ -1,18 +1,126 @@ import React from 'react'; -import {indicatorInfo} from '../AreaDetail'; +import {useIntl} from 'gatsby-plugin-intl'; + +import {indicatorInfo} from '../AreaDetail/AreaDetail'; import * as styles from './Indicator.module.scss'; +import * as constants from '../../data/constants'; +import * as EXPLORE_COPY from '../../data/copy/explore'; + +// @ts-ignore +import downArrow from '/node_modules/uswds/dist/img/usa-icons/arrow_downward.svg'; +// @ts-ignore +import upArrow from '/node_modules/uswds/dist/img/usa-icons/arrow_upward.svg'; +// @ts-ignore +import unAvailable from '/node_modules/uswds/dist/img/usa-icons/do_not_disturb.svg'; interface IIndicator { indicator: indicatorInfo, } -export const readablePercentile = (percentile: number | null) => { - return percentile !== null ? Math.round(percentile * 100) : 'N/A'; +interface IIndicatorValueIcon { + value: number | null, + isAboveThresh: boolean, }; +interface IIndicatorValueSubText { + value: number | null, + isAboveThresh: boolean, + threshold: number, + isPercent: boolean | undefined, +} + +interface IDisplayStatUnit { + indicator: indicatorInfo, + displayStat: number | null, +} + +/** + * This component will determine what indicator's icon should be (arrowUp, arrowDown or unavailable) and + * return the appropriate JSX. + * + * @param {number | null} props + * @return {JSX.Element} + */ +export const IndicatorValueIcon = ({value, isAboveThresh}: IIndicatorValueIcon) => { + const intl = useIntl(); + + if (value == null) { + return {intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.UNAVAILABLE)}; + } else { + return isAboveThresh ? + {intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.ARROW_UP)} : + {intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_VALUES.IMG_ALT_TEXT.ARROW_DOWN)}; + } +}; + +/** + * This component will determine the sub-text of the indicator's value, some examples could be + * "above 90th percentile" + * "below 20 percent" + * "data is not available" + * + * Todo: refactor into single component, add to i18n and add to tests + * + * @return {JSX.Element} + */ +export const IndicatorValueSubText = ({value, isAboveThresh, threshold, isPercent}:IIndicatorValueSubText) => { + return value == null ? +
          + {EXPLORE_COPY.SIDE_PANEL_VALUES.UNAVAILBLE_MSG} +
          : + +
          + { + isAboveThresh ? + EXPLORE_COPY.SIDE_PANEL_VALUES.ABOVE : + EXPLORE_COPY.SIDE_PANEL_VALUES.BELOW + } + {`${threshold ? threshold : 90}`} + + {!isPercent && `th`} +
          +
          + { + isPercent ? + EXPLORE_COPY.SIDE_PANEL_VALUES.PERCENT : + EXPLORE_COPY.SIDE_PANEL_VALUES.PERCENTILE + } +
          +
          ; +}; + +/** + * This component will return the value suffix as either a percent or + * ordinal value of the displayed statistic + * + * @return {JSX.Element} + */ +export const DisplayStatUnit = ({indicator, displayStat}:IDisplayStatUnit) => { + if (indicator.value !== null) { + return indicator.isPercent ? + {`%`} : + + {getSuperscriptOrdinal(displayStat)} + ; + } else { + return ; + } +}; + + // Todo: Add internationalization to superscript ticket #582 -export const getSuperscriptOrdinal = (percentile: number | string) => { +export const getSuperscriptOrdinal = (percentile: number | string | null) => { + if (percentile === null) return ''; if (typeof percentile === 'number') { const englishOrdinalRules = new Intl.PluralRules('en', { type: 'ordinal', @@ -29,26 +137,66 @@ export const getSuperscriptOrdinal = (percentile: number | string) => { } }; +/** + * This component will return the list element which will be the indicator row in the side panel + * + * @param {IIndicator} indicator + * @return {JSX.Element} + */ const Indicator = ({indicator}:IIndicator) => { + // Convert the decimal value to a stat to display + const displayStat = indicator.value !== null ? Math.round(indicator.value * 100) : null; + + // If the threshold exists, set it, otherwise set it to the default value + const threshold = indicator.threshold ? indicator.threshold : constants.DEFAULT_THRESHOLD_PERCENTILE; + + // A boolean to represent if the indicator is above or below the threshold + const isAboveThresh = displayStat !== null && displayStat >= threshold ? true : false; + + return (
        • + data-cy={'indicatorBox'} + data-testid='indicator-box'>
          + + {/* Indicator name and description*/}
          {indicator.label}
          {indicator.description}
          -
          - {readablePercentile(indicator.value)} - {indicator.isPercent ? - {`%`} : - - {getSuperscriptOrdinal(readablePercentile(indicator.value))} - - } + + {/* Indicator value, icon and subtext */} +
          +
          + + {/* Indicator value */} +
          + {displayStat} + +
          + + {/* Indicator icon - up arrow, down arrow, or unavailable */} +
          + +
          +
          + + {/* Indicator sub-text */} +
          + +
        • diff --git a/client/src/components/Indicator/__snapshots__/Indicator.test.tsx.snap b/client/src/components/Indicator/__snapshots__/Indicator.test.tsx.snap index 84e47ac0..72506582 100644 --- a/client/src/components/Indicator/__snapshots__/Indicator.test.tsx.snap +++ b/client/src/components/Indicator/__snapshots__/Indicator.test.tsx.snap @@ -4,6 +4,7 @@ exports[`rendering of the Indicator checks if component renders 1`] = `
        • @@ -13,14 +14,116 @@ exports[`rendering of the Indicator checks if component renders 1`] = `
          - 9700 - - - th - - +
          +
          + 9700 + + % + +
          +
          + an icon for the up arrow +
          +
          +
          +
          + above 20 +
          +
          + percent +
          +
        • `; + +exports[`test rendering of Indicator value icons renders the down arrow when the value is above the threshold 1`] = ` + + an icon for the down arrow + +`; + +exports[`test rendering of Indicator value icons renders the down arrow when the value is zero 1`] = ` + + an icon for the down arrow + +`; + +exports[`test rendering of Indicator value icons renders the unavailable icon when the value is null 1`] = ` + + an icon to represent data is unavailable + +`; + +exports[`test rendering of Indicator value icons renders the up arrow when value is above threshold 1`] = ` + + an icon for the up arrow + +`; + +exports[`test rendering of Indicator value sub-text renders the "above 90 percentile" 1`] = ` + +
          + above 90th +
          +
          + percentile +
          +
          +`; + +exports[`test rendering of Indicator value sub-text renders the "below 90 percentile" 1`] = ` + +
          + below 90th +
          +
          + percentile +
          +
          +`; + +exports[`test rendering of Indicator value sub-text renders the "data is not available" 1`] = ` + +
          + data is not available +
          +
          +`; + +exports[`test that the unit suffix renders correctly renders correctly when the value is a null 1`] = ``; + +exports[`test that the unit suffix renders correctly renders correctly when the value is a percent 1`] = ` + + + % + + +`; + +exports[`test that the unit suffix renders correctly renders correctly when the value is a percentile 1`] = ` + + + + th + + + +`; diff --git a/client/src/components/J40Header/J40Header.module.scss b/client/src/components/J40Header/J40Header.module.scss index 092171a7..f9b39763 100644 --- a/client/src/components/J40Header/J40Header.module.scss +++ b/client/src/components/J40Header/J40Header.module.scss @@ -66,3 +66,7 @@ } } } + +.alert { + @include u-margin-top(4); +} \ No newline at end of file diff --git a/client/src/components/J40Header/J40Header.module.scss.d.ts b/client/src/components/J40Header/J40Header.module.scss.d.ts index 126471ae..94c0fa0b 100644 --- a/client/src/components/J40Header/J40Header.module.scss.d.ts +++ b/client/src/components/J40Header/J40Header.module.scss.d.ts @@ -9,6 +9,7 @@ declare namespace J40HeaderNamespace { title2BetaPill: string; betaPill: string; navLinks: string; + alert: string; } } diff --git a/client/src/components/J40Header/J40Header.tsx b/client/src/components/J40Header/J40Header.tsx index b2113ba4..5d378fda 100644 --- a/client/src/components/J40Header/J40Header.tsx +++ b/client/src/components/J40Header/J40Header.tsx @@ -5,6 +5,7 @@ import { NavMenuButton, PrimaryNav, Grid, + Alert, } from '@trussworks/react-uswds'; import BetaBanner from '../BetaBanner'; import J40MainGridContainer from '../J40MainGridContainer'; @@ -16,6 +17,8 @@ import siteLogo from '../../images/j40-logo-v2.png'; import * as styles from './J40Header.module.scss'; import * as COMMON_COPY from '../../data/copy/common'; +const isAlertValid = new Date < COMMON_COPY.ALERTS.EXPIRATION_DATE; + const J40Header = () => { const intl = useIntl(); const [mobileNavOpen, setMobileNavOpen] = useState(false); @@ -67,8 +70,6 @@ const J40Header = () => { - {/* Remove Usabilty Banner testing deployment to main again!*/} - {/* Logo and Navigation */} @@ -106,6 +107,17 @@ const J40Header = () => { + + {/* Alert */} + {isAlertValid && + + {COMMON_COPY.ALERTS.CENSUS_TRACT_DESCRIPTION} + + + } ); }; diff --git a/client/src/components/J40Header/__snapshots__/J40Header.test.tsx.snap b/client/src/components/J40Header/__snapshots__/J40Header.test.tsx.snap index 7e8d5369..be6ed794 100644 --- a/client/src/components/J40Header/__snapshots__/J40Header.test.tsx.snap +++ b/client/src/components/J40Header/__snapshots__/J40Header.test.tsx.snap @@ -268,6 +268,40 @@ exports[`rendering of the J40Header checks if component renders 1`] = ` +
          +
          +
          +

          + Improvements to the map on the Explore the tool page +

          +

          + View improvements made to the display of the information for each census tract and + + send feedback + + . +

          +
          +
          +
          `; diff --git a/client/src/components/J40Map.tsx b/client/src/components/J40Map.tsx index 516316ff..3b8bb85c 100644 --- a/client/src/components/J40Map.tsx +++ b/client/src/components/J40Map.tsx @@ -27,12 +27,13 @@ import AreaDetail from './AreaDetail'; import MapInfoPanel from './mapInfoPanel'; import MapSearch from './MapSearch'; import TerritoryFocusControl from './territoryFocusControl'; +import {getOSBaseMap} from '../data/getOSBaseMap'; // Styles and constants -import {getOSBaseMap} from '../data/getOSBaseMap'; import 'maplibre-gl/dist/maplibre-gl.css'; import * as constants from '../data/constants'; import * as styles from './J40Map.module.scss'; +import * as COMMON_COPY from '../data/copy/common'; declare global { @@ -54,6 +55,49 @@ export interface IDetailViewInterface { properties: constants.J40Properties, }; +/** + * This function will determine the URL for the map tiles. It will read in a string that will designate either + * high or low tiles. It will allow to overide the URL to the pipeline staging tile URL via feature flag. + * Lastly, it allows to set the tiles to be local or via the CDN as well. + * + * @param {string} tilesetName + * @returns {string} + */ +export const featureURLForTilesetName = (tilesetName: string): string => { + const flags = useFlags(); + + const pipelineStagingBaseURL = `https://justice40-data.s3.amazonaws.com/data-pipeline-staging`; + const XYZ_SUFFIX = '{z}/{x}/{y}.pbf'; + + if ('stage_hash' in flags) { + // Check if the stage_hash is valid + const regex = /^[0-9]{4}\/[a-f0-9]{40}$/; + if (!regex.test(flags['stage_hash'])) { + console.error(COMMON_COPY.CONSOLE_ERROR.STAGE_URL); + } + + return `${pipelineStagingBaseURL}/${flags['stage_hash']}/data/score/tiles/${tilesetName}/${XYZ_SUFFIX}`; + } else { + // The feature tile base URL and path can either point locally or the CDN. + // This is selected based on the DATA_SOURCE env variable. + const featureTileBaseURL = process.env.DATA_SOURCE === 'local' ? + process.env.GATSBY_LOCAL_TILES_BASE_URL : + process.env.GATSBY_CDN_TILES_BASE_URL; + + const featureTilePath = process.env.DATA_SOURCE === 'local' ? + process.env.GATSBY_DATA_PIPELINE_SCORE_PATH_LOCAL : + process.env.GATSBY_DATA_PIPELINE_SCORE_PATH; + + return [ + featureTileBaseURL, + featureTilePath, + process.env.GATSBY_MAP_TILES_PATH, + tilesetName, + XYZ_SUFFIX, + ].join('/'); + } +}; + const J40Map = ({location}: IJ40Interface) => { /** @@ -304,7 +348,7 @@ const J40Map = ({location}: IJ40Interface) => { id={constants.LOW_ZOOM_SOURCE_NAME} type="vector" promoteId={constants.GEOID_PROPERTY} - tiles={[constants.FEATURE_TILE_LOW_ZOOM_URL]} + tiles={[featureURLForTilesetName('low')]} maxzoom={constants.GLOBAL_MAX_ZOOM_LOW} minzoom={constants.GLOBAL_MIN_ZOOM_LOW} > @@ -330,7 +374,7 @@ const J40Map = ({location}: IJ40Interface) => { id={constants.HIGH_ZOOM_SOURCE_NAME} type="vector" promoteId={constants.GEOID_PROPERTY} - tiles={[constants.FEATURE_TILE_HIGH_ZOOM_URL]} + tiles={[featureURLForTilesetName('high')]} maxzoom={constants.GLOBAL_MAX_ZOOM_HIGH} minzoom={constants.GLOBAL_MIN_ZOOM_HIGH} > diff --git a/client/src/components/Language/Language.tsx b/client/src/components/Language/Language.tsx index 08ad0a2d..e06df5a8 100644 --- a/client/src/components/Language/Language.tsx +++ b/client/src/components/Language/Language.tsx @@ -17,6 +17,12 @@ interface ILanguageProps { isDesktop: boolean } +/** + * Language component that will allow the user to change languages + * + * @param {boolean} isDesktop + * @return {JSX.Element | null} + */ const Language = ({isDesktop}:ILanguageProps) => { const flags = useFlags(); diff --git a/client/src/components/LowIncome/LowIncome.module.scss b/client/src/components/LowIncome/LowIncome.module.scss deleted file mode 100644 index cbc9868b..00000000 --- a/client/src/components/LowIncome/LowIncome.module.scss +++ /dev/null @@ -1,20 +0,0 @@ -@use '../../styles/design-system.scss' as *; - -.lowIncomeContainer { - - border: 1px solid #DFE1E2; - @include u-margin-top(4); - @include u-padding-left(4); - @include u-padding-right(3); - @include u-padding-bottom(4); - - .lowIncomeTitle { - @include typeset('sans', 'xs', 3); - @include u-text('semibold'); - } - - .lowIncomeText { - @include typeset('sans', 'xs', 3); - @include u-text('light'); - } -}; \ No newline at end of file diff --git a/client/src/components/LowIncome/LowIncome.module.scss.d.ts b/client/src/components/LowIncome/LowIncome.module.scss.d.ts deleted file mode 100644 index 26a738e7..00000000 --- a/client/src/components/LowIncome/LowIncome.module.scss.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -declare namespace LowIncomeNamespace { - export interface ILowIncomeScss { - lowIncomeContainer: string; - lowIncomeTitle: string; - lowIncomeText: string; - } - } - -declare const LowIncomeScssModule: LowIncomeNamespace.ILowIncomeScss & { - /** WARNING: Only available when `css-loader` is used without `style-loader` or `mini-css-extract-plugin` */ - locals: LowIncomeNamespace.ILowIncomeScss; - }; - - export = LowIncomeScssModule; diff --git a/client/src/components/LowIncome/LowIncome.tsx b/client/src/components/LowIncome/LowIncome.tsx deleted file mode 100644 index 330460de..00000000 --- a/client/src/components/LowIncome/LowIncome.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import {useIntl} from 'gatsby-plugin-intl'; - -import * as METHODOLOGY_COPY from '../../data/copy/methodology'; -import * as styles from './LowIncome.module.scss'; - -const LowIncome = () => { - const intl = useIntl(); - - return ( -
          -

          - * - {' '} - {intl.formatMessage(METHODOLOGY_COPY.LOW_INCOME.HEADING)} -

          - -

          - {intl.formatMessage(METHODOLOGY_COPY.LOW_INCOME.INFO)} -

          - -
          - ); -}; - -export default LowIncome; diff --git a/client/src/components/LowIncome/__snapshots__/LowIncome.test.tsx.snap b/client/src/components/LowIncome/__snapshots__/LowIncome.test.tsx.snap deleted file mode 100644 index 9bf5949a..00000000 --- a/client/src/components/LowIncome/__snapshots__/LowIncome.test.tsx.snap +++ /dev/null @@ -1,20 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`rendering of the LowIncome checks if component renders 1`] = ` - -
          -

          - - * - - Low Income -

          -

          - - At or above 65th percentile for percent of census tract population of households where household - income is at or below 200% of the Federal poverty level - -

          -
          -
          -`; diff --git a/client/src/components/LowIncome/index.tsx b/client/src/components/LowIncome/index.tsx deleted file mode 100644 index a4efda8b..00000000 --- a/client/src/components/LowIncome/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import LowIncome from './LowIncome'; - -export default LowIncome; diff --git a/client/src/components/MapWrapper/index.tsx b/client/src/components/MapWrapper/index.tsx index 90722830..2a3dccc0 100644 --- a/client/src/components/MapWrapper/index.tsx +++ b/client/src/components/MapWrapper/index.tsx @@ -17,29 +17,10 @@ const MapWrapper = ({location}: IMapWrapperProps) => { - - -
          - {EXPLORE_COPY.DOWNLOAD_DRAFT.PARAGRAPH_1} -
          -
          -
          - - - -

          {EXPLORE_COPY.NOTE_ON_TERRITORIES.INTRO}

          -

          {EXPLORE_COPY.NOTE_ON_TERRITORIES.PARA_1}

          -

          {EXPLORE_COPY.NOTE_ON_TERRITORIES.PARA_2}

          -

          {EXPLORE_COPY.NOTE_ON_TERRITORIES.PARA_3}

          -

          {EXPLORE_COPY.NOTE_ON_TERRITORIES.PARA_4}

          -
          -
          - - - -

          {EXPLORE_COPY.NOTE_ON_TRIBAL_NATIONS.INTRO}

          -

          {EXPLORE_COPY.NOTE_ON_TRIBAL_NATIONS.PARA_1}

          -
          + +
          + {EXPLORE_COPY.DOWNLOAD_DRAFT.PARAGRAPH_1} +
          ); diff --git a/client/src/components/MethodologyFormula/__snapshots__/MethodologyFormula.test.tsx.snap b/client/src/components/MethodologyFormula/__snapshots__/MethodologyFormula.test.tsx.snap index caa7ec2e..054ade7e 100644 --- a/client/src/components/MethodologyFormula/__snapshots__/MethodologyFormula.test.tsx.snap +++ b/client/src/components/MethodologyFormula/__snapshots__/MethodologyFormula.test.tsx.snap @@ -12,18 +12,18 @@ exports[`rendering of the MethodologyFormula checks if component renders 1`] = `

          - + IF - + the census tract is above the threshold for one or more environmental or climate indicators

          - + AND - + the census tract is above the threshold for the socioeconomic indicators

          diff --git a/client/src/components/PublicEngageButton/PublicEngageButton.module.scss b/client/src/components/PublicEngageButton/PublicEngageButton.module.scss index 434e5905..642f9801 100644 --- a/client/src/components/PublicEngageButton/PublicEngageButton.module.scss +++ b/client/src/components/PublicEngageButton/PublicEngageButton.module.scss @@ -1,10 +1,11 @@ @use '../../styles/design-system.scss' as *; .tagContainer { + align-self: flex-end; @include u-margin-bottom(1); @include u-margin-right(1); .tag { - @include u-bg("yellow-20v"); + @include u-bg("gray-cool-10"); color: black; border-radius: 5px; @include u-text('bold'); @@ -12,6 +13,8 @@ } .container { + display: flex; + flex-direction: column; @include u-padding-top(2.5); .link, .link:visited { diff --git a/client/src/components/PublicEngageButton/PublicEngageButton.tsx b/client/src/components/PublicEngageButton/PublicEngageButton.tsx index 74ade4f0..7a93b6c9 100644 --- a/client/src/components/PublicEngageButton/PublicEngageButton.tsx +++ b/client/src/components/PublicEngageButton/PublicEngageButton.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import {Link} from 'gatsby'; -import {useIntl} from 'gatsby-plugin-intl'; +import {useIntl, Link} from 'gatsby-plugin-intl'; import {Button, Tag} from '@trussworks/react-uswds'; import * as styles from './PublicEngageButton.module.scss'; diff --git a/client/src/components/PublicEngageButton/__snapshots__/PublicEngageButton.test.tsx.snap b/client/src/components/PublicEngageButton/__snapshots__/PublicEngageButton.test.tsx.snap index b30721d2..bc6a88d8 100644 --- a/client/src/components/PublicEngageButton/__snapshots__/PublicEngageButton.test.tsx.snap +++ b/client/src/components/PublicEngageButton/__snapshots__/PublicEngageButton.test.tsx.snap @@ -8,11 +8,11 @@ exports[`rendering of the PublicEngageButton checks if component renders 1`] = ` class="usa-tag" data-testid="tag" > - NEW + UPDATED diff --git a/client/src/components/PublicEvent/__snapshots__/PublicEvent.test.tsx.snap b/client/src/components/PublicEvent/__snapshots__/PublicEvent.test.tsx.snap index e29ea5c5..2db5da0c 100644 --- a/client/src/components/PublicEvent/__snapshots__/PublicEvent.test.tsx.snap +++ b/client/src/components/PublicEvent/__snapshots__/PublicEvent.test.tsx.snap @@ -16,18 +16,7 @@ exports[`rendering of the PublicEvent checks if component renders 1`] = `

          - - CEJST - training session - #1 - - + CEJST training session #1

          Registration link diff --git a/client/src/components/SidePanelInfo/SidePanelInfo.module.scss b/client/src/components/SidePanelInfo/SidePanelInfo.module.scss new file mode 100644 index 00000000..c882063d --- /dev/null +++ b/client/src/components/SidePanelInfo/SidePanelInfo.module.scss @@ -0,0 +1,21 @@ +@use '../../styles/design-system.scss' as *; + +.sidePanelInfoContainer { + display: flex; + flex-direction: column; + @include u-padding-right(4); + @include u-padding-left(4); + @include u-padding-bottom(4); + + .sidePanelInfoHeading { + @include u-padding-top(2); + font-size: x-large; + line-height: 1.9rem; + } + + .sidePanelInfoIcon { + @include u-height(5); + @include u-margin-top(4); + @include u-margin-bottom(-2) + } +} diff --git a/client/src/components/mapIntroduction.module.scss.d.ts b/client/src/components/SidePanelInfo/SidePanelInfo.module.scss.d.ts similarity index 67% rename from client/src/components/mapIntroduction.module.scss.d.ts rename to client/src/components/SidePanelInfo/SidePanelInfo.module.scss.d.ts index afa9b474..4eb36998 100644 --- a/client/src/components/mapIntroduction.module.scss.d.ts +++ b/client/src/components/SidePanelInfo/SidePanelInfo.module.scss.d.ts @@ -1,12 +1,8 @@ declare namespace MapIntroductionModuleScssNamespace { export interface IMapIntroductionModuleScss { - mapIntroContainer: string; - mapIntroHeader: string; - mapIntroText: string; - mapIntroLightbulb: string; - didYouKnowBox: string - didYouKnow: string - didYouKnowText: string + sidePanelInfoContainer: string; + sidePanelInfoHeading: string; + sidePanelInfoIcon: string; } } diff --git a/client/src/components/LowIncome/LowIncome.test.tsx b/client/src/components/SidePanelInfo/SidePanelInfo.test.tsx similarity index 62% rename from client/src/components/LowIncome/LowIncome.test.tsx rename to client/src/components/SidePanelInfo/SidePanelInfo.test.tsx index 47be349b..481e891a 100644 --- a/client/src/components/LowIncome/LowIncome.test.tsx +++ b/client/src/components/SidePanelInfo/SidePanelInfo.test.tsx @@ -1,16 +1,16 @@ import * as React from 'react'; import {render} from '@testing-library/react'; +import SidePanelInfo from './SidePanelInfo'; import {LocalizedComponent} from '../../test/testHelpers'; -import LowIncome from './LowIncome'; -describe('rendering of the LowIncome', () => { +describe('rendering of the component', () => { const {asFragment} = render( - + , ); - it('checks if component renders', () => { + it('expects the render to match snapshot', () => { expect(asFragment()).toMatchSnapshot(); }); }); diff --git a/client/src/components/SidePanelInfo/SidePanelInfo.tsx b/client/src/components/SidePanelInfo/SidePanelInfo.tsx new file mode 100644 index 00000000..37c3a2bd --- /dev/null +++ b/client/src/components/SidePanelInfo/SidePanelInfo.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import {useIntl} from 'gatsby-plugin-intl'; + +// @ts-ignore +import puzzle from '../../images/sidePanelIcons/puzzle.svg'; +// @ts-ignore +import bellCurve from '../../images/sidePanelIcons/bellCurve.svg'; +// @ts-ignore +import pieChart from '../../images/sidePanelIcons/pieChart.svg'; +// @ts-ignore +import upDown from '../../images/sidePanelIcons/upDown.svg'; + +import * as styles from './SidePanelInfo.module.scss'; +import * as EXPLORE_COPY from '../../data/copy/explore'; + +const MapIntroduction = () => { + const intl = useIntl(); + + return ( +

          + ); +}; + +export default MapIntroduction; diff --git a/client/src/components/SidePanelInfo/__snapshots__/SidePanelInfo.test.tsx.snap b/client/src/components/SidePanelInfo/__snapshots__/SidePanelInfo.test.tsx.snap new file mode 100644 index 00000000..0f3659e9 --- /dev/null +++ b/client/src/components/SidePanelInfo/__snapshots__/SidePanelInfo.test.tsx.snap @@ -0,0 +1,76 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`rendering of the component expects the render to match snapshot 1`] = ` + + + +`; diff --git a/client/src/components/SidePanelInfo/index.tsx b/client/src/components/SidePanelInfo/index.tsx new file mode 100644 index 00000000..02e87f11 --- /dev/null +++ b/client/src/components/SidePanelInfo/index.tsx @@ -0,0 +1,3 @@ +import SidePanelInfo from './SidePanelInfo'; + +export default SidePanelInfo; diff --git a/client/src/components/__snapshots__/mapInfoPanel.test.tsx.snap b/client/src/components/__snapshots__/mapInfoPanel.test.tsx.snap index f7841614..1089ddac 100644 --- a/client/src/components/__snapshots__/mapInfoPanel.test.tsx.snap +++ b/client/src/components/__snapshots__/mapInfoPanel.test.tsx.snap @@ -8,29 +8,74 @@ exports[`simulate app starting up, no click on map should match the snapshot of class="someClassName" > diff --git a/client/src/components/mapInfoPanel.tsx b/client/src/components/mapInfoPanel.tsx index 11578375..211f9714 100644 --- a/client/src/components/mapInfoPanel.tsx +++ b/client/src/components/mapInfoPanel.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import MapIntroduction from './mapIntroduction'; import AreaDetail from './AreaDetail'; +import SidePanelInfo from './SidePanelInfo'; interface IMapInfoPanelProps { className: string, @@ -13,7 +13,7 @@ const MapInfoPanel = ({className, featureProperties, selectedFeatureId}:IMapInfo
          {(featureProperties && selectedFeatureId ) ? : - + }
          ); diff --git a/client/src/components/mapIntroduction.module.scss b/client/src/components/mapIntroduction.module.scss deleted file mode 100644 index 3421d211..00000000 --- a/client/src/components/mapIntroduction.module.scss +++ /dev/null @@ -1,34 +0,0 @@ -.mapIntroContainer { - padding: 20px 20px; -} - -.mapIntroHeader { - font-size: xx-large; - line-height: 1.9rem; - padding-top: 0.8rem; - padding-left: 0.3rem; -} -.mapIntroText { - display: flex; - margin-top: 2.4rem; -} - -.mapIntroLightbulb { - flex: 1 0 10%; - align-self: flex-start; -} - -.didYouKnowBox { - padding-left: 0.4rem; - padding-top: 0.2rem; - font-size: large; -} - -.didYouKnow { - font-weight: 600; -} -.didYouKnowText { - width: 95%; - padding-top: 0.3rem; - line-height: 1.5rem; -} diff --git a/client/src/components/mapIntroduction.test.tsx b/client/src/components/mapIntroduction.test.tsx deleted file mode 100644 index 1ab43696..00000000 --- a/client/src/components/mapIntroduction.test.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import * as React from 'react'; -import {render, screen} from '@testing-library/react'; -import MapIntroduction from './mapIntroduction'; -import {LocalizedComponent} from '../../src/test/testHelpers'; - -describe('rendering of the component', () => { - render( - - - , - ); - - it('renders the title', () => { - expect(screen.getByRole('banner')).toHaveTextContent('Zoom and select a census tract to view data'); - }); -}); diff --git a/client/src/components/mapIntroduction.tsx b/client/src/components/mapIntroduction.tsx deleted file mode 100644 index 019e8262..00000000 --- a/client/src/components/mapIntroduction.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import {useIntl} from 'gatsby-plugin-intl'; - -// @ts-ignore -import lightbulbIcon from '/node_modules/uswds/dist/img/usa-icons/lightbulb_outline.svg'; -import * as styles from './mapIntroduction.module.scss'; -import * as EXPLORE_COPY from '../data/copy/explore'; - -const MapIntroduction = () => { - const intl = useIntl(); - - return ( - - ); -}; - -export default MapIntroduction; diff --git a/client/src/components/territoryFocusControl.module.scss b/client/src/components/territoryFocusControl.module.scss index 7c5afe5a..fc368920 100644 --- a/client/src/components/territoryFocusControl.module.scss +++ b/client/src/components/territoryFocusControl.module.scss @@ -1,18 +1,20 @@ @use '../styles/design-system.scss' as *; +@mixin baseTerritoryFocus { + position: absolute; + left: .75em; + z-index: 1; +} + .territoryFocusContainer { // styles for mobile-lg (480px) and greater widths @include at-media('mobile-lg') { - position: absolute; - left: .75em; + @include baseTerritoryFocus; top: units(card-lg); - z-index: 10; - } + }; - position: absolute; - left: .75em; + @include baseTerritoryFocus; top: units(9); - z-index: 10; } diff --git a/client/src/data/constants.tsx b/client/src/data/constants.tsx index 8e69f318..e1a9d632 100644 --- a/client/src/data/constants.tsx +++ b/client/src/data/constants.tsx @@ -4,44 +4,37 @@ import {isMobile as isMobileReactDeviceDetect} from 'react-device-detect'; export const isMobile = isMobileReactDeviceDetect; -const XYZ_SUFFIX = '{z}/{x}/{y}.pbf'; -export const featureURLForTilesetName = (tilesetName: string): string => { - // The feature tile base URL and path can either point locally or the CDN. - // This is selected based on the DATA_SOURCE env variable. - const featureTileBaseURL = process.env.DATA_SOURCE === 'local' ? - process.env.GATSBY_LOCAL_TILES_BASE_URL : - process.env.GATSBY_CDN_TILES_BASE_URL; - - const featureTilePath = process.env.DATA_SOURCE === 'local' ? - process.env.GATSBY_DATA_PIPELINE_SCORE_PATH_LOCAL : - process.env.GATSBY_DATA_PIPELINE_SCORE_PATH; - - return [ - featureTileBaseURL, - featureTilePath, - process.env.GATSBY_MAP_TILES_PATH, - tilesetName, - XYZ_SUFFIX, - ].join('/'); -}; -export const FEATURE_TILE_HIGH_ZOOM_URL = featureURLForTilesetName('high'); -export const FEATURE_TILE_LOW_ZOOM_URL = featureURLForTilesetName('low'); - -// Staging links for testing: -// export const FEATURE_TILE_HIGH_ZOOM_URL = `https://justice40-data.s3.amazonaws.com/data-pipeline-staging/1297/deee14dd93b783c8d366434dc8438a281b5c89df/data/score/tiles/high/${XYZ_SUFFIX}`; -// export const FEATURE_TILE_LOW_ZOOM_URL = `https://justice40-data.s3.amazonaws.com/data-pipeline-staging/1297/deee14dd93b783c8d366434dc8438a281b5c89df/data/score/tiles/low/${XYZ_SUFFIX}`; - - // Performance markers export const PERFORMANCE_MARKER_MAP_IDLE = 'MAP_IDLE'; // ******* PROPERTIES FROM TILE SERVER ************** export type J40Properties = { [key: string]: any }; -// Properties -export const SCORE_PROPERTY_HIGH = 'SM_PFS'; -export const SCORE_PROPERTY_LOW = 'M_SCORE'; + +// ****** SIDE PANEL BACKEND SIGNALS *********** + +// Set the threshold percentile used by most indicators in the side panel +export const DEFAULT_THRESHOLD_PERCENTILE = 90; + +// General Census Track Info export const GEOID_PROPERTY = 'GEOID10'; +export const COUNTY_NAME = 'CF'; +export const STATE_NAME = 'SF'; +export const TOTAL_POPULATION = 'TPF'; + +/** + * The SCORE_BOUNDAY_THRESHOLD will determine if the tract is disadvantaged + * or not. Currently all values are railed to 0 or 1. If the + * SCORE_PROPERTY_HIGH is greater than SCORE_BOUNDARY_THRESHOLD, + * the tract will be considered disadvantaged. + */ +export const SCORE_BOUNDARY_THRESHOLD = 0.6; + +// Determines the X of Y threshold exceeded +export const TOTAL_NUMBER_OF_DISADVANTAGE_INDICATORS = 'TC'; +export const TOTAL_NUMBER_OF_INDICATORS = 'THRHLD'; +export const COUNT_OF_CATEGORIES_DISADV = 'CC'; + export const SIDE_PANEL_STATE = 'UI_EXP'; export const SIDE_PANEL_STATE_VALUES = { NATION: 'Nation', @@ -49,102 +42,142 @@ export const SIDE_PANEL_STATE_VALUES = { ISLAND_AREAS: 'Island Areas', }; -export const THRHLD = 'TERRITORY_THRESHOLD'; - -// Indicator values: -export const ASTHMA_PERCENTILE = 'AF_PFS'; -export const COUNTY_NAME = 'CF'; -export const DIABETES_PERCENTILE = 'DF_PFS'; -export const DIESEL_MATTER_PERCENTILE = 'DSF_PFS'; -export const ENERGY_PERCENTILE = 'EBF_PFS'; -export const HEART_PERCENTILE = 'HDF_PFS'; -export const HIGH_SCHOOL_PROPERTY_PERCENTILE = `HSEF`; -export const HOUSING_BURDEN_PROPERTY_PERCENTILE = 'HBF_PFS'; -export const LEAD_PAINT_PERCENTILE = 'LPF_PFS'; -export const LIFE_PERCENTILE = 'LLEF_PFS'; -export const LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE = 'LIF_PFS'; -export const LOW_MEDIAN_INCOME_PERCENTILE = 'LMI_PFS'; -export const PM25_PERCENTILE = 'PM25F_PFS'; -export const POVERTY_PROPERTY_PERCENTILE = 'P200_PFS'; -export const STATE_NAME = 'SF'; -export const TOTAL_POPULATION = 'TPF'; -export const TRAFFIC_PERCENTILE = 'TF_PFS'; -export const UNEMPLOYMENT_PROPERTY_PERCENTILE = 'UF_PFS'; -export const WASTEWATER_PERCENTILE = 'WF_PFS'; -export const EXP_AGRICULTURE_LOSS_PERCENTILE = 'EALR_PFS'; -export const EXP_BUILDING_LOSS_PERCENTILE = 'EBLR_PFS'; -export const EXP_POPULATION_LOSS_PERCENTILE = 'EPLR_PFS'; -export const MEDIAN_HOME_VALUE_PERCENTILE = 'MHVF_PFS'; -export const POVERTY_BELOW_100_PERCENTILE = 'P100_PFS'; -export const POVERTY_BELOW_200_PERCENTILE = 'P200_PFS'; -export const PROXIMITY_NPL_SITES_PERCENTILE = 'NPL_PFS'; -export const PROXIMITY_RMP_SITES_PERCENTILE = 'RMP_PFS'; -export const PROXIMITY_TSDF_SITES_PERCENTILE = 'TSDF_PFS'; -export const HIGHER_ED_PERCENTILE = 'CA'; - -export const ISLAND_AREAS_UNEMPLOYMENT_LOW_HS_EDU_PERCENTILE_FIELD= 'IAULHSE_PFS'; -export const ISLAND_AREAS_POVERTY_LOW_HS_EDU_PERCENTILE_FIELD= 'IAPLHSE_PFS'; -export const ISLAND_AREAS_LOW_MEDIAN_INCOME_LOW_HS_EDU_PERCENTILE_FIELD= 'IALMILHSE_PFS'; -export const ISLAND_AREAS_LOW_HS_EDU_PERCENTILE_FIELD= 'IALHE_PFS'; -export const ISLAND_AREAS_HS_EDU_PERCENTAGE_FIELD= 'IAHSEF'; - -// Category booleans (disadvantaged or not): +// Climate category export const IS_CLIMATE_FACTOR_DISADVANTAGED_M = 'M_CLT'; -export const IS_ENERGY_FACTOR_DISADVANTAGED_M = 'M_ENY'; -export const IS_TRANSPORT_FACTOR_DISADVANTAGED_M = 'M_TRN'; -export const IS_HOUSING_FACTOR_DISADVANTAGED_M = 'M_HSG'; -export const IS_POLLUTION_FACTOR_DISADVANTAGED_M = 'M_PLN'; -export const IS_WATER_FACTOR_DISADVANTAGED_M = 'M_WTR'; -export const IS_HEALTH_FACTOR_DISADVANTAGED_M = 'M_HLTH'; -export const IS_WORKFORCE_FACTOR_DISADVANTAGED_M = 'M_WKFC'; +export const IS_CLIMATE_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_CLT_EOMI'; -// Total indicators values: -export const TOTAL_NUMBER_OF_DISADVANTAGE_INDICATORS = 'TC'; -export const TOTAL_NUMBER_OF_INDICATORS = 'THRHLD'; +export const EXP_AGRICULTURE_LOSS_PERCENTILE = 'EALR_PFS'; +export const IS_EXCEEDS_THRESH_FOR_EXP_AGR_LOSS = 'EAL_ET'; -// Indicator booleans (disadvangted or not): (GTE = greater than or equal) -export const IS_GTE_90_EXP_POP_LOSS_AND_IS_LOW_INCOME = 'EPLRLI'; -export const IS_GTE_90_EXP_AGR_LOSS_AND_IS_LOW_INCOME = 'EALRLI'; -export const IS_GTE_90_EXP_BLD_LOSS_AND_IS_LOW_INCOME = 'EBLRLI'; -export const IS_GTE_90_PM25_AND_IS_LOW_INCOME = 'PM25LI'; -export const IS_GTE_90_ENERGY_BURDEN_AND_IS_LOW_INCOME = 'EBLI'; -export const IS_GTE_90_DIESEL_PM_AND_IS_LOW_INCOME = 'DPMLI'; -export const IS_GTE_90_TRAFFIC_PROX_AND_IS_LOW_INCOME = 'TPLI'; -export const IS_GTE_90_LEAD_PAINT_AND_MEDIAN_HOME_VAL_AND_IS_LOW_INCOME = 'LPMHVLI'; -export const IS_GTE_90_HOUSE_BURDEN_AND_IS_LOW_INCOME = 'HBLI'; -export const IS_GTE_90_RMP_AND_IS_LOW_INCOME = 'RMPLI'; -export const IS_GTE_90_SUPERFUND_AND_IS_LOW_INCOME = 'SFLI'; -export const IS_GTE_90_HAZARD_WASTE_AND_IS_LOW_INCOME = 'HWLI'; -export const IS_GTE_90_WASTEWATER_AND_IS_LOW_INCOME = 'WDLI'; -export const IS_GTE_90_DIABETES_AND_IS_LOW_INCOME = 'DLI'; -export const IS_GTE_90_ASTHMA_AND_IS_LOW_INCOME = 'ALI'; -export const IS_GTE_90_HEART_DISEASE_AND_IS_LOW_INCOME = 'HDLI'; -export const IS_GTE_90_LOW_LIFE_EXP_AND_IS_LOW_INCOME = 'LLELI'; -export const IS_GTE_90_LINGUISITIC_ISO_AND_IS_LOW_INCOME = 'LILHSE'; -export const IS_GTE_90_BELOW_100_POVERTY_AND_LOW_HIGH_SCHOOL_EDU = 'PLHSE'; -export const IS_GTE_90_LOW_MEDIAN_INCOME_AND_LOW_HIGH_SCHOOL_EDU = 'LMILHSE'; -export const IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU = 'ULHSE'; +export const EXP_BUILDING_LOSS_PERCENTILE = 'EBLR_PFS'; +export const IS_EXCEEDS_THRESH_FOR_EXP_BLD_LOSS = 'EBL_ET'; + +export const EXP_POPULATION_LOSS_PERCENTILE = 'EPLR_PFS'; +export const IS_EXCEEDS_THRESH_FOR_EXP_POP_LOSS = 'EPL_ET'; + +export const IS_EXCEED_BOTH_SOCIO_INDICATORS_M = 'M_EBSI'; + +export const POVERTY_BELOW_200_PERCENTILE = 'P200_PFS'; export const IS_FEDERAL_POVERTY_LEVEL_200 = 'FPL200S'; -export const IS_HIGHER_ED_PERCENTILE = 'CA_LT20'; -export const TOTAL_THRESHOLD_CRITERIA = 'TC'; -export const IS_GTE_90_ISLAND_AREA_UNEMPLOYMENT_AND_IS_LOW_HS_EDU_2009 = 'IAULHSE'; -export const IS_GTE_90_ISLAND_AREA_BELOW_100_POVERTY_AND_IS_LOW_HS_EDU_2009 = 'IAPLHSE'; -export const IS_GTE_90_ISLAND_AREA_LOW_MEDIAN_INCOME_AND_IS_LOW_HS_EDU_2009 = 'IALMILHSE'; -export const ISLAND_AREA_LOW_HS_EDU = 'IALHE'; -export const IS_LOW_HS_EDUCATION_LOW_HIGHER_ED_PRIORITIZED = 'LHE'; -// The name of the layer within the tiles that contains the score -export const SCORE_SOURCE_LAYER = 'blocks'; +export const HIGHER_ED_PERCENTILE = 'CA'; +export const IS_HIGHER_ED_PERCENTILE = 'CA_LT20'; + +export const NON_HIGHER_ED_PERCENTILE = 'NCA'; + + +// Energy category +export const IS_ENERGY_FACTOR_DISADVANTAGED_M = 'M_ENY'; +export const IS_ENERGY_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_ENY_EOMI'; + +export const ENERGY_PERCENTILE = 'EBF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_ENERGY_BURDEN = 'EB_ET'; + +export const PM25_PERCENTILE = 'PM25F_PFS'; +export const IS_EXCEEDS_THRESH_FOR_PM25 = 'PM25_ET'; + + +// Transport category +export const IS_TRANSPORT_FACTOR_DISADVANTAGED_M = 'M_TRN'; +export const IS_TRANSPORT_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_TRN_EOMI'; + +export const DIESEL_MATTER_PERCENTILE = 'DSF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_DIESEL_PM = 'DS_ET'; + +export const TRAFFIC_PERCENTILE = 'TF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_TRAFFIC_PROX = 'TP_ET'; + + +// Housing category +export const IS_HOUSING_FACTOR_DISADVANTAGED_M = 'M_HSG'; +export const IS_HOUSING_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_HSG_EOMI'; + +export const HOUSING_BURDEN_PROPERTY_PERCENTILE = 'HBF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_HOUSE_BURDEN = 'HB_ET'; + +export const LEAD_PAINT_PERCENTILE = 'LPF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_LEAD_PAINT_AND_MEDIAN_HOME_VAL = 'LPP_ET'; + +// export const MEDIAN_HOME_VALUE_PERCENTILE = 'MHVF_PFS'; // No longer showing in UI + + +// Pollution category +export const IS_POLLUTION_FACTOR_DISADVANTAGED_M = 'M_PLN'; +export const IS_POLLUTION_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_PLN_EOMI'; + +export const PROXIMITY_TSDF_SITES_PERCENTILE = 'TSDF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_HAZARD_WASTE = 'TSDF_ET'; + +export const PROXIMITY_NPL_SITES_PERCENTILE = 'NPL_PFS'; +export const IS_EXCEEDS_THRESH_FOR_SUPERFUND = 'NPL_ET'; + +export const PROXIMITY_RMP_SITES_PERCENTILE = 'RMP_PFS'; +export const IS_EXCEEDS_THRESH_FOR_RMP = 'RMP_ET'; + + +// Water category +export const IS_WATER_FACTOR_DISADVANTAGED_M = 'M_WTR'; +export const IS_WATER_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_WTR_EOMI'; + +export const WASTEWATER_PERCENTILE = 'WF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_WASTEWATER = 'WD_ET'; + + +// Health category +export const IS_HEALTH_FACTOR_DISADVANTAGED_M = 'M_HLTH'; +export const IS_HEALTH_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_HLTH_EOMI'; + +export const ASTHMA_PERCENTILE = 'AF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_ASTHMA = 'A_ET'; + +export const DIABETES_PERCENTILE = 'DF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_DIABETES = 'DB_ET'; + +export const HEART_PERCENTILE = 'HDF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_HEART_DISEASE = 'HD_ET'; + +export const LIFE_PERCENTILE = 'LLEF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_LOW_LIFE_EXP = 'LLE_ET'; + + +// Workforce category +export const IS_WORKFORCE_FACTOR_DISADVANTAGED_M = 'M_WKFC'; +export const IS_WORKFORCE_EXCEED_ONE_OR_MORE_INDICATORS_M = 'M_WKFC_EOMI'; + +export const LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE = 'LIF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_LINGUISITIC_ISO = 'LISO_ET'; + +export const LOW_MEDIAN_INCOME_PERCENTILE = 'LMI_PFS'; +export const IS_EXCEEDS_THRESH_FOR_LOW_MEDIAN_INCOME = 'LMI_ET'; +export const ISLAND_AREAS_LOW_MEDIAN_INCOME_LOW_HS_EDU_PERCENTILE_FIELD= 'IALMILHSE_PFS'; +export const IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_LOW_MEDIAN_INCOME = 'IA_LMI_ET'; + +export const UNEMPLOYMENT_PROPERTY_PERCENTILE = 'UF_PFS'; +export const IS_EXCEEDS_THRESH_FOR_UNEMPLOYMENT = 'UN_ET'; +export const ISLAND_AREAS_UNEMPLOYMENT_LOW_HS_EDU_PERCENTILE_FIELD= 'IAULHSE_PFS'; +export const IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_UNEMPLOYMENT = 'IA_UN_ET'; + +export const POVERTY_BELOW_100_PERCENTILE = 'P100_PFS'; +export const IS_EXCEEDS_THRESH_FOR_BELOW_100_POVERTY = 'POV_ET'; +export const ISLAND_AREAS_POVERTY_LOW_HS_EDU_PERCENTILE_FIELD= 'IAPLHSE_PFS'; +export const IS_EXCEEDS_THRESH_FOR_ISLAND_AREA_BELOW_100_POVERTY = 'IA_POV_ET'; + +export const IS_WORKFORCE_EXCEED_BOTH_SOCIO_INDICATORS_M = 'M_WKFC_EBSI'; + +export const HIGH_SCHOOL_PROPERTY_PERCENTILE = `HSEF`; +export const IS_LOW_HS_EDUCATION_LOW_HIGHER_ED_PRIORITIZED = 'LHE'; +export const ISLAND_AREAS_HS_EDU_PERCENTAGE_FIELD= 'IAHSEF'; +export const ISLAND_AREA_LOW_HS_EDU = 'IALHE'; // ********** MAP CONSTANTS *************** - // Source name constants export const BASE_MAP_SOURCE_NAME = 'base-map-source-name'; export const HIGH_ZOOM_SOURCE_NAME = 'high-zoom-source-name'; export const LOW_ZOOM_SOURCE_NAME = 'low-zoom-source-name'; // Layer ID constants +export const SCORE_SOURCE_LAYER = 'blocks'; // The name of the layer within the tiles that contains the score export const BASE_MAP_LAYER_ID = 'base-map-layer-id'; export const HIGH_ZOOM_LAYER_ID = 'high-zoom-layer-id'; export const PRIORITIZED_HIGH_ZOOM_LAYER_ID = 'prioritized-high-zoom-layer-id'; @@ -152,6 +185,10 @@ export const LOW_ZOOM_LAYER_ID = 'low-zoom-layer-id'; export const FEATURE_BORDER_LAYER_ID = 'feature-border-layer-id'; export const SELECTED_FEATURE_BORDER_LAYER_ID = 'selected-feature-border-layer-id'; +// Used in layer filters: +export const SCORE_PROPERTY_LOW = 'M_SCORE'; +export const SCORE_PROPERTY_HIGH = 'SM_PFS'; + // Zoom export const GLOBAL_MIN_ZOOM = 3; export const GLOBAL_MAX_ZOOM = 22; @@ -177,13 +214,6 @@ export const PRIORITIZED_FEATURE_FILL_COLOR = '#768FB3'; export const FEATURE_BORDER_WIDTH = 0.8; export const SELECTED_FEATURE_BORDER_WIDTH = 5.0; -/** - * This threshold will determine if the feature is prioritized - * or not. Currently all values are railed to 0 or 1 so this value - * doesn't really matter. - */ -export const SCORE_BOUNDARY_THRESHOLD = 0.6; - // Bounds - these bounds can be obtained by using the getCurrentMapBoundingBox() function in the map export const GLOBAL_MAX_BOUNDS: LngLatBoundsLike = [ [-180.118306, 5.499550], diff --git a/client/src/data/copy/README.md b/client/src/data/copy/README.md new file mode 100644 index 00000000..96c01a9c --- /dev/null +++ b/client/src/data/copy/README.md @@ -0,0 +1,5 @@ +# How to i18n copy for J40 + +1. Note that description fields can not have line feed or carriage returns or they will render a /n in the en.json file. +2. Use bold, italic function in common.tsx +3. Use and for these data types. \ No newline at end of file diff --git a/client/src/data/copy/about.tsx b/client/src/data/copy/about.tsx index af33202f..2f717f5c 100644 --- a/client/src/data/copy/about.tsx +++ b/client/src/data/copy/about.tsx @@ -1,8 +1,8 @@ +/* eslint-disable max-len */ import React from 'react'; import {defineMessages} from 'react-intl'; import {FormattedMessage} from 'gatsby-plugin-intl'; - -import LinkTypeWrapper from '../../components/LinkTypeWrapper'; +import {italicFn, linkFn} from './common'; export const EXEC_ORDER_LINK = 'https://www.federalregister.gov/documents/2021/02/01/2021-02177/tackling-the-climate-crisis-at-home-and-abroad#:~:text=Sec.%20223.%20Justice40,40-percent%20goal.'; @@ -10,28 +10,28 @@ export const PAGE = defineMessages({ TILE: { id: 'about.page.title.text', defaultMessage: 'About', - description: 'about page title text', + description: 'Navigate to the About page. This is the about page title text', }, HEADING: { - id: 'index.heading.about.us', + id: 'about.page.heading.text', defaultMessage: 'About', - description: 'main heading for about page', + description: 'Navigate to the About page. This is the first heading', }, HEADING_1: { - id: 'index.heading.screentool', + id: 'about.page.heading.1.text', defaultMessage: 'Screening tool', - description: 'heading for about screening tool', + description: 'Navigate to the About page. This is the second heading', }, HEADING1_DESCRIPTION2: { id: 'about.page.sub.header.1.text.2', defaultMessage: 'The current version of the tool is in a public beta form and'+ ' will be updated based on feedback and research.', - description: 'about page sub header text', + description: 'Navigate to the About page. This is first heading description', }, HEADING_2: { - id: 'index.heading.justice40', + id: 'about.page.sub.header.2.text', defaultMessage: 'The Justice40 Initiative', - description: 'heading for about justice 40', + description: 'Navigate to the About page. This is the third heading', }, HEADING2_DESCRIPTION1: { id: 'about.page.sub.header.2.text.1', @@ -43,7 +43,7 @@ export const PAGE = defineMessages({ housing, training and workforce development, the remediation and reduction of legacy pollution, and the development of critical clean water infrastructure. `, - description: 'about page sub header text', + description: 'Navigate to the About page. This is the third heading description', }, }); @@ -51,9 +51,9 @@ export const HEADING_1 = { DESCRIPTION_1: Executive Order 14008 on Tackling the Climate Crisis at Home and Abroad, President Biden directed the Council on Environmental Quality (CEQ) to create a Climate and Economic Justice Screening Tool. The purpose of the tool is to help Federal agencies identify disadvantaged communities that are marginalized, underserved, and overburdened by pollution. The current version of the tool provides socioeconomic, environmental, @@ -61,13 +61,8 @@ export const HEADING_1 = { tool identifies disadvantaged communities through publicly-available, nationally-consistent datasets. `} values={{ - eoLink: , - tacklingItalics: Tackling the Climate Crisis at Home and Abroad, + link1: linkFn(EXEC_ORDER_LINK, false, true), + italictag: italicFn, }} />, }; @@ -79,16 +74,11 @@ export const HEADING_2 = { description={'about page sub header text'} defaultMessage={` Read more about the Justice40 Initiative in President Biden’s - {eoLink} on {tacklingItalics}. + Executive Order 14008 on Tackling the Climate Crisis at Home and Abroad. `} values={{ - eoLink: , - tacklingItalics: Tackling the Climate Crisis at Home and Abroad, + link1: linkFn(EXEC_ORDER_LINK, false, true), + italictag: italicFn, }} />, }; @@ -98,81 +88,81 @@ export const GITHUB_LINK = 'https://github.com/usds/justice40-tool'; export const HOW_TO_GET_STARTED = defineMessages({ TITLE: { - id: 'howToGetStarted.title', + id: 'about.page.howToGetStarted.title', defaultMessage: 'How to get started', - description: 'sub heading of page', + description: 'Navigate to the About page. This is the sub heading of page', }, FEDERAL_PM_HEADING: { - id: 'federal.pm.heading', + id: 'about.page.federal.pm.heading', defaultMessage: 'Federal program managers', - description: 'sub heading of page', + description: 'Navigate to the About page. This is the sub heading of page', }, FEDERAL_PM_INFO: { - id: 'federal.pm.info', + id: 'about.page.federal.pm.info', defaultMessage: ` Download the tool’s current list of communities, explore data that may be useful to your program, and provide feedback on the tool. `, - description: 'sub heading of page', + description: 'Navigate to the About page. This is the sub heading of page', }, FEDERAL_PM_LINK_TEXT: { - id: 'federal.pm.link', + id: 'about.page.federal.pm.link', defaultMessage: 'Methodology & data', - description: 'link text to go to methodology page', + description: 'link text to Navigate to the About page. This is the go to methodology page', }, COMMUNITY_MEMBERS_HEADING: { - id: 'community.members.heading', + id: 'about.page.community.members.heading', defaultMessage: 'Community members', - description: 'sub heading of page', + description: 'Navigate to the About page. This is the sub heading of page', }, COMMUNITY_MEMBERS_INFO: { - id: 'community.members.info', + id: 'about.page.community.members.info', defaultMessage: ` Explore data about communities across the U.S., including your own, and provide feedback on the tool. `, - description: 'sub heading of page', + description: 'Navigate to the About page. This is the sub heading of page', }, COMMUNITY_MEMBERS_LINK_TEXT: { - id: 'community.members.link', + id: 'about.page.community.members.link', defaultMessage: 'Explore the tool', - description: 'link to explore the tool page', + description: 'link to Navigate to the About page. This is the explore the tool page', }, }); export const GET_INVOLVED = defineMessages({ TITLE: { - id: 'getInvolved.title', + id: 'about.page.getInvolved.title', defaultMessage: 'Get involved', - description: 'sub heading of page', + description: 'Navigate to the About page. This is the sub heading of page', }, SEND_FEEDBACK_HEADING: { - id: 'send.feedback.heading', + id: 'about.page.send.feedback.heading', defaultMessage: 'Send feedback', - description: 'sending feedback heading', + description: 'Navigate to the About page. This is the sending feedback heading', }, SEND_FEEDBACK_INFO: { - id: 'send.feedback.info', + id: 'about.page.send.feedback.info', defaultMessage: ` Have ideas about data and information that reflect the experiences and conditions of your community? `, - description: 'sending feedback information', + description: 'Navigate to the About page. This is the sending feedback information', }, JOIN_OSC_HEADING: { - id: 'join.opensource.heading', + id: 'about.page.join.opensource.heading', defaultMessage: 'Join the open source community', - description: 'join the community heading', + description: 'Navigate to the About page. This is the join the community heading', }, JOIN_OSC_INFO: { - id: 'join.open.source.info', + id: 'about.page.join.open.source.info', defaultMessage: ` The tool’s code is open source, which means it is available for the public to view and contribute to it. `, - description: 'info on joining open source community', + description: 'info on Navigate to the About page. This is the joining open source community', }, JOIN_OSC_LINK_TEXT: { - id: 'join.open.source.link', + id: 'about.page.join.open.source.link', defaultMessage: 'Check it out on GitHub', - description: 'link to github repository', + description: 'Navigate to the About page. This is the link to github repository', }, }); diff --git a/client/src/data/copy/common.tsx b/client/src/data/copy/common.tsx index 48d3fa2d..d237c63b 100644 --- a/client/src/data/copy/common.tsx +++ b/client/src/data/copy/common.tsx @@ -1,120 +1,162 @@ +/* eslint-disable max-len */ +/* eslint-disable react/display-name */ +import React from 'react'; +import {FormattedMessage} from 'gatsby-plugin-intl'; import {defineMessages} from 'react-intl'; +import LinkTypeWrapper from '../../components/LinkTypeWrapper'; + +/* + * i18n curried functions from react-intl (aka format.js) + * using ver3 of the docs as this is what gatsby-plugin-intl uses: + * https://formatjs.io/docs/react-intl/upgrade-guide-3x#enhanced-formattedmessage--formatmessage-rich-text-formatting + * + * */ +export const italicFn = (str:string) => {str}; +export const boldFn = (str:string) => {str}; +export const simpleLink = (href:string) => (str:string) => {str}; +// eslint-disable-next-line max-len +export const linkFn = (to:string, isInternal:boolean, isOpenNewTab:boolean) => (str:string) => ; + + +export const FEEDBACK_EMAIL = 'Screeningtool-Support@omb.eop.gov'; // Beta Banner export const BETA_BANNER = defineMessages({ TITLE: { - id: 'banner.beta.title', + id: 'common.pages.banner.beta.title', defaultMessage: 'This is a beta site.', - description: 'the main title of the beta banner', + description: 'Navigate to the about page. This is the main title of the beta banner', }, INFO: { - id: 'banner.beta.info', + id: 'common.pages.banner.beta.info', defaultMessage: `It is an early, in-progress version of the tool with limited datasets that will be regularly updated.`, - description: 'the main info of the beta banner', + description: 'Navigate to the about page. This is the main info of the beta banner', }, }); + +// Alerts +// Expiration month is zero-based: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth +export const ALERTS = { + CENSUS_TRACT: defineMessages({ + TITLE: { + id: 'common.pages.alerts.census.tract.title', + defaultMessage: 'Improvements to the map on the Explore the tool page', + description: 'Navigate to any page. This the title of the alert that informs the user that new census tract information is available', + }, + }), + EXPIRATION_DATE: new Date(2022, 3, 15), // Set expiration for Apr 15th 2022. + CENSUS_TRACT_DESCRIPTION: send feedback.`} + description={`Navigate to any page. This the title of the alert that informs the user that new census tract information is available`} + values={{ + link1: linkFn(`mailto:${FEEDBACK_EMAIL}`, false, true), + }} + />, +}; + // Header export const HEADER = defineMessages({ TITLE_LINE_1: { - id: 'header.title.line1', + id: 'common.pages.header.title.line1', defaultMessage: `Climate and Economic Justice`, - description: 'Title in nav header line 1 of 2', + description: 'Navigate to the about page. This is Title in nav header line 1 of 2', }, TITLE_LINE_2: { - id: 'header.title.line2', + id: 'common.pages.header.title.line2', defaultMessage: `Screening Tool`, - description: 'Title in nav header line 2 of 2', + description: 'Navigate to the about page. This is Title in nav header line 2 of 2', }, ABOUT: { - id: 'header.about', + id: 'common.pages.header.about', defaultMessage: 'About', - description: 'Header navigate item to the about page', + description: 'Navigate to the about page. This is Header navigate item to the about page', }, EXPLORE: { - id: 'header.explore', + id: 'common.pages.header.explore', defaultMessage: 'Explore the tool', - description: 'Header navigate item to the Explore the tool page', + description: 'Navigate to the about page. This is Header navigate item to the Explore the tool page', }, METHODOLOGY: { - id: 'header.methodology', + id: 'common.pages.header.methodology', defaultMessage: 'Methodology & data', - description: 'Header navigate item to the Methodology page', + description: 'Navigate to the about page. This is Header navigate item to the Methodology page', }, CONTACT: { - id: 'header.contact', + id: 'common.pages.header.contact', defaultMessage: 'Contact', - description: 'Header navigate item to the Contact page', + description: 'Navigate to the about page. This is Header navigate item to the Contact page', }, }); // Footer export const FOOTER = defineMessages({ ARIA_LABEL: { - id: 'footer.arialabel', + id: 'common.pages.footer.arialabel', defaultMessage: 'Footer navigation', - description: 'aria-label text for whole footer', + description: 'Navigate to the about page. This is aria-label text for whole footer', }, TITLE: { - id: 'footer.logo.title', + id: 'common.pages.footer.logo.title', defaultMessage: 'Council on Environmental Quality', - description: 'Footer under logo', + description: 'Navigate to the about page. This is Footer under logo', }, MORE_INFO: { - id: 'footer.moreinfoheader', + id: 'common.pages.footer.moreinfoheader', defaultMessage: 'More information', - description: 'Footer column header', + description: 'Navigate to the about page. This is Footer column header', }, WHITEHOUSE: { - id: 'footer.whitehouse.text', + id: 'common.pages.footer.whitehouse.text', defaultMessage: 'Whitehouse.gov', - description: 'Footer Whitehouse.gov link text', + description: 'Navigate to the about page. This is Footer Whitehouse.gov link text', }, WHITEHOUSE_LINK: { - id: 'footer.whitehouse.link', + id: 'common.pages.footer.whitehouse.link', defaultMessage: 'https://www.whitehouse.gov/', - description: 'Footer Whitehouse.gov link text', + description: 'Navigate to the about page. This is Footer Whitehouse.gov link text', }, FOIA: { - id: 'footer.foia.text', + id: 'common.pages.footer.foia.text', defaultMessage: 'Freedom of Information Act (FOIA)', - description: 'Footer FOIA link text', + description: 'Navigate to the about page. This is Footer FOIA link text', }, PRIVACY: { - id: 'footer.privacy.text', + id: 'common.pages.footer.privacy.text', defaultMessage: 'Privacy Policy', - description: 'Footer privacy policy link text', + description: 'Navigate to the about page. This is Footer privacy policy link text', }, PRIVACY_LINK: { - id: 'footer.privacy.link', + id: 'common.pages.footer.privacy.link', defaultMessage: 'https://www.whitehouse.gov/privacy/', - description: 'Footer privacy policy link text', + description: 'Navigate to the about page. This is Footer privacy policy link text', }, LOGO_ALT: { - id: 'footer.whitehouselogoalt', + id: 'common.pages.footer.whitehouselogoalt', defaultMessage: 'Whitehouse logo', - description: 'Footer Whitehouse logo alt text', + description: 'Navigate to the about page. This is Footer Whitehouse logo alt text', }, QUESTIONS: { - id: 'footer.questionsheader', + id: 'common.pages.footer.questionsheader', defaultMessage: 'Have a question about government services?', - description: 'Footer column header', + description: 'Navigate to the about page. This is Footer column header', }, FIND_CONTACT: { - id: 'footer.findcontact', + id: 'common.pages.footer.findcontact', defaultMessage: 'Find a contact at USA.gov', - description: 'Footer find contact link text', + description: 'Navigate to the about page. This is Footer find contact link text', }, FIND_CONTACT_LINK: { - id: 'footer.findcontact.link', + id: 'common.pages.footer.findcontact.link', defaultMessage: 'https://www.usa.gov/', - description: 'Footer find contact link text', + description: 'Navigate to the about page. This is Footer find contact link text', }, CONTACT: { - id: 'footer.contactheader', + id: 'common.pages.footer.contactheader', defaultMessage: 'Contact', - description: 'Footer column header', + description: 'Navigate to the about page. This is Footer column header', }, }); @@ -126,4 +168,11 @@ export const FOOTER_CEQ_ADDRESS = { } ; - +export const CONSOLE_ERROR = defineMessages({ + STAGE_URL: { + id: 'common.pages.console.error.stage.url', + defaultMessage: ` + Please check stage_hash value. It must be a 4 digit decimal value / 40 digit hexadecimal value`, + description: 'Navigate to the about page. This is console error staging URL', + }, +}); diff --git a/client/src/data/copy/contact.tsx b/client/src/data/copy/contact.tsx index 751ae2f9..798b54de 100644 --- a/client/src/data/copy/contact.tsx +++ b/client/src/data/copy/contact.tsx @@ -1,33 +1,34 @@ +/* eslint-disable max-len */ import React from 'react'; import {defineMessages} from 'react-intl'; -import {FormattedMessage, Link} from 'gatsby-plugin-intl'; -import LinkTypeWrapper from '../../components/LinkTypeWrapper'; +import {FormattedMessage} from 'gatsby-plugin-intl'; +import * as COMMON_COPY from './common'; export const PAGE_INTRO = defineMessages({ PAGE_TILE: { id: 'contact.page.title.text', defaultMessage: 'Contact', - description: 'contact page title text', + description: 'Navigate to the contact page, this is the contact page title text', }, PAGE_HEADING: { id: 'contact.page.header.text', defaultMessage: 'Contact', - description: 'contact page header text', + description: 'Navigate to the contact page, this is the contact page header text', }, PAGE_SUB_HEADING: { id: 'contact.page.sub.header.text', defaultMessage: 'Email us', - description: 'contact page sub header text', + description: 'Navigate to the contact page, this is the contact page sub header text', }, PAGE_DESCRIPTION: { id: 'contact.page.sub.header.text', defaultMessage: 'Email us', - description: 'contact page sub header text', + description: 'Navigate to the contact page, this is the contact page sub header text', }, SURVEY_TEXT: { - id: 'fab.survey.text', + id: 'contact.page.fab.survey.text', defaultMessage: `Help improve the site & data`, - description: 'text for floating action button', + description: 'Navigate to the contact page, this is the text for floating action button', }, }); @@ -35,18 +36,17 @@ export const CENSUS_TRACT_FEEDBACK = { TITLE: , PARAGRAPH1: Explore the tool page or use the email address provided above. Please include the census tract ID, county, and state or territory information, in addition to your feedback. `} - description={'census tract feedback section'} + description={'Navigate to the contact page, this is the census tract feedback section'} values={{ - exploreLink: Explore the tool, + link1: COMMON_COPY.linkFn('/cejst', true, false), }} />, PARAGRAPH2: , PARAGRAPH3: survey. `} - description={'census tract feedback section'} + description={'Navigate to the contact page, this is the census tract feedback section'} values={{ - improvementSurvey: , + link1: COMMON_COPY.linkFn('https://www.surveymonkey.com/r/cejst-survey', false, true), }} />, }; @@ -79,5 +74,3 @@ export const CONTACT_VIA_EMAIL = { DESCRIPTION: 'Contact page body text', DEFAULT_MESSAGE: `For general feedback, email {general_email_address}.`, }; - -export const FEEDBACK_EMAIL = 'Screeningtool-Support@omb.eop.gov'; diff --git a/client/src/data/copy/explore.tsx b/client/src/data/copy/explore.tsx index 0ccd9930..6b5a9c89 100644 --- a/client/src/data/copy/explore.tsx +++ b/client/src/data/copy/explore.tsx @@ -1,54 +1,54 @@ +/* eslint-disable max-len */ import React from 'react'; import {defineMessages} from 'react-intl'; -import {FormattedMessage, Link} from 'gatsby-plugin-intl'; -import LinkTypeWrapper from '../../components/LinkTypeWrapper'; +import {FormattedDate, FormattedMessage, FormattedNumber} from 'gatsby-plugin-intl'; -import * as CONTACT_COPY from './contact'; +import * as COMMON_COPY from './common'; import * as METHODOLOGY_COPY from './methodology'; +import {simpleLink, linkFn} from './common'; export const PAGE_INTRO = defineMessages({ PAGE_TILE: { - id: 'exploreTool.title.text', + id: 'explore.tool.page.title.text', defaultMessage: 'Explore the tool', - description: 'explore the tool title text', + description: 'On the explore the tool page, the title of the page', }, PAGE_HEADING: { - id: 'exploreTool.heading.text', + id: 'explore.tool.page.heading.text', defaultMessage: 'Explore the tool', - description: 'explore the tool heading text', + description: 'On the explore the tool page, the heading of the page', }, }); export const PAGE_DESCRIPTION = Methodology & data page. `} - description={'page description'} + description={'On the explore the tool page, the description of the page'} values={{ - methodologyLink: Methodology & data, - methodologyLinkEs: Metodología y datos, + link1: linkFn('/methodology', true, false), }} />; export const LEGEND = defineMessages({ PRIORITY_LABEL: { - id: 'legend.info.priority.label', + id: 'explore.tool.page.label.text', defaultMessage: 'Disadvantaged community', - description: 'the label of the prioritized community legend', + description: 'On the explore the tool page, the label of the legend', }, PRIORITY_DESCRIPT: { - id: 'legend.info.threshold.label', + id: 'explore.tool.page.legend.description.text', defaultMessage: ` Communities identified as disadvantaged by the tool are those that are marginalized, underserved, and overburdened by pollution. These communities are at or above the thresholds in one or more of eight categories of criteria. `, - description: 'the label of the threshold community legend', + description: 'On the explore the tool page, the description of the legend', }, }); @@ -56,99 +56,101 @@ export const LEGEND = defineMessages({ // Map export const MAP = defineMessages({ ZOOM_WARNING: { - id: 'map.zoom.warning', + id: 'explore.tool.page.map.zoom.warning', defaultMessage: 'Zoom in to the state or regional level to see prioritized communities on the map.', - description: 'zoom warning on map', + description: 'On the explore the tool page, on the map, the zoom warning on map', }, SEARCH_PLACEHOLDER: { - id: 'map.search.placeholder.text', + id: 'explore.tool.page.map.search.placeholder.text', defaultMessage: 'Enter a city, state or ZIP', - description: 'placeholder text for search', + description: 'On the explore the tool page, on the map, the placeholder text for search', }, SEARCH_RESULTS_EMPTY_MESSAGE: { - id: 'map.search.results.empty.text', + id: 'explore.tool.page.map.search.results.empty.text', defaultMessage: 'No location found. Please try again.', - description: 'text displaying message for no search results found', + description: 'On the explore the tool page, on the map, the text displaying message for no search results found', }, LOWER48_SHORT: { - id: 'map.territoryFocus.lower48.short', + id: 'explore.tool.page.map.territoryFocus.lower48.short', defaultMessage: '48', - description: 'The abbreviated name indicating the bounds of the Lower 48 states', + description: `On the explore the tool page, on the map, the abbreviated name indicating the bounds of + the Lower 48 states + `, }, LOWER48_LONG: { - id: 'map.territoryFocus.lower48.long', + id: 'explore.tool.page.map.territoryFocus.lower48.long', defaultMessage: 'Lower 48', - description: 'The longer name indicating the bounds of the Lower 48 states', + description: `On the explore the tool page, on the map, the longer name indicating the bounds of the Lower 48 states`, }, ALASKA_SHORT: { - id: 'map.territoryFocus.alaska.short', + id: 'explore.tool.page.map.territoryFocus.alaska.short', defaultMessage: 'AK', - description: 'The abbreviated indicating the bounds of Alaska', + description: 'On the explore the tool page, on the map, the abbreviated indicating the bounds of Alaska', }, ALASKA_LONG: { - id: 'map.territoryFocus.alaska.long', + id: 'explore.tool.page.map.territoryFocus.alaska.long', defaultMessage: 'Alaska', - description: 'The full name indicating the bounds of Alaska', + description: 'On the explore the tool page, on the map, the full name indicating the bounds of Alaska', }, HAWAII_SHORT: { - id: 'map.territoryFocus.hawaii.short', + id: 'explore.tool.page.map.territoryFocus.hawaii.short', defaultMessage: 'HI', - description: 'The abbreviated name indicating the bounds of Hawaii', + description: 'On the explore the tool page, on the map, the abbreviated name indicating the bounds of Hawaii', }, HAWAII_LONG: { - id: 'map.territoryFocus.hawaii.long', + id: 'explore.tool.page.map.territoryFocus.hawaii.long', defaultMessage: 'Hawaii', - description: 'The longer name indicating the bounds of Hawaii', + description: 'On the explore the tool page, on the map, the longer name indicating the bounds of Hawaii', }, PR_SHORT: { - id: 'map.territoryFocus.puerto_rico.short', + id: 'explore.tool.page.map.territoryFocus.puerto_rico.short', defaultMessage: 'PR', - description: 'The abbreviated name indicating the bounds of Puerto Rico', + description: 'On the explore the tool page, on the map, the abbreviated name indicating the bounds of Puerto Rico', }, PR_LONG: { - id: 'map.territoryFocus.puerto_rico.long', + id: 'explore.tool.page.map.territoryFocus.puerto_rico.long', defaultMessage: 'Puerto Rico', - description: 'The full name indicating the bounds of Puerto Rico', + description: 'On the explore the tool page, on the map, the full name indicating the bounds of Puerto Rico', }, GU_SHORT: { - id: 'map.territoryFocus.guam.short', + id: 'explore.tool.page.map.territoryFocus.guam.short', defaultMessage: 'GU', - description: 'The abbreviated name indicating the bounds of Guam', + description: 'On the explore the tool page, on the map, the abbreviated name indicating the bounds of Guam', }, GU_LONG: { - id: 'map.territoryFocus.guam.long', + id: 'explore.tool.page.map.territoryFocus.guam.long', defaultMessage: 'Guam', - description: 'The full name indicating the bounds of Guam', + description: 'On the explore the tool page, on the map, the full name indicating the bounds of Guam', }, AS_SHORT: { - id: 'map.territoryFocus.american.samoa.short', + id: 'explore.tool.page.map.territoryFocus.american.samoa.short', defaultMessage: 'AS', - description: 'The abbreviated name indicating the bounds of American Somoa', + description: `On the explore the tool page, on the map, the abbreviated name indicating the bounds of American Somoa`, }, AS_LONG: { - id: 'map.territoryFocus.american.samoa.long', + id: 'explore.tool.page.map.territoryFocus.american.samoa.long', defaultMessage: 'American Samoa', - description: 'The full name indicating the bounds of American Somoa', + description: 'On the explore the tool page, on the map, the full name indicating the bounds of American Somoa', }, MP_SHORT: { - id: 'map.territoryFocus.commonwealth.nmp.short', + id: 'explore.tool.page.map.territoryFocus.commonwealth.nmp.short', defaultMessage: 'MP', - description: 'The abbreviated name indicating the bounds of Commonwealth of Northern Mariana Islands', + description: `On the explore the tool page, on the map, the abbreviated name indicating the bounds of Commonwealth of Northern Mariana Islands`, }, MP_LONG: { - id: 'map.territoryFocus.commonwealth.nmp.long', + id: 'explore.tool.page.map.territoryFocus.commonwealth.nmp.long', defaultMessage: 'Commonwealth of Northern Mariana Islands', - description: 'The full name indicating the bounds of Commonwealth of Northern Mariana Islands', + description: `On the explore the tool page, on the map, the full name indicating the bounds of Commonwealth of Northern Mariana Islands`, }, VI_SHORT: { - id: 'map.territoryFocus.us.virgin.islands.short', + id: 'explore.tool.page.map.territoryFocus.us.virgin.islands.short', defaultMessage: 'VI', - description: 'The abbreviated name indicating the bounds of US Virgin Islands', + description: `On the explore the tool page, on the map, the abbreviated name indicating the bounds of US Virgin Islands`, }, VI_LONG: { - id: 'map.territoryFocus.us.virgin.islands.long', + id: 'explore.tool.page.map.territoryFocus.us.virgin.islands.long', defaultMessage: 'US Virgin Islands', - description: 'The full name indicating the bounds of US Virgin Islands', + description: 'On the explore the tool page, on the map, the full name indicating the bounds of US Virgin Islands', }, }); @@ -156,508 +158,661 @@ export const MAP = defineMessages({ // Side Panel copy export const SIDE_PANEL_INITIAL_STATE = defineMessages({ TITLE: { - id: 'mapIntro.mapIntroHeader', - defaultMessage: 'Zoom and select a census tract to view data', + id: 'explore.tool.page.side.panel.info.title', + defaultMessage: 'Things to know', description: 'introductory text of ways to use the map', }, - DID_YOU_KNOW: { - id: 'mapIntro.didYouKnow', - defaultMessage: ' Did you know?', - description: 'text prompting a cite paragraph', - }, - CBG_DEFINITION: { - id: 'mapIntro.censusBlockGroupDefinition', + PARA1: { + id: 'explore.tool.page.side.panel.info.para1', defaultMessage: ` - A census tract is generally between 1,200 to 8,000 people, with an average size of 4,000 people. - Census tracts are small, relatively permanent subdivisions of a county defined by the - U.S. Census Bureau and usually cover a contiguous area. The census tract level currently represents the - smallest geographical unit for which publicly-available and nationally-consistent datasets can - be consistently displayed on the tool. + This tool identifies communities that are marginalized, underserved, and overburdened by pollution. These communities are located in census tracts that are at or above the thresholds in one or more of eight categories of criteria. `, - description: 'cites the definition and helpful information about census groups', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the first paragraph of this side panel`, + }, + PARA2: { + id: 'explore.tool.page.side.panel.info.para2', + defaultMessage: ` + The tool uses census tracts that represent about 4,000 people, which is the smallest unit of geography for which consistent data can be displayed on the tool. + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the second paragraph of this side panel`, + }, + PARA3: { + id: 'explore.tool.page.side.panel.info.para3', + defaultMessage: ` + The tool ranks each census tract using percentiles that show how much burden each tract experiences relative to all other tracts, for each criteria. + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the third paragraph of this side panel`, + }, + PARA4: { + id: 'explore.tool.page.side.panel.info.para4', + defaultMessage: ` + Percentages are used for certain variables, i.e. those relating to high school achievement rate and to the share of individuals not currently enrolled in higher education. + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the forth paragraph of this side panel`, + }, + ALT_TEXT_ICON1: { + id: 'explore.tool.page.side.panel.info.alt.text.icon1', + defaultMessage: ` + An icon that has depicts pieces of a block selected mimicing the census block census tracts + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the first icon in this side panel`, + }, + ALT_TEXT_ICON2: { + id: 'explore.tool.page.side.panel.info.alt.text.icon2', + defaultMessage: ` + An icon that a bell curve or gaussian distribution + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the second icon in this side panel`, + }, + ALT_TEXT_ICON3: { + id: 'explore.tool.page.side.panel.info.alt.text.icon3', + defaultMessage: ` + An icon that depicts a part of pie chart being removed + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the third icon in this side panel`, + }, + ALT_TEXT_ICON4: { + id: 'explore.tool.page.side.panel.info.alt.text.icon4', + defaultMessage: ` + An icon that has an up arrow and a down arrow + `, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the forth icon in this side panel`, }, }); +export const SIDE_PANEL_INITIAL_STATE_PARA5 = ; + export const SIDE_PANEL_VERION = { TITLE: , }} />, }; export const SIDE_PANEL_CBG_INFO = defineMessages({ CENSUS_BLOCK_GROUP: { - id: 'areaDetail.geographicInfo.censusBlockGroup', + id: 'explore.tool.page.side.panel.geographicInfo.censusBlockGroup', defaultMessage: 'Census tract:', - description: 'the census tract id number of the feature selected', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the census tract id number of the feature selected`, }, COUNTY: { - id: 'areaDetail.geographicInfo.county', + id: 'explore.tool.page.side.panel.geographicInfo.county', defaultMessage: 'County:', - description: 'the county of the feature selected', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the county of the feature selected`, }, STATE: { - id: 'areaDetail.geographicInfo.state', + id: 'explore.tool.page.side.panel.geographicInfo.state', defaultMessage: 'State: ', - description: 'the state of the feature selected', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the state of the feature selected`, }, TERRITORY: { - id: 'areaDetail.geographicInfo.territory', + id: 'explore.tool.page.side.panel.geographicInfo.territory', defaultMessage: 'Territory: ', - description: 'the territory of the feature selected', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the territory of the feature selected`, }, POPULATION: { - id: 'areaDetail.geographicInfo.population', + id: 'explore.tool.page.side.panel.geographicInfo.population', defaultMessage: 'Population:', - description: 'the population of the feature selected', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the population of the feature selected`, }, }); export const COMMUNITY = { OF_FOCUS: , NOT_OF_FOCUS: , IS_FOCUS: , SEND_FEEDBACK: { TITLE: , }, }; +export const numberOfCategoriesExceeded = (categoryCount:number) => , + }} +/>; + +export const numberOfThresholdsExceeded = (thresholds:number) => , + }} +/>; + export const SEND_FEEDBACK = defineMessages({ EMAIL_BODY: { - id: 'areaDetail.categorization.send.feedback.email.body', - // eslint-disable-next-line max-len + id: 'explore.tool.page.side.panel.send.feedback.email.body', defaultMessage: `Please provide feedback about this census tract, including about the datasets, the data categories provided for this census tract, the communities who live in this census tract, and anything else relevant that CEQ should know about this census tract. `, - description: 'link to send feedback', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show link to send feedback +`, }, }); export const SIDE_PANEL_CATEGORY = defineMessages({ INDICATOR: { - id: 'areaDetail.category.header.indicator', + id: 'explore.tool.page.side.panel.category.header.indicator', defaultMessage: 'Indicator', - description: 'header for each category', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show header for each category +`, }, PERCENTILE: { - id: 'areaDetail.category.header.percentile', + id: 'explore.tool.page.side.panel.category.header.percentile', defaultMessage: 'Percentile (0-100)', - description: 'header for each category', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show header for each category +`, }, CLIMATE: { - id: 'areaDetail.indicator.title.climate', + id: 'explore.tool.page.side.panel.indicator.title.climate', defaultMessage: 'Climate change', - description: 'Climate change title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Climate change title +`, }, CLEAN_ENERGY: { - id: 'areaDetail.indicator.title.clean.energy', + id: 'explore.tool.page.side.panel.indicator.title.clean.energy', defaultMessage: 'Clean energy and energy efficiency', - description: 'Clean, efficient energy title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Clean, efficient energy title +`, }, CLEAN_TRANSPORT: { - id: 'areaDetail.indicator.title.clean.transport', - defaultMessage: 'Clean transportation', - description: 'Clean transportation title', + id: 'explore.tool.page.side.panel.indicator.title.clean.transport', + defaultMessage: 'Clean transit', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Clean transportation title +`, }, SUSTAIN_HOUSE: { - id: 'areaDetail.indicator.title.sustain.house', + id: 'explore.tool.page.side.panel.indicator.title.sustain.house', defaultMessage: 'Sustainable housing', - description: 'Sustainable housing title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Sustainable housing title +`, }, LEG_POLLUTE: { - id: 'areaDetail.indicator.title.legacy.pollution', + id: 'explore.tool.page.side.panel.indicator.title.legacy.pollution', defaultMessage: 'Legacy pollution', - description: 'Legacy pollution title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Legacy pollution title +`, }, CLEAN_WATER: { - id: 'areaDetail.indicator.title.clean.water', + id: 'explore.tool.page.side.panel.indicator.title.clean.water', defaultMessage: 'Clean water and waste infrastructure', - description: 'Clean water and waste title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Clean water and waste title +`, }, HEALTH_BURDEN: { - id: 'areaDetail.indicator.title.health.burden', + id: 'explore.tool.page.side.panel.indicator.title.health.burden', defaultMessage: 'Health burdens', - description: 'Health burdens title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Health burdens title +`, }, WORK_DEV: { - id: 'areaDetail.indicator.title.work.dev', + id: 'explore.tool.page.side.panel.indicator.title.work.dev', defaultMessage: 'Workforce development', - description: 'Workforce development title', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Workforce development title +`, }, }); export const SIDE_PANEL_INDICATORS = defineMessages({ EXP_AG_LOSS: { - id: 'areaDetail.indicator.exp.ag.loss', + id: 'explore.tool.page.side.panel.indicator.exp.ag.loss', defaultMessage: 'Expected agriculture loss rate', - description: 'agriculture loss rate', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show agriculture loss rate +`, }, EXP_BLD_LOSS: { - id: 'areaDetail.indicator.exp.bld.loss', + id: 'explore.tool.page.side.panel.indicator.exp.bld.loss', defaultMessage: 'Expected building loss rate', - description: 'building loss rate', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show building loss rate +`, }, EXP_POP_LOSS: { - id: 'areaDetail.indicator.exp.pop.loss', + id: 'explore.tool.page.side.panel.indicator.exp.pop.loss', defaultMessage: 'Expected population loss rate', - description: 'population loss rate', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show population loss rate +`, }, LOW_INCOME: { - id: 'areaDetail.indicator.low.income', + id: 'explore.tool.page.side.panel.indicator.low.income', defaultMessage: 'Low income', - description: 'low income', - }, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show low income`}, HIGH_ED: { - id: 'areaDetail.indicator.high.ed', - defaultMessage: 'Higher ed enrollment rate', - description: 'Higher ed degree achievement rate', + id: 'explore.tool.page.side.panel.indicator.high.ed', + defaultMessage: 'Higher education non-enrollement', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Higher ed degree achievement rate +`, }, ENERGY_BURDEN: { - id: 'areaDetail.indicator.energyBurden', + id: 'explore.tool.page.side.panel.indicator.energyBurden', defaultMessage: 'Energy burden', - description: 'Average annual energy cost ($) divided by household income', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Energy burden`, }, PM_2_5: { - id: 'areaDetail.indicator.pm25', + id: 'explore.tool.page.side.panel.indicator.pm25', defaultMessage: 'PM2.5 in the air', - description: 'Fine inhalable particles, with diameters that are generally 2.5 micrometers and smaller', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show PM2.5 in the air`, }, DIESEL_PARTICULATE_MATTER: { - id: 'areaDetail.indicator.dieselPartMatter', + id: 'explore.tool.page.side.panel.indicator.dieselPartMatter', defaultMessage: 'Diesel particulate matter exposure', - description: 'Diesel particulate matter level in air', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Diesel particulate matter exposure`, }, TRAFFIC_VOLUME: { - id: 'areaDetail.indicator.trafficVolume', + id: 'explore.tool.page.side.panel.indicator.trafficVolume', defaultMessage: 'Traffic proximity and volume', - description: 'Count of vehicles (average annual daily traffic) at major roads within 500 meters,' + - ' divided by distance in meters', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Traffic proximity and volume`, }, LEAD_PAINT: { - id: 'areaDetail.indicator.leadPaint', + id: 'explore.tool.page.side.panel.indicator.leadPaint', defaultMessage: 'Lead paint', - description: 'Housing units built pre-1960, used as an indicator of potential'+ - ' lead paint exposure in homes', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Lead paint`, }, MED_HOME_VAL: { - id: 'areaDetail.indicator.med.home.val', + id: 'explore.tool.page.side.panel.indicator.med.home.val', defaultMessage: 'Median home value', - description: 'Median home value of owner-occupied housing units in the area.', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Housing cost burden`, }, HOUSE_BURDEN: { - id: 'areaDetail.indicator.houseBurden', + id: 'explore.tool.page.side.panel.indicator.houseBurden', defaultMessage: 'Housing cost burden', - description: 'People ages 18 and up who report having been told by a doctor,' + - ' nurse, or other health professionals that they have diabetes other than diabetes during pregnancy', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Housing cost burden`, }, PROX_HAZ: { - id: 'areaDetail.indicator.prox.haz', + id: 'explore.tool.page.side.panel.indicator.prox.haz', defaultMessage: 'Proximity to hazardous waste facilities', - description: 'Count of hazardous waste facilities ', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Proximity to hazardous waste facilities`, }, PROX_NPL: { - id: 'areaDetail.indicator.prox.npl', - defaultMessage: 'Proximity to NPL sites', - description: 'Count of proposed or listed NPL ', + id: 'explore.tool.page.side.panel.indicator.prox.npl', + defaultMessage: 'Proximity to National Priorities List (NPL) sites', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Count of proposed or listed NPL `, }, PROX_RMP: { - id: 'areaDetail.indicator.prox.rmp', - defaultMessage: 'Proximity to RMP facilities', - description: 'Count of proposed or listed RMP', + id: 'explore.tool.page.side.panel.indicator.prox.rmp', + defaultMessage: 'Proximity to Risk Management Plan (RMP) facilities', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Count of proposed or listed RMP`, }, WASTE_WATER: { - id: 'areaDetail.indicator.wasteWater', + id: 'explore.tool.page.side.panel.indicator.wasteWater', defaultMessage: 'Wastewater discharge', - description: 'Toxic concentrations at stream segments within 500 meters divided by distance in' + - ' kilometers', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Wastewater discharge`, }, ASTHMA: { - id: 'areaDetail.indicator.asthma', + id: 'explore.tool.page.side.panel.indicator.asthma', defaultMessage: 'Asthma', - description: 'have asthma or been diagnosed by a doctor to have asthma', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Asthma`, }, DIABETES: { - id: 'areaDetail.indicator.diabetes', + id: 'explore.tool.page.side.panel.indicator.diabetes', defaultMessage: 'Diabetes', - description: 'diabetes from dr or nurse', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Diabetes`, }, HEART_DISEASE: { - id: 'areaDetail.indicator.heartDisease', + id: 'explore.tool.page.side.panel.indicator.heartDisease', defaultMessage: 'Heart disease', - description: 'People ages 18 and up who report ever having been told by a' + - 'doctor, nurse, or other health professionals that they had angina or coronary heart disease', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Heart disease`, }, LIFE_EXPECT: { - id: 'areaDetail.indicator.lifeExpect', + id: 'explore.tool.page.side.panel.indicator.lifeExpect', defaultMessage: 'Low life expectancy', - description: 'Estimated years of life expectancy', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Low life expectancy`, }, LOW_MED_INC: { - id: 'areaDetail.indicator.low.med.income', + id: 'explore.tool.page.side.panel.indicator.low.med.income', defaultMessage: 'Low median income', - description: 'Low median income', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Low median income`, }, LING_ISO: { - id: 'areaDetail.indicator.ling.iso', + id: 'explore.tool.page.side.panel.indicator.ling.iso', defaultMessage: 'Linguistic isolation', - description: 'Linguistic isolation', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Linguistic isolation`, }, UNEMPLOY: { - id: 'areaDetail.indicator.unemploy', + id: 'explore.tool.page.side.panel.indicator.unemploy', defaultMessage: 'Unemployment', - description: 'Unemployment', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Unemployment`, }, POVERTY: { - id: 'areaDetail.indicator.poverty', + id: 'explore.tool.page.side.panel.indicator.poverty', defaultMessage: 'Poverty', - description: 'Unemployment', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Unemployment`, }, HIGH_SCL: { - id: 'areaDetail.indicator.high.school', - defaultMessage: 'High school degree attainment rate', - description: 'High school degree achievement rate', + id: 'explore.tool.page.side.panel.indicator.high.school', + defaultMessage: 'High school degree non-attainment', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show High school degree achievement rate`, }, }); +export const SIDE_PANEL_VALUES = { + ABOVE: , + BELOW: , + PERCENT: , + PERCENTILE: , + IMG_ALT_TEXT: defineMessages({ + ARROW_UP: { + id: 'explore.page.side.panel.indicator.value.arrow.up.alt.text', + description: 'image alt text for the up arrow', + defaultMessage: `an icon for the up arrow`, + }, + ARROW_DOWN: { + id: 'explore.page.side.panel.indicator.value.arrow.down.alt.text', + description: 'image alt text for the down arrow', + defaultMessage: `an icon for the down arrow`, + }, + UNAVAILABLE: { + id: 'explore.page.side.panel.indicator.value.unavailable.alt.text', + description: 'image alt text for unavailable icon', + defaultMessage: `an icon to represent data is unavailable`, + }, + }), + UNAVAILBLE_MSG: , +}; + export const SIDE_PANEL_INDICATOR_DESCRIPTION = defineMessages({ EXP_AG_LOSS: { - id: 'areaDetail.indicator.description.exp.ag.loss', - defaultMessage: 'Economic loss rate to agriculture resulting from natural hazards', - description: 'Economic loss rate to agriculture resulting from natural hazards', + id: 'explore.tool.page.side.panel.indicator.description.exp.ag.loss', + defaultMessage: 'Economic loss rate to agricultural value resulting from natural hazards each year', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Economic loss rate to agriculture resulting from naturhazards + `, }, EXP_BLD_LOSS: { - id: 'areaDetail.indicator.description.exp.bld.loss', - defaultMessage: 'Economic loss rate to buildings resulting from natural hazards', - description: 'Economic loss rate to buildings resulting from natural hazards', + id: 'explore.tool.page.side.panel.indicator.description.exp.bld.loss', + defaultMessage: 'Economic loss rate to agricultural value resulting from natural hazards each year', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side + panel will show an indicator desciption of Economic loss rate to buildings resulting from natural hazards`, }, EXP_POP_LOSS: { - id: 'areaDetail.indicator.description.exp.pop.loss', + id: 'explore.tool.page.side.panel.indicator.description.exp.pop.loss', defaultMessage: ` Rate of fatalities and injuries resulting from natural hazards each year `, - description: 'Economic loss rate to the population in fatalities and injuries resulting from natural hazards', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Economic loss rate to the population in fatalities and + injuries resulting from natural hazards`, }, LOW_INCOME: { - id: 'areaDetail.indicator.description.low.income', + id: 'explore.tool.page.side.panel.indicator.description.low.income', defaultMessage: ` Household income is less than or equal to twice the federal poverty level `, - description: 'Household income is less than or equal to twice the federal poverty level', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Household income is less than or equal to twice the federal poverty level`, }, HIGH_ED: { - id: 'areaDetail.indicator.description.high.ed', + id: 'explore.tool.page.side.panel.indicator.description.high.ed', defaultMessage: ` - Percent of population enrolled in college, university, or graduate school + Percent of the census tract's population 15 or older not enrolled in college, university, or + graduate school `, - description: 'Percent of people ages 25 years or older whose education level is less than a high school diploma', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Percent of the census tract's population 15 or older not + enrolled in college, university, or graduate school`, }, ENERGY_BURDEN: { - id: 'areaDetail.indicator.description.energyBurden', + id: 'explore.tool.page.side.panel.indicator.description.energyBurden', defaultMessage: 'Average annual energy costs divided by household income', - description: 'Energy costs divided by household income', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Energy costs divided by household income`, }, PM_2_5: { - id: 'areaDetail.indicator.description.pm25', - defaultMessage: 'Fine inhalable particles, 2.5 micrometers and smaller', - description: 'Fine inhalable particles, 2.5 micrometers and smaller', + id: 'explore.tool.page.side.panel.indicator.description.pm25', + defaultMessage: 'Fine inhalable particles, 2.5 micrometers or smaller', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Fine inhalable particles, 2.5 micrometers and smaller`, }, DIESEL_PARTICULATE_MATTER: { - id: 'areaDetail.indicator.description.dieselPartMatter', + id: 'explore.tool.page.side.panel.indicator.description.dieselPartMatter', defaultMessage: 'Diesel exhaust in the air', - description: 'Diesel exhaust in the air', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Diesel exhaust in the air`, }, TRAFFIC_VOLUME: { - id: 'areaDetail.indicator.description.trafficVolume', + id: 'explore.tool.page.side.panel.indicator.description.trafficVolume', defaultMessage: 'Count of vehicles at major roads within 500 meters', - description: 'Count of vehicles at major roads within 500 meters', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Count of vehicles at major roads within 500 meters`, }, LEAD_PAINT: { - id: 'areaDetail.indicator.description.leadPaint', + id: 'explore.tool.page.side.panel.indicator.description.leadPaint', defaultMessage: ` Percentile of number of homes built before 1960 that are not among the most expensive `, - description: 'Pre-1960 housing', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Pre-1960 housing`, }, MED_HOME_VAL: { - id: 'areaDetail.indicator.description.med.home.val', + id: 'explore.tool.page.side.panel.indicator.description.med.home.val', defaultMessage: 'Median home value in area', - description: 'Meidan home value in area', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Meidan home value in area`, }, HOUSE_BURDEN: { - id: 'areaDetail.indicator.description.houseBurden', + id: 'explore.tool.page.side.panel.indicator.description.houseBurden', defaultMessage: 'Low income households spending more than 30% of income on housing', - description: 'Low income households spending more than 30% of income on housing', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Low income households spending more than 30% of income housing + `, }, PROX_HAZ: { - id: 'areaDetail.indicator.description.prox.haz', + id: 'explore.tool.page.side.panel.indicator.description.prox.haz', defaultMessage: 'Count of hazardous waste facilities within 5 kilometers', - description: 'Count of hazardous waste facilities within 5 kilometers', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Count of hazardous waste facilities within 5 kilometers`, }, PROX_NPL: { - id: 'areaDetail.indicator.description.prox.npl', + id: 'explore.tool.page.side.panel.indicator.description.prox.npl', defaultMessage: 'Proposed or listed NPL (Superfund) sites within 5 kilometers', - description: 'Proposed or listed NPL (Superfund) sites within 5 kilometers', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Proposed or listed NPL (Superfund) sites within 5 kilometers`, }, PROX_RMP: { - id: 'areaDetail.indicator.description.prox.rmp', - defaultMessage: 'Risk Management Plan facilities within 5 kilometers', - description: 'Risk Management Plan facilities within 5 kilometers', + id: 'explore.tool.page.side.panel.indicator.description.prox.rmp', + defaultMessage: 'RMP facilities within 5 kilometers', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Risk Management Plan facilities within 5 kilometers`, }, WASTE_WATER: { - id: 'areaDetail.indicator.description.wasteWater', + id: 'explore.tool.page.side.panel.indicator.description.wasteWater', defaultMessage: 'Toxic concentrations at stream segments within 500 meters', - description: 'Toxic concentrations at stream segments within 500 meters', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Toxic concentrations at stream segments within 500 meters`, }, ASTHMA: { - id: 'areaDetail.indicator.description.asthma', + id: 'explore.tool.page.side.panel.indicator.description.asthma', defaultMessage: 'Weighted percent of people who have been told they have asthma', - description: 'Number of people who have been told they have asthma', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Number of people who have been told they have asthma`, }, DIABETES: { - id: 'areaDetail.indicator.description.diabetes', + id: 'explore.tool.page.side.panel.indicator.description.diabetes', defaultMessage: ` Weighted percent of people ages 18 years and older who have diabetes other than diabetes during pregnancy `, - description: 'People ages 18 years and older who have diabetes other than diabetes during pregnancy', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of People ages 18 years and older who have diabetes other than + diabetes during pregnancy`, }, HEART_DISEASE: { - id: 'areaDetail.indicator.description.heartDisease', + id: 'explore.tool.page.side.panel.indicator.description.heartDisease', defaultMessage: ` - Weighted percent of people ages 18 years and older who have been told they have heart disease + Navigate to the explore the tool page. When the map is in view, click on the map. The side panel + will show an indicator desciption of Weighted percent of people ages 18 years and older who have + been told they have heart disease `, - description: 'People ages 18 years and older who have been told they have heart disease', + description: `People ages 18 years and older who have been told they have heart disease`, }, LOW_LIFE_EXPECT: { - id: 'areaDetail.indicator.description.lifeExpect', + id: 'explore.tool.page.side.panel.indicator.description.lifeExpect', defaultMessage: 'Average number of years a person can expect to live', - description: 'Average number of years of life a person can expect to live', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Average number of years of life a person can expect to live`, }, LOW_MED_INCOME: { - id: 'areaDetail.indicator.description.low.med.income', + id: 'explore.tool.page.side.panel.indicator.description.low.med.income', defaultMessage: 'Median income calculated as a percent of the area’s median income', - description: 'Median income calculated as a percent of the area’s median income', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Median income calculated as a percent of the area’s median income`, }, LING_ISO: { - id: 'areaDetail.indicator.description.ling.iso', + id: 'explore.tool.page.side.panel.indicator.description.ling.iso', defaultMessage: ` Percent of households where no one over the age 14 speaks English well `, - description: `Households in which no one age 14 and over speaks English only or also speaks - a language other than English`, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Households in which no one age 14 and over speaks English only or also speaks a language other than English`, }, UNEMPLOY: { - id: 'areaDetail.indicator.description.unemploy', + id: 'explore.tool.page.side.panel.indicator.description.unemploy', defaultMessage: 'Number of unemployed people as a percentage of the labor force', - description: 'Number of unemployed people as a percentage of the labor force', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side + panel will show an indicator desciption of Number of unemployed people as a percentage of the labor force`, }, POVERTY: { - id: 'areaDetail.indicator.description.poverty', + id: 'explore.tool.page.side.panel.indicator.description.poverty', defaultMessage: ` - Percent of a tract's population in households where the household income is at or below 100% of - the Federal poverty level + Percent of a census tract's population in households where the household income is at or below 100% + of the Federal poverty level `, - description: `Percent of individuals in households where the household income is at or - below 100% of the federal poverty level`, + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Percent of individuals in households where the household income is at or below 100% of the federal poverty level`, }, HIGH_SKL: { - id: 'areaDetail.indicator.description.high.school', + id: 'explore.tool.page.side.panel.indicator.description.high.school', defaultMessage: ` - Proportion of people ages 25 years or older whose education level is less than a high school diploma + Percent of people ages 25 years or older whose education level is less than a high school diploma `, - description: 'Percent of people ages 25 years or older whose education level is less than a high school diploma', + description: `Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Percent of people ages 25 years or older whose education level + is less than a high school diploma`, }, }); +export const SIDE_PANEL_SPACERS = { + EXCEED_ONE_OR_MORE: , + EXCEED_BOTH_SOCIO: , + YES: , + NO: , + AND: , +}; + export const DOWNLOAD_DRAFT = { PARAGRAPH_1: Download the current list of communities and datasets used (ZIP file + will contain one .xlsx and one .csv, with a size of {downloadFileSize} unzipped). Last updated: {dateUpdated}. + `} + description={` + Navigate to the explore the tool page. Under the map, you will see a link that is placed below the + map that will download the data packet `} values={{ - downloadDraft: - - {`Download the current list`} - , - downloadDraftEs: - - {`Descargue la lista preliminar`} - , - dateUpdated: METHODOLOGY_COPY.DOWNLOAD_LAST_UPDATED, - dateUpdatedEs: METHODOLOGY_COPY.DOWNLOAD_LAST_UPDATED_ES, - downloadFileSize: METHODOLOGY_COPY.DOWNLOAD_FILE_SIZE, - }} - />, - PARAGRAPH_2: , + dateUpdated: , }} />, }; export const NOTE_ON_TERRITORIES = { INTRO: , PARA_1: Methodology & data page are used to identify disadvantaged communities in all fifty states and the District of Columbia. However, not all of these data sources are currently available for the U.S. territories. `} - description={`territories paragraph 1`} + description={`Navigate to the explore the tool page. Under the map, you will see territories paragraph 1`} values={{ - dataMethLink: Methodology & data, + link1: linkFn('/methodology', true, false), }} />, PARA_2: , PARA_3: , PARA_4: , }; export const NOTE_ON_TRIBAL_NATIONS = { INTRO: , PARA_1: Methodology & data page for more information). CEQ + is engaging in consultation and coordination with Tribal Nations on the beta version of the tool + to provide Tribal Nations with meaningful opportunities for input, consistent with CEQ’s + Action Plan for Consultation and Coordination with Tribal Nations, + President Biden’s Memorandum on Tribal Consultation and Strengthening + Nation-to-Nation Consultation, and Executive Order 13175 on Consulation and + Coordination With Indian Tribal Governments. `} - description={`tribal nations paragraph 1`} + description={`Navigate to the explore the tool page. Under the map, you will see tribal nations paragraph 1`} values={{ - dataMethLink: Methodology & data, - actionPlanTribalNation: , - bidenMemoNat2Nat: , - coordinateTribal: , + link1: linkFn('/methodology', true, false), + link2: linkFn(`https://www.whitehouse.gov/wp-content/uploads/2022/01/CEQ-Tribal-Consultation-Plan-04.26.2021.pdf`, false, true), + link3: linkFn(`https://www.whitehouse.gov/briefing-room/presidential-actions/2021/01/26/memorandum-on-tribal-consultation-and-strengthening-nation-to-nation-relationships/`, false, true), + link4: linkFn(`https://www.federalregister.gov/documents/2000/11/09/00-29003/consultation-and-coordination-with-indian-tribal-governments`, false, true), }} />, }; export const HOW_YOU_CAN_HELP_LIST_ITEMS = { HEADING: , LIST_ITEM_1: Methodology & data page and send feedback.`} values={{ - dataMeth: - - {'Methodology & data'} - , - dataMethEs: - - {'Metodología y datos'} - , + link1: linkFn('/methodology', true, false), }} />, LIST_ITEM_2: share your feedback.`} values={{ - shareFeedback: - , + link1: linkFn(`mailto:${COMMON_COPY.FEEDBACK_EMAIL}`, false, true), }} />, LIST_ITEM_3: federalregister.gov.`} values={{ - federalRegisterLink: - , + link1: linkFn(`https://www.federalregister.gov/d/2022-03920`, false, true), }} />, diff --git a/client/src/data/copy/methodology.tsx b/client/src/data/copy/methodology.tsx index 61449730..511224b1 100644 --- a/client/src/data/copy/methodology.tsx +++ b/client/src/data/copy/methodology.tsx @@ -1,18 +1,19 @@ +/* eslint-disable max-len */ import React from 'react'; import {defineMessages} from 'react-intl'; -import {FormattedMessage} from 'gatsby-plugin-intl'; -import LinkTypeWrapper from '../../components/LinkTypeWrapper'; +import {FormattedDate, FormattedMessage, FormattedNumber} from 'gatsby-plugin-intl'; +import {boldFn, linkFn, simpleLink} from './common'; export const PAGE = defineMessages({ TILE: { id: 'methodology.page.title.text', defaultMessage: 'Methodology & data', - description: 'methodology page title text', + description: 'Navigate to the methodology page. This is the methodology page title text', }, HEADING: { id: 'methodology.page.header.text', defaultMessage: 'Methodology', - description: 'methodology page header text', + description: 'Navigate to the methodology page. This is the methodology page header text', }, DESCRIPTION: { id: 'methodology.page.paragraph', @@ -24,7 +25,7 @@ export const PAGE = defineMessages({ years. This tool utilizes the census tract boundaries from 2010 because they match the datasets used in the tool. The U.S. Census Bureau will update these census tract boundaries in 2020. `, - description: 'methodology page paragraph', + description: 'Navigate to the methodology page. This is the methodology page paragraph', }, CATEGORY_TEXT: { id: 'methodology.page.categories.title', @@ -33,7 +34,7 @@ export const PAGE = defineMessages({ the Justice40 Initiative if they are located in census tracts that are at or above the thresholds in one or more of eight categories of criteria below. `, - description: 'methodology page explanation of the categories', + description: 'Navigate to the methodology page. This is the methodology page explanation of the categories', }, }); @@ -46,46 +47,34 @@ export const FORMULA = { Under the current formula, a census tract will be identified as disadvantaged in one or more categories of criteria: `} - description={'methodology page introducing the formula'} - values={{ - identifiedDis: identified as disadvantaged, - }} + description={'Navigate to the methodology page. This is the methodology page introducing the formula'} />, IF: IF the census tract is above the threshold for one or more environmental or climate indicators `} - description={'the first part of the formula used in the methodology'} + description={'Navigate to the methodology page. This is the first part of the formula used in the methodology'} values= {{ - if: IF, + boldtag: boldFn, }} />, AND: AND the census tract is above the threshold for the socioeconomic indicators `} - description={'the second part of the formula used in the methodology'} + description={'Navigate to the methodology page. This is the second part of the formula used in the methodology'} values= {{ - and: AND, - }} - />, - THEN: THEN, + boldtag: boldFn, }} />, }; // Download Package -export const DOWNLOAD_FILE_SIZE = '52MB unzipped'; -export const DOWNLOAD_LAST_UPDATED = '2/18/22'; -export const DOWNLOAD_LAST_UPDATED_ES = '18/2/22'; -export const VERSION_NUMBER = '0.1'; +export const DOWNLOAD_FILE_SIZE = 52; +export const DOWNLOAD_LAST_UPDATED = 1645180697000; +export const VERSION_NUMBER = 0.1; export const DOWNLOAD_ZIP_URL = [ process.env.GATSBY_CDN_TILES_BASE_URL, @@ -95,72 +84,64 @@ export const DOWNLOAD_ZIP_URL = [ export const DOWNLOAD_PACKAGE = { TITLE: , + downloadFileSize: , }} />, DESCRIPTION: , }} />, LAST_UPDATED: , }} />, BUTTON_TEXT: , }; - -// Low Income section -export const LOW_INCOME = defineMessages({ - HEADING: { - id: 'low.income.heading', - defaultMessage: 'Low Income', - description: 'title of section describing low income', - }, - INFO: { - id: 'low.income.info', - defaultMessage: ` - At or above 65th percentile for percent of census tract population of households where household - income is at or below 200% of the Federal poverty level - `, - description: 'description of low income', - }, -}); - export const CATEGORY= { HEADING: , ID_AS_DISADV_TEXT: identified as disadvantaged `} - description= {'category heading'} + description= {'Navigate to the methodology page. Navigate to the category section. This is category heading'} values={{ - idAsDisadv: identified as disadvantaged, + boldtag: boldFn, }} />, }; @@ -168,28 +149,26 @@ export const CATEGORY= { // Category AND Clause: export const CATEGORY_AND_CLAUSE = { LOW_INC_65_WHEN_HIGH_ED_LTE_20: AND is above the 65th percentile for low income AND 80% or more of adults 15 or older are not enrolled in higher education `} - description= {'and portion of the formula dealing with lower income and high school degree rate'} + description= {'Navigate to the methodology page. Navigate to the category section. This is category portion of the formula dealing with lower income and high school degree rate'} values= {{ - and: AND, - lowIncome: low income, - highEdEnrollRate: higher ed enrollment rate, + boldtag: boldFn, + link1: simpleLink('#low-income'), + link2: simpleLink('#high-ed-enroll-rate'), }} />, HS_DEG_90_WHEN_HIGH_ED_LTE_20: AND 10% or more of adults 25 or older have not attained a high school degree AND 80% or more of adults 15 or older are not enrolled in higher education `} - description= {'and portion of the formula dealing with higher ed enrollment and high school degree rate'} + description= {'Navigate to the methodology page. Navigate to the category section. This is the portion of the formula dealing with higher ed enrollment and high school degree rate'} values= {{ - and: AND, - highSchoolRate: high school degree attainment rate, - highEdEnrollRate: higher ed enrollment rate, + boldtag: boldFn, + link1: simpleLink('#high-school'), + link2: simpleLink('#high-ed-enroll-rate'), }} />, }; @@ -197,352 +176,271 @@ export const CATEGORY_AND_CLAUSE = { // Indicator Categories copy constants: export const CATEGORIES = { ALL: , ALL_EXCEPT_WORKFORCE: , CLIMATE_CHANGE: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for expected agriculture loss rate OR expected building loss rate OR expected population loss rate`} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - expAgrLossRate: expected agriculture loss rate, - expbuildLossRate: expected building loss rate, - expPopLossRate: expected population loss rate, + boldtag: boldFn, + link1: simpleLink('#exp-agr-loss-rate'), + link2: simpleLink('#exp-bld-loss-rate'), + link3: simpleLink('#exp-pop-loss-rate'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, CLEAN_ENERGY: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for energy burden OR PM2.5 in the air`} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if if portion of the formula'} values= {{ - if: IF, - energyCostBur: energy burden, - pm25: PM2.5 in the air, + boldtag: boldFn, + link1: simpleLink('#energy-burden'), + link2: simpleLink('#pm-25'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, CLEAN_TRANSPORT: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for diesel particulate matter exposure or traffic proximity and volume `} - description= {'if portion of the formula'} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - dieselPM: diesel particulate matter exposure, - traffic: traffic proximity and volume, + boldtag: boldFn, + link1: simpleLink('#diesel-pm'), + link2: simpleLink('#traffic-vol'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, AFFORDABLE_HOUSING: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for lead paint AND median home value is at or less than the 90th percentile OR at or above the 90th percentile for the housing cost burden`} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - lead: lead paint, - medianHomeVal: median home value, - houseBur: housing cost burden, + boldtag: boldFn, + link1: simpleLink('#lead-paint'), + link2: simpleLink('#median-home'), + link3: simpleLink('#house-burden'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, LEGACY_POLLUTION: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for proximity to hazardous waste facilities OR proximity to National Priorities List (NPL) sites OR proximity to Risk Management Plan (RMP) facilities`} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - proxHaz: proximity to hazardous waste facilities, - proxNPL: proximity to National Priorities List (NPL) sites, - proxRMP: proximity to Risk Management Plan (RMP) facilities, + boldtag: boldFn, + link1: simpleLink('#prox-haz'), + link2: simpleLink('#prox-npl'), + link3: simpleLink('#prox-rmp'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, CLEAN_WATER: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for wastewater discharge`} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - wasteWater: wastewater discharge, + boldtag: boldFn, + link1: simpleLink('#waste-water'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, HEALTH_BURDENS: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for asthma OR diabetes OR heart disease OR low life expectancy`} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - diabetes: diabetes, - asthma: asthma, - heart: heart disease, - life: low life expectancy, + boldtag: boldFn, + link1: simpleLink('#asthma'), + link2: simpleLink('#diabetes'), + link3: simpleLink('#heart-disease'), + link4: simpleLink('#life-exp'), }} />, AND: CATEGORY_AND_CLAUSE.LOW_INC_65_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, WORKFORCE_DEV: { METHODOLOGY: , TITLE: , IF: IF at or above the 90th percentile for low median income as a percentage of area median income OR linguistic isolation OR unemployment OR percent individuals in households at or below 100% Federal poverty level `} - description= {'if portion of the formula'} + description= {'Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula'} values= {{ - if: IF, - lowMedInc: low median income, - linIso: linguistic isolation, - unemploy: unemployment, - poverty: poverty, + boldtag: boldFn, + link1: simpleLink('#low-med-inc'), + link2: simpleLink('#ling-iso'), + link3: simpleLink('#unemploy'), + link4: simpleLink('#poverty'), }} />, AND: CATEGORY_AND_CLAUSE.HS_DEG_90_WHEN_HIGH_ED_LTE_20, - // THEN: THEN, - // asterisk: *, - // }} - // />, }, }; // Dataset section export const DATASETS = defineMessages({ HEADING: { - id: 'datasetContainer.heading', + id: 'methodology.page.datasetContainer.heading', defaultMessage: 'Datasets used in beta methodology', - description: 'section heading of which datasets are used in cumulative score', + description: 'Navigate to the Methodology page. This is the section heading of which datasets are used in cumulative score', }, INFO: { - id: 'datasetContainer.info', + id: 'methodology.page.datasetContainer.info', defaultMessage: ` The datasets used in the current version of the tool come from a variety of sources and were selected based on relevance, availability, and quality. The datasets seek to identify a range of human health, environmental, climate-related, and other impacts on communities. `, - description: 'description of the dataset section', + description: 'Navigate to the Methodology page. This is the description of the dataset section', }, ADDITIONAL_HEADING: { - id: 'datasetContainer.additional.heading', + id: 'methodology.page.datasetContainer.additional.heading', defaultMessage: 'Additional Indicators', - description: 'additional indicators heading', + description: 'Navigate to the Methodology page. This is the additional indicators heading', }, ADDITIONAL_INFO: { - id: 'datasetContainer.additional.info', + id: 'methodology.page.datasetContainer.additional.info', defaultMessage: 'These datasets provide additional information about each community.', - description: 'additional indicator info', + description: 'Navigate to the Methodology page. This is the additional indicator info', }, }); export const DATASET_CARD_LABELS = defineMessages({ USED_IN: { - id: 'datasetCard.used.in', + id: 'methodology.page.datasetCard.used.in', defaultMessage: 'Used in: ', - description: 'label associated with explaining the card', + description: 'Navigate to the Methodology page. This is the label associated with explaining the card', }, RESP_PARTY: { - id: 'datasetCard.responsible.party', + id: 'methodology.page.datasetCard.responsible.party', defaultMessage: 'Responsible Party: ', - description: 'label associated with explaining the card', + description: 'Navigate to the Methodology page. This is the label associated with explaining the card', }, DATE_RANGE: { - id: 'datasetCard.date.range', + id: 'methodology.page.datasetCard.date.range', defaultMessage: 'Date range: ', - description: 'label associated with explaining the card', + description: 'Navigate to the Methodology page. This is the label associated with explaining the card', }, SOURCE: { - id: 'datasetCard.source', + id: 'methodology.page.datasetCard.source', defaultMessage: 'Source: ', - description: 'label associated with source of the card', + description: 'Navigate to the Methodology page. This is the label associated with source of the card', }, AVAILABLE_FOR: { - id: 'datasetCard.available.for', + id: 'methodology.page.datasetCard.available.for', defaultMessage: 'Available for: ', - description: 'label associated with available for which regions of the card', + description: 'Navigate to the Methodology page. This is the label associated with available for which regions of the card', }, }); @@ -573,218 +471,132 @@ export const RESPONSIBLE_PARTIES = { export const SOURCE_LINKS = { CENSUS_ACS_15_19: American Community Survey from {date15_19}'} + description= {'Navigate to the Methodology page. This is the source link for Census ACS'} values= {{ - sourceCensusLink: - , + link1: linkFn('https://www.census.gov/programs-surveys/acs', false, true), date15_19: DATE_RANGE.FIFETEEN_PLUS_4, }} />, CENSUS_ACS_10: American Community Survey from {date10}'} + description= {'Navigate to the Methodology page. This is the source link for Census ACS'} values= {{ - sourceCensusLink: - , + link1: linkFn('https://www.census.gov/data/developers/data-sets/acs-5year/2010.html', false, true), date10: DATE_RANGE.TEN, }} />, FEMA_NRI: National Risk Index from {date14_21}`} + description= {'Navigate to the Methodology page. This is the source link for FEMA'} values={{ - sourceFemaLink: - , + link1: linkFn('https://hazards.fema.gov/nri/expected-annual-loss', false, true), date14_21: DATE_RANGE.FOURTEEN_PLUS_7, }} />, DOE_LEAD: LEAD Score from {date18}`} + description= {'Navigate to the Methodology page. This is the source link for DOE FEMA'} values={{ - sourceDoeLeadLink: - , + link1: linkFn('https://www.energy.gov/eere/slsc/low-income-energy-affordability-data-lead-tool', false, true), date18: DATE_RANGE.EIGHTEEN, }} />, EPA_OAR: Fusion of model and monitor data from {date17} as compiled by EPA’s EJSCREEN, sourced from EPA National Air Toxics Assessment (NATA) and the U.S. Department of Transportation (DOT) traffic data `} - description= {'source link for EPA OAR'} + description= {'Navigate to the Methodology page. This is the source link for EPA OAR'} values={{ - sourceEpaOarLink: - , + link1: linkFn('https://www.epa.gov/ejscreen/technical-documentation-ejscreen', false, true), date17: DATE_RANGE.SEVENTEEN, }} />, EPA_NATA: National Air Toxics Assessment (NATA) from {date14} as compiled by EPA's EJSCREEN`} + description= {'Navigate to the Methodology page. This is the source link for EPA NATA'} values={{ - sourceEpaOarLink: - , + link1: linkFn('https://www.epa.gov/ejscreen/technical-documentation-ejscreen', false, true), date14: DATE_RANGE.FOURTEEN, }} />, DOT_EPA: Traffic Data from {date17} as compiled by EPA's EJSCREEN`} + description= {'Navigate to the Methodology page. This is the source link for DOT EPA'} values={{ - sourceDotEpaLink: - , + link1: linkFn('https://www.epa.gov/ejscreen/technical-documentation-ejscreen', false, true), date17: DATE_RANGE.SEVENTEEN, }} />, HUD: Comprehensive Housing Affordability Strategy dataset from {date14_18}`} + description= {'Navigate to the Methodology page. This is the source link for HUD'} values={{ - sourceHudLink: - , + link1: linkFn('https://www.huduser.gov/portal/datasets/cp.html', false, true), date14_18: DATE_RANGE.FOURTEEN_PLUS_4, }} />, EPA_TSDF: Treatment, Storage, and Disposal Facilities (TSDF) data from {date20} calculated from EPA's RCRA database as compiled by EPA's EJSCREEN `} - description= {'source link for EPA TSDF'} + description= {'Navigate to the Methodology page. This is the source link for EPA TSDF'} values={{ - sourceEpaTsdfLink: - , + link1: linkFn('https://enviro.epa.gov/facts/rcrainfo/search.html', false, true), date20: DATE_RANGE.TWENTY, }} />, EPA_CERCLIS: CERCLIS database from {date20} as compiled by EPA’s EJSCREEN`} + description= {'Navigate to the Methodology page. This is the source link for EPA CERCLIS'} values={{ - sourceEpaCerclisLink: - , + link1: linkFn('https://enviro.epa.gov/facts/rcrainfo/search.html', false, true), date20: DATE_RANGE.TWENTY, }} />, EPA_RMP: RMP database from {date20} as compiled by EPA’s EJSCREEN`} + description= {'Navigate to the Methodology page. This is the source link for EPA RMP'} values={{ - sourceEpaRmpLink: - , + link1: linkFn('https://www.epa.gov/ejscreen/technical-documentation-ejscreen', false, true), date20: DATE_RANGE.TWENTY, }} />, EPA_RSEI: Risk-Screening Environmental Indicators (RSEI) Model from {date20} as compiled by EPA’s EJSCREEN`} + description= {'Navigate to the Methodology page. This is the source link for EPA RSEI'} values={{ - sourceEpaRseiLink: - , + link1: linkFn('https://www.epa.gov/ejscreen/technical-documentation-ejscreen', false, true), date20: DATE_RANGE.TWENTY, }} />, CDC_PLACES: PLACES data from {date16_19}`} + description= {'Navigate to the Methodology page. This is the source link for CDC Places'} values={{ - sourceCdcPlacesLink: - , + link1: linkFn('https://www.cdc.gov/places/index.html', false, true), date16_19: DATE_RANGE.SIXTEEN_PLUS_3, }} />, CDC_SLEEP: U.S. Small-area Life Expectancy Estimates Project (USALEEP) from {date10_15}`} + description= {'Navigate to the Methodology page. This is the source link for CDC Sleep'} values={{ - sourceCdcSleepLink: - , + link1: linkFn('https://www.cdc.gov/nchs/nvss/usaleep/usaleep.html#data', false, true), date10_15: DATE_RANGE.TEN_PLUS_5, }} />, @@ -798,12 +610,13 @@ export const AVAILABLE_FOR = { export interface IIndicators { domID: string, - indicator: string, - description: string, - usedIn: string, + indicator: JSX.Element, + description: JSX.Element, + note?: JSX.Element, + usedIn: JSX.Element, responsibleParty: string, sources: [ { - source: string, + source: JSX.Element, availableFor: string, }] }; @@ -811,14 +624,18 @@ export interface IIndicators { export const INDICATORS = [ { domID: 'low-income', - indicator: 'Low income', + indicator: , description: , usedIn: CATEGORIES.ALL_EXCEPT_WORKFORCE, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -831,28 +648,36 @@ export const INDICATORS = [ }, { domID: 'high-ed-enroll-rate', - indicator: 'Higher ed enrollment rate', + indicator: , description: , usedIn: CATEGORIES.ALL, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, sources: [ { source: SOURCE_LINKS.CENSUS_ACS_15_19, - availableFor: AVAILABLE_FOR.ALL_US_DC, + availableFor: AVAILABLE_FOR.ALL_US_DC_PR, }, ], }, { domID: 'exp-agr-loss-rate', - indicator: 'Expected agriculture loss rate', + indicator: , description: , usedIn: CATEGORIES.CLIMATE_CHANGE.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.FEMA, @@ -874,9 +699,13 @@ export const INDICATORS = [ }, { domID: 'exp-bld-loss-rate', - indicator: 'Expected building loss rate', + indicator: , description: , usedIn: CATEGORIES.CLIMATE_CHANGE.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.FEMA, @@ -897,9 +726,13 @@ export const INDICATORS = [ }, { domID: 'exp-pop-loss-rate', - indicator: 'Expected population loss rate', + indicator: , description: , usedIn: CATEGORIES.CLIMATE_CHANGE.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.FEMA, @@ -927,11 +760,15 @@ export const INDICATORS = [ }, { domID: 'energy-burden', - indicator: 'Energy burden', + indicator: , description: , usedIn: CATEGORIES.CLEAN_ENERGY.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.DOE, @@ -944,15 +781,19 @@ export const INDICATORS = [ }, { domID: 'pm-25', - indicator: 'PM2.5 in the air', + indicator: , description: , usedIn: CATEGORIES.CLEAN_ENERGY.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.EPA_OAR, @@ -965,14 +806,18 @@ export const INDICATORS = [ }, { domID: 'diesel-pm', - indicator: 'Diesel particulate matter exposure', + indicator: , description: , usedIn: CATEGORIES.CLEAN_TRANSPORT.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.EPA, @@ -985,14 +830,18 @@ export const INDICATORS = [ }, { domID: 'traffic-vol', - indicator: 'Traffic proximity and volume', + indicator: , description: , usedIn: CATEGORIES.CLEAN_TRANSPORT.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.DOT, @@ -1005,14 +854,18 @@ export const INDICATORS = [ }, { domID: 'house-burden', - indicator: 'Housing cost burden', + indicator: , description: , usedIn: CATEGORIES.AFFORDABLE_HOUSING.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.HUD, @@ -1025,14 +878,18 @@ export const INDICATORS = [ }, { domID: 'lead-paint', - indicator: 'Lead paint', + indicator: , description: , usedIn: CATEGORIES.AFFORDABLE_HOUSING.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -1045,13 +902,17 @@ export const INDICATORS = [ }, { domID: 'median-home', - indicator: 'Median home value', + indicator: , description: , usedIn: CATEGORIES.AFFORDABLE_HOUSING.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -1064,15 +925,19 @@ export const INDICATORS = [ }, { domID: 'prox-haz', - indicator: 'Proximity to hazardous waste facilities', + indicator: , description: , usedIn: CATEGORIES.LEGACY_POLLUTION.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.EPA, @@ -1085,14 +950,18 @@ export const INDICATORS = [ }, { domID: 'prox-npl', - indicator: 'Proximity to National Priorities List (NPL) sites', + indicator: , description: , usedIn: CATEGORIES.LEGACY_POLLUTION.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.EPA, @@ -1105,14 +974,18 @@ export const INDICATORS = [ }, { domID: 'prox-rmp', - indicator: 'Proximity to Risk Management Plan (RMP) facilities', + indicator: , description: , usedIn: CATEGORIES.LEGACY_POLLUTION.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.EPA, @@ -1125,14 +998,18 @@ export const INDICATORS = [ }, { domID: 'waste-water', - indicator: 'Wastewater discharge', + indicator: , description: , usedIn: CATEGORIES.CLEAN_WATER.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.EPA, @@ -1145,15 +1022,19 @@ export const INDICATORS = [ }, { domID: 'asthma', - indicator: 'Asthma', + indicator: , description: , usedIn: CATEGORIES.HEALTH_BURDENS.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CDC, @@ -1166,15 +1047,19 @@ export const INDICATORS = [ }, { domID: 'diabetes', - indicator: 'Diabetes', + indicator: , description: , usedIn: CATEGORIES.HEALTH_BURDENS.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CDC, @@ -1187,15 +1072,19 @@ export const INDICATORS = [ }, { domID: 'heart-disease', - indicator: 'Heart disease', + indicator: , description: , usedIn: CATEGORIES.HEALTH_BURDENS.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CDC, @@ -1208,23 +1097,26 @@ export const INDICATORS = [ }, { domID: 'life-exp', - indicator: 'Low life expectancy', + indicator: , description: , + note: Note: The percentiles for this dataset have been reversed so that census tracts with lower numbers have higher life expectancies and the census tracts with higher numbers have lower life expectancy when compared to life expectancy in the area. + `} + description= {'Navigate to the Methodology page. This is the note text for low life expectancy'} values= {{ - note:

          Note:{` - Unlike most of the other datasets, high values of this data indicate low burdens. For - percentile calculations of burden, the percentile is calculated in reverse order, so that the - census tract with the highest life expectancy relative to area life expectancy (lowest burden - on this measure) is at the 0th percentile, and the census tract with the lowest life - expectancy relative to area life expectancy (highest burden on this measure) is at the - 100th percentile. Census tracts with the highest number have the lowest life expectancy. - `}

          , + boldtag: boldFn, }} />, usedIn: CATEGORIES.HEALTH_BURDENS.METHODOLOGY, @@ -1238,23 +1130,26 @@ export const INDICATORS = [ }, { domID: 'low-med-inc', - indicator: 'Low median income', + indicator: , description: , + note: Note: The percentiles for this dataset have been reversed so that census tracts with lower numbers have higher median incomes and census tracts with the higher numbers have lower median income when compared to area median income. + `} + description= {'Navigate to the Methodology page. This is the note text for low median expectancy'} values= {{ - note:

          Note:{` - Unlike most of the other datasets, high values of this data indicate low burdens. For - percentile calculations of burden, the percentile is calculated in reverse order, so that the - census tract with the highest median income relative to area median income (lowest burden on this - measure) is at the 0th percentile, and the census tract with the lowest median income relative to - area median income (highest burden on this measure) is at the 100th percentile. Census tracts with - the highest number have the lowest median income. - `}

          , + boldtag: boldFn, }} />, usedIn: CATEGORIES.WORKFORCE_DEV.METHODOLOGY, @@ -1272,13 +1167,17 @@ export const INDICATORS = [ }, { domID: 'ling-iso', - indicator: 'Linguistic isolation', + indicator: , description: , usedIn: CATEGORIES.WORKFORCE_DEV.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -1291,13 +1190,17 @@ export const INDICATORS = [ }, { domID: 'unemploy', - indicator: 'Unemployment', + indicator: , description: , usedIn: CATEGORIES.WORKFORCE_DEV.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -1314,14 +1217,18 @@ export const INDICATORS = [ }, { domID: 'poverty', - indicator: 'Poverty', + indicator: , description: , usedIn: CATEGORIES.WORKFORCE_DEV.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -1338,14 +1245,17 @@ export const INDICATORS = [ }, { domID: 'high-school', - indicator: 'High school degree attainment rate', + indicator: , description: , usedIn: CATEGORIES.WORKFORCE_DEV.METHODOLOGY, responsibleParty: RESPONSIBLE_PARTIES.CENSUS, @@ -1367,6 +1277,6 @@ export const RETURN_TO_TOP = { LINK: , }; diff --git a/client/src/data/copy/publicEngage.tsx b/client/src/data/copy/publicEngage.tsx index a0df64f8..c82fb448 100644 --- a/client/src/data/copy/publicEngage.tsx +++ b/client/src/data/copy/publicEngage.tsx @@ -1,56 +1,66 @@ +/* eslint-disable max-len */ import {defineMessages} from 'react-intl'; import mar9 from '../../images/eventDates/mar9.svg'; import mar10 from '../../images/eventDates/mar10.svg'; import mar16 from '../../images/eventDates/mar16.svg'; import mar22 from '../../images/eventDates/mar22.svg'; +import mar30 from '../../images/eventDates/mar30.svg'; +import mar31 from '../../images/eventDates/mar31.svg'; import apr15 from '../../images/eventDates/apr15.svg'; +import mar9Exp from '../../images/eventDates/mar9-inactive.svg'; +import mar10Exp from '../../images/eventDates/mar10-inactive.svg'; +import mar16Exp from '../../images/eventDates/mar16-inactive.svg'; +import mar22Exp from '../../images/eventDates/mar22-inactive.svg'; +import mar30Exp from '../../images/eventDates/mar30-inactive.svg'; +import mar31Exp from '../../images/eventDates/mar31-inactive.svg'; +import apr15Exp from '../../images/eventDates/apr15-inactive.svg'; export const PAGE_INTRO = defineMessages({ PAGE_TILE: { - id: 'publiceng.page.title.text', + id: 'public.eng.page.title.text', defaultMessage: 'Public engagement opportunities', - description: 'publiceng page title text', + description: 'Navigate to the the public engagement page, this will be the publiceng page title text', }, PAGE_HEADING1: { - id: 'publiceng.page.heading1.text', + id: 'public.eng.page.heading1.text', defaultMessage: 'Public engagement opportunities', - description: 'publiceng page header text', + description: 'Navigate to the the public engagement page, this will be the publiceng page header text', }, PAGE_HEADING2: { - id: 'publiceng.page.sub.header2.text', + id: 'public.eng.page.sub.header2.text', defaultMessage: 'Find an event', - description: 'publiceng page sub header text', + description: 'Navigate to the the public engagement page, this will be the publiceng page sub header text', }, PAGE_DESCRIPTION1: { - id: 'publiceng.page.description1.text', + id: 'public.eng.page.description1.text', defaultMessage: ` CEQ is hosting engagement opportunities to connect with the public about the current version of the tool. These sessions are an opportunity to obtain training on the tool or to provide feedback on the beta version of the tool. CEQ hopes that members of the public will join these engagements to learn about the tool, have their questions answered, and share feedback. `, - description: 'publiceng page description 1 text', + description: 'Navigate to the the public engagement page, this will be the publiceng page description 1 text', }, PAGE_DESCRIPTION2: { - id: 'publiceng.page.description2.text', + id: 'public.eng.page.description2.text', defaultMessage: ` Pre-registration is required to participate and speak at the sessions. `, - description: 'publiceng page description 2 text', + description: 'Navigate to the the public engagement page, this will be the publiceng page description 2 text', }, PAGE_DESCRIPTION3: { - id: 'publiceng.page.description3.text', + id: 'public.eng.page.description3.text', defaultMessage: ` As they become available, additional public trainings and engagement opportunities on the Climate and Economic Justice Screening Tool will also be posted on this page. `, - description: 'publiceng page description 3 text', + description: 'Navigate to the the public engagement page, this will be the publiceng page description 3 text', }, SURVEY_TEXT: { id: 'fab.survey.text', defaultMessage: `Help improve the site & data`, - description: 'text for floating action button', + description: 'Navigate to the the public engagement page, this will be the text for floating action button', }, }); @@ -58,12 +68,12 @@ export const PUBLIC_ENG_BUTTON = defineMessages({ LABEL: { id: 'public.eng.page.button.label', defaultMessage: `Public Engagement`, - description: 'public engagement button label', + description: 'Navigate to the the public engagement page, this will be the public engagement button label', }, TAG_LABEL: { id: 'public.eng.page.tag.label', - defaultMessage: `NEW`, - description: 'public engagement tag label', + defaultMessage: `UPDATED`, + description: 'Navigate to the the public engagement page, this will be the public engagement tag label', }, }); @@ -72,7 +82,7 @@ export const EVENT_TYPES = { NAME: { id: 'public.eng.page.event.training.sess.name', defaultMessage: `training session`, - description: 'public engagement page event training session name', + description: 'Navigate to the the public engagement page, this will be the public engagement page event training session name', }, DESCRIPTION: { id: 'public.eng.page.event.training.description', @@ -83,14 +93,14 @@ export const EVENT_TYPES = { use the current version of the tool. The presenters at these webinars will be available to provide technical support and address issues related to accessing and using the tool. `, - description: 'public engagement page event training session description', + description: 'Navigate to the the public engagement page, this will be the public engagement page event training session description', }, }), LISTENING_SESS: defineMessages({ NAME: { id: 'public.eng.page.event.listening.sess.name', defaultMessage: `listening session`, - description: 'public engagement page event listening session name', + description: 'Navigate to the the public engagement page, this will be the public engagement page event listening session name', }, DESCRIPTION: { id: 'public.eng.page.event.listening.sess.description', @@ -101,52 +111,82 @@ export const EVENT_TYPES = { tool to ensure that it reflects the environmental, climate and other challenges that communities are experiencing. `, - description: 'public engagement page event listening session description', + description: 'Navigate to the the public engagement page, this will be the public engagement page event listening session description', + }, + }), + WHEJAC_DAY1: defineMessages({ + NAME: { + id: 'public.eng.page.event.whejac.meeting.day.1.name', + defaultMessage: `Public WHEJAC meeting day one`, + description: 'public engagement page event WHEJAC meeting day 1 name', + }, + DESCRIPTION: { + id: 'public.eng.page.event.whejac.meeting.day.1.description', + defaultMessage: ` + Members of the public are encouraged to provide comments relevant to the beta version of the Climate and Economic Justice Screening Tool that was developed by CEQ and federal government agencies implementation of the Justice40 Initiative will be considered by the WHEJAC during the public meeting. + `, + description: 'public engagement page event WHEJAC day 1 description', + }, + }), + WHEJAC_DAY2: defineMessages({ + NAME: { + id: 'public.eng.page.event.whejac.meeting.day.2.name', + defaultMessage: `Public WHEJAC meeting day two`, + description: 'public engagement page event WHEJAC meeting day 2 name', + }, + DESCRIPTION: { + id: 'public.eng.page.event.whejac.meeting.day.2.description', + defaultMessage: ` + Members of the public are encouraged to attend and hear updates and discussion from the WHEJAC Climate and Economic Justice Screening Tool workgroup, the Justice40 workgroup, and the WHEJAC business time and meeting conversation during which the WHEJAC will use reflect on the meeting proceedings and public comment period; provide workgroup updates; discuss action items and finalize next steps. + `, + description: 'public engagement page event WHEJAC day 2 description', }, }), }; export const EVENT_FIELDS = defineMessages({ EVENT_INFO: { - id: 'publiceng.page.event.info.label', + id: 'public.eng.page.event.info.label', defaultMessage: 'Event info', - description: 'public engagement page event info label', + description: 'Navigate to the the public engagement page, this will be the public engagement page event info label', }, REG_LINK: { - id: 'publiceng.page.event.reglink.label', + id: 'public.eng.page.event.reglink.label', defaultMessage: 'Registration link', - description: 'public engagment page event registration link label', + description: 'Navigate to the the public engagement page, this will be the public engagment page event registration link label', }, }); export const EVENTS = [ { - DATE: new Date(2022, 9, 3), + DATE: new Date(2022, 2, 9), NAME: EVENT_TYPES.TRAINING_SESS.NAME, DESC: EVENT_TYPES.TRAINING_SESS.DESCRIPTION, NUMBER: 1, IMAGE: mar9, + EXPIRED_IMG: mar9Exp, FIELDS: defineMessages({ INFO: { id: 'public.eng.page.event.training.1.info', defaultMessage: `March 9th (4:00 - 5:00 PM EST)`, - description: 'public engagement page event training session 1 date', + description: 'Navigate to the the public engagement page, this will be the public engagement page event training session 1 date', }, }), REG_LINK: `https://pitc.zoomgov.com/webinar/register/WN_D-Om_xXhTtiLv71y3Rr1CQ`, DATA_CY: `mar-9-reg-link-block`, }, { - DATE: new Date(2022, 10, 3), + DATE: new Date(2022, 2, 10), NAME: EVENT_TYPES.TRAINING_SESS.NAME, DESC: EVENT_TYPES.TRAINING_SESS.DESCRIPTION, NUMBER: 2, IMAGE: mar10, + EXPIRED_IMG: mar10Exp, FIELDS: defineMessages({ INFO: { id: 'public.eng.page.event.training.2.info', defaultMessage: `March 10th (4:00 - 5:00 PM EST)`, - description: 'public engagement page event training session 2 date', + description: 'Navigate to the the public engagement page, this will be the public engagement page event training session 2 date', }, }), REG_LINK: `https://pitc.zoomgov.com/webinar/register/WN_QsSqshI4TpmRBkI6nVlWxQ`, @@ -154,16 +194,17 @@ export const EVENTS = [ }, { - DATE: new Date(2022, 16, 3), + DATE: new Date(2022, 2, 16), NAME: EVENT_TYPES.TRAINING_SESS.NAME, DESC: EVENT_TYPES.TRAINING_SESS.DESCRIPTION, NUMBER: 3, IMAGE: mar16, + EXPIRED_IMG: mar16Exp, FIELDS: defineMessages({ INFO: { id: 'public.eng.page.event.training.3.info', defaultMessage: `March 16th (4:00 - 5:00 PM EST)`, - description: 'public engagement page event training session 3 date', + description: 'Navigate to the the public engagement page, this will be the public engagement page event training session 3 date', }, }), REG_LINK: `https://pitc.zoomgov.com/webinar/register/WN_q86iMtpwTESYa6f0xpIk7g`, @@ -171,16 +212,17 @@ export const EVENTS = [ }, { - DATE: new Date(2022, 22, 3), + DATE: new Date(2022, 2, 22), NAME: EVENT_TYPES.LISTENING_SESS.NAME, DESC: EVENT_TYPES.LISTENING_SESS.DESCRIPTION, NUMBER: 1, IMAGE: mar22, + EXPIRED_IMG: mar22Exp, FIELDS: defineMessages({ INFO: { id: 'public.eng.page.event.listening.1.info', defaultMessage: `March 22nd (4:00 - 5:00 PM EST)`, - description: 'public engagement page event listening session 1 date', + description: 'Navigate to the the public engagement page, this will be the public engagement page event listening session 1 date', }, }), REG_LINK: `https://pitc.zoomgov.com/webinar/register/WN_YT7_uLZqScGHgyAcTCuJjA`, @@ -188,16 +230,51 @@ export const EVENTS = [ }, { - DATE: new Date(2022, 15, 4), + DATE: new Date(2022, 30, 2), + NAME: EVENT_TYPES.WHEJAC_DAY1.NAME, + DESC: EVENT_TYPES.WHEJAC_DAY1.DESCRIPTION, + NUMBER: 0, + IMAGE: mar30, + EXPIRED_IMG: mar30Exp, + FIELDS: defineMessages({ + INFO: { + id: 'public.eng.page.whejac.meeting.day.1.info', + defaultMessage: `March 30th (3:00 - 7:00 PM EST)`, + description: 'public engagement page event WHEJAC', + }, + }), + REG_LINK: `https://usepa.zoomgov.com/webinar/register/WN_wCwVP1dtT0auAR5kfucVtw`, + DATA_CY: `mar-30-reg-link-block`, + }, + { + DATE: new Date(2022, 31, 2), + NAME: EVENT_TYPES.WHEJAC_DAY2.NAME, + DESC: EVENT_TYPES.WHEJAC_DAY2.DESCRIPTION, + NUMBER: 0, + IMAGE: mar31, + EXPIRED_IMG: mar31Exp, + FIELDS: defineMessages({ + INFO: { + id: 'public.eng.page.whejac.meeting.day.1.info', + defaultMessage: `March 31th (3:00 - 7:30 PM EST)`, + description: 'public engagement page event WHEJAC', + }, + }), + REG_LINK: `https://usepa.zoomgov.com/webinar/register/WN_wCwVP1dtT0auAR5kfucVtw`, + DATA_CY: `mar-31-reg-link-block`, + }, + { + DATE: new Date(2022, 3, 15), NAME: EVENT_TYPES.LISTENING_SESS.NAME, DESC: EVENT_TYPES.LISTENING_SESS.DESCRIPTION, NUMBER: 2, IMAGE: apr15, + EXPIRED_IMG: apr15Exp, FIELDS: defineMessages({ INFO: { id: 'public.eng.page.event.listening.2.info', defaultMessage: `April 15th (4:00 - 5:00 PM EST)`, - description: 'public engagement page event listening session 2 date', + description: 'Navigate to the the public engagement page, this will be the public engagement page event listening session 2 date', }, }), REG_LINK: `https://pitc.zoomgov.com/webinar/register/WN_dLw3xChiTlaOLGdHXQWk0w`, diff --git a/client/src/data/getOSBaseMap.tsx b/client/src/data/getOSBaseMap.tsx index 6676e18f..8e756dce 100644 --- a/client/src/data/getOSBaseMap.tsx +++ b/client/src/data/getOSBaseMap.tsx @@ -1,5 +1,6 @@ import {Style} from 'maplibre-gl'; import * as constants from '../data/constants'; +import {featureURLForTilesetName} from '../components/J40Map'; // *********** BASE MAP SOURCES *************** const imageSuffix = constants.isMobile ? '' : '@2x'; @@ -50,7 +51,7 @@ export const getOSBaseMap = () : Style => { // Our current tippecanoe command does not set an id. // The below line promotes the GEOID10 property to the ID 'promoteId': constants.GEOID_PROPERTY, - 'tiles': [constants.FEATURE_TILE_HIGH_ZOOM_URL], + 'tiles': [featureURLForTilesetName('high')], // Setting maxzoom here enables 'overzooming' // e.g. continued zooming beyond the max bounds. // More here: https://docs.mapbox.com/help/glossary/overzoom/ @@ -66,7 +67,7 @@ export const getOSBaseMap = () : Style => { // to give us a favorable tradeoff between performance and fidelity. 'type': 'vector', 'promoteId': constants.GEOID_PROPERTY, - 'tiles': [constants.FEATURE_TILE_LOW_ZOOM_URL], + 'tiles': [featureURLForTilesetName('low')], 'minzoom': constants.GLOBAL_MIN_ZOOM_LOW, 'maxzoom': constants.GLOBAL_MAX_ZOOM_LOW, }, diff --git a/client/src/images/eventDates/apr15-inactive.svg b/client/src/images/eventDates/apr15-inactive.svg new file mode 100644 index 00000000..f53935c0 --- /dev/null +++ b/client/src/images/eventDates/apr15-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar10-inactive.svg b/client/src/images/eventDates/mar10-inactive.svg new file mode 100644 index 00000000..e404d6af --- /dev/null +++ b/client/src/images/eventDates/mar10-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar15-inactive.svg b/client/src/images/eventDates/mar15-inactive.svg new file mode 100644 index 00000000..a1853baf --- /dev/null +++ b/client/src/images/eventDates/mar15-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar16-inactive.svg b/client/src/images/eventDates/mar16-inactive.svg new file mode 100644 index 00000000..8a76fa87 --- /dev/null +++ b/client/src/images/eventDates/mar16-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar22-inactive.svg b/client/src/images/eventDates/mar22-inactive.svg new file mode 100644 index 00000000..b1073240 --- /dev/null +++ b/client/src/images/eventDates/mar22-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar30-inactive.svg b/client/src/images/eventDates/mar30-inactive.svg new file mode 100644 index 00000000..b483ffd1 --- /dev/null +++ b/client/src/images/eventDates/mar30-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar30.svg b/client/src/images/eventDates/mar30.svg new file mode 100644 index 00000000..fe9c2ca7 --- /dev/null +++ b/client/src/images/eventDates/mar30.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar31-inactive.svg b/client/src/images/eventDates/mar31-inactive.svg new file mode 100644 index 00000000..dbb6a7f4 --- /dev/null +++ b/client/src/images/eventDates/mar31-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar31.svg b/client/src/images/eventDates/mar31.svg new file mode 100644 index 00000000..36300259 --- /dev/null +++ b/client/src/images/eventDates/mar31.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/eventDates/mar9-inactive.svg b/client/src/images/eventDates/mar9-inactive.svg new file mode 100644 index 00000000..15fa286c --- /dev/null +++ b/client/src/images/eventDates/mar9-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/sidePanelIcons/bellCurve.svg b/client/src/images/sidePanelIcons/bellCurve.svg new file mode 100644 index 00000000..d7e8929c --- /dev/null +++ b/client/src/images/sidePanelIcons/bellCurve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/sidePanelIcons/pieChart.svg b/client/src/images/sidePanelIcons/pieChart.svg new file mode 100644 index 00000000..b9d1d4c4 --- /dev/null +++ b/client/src/images/sidePanelIcons/pieChart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/sidePanelIcons/puzzle.svg b/client/src/images/sidePanelIcons/puzzle.svg new file mode 100644 index 00000000..1b3fe0c4 --- /dev/null +++ b/client/src/images/sidePanelIcons/puzzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/images/sidePanelIcons/upDown.svg b/client/src/images/sidePanelIcons/upDown.svg new file mode 100644 index 00000000..90e1c12a --- /dev/null +++ b/client/src/images/sidePanelIcons/upDown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/intl/en.json b/client/src/intl/en.json index 5728e7b6..7e51c271 100644 --- a/client/src/intl/en.json +++ b/client/src/intl/en.json @@ -1,1003 +1,1219 @@ { + "about.page.community.members.heading": { + "defaultMessage": "Community members", + "description": "Navigate to the About page. This is the sub heading of page" + }, + "about.page.community.members.info": { + "defaultMessage": "Explore data about communities across the U.S., including your own, and provide feedback on the tool.", + "description": "Navigate to the About page. This is the sub heading of page" + }, + "about.page.community.members.link": { + "defaultMessage": "Explore the tool", + "description": "link to Navigate to the About page. This is the explore the tool page" + }, + "about.page.federal.pm.heading": { + "defaultMessage": "Federal program managers", + "description": "Navigate to the About page. This is the sub heading of page" + }, + "about.page.federal.pm.info": { + "defaultMessage": "Download the tool’s current list of communities, explore data that may be useful to your program, and provide feedback on the tool.", + "description": "Navigate to the About page. This is the sub heading of page" + }, + "about.page.federal.pm.link": { + "defaultMessage": "Methodology & data", + "description": "link text to Navigate to the About page. This is the go to methodology page" + }, + "about.page.getInvolved.title": { + "defaultMessage": "Get involved", + "description": "Navigate to the About page. This is the sub heading of page" + }, + "about.page.heading.1.text": { + "defaultMessage": "Screening tool", + "description": "Navigate to the About page. This is the second heading" + }, + "about.page.heading.text": { + "defaultMessage": "About", + "description": "Navigate to the About page. This is the first heading" + }, + "about.page.howToGetStarted.title": { + "defaultMessage": "How to get started", + "description": "Navigate to the About page. This is the sub heading of page" + }, + "about.page.join.open.source.info": { + "defaultMessage": "The tool’s code is open source, which means it is available for the public to view and contribute to it.", + "description": "info on Navigate to the About page. This is the joining open source community" + }, + "about.page.join.open.source.link": { + "defaultMessage": "Check it out on GitHub", + "description": "Navigate to the About page. This is the link to github repository" + }, + "about.page.join.opensource.heading": { + "defaultMessage": "Join the open source community", + "description": "Navigate to the About page. This is the join the community heading" + }, + "about.page.send.feedback.heading": { + "defaultMessage": "Send feedback", + "description": "Navigate to the About page. This is the sending feedback heading" + }, + "about.page.send.feedback.info": { + "defaultMessage": "Have ideas about data and information that reflect the experiences and conditions of your community?", + "description": "Navigate to the About page. This is the sending feedback information" + }, "about.page.sub.header.1.text.1": { - "defaultMessage": "In {eoLink} on {tacklingItalics}, President Biden directed the Council on Environmental Quality (CEQ) to create a Climate and Economic Justice Screening Tool. The purpose of the tool is to help Federal agencies identify disadvantaged communities that are marginalized, underserved, and overburdened by pollution. The current version of the tool provides socioeconomic, environmental, and climate information to inform decisions that may affect these communities. The tool identifies disadvantaged communities through publicly-available, nationally-consistent datasets.", - "description": "about page sub header text" + "defaultMessage": "In Executive Order 14008 on Tackling the Climate Crisis at Home and Abroad, President Biden directed the Council on Environmental Quality (CEQ) to create a Climate and Economic Justice Screening Tool. The purpose of the tool is to help Federal agencies identify disadvantaged communities that are marginalized, underserved, and overburdened by pollution. The current version of the tool provides socioeconomic, environmental, and climate information to inform decisions that may affect these communities. The tool identifies disadvantaged communities through publicly-available, nationally-consistent datasets.", + "description": "Navigate to the About page. This is the second heading description" }, "about.page.sub.header.1.text.2": { "defaultMessage": "The current version of the tool is in a public beta form and will be updated based on feedback and research.", - "description": "about page sub header text" + "description": "Navigate to the About page. This is first heading description" + }, + "about.page.sub.header.2.text": { + "defaultMessage": "The Justice40 Initiative", + "description": "Navigate to the About page. This is the third heading" }, "about.page.sub.header.2.text.1": { "defaultMessage": "The tool will provide important information for the Justice40 Initiative. The goal of the Justice40 Initiative is to provide 40 percent of the overall benefits of certain Federal investments in seven key areas to disadvantaged communities. These seven key areas are: climate change, clean energy and energy efficiency, clean transit, affordable and sustainable housing, training and workforce development, the remediation and reduction of legacy pollution, and the development of critical clean water infrastructure.", - "description": "about page sub header text" + "description": "Navigate to the About page. This is the third heading description" }, "about.page.sub.header.2.text.2": { - "defaultMessage": "Read more about the Justice40 Initiative in President Biden’s {eoLink} on {tacklingItalics}.", + "defaultMessage": "Read more about the Justice40 Initiative in President Biden’s Executive Order 14008 on Tackling the Climate Crisis at Home and Abroad.", "description": "about page sub header text" }, "about.page.title.text": { "defaultMessage": "About", - "description": "about page title text" + "description": "Navigate to the About page. This is the about page title text" }, - "areaDetail.categorization.community.of.focus": { - "defaultMessage": "YES", - "description": "the communities the score currently is focused on" + "common.pages.alerts.census.tract.description": { + "defaultMessage": "View improvements made to the display of the information for each census tract and send feedback.", + "description": "Navigate to any page. This the title of the alert that informs the user that new census tract information is available" }, - "areaDetail.categorization.is.community.of.focus": { - "defaultMessage": "Identified as disadvantaged?", - "description": "asking IF the communities is focused on" + "common.pages.alerts.census.tract.title": { + "defaultMessage": "Improvements to the map on the Explore the tool page", + "description": "Navigate to any page. This the title of the alert that informs the user that new census tract information is available" }, - "areaDetail.categorization.not.community.of.focus": { - "defaultMessage": "No", - "description": "the communities the score currently is not focused on" - }, - "areaDetail.categorization.send.feedback.email.body": { - "defaultMessage": "Please provide feedback about this census tract, including about the datasets, the data categories provided for this census tract, the communities who live in this census tract, and anything else relevant that CEQ should know about this census tract.", - "description": "link to send feedback" - }, - "areaDetail.categorization.send.feedback.title": { - "defaultMessage": "Send feedback", - "description": "link to send feedback" - }, - "areaDetail.category.header.indicator": { - "defaultMessage": "Indicator", - "description": "header for each category" - }, - "areaDetail.category.header.percentile": { - "defaultMessage": "Percentile (0-100)", - "description": "header for each category" - }, - "areaDetail.geographicInfo.censusBlockGroup": { - "defaultMessage": "Census tract:", - "description": "the census tract id number of the feature selected" - }, - "areaDetail.geographicInfo.county": { - "defaultMessage": "County:", - "description": "the county of the feature selected" - }, - "areaDetail.geographicInfo.population": { - "defaultMessage": "Population:", - "description": "the population of the feature selected" - }, - "areaDetail.geographicInfo.state": { - "defaultMessage": "State:", - "description": "the state of the feature selected" - }, - "areaDetail.geographicInfo.territory": { - "defaultMessage": "Territory:", - "description": "the territory of the feature selected" - }, - "areaDetail.indicator.asthma": { - "defaultMessage": "Asthma", - "description": "have asthma or been diagnosed by a doctor to have asthma" - }, - "areaDetail.indicator.description.asthma": { - "defaultMessage": "Weighted percent of people who have been told they have asthma", - "description": "Number of people who have been told they have asthma" - }, - "areaDetail.indicator.description.diabetes": { - "defaultMessage": "Weighted percent of people ages 18 years and older who have diabetes other than diabetes during pregnancy", - "description": "People ages 18 years and older who have diabetes other than diabetes during pregnancy" - }, - "areaDetail.indicator.description.dieselPartMatter": { - "defaultMessage": "Diesel exhaust in the air", - "description": "Diesel exhaust in the air" - }, - "areaDetail.indicator.description.energyBurden": { - "defaultMessage": "Average annual energy costs divided by household income", - "description": "Energy costs divided by household income" - }, - "areaDetail.indicator.description.exp.ag.loss": { - "defaultMessage": "Economic loss rate to agriculture resulting from natural hazards", - "description": "Economic loss rate to agriculture resulting from natural hazards" - }, - "areaDetail.indicator.description.exp.bld.loss": { - "defaultMessage": "Economic loss rate to buildings resulting from natural hazards", - "description": "Economic loss rate to buildings resulting from natural hazards" - }, - "areaDetail.indicator.description.exp.pop.loss": { - "defaultMessage": "Rate of fatalities and injuries resulting from natural hazards each year", - "description": "Economic loss rate to the population in fatalities and injuries resulting from natural hazards" - }, - "areaDetail.indicator.description.heartDisease": { - "defaultMessage": "Weighted percent of people ages 18 years and older who have been told they have heart disease", - "description": "People ages 18 years and older who have been told they have heart disease" - }, - "areaDetail.indicator.description.high.ed": { - "defaultMessage": "Percent of population enrolled in college, university, or graduate school", - "description": "Percent of people ages 25 years or older whose education level is less than a high school diploma" - }, - "areaDetail.indicator.description.high.school": { - "defaultMessage": "Proportion of people ages 25 years or older whose education level is less than a high school diploma", - "description": "Percent of people ages 25 years or older whose education level is less than a high school diploma" - }, - "areaDetail.indicator.description.houseBurden": { - "defaultMessage": "Low income households spending more than 30% of income on housing", - "description": "Low income households spending more than 30% of income on housing" - }, - "areaDetail.indicator.description.leadPaint": { - "defaultMessage": "Percentile of number of homes built before 1960 that are not among the most expensive", - "description": "Pre-1960 housing" - }, - "areaDetail.indicator.description.lifeExpect": { - "defaultMessage": "Average number of years a person can expect to live", - "description": "Average number of years of life a person can expect to live" - }, - "areaDetail.indicator.description.ling.iso": { - "defaultMessage": "Percent of households where no one over the age 14 speaks English well", - "description": "Households in which no one age 14 and over speaks English only or also speaks \n a language other than English" - }, - "areaDetail.indicator.description.low.income": { - "defaultMessage": "Household income is less than or equal to twice the federal poverty level", - "description": "Household income is less than or equal to twice the federal poverty level" - }, - "areaDetail.indicator.description.low.med.income": { - "defaultMessage": "Median income calculated as a percent of the area’s median income", - "description": "Median income calculated as a percent of the area’s median income" - }, - "areaDetail.indicator.description.med.home.val": { - "defaultMessage": "Median home value in area", - "description": "Meidan home value in area" - }, - "areaDetail.indicator.description.pm25": { - "defaultMessage": "Fine inhalable particles, 2.5 micrometers and smaller", - "description": "Fine inhalable particles, 2.5 micrometers and smaller" - }, - "areaDetail.indicator.description.poverty": { - "defaultMessage": "Percent of a tract's population in households where the household income is at or below 100% of the Federal poverty level", - "description": "Percent of individuals in households where the household income is at or \n below 100% of the federal poverty level" - }, - "areaDetail.indicator.description.prox.haz": { - "defaultMessage": "Count of hazardous waste facilities within 5 kilometers", - "description": "Count of hazardous waste facilities within 5 kilometers" - }, - "areaDetail.indicator.description.prox.npl": { - "defaultMessage": "Proposed or listed NPL (Superfund) sites within 5 kilometers", - "description": "Proposed or listed NPL (Superfund) sites within 5 kilometers" - }, - "areaDetail.indicator.description.prox.rmp": { - "defaultMessage": "Risk Management Plan facilities within 5 kilometers", - "description": "Risk Management Plan facilities within 5 kilometers" - }, - "areaDetail.indicator.description.trafficVolume": { - "defaultMessage": "Count of vehicles at major roads within 500 meters", - "description": "Count of vehicles at major roads within 500 meters" - }, - "areaDetail.indicator.description.unemploy": { - "defaultMessage": "Number of unemployed people as a percentage of the labor force", - "description": "Number of unemployed people as a percentage of the labor force" - }, - "areaDetail.indicator.description.wasteWater": { - "defaultMessage": "Toxic concentrations at stream segments within 500 meters", - "description": "Toxic concentrations at stream segments within 500 meters" - }, - "areaDetail.indicator.diabetes": { - "defaultMessage": "Diabetes", - "description": "diabetes from dr or nurse" - }, - "areaDetail.indicator.dieselPartMatter": { - "defaultMessage": "Diesel particulate matter exposure", - "description": "Diesel particulate matter level in air" - }, - "areaDetail.indicator.energyBurden": { - "defaultMessage": "Energy burden", - "description": "Average annual energy cost ($) divided by household income" - }, - "areaDetail.indicator.exp.ag.loss": { - "defaultMessage": "Expected agriculture loss rate", - "description": "agriculture loss rate" - }, - "areaDetail.indicator.exp.bld.loss": { - "defaultMessage": "Expected building loss rate", - "description": "building loss rate" - }, - "areaDetail.indicator.exp.pop.loss": { - "defaultMessage": "Expected population loss rate", - "description": "population loss rate" - }, - "areaDetail.indicator.heartDisease": { - "defaultMessage": "Heart disease", - "description": "People ages 18 and up who report ever having been told by adoctor, nurse, or other health professionals that they had angina or coronary heart disease" - }, - "areaDetail.indicator.high.ed": { - "defaultMessage": "Higher ed enrollment rate", - "description": "Higher ed degree achievement rate" - }, - "areaDetail.indicator.high.school": { - "defaultMessage": "High school degree attainment rate", - "description": "High school degree achievement rate" - }, - "areaDetail.indicator.houseBurden": { - "defaultMessage": "Housing cost burden", - "description": "People ages 18 and up who report having been told by a doctor, nurse, or other health professionals that they have diabetes other than diabetes during pregnancy" - }, - "areaDetail.indicator.leadPaint": { - "defaultMessage": "Lead paint", - "description": "Housing units built pre-1960, used as an indicator of potential lead paint exposure in homes" - }, - "areaDetail.indicator.lifeExpect": { - "defaultMessage": "Low life expectancy", - "description": "Estimated years of life expectancy" - }, - "areaDetail.indicator.ling.iso": { - "defaultMessage": "Linguistic isolation", - "description": "Linguistic isolation" - }, - "areaDetail.indicator.low.income": { - "defaultMessage": "Low income", - "description": "low income" - }, - "areaDetail.indicator.low.med.income": { - "defaultMessage": "Low median income", - "description": "Low median income" - }, - "areaDetail.indicator.med.home.val": { - "defaultMessage": "Median home value", - "description": "Median home value of owner-occupied housing units in the area." - }, - "areaDetail.indicator.pm25": { - "defaultMessage": "PM2.5 in the air", - "description": "Fine inhalable particles, with diameters that are generally 2.5 micrometers and smaller" - }, - "areaDetail.indicator.poverty": { - "defaultMessage": "Poverty", - "description": "Unemployment" - }, - "areaDetail.indicator.prox.haz": { - "defaultMessage": "Proximity to hazardous waste facilities", - "description": "Count of hazardous waste facilities " - }, - "areaDetail.indicator.prox.npl": { - "defaultMessage": "Proximity to NPL sites", - "description": "Count of proposed or listed NPL " - }, - "areaDetail.indicator.prox.rmp": { - "defaultMessage": "Proximity to RMP facilities", - "description": "Count of proposed or listed RMP" - }, - "areaDetail.indicator.title.clean.energy": { - "defaultMessage": "Clean energy and energy efficiency", - "description": "Clean, efficient energy title" - }, - "areaDetail.indicator.title.clean.transport": { - "defaultMessage": "Clean transportation", - "description": "Clean transportation title" - }, - "areaDetail.indicator.title.clean.water": { - "defaultMessage": "Clean water and waste infrastructure", - "description": "Clean water and waste title" - }, - "areaDetail.indicator.title.climate": { - "defaultMessage": "Climate change", - "description": "Climate change title" - }, - "areaDetail.indicator.title.health.burden": { - "defaultMessage": "Health burdens", - "description": "Health burdens title" - }, - "areaDetail.indicator.title.legacy.pollution": { - "defaultMessage": "Legacy pollution", - "description": "Legacy pollution title" - }, - "areaDetail.indicator.title.sustain.house": { - "defaultMessage": "Sustainable housing", - "description": "Sustainable housing title" - }, - "areaDetail.indicator.title.work.dev": { - "defaultMessage": "Workforce development", - "description": "Workforce development title" - }, - "areaDetail.indicator.trafficVolume": { - "defaultMessage": "Traffic proximity and volume", - "description": "Count of vehicles (average annual daily traffic) at major roads within 500 meters, divided by distance in meters" - }, - "areaDetail.indicator.unemploy": { - "defaultMessage": "Unemployment", - "description": "Unemployment" - }, - "areaDetail.indicator.wasteWater": { - "defaultMessage": "Wastewater discharge", - "description": "Toxic concentrations at stream segments within 500 meters divided by distance in kilometers" - }, - "areaDetail.side.panel.version.title": { - "defaultMessage": "Methodology version {version}", - "description": "methodology version number" - }, - "banner.beta.info": { + "common.pages.banner.beta.info": { "defaultMessage": "It is an early, in-progress version of the tool with limited datasets that will be regularly updated.", - "description": "the main info of the beta banner" + "description": "Navigate to the about page. This is the main info of the beta banner" }, - "banner.beta.title": { + "common.pages.banner.beta.title": { "defaultMessage": "This is a beta site.", - "description": "the main title of the beta banner" + "description": "Navigate to the about page. This is the main title of the beta banner" }, - "categories.all.used.in.text": { - "defaultMessage": "All categories", - "description": "used in text for all methodologies" + "common.pages.console.error.stage.url": { + "defaultMessage": "Please check stage_hash value. It must be a 4 digit decimal value / 40 digit hexadecimal value", + "description": "Navigate to the about page. This is console error staging URL" }, - "category.asthma.description.text": { - "defaultMessage": "Weighted percent of people who answer “yes” to both of the following questions: “Have you ever been told by a doctor, nurse, or other health professional that you have asthma?” and “Do you still have asthma?”", - "description": "description text for asthma" + "common.pages.footer.arialabel": { + "defaultMessage": "Footer navigation", + "description": "Navigate to the about page. This is aria-label text for whole footer" }, - "category.diabetes.description.text": { - "defaultMessage": "Weighted percent of people ages 18 years and older who report having ever been told by a doctor, nurse, or other health professionals that they have diabetes other than diabetes during pregnancy.", - "description": "description text for diabetes" + "common.pages.footer.contactheader": { + "defaultMessage": "Contact", + "description": "Navigate to the about page. This is Footer column header" }, - "category.diesel.pm.description.text": { - "defaultMessage": "Mixture of particles that is part of diesel exhaust in the air. The value in the fields is the weight of these particles in micrograms per cubic meter.", - "description": "description text for diesel pm" + "common.pages.footer.findcontact": { + "defaultMessage": "Find a contact at USA.gov", + "description": "Navigate to the about page. This is Footer find contact link text" }, - "category.energy.burden.description.text": { - "defaultMessage": "Average annual energy cost per household ($) divided by average household income.", - "description": "description text for energy burden" + "common.pages.footer.findcontact.link": { + "defaultMessage": "https://www.usa.gov/", + "description": "Navigate to the about page. This is Footer find contact link text" }, - "category.exp.agr.loss.rate.description.text": { - "defaultMessage": "Percent of agriculture value at risk from losses due to fourteen types of natural hazards that have some link to climate change: avalanche, coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong wind, tornado, wildfire, and winter weather. Rate calculated by dividing the agriculture value at risk in a census tract by the total agriculture value in that census tract.", - "description": "description text for exp agr loss rate" + "common.pages.footer.foia.text": { + "defaultMessage": "Freedom of Information Act (FOIA)", + "description": "Navigate to the about page. This is Footer FOIA link text" }, - "category.exp.bld.loss.rate.description.text": { - "defaultMessage": "Percent of building value at risk from losses due to fourteen types of natural hazards that have some link to climate change: avalanche, coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong wind, tornado, wildfire, and winter weather. Rate calculated by dividing the building value at risk in a census tract by the total building value in that census tract.", - "description": "description text for exp bld loss rate" + "common.pages.footer.logo.title": { + "defaultMessage": "Council on Environmental Quality", + "description": "Navigate to the about page. This is Footer under logo" }, - "category.exp.pop.loss.rate.description.text": { - "defaultMessage": "Rate relative to the population of fatalities and injuries due to fourteen types of natural hazards each year that have some link to climate change: avalanche, coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong wind, tornado, wildfire, and winter weather. Population loss is defined as the Spatial Hazard Events and Losses or National Centers for Environmental Information’s (NCEI) reported number of fatalities and injuries caused by the hazard occurrence. To combine fatalities and injuries for the computation of population loss value, an injury is counted as one-tenth (1/10) of a fatality. The NCEI Storm Events Database classifies injuries and fatalities as direct or indirect. Both direct and indirect injuries and fatalities are counted as population loss. This total number of injuries and fatalities is then divided by the population in the census tract to get a per-capita rate of population risk.", - "description": "description text for exp pop loss rate" + "common.pages.footer.moreinfoheader": { + "defaultMessage": "More information", + "description": "Navigate to the about page. This is Footer column header" }, - "category.heart.disease.description.text": { - "defaultMessage": "Weighted percent of people ages 18 years and older who report ever having been told by a doctor, nurse, or other health professionals that they had angina or coronary heart disease.", - "description": "description text for heart disease" + "common.pages.footer.privacy.link": { + "defaultMessage": "https://www.whitehouse.gov/privacy/", + "description": "Navigate to the about page. This is Footer privacy policy link text" }, - "category.high.ed.enroll.rate.description.text": { - "defaultMessage": "Percent of people who are currently enrolled in college or graduate school.", - "description": "description text for low income" + "common.pages.footer.privacy.text": { + "defaultMessage": "Privacy Policy", + "description": "Navigate to the about page. This is Footer privacy policy link text" }, - "category.highschool.description.text": { - "defaultMessage": "Percent of people ages 25 years or older in a census tract whose education level is less than a high school diploma.", - "description": "description text for highschool" + "common.pages.footer.questionsheader": { + "defaultMessage": "Have a question about government services?", + "description": "Navigate to the about page. This is Footer column header" }, - "category.house.burden.description.text": { - "defaultMessage": "Percent of households in a census tract that are both earning less than 80% of HUD Area Median Family Income by county and are spending more than 30% of their income on housing costs.", - "description": "description text for housing burden" + "common.pages.footer.whitehouse.link": { + "defaultMessage": "https://www.whitehouse.gov/", + "description": "Navigate to the about page. This is Footer Whitehouse.gov link text" }, - "category.lead.paint.description.text": { - "defaultMessage": "Percent of housing units built pre-1960, used as an indicator of potential lead paint exposure in census tracts with median home values less than the 90th percentile.", - "description": "description text for lead paint" + "common.pages.footer.whitehouse.text": { + "defaultMessage": "Whitehouse.gov", + "description": "Navigate to the about page. This is Footer Whitehouse.gov link text" }, - "category.linguistic.iso.description.text": { - "defaultMessage": "Percent of households where no one over the age 14 speaks English well.", - "description": "description text for linguistic isolation" + "common.pages.footer.whitehouselogoalt": { + "defaultMessage": "Whitehouse logo", + "description": "Navigate to the about page. This is Footer Whitehouse logo alt text" }, - "category.low.income.description.text": { - "defaultMessage": "Percent of a census tract's population in households where household income is at or below 200% of the Federal poverty level.", - "description": "description text for low income" + "common.pages.header.about": { + "defaultMessage": "About", + "description": "Navigate to the about page. This is Header navigate item to the about page" }, - "category.low.life.expectancy.description.text": { - "defaultMessage": "Average number of years of life a person who has attained a given age can expect to live. {note}", - "description": "description text for low life expectancy" + "common.pages.header.contact": { + "defaultMessage": "Contact", + "description": "Navigate to the about page. This is Header navigate item to the Contact page" }, - "category.median.home.value.description.text": { - "defaultMessage": "Median home value of owner-occupied housing units in the census tract.", - "description": "description text for lead paint" - }, - "category.pm2.5.description.text": { - "defaultMessage": "Fine inhalable particles, with diameters that are generally 2.5 micrometers and smaller. The value in the fields is the weight of these particles in micrograms per cubic meter.", - "description": "description text for pm 2.5" - }, - "category.poverty.description.text": { - "defaultMessage": "Percent of a census tract's population in households where the household income is at or below 100% of the Federal poverty level.", - "description": "description text for poverty" - }, - "category.prox.haz.description.text": { - "defaultMessage": "Count of hazardous waste facilities (Treatment, Storage, and Disposal Facilities and Large Quantity Generators) within 5 kilometers (or nearest beyond 5 kilometers), each divided by distance in kilometers.", - "description": "description text for proximity to hazards" - }, - "category.prox.npl.description.text": { - "defaultMessage": "Count of proposed or listed NPL - also known as Superfund - sites within 5 kilometers (or nearest one beyond 5 kilometers), each divided by distance in kilometers.", - "description": "description text for proximity to npl" - }, - "category.prox.rmp.description.text": { - "defaultMessage": "Count of RMP (potential chemical accident management plan) facilities within 5 kilometers (or nearest one beyond 5 kilometers), each divided by distance in kilometers.", - "description": "description text for proximity to rmp" - }, - "category.source.cdc.places.link": { - "defaultMessage": "{sourceCdcPlacesLink} from {date16_19}", - "description": "source link for CDC Places" - }, - "category.source.cdc.sleep.link": { - "defaultMessage": "{sourceCdcSleepLink} from {date10_15}", - "description": "source link for CDC Sleep" - }, - "category.source.census.link.10": { - "defaultMessage": "{sourceCensusLink} from {date10}", - "description": "source link for Census ACS" - }, - "category.source.census.link.15": { - "defaultMessage": "{sourceCensusLink} from {date15_19}", - "description": "source link for Census ACS" - }, - "category.source.doe.lead.link": { - "defaultMessage": "{sourceDoeLeadLink} from {date18}", - "description": "source link for DOE FEMA" - }, - "category.source.dot.epa.link": { - "defaultMessage": "{sourceDotEpaLink} from {date17} as compiled by EPA's EJSCREEN", - "description": "source link for DOT EPA" - }, - "category.source.epa.cerclis.link": { - "defaultMessage": "{sourceEpaCerclisLink} from {date20} as compiled by EPA’s EJSCREEN", - "description": "source link for EPA CERCLIS" - }, - "category.source.epa.nata.link": { - "defaultMessage": "{sourceEpaOarLink} from {date14} as compiled by EPA's EJSCREEN", - "description": "source link for EPA NATA" - }, - "category.source.epa.oar.link": { - "defaultMessage": "{sourceEpaOarLink} from {date17} as compiled by EPA’s EJSCREEN, sourced from EPA National Air Toxics Assessment (NATA) and the U.S. Department of Transportation (DOT) traffic data", - "description": "source link for EPA OAR" - }, - "category.source.epa.rmp.link": { - "defaultMessage": "{sourceEpaRmpLink} from {date20} as compiled by EPA’s EJSCREEN", - "description": "source link for EPA RMP" - }, - "category.source.epa.rsei.link": { - "defaultMessage": "{sourceEpaRseiLink} from {date20} as compiled by EPA’s EJSCREEN", - "description": "source link for EPA RSEI" - }, - "category.source.epa.tsdf.link": { - "defaultMessage": "{sourceEpaTsdfLink} from {date20} calculated from EPA's RCRA database as compiled by EPA's EJSCREEN", - "description": "source link for EPA TSDF" - }, - "category.source.fema.link": { - "defaultMessage": "{sourceFemaLink} from {date14_21}", - "description": "source link for FEMA" - }, - "category.source.hud.link": { - "defaultMessage": "{sourceHudLink} from {date14_18}", - "description": "source link for HUD" - }, - "category.traffic.vol.description.text": { - "defaultMessage": "Count of vehicles (average annual daily traffic) at major roads within 500 meters, divided by distance in meters.", - "description": "description text for traffic volume" - }, - "category.unemploy.description.text": { - "defaultMessage": "Number of unemployed people as a percentage of the civilian labor force.", - "description": "description text for unemployment" - }, - "category.waste.water.description.text": { - "defaultMessage": "Risk-Screening Environmental Indicators (RSEI) modeled toxic concentrations at stream segments within 500 meters, divided by distance in kilometers.", - "description": "description text for waste water" - }, - "category.workforce.dev.description.text": { - "defaultMessage": "Median income of the census tract calculated as a percent of the area’s median income. {note}", - "description": "description text for workforce dev" - }, - "community.members.heading": { - "defaultMessage": "Community members", - "description": "sub heading of page" - }, - "community.members.info": { - "defaultMessage": "Explore data about communities across the U.S., including your own, and provide feedback on the tool.", - "description": "sub heading of page" - }, - "community.members.link": { + "common.pages.header.explore": { "defaultMessage": "Explore the tool", - "description": "link to explore the tool page" + "description": "Navigate to the about page. This is Header navigate item to the Explore the tool page" + }, + "common.pages.header.methodology": { + "defaultMessage": "Methodology & data", + "description": "Navigate to the about page. This is Header navigate item to the Methodology page" + }, + "common.pages.header.title.line1": { + "defaultMessage": "Climate and Economic Justice", + "description": "Navigate to the about page. This is Title in nav header line 1 of 2" + }, + "common.pages.header.title.line2": { + "defaultMessage": "Screening Tool", + "description": "Navigate to the about page. This is Title in nav header line 2 of 2" }, "contact.page.census.tract.feedback.para1": { - "defaultMessage": "To provide feedback about a specific census tract, either select the send feedback button after selecting a census tract on the {exploreLink} page or use the email address provided above. Please include the census tract ID, county, and state or territory information, in addition to your feedback.", - "description": "census tract feedback section" + "defaultMessage": "To provide feedback about a specific census tract, either select the send feedback button after selecting a census tract on the Explore the tool page or use the email address provided above. Please include the census tract ID, county, and state or territory information, in addition to your feedback.", + "description": "Navigate to the contact page, this is the census tract feedback section" }, "contact.page.census.tract.feedback.para2": { "defaultMessage": "If there are specific data indicators that could be improved or changed, please include that information in the body of the email.", - "description": "census tract feedback section" + "description": "Navigate to the contact page, this is the census tract feedback section" }, "contact.page.census.tract.feedback.para3": { - "defaultMessage": "In addition, you can provide feedback on the tool via this {improvementSurvey}.", - "description": "census tract feedback section" + "defaultMessage": "In addition, you can provide feedback on the tool via this survey.", + "description": "Navigate to the contact page, this is the census tract feedback section" }, "contact.page.census.tract.feedback.title": { "defaultMessage": "Census tract feedback", - "description": "census tract feedback section" + "description": "Navigate to the contact page, this is the census tract feedback section" + }, + "contact.page.fab.survey.text": { + "defaultMessage": "Help improve the site & data", + "description": "Navigate to the contact page, this is the text for floating action button" }, "contact.page.header.text": { "defaultMessage": "Contact", - "description": "contact page header text" + "description": "Navigate to the contact page, this is the contact page header text" }, "contact.page.sub.header.text": { "defaultMessage": "Email us", - "description": "contact page sub header text" + "description": "Navigate to the contact page, this is the contact page sub header text" }, "contact.page.title.text": { "defaultMessage": "Contact", - "description": "contact page title text" + "description": "Navigate to the contact page, this is the contact page title text" }, - "datasetCard.available.for": { - "defaultMessage": "Available for:", - "description": "label associated with available for which regions of the card" + "explore.page.side.panel.at.or.above.at.least.one": { + "defaultMessage": "At or above at least one threshold?", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. Click on a category to expand. This is the first question text around thresholds." }, - "datasetCard.date.range": { - "defaultMessage": "Date range:", - "description": "label associated with explaining the card" + "explore.page.side.panel.at.or.above.both.thresholds": { + "defaultMessage": "At or above both associated thresholds?", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. Click on a category to expand. This is the second question text around thresholds." }, - "datasetCard.responsible.party": { - "defaultMessage": "Responsible Party:", - "description": "label associated with explaining the card" + "explore.page.side.panel.exceed.burden.answer.no": { + "defaultMessage": "No", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. This will display NO if the census tract is disadvantaged" }, - "datasetCard.source": { - "defaultMessage": "Source:", - "description": "label associated with source of the card" + "explore.page.side.panel.exceed.burden.answer.yes": { + "defaultMessage": "Yes", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. This will display YES if the census tract is disadvantaged" }, - "datasetCard.used.in": { - "defaultMessage": "Used in:", - "description": "label associated with explaining the card" + "explore.page.side.panel.indicator.value.arrow.down.alt.text": { + "defaultMessage": "an icon for the down arrow", + "description": "image alt text for the down arrow" }, - "datasetContainer.additional.heading": { - "defaultMessage": "Additional Indicators", - "description": "additional indicators heading" + "explore.page.side.panel.indicator.value.arrow.up.alt.text": { + "defaultMessage": "an icon for the up arrow", + "description": "image alt text for the up arrow" }, - "datasetContainer.additional.info": { - "defaultMessage": "These datasets provide additional information about each community.", - "description": "additional indicator info" + "explore.page.side.panel.indicator.value.subtext.above": { + "defaultMessage": "above", + "description": "indicating above threshold" }, - "datasetContainer.heading": { - "defaultMessage": "Datasets used in beta methodology", - "description": "section heading of which datasets are used in cumulative score" + "explore.page.side.panel.indicator.value.subtext.below": { + "defaultMessage": "below", + "description": "indicating below threshold" }, - "datasetContainer.info": { - "defaultMessage": "The datasets used in the current version of the tool come from a variety of sources and were selected based on relevance, availability, and quality. The datasets seek to identify a range of human health, environmental, climate-related, and other impacts on communities.", - "description": "description of the dataset section" + "explore.page.side.panel.indicator.value.subtext.percent": { + "defaultMessage": "percent", + "description": "indicating percent units" }, - "download.draft.ptag.1": { - "defaultMessage": "{downloadDraft} of communities and datasets used (ZIP file will contain one .xlsx and one .csv, with a size of {downloadFileSize}). Last updated: {dateUpdated}.", - "description": "Download the current list of communities and datasets used." + "explore.page.side.panel.indicator.value.subtext.percentile": { + "defaultMessage": "percentile", + "description": "indicating percentile units" }, - "download.draft.ptag.2": { - "defaultMessage": "ZIP file will contain one .xlsx, one .csv, and one .pdf ({downloadFileSize}).", - "description": "Information on the contents and type of the download file" + "explore.page.side.panel.indicator.value.subtext.unavailable": { + "defaultMessage": "data is not available", + "description": "subtext for indicator when data is N/A" }, - "downloadPacket.button.text": { - "defaultMessage": "Download package", - "description": "download packet button text" + "explore.page.side.panel.indicator.value.unavailable.alt.text": { + "defaultMessage": "an icon to represent data is unavailable", + "description": "image alt text for unavailable icon" }, - "downloadPacket.header.text": { - "defaultMessage": "Draft communities list v{versionNumber} ({downloadFileSize})", - "description": "download packet header text" + "explore.page.side.panel.spacer.and": { + "defaultMessage": "AND", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. Click on a category to expand. This is the AND spacer around thresholds." }, - "downloadPacket.info.last.updated": { - "defaultMessage": "Last updated: {downloadLastUpdated}", - "description": "download packet info last updated" + "explore.tool.page.description.text": { + "defaultMessage": "Use the map to see communities that are identified as disadvantaged. The map uses publicly-available, nationally-consistent datasets. Learn more about the methodology and datasets that were used to identify disavantaged communities in the current version of the tool on the Methodology & data page.", + "description": "On the explore the tool page, the description of the page" }, - "downloadPacket.info.text": { - "defaultMessage": "The download package includes draft v{versionNumber} of the list of disadvantaged communities (.csv and .xlsx).", - "description": "download packet info text" + "explore.tool.page.heading.text": { + "defaultMessage": "Explore the tool", + "description": "On the explore the tool page, the heading of the page" }, - "explore.page.note.on.territories.intro": { + "explore.tool.page.label.text": { + "defaultMessage": "Disadvantaged community", + "description": "On the explore the tool page, the label of the legend" + }, + "explore.tool.page.legend.description.text": { + "defaultMessage": "Communities identified as disadvantaged by the tool are those that are marginalized, underserved, and overburdened by pollution. These communities are at or above the thresholds in one or more of eight categories of criteria.", + "description": "On the explore the tool page, the description of the legend" + }, + "explore.tool.page.map.search.placeholder.text": { + "defaultMessage": "Enter a city, state or ZIP", + "description": "On the explore the tool page, on the map, the placeholder text for search" + }, + "explore.tool.page.map.search.results.empty.text": { + "defaultMessage": "No location found. Please try again.", + "description": "On the explore the tool page, on the map, the text displaying message for no search results found" + }, + "explore.tool.page.map.territoryFocus.alaska.long": { + "defaultMessage": "Alaska", + "description": "On the explore the tool page, on the map, the full name indicating the bounds of Alaska" + }, + "explore.tool.page.map.territoryFocus.alaska.short": { + "defaultMessage": "AK", + "description": "On the explore the tool page, on the map, the abbreviated indicating the bounds of Alaska" + }, + "explore.tool.page.map.territoryFocus.american.samoa.long": { + "defaultMessage": "American Samoa", + "description": "On the explore the tool page, on the map, the full name indicating the bounds of American Somoa" + }, + "explore.tool.page.map.territoryFocus.american.samoa.short": { + "defaultMessage": "AS", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of American Somoa" + }, + "explore.tool.page.map.territoryFocus.commonwealth.nmp.long": { + "defaultMessage": "Commonwealth of Northern Mariana Islands", + "description": "On the explore the tool page, on the map, the full name indicating the bounds of Commonwealth of Northern Mariana Islands" + }, + "explore.tool.page.map.territoryFocus.commonwealth.nmp.short": { + "defaultMessage": "MP", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of Commonwealth of Northern Mariana Islands" + }, + "explore.tool.page.map.territoryFocus.guam.long": { + "defaultMessage": "Guam", + "description": "On the explore the tool page, on the map, the full name indicating the bounds of Guam" + }, + "explore.tool.page.map.territoryFocus.guam.short": { + "defaultMessage": "GU", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of Guam" + }, + "explore.tool.page.map.territoryFocus.hawaii.long": { + "defaultMessage": "Hawaii", + "description": "On the explore the tool page, on the map, the longer name indicating the bounds of Hawaii" + }, + "explore.tool.page.map.territoryFocus.hawaii.short": { + "defaultMessage": "HI", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of Hawaii" + }, + "explore.tool.page.map.territoryFocus.lower48.long": { + "defaultMessage": "Lower 48", + "description": "On the explore the tool page, on the map, the longer name indicating the bounds of the Lower 48 states" + }, + "explore.tool.page.map.territoryFocus.lower48.short": { + "defaultMessage": "48", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of \n the Lower 48 states\n " + }, + "explore.tool.page.map.territoryFocus.puerto_rico.long": { + "defaultMessage": "Puerto Rico", + "description": "On the explore the tool page, on the map, the full name indicating the bounds of Puerto Rico" + }, + "explore.tool.page.map.territoryFocus.puerto_rico.short": { + "defaultMessage": "PR", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of Puerto Rico" + }, + "explore.tool.page.map.territoryFocus.us.virgin.islands.long": { + "defaultMessage": "US Virgin Islands", + "description": "On the explore the tool page, on the map, the full name indicating the bounds of US Virgin Islands" + }, + "explore.tool.page.map.territoryFocus.us.virgin.islands.short": { + "defaultMessage": "VI", + "description": "On the explore the tool page, on the map, the abbreviated name indicating the bounds of US Virgin Islands" + }, + "explore.tool.page.map.zoom.warning": { + "defaultMessage": "Zoom in to the state or regional level to see prioritized communities on the map.", + "description": "On the explore the tool page, on the map, the zoom warning on map" + }, + "explore.tool.page.side.panel.category.header.indicator": { + "defaultMessage": "Indicator", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show header for each category\n" + }, + "explore.tool.page.side.panel.category.header.percentile": { + "defaultMessage": "Percentile (0-100)", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show header for each category\n" + }, + "explore.tool.page.side.panel.community.of.focus": { + "defaultMessage": "YES", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the communities the score currently is focused on" + }, + "explore.tool.page.side.panel.geographicInfo.censusBlockGroup": { + "defaultMessage": "Census tract:", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the census tract id number of the feature selected" + }, + "explore.tool.page.side.panel.geographicInfo.county": { + "defaultMessage": "County:", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the county of the feature selected" + }, + "explore.tool.page.side.panel.geographicInfo.population": { + "defaultMessage": "Population:", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the population of the feature selected" + }, + "explore.tool.page.side.panel.geographicInfo.state": { + "defaultMessage": "State:", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the state of the feature selected" + }, + "explore.tool.page.side.panel.geographicInfo.territory": { + "defaultMessage": "Territory:", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the territory of the feature selected" + }, + "explore.tool.page.side.panel.indicator.asthma": { + "defaultMessage": "Asthma", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Asthma" + }, + "explore.tool.page.side.panel.indicator.description.asthma": { + "defaultMessage": "Weighted percent of people who have been told they have asthma", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Number of people who have been told they have asthma" + }, + "explore.tool.page.side.panel.indicator.description.diabetes": { + "defaultMessage": "Weighted percent of people ages 18 years and older who have diabetes other than diabetes during pregnancy", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of People ages 18 years and older who have diabetes other than \n diabetes during pregnancy" + }, + "explore.tool.page.side.panel.indicator.description.dieselPartMatter": { + "defaultMessage": "Diesel exhaust in the air", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Diesel exhaust in the air" + }, + "explore.tool.page.side.panel.indicator.description.energyBurden": { + "defaultMessage": "Average annual energy costs divided by household income", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Energy costs divided by household income" + }, + "explore.tool.page.side.panel.indicator.description.exp.ag.loss": { + "defaultMessage": "Economic loss rate to agricultural value resulting from natural hazards each year", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Economic loss rate to agriculture resulting from naturhazards\n " + }, + "explore.tool.page.side.panel.indicator.description.exp.bld.loss": { + "defaultMessage": "Economic loss rate to agricultural value resulting from natural hazards each year", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side \n panel will show an indicator desciption of Economic loss rate to buildings resulting from natural hazards" + }, + "explore.tool.page.side.panel.indicator.description.exp.pop.loss": { + "defaultMessage": "Rate of fatalities and injuries resulting from natural hazards each year", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Economic loss rate to the population in fatalities and \n injuries resulting from natural hazards" + }, + "explore.tool.page.side.panel.indicator.description.heartDisease": { + "defaultMessage": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Weighted percent of people ages 18 years and older who have been told they have heart disease", + "description": "People ages 18 years and older who have been told they have heart disease" + }, + "explore.tool.page.side.panel.indicator.description.high.ed": { + "defaultMessage": "Percent of the census tract's population 15 or older not enrolled in college, university, or graduate school", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Percent of the census tract's population 15 or older not \n enrolled in college, university, or graduate school" + }, + "explore.tool.page.side.panel.indicator.description.high.school": { + "defaultMessage": "Percent of people ages 25 years or older whose education level is less than a high school diploma", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Percent of people ages 25 years or older whose education level \n is less than a high school diploma" + }, + "explore.tool.page.side.panel.indicator.description.houseBurden": { + "defaultMessage": "Low income households spending more than 30% of income on housing", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Low income households spending more than 30% of income housing\n " + }, + "explore.tool.page.side.panel.indicator.description.leadPaint": { + "defaultMessage": "Percentile of number of homes built before 1960 that are not among the most expensive", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Pre-1960 housing" + }, + "explore.tool.page.side.panel.indicator.description.lifeExpect": { + "defaultMessage": "Average number of years a person can expect to live", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Average number of years of life a person can expect to live" + }, + "explore.tool.page.side.panel.indicator.description.ling.iso": { + "defaultMessage": "Percent of households where no one over the age 14 speaks English well", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Households in which no one age 14 and over speaks English only or also speaks a language other than English" + }, + "explore.tool.page.side.panel.indicator.description.low.income": { + "defaultMessage": "Household income is less than or equal to twice the federal poverty level", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Household income is less than or equal to twice the federal poverty level" + }, + "explore.tool.page.side.panel.indicator.description.low.med.income": { + "defaultMessage": "Median income calculated as a percent of the area’s median income", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Median income calculated as a percent of the area’s median income" + }, + "explore.tool.page.side.panel.indicator.description.med.home.val": { + "defaultMessage": "Median home value in area", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Meidan home value in area" + }, + "explore.tool.page.side.panel.indicator.description.pm25": { + "defaultMessage": "Fine inhalable particles, 2.5 micrometers or smaller", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Fine inhalable particles, 2.5 micrometers and smaller" + }, + "explore.tool.page.side.panel.indicator.description.poverty": { + "defaultMessage": "Percent of a census tract's population in households where the household income is at or below 100% of the Federal poverty level", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Percent of individuals in households where the household income is at or below 100% of the federal poverty level" + }, + "explore.tool.page.side.panel.indicator.description.prox.haz": { + "defaultMessage": "Count of hazardous waste facilities within 5 kilometers", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Count of hazardous waste facilities within 5 kilometers" + }, + "explore.tool.page.side.panel.indicator.description.prox.npl": { + "defaultMessage": "Proposed or listed NPL (Superfund) sites within 5 kilometers", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Proposed or listed NPL (Superfund) sites within 5 kilometers" + }, + "explore.tool.page.side.panel.indicator.description.prox.rmp": { + "defaultMessage": "RMP facilities within 5 kilometers", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Risk Management Plan facilities within 5 kilometers" + }, + "explore.tool.page.side.panel.indicator.description.trafficVolume": { + "defaultMessage": "Count of vehicles at major roads within 500 meters", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Count of vehicles at major roads within 500 meters" + }, + "explore.tool.page.side.panel.indicator.description.unemploy": { + "defaultMessage": "Number of unemployed people as a percentage of the labor force", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side \n panel will show an indicator desciption of Number of unemployed people as a percentage of the labor force" + }, + "explore.tool.page.side.panel.indicator.description.wasteWater": { + "defaultMessage": "Toxic concentrations at stream segments within 500 meters", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show an indicator desciption of Toxic concentrations at stream segments within 500 meters" + }, + "explore.tool.page.side.panel.indicator.diabetes": { + "defaultMessage": "Diabetes", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Diabetes" + }, + "explore.tool.page.side.panel.indicator.dieselPartMatter": { + "defaultMessage": "Diesel particulate matter exposure", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Diesel particulate matter exposure" + }, + "explore.tool.page.side.panel.indicator.energyBurden": { + "defaultMessage": "Energy burden", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Energy burden" + }, + "explore.tool.page.side.panel.indicator.exp.ag.loss": { + "defaultMessage": "Expected agriculture loss rate", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show agriculture loss rate\n" + }, + "explore.tool.page.side.panel.indicator.exp.bld.loss": { + "defaultMessage": "Expected building loss rate", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show building loss rate\n" + }, + "explore.tool.page.side.panel.indicator.exp.pop.loss": { + "defaultMessage": "Expected population loss rate", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show population loss rate\n" + }, + "explore.tool.page.side.panel.indicator.heartDisease": { + "defaultMessage": "Heart disease", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Heart disease" + }, + "explore.tool.page.side.panel.indicator.high.ed": { + "defaultMessage": "Higher education non-enrollement", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Higher ed degree achievement rate\n" + }, + "explore.tool.page.side.panel.indicator.high.school": { + "defaultMessage": "High school degree non-attainment", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show High school degree achievement rate" + }, + "explore.tool.page.side.panel.indicator.houseBurden": { + "defaultMessage": "Housing cost burden", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Housing cost burden" + }, + "explore.tool.page.side.panel.indicator.leadPaint": { + "defaultMessage": "Lead paint", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Lead paint" + }, + "explore.tool.page.side.panel.indicator.lifeExpect": { + "defaultMessage": "Low life expectancy", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Low life expectancy" + }, + "explore.tool.page.side.panel.indicator.ling.iso": { + "defaultMessage": "Linguistic isolation", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Linguistic isolation" + }, + "explore.tool.page.side.panel.indicator.low.income": { + "defaultMessage": "Low income", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show low income" + }, + "explore.tool.page.side.panel.indicator.low.med.income": { + "defaultMessage": "Low median income", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Low median income" + }, + "explore.tool.page.side.panel.indicator.med.home.val": { + "defaultMessage": "Median home value", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Housing cost burden" + }, + "explore.tool.page.side.panel.indicator.pm25": { + "defaultMessage": "PM2.5 in the air", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show PM2.5 in the air" + }, + "explore.tool.page.side.panel.indicator.poverty": { + "defaultMessage": "Poverty", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Unemployment" + }, + "explore.tool.page.side.panel.indicator.prox.haz": { + "defaultMessage": "Proximity to hazardous waste facilities", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Proximity to hazardous waste facilities" + }, + "explore.tool.page.side.panel.indicator.prox.npl": { + "defaultMessage": "Proximity to National Priorities List (NPL) sites", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Count of proposed or listed NPL " + }, + "explore.tool.page.side.panel.indicator.prox.rmp": { + "defaultMessage": "Proximity to Risk Management Plan (RMP) facilities", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Count of proposed or listed RMP" + }, + "explore.tool.page.side.panel.indicator.title.clean.energy": { + "defaultMessage": "Clean energy and energy efficiency", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Clean, efficient energy title\n" + }, + "explore.tool.page.side.panel.indicator.title.clean.transport": { + "defaultMessage": "Clean transit", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Clean transportation title\n" + }, + "explore.tool.page.side.panel.indicator.title.clean.water": { + "defaultMessage": "Clean water and waste infrastructure", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Clean water and waste title\n" + }, + "explore.tool.page.side.panel.indicator.title.climate": { + "defaultMessage": "Climate change", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Climate change title\n" + }, + "explore.tool.page.side.panel.indicator.title.health.burden": { + "defaultMessage": "Health burdens", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Health burdens title\n" + }, + "explore.tool.page.side.panel.indicator.title.legacy.pollution": { + "defaultMessage": "Legacy pollution", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Legacy pollution title\n" + }, + "explore.tool.page.side.panel.indicator.title.sustain.house": { + "defaultMessage": "Sustainable housing", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Sustainable housing title\n" + }, + "explore.tool.page.side.panel.indicator.title.work.dev": { + "defaultMessage": "Workforce development", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Workforce development title\n" + }, + "explore.tool.page.side.panel.indicator.trafficVolume": { + "defaultMessage": "Traffic proximity and volume", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Traffic proximity and volume" + }, + "explore.tool.page.side.panel.indicator.unemploy": { + "defaultMessage": "Unemployment", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Unemployment" + }, + "explore.tool.page.side.panel.indicator.wasteWater": { + "defaultMessage": "Wastewater discharge", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Wastewater discharge" + }, + "explore.tool.page.side.panel.info.alt.text.icon1": { + "defaultMessage": "An icon that has depicts pieces of a block selected mimicing the census block census tracts", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the first icon in this side panel" + }, + "explore.tool.page.side.panel.info.alt.text.icon2": { + "defaultMessage": "An icon that a bell curve or gaussian distribution", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the second icon in this side panel" + }, + "explore.tool.page.side.panel.info.alt.text.icon3": { + "defaultMessage": "An icon that depicts a part of pie chart being removed", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the third icon in this side panel" + }, + "explore.tool.page.side.panel.info.alt.text.icon4": { + "defaultMessage": "An icon that has an up arrow and a down arrow", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the forth icon in this side panel" + }, + "explore.tool.page.side.panel.info.para1": { + "defaultMessage": "This tool identifies communities that are marginalized, underserved, and overburdened by pollution. These communities are located in census tracts that are at or above the thresholds in one or more of eight categories of criteria.", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the first paragraph of this side panel" + }, + "explore.tool.page.side.panel.info.para2": { + "defaultMessage": "The tool uses census tracts that represent about 4,000 people, which is the smallest unit of geography for which consistent data can be displayed on the tool.", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the second paragraph of this side panel" + }, + "explore.tool.page.side.panel.info.para3": { + "defaultMessage": "The tool ranks each census tract using percentiles that show how much burden each tract experiences relative to all other tracts, for each criteria.", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the third paragraph of this side panel" + }, + "explore.tool.page.side.panel.info.para4": { + "defaultMessage": "Percentages are used for certain variables, i.e. those relating to high school achievement rate and to the share of individuals not currently enrolled in higher education.", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show Things to know, this is the forth paragraph of this side panel" + }, + "explore.tool.page.side.panel.info.para5": { + "defaultMessage": "Thresholds for each category determine if a tract should be identified as disadvantaged because it has exceeded a certain value for the relevant indicators.", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panelwill show Things to know, this is the fifth paragraph of this side pane" + }, + "explore.tool.page.side.panel.info.title": { + "defaultMessage": "Things to know", + "description": "introductory text of ways to use the map" + }, + "explore.tool.page.side.panel.is.community.of.focus": { + "defaultMessage": "Identified as disadvantaged?", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show asking IF the communities is focused on" + }, + "explore.tool.page.side.panel.not.community.of.focus": { + "defaultMessage": "No", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the communities the score currently is not focused on" + }, + "explore.tool.page.side.panel.num.categories.exceeded": { + "defaultMessage": "Disadvantaged in {numberOfDisCategories} categories", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show how many categories are exceeded" + }, + "explore.tool.page.side.panel.num.thresholds.exceeded": { + "defaultMessage": "At or above {numberOfThresholdExceed} thresholds", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show how many thresholds are exceeded" + }, + "explore.tool.page.side.panel.send.feedback.email.body": { + "defaultMessage": "Please provide feedback about this census tract, including about the datasets, the data categories provided for this census tract, the communities who live in this census tract, and anything else relevant that CEQ should know about this census tract.", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show link to send feedback\n" + }, + "explore.tool.page.side.panel.send.feedback.title": { + "defaultMessage": "Send feedback", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show link to send feedback" + }, + "explore.tool.page.side.panel.version.title": { + "defaultMessage": "Methodology version {version}", + "description": "Navigate to the explore the tool page. When the map is in view, click on the map. The side panel will show the methodology version number" + }, + "explore.tool.page.title.text": { + "defaultMessage": "Explore the tool", + "description": "On the explore the tool page, the title of the page" + }, + "explore.tool.page.under.map.download.draft.ptag.1": { + "defaultMessage": "Download the current list of communities and datasets used (ZIP file will contain one .xlsx and one .csv, with a size of {downloadFileSize} unzipped). Last updated: {dateUpdated}.", + "description": "\n Navigate to the explore the tool page. Under the map, you will see a link that is placed below the \n map that will download the data packet\n " + }, + "explore.tool.page.under.map.how.you.can.help.heading": { + "defaultMessage": "How you can help improve the tool", + "description": "Navigate to the explore the tool page. Under the map, you will see how one can help us improve the tool" + }, + "explore.tool.page.under.map.how.you.can.help.list.item.1": { + "defaultMessage": "View the Methodology & data page and send feedback.", + "description": "\n Navigate to the explore the tool page. Under the map, you will see give us feedback on our data and methodology\n " + }, + "explore.tool.page.under.map.how.you.can.help.list.item.2": { + "defaultMessage": "Use the tool to find communities and share your feedback.", + "description": "Navigate to the explore the tool page. Under the map, you will see share your feedback" + }, + "explore.tool.page.under.map.how.you.can.help.list.item.3": { + "defaultMessage": "Respond to our Request for Information on federalregister.gov.", + "description": "Navigate to the explore the tool page. Under the map, you will see share your feedback" + }, + "explore.tool.page.under.map.note.on.territories.intro": { "defaultMessage": "A note on the U.S. territories", - "description": "territories intro text" + "description": "Navigate to the explore the tool page. Under the map, you will see territories intro text" }, - "explore.page.note.on.territories.para.1": { - "defaultMessage": "The data sources described on the {dataMethLink} page are used to identify disadvantaged communities in all fifty states and the District of Columbia. However, not all of these data sources are currently available for the U.S. territories.", - "description": "territories paragraph 1" + "explore.tool.page.under.map.note.on.territories.para.1": { + "defaultMessage": "The data sources described on the Methodology & data page are used to identify disadvantaged communities in all fifty states and the District of Columbia. However, not all of these data sources are currently available for the U.S. territories.", + "description": "Navigate to the explore the tool page. Under the map, you will see territories paragraph 1" }, - "explore.page.note.on.territories.para.2": { + "explore.tool.page.under.map.note.on.territories.para.2": { "defaultMessage": "For Puerto Rico, the Census Bureau’s American Community Survey data from 2015-2019 are used for higher ed enrollment rate and all the other fields in the Training and Workforce Development category to identify disadvantaged communities. Data in the other categories are unavailable at this time.", - "description": "territories paragraph 2" + "description": "Navigate to the explore the tool page. Under the map, you will see territories paragraph 2" }, - "explore.page.note.on.territories.para.3": { + "explore.tool.page.under.map.note.on.territories.para.3": { "defaultMessage": "For American Samoa and the Northern Mariana Islands, the data used to identify disadvantaged communities are from the 2010 Decennial Census, the last reported data from the U.S. Census Bureau. Available data for these territories includes unemployment, poverty, low median income, and high school degree achievement rate fields in the Training and Workforce Development category.", - "description": "territories paragraph 3" + "description": "Navigate to the explore the tool page. Under the map, you will see territories paragraph 3" }, - "explore.page.note.on.territories.para.4": { + "explore.tool.page.under.map.note.on.territories.para.4": { "defaultMessage": "Work is currently underway to identify disadvantaged communities and update the tool accordingly for Guam and the U.S. Virgin Islands.", - "description": "territories paragraph 4" + "description": "Navigate to the explore the tool page. Under the map, you will see territories paragraph 4" }, - "explore.page.note.on.tribal.nations.intro": { + "explore.tool.page.under.map.note.on.tribal.nations.intro": { "defaultMessage": "A note on Tribal Nations", - "description": "tribal nations intro text" + "description": "Navigate to the explore the tool page. Under the map, you will see tribal nations intro text" }, - "explore.page.note.on.tribal.nations.para.1": { - "defaultMessage": "The tool covers all U.S. census tracts, including those located within Tribal Nations, to the extent that data is available (see our {dataMethLink} page for more information). CEQ is engaging in consultation and coordination with Tribal Nations on the beta version of the tool to provide Tribal Nations with meaningful opportunities for input, consistent with CEQ’s {actionPlanTribalNation}, {bidenMemoNat2Nat}, and Executive Order 13175 on {coordinateTribal}.", - "description": "tribal nations paragraph 1" - }, - "explore.page.threshold.count.exceed": { - "defaultMessage": "{disadvCount} of {totalCount} thresholds exceeded", - "description": "threshold exceeded count" - }, - "exploreTool.heading.text": { - "defaultMessage": "Explore the tool", - "description": "explore the tool heading text" - }, - "exploreTool.page.description": { - "defaultMessage": "Use the map to see communities that are identified as disadvantaged. The map uses publicly-available, nationally-consistent datasets. Learn more about the methodology and datasets that were used to identify disavantaged communities in the current version of the tool on the {methodologyLink} page.", - "description": "page description" - }, - "exploreTool.title.text": { - "defaultMessage": "Explore the tool", - "description": "explore the tool title text" + "explore.tool.page.under.map.note.on.tribal.nations.para.1": { + "defaultMessage": "The tool covers all U.S. census tracts, including those located within Tribal Nations, to the extent that data is available (see our Methodology & data page for more information). CEQ is engaging in consultation and coordination with Tribal Nations on the beta version of the tool to provide Tribal Nations with meaningful opportunities for input, consistent with CEQ’s Action Plan for Consultation and Coordination with Tribal Nations, President Biden’s Memorandum on Tribal Consultation and Strengthening Nation-to-Nation Consultation, and Executive Order 13175 on Consulation and Coordination With Indian Tribal Governments.", + "description": "Navigate to the explore the tool page. Under the map, you will see tribal nations paragraph 1" }, "fab.survey.text": { "defaultMessage": "Help improve the site & data", - "description": "text for floating action button" - }, - "federal.pm.heading": { - "defaultMessage": "Federal program managers", - "description": "sub heading of page" - }, - "federal.pm.info": { - "defaultMessage": "Download the tool’s current list of communities, explore data that may be useful to your program, and provide feedback on the tool.", - "description": "sub heading of page" - }, - "federal.pm.link": { - "defaultMessage": "Methodology & data", - "description": "link text to go to methodology page" - }, - "footer.arialabel": { - "defaultMessage": "Footer navigation", - "description": "aria-label text for whole footer" - }, - "footer.contactheader": { - "defaultMessage": "Contact", - "description": "Footer column header" - }, - "footer.findcontact": { - "defaultMessage": "Find a contact at USA.gov", - "description": "Footer find contact link text" - }, - "footer.findcontact.link": { - "defaultMessage": "https://www.usa.gov/", - "description": "Footer find contact link text" - }, - "footer.foia.text": { - "defaultMessage": "Freedom of Information Act (FOIA)", - "description": "Footer FOIA link text" - }, - "footer.logo.title": { - "defaultMessage": "Council on Environmental Quality", - "description": "Footer under logo" - }, - "footer.moreinfoheader": { - "defaultMessage": "More information", - "description": "Footer column header" - }, - "footer.privacy.link": { - "defaultMessage": "https://www.whitehouse.gov/privacy/", - "description": "Footer privacy policy link text" - }, - "footer.privacy.text": { - "defaultMessage": "Privacy Policy", - "description": "Footer privacy policy link text" - }, - "footer.questionsheader": { - "defaultMessage": "Have a question about government services?", - "description": "Footer column header" - }, - "footer.whitehouse.link": { - "defaultMessage": "https://www.whitehouse.gov/", - "description": "Footer Whitehouse.gov link text" - }, - "footer.whitehouse.text": { - "defaultMessage": "Whitehouse.gov", - "description": "Footer Whitehouse.gov link text" - }, - "footer.whitehouselogoalt": { - "defaultMessage": "Whitehouse logo", - "description": "Footer Whitehouse logo alt text" - }, - "getInvolved.title": { - "defaultMessage": "Get involved", - "description": "sub heading of page" - }, - "header.about": { - "defaultMessage": "About", - "description": "Header navigate item to the about page" - }, - "header.contact": { - "defaultMessage": "Contact", - "description": "Header navigate item to the Contact page" - }, - "header.explore": { - "defaultMessage": "Explore the tool", - "description": "Header navigate item to the Explore the tool page" - }, - "header.methodology": { - "defaultMessage": "Methodology & data", - "description": "Header navigate item to the Methodology page" - }, - "header.title.line1": { - "defaultMessage": "Climate and Economic Justice", - "description": "Title in nav header line 1 of 2" - }, - "header.title.line2": { - "defaultMessage": "Screening Tool", - "description": "Title in nav header line 2 of 2" - }, - "howToGetStarted.title": { - "defaultMessage": "How to get started", - "description": "sub heading of page" - }, - "index.heading.about.us": { - "defaultMessage": "About", - "description": "main heading for about page" - }, - "index.heading.justice40": { - "defaultMessage": "The Justice40 Initiative", - "description": "heading for about justice 40" - }, - "index.heading.screentool": { - "defaultMessage": "Screening tool", - "description": "heading for about screening tool" - }, - "indicator.categories.afford.house.if": { - "defaultMessage": "{if} at or above the 90th percentile for {lead} AND {medianHomeVal} is at or less than the 90th percentile OR at or above the 90th percentile for the {houseBur}", - "description": "if portion of the formula" + "description": "Navigate to the the public engagement page, this will be the text for floating action button" }, "indicator.categories.afford.house.title": { "defaultMessage": "Affordable and sustainable housing", - "description": "category title" - }, - "indicator.categories.afford.housing.methodology": { - "defaultMessage": "Affordable and sustainable housing category", - "description": "Affordable and sustainable housing methodology" - }, - "indicator.categories.clean.energy.if": { - "defaultMessage": "{if} at or above the 90th percentile for {energyCostBur} OR {pm25}", - "description": "if portion of the formula" - }, - "indicator.categories.clean.energy.methodology": { - "defaultMessage": "Clean energy and energy efficiency category", - "description": "Clean energy and energy efficiency methodology" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "indicator.categories.clean.energy.title": { "defaultMessage": "Clean energy and energy efficiency", - "description": "category title" - }, - "indicator.categories.clean.transport.if": { - "defaultMessage": "{if} at or above the 90th percentile for {dieselPM} or {traffic}", - "description": "if portion of the formula" - }, - "indicator.categories.clean.transport.methodology": { - "defaultMessage": "Clean transit category", - "description": "Clean transportation methodology" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "indicator.categories.clean.transport.title": { "defaultMessage": "Clean transit", - "description": "category title" - }, - "indicator.categories.clean.water.if": { - "defaultMessage": "{if} at or above the 90th percentile for {wasteWater}", - "description": "if portion of the formula" - }, - "indicator.categories.clean.water.methodology": { - "defaultMessage": "Critical clean water and waste infrastructure category", - "description": "Critical clean water and waste infrastructure methodology" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "indicator.categories.clean.water.title": { "defaultMessage": "Critical clean water and waste infrastructure", - "description": "category title" - }, - "indicator.categories.climate.change.if": { - "defaultMessage": "{if} at or above the 90th percentile for {expAgrLossRate} OR {expbuildLossRate} OR {expPopLossRate}", - "description": "if portion of the formula" - }, - "indicator.categories.climate.change.methodology": { - "defaultMessage": "Climate change category", - "description": "climate change methodology" - }, - "indicator.categories.climate.change.title": { - "defaultMessage": "Climate change", - "description": "category title" - }, - "indicator.categories.heading": { - "defaultMessage": "Categories", - "description": "category heading" - }, - "indicator.categories.health.burdens.if": { - "defaultMessage": "{if} at or above the 90th percentile for {asthma} OR {diabetes} OR {heart} OR {life}", - "description": "if portion of the formula" - }, - "indicator.categories.health.burdens.methodology": { - "defaultMessage": "Health burdens category", - "description": "Health burdens methodology" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "indicator.categories.health.burdens.title": { "defaultMessage": "Health burdens", - "description": "category title" - }, - "indicator.categories.legacy.pollute.methodology": { - "defaultMessage": "Reduction and remediation of legacy pollution category", - "description": "Reduction and remediation of legacy pollution methodology" - }, - "indicator.categories.legacy.pollution.if": { - "defaultMessage": "{if} at or above the 90th percentile for {proxHaz} OR {proxNPL} OR {proxRMP}", - "description": "if portion of the formula" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "indicator.categories.legacy.pollution.title": { "defaultMessage": "Reduction and remediation of legacy pollution", - "description": "category title" - }, - "indicator.categories.work.dev.if": { - "defaultMessage": "{if} at or above the 90th percentile for {lowMedInc} as a percentage of area median income OR {linIso} OR {unemploy} OR percent individuals in households at or below 100% Federal {poverty} level", - "description": "if portion of the formula" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "indicator.categories.work.dev.title": { "defaultMessage": "Training and workforce development", - "description": "category title" - }, - "indicator.categories.workforce.dev.methodology": { - "defaultMessage": "Training and workforce development category", - "description": "Training and workforce development" - }, - "join.open.source.info": { - "defaultMessage": "The tool’s code is open source, which means it is available for the public to view and contribute to it.", - "description": "info on joining open source community" - }, - "join.open.source.link": { - "defaultMessage": "Check it out on GitHub", - "description": "link to github repository" - }, - "join.opensource.heading": { - "defaultMessage": "Join the open source community", - "description": "join the community heading" - }, - "legend.info.priority.label": { - "defaultMessage": "Disadvantaged community", - "description": "the label of the prioritized community legend" - }, - "legend.info.threshold.label": { - "defaultMessage": "Communities identified as disadvantaged by the tool are those that are marginalized, underserved, and overburdened by pollution. These communities are at or above the thresholds in one or more of eight categories of criteria.", - "description": "the label of the threshold community legend" - }, - "low.income.heading": { - "defaultMessage": "Low Income", - "description": "title of section describing low income" - }, - "low.income.info": { - "defaultMessage": "At or above 65th percentile for percent of census tract population of households where household income is at or below 200% of the Federal poverty level", - "description": "description of low income" - }, - "map.search.placeholder.text": { - "defaultMessage": "Enter a city, state or ZIP", - "description": "placeholder text for search" - }, - "map.search.results.empty.text": { - "defaultMessage": "No location found. Please try again.", - "description": "text displaying message for no search results found" - }, - "map.territoryFocus.alaska.long": { - "defaultMessage": "Alaska", - "description": "The full name indicating the bounds of Alaska" - }, - "map.territoryFocus.alaska.short": { - "defaultMessage": "AK", - "description": "The abbreviated indicating the bounds of Alaska" - }, - "map.territoryFocus.american.samoa.long": { - "defaultMessage": "American Samoa", - "description": "The full name indicating the bounds of American Somoa" - }, - "map.territoryFocus.american.samoa.short": { - "defaultMessage": "AS", - "description": "The abbreviated name indicating the bounds of American Somoa" - }, - "map.territoryFocus.commonwealth.nmp.long": { - "defaultMessage": "Commonwealth of Northern Mariana Islands", - "description": "The full name indicating the bounds of Commonwealth of Northern Mariana Islands" - }, - "map.territoryFocus.commonwealth.nmp.short": { - "defaultMessage": "MP", - "description": "The abbreviated name indicating the bounds of Commonwealth of Northern Mariana Islands" + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" }, "map.territoryFocus.focusOn": { "defaultMessage": "Focus on {territory}", "description": "Focus on the bounds of a specific territory" }, - "map.territoryFocus.guam.long": { - "defaultMessage": "Guam", - "description": "The full name indicating the bounds of Guam" - }, - "map.territoryFocus.guam.short": { - "defaultMessage": "GU", - "description": "The abbreviated name indicating the bounds of Guam" - }, - "map.territoryFocus.hawaii.long": { - "defaultMessage": "Hawaii", - "description": "The longer name indicating the bounds of Hawaii" - }, - "map.territoryFocus.hawaii.short": { - "defaultMessage": "HI", - "description": "The abbreviated name indicating the bounds of Hawaii" - }, - "map.territoryFocus.lower48.long": { - "defaultMessage": "Lower 48", - "description": "The longer name indicating the bounds of the Lower 48 states" - }, - "map.territoryFocus.lower48.short": { - "defaultMessage": "48", - "description": "The abbreviated name indicating the bounds of the Lower 48 states" - }, - "map.territoryFocus.puerto_rico.long": { - "defaultMessage": "Puerto Rico", - "description": "The full name indicating the bounds of Puerto Rico" - }, - "map.territoryFocus.puerto_rico.short": { - "defaultMessage": "PR", - "description": "The abbreviated name indicating the bounds of Puerto Rico" - }, - "map.territoryFocus.us.virgin.islands.long": { - "defaultMessage": "US Virgin Islands", - "description": "The full name indicating the bounds of US Virgin Islands" - }, - "map.territoryFocus.us.virgin.islands.short": { - "defaultMessage": "VI", - "description": "The abbreviated name indicating the bounds of US Virgin Islands" - }, - "map.zoom.warning": { - "defaultMessage": "Zoom in to the state or regional level to see prioritized communities on the map.", - "description": "zoom warning on map" - }, - "mapIntro.censusBlockGroupDefinition": { - "defaultMessage": "A census tract is generally between 1,200 to 8,000 people, with an average size of 4,000 people. Census tracts are small, relatively permanent subdivisions of a county defined by the U.S. Census Bureau and usually cover a contiguous area. The census tract level currently represents the smallest geographical unit for which publicly-available and nationally-consistent datasets can be consistently displayed on the tool.", - "description": "cites the definition and helpful information about census groups" - }, - "mapIntro.didYouKnow": { - "defaultMessage": "Did you know?", - "description": "text prompting a cite paragraph" - }, - "mapIntro.mapIntroHeader": { - "defaultMessage": "Zoom and select a census tract to view data", - "description": "introductory text of ways to use the map" - }, - "methodologies.all.except.workforce.used.in.text": { - "defaultMessage": "All categories except for the training and workforce development catetory", - "description": "used in text for all methodologies" - }, - "methodology.category.card.title": { - "defaultMessage": "Communities are {idAsDisadv}", - "description": "category heading" - }, - "methodology.paage.category.and.clause.hs.ed.higher.ed": { - "defaultMessage": "{and} is at or less than 90% for {highSchoolRate} for adults 25 years and older AND at or below 20% for {highEdEnrollRate}", - "description": "and portion of the formula dealing with higher ed enrollment and high school degree rate" - }, - "methodology.paage.category.and.clause.low.inc.hs.ed": { - "defaultMessage": "{and} is above the 65th percentile for {lowIncome} AND at or below 20% for {highEdEnrollRate}", - "description": "and portion of the formula dealing with lower income and high school degree rate" - }, "methodology.page.categories.title": { "defaultMessage": "Communities are identified as disadvantaged by the current version of the tool for the purposes of the Justice40 Initiative if they are located in census tracts that are at or above the thresholds in one or more of eight categories of criteria below.", - "description": "methodology page explanation of the categories" + "description": "Navigate to the methodology page. This is the methodology page explanation of the categories" + }, + "methodology.page.category.and.clause.hs.ed.higher.ed": { + "defaultMessage": "AND 10% or more of adults 25 or older have not attained a high school degree AND 80% or more of adults 15 or older are not enrolled in higher education", + "description": "Navigate to the methodology page. Navigate to the category section. This is the portion of the formula dealing with higher ed enrollment and high school degree rate" + }, + "methodology.page.category.and.clause.low.inc.hs.ed": { + "defaultMessage": "AND is above the 65th percentile for low income AND 80% or more of adults 15 or older are not enrolled in higher education", + "description": "Navigate to the methodology page. Navigate to the category section. This is category portion of the formula dealing with lower income and high school degree rate" + }, + "methodology.page.category.asthma.description.text": { + "defaultMessage": "Weighted percent of people who answer “yes” to both of the following questions: “Have you ever been told by a doctor, nurse, or other health professional that you have asthma?” and “Do you still have asthma?”", + "description": "Navigate to the Methodology page. This is the description text for asthma" + }, + "methodology.page.category.card.title": { + "defaultMessage": "Communities are identified as disadvantaged", + "description": "Navigate to the methodology page. Navigate to the category section. This is category heading" + }, + "methodology.page.category.diabetes.description.text": { + "defaultMessage": "Weighted percent of people ages 18 years and older who report having ever been told by a doctor, nurse, or other health professionals that they have diabetes other than diabetes during pregnancy.", + "description": "Navigate to the Methodology page. This is the description text for diabetes" + }, + "methodology.page.category.diesel.pm.description.text": { + "defaultMessage": "Mixture of particles that is part of diesel exhaust in the air. The value in the fields is the weight of these particles in micrograms per cubic meter.", + "description": "Navigate to the Methodology page. This is the description text for diesel pm" + }, + "methodology.page.category.energy.burden.description.text": { + "defaultMessage": "Average annual energy cost per household ($) divided by average household income.", + "description": "Navigate to the Methodology page. This is the description text for energy burden" + }, + "methodology.page.category.exp.agr.loss.rate.description.text": { + "defaultMessage": "Percent of agriculture value at risk from losses due to fourteen types of natural hazards that have some link to climate change: avalanche, coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong wind, tornado, wildfire, and winter weather. Rate calculated by dividing the agriculture value at risk in a census tract by the total agriculture value in that census tract.", + "description": "Navigate to the Methodology page. This is the description text for exp agr loss rate" + }, + "methodology.page.category.exp.bld.loss.rate.description.text": { + "defaultMessage": "Percent of building value at risk from losses due to fourteen types of natural hazards that have some link to climate change: avalanche, coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong wind, tornado, wildfire, and winter weather. Rate calculated by dividing the building value at risk in a census tract by the total building value in that census tract.", + "description": "Navigate to the Methodology page. This is the description text for exp bld loss rate" + }, + "methodology.page.category.exp.pop.loss.rate.description.text": { + "defaultMessage": "Rate relative to the population of fatalities and injuries due to fourteen types of natural hazards each year that have some link to climate change: avalanche, coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong wind, tornado, wildfire, and winter weather. Population loss is defined as the Spatial Hazard Events and Losses or National Centers for Environmental Information’s (NCEI) reported number of fatalities and injuries caused by the hazard occurrence. To combine fatalities and injuries for the computation of population loss value, an injury is counted as one-tenth (1/10) of a fatality. The NCEI Storm Events Database classifies injuries and fatalities as direct or indirect. Both direct and indirect injuries and fatalities are counted as population loss. This total number of injuries and fatalities is then divided by the population in the census tract to get a per-capita rate of population risk.", + "description": "Navigate to the Methodology page. This is the description text for exp pop loss rate" + }, + "methodology.page.category.heart.disease.description.text": { + "defaultMessage": "Weighted percent of people ages 18 years and older who report ever having been told by a doctor, nurse, or other health professionals that they had angina or coronary heart disease.", + "description": "Navigate to the Methodology page. This is the description text for heart disease" + }, + "methodology.page.category.high.ed.enroll.rate.description.text": { + "defaultMessage": "Percent of people 15 or older who are not currently enrolled in college, university, or graduate school.", + "description": "Navigate to the Methodology page. This is the description text for high ed enrollment" + }, + "methodology.page.category.highschool.description.text": { + "defaultMessage": "Percent of people age 25 years or older in a census tract whose education level is less than a high school diploma.", + "description": "Navigate to the Methodology page. This is the description text for high school" + }, + "methodology.page.category.house.burden.description.text": { + "defaultMessage": "Percent of households in a census tract that are both earning less than 80% of HUD Area Median Family Income by county and are spending more than 30% of their income on housing costs.", + "description": "Navigate to the Methodology page. This is the description text for housing burden" + }, + "methodology.page.category.lead.paint.description.text": { + "defaultMessage": "Percent of housing units built pre-1960, used as an indicator of potential lead paint exposure in census tracts with median home values less than the 90th percentile.", + "description": "Navigate to the Methodology page. This is the description text for lead paint" + }, + "methodology.page.category.linguistic.iso.description.text": { + "defaultMessage": "Percent of households where no one over the age 14 speaks English well.", + "description": "Navigate to the Methodology page. This is the description text for linguistic isolation" + }, + "methodology.page.category.low.income.description.text": { + "defaultMessage": "Percent of a census tract's population in households where household income is at or below 200% of the Federal poverty level.", + "description": "Navigate to the Methodology page. This is the description text for low income" + }, + "methodology.page.category.low.life.expectancy.description.text": { + "defaultMessage": "Average number of years of life a person who has attained a given age can expect to live.", + "description": "Navigate to the Methodology page. This is the description text for low life expectancy" + }, + "methodology.page.category.low.life.expectancy.note.text": { + "defaultMessage": "Note: The percentiles for this dataset have been reversed so that census tracts with lower numbers have higher life expectancies and the census tracts with higher numbers have lower life expectancy when compared to life expectancy in the area.", + "description": "Navigate to the Methodology page. This is the note text for low life expectancy" + }, + "methodology.page.category.low.median.expectancy.note.text": { + "defaultMessage": "Note: The percentiles for this dataset have been reversed so that census tracts with lower numbers have higher median incomes and census tracts with the higher numbers have lower median income when compared to area median income.", + "description": "Navigate to the Methodology page. This is the note text for low median expectancy" + }, + "methodology.page.category.median.home.value.description.text": { + "defaultMessage": "Median home value of owner-occupied housing units in the census tract.", + "description": "Navigate to the Methodology page. This is the description text for lead paint" + }, + "methodology.page.category.pm2.5.description.text": { + "defaultMessage": "Fine inhalable particles, with diameters that are generally 2.5 micrometers and smaller. The value in the fields is the weight of these particles in micrograms per cubic meter.", + "description": "Navigate to the Methodology page. This is the description text for pm 2.5" + }, + "methodology.page.category.poverty.description.text": { + "defaultMessage": "Percent of a census tract's population in households where the household income is at or below 100% of the Federal poverty level.", + "description": "Navigate to the Methodology page. This is the description text for poverty" + }, + "methodology.page.category.prox.haz.description.text": { + "defaultMessage": "Count of hazardous waste facilities (Treatment, Storage, and Disposal Facilities and Large Quantity Generators) within 5 kilometers (or nearest beyond 5 kilometers), each divided by distance in kilometers.", + "description": "Navigate to the Methodology page. This is the description text for proximity to hazards" + }, + "methodology.page.category.prox.npl.description.text": { + "defaultMessage": "Count of proposed or listed NPL - also known as Superfund - sites within 5 kilometers (or nearest one beyond 5 kilometers), each divided by distance in kilometers.", + "description": "Navigate to the Methodology page. This is the description text for proximity to npl" + }, + "methodology.page.category.prox.rmp.description.text": { + "defaultMessage": "Count of RMP (potential chemical accident management plan) facilities within 5 kilometers (or nearest one beyond 5 kilometers), each divided by distance in kilometers.", + "description": "Navigate to the Methodology page. This is the description text for proximity to rmp" + }, + "methodology.page.category.source.cdc.places.link": { + "defaultMessage": "PLACES data from {date16_19}", + "description": "Navigate to the Methodology page. This is the source link for CDC Places" + }, + "methodology.page.category.source.cdc.sleep.link": { + "defaultMessage": "U.S. Small-area Life Expectancy Estimates Project (USALEEP) from {date10_15}", + "description": "Navigate to the Methodology page. This is the source link for CDC Sleep" + }, + "methodology.page.category.source.census.link.10": { + "defaultMessage": "American Community Survey from {date10}", + "description": "Navigate to the Methodology page. This is the source link for Census ACS" + }, + "methodology.page.category.source.census.link.15": { + "defaultMessage": "American Community Survey from {date15_19}", + "description": "Navigate to the Methodology page. This is the source link for Census ACS" + }, + "methodology.page.category.source.doe.lead.link": { + "defaultMessage": "LEAD Score from {date18}", + "description": "Navigate to the Methodology page. This is the source link for DOE FEMA" + }, + "methodology.page.category.source.dot.epa.link": { + "defaultMessage": "Traffic Data from {date17} as compiled by EPA's EJSCREEN", + "description": "Navigate to the Methodology page. This is the source link for DOT EPA" + }, + "methodology.page.category.source.epa.cerclis.link": { + "defaultMessage": "CERCLIS database from {date20} as compiled by EPA’s EJSCREEN", + "description": "Navigate to the Methodology page. This is the source link for EPA CERCLIS" + }, + "methodology.page.category.source.epa.nata.link": { + "defaultMessage": "National Air Toxics Assessment (NATA) from {date14} as compiled by EPA's EJSCREEN", + "description": "Navigate to the Methodology page. This is the source link for EPA NATA" + }, + "methodology.page.category.source.epa.oar.link": { + "defaultMessage": "Fusion of model and monitor data from {date17} as compiled by EPA’s EJSCREEN, sourced from EPA National Air Toxics Assessment (NATA) and the U.S. Department of Transportation (DOT) traffic data", + "description": "Navigate to the Methodology page. This is the source link for EPA OAR" + }, + "methodology.page.category.source.epa.rmp.link": { + "defaultMessage": "RMP database from {date20} as compiled by EPA’s EJSCREEN", + "description": "Navigate to the Methodology page. This is the source link for EPA RMP" + }, + "methodology.page.category.source.epa.rsei.link": { + "defaultMessage": "Risk-Screening Environmental Indicators (RSEI) Model from {date20} as compiled by EPA’s EJSCREEN", + "description": "Navigate to the Methodology page. This is the source link for EPA RSEI" + }, + "methodology.page.category.source.epa.tsdf.link": { + "defaultMessage": "Treatment, Storage, and Disposal Facilities (TSDF) data from {date20} calculated from EPA's RCRA database as compiled by EPA's EJSCREEN", + "description": "Navigate to the Methodology page. This is the source link for EPA TSDF" + }, + "methodology.page.category.source.fema.link": { + "defaultMessage": "National Risk Index from {date14_21}", + "description": "Navigate to the Methodology page. This is the source link for FEMA" + }, + "methodology.page.category.source.hud.link": { + "defaultMessage": "Comprehensive Housing Affordability Strategy dataset from {date14_18}", + "description": "Navigate to the Methodology page. This is the source link for HUD" + }, + "methodology.page.category.traffic.vol.description.text": { + "defaultMessage": "Count of vehicles (average annual daily traffic) at major roads within 500 meters, divided by distance in meters.", + "description": "Navigate to the Methodology page. This is the description text for traffic volume" + }, + "methodology.page.category.unemploy.description.text": { + "defaultMessage": "Number of unemployed people as a percentage of the civilian labor force.", + "description": "Navigate to the Methodology page. This is the description text for unemployment" + }, + "methodology.page.category.waste.water.description.text": { + "defaultMessage": "Risk-Screening Environmental Indicators (RSEI) modeled toxic concentrations at stream segments within 500 meters, divided by distance in kilometers.", + "description": "Navigate to the Methodology page. This is the description text for waste water" + }, + "methodology.page.category.workforce.dev.description.text": { + "defaultMessage": "Median income of the census tract calculated as a percent of the area’s median income.", + "description": "Navigate to the Methodology page. This is the description text for workforce dev" + }, + "methodology.page.dataset.indicator.asthma.title.text": { + "defaultMessage": "Asthma", + "description": "Navigate to the Methodology page. This is the title text for the asthma dataset" + }, + "methodology.page.dataset.indicator.diabetes.title.text": { + "defaultMessage": "Diabetes", + "description": "Navigate to the Methodology page. This is the title text for the diabetes dataset" + }, + "methodology.page.dataset.indicator.diesel.pm.title.text": { + "defaultMessage": "Diesel particulate matter exposure", + "description": "Navigate to the Methodology page. This is the title text for the diesel pm dataset" + }, + "methodology.page.dataset.indicator.energy.burden.title.text": { + "defaultMessage": "Energy burden", + "description": "Navigate to the Methodology page. This is the title text for the energy burden dataset" + }, + "methodology.page.dataset.indicator.exp.bld.loss.title.text": { + "defaultMessage": "Expected building loss rate", + "description": "Navigate to the Methodology page. This is the title text for the exp bld loss income dataset" + }, + "methodology.page.dataset.indicator.exp.pop.loss.title.text": { + "defaultMessage": "Expected population loss rate", + "description": "Navigate to the Methodology page. This is the title text for the exp pop loss income dataset" + }, + "methodology.page.dataset.indicator.expected.ag.loss.title.text": { + "defaultMessage": "Expected agriculture loss rate", + "description": "Navigate to the Methodology page. This is the title text for the expected agr loss rate income dataset" + }, + "methodology.page.dataset.indicator.heart.disease.title.text": { + "defaultMessage": "Heart disease", + "description": "Navigate to the Methodology page. This is the title text for the heart disease dataset" + }, + "methodology.page.dataset.indicator.high.ed.enroll.title.text": { + "defaultMessage": "Higher education non-enrollment", + "description": "Navigate to the Methodology page. This is the title text for the high ed enrollment dataset" + }, + "methodology.page.dataset.indicator.high.school.title.text": { + "defaultMessage": "High school degree non-attainment", + "description": "Navigate to the Methodology page. This is the title text for the high school dataset" + }, + "methodology.page.dataset.indicator.house.burden.title.text": { + "defaultMessage": "Housing cost burden", + "description": "Navigate to the Methodology page. This is the title text for the house burden dataset" + }, + "methodology.page.dataset.indicator.lead.paint.title.text": { + "defaultMessage": "Lead paint", + "description": "Navigate to the Methodology page. This is the title text for the lead paint dataset" + }, + "methodology.page.dataset.indicator.life.exp.title.text": { + "defaultMessage": "Low life expectancy", + "description": "Navigate to the Methodology page. This is the title text for the life exp dataset" + }, + "methodology.page.dataset.indicator.ling.iso.title.text": { + "defaultMessage": "Linguistic isolation", + "description": "Navigate to the Methodology page. This is the title text for the linguistic isolation dataset" + }, + "methodology.page.dataset.indicator.low.income.title.text": { + "defaultMessage": "Low income", + "description": "Navigate to the Methodology page. This is the title text for the low income dataset" + }, + "methodology.page.dataset.indicator.low.median.income.title.text": { + "defaultMessage": "Low median income", + "description": "Navigate to the Methodology page. This is the title text for the low median income dataset" + }, + "methodology.page.dataset.indicator.median.home.title.text": { + "defaultMessage": "Median home value", + "description": "Navigate to the Methodology page. This is the title text for the median home dataset" + }, + "methodology.page.dataset.indicator.pm25.title.text": { + "defaultMessage": "PM2.5 in the air", + "description": "Navigate to the Methodology page. This is the title text for the pm25 dataset" + }, + "methodology.page.dataset.indicator.poverty.title.text": { + "defaultMessage": "Poverty", + "description": "Navigate to the Methodology page. This is the title text for the poverty dataset" + }, + "methodology.page.dataset.indicator.prox.haz.title.text": { + "defaultMessage": "Proximity to hazardous waste facilities", + "description": "Navigate to the Methodology page. This is the title text for the prox haz dataset" + }, + "methodology.page.dataset.indicator.prox.npl.title.text": { + "defaultMessage": "Proximity to National Priorities List (NPL) sites", + "description": "Navigate to the Methodology page. This is the title text for the prox npl dataset" + }, + "methodology.page.dataset.indicator.prox.rpm.title.text": { + "defaultMessage": "Proximity to Risk Management Plan (RMP) facilities", + "description": "Navigate to the Methodology page. This is the title text for the prox rpm dataset" + }, + "methodology.page.dataset.indicator.traffic.volume.title.text": { + "defaultMessage": "Traffic proximity and volume", + "description": "Navigate to the Methodology page. This is the title text for the traffic.volume dataset" + }, + "methodology.page.dataset.indicator.unemploy.title.text": { + "defaultMessage": "Unemployment", + "description": "Navigate to the Methodology page. This is the title text for the unemployment dataset" + }, + "methodology.page.dataset.indicator.waste.water.title.text": { + "defaultMessage": "Wastewater discharge", + "description": "Navigate to the Methodology page. This is the title text for the waste water dataset" + }, + "methodology.page.datasetCard.available.for": { + "defaultMessage": "Available for:", + "description": "Navigate to the Methodology page. This is the label associated with available for which regions of the card" + }, + "methodology.page.datasetCard.date.range": { + "defaultMessage": "Date range:", + "description": "Navigate to the Methodology page. This is the label associated with explaining the card" + }, + "methodology.page.datasetCard.responsible.party": { + "defaultMessage": "Responsible Party:", + "description": "Navigate to the Methodology page. This is the label associated with explaining the card" + }, + "methodology.page.datasetCard.source": { + "defaultMessage": "Source:", + "description": "Navigate to the Methodology page. This is the label associated with source of the card" + }, + "methodology.page.datasetCard.used.in": { + "defaultMessage": "Used in:", + "description": "Navigate to the Methodology page. This is the label associated with explaining the card" + }, + "methodology.page.datasetContainer.additional.heading": { + "defaultMessage": "Additional Indicators", + "description": "Navigate to the Methodology page. This is the additional indicators heading" + }, + "methodology.page.datasetContainer.additional.info": { + "defaultMessage": "These datasets provide additional information about each community.", + "description": "Navigate to the Methodology page. This is the additional indicator info" + }, + "methodology.page.datasetContainer.heading": { + "defaultMessage": "Datasets used in beta methodology", + "description": "Navigate to the Methodology page. This is the section heading of which datasets are used in cumulative score" + }, + "methodology.page.datasetContainer.info": { + "defaultMessage": "The datasets used in the current version of the tool come from a variety of sources and were selected based on relevance, availability, and quality. The datasets seek to identify a range of human health, environmental, climate-related, and other impacts on communities.", + "description": "Navigate to the Methodology page. This is the description of the dataset section" + }, + "methodology.page.datasets.all.except.workforce.used.in.text": { + "defaultMessage": "All categories except for the training and workforce development catetory", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card Used In text for all methodologies except the workforce development" + }, + "methodology.page.datasets.all.used.in.text": { + "defaultMessage": "All categories", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card Used In text for all methodologies" + }, + "methodology.page.downloadPacket.button.text": { + "defaultMessage": "Download package", + "description": "Navigate to the methodology page. This is the download packet button text" + }, + "methodology.page.downloadPacket.header.text": { + "defaultMessage": "Draft communities list v{version} ({downloadFileSize} unzipped)", + "description": "Navigate to the methodology page. This is the download packet header text" + }, + "methodology.page.downloadPacket.info.last.updated": { + "defaultMessage": "Last updated: {downloadLastUpdated}", + "description": "Navigate to the methodology page. This is the download packet info last updated" + }, + "methodology.page.downloadPacket.info.text": { + "defaultMessage": "The download package includes draft v{version} of the list of disadvantaged communities (.csv and .xlsx).", + "description": "Navigate to the methodology page. This is the download packet info text" }, "methodology.page.formula.first": { - "defaultMessage": "{if} the census tract is above the threshold for one or more environmental or climate indicators", - "description": "the first part of the formula used in the methodology" + "defaultMessage": "IF the census tract is above the threshold for one or more environmental or climate indicators", + "description": "Navigate to the methodology page. This is the first part of the formula used in the methodology" }, "methodology.page.formula.intro": { "defaultMessage": "Under the current formula, a census tract will be identified as disadvantaged in one or more categories of criteria:", - "description": "methodology page introducing the formula" + "description": "Navigate to the methodology page. This is the methodology page introducing the formula" }, "methodology.page.formula.second": { - "defaultMessage": "{and} the census tract is above the threshold for the socioeconomic indicators", - "description": "the second part of the formula used in the methodology" - }, - "methodology.page.formula.third": { - "defaultMessage": "{then} the community is considered disadvantaged.", - "description": "the third part of the formula used in the methodology" + "defaultMessage": "AND the census tract is above the threshold for the socioeconomic indicators", + "description": "Navigate to the methodology page. This is the second part of the formula used in the methodology" }, "methodology.page.header.text": { "defaultMessage": "Methodology", - "description": "methodology page header text" + "description": "Navigate to the methodology page. This is the methodology page header text" + }, + "methodology.page.indicator.categories.afford.house.if": { + "defaultMessage": "IF at or above the 90th percentile for lead paint AND median home value is at or less than the 90th percentile OR at or above the 90th percentile for the housing cost burden", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.afford.housing.methodology": { + "defaultMessage": "Affordable and sustainable housing category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Affordable and sustainable housing methodology" + }, + "methodology.page.indicator.categories.clean.energy.if": { + "defaultMessage": "IF at or above the 90th percentile for energy burden OR PM2.5 in the air", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if if portion of the formula" + }, + "methodology.page.indicator.categories.clean.energy.methodology": { + "defaultMessage": "Clean energy and energy efficiency category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Clean energy and energy efficiency methodology" + }, + "methodology.page.indicator.categories.clean.transport.if": { + "defaultMessage": "IF at or above the 90th percentile for diesel particulate matter exposure or traffic proximity and volume", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.clean.transport.methodology": { + "defaultMessage": "Clean transit category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Clean transportation methodology" + }, + "methodology.page.indicator.categories.clean.water.if": { + "defaultMessage": "IF at or above the 90th percentile for wastewater discharge", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.clean.water.methodology": { + "defaultMessage": "Critical clean water and waste infrastructure category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Critical clean water and waste infrastructure methodology" + }, + "methodology.page.indicator.categories.climate.change.if": { + "defaultMessage": "IF at or above the 90th percentile for expected agriculture loss rate OR expected building loss rate OR expected population loss rate", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.climate.change.methodology": { + "defaultMessage": "Climate change category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the climate change methodology" + }, + "methodology.page.indicator.categories.climate.change.title": { + "defaultMessage": "Climate change", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the category title" + }, + "methodology.page.indicator.categories.heading": { + "defaultMessage": "Categories", + "description": "Navigate to the methodology page. Navigate to the category section. This is category heading" + }, + "methodology.page.indicator.categories.health.burdens.if": { + "defaultMessage": "IF at or above the 90th percentile for asthma OR diabetes OR heart disease OR low life expectancy", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.health.burdens.methodology": { + "defaultMessage": "Health burdens category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Health burdens methodology" + }, + "methodology.page.indicator.categories.legacy.pollute.methodology": { + "defaultMessage": "Reduction and remediation of legacy pollution category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Reduction and remediation of legacy pollution methodology" + }, + "methodology.page.indicator.categories.legacy.pollution.if": { + "defaultMessage": "IF at or above the 90th percentile for proximity to hazardous waste facilities OR proximity to National Priorities List (NPL) sites OR proximity to Risk Management Plan (RMP) facilities", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.work.dev.if": { + "defaultMessage": "IF at or above the 90th percentile for low median income as a percentage of area median income OR linguistic isolation OR unemployment OR percent individuals in households at or below 100% Federal poverty level", + "description": "Navigate to the methodology page. Navigate to the category section. This will set the if portion of the formula" + }, + "methodology.page.indicator.categories.workforce.dev.methodology": { + "defaultMessage": "Training and workforce development category", + "description": "Navigate to the methodology page. Navigate to the dataset section. This is the portion of the dataset card that populates the Used in section for the Training and workforce development" }, "methodology.page.paragraph": { "defaultMessage": "The current version of the tool identifies communities that are disadvantaged for the purposes of the Justice40 Initiative using census tracts, which are the smallest geographic unit for which publicly-available and nationally-consistent datasets can be consistently displayed on the tool. Census tract geographical boundaries are determined by the U.S. Census Bureau once every ten years. This tool utilizes the census tract boundaries from 2010 because they match the datasets used in the tool. The U.S. Census Bureau will update these census tract boundaries in 2020.", - "description": "methodology page paragraph" + "description": "Navigate to the methodology page. This is the methodology page paragraph" }, "methodology.page.return.to.top.link": { "defaultMessage": "Return to top", - "description": "link text to return to top" + "description": "Navigate to the Methodology page. This is the link text to return to top" }, "methodology.page.title.text": { "defaultMessage": "Methodology & data", - "description": "methodology page title text" + "description": "Navigate to the methodology page. This is the methodology page title text" }, "pageNotFound.Guidance.text": { "defaultMessage": "Try creating a page in", @@ -1017,102 +1233,98 @@ }, "public.eng.page.button.label": { "defaultMessage": "Public Engagement", - "description": "public engagement button label" + "description": "Navigate to the the public engagement page, this will be the public engagement button label" + }, + "public.eng.page.description1.text": { + "defaultMessage": "CEQ is hosting engagement opportunities to connect with the public about the current version of the tool. These sessions are an opportunity to obtain training on the tool or to provide feedback on the beta version of the tool. CEQ hopes that members of the public will join these engagements to learn about the tool, have their questions answered, and share feedback.", + "description": "Navigate to the the public engagement page, this will be the publiceng page description 1 text" + }, + "public.eng.page.description2.text": { + "defaultMessage": "Pre-registration is required to participate and speak at the sessions.", + "description": "Navigate to the the public engagement page, this will be the publiceng page description 2 text" + }, + "public.eng.page.description3.text": { + "defaultMessage": "As they become available, additional public trainings and engagement opportunities on the Climate and Economic Justice Screening Tool will also be posted on this page.", + "description": "Navigate to the the public engagement page, this will be the publiceng page description 3 text" + }, + "public.eng.page.event.info.label": { + "defaultMessage": "Event info", + "description": "Navigate to the the public engagement page, this will be the public engagement page event info label" }, "public.eng.page.event.listening.1.info": { "defaultMessage": "March 22nd (4:00 - 5:00 PM EST)", - "description": "public engagement page event listening session 1 date" + "description": "Navigate to the the public engagement page, this will be the public engagement page event listening session 1 date" }, "public.eng.page.event.listening.2.info": { "defaultMessage": "April 15th (4:00 - 5:00 PM EST)", - "description": "public engagement page event listening session 2 date" + "description": "Navigate to the the public engagement page, this will be the public engagement page event listening session 2 date" }, "public.eng.page.event.listening.sess.description": { "defaultMessage": "CEQ is hosting public listening sessions to seek input and feedback on the beta version of the tool, including on the datasets it includes and the methodology it uses. This feedback is critical to the development and enhancement of the tool. This feedback will help CEQ update and refine the tool to ensure that it reflects the environmental, climate and other challenges that communities are experiencing.", - "description": "public engagement page event listening session description" + "description": "Navigate to the the public engagement page, this will be the public engagement page event listening session description" }, "public.eng.page.event.listening.sess.name": { "defaultMessage": "listening session", - "description": "public engagement page event listening session name" + "description": "Navigate to the the public engagement page, this will be the public engagement page event listening session name" + }, + "public.eng.page.event.reglink.label": { + "defaultMessage": "Registration link", + "description": "Navigate to the the public engagement page, this will be the public engagment page event registration link label" }, "public.eng.page.event.training.1.info": { "defaultMessage": "March 9th (4:00 - 5:00 PM EST)", - "description": "public engagement page event training session 1 date" + "description": "Navigate to the the public engagement page, this will be the public engagement page event training session 1 date" }, "public.eng.page.event.training.2.info": { "defaultMessage": "March 10th (4:00 - 5:00 PM EST)", - "description": "public engagement page event training session 2 date" + "description": "Navigate to the the public engagement page, this will be the public engagement page event training session 2 date" }, "public.eng.page.event.training.3.info": { "defaultMessage": "March 16th (4:00 - 5:00 PM EST)", - "description": "public engagement page event training session 3 date" + "description": "Navigate to the the public engagement page, this will be the public engagement page event training session 3 date" }, "public.eng.page.event.training.description": { "defaultMessage": "The White House Council on Environmental Quality (CEQ), in partnership with the U.S. Digital Service, is hosting a series of 'Training Webinars' for users of the Climate and Economic Justice Screening Tool. These webinars are an opportunity for members of the public to learn how to use the current version of the tool. The presenters at these webinars will be available to provide technical support and address issues related to accessing and using the tool.", - "description": "public engagement page event training session description" + "description": "Navigate to the the public engagement page, this will be the public engagement page event training session description" }, "public.eng.page.event.training.sess.name": { "defaultMessage": "training session", - "description": "public engagement page event training session name" + "description": "Navigate to the the public engagement page, this will be the public engagement page event training session name" + }, + "public.eng.page.event.whejac.meeting.day.1.description": { + "defaultMessage": "Members of the public are encouraged to provide comments relevant to the beta version of the Climate and Economic Justice Screening Tool that was developed by CEQ and federal government agencies implementation of the Justice40 Initiative will be considered by the WHEJAC during the public meeting.", + "description": "public engagement page event WHEJAC day 1 description" + }, + "public.eng.page.event.whejac.meeting.day.1.name": { + "defaultMessage": "Public WHEJAC meeting day one", + "description": "public engagement page event WHEJAC meeting day 1 name" + }, + "public.eng.page.event.whejac.meeting.day.2.description": { + "defaultMessage": "Members of the public are encouraged to attend and hear updates and discussion from the WHEJAC Climate and Economic Justice Screening Tool workgroup, the Justice40 workgroup, and the WHEJAC business time and meeting conversation during which the WHEJAC will use reflect on the meeting proceedings and public comment period; provide workgroup updates; discuss action items and finalize next steps.", + "description": "public engagement page event WHEJAC day 2 description" + }, + "public.eng.page.event.whejac.meeting.day.2.name": { + "defaultMessage": "Public WHEJAC meeting day two", + "description": "public engagement page event WHEJAC meeting day 2 name" + }, + "public.eng.page.heading1.text": { + "defaultMessage": "Public engagement opportunities", + "description": "Navigate to the the public engagement page, this will be the publiceng page header text" + }, + "public.eng.page.sub.header2.text": { + "defaultMessage": "Find an event", + "description": "Navigate to the the public engagement page, this will be the publiceng page sub header text" }, "public.eng.page.tag.label": { - "defaultMessage": "NEW", - "description": "public engagement tag label" + "defaultMessage": "UPDATED", + "description": "Navigate to the the public engagement page, this will be the public engagement tag label" }, - "publiceng.page.description1.text": { - "defaultMessage": "CEQ is hosting engagement opportunities to connect with the public about the current version of the tool. These sessions are an opportunity to obtain training on the tool or to provide feedback on the beta version of the tool. CEQ hopes that members of the public will join these engagements to learn about the tool, have their questions answered, and share feedback.", - "description": "publiceng page description 1 text" - }, - "publiceng.page.description2.text": { - "defaultMessage": "Pre-registration is required to participate and speak at the sessions.", - "description": "publiceng page description 2 text" - }, - "publiceng.page.description3.text": { - "defaultMessage": "As they become available, additional public trainings and engagement opportunities on the Climate and Economic Justice Screening Tool will also be posted on this page.", - "description": "publiceng page description 3 text" - }, - "publiceng.page.event.info.label": { - "defaultMessage": "Event info", - "description": "public engagement page event info label" - }, - "publiceng.page.event.reglink.label": { - "defaultMessage": "Registration link", - "description": "public engagment page event registration link label" - }, - "publiceng.page.heading1.text": { + "public.eng.page.title.text": { "defaultMessage": "Public engagement opportunities", - "description": "publiceng page header text" + "description": "Navigate to the the public engagement page, this will be the publiceng page title text" }, - "publiceng.page.sub.header2.text": { - "defaultMessage": "Find an event", - "description": "publiceng page sub header text" - }, - "publiceng.page.title.text": { - "defaultMessage": "Public engagement opportunities", - "description": "publiceng page title text" - }, - "send.feedback.heading": { - "defaultMessage": "Send feedback", - "description": "sending feedback heading" - }, - "send.feedback.info": { - "defaultMessage": "Have ideas about data and information that reflect the experiences and conditions of your community?", - "description": "sending feedback information" - }, - "youCanHelpInfoText.heading": { - "defaultMessage": "How you can help improve the tool", - "description": "how one can help us improve the tool" - }, - "youCanHelpInfoText.list.item.1": { - "defaultMessage": "View the {dataMeth} page and send feedback.", - "description": "give us feedback on our data and methodology" - }, - "youCanHelpInfoText.list.item.2": { - "defaultMessage": "Use the tool to find communities and {shareFeedback}.", - "description": "share your feedback" - }, - "youCanHelpInfoText.list.item.3": { - "defaultMessage": "Respond to our Request for Information on {federalRegisterLink}.", - "description": "share your feedback" + "public.eng.page.whejac.meeting.day.1.info": { + "defaultMessage": "March 31th (3:00 - 7:30 PM EST)", + "description": "public engagement page event WHEJAC" } } diff --git a/client/src/pages/__snapshots__/contact.test.tsx.snap b/client/src/pages/__snapshots__/contact.test.tsx.snap index f0a90416..981fabe3 100644 --- a/client/src/pages/__snapshots__/contact.test.tsx.snap +++ b/client/src/pages/__snapshots__/contact.test.tsx.snap @@ -268,6 +268,40 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis +
          +
          +
          +

          + Improvements to the map on the Explore the tool page +

          +

          + View improvements made to the display of the information for each census tract and + + send feedback + + . +

          +
          +
          +
          - NEW + UPDATED