Add category header and updates from Living Copy (#1084)

* Add category header (Indicator and Percentile)

- add local styling
- override accordion-content styles to push into parent container
- intl copy
- update snapshots

* Add latest Living Copy

- refactor dataset cards to allow for any styling in description, used in and responsible party
- add percent for HS edu indicator
- updates snapshots

* Update copy from Living Copy doc

-update snapshots

* Add methodology to copy

* Remove link from readme file based on md checker

* Comment out certain markdown links from checker

* Comment out markdown links that render in browser
This commit is contained in:
Vim 2022-01-05 17:37:47 -05:00 committed by GitHub
commit 7a623101e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 1059 additions and 486 deletions

View file

@ -82,3 +82,21 @@ $sidePanelLabelFontColor: #171716;
font-size: medium;
}
}
// The following class is used in the AccordionItems in the AreaDetail component.
// The Accordion component (parent of AccordionItems) requires some CSS overrides.
// Local styling is not allowing the override.
// The override is needed to push into the bounds of the Accordion component's styles.
// To override this, in globals.scss, we set the this .categoryHeader's vertical alignment by
// setting styles in:
// .usa-accordion__content > *:first-child
// This first child of the accordion content is the category header:
.categoryHeader {
display: flex;
justify-content: space-between;
text-transform: uppercase;
font-size: small;
@include u-bg('gray-cool-5');
@include u-padding-left(2.5);
@include u-padding-right(2);
}

View file

@ -11,6 +11,7 @@ declare namespace MapModuleScssNamespace {
versionInfo: string;
showThresholdExceed:string;
hideThresholdExceed:string;
categoryHeader:string;
}
}

View file

@ -18,11 +18,20 @@ interface IAreaDetailProps {
properties: constants.J40Properties,
}
/**
* This interface is used as define the various fields for each indicator in the side panel
* label: the indicator label or title
* description: the description of the indicator used in the side panel
* value: the number from the geoJSON tile
* isDisadvagtaged: the flag from the geoJSON tile
* isPercent: is the value a percent or percentile
* */
export interface indicatorInfo {
label: string,
description: string,
value: number,
isDisadvagtaged: boolean,
isPercent?: boolean,
}
const AreaDetail = ({properties}:IAreaDetailProps) => {
@ -45,84 +54,84 @@ const AreaDetail = ({properties}:IAreaDetailProps) => {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.EXP_AG_LOSS),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.EXP_AG_LOSS),
value: properties[constants.EXP_AGRICULTURE_LOSS_PERCENTILE] ?
properties[constants.EXP_AGRICULTURE_LOSS_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_EXP_AGR_LOSS_AND_IS_LOW_INCOME] : 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[constants.EXP_BUILDING_LOSS_PERCENTILE] ?
properties[constants.EXP_BUILDING_LOSS_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_EXP_BLD_LOSS_AND_IS_LOW_INCOME] : 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[constants.EXP_POPULATION_LOSS_PERCENTILE] ?
properties[constants.EXP_POPULATION_LOSS_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_EXP_POP_LOSS_AND_IS_LOW_INCOME] : null,
};
const lowInc:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LOW_INCOME),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.LOW_INCOME),
value: properties[constants.POVERTY_BELOW_200_PERCENTILE] ?
properties[constants.POVERTY_BELOW_200_PERCENTILE] : null,
properties[constants.POVERTY_BELOW_200_PERCENTILE] : null,
isDisadvagtaged: properties[constants.IS_FEDERAL_POVERTY_LEVEL_200] ?
properties[constants.IS_FEDERAL_POVERTY_LEVEL_200] : null,
properties[constants.IS_FEDERAL_POVERTY_LEVEL_200] : null,
};
const energyBurden:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.ENERGY_BURDEN),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.ENERGY_BURDEN),
value: properties[constants.ENERGY_PERCENTILE] ?
properties[constants.ENERGY_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_ENERGY_BURDEN_AND_IS_LOW_INCOME] : 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[constants.PM25_PERCENTILE] ?
properties[constants.PM25_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_PM25_AND_IS_LOW_INCOME] : null,
};
const dieselPartMatter:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.DIESEL_PARTICULATE_MATTER),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.DIESEL_PARTICULATE_MATTER),
value: properties[constants.DIESEL_MATTER_PERCENTILE] ?
properties[constants.DIESEL_MATTER_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_DIESEL_PM_AND_IS_LOW_INCOME] : 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[constants.TRAFFIC_PERCENTILE] ?
properties[constants.TRAFFIC_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_TRAFFIC_PROX_AND_IS_LOW_INCOME] : null,
};
const houseBurden:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.HOUSE_BURDEN),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.HOUSE_BURDEN),
value: properties[constants.HOUSING_BURDEN_PROPERTY_PERCENTILE] ?
properties[constants.HOUSING_BURDEN_PROPERTY_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_HOUSE_BURDEN_AND_IS_LOW_INCOME] : 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[constants.LEAD_PAINT_PERCENTILE] ?
properties[constants.LEAD_PAINT_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_LEAD_PAINT_AND_MEDIAN_HOME_VAL_AND_IS_LOW_INCOME] : null,
};
// const medHomeVal:indicatorInfo = {
// label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.MED_HOME_VAL),
@ -136,108 +145,109 @@ const AreaDetail = ({properties}:IAreaDetailProps) => {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.PROX_HAZ),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.PROX_HAZ),
value: properties[constants.PROXIMITY_TSDF_SITES_PERCENTILE] ?
properties[constants.PROXIMITY_TSDF_SITES_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_HAZARD_WASTE_AND_IS_LOW_INCOME] : 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[constants.PROXIMITY_NPL_SITES_PERCENTILE] ?
properties[constants.PROXIMITY_NPL_SITES_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_SUPERFUND_AND_IS_LOW_INCOME] : 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[constants.PROXIMITY_RMP_SITES_PERCENTILE] ?
properties[constants.PROXIMITY_RMP_SITES_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_RMP_AND_IS_LOW_INCOME] : null,
};
const wasteWater:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.WASTE_WATER),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.WASTE_WATER),
value: properties[constants.WASTEWATER_PERCENTILE] ?
properties[constants.WASTEWATER_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_WASTEWATER_AND_IS_LOW_INCOME] : null,
};
const asthma:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.ASTHMA),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.ASTHMA),
value: properties[constants.ASTHMA_PERCENTILE] ?
properties[constants.ASTHMA_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_ASTHMA_AND_IS_LOW_INCOME] : 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[constants.DIABETES_PERCENTILE] ?
properties[constants.DIABETES_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_DIABETES_AND_IS_LOW_INCOME] : 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[constants.HEART_PERCENTILE] ?
properties[constants.HEART_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_HEART_DISEASE_AND_IS_LOW_INCOME] : 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[constants.LIFE_PERCENTILE] ?
properties[constants.LIFE_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_LOW_LIFE_EXP_AND_IS_LOW_INCOME] : null,
};
const lowMedInc:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LOW_MED_INC),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.LOW_MED_INCOME),
value: properties[constants.LOW_MEDIAN_INCOME_PERCENTILE] ?
properties[constants.LOW_MEDIAN_INCOME_PERCENTILE] : null,
properties[constants.LOW_MEDIAN_INCOME_PERCENTILE] : null,
isDisadvagtaged: properties[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,
properties[constants.IS_GTE_90_LOW_MEDIAN_INCOME_AND_LOW_HIGH_SCHOOL_EDU] : null,
};
const lingIso:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.LING_ISO),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.LING_ISO),
value: properties[constants.LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE] ?
properties[constants.LINGUISTIC_ISOLATION_PROPERTY_PERCENTILE] : null,
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,
properties[constants.IS_GTE_90_LINGUISITIC_ISO_AND_IS_LOW_INCOME] : null,
};
const unemploy:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.UNEMPLOY),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.UNEMPLOY),
value: properties[constants.UNEMPLOYMENT_PROPERTY_PERCENTILE] ?
properties[constants.UNEMPLOYMENT_PROPERTY_PERCENTILE] : null,
properties[constants.UNEMPLOYMENT_PROPERTY_PERCENTILE] : null,
isDisadvagtaged: properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] ?
properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] : null,
properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] : null,
};
const poverty:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.POVERTY),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.POVERTY),
value: properties[constants.POVERTY_PROPERTY_PERCENTILE] ?
properties[constants.POVERTY_PROPERTY_PERCENTILE] : null,
properties[constants.POVERTY_PROPERTY_PERCENTILE] : null,
isDisadvagtaged: properties[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,
properties[constants.IS_GTE_90_BELOW_100_POVERTY_AND_LOW_HIGH_SCHOOL_EDU] : null,
};
const highSchool:indicatorInfo = {
label: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATORS.HIGH_SCL),
description: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_INDICATOR_DESCRIPTION.HIGH_SKL),
value: properties[constants.HIGH_SCHOOL_PROPERTY_PERCENTILE] ?
properties[constants.HIGH_SCHOOL_PROPERTY_PERCENTILE] : null,
properties[constants.HIGH_SCHOOL_PROPERTY_PERCENTILE] : null,
isDisadvagtaged: properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] ?
properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] : null,
properties[constants.IS_GTE_90_UNEMPLOYMENT_AND_LOW_HIGH_SCHOOL_EDU] : null,
isPercent: true,
};
// Aggregate indicators based on categories
@ -247,56 +257,56 @@ const AreaDetail = ({properties}:IAreaDetailProps) => {
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLIMATE),
indicators: [expAgLoss, expBldLoss, expPopLoss, lowInc],
isDisadvagtaged: properties[constants.IS_CLIMATE_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_CLIMATE_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_CLIMATE_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'clean-energy',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLEAN_ENERGY),
indicators: [energyBurden, pm25, lowInc],
isDisadvagtaged: properties[constants.IS_ENERGY_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_ENERGY_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_ENERGY_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'clean-transport',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLEAN_TRANSPORT),
indicators: [dieselPartMatter, trafficVolume, lowInc],
isDisadvagtaged: properties[constants.IS_TRANSPORT_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_TRANSPORT_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_TRANSPORT_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'sustain-house',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.SUSTAIN_HOUSE),
indicators: [houseBurden, leadPaint, lowInc],
isDisadvagtaged: properties[constants.IS_HOUSING_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_HOUSING_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_HOUSING_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'leg-pollute',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.LEG_POLLUTE),
indicators: [proxHaz, proxNPL, proxRMP, lowInc],
isDisadvagtaged: properties[constants.IS_POLLUTION_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_POLLUTION_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_POLLUTION_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'clean-water',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.CLEAN_WATER),
indicators: [wasteWater, lowInc],
isDisadvagtaged: properties[constants.IS_WATER_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_WATER_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_WATER_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'health-burdens',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.HEALTH_BURDEN),
indicators: [asthma, diabetes, heartDisease, lifeExpect, lowInc],
isDisadvagtaged: properties[constants.IS_HEALTH_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_HEALTH_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_HEALTH_FACTOR_DISADVANTAGED_L] : null,
},
{
id: 'work-dev',
titleText: intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.WORK_DEV),
indicators: [lowMedInc, lingIso, unemploy, poverty, highSchool],
isDisadvagtaged: properties[constants.IS_WORKFORCE_FACTOR_DISADVANTAGED_L] ?
properties[constants.IS_WORKFORCE_FACTOR_DISADVANTAGED_L] : null,
properties[constants.IS_WORKFORCE_FACTOR_DISADVANTAGED_L] : null,
},
];
@ -308,6 +318,13 @@ const AreaDetail = ({properties}:IAreaDetailProps) => {
title: <Category name={category.titleText} isDisadvantaged={category.isDisadvagtaged}/>,
content: (
<>
{/* Category Header */}
<div className={styles.categoryHeader}>
<div>{intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.INDICATOR)}</div>
<div>{intl.formatMessage(EXPLORE_COPY.SIDE_PANEL_CATEGORY.PERCENTILE)}</div>
</div>
{/* Category Indicators */}
{category.indicators.map((indicator:any, index:number) => {
return <Indicator key={`ind${index}`} indicator={indicator}/>;
})}

View file

@ -87,6 +87,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="climate-change"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -190,6 +198,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="clean-energy"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -273,6 +289,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="clean-transport"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -356,6 +380,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="sustain-house"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -441,6 +473,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="leg-pollute"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -542,6 +582,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="clean-water"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -607,6 +655,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="health-burdens"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -731,6 +787,14 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
hidden=""
id="work-dev"
>
<div>
<div>
Indicator
</div>
<div>
Percentile (0-100)
</div>
</div>
<li
data-cy="indicatorBox"
>
@ -822,15 +886,16 @@ exports[`rendering of the AreaDetail checks if various text fields are visible 1
High school degree achievement rate
<div>
Percent of people ages 25 years or older whose education level is less than a high school diploma
Percent (not a percentile) of people ages 25 years or older whose education level is less than a
high school diploma
</div>
</div>
<div>
N/A
<sup>
<span />
</sup>
<span>
%
</span>
</div>
</div>
</li>

View file

@ -10,8 +10,8 @@ exports[`rendering of the BetaBanner checks if component renders 1`] = `
This is a beta site.
</span>
<span>
It is an early, in-progress version of the tool with limited datasets
that will be continuously updated.
It is an early, in-progress version of the tool with limited datasets that will
be regularly updated.
</span>
</div>
</div>

View file

@ -176,7 +176,7 @@ exports[`rendering of the Categories checks if component renders 1`] = `
low median home value
</a>
is at or less than
90th percentile OR at or above the 10th percentile for the
90th percentile OR at or above the 90th percentile for the
<a
href="#house-burden"
>

View file

@ -25,9 +25,7 @@ const DatasetCard = ({datasetCardProps}:IDatasetCardProps) => {
<span className={styles.datasetCardLabels}>
{intl.formatMessage(METHODOLOGY_COPY.DATASET_CARD_LABELS.RESP_PARTY)}
</span>
<a href={datasetCardProps.dataSourceURL} target={'_blank'} rel="noreferrer">
{datasetCardProps.respPartyLabel}
</a>
{datasetCardProps.responsibleParty}
</li>
<li className={styles.datasetCardListItem}>
<span className={styles.datasetCardLabels}>

View file

@ -10,9 +10,9 @@ exports[`rendering of indicator dataset card checks if component renders 1`] = `
</h3>
<div>
Percent of a block group's population in households where household income is at or below
200% of the federal poverty level.
Percent of a census tract's population in households where household income is at or below
200% of the federal poverty level.
</div>
<ul>
<li>
@ -24,7 +24,7 @@ exports[`rendering of indicator dataset card checks if component renders 1`] = `
rel="noreferrer"
target="_blank"
>
Census's American Community Survey.
Census's American Community Survey
</a>
</li>
<li>

View file

@ -40,9 +40,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Percent of a block group's population in households where household income is at or below
200% of the federal poverty level.
Percent of a census tract's population in households where household income is at or below
200% of the federal poverty level.
</div>
<ul>
<li>
@ -54,7 +54,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Census's American Community Survey.
Census's American Community Survey
</a>
</li>
<li>
@ -79,12 +79,12 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Percent of agriculture value at risk from losses due to natural hazards. Calculated by dividing
the agriculture value at risk in a census tract by the total agriculture value in that census
tract. Fourteen natural hazards that have some link to climate change include: avalanche,
coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide,
riverine flooding, strong wind, tornado, wildfire, and winter weather.
Percent of agriculture value at risk from losses due to natural hazards. Calculated by dividing
the agriculture value at risk in a census tract by the total agriculture value in that census
tract. Fourteen natural hazards that have some link to climate change include: avalanche,
coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide,
riverine flooding, strong wind, tornado, wildfire, and winter weather.
</div>
<ul>
<li>
@ -121,12 +121,12 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Percent of building value at risk from losses due to natural hazards. Calculated by dividing the
building value at risk in a census tract by the total building value in that census tract.
Fourteen natural hazards that have some link to climate change include: avalanche, coastal flooding,
cold wave, drought, hail, heat wave, hurricane, ice storm, landslide, riverine flooding, strong
wind, tornado, wildfire, and winter weather.
Percent of building value at risk from losses due to natural hazards. Calculated by dividing the
building value at risk in a census tract by the total building value in that census tract.
Fourteen natural hazards that have some link to climate change include: avalanche,
coastal flooding, cold wave, drought, hail, heat wave, hurricane, ice storm, landslide,
riverine flooding, strong wind, tornado, wildfire, and winter weather.
</div>
<ul>
<li>
@ -163,19 +163,18 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Rate relative to the population in fatalities and injuries due to natural hazards each year.
Fourteen natural hazards that have some link to climate change include: 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 Informations (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.
Rate relative to the population in fatalities and injuries due to natural hazards each year.
Fourteen natural hazards that have some link to climate change include: 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 Informations (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.
</div>
<ul>
<li>
@ -247,8 +246,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
PM2.5 in the air
</h3>
<div>
Fine inhalable particles, with diameters that are generally
2.5 micrometers and smaller.
Fine inhalable particles, with diameters that are generally 2.5 micrometers and smaller.
</div>
<ul>
<li>
@ -260,8 +260,11 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Environmental Protection Agency (EPA) Office of Air
and Radiation (OAR) fusion of model and monitor data as compiled by EPA's EJSCREEN
Environmental Protection Agency (EPA) Office of Air and Radiation (OAR) fusion of model and monitor
data as compiled by EPA's EJSCREEN, sourced from EPA National Air Toxics Assessment (NATA), 2017
U.S. Department of Transportation (DOT) traffic data
</a>
</li>
<li>
@ -285,7 +288,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Diesel particulate matter exposure
</h3>
<div>
Mixture of particles that is part of diesel exhaust in the air.
Mixture of particles that is part of diesel exhaust in the air.
</div>
<ul>
<li>
@ -297,8 +302,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Environmental Protection Agency (EPA) National Air Toxics Assessment (NATA)
as compiled by EPA's EJSCREEN
Environmental Protection Agency (EPA) National Air Toxics Assessment (NATA)
as compiled by EPA's EJSCREEN
</a>
</li>
<li>
@ -322,8 +329,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Traffic proximity and volume
</h3>
<div>
Count of vehicles (average annual daily traffic) at major roads
within 500 meters, divided by distance in meters (not km).
Count of vehicles (average annual daily traffic) at major roads
within 500 meters, divided by distance in meters (not km).
</div>
<ul>
<li>
@ -335,7 +344,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Department of Transportation (DOT) traffic data as compiled by EPA's EJSCREEN
Department of Transportation (DOT) traffic data as compiled by EPA's EJSCREEN
</a>
</li>
<li>
@ -360,9 +371,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
The percent of households in a census tract that are both earning less than 80% of HUD Area Median
Family Income by county and are paying greater than 30% of their income to housing costs.
The percent of households in a census tract that are both earning less than 80% of HUD Area Median
Family Income by county and are paying greater than 30% of their income to housing costs.
</div>
<ul>
<li>
@ -374,8 +385,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Department of Housing & Urban Developments
(HUD) Comprehensive Housing Affordability Strategy dataset
Department of Housing & Urban Developments
(HUD) Comprehensive Housing Affordability Strategy dataset
</a>
</li>
<li>
@ -400,8 +413,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Percent of housing units built pre-1960, used as an indicator of potential lead paint exposure in
tracts with median home values less than 90th percentile
Percent of housing units built pre-1960, used as an indicator of potential lead paint exposure in
tracts with median home values less than 90th percentile
</div>
<ul>
<li>
@ -437,7 +451,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Low median home value
</h3>
<div>
Median home value of owner-occupied housing units in the census tract.
Median home value of owner-occupied housing units in the census tract.
</div>
<ul>
<li>
@ -474,9 +490,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Count of hazardous waste facilities (Treatment, Storage, and Disposal Facilities and Large
Quantity Generators) within 5 km (or nearest beyond 5 km), each divided by distance in kilometers.
Count of hazardous waste facilities (Treatment, Storage, and Disposal Facilities and Large
Quantity Generators) within 5 km (or nearest beyond 5 km), each divided by distance in kilometers.
</div>
<ul>
<li>
@ -489,16 +505,16 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
target="_blank"
>
Environmental Protection Agency (EPA) Treatment Storage, and Disposal Facilities
(TSDF) data calculated from EPA RCRA info database as compiled by EPAs EJSCREEN
Environmental Protection Agency (EPA) Treatment Storage, and Disposal Facilities
(TSDF) data calculated from EPA RCRA info database as compiled by EPAs EJSCREEN
</a>
</li>
<li>
<span>
Date range:
</span>
2015-2020
2020
</li>
<li>
<span>
@ -516,8 +532,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Count of proposed or listed NPL - also known as superfund - sites within 5 km (or nearest one
beyond 5 km), each divided by distance in kilometers.
Count of proposed or listed NPL - also known as superfund - sites within 5 km (or nearest one
beyond 5 km), each divided by distance in kilometers.
</div>
<ul>
<li>
@ -529,7 +546,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Environmental Protection Agency (EPA) CERCLIS database as compiled by EPAs EJSCREEN
Environmental Protection Agency (EPA) CERCLIS database as compiled by EPAs EJSCREEN
</a>
</li>
<li>
@ -554,8 +573,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
Count of RMP (potential chemical accident management plan) facilities within 5 km (or nearest
one beyond 5 km), each divided by distance in kilometers.
Count of RMP (potential chemical accident management plan) facilities within 5 km (or nearest
one beyond 5 km), each divided by distance in kilometers.
</div>
<ul>
<li>
@ -567,7 +587,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Environmental Protection Agency (EPA) RMP database as compiled by EPAs EJSCREEN
Environmental Protection Agency (EPA) RMP database as compiled by EPAs EJSCREEN
</a>
</li>
<li>
@ -580,7 +602,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
<span>
Used in:
</span>
Affordable and sustainable housing methodology
Reduction and remediation of legacy pollution methodology
</li>
</ul>
</div>
@ -591,8 +613,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Wastewater discharge
</h3>
<div>
Risk-Screening Environmental Indicators (RSEI) modeled Toxic Concentrations at
stream segments within 500 meters, divided by distance in kilometers (km).
Risk-Screening Environmental Indicators (RSEI) modeled Toxic Concentrations at
stream segments within 500 meters, divided by distance in kilometers (km).
</div>
<ul>
<li>
@ -604,8 +628,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Environmental Protection Agency (EPA) Risk-Screening
Environmental Indicators (RSEI) Model as compiled by EPA's EJSCREEN
Environmental Protection Agency (EPA) Risk-Screening
Environmental Indicators (RSEI) Model as compiled by EPA's EJSCREEN
</a>
</li>
<li>
@ -629,10 +655,11 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Asthma
</h3>
<div>
Weighted percent of people who answer “yes” both
to both of the following questions: “Have you ever been told by a doctor,
nurse, or other health professional that you have asthma?” and the question
“Do you still have asthma?”
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 the question
“Do you still have asthma?”
</div>
<ul>
<li>
@ -644,7 +671,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Centers for Disease Control and Prevention (CDC) PLACES
Centers for Disease Control and Prevention (CDC) PLACES
</a>
</li>
<li>
@ -668,9 +697,11 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Diabetes
</h3>
<div>
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.
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.
</div>
<ul>
<li>
@ -682,7 +713,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Centers for Disease Control and Prevention (CDC) PLACES
Centers for Disease Control and Prevention (CDC) PLACES
</a>
</li>
<li>
@ -706,9 +739,11 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Heart disease
</h3>
<div>
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.
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.
</div>
<ul>
<li>
@ -720,7 +755,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
Centers for Disease Control and Prevention (CDC) PLACES
Centers for Disease Control and Prevention (CDC) PLACES
</a>
</li>
<li>
@ -745,13 +782,22 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
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 indicator indicate low burdens.
For percentile calculations, the percentile is calculated in reverse order, so that the tract with
the highest median income relative to area median income (lowest burden on this measure) is at the
0th percentile, and the tract with the lowest median income relative to area median income
(highest burden on this measure) is at the 100th percentile.
Average number of years of life a person who has attained a given age can expect to live.
<p>
<strong>
Note:
</strong>
Unlike most of the other datasets, high values of this indicator indicate low burdens.
For percentile calculations, the percentile is calculated in reverse order, so that the tract with
the highest median income relative to area median income (lowest burden on this measure) is at the
0th percentile, and the tract with the lowest median income relative to area median income
(highest burden on this measure) is at the 100th percentile.
</p>
</div>
<ul>
<li>
@ -763,7 +809,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
rel="noreferrer"
target="_blank"
>
CDCs U.S. Small-area Life Expectancy Estimates Project (USALEEP)
CDCs U.S. Small-area Life Expectancy Estimates Project (USALEEP)
</a>
</li>
<li>
@ -787,7 +835,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Low median Income
</h3>
<div>
Median income of the census tract calculated as a percent of the areas median income.
Median income of the census tract calculated as a percent of the areas median income.
</div>
<ul>
<li>
@ -812,7 +862,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
<span>
Used in:
</span>
Training and workforce development
Training and workforce development methodology
</li>
</ul>
</div>
@ -824,8 +874,8 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
</h3>
<div>
The percent of limited speaking households, which are households where no one over age 14 speaks English well.
The percent of limited speaking households, which are households where no one over age 14 speaks English well.
</div>
<ul>
<li>
@ -850,7 +900,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
<span>
Used in:
</span>
Training and workforce development
Training and workforce development methodology
</li>
</ul>
</div>
@ -861,7 +911,9 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Unemployment
</h3>
<div>
Number of unemployed people as a percentage of the civilian labor force
Number of unemployed people as a percentage of the civilian labor force
</div>
<ul>
<li>
@ -886,7 +938,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
<span>
Used in:
</span>
Training and workforce development
Training and workforce development methodology
</li>
</ul>
</div>
@ -897,7 +949,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
Poverty
</h3>
<div>
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 tract's population in households where the household income is at or below 100% of
the federal poverty level.
</div>
<ul>
<li>
@ -922,7 +977,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
<span>
Used in:
</span>
Training and workforce development
Training and workforce development methodology
</li>
</ul>
</div>
@ -933,8 +988,10 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
High school degree achievement rate
</h3>
<div>
Percent of people ages 25 years or older in a census tract whose
education level is less than a high school diploma.
Percent (not percentile) of people ages 25 years or older in a census tract whose
education level is less than a high school diploma.
</div>
<ul>
<li>
@ -959,7 +1016,7 @@ exports[`rendering of the DatasetContainer checks if various text fields are vis
<span>
Used in:
</span>
Training and workforce development
Training and workforce development methodology
</li>
</ul>
</div>

View file

@ -43,9 +43,12 @@ const Indicator = ({indicator}:IIndicator) => {
</div>
<div className={styles.indicatorValue}>
{readablePercentile(indicator.value)}
<sup className={styles.indicatorSuperscript}><span>
{getSuperscriptOrdinal(readablePercentile(indicator.value))}
</span></sup>
{indicator.isPercent ?
<span>{`%`}</span> :
<sup className={styles.indicatorSuperscript}>
<span>{getSuperscriptOrdinal(readablePercentile(indicator.value))}</span>
</sup>
}
</div>
</div>
</li>

View file

@ -150,8 +150,8 @@ exports[`rendering of the J40Header checks if component renders 1`] = `
This is a beta site.
</span>
<span>
It is an early, in-progress version of the tool with limited datasets
that will be continuously updated.
It is an early, in-progress version of the tool with limited datasets that will
be regularly updated.
</span>
</div>
</div>