diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..8dd45124ba --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,29 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/python +{ + "name": "Python 3", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye", + "features": { + "ghcr.io/devcontainers/features/node:1": { "version": "18.4.0" }, + "ghcr.io/devcontainers-contrib/features/protoc:1": {}, + "ghcr.io/dhoeric/features/google-cloud-cli:1": {} + + } + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "pip3 install --user -r requirements.txt", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} + diff --git a/deploy/git/mixer_hash.txt b/deploy/git/mixer_hash.txt index e69de29bb2..bd6ddea582 100644 --- a/deploy/git/mixer_hash.txt +++ b/deploy/git/mixer_hash.txt @@ -0,0 +1 @@ +5af6f16 diff --git a/deploy/git/website_hash.txt b/deploy/git/website_hash.txt index e69de29bb2..def8fa39f3 100644 --- a/deploy/git/website_hash.txt +++ b/deploy/git/website_hash.txt @@ -0,0 +1 @@ +c7ac2a1 diff --git a/deploy/gke/techsoup.yaml b/deploy/gke/techsoup.yaml new file mode 100644 index 0000000000..b62ebe9079 --- /dev/null +++ b/deploy/gke/techsoup.yaml @@ -0,0 +1,25 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# This is a yaml template to create gcp/gke configuration. +# Copy this file to `config.yaml` and use that. +project: techsoup-data-commons +ip: 34.111.225.45 +domain: datacommons.techsoup.org +region: + primary: us-central1 + others: +nodes: 1 + diff --git a/deploy/helm_charts/envs/techsoup.yaml b/deploy/helm_charts/envs/techsoup.yaml index 3ff8ea5dba..2d8df38496 100644 --- a/deploy/helm_charts/envs/techsoup.yaml +++ b/deploy/helm_charts/envs/techsoup.yaml @@ -22,7 +22,7 @@ namespace: website: image: project: techsoup-data-commons - tag: f5bad76 + tag: 1aa51df flaskEnv: custom replicas: 1 @@ -56,9 +56,12 @@ kgStoreConfig: project: techsoup-data-commons instance: dc-graph tables: - - freemeals_2023_04_11_14_09_49 - - mealsites_2023_05_25_20_51_17 + - mealsites_places_exp_2023_06_02_18_41_11 - usda_grocery_access_2023_05_22_11_28_04 + - fea_grocery_access_2023_06_01_18_49_10 + - fea_store_availabili_2023_06_06_12_25_22 + - irs_registered_nonpr_2023_06_07_11_02_15 + - techsoup_served_nonp_2023_06_07_13_27_15 svg: blocklistFile: ["dc/g/Uncategorized", "oecd/g/OECD"] diff --git a/server/__init__.py b/server/__init__.py index 6b0b85caa2..ed3870fb41 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -102,7 +102,8 @@ def register_routes_base_dc(app): def register_routes_custom_dc(app): ## apply the blueprints for custom dc instances - pass + from server.routes import ts_issue_landing + app.register_blueprint(ts_issue_landing.bp) def register_routes_disasters(app): diff --git a/server/app_env/custom.py b/server/app_env/custom.py index fd7106fb21..4a0f1c40a9 100644 --- a/server/app_env/custom.py +++ b/server/app_env/custom.py @@ -18,14 +18,14 @@ class Config(_base.Config): CUSTOM = True - NAME = "Custom Data Commons" + NAME = "Data Commons for Civil Society" OVERRIDE_CSS_PATH = '/custom_dc/custom/overrides.css' - LOGO_PATH = "/custom_dc/custom/logo.png" + LOGO_PATH = "/custom_dc/custom/techsoup-logo.svg" SHOW_DISASTER = False class LocalConfig(Config, local.Config): - LITE = True + #LITE = True API_ROOT = 'https://api.datacommons.org' # NEED TO DO THE FOLLOWING CHANGES: # 1. Send an email to to get an API key @@ -33,8 +33,8 @@ class LocalConfig(Config, local.Config): # 2. In the custom GCP project, store the API key in secret manager # `printf "" | gcloud secrets create mixer-api-key --data-file=-` # 3. Update SECRET_PROJECT to be the custom GCP project id. - SECRET_PROJECT = '' + SECRET_PROJECT = 'techsoup-data-commons' class ComposeConfig(Config, local.Config): - pass \ No newline at end of file + pass diff --git a/server/config/topic_page/climate/USA.textproto b/server/config/topic_page/climate/USA.textproto new file mode 100644 index 0000000000..13af381fcb --- /dev/null +++ b/server/config/topic_page/climate/USA.textproto @@ -0,0 +1,287 @@ +# Copyright 2023 TechSoup Global +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + + +metadata { + topic_id: "climate" + topic_name: "Climate Change" + + place_dcid: "country/USA" + place_group { + parent_place: "country/USA" + place_type: "State" + } + place_group { + parent_place: "country/USA" + place_type: "County" + } + place_group{ + parent_place: "country/USA" + place_type: "City" + } + contained_place_types { + key: "Country" + value: "State" + } + contained_place_types { + key: "State" + value: "County" + } + contained_place_types { + key: "County" + value: "City" + } + contained_place_types { + key: "City" + value: "CensusTract" + } +} + + +############ CATEGORY: Land and Water Use ############ + +categories { + title: "Land and Water Use" + + #---------- Land Use ----------# + blocks { + title: "Land Use" + description: "Over the course of human history, we have altered our local environments to suit our needs. The proportion of forests, bodies of water, protected lands, agricultural fields, are all examples of spaces that are constantly changing, some more than others. Tracking changes in land can be highly valuable when considering the great variety of climate change symptoms we face. The creation of land policy and management strategies to conserve and protect natural landscapes begin with considering data found in the following visualizations." + columns {tiles {type: MAP title: "Percent of Forest Covered Area (${date})" stat_var_key: "LandCoverFraction_Forest"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LandCoverFraction_Forest"}} + } + stat_var_spec {key: "LandCoverFraction_Forest" value {stat_var: "LandCoverFraction_Forest" name: "Percent of Forest Covered Area"}} + + blocks { + columns {tiles {type: MAP title: "Percent of Permanent Water Covered Area (${date})" stat_var_key: "LandCoverFraction_PermanentWater"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LandCoverFraction_PermanentWater"}} + } + stat_var_spec {key: "LandCoverFraction_PermanentWater" value {stat_var: "LandCoverFraction_PermanentWater" name: "Percent of Permanent Water Covered Area"}} + + blocks { + columns {tiles {type: MAP title: "Percent of Seasonal Water Covered Area (${date})" stat_var_key: "LandCoverFraction_SeasonalWater"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LandCoverFraction_SeasonalWater"}} + } + stat_var_spec {key: "LandCoverFraction_SeasonalWater" value {stat_var: "LandCoverFraction_SeasonalWater" name: "Percent of Seasonal Water Covered Area" }} + + #---------- Water Use ----------# + blocks { + title: "Water Use" + description: "Climate change is increasing the stressors on several of earth's water systems. Ground water and reservoirs are driven to depletion through increased demand from a range of extractive processes including domestic and industry usage, and agricultural production. Several lakes in the United States are experiencing lower levels of water, intermittent dry events, and saltwater intrusion. Managing water withdrawal is an important effort to combat water scarcity in the face of accelerating climate change." + columns {tiles {type: MAP title: "Rate of Water Withdrawal (${date})" stat_var_key: "WithdrawalRate_Water"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "WithdrawalRate_Water"}} + } + stat_var_spec {key: "WithdrawalRate_Water" value {stat_var: "WithdrawalRate_Water" name: "Rate of Water Withdrawal"}} + +} + +############ CATEGORY: Observed Temperatures ############ + +categories { + title: "Observed Temperatures" + + + #---------- Observed Temperatures ----------# + blocks { + description: "According to the National Oceanic and Atmospheric Administration, Earth's temperature has risen at an average of 0.14 degrees Fahrenheit per decade since 1880. Having an authoritative, verifiable baseline for temperatures allows us to look at how temperature has changed so far, and use that information to create helpful climate models that project what temperatures could look like in the future." + columns {tiles {type: MAP title: "Mean Temperature (${date})" stat_var_key: "Mean_Temperature"}} + columns {tiles {type: LINE stat_var_key: "Mean_Temperature"}} + } + stat_var_spec {key: "Mean_Temperature" value {stat_var: "Mean_Temperature" name: "Mean Temperature"}} + + blocks { + columns {tiles {type: LINE stat_var_key: "Mean_MaxTemperature"}} + columns { + tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Mean_MaxTemperature"} + tiles {type: MAP title: "Mean maximum temperature Celsius (${date})" stat_var_key: "Mean_MaxTemperature"} + } + } + stat_var_spec {key: "Mean_MaxTemperature" value {stat_var: "Mean_MaxTemperature" name: "Mean maximum temperature (Celsius)"}} + + blocks { + columns {tiles {type: MAP title: "Mean maximum temperature in forested areas (${date})" stat_var_key: "Mean_MaxTemperature_Forest"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Mean_MaxTemperature_Forest"}} + } + stat_var_spec {key: "Mean_MaxTemperature_Forest" value {stat_var: "Mean_MaxTemperature_Forest" name: "Mean maximum temperature in forested areas"}} + +} + +############ CATEGORY: Observed Emissions ############ + +categories { + title: "Observed Emissions" + description: "As more greenhouse gasses (GHGs) occupy our atmosphere, the more our atmosphere will trap energy from the sun, increasing temperatures globally. Tracking emissions and their source is an integral part to managing our environmental footprint. The phrase \"non biogenic emissions\" refers to any emissions that do not come from a natural source. There are several natural sources of Carbon Dioxide, methane, and other greenhouse gasses. However, human activities contribute a significantly larger amount of GHG emissions to our atmosphere, and are highlighted in the following visualizations." + + blocks { + columns {tiles {type: MAP title: "Annual Emissions of Non Biogenic Greenhouse Gases (${date})" stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}} + } + stat_var_spec {key: "Annual_Emissions_GreenhouseGas_NonBiogenic" value {stat_var: "Annual_Emissions_GreenhouseGas_NonBiogenic" name: "Annual Emissions of Non Biogenic Greenhouse Gases"}} + + blocks { + columns {tiles {type: MAP title: "Annual Emissions of Non Biogenic Carbon Dioxide (${date})" stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}} + } + stat_var_spec {key: "Annual_Emissions_CarbonDioxide_NonBiogenic" value {stat_var: "Annual_Emissions_CarbonDioxide_NonBiogenic" name: "Annual Emissions of Non Biogenic Carbon Dioxide"}} + + blocks { + columns {tiles {type: MAP title: "Annual Emissions of Non Biogenic Methane (${date})" stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}} + } + stat_var_spec {key: "Annual_Emissions_Methane_NonBiogenic" value {stat_var: "Annual_Emissions_Methane_NonBiogenic" name: "Annual Emissions of Non Biogenic Methane"}} +} + +############ CATEGORY: Climate Hazards ############ + +categories { + title: "Climate Hazards" + + #---------- Climate Hazard Damages ----------# + blocks { + title: "Climate Hazard Damages" + description: "Climate hazards are atmospheric events that cause damage to human settlements or the natural environment. These events include thunderstorms, cyclones, earthquakes, hail, snow, and drought to name a few. In some places of the U.S. there are insurance agencies that are beginning to recognize the costs of climate change and are integrating that into their processes. The following data helps visualize the monetary response to flooding hazards in the United States, sourced through the Federal Emergency Management Agency (FEMA)’s National Flood Insurance Program." + columns { + tiles {type: LINE title: "Settlement amount of natural hazard insurance for STRUCTURE DAMAGE within the 100 year flood zone (FEMA)" stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"} + #tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: false} stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"} + } + #columns {tiles {type: MAP title: "Settlement amount of natural hazard insurance for STRUCTURE DAMAGE within the 100 year flood zone (FEMA) (${date})" stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}} + } + stat_var_spec {key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent" value {stat_var: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent" name: "Settlement Amount (USD)"}} + + blocks { + columns {tiles {type: LINE title: "Settlement amount of natural hazard insurance for HOUSE CONTENT within the 100 year flood zone (FEMA)" stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}} + #columns {tiles {type: MAP title: "Settlement amount of natural hazard insurance for HOUSE CONTENT within the 100 year flood zone(FEMA) (${date})" stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}} + } + stat_var_spec {key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent" value {stat_var: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent" name: "Settlement Amount (USD)"}} + + #---------- Wildfires ----------# + blocks { + title: "Wildfires" + description: "Here we want to highlight what different types of data may be available for a specific climate hazard, the wildfire. Wildfires can cover wide expanses of land relatively quickly based on factors like wind speed and dry forest litter abundance. These events not only impact the immediate area, but can impact human health downwind due to ash/smoke traveling through the air." + columns {tiles {type: MAP title: "Annual Amount of Emissions: Wildfire, Non Biogenic Emission Source, PM 2.5 (${date})" stat_var_key: "Annual_Amount_Emissions_Wildfire_NonBiogenicEmissionSource_PM2.5"}} + columns {tiles {type: LINE stat_var_key: "Annual_Amount_Emissions_Wildfire_NonBiogenicEmissionSource_PM2.5"}} + } + stat_var_spec {key: "Annual_Amount_Emissions_Wildfire_NonBiogenicEmissionSource_PM2.5" value {stat_var: "Annual_Amount_Emissions_Wildfire_NonBiogenicEmissionSource_PM2.5" name: "Annual Amount of Emissions: Wildfire, Non Biogenic Emission Source, PM 2.5"}} + + blocks { + columns {tiles {type: LINE title: "Dense Smoke" stat_var_key: "Count_DenseSmokeEvent"}} + } + stat_var_spec {key: "Count_DenseSmokeEvent" value {stat_var: "Count_DenseSmokeEvent" name: "Cloud of Dense Smoke Event"}} + + blocks { + columns {tiles {type: LINE title: "Fire Incident Complex" stat_var_key: "Count_FireIncidentComplex"}} + } + stat_var_spec {key: "Count_FireIncidentComplex" value {stat_var: "Count_FireIncidentComplex" name: "Count of Fire Incident Complex Event"}} + + blocks { + columns {tiles {type: MAP title: "Area of forest that burned (Acres) (${date})" stat_var_key: "BurnedArea_FireEvent_Forest"}} + columns { + tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: false} stat_var_key: "BurnedArea_FireEvent_Forest"} + tiles {type: LINE stat_var_key: "BurnedArea_FireEvent_Forest"} + } + } + stat_var_spec {key: "BurnedArea_FireEvent_Forest" value {stat_var: "BurnedArea_FireEvent_Forest" name: "Area of forest that burned (Acres)"}} + + blocks { + columns {tiles {type: MAP title: "Percent of forest area that experienced high-severity fire (${date})" stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}} + columns { + tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: false} stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"} + tiles {type: LINE stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"} + } + } + stat_var_spec {key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity" value {stat_var: "Percent_BurnedArea_FireEvent_Forest_HighSeverity" name: "Percent of forest area that experienced high-severity fire"}} + + #---------- Marine and Water Hazards ----------# + blocks { + title: "Marine and Water Hazards" + description: "Hurricanes and coastal flooding are destructive, and sometimes life threatening events that our coastal communities face. As storms become more intense due to abundant energy in our atmosphere, coastal populations face the decision whether to retreat or to armor their coastline. Datasets like the following track these water hazards to enable us to make better decisions on how to address incoming storms." + columns {tiles {type: LINE title: "Hurricanes" stat_var_key: "Count_HurricaneEvent"}} + } + stat_var_spec {key: "Count_HurricaneEvent" value {stat_var: "Count_HurricaneEvent" name: "Count of Hurricane Event"}} + +# blocks { +# columns {tiles {type: MAP title: "Count of Flash Flood Event (${date})" stat_var_key: "Count_FlashFloodEvent"}} +# columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_FlashFloodEvent"}} +# } +# stat_var_spec {key: "Count_FlashFloodEvent" value {stat_var: "Count_FlashFloodEvent" name: "Count of Flash Flood Event"}} + + blocks { + columns {tiles {type: MAP title: "Area of Flood Event (${date})" stat_var_key: "Area_FloodEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Area_FloodEvent"}} + } + stat_var_spec {key: "Area_FloodEvent" value {stat_var: "Area_FloodEvent" name: "Area of Flood Event"}} + +# blocks { +# columns {tiles {type: LINE stat_var_key: "Count_HurricaneTyphoonEvent"}} +# } +# stat_var_spec {key: "Count_HurricaneTyphoonEvent" value {stat_var: "Count_HurricaneTyphoonEvent" name: "Count of Hurricane Typhoon Event"}} + +# blocks { +# columns {tiles {type: LINE stat_var_key: "Count_TropicalDepressionEvent"}} +# } +# stat_var_spec {key: "Count_TropicalDepressionEvent" value {stat_var: "Count_TropicalDepressionEvent" name: "Count of Tropical Depression Event"}} + + blocks { + columns {tiles {type: LINE title: "Tropical Storms" stat_var_key: "Count_TropicalStormEvent"}} + } + stat_var_spec {key: "Count_TropicalStormEvent" value {stat_var: "Count_TropicalStormEvent" name: "Count of Tropical Storm Event"}} + + blocks { + columns {tiles {type: LINE title: "Coastal Floods" stat_var_key: "Count_CoastalFloodEvent"}} + } + stat_var_spec {key: "Count_CoastalFloodEvent" value {stat_var: "Count_CoastalFloodEvent" name: "Count of Coastal Flood Event"}} + + #---------- Atmospheric Events/Hazards ----------# + blocks { + title: "Atmospheric Events/Hazards" + description: "Climate change plays a key role in impacting severe weather events worldwide. As our atmosphere traps more heat, extreme weather events will become more likely. The American Meteorological Society released their annual report in 2021 highlighting the occurrence of \"compound events\" where two weather events happen simultaneously. An example of this would be severe heat coupled with lack of rainfall. This weather coupling is a recipe for dry forest litter, which can lead to severe forest fires." + columns { + tiles {type: LINE title: "Excessive Heat (105° F or greater)" stat_var_key: "Count_ExcessiveHeatEvent"} + } + columns {tiles {type: LINE title: "Heat Waves" stat_var_key: "Count_HeatEvent"}} + } + stat_var_spec {key: "Count_ExcessiveHeatEvent" value {stat_var: "Count_ExcessiveHeatEvent" name: "Count of Excessive Heat Event"}} + stat_var_spec {key: "Count_HeatEvent" value {stat_var: "Count_HeatEvent" name: "Heat Waves"}} + + blocks { + columns {tiles {type: LINE title: "Extreme Cold Wind Chill" stat_var_key: "Count_ExtremeColdWindChillEvent"}} + columns {tiles {type: LINE title: "Heavy Rains" stat_var_key: "Count_HeavyRainEvent"}} + } + stat_var_spec {key: "Count_ExtremeColdWindChillEvent" value {stat_var: "Count_ExtremeColdWindChillEvent" name: "Count of Extreme Cold Wind Chill Event"}} + stat_var_spec {key: "Count_HeavyRainEvent" value {stat_var: "Count_HeavyRainEvent" name: "Heavy Rains"}} + + blocks { + #columns {tiles {type: MAP title: "Droughts (${date})" stat_var_key: "Count_DroughtEvent"}} + columns { + tiles {type: LINE title: "Droughts" stat_var_key: "Count_DroughtEvent"} + #tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_DroughtEvent"} + #tiles {type: BAR stat_var_key: "Count_DroughtEvent"} + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "_Funded by [Google.org](https://www.google.org)_" + } + } + } + + stat_var_spec {key: "Count_DroughtEvent" value {stat_var: "Count_DroughtEvent" name: "Droughts"}} +} + + diff --git a/server/config/topic_page/climate_allvars/USA.textproto b/server/config/topic_page/climate_allvars/USA.textproto new file mode 100644 index 0000000000..c6284ff8b3 --- /dev/null +++ b/server/config/topic_page/climate_allvars/USA.textproto @@ -0,0 +1,684 @@ +# Copyright 2023 TechSoup Global +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + + +## NOTES +## * Population Change var isn't in US + +metadata { + topic_id: "climate_allvars" + topic_name: "All Climate Variables" + + place_dcid: "country/USA" + place_group { + parent_place: "country/USA" + place_type: "State" + } + place_group { + parent_place: "country/USA" + place_type: "County" + } + contained_place_types { + key: "Country" + value: "State" + } + contained_place_types { + key: "State" + value: "County" + } + contained_place_types { + key: "County" + value: "CensusTract" + } +} + + + +############ CATEGORY: Emissions ############ + +categories { + title: "Emissions" + + #---------- Annual Emissions of Non Biogenic Carbon Dioxide ----------# + blocks {title: "Annual Emissions of Non Biogenic Carbon Dioxide" columns {tiles {type: DESCRIPTION description: "Stat Var = Annual_Emissions_CarbonDioxide_NonBiogenic"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Annual Emissions of Non Biogenic Carbon Dioxide (${date})" stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}} + columns {tiles {type: LINE stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic"}} + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_CarbonDioxide_NonBiogenic" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Annual_Emissions_CarbonDioxide_NonBiogenic" value {stat_var: "Annual_Emissions_CarbonDioxide_NonBiogenic"}} + + #---------- Annual Emissions of Non Biogenic Greenhouse Gases ----------# + blocks {title: "Annual Emissions of Non Biogenic Greenhouse Gases" columns {tiles {type: DESCRIPTION description: "Stat Var = Annual_Emissions_GreenhouseGas_NonBiogenic"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Annual Emissions of Non Biogenic Greenhouse Gases (${date})" stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}} + columns {tiles {type: LINE stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic"}} + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_GreenhouseGas_NonBiogenic" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Annual_Emissions_GreenhouseGas_NonBiogenic" value {stat_var: "Annual_Emissions_GreenhouseGas_NonBiogenic"}} + + #---------- Annual Emissions of Non Biogenic Methane ----------# + blocks {title: "Annual Emissions of Non Biogenic Methane" columns {tiles {type: DESCRIPTION description: "Stat Var = Annual_Emissions_Methane_NonBiogenic"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Annual Emissions of Non Biogenic Methane (${date})" stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}} + columns {tiles {type: LINE stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Annual_Emissions_Methane_NonBiogenic"}} + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_Methane_NonBiogenic" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_Methane_NonBiogenic" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Annual_Emissions_Methane_NonBiogenic" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Annual_Emissions_Methane_NonBiogenic" value {stat_var: "Annual_Emissions_Methane_NonBiogenic"}} + + # Demographic vars + stat_var_spec {key: "Count_Person" value {stat_var: "Count_Person"}} + stat_var_spec {key: "Count_Person_PerArea" value {stat_var: "Count_Person_PerArea"}} + stat_var_spec {key: "LifeExpectancy_Person" value {stat_var: "LifeExpectancy_Person"}} +} + +############ CATEGORY: Remote Sensing ############ + +categories { + title: "Remote Sensing" + + #---------- Mean maximum temperature in forested areas ----------# + blocks {title: "Mean maximum temperature in forested areas" columns {tiles {type: DESCRIPTION description: "Stat Var = Mean_MaxTemperature_Forest"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Mean maximum temperature in forested areas (${date})" stat_var_key: "Mean_MaxTemperature_Forest"}} + columns {tiles {type: LINE stat_var_key: "Mean_MaxTemperature_Forest"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Mean_MaxTemperature_Forest"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Mean_MaxTemperature_Forest"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Mean_MaxTemperature_Forest"}} + columns {tiles {type: SCATTER stat_var_key: "Mean_MaxTemperature_Forest" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Mean_MaxTemperature_Forest" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Mean_MaxTemperature_Forest" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Mean_MaxTemperature_Forest" value {stat_var: "Mean_MaxTemperature_Forest"}} + + #---------- Percent of Forest Covered Area ----------# + blocks {title: "Percent of Forest Covered Area" columns {tiles {type: DESCRIPTION description: "Stat Var = LandCoverFraction_Forest"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Percent of Forest Covered Area (${date})" stat_var_key: "LandCoverFraction_Forest"}} + columns {tiles {type: LINE stat_var_key: "LandCoverFraction_Forest"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "LandCoverFraction_Forest"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LandCoverFraction_Forest"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "LandCoverFraction_Forest"}} + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_Forest" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_Forest" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_Forest" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "LandCoverFraction_Forest" value {stat_var: "LandCoverFraction_Forest"}} + + #---------- Percent of Permanent Water Covered Area ----------# + blocks {title: "Percent of Permanent Water Covered Area" columns {tiles {type: DESCRIPTION description: "Stat Var = LandCoverFraction_PermanentWater"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Percent of Permanent Water Covered Area (${date})" stat_var_key: "LandCoverFraction_PermanentWater"}} + columns {tiles {type: LINE stat_var_key: "LandCoverFraction_PermanentWater"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "LandCoverFraction_PermanentWater"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LandCoverFraction_PermanentWater"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "LandCoverFraction_PermanentWater"}} + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_PermanentWater" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_PermanentWater" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_PermanentWater" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "LandCoverFraction_PermanentWater" value {stat_var: "LandCoverFraction_PermanentWater"}} + + #---------- Percent of Seasonal Water Covered Area ----------# + blocks {title: "Percent of Seasonal Water Covered Area" columns {tiles {type: DESCRIPTION description: "Stat Var = LandCoverFraction_SeasonalWater"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Percent of Seasonal Water Covered Area (${date})" stat_var_key: "LandCoverFraction_SeasonalWater"}} + columns {tiles {type: LINE stat_var_key: "LandCoverFraction_SeasonalWater"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "LandCoverFraction_SeasonalWater"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LandCoverFraction_SeasonalWater"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "LandCoverFraction_SeasonalWater"}} + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_SeasonalWater" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_SeasonalWater" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "LandCoverFraction_SeasonalWater" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "LandCoverFraction_SeasonalWater" value {stat_var: "LandCoverFraction_SeasonalWater"}} + + #---------- Rate of Water Withdrawal ----------# + blocks {title: "Rate of Water Withdrawal" columns {tiles {type: DESCRIPTION description: "Stat Var = WithdrawalRate_Water"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Rate of Water Withdrawal (${date})" stat_var_key: "WithdrawalRate_Water"}} + columns {tiles {type: LINE stat_var_key: "WithdrawalRate_Water"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "WithdrawalRate_Water"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "WithdrawalRate_Water"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "WithdrawalRate_Water"}} + columns {tiles {type: SCATTER stat_var_key: "WithdrawalRate_Water" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "WithdrawalRate_Water" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "WithdrawalRate_Water" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "WithdrawalRate_Water" value {stat_var: "WithdrawalRate_Water"}} + + #---------- Mean Temperature ----------# + blocks {title: "Mean Temperature" columns {tiles {type: DESCRIPTION description: "Stat Var = Mean_Temperature"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Mean Temperature (${date})" stat_var_key: "Mean_Temperature"}} + columns {tiles {type: LINE stat_var_key: "Mean_Temperature"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Mean_Temperature"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Mean_Temperature"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Mean_Temperature"}} + columns {tiles {type: SCATTER stat_var_key: "Mean_Temperature" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Mean_Temperature" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Mean_Temperature" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Mean_Temperature" value {stat_var: "Mean_Temperature"}} + + #---------- Mean maximum temperature ----------# + blocks {title: "Mean maximum temperature" columns {tiles {type: DESCRIPTION description: "Stat Var = Mean_MaxTemperature"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Mean maximum temperature (${date})" stat_var_key: "Mean_MaxTemperature"}} + columns {tiles {type: LINE stat_var_key: "Mean_MaxTemperature"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Mean_MaxTemperature"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Mean_MaxTemperature"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Mean_MaxTemperature"}} + columns {tiles {type: SCATTER stat_var_key: "Mean_MaxTemperature" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Mean_MaxTemperature" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Mean_MaxTemperature" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Mean_MaxTemperature" value {stat_var: "Mean_MaxTemperature"}} + + # Demographic vars + stat_var_spec {key: "Count_Person" value {stat_var: "Count_Person"}} + stat_var_spec {key: "Count_Person_PerArea" value {stat_var: "Count_Person_PerArea"}} + stat_var_spec {key: "LifeExpectancy_Person" value {stat_var: "LifeExpectancy_Person"}} +} + + +############ CATEGORY: Hazards ############ + +categories { + title: "Hazards" + + #---------- Wildfires ----------# + blocks {title: "Wildfires" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_WildfireEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Wildfires (${date})" stat_var_key: "Count_WildfireEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_WildfireEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_WildfireEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_WildfireEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_WildfireEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_WildfireEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_WildfireEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_WildfireEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_WildfireEvent" value {stat_var: "Count_WildfireEvent"}} + + #---------- Cyclones ----------# + blocks {title: "Cyclones" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_CycloneEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Cyclones (${date})" stat_var_key: "Count_CycloneEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_CycloneEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_CycloneEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_CycloneEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_CycloneEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_CycloneEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_CycloneEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_CycloneEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_CycloneEvent" value {stat_var: "Count_CycloneEvent"}} + + #---------- Cloud of Dense Smoke Event ----------# + blocks {title: "Cloud of Dense Smoke Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_DenseSmokeEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Cloud of Dense Smoke Event (${date})" stat_var_key: "Count_DenseSmokeEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_DenseSmokeEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_DenseSmokeEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_DenseSmokeEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_DenseSmokeEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_DenseSmokeEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_DenseSmokeEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_DenseSmokeEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_DenseSmokeEvent" value {stat_var: "Count_DenseSmokeEvent"}} + + #---------- Count of Fire Incident Complex Event ----------# + blocks {title: "Count of Fire Incident Complex Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_FireIncidentComplex"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Fire Incident Complex Event (${date})" stat_var_key: "Count_FireIncidentComplex"}} + columns {tiles {type: LINE stat_var_key: "Count_FireIncidentComplex"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_FireIncidentComplex"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_FireIncidentComplex"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_FireIncidentComplex"}} + columns {tiles {type: SCATTER stat_var_key: "Count_FireIncidentComplex" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_FireIncidentComplex" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_FireIncidentComplex" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_FireIncidentComplex" value {stat_var: "Count_FireIncidentComplex"}} + + #---------- Count of Excessive Heat Event ----------# + blocks {title: "Count of Excessive Heat Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_ExcessiveHeatEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Excessive Heat Event (${date})" stat_var_key: "Count_ExcessiveHeatEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_ExcessiveHeatEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_ExcessiveHeatEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_ExcessiveHeatEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_ExcessiveHeatEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_ExcessiveHeatEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_ExcessiveHeatEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_ExcessiveHeatEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_ExcessiveHeatEvent" value {stat_var: "Count_ExcessiveHeatEvent"}} + + #---------- Count of Extreme Cold Wind Chill Event ----------# + blocks {title: "Count of Extreme Cold Wind Chill Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_ExtremeColdWindChillEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Extreme Cold Wind Chill Event (${date})" stat_var_key: "Count_ExtremeColdWindChillEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_ExtremeColdWindChillEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_ExtremeColdWindChillEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_ExtremeColdWindChillEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_ExtremeColdWindChillEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_ExtremeColdWindChillEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_ExtremeColdWindChillEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_ExtremeColdWindChillEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_ExtremeColdWindChillEvent" value {stat_var: "Count_ExtremeColdWindChillEvent"}} + + #---------- Fire Event With Area = Forest ----------# + blocks {title: "Fire Event With Area = Forest" columns {tiles {type: DESCRIPTION description: "Stat Var = BurnedArea_FireEvent_Forest"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Fire Event With Area = Forest (${date})" stat_var_key: "BurnedArea_FireEvent_Forest"}} + columns {tiles {type: LINE stat_var_key: "BurnedArea_FireEvent_Forest"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "BurnedArea_FireEvent_Forest"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "BurnedArea_FireEvent_Forest"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "BurnedArea_FireEvent_Forest"}} + columns {tiles {type: SCATTER stat_var_key: "BurnedArea_FireEvent_Forest" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "BurnedArea_FireEvent_Forest" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "BurnedArea_FireEvent_Forest" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "BurnedArea_FireEvent_Forest" value {stat_var: "BurnedArea_FireEvent_Forest"}} + + #---------- Count of Flash Flood Event ----------# + blocks {title: "Count of Flash Flood Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_FlashFloodEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Flash Flood Event (${date})" stat_var_key: "Count_FlashFloodEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_FlashFloodEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_FlashFloodEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_FlashFloodEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_FlashFloodEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_FlashFloodEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_FlashFloodEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_FlashFloodEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_FlashFloodEvent" value {stat_var: "Count_FlashFloodEvent"}} + + #---------- Heat Waves ----------# + blocks {title: "Heat Waves" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_HeatEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Heat Waves (${date})" stat_var_key: "Count_HeatEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_HeatEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_HeatEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_HeatEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_HeatEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeatEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_HeatEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeatEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_HeatEvent" value {stat_var: "Count_HeatEvent"}} + + #---------- Heavy Rains ----------# + blocks {title: "Heavy Rains" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_HeavyRainEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Heavy Rains (${date})" stat_var_key: "Count_HeavyRainEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_HeavyRainEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_HeavyRainEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_HeavyRainEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_HeavyRainEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeavyRainEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_HeavyRainEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeavyRainEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_HeavyRainEvent" value {stat_var: "Count_HeavyRainEvent"}} + + #---------- Heavy Snows ----------# + blocks {title: "Heavy Snows" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_HeavySnowEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Heavy Snows (${date})" stat_var_key: "Count_HeavySnowEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_HeavySnowEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_HeavySnowEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_HeavySnowEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_HeavySnowEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeavySnowEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_HeavySnowEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeavySnowEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_HeavySnowEvent" value {stat_var: "Count_HeavySnowEvent"}} + + #---------- Percent of forest area that experienced high-severity fire (1995 to 2017) ----------# + blocks {title: "Percent of forest area that experienced high-severity fire (1995 to 2017)" columns {tiles {type: DESCRIPTION description: "Stat Var = Percent_BurnedArea_FireEvent_Forest_HighSeverity"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Percent of forest area that experienced high-severity fire (1995 to 2017) (${date})" stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}} + columns {tiles {type: LINE stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}} + columns {tiles {type: SCATTER stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Percent_BurnedArea_FireEvent_Forest_HighSeverity" value {stat_var: "Percent_BurnedArea_FireEvent_Forest_HighSeverity"}} + + #---------- Floods ----------# + blocks {title: "Floods" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_FloodEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Floods (${date})" stat_var_key: "Count_FloodEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_FloodEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_FloodEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_FloodEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_FloodEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_FloodEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_FloodEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_FloodEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_FloodEvent" value {stat_var: "Count_FloodEvent"}} + + #---------- Count of Hurricane Event ----------# + blocks {title: "Count of Hurricane Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_HurricaneEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Hurricane Event (${date})" stat_var_key: "Count_HurricaneEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_HurricaneEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_HurricaneEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_HurricaneEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_HurricaneEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HurricaneEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_HurricaneEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HurricaneEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_HurricaneEvent" value {stat_var: "Count_HurricaneEvent"}} + + #---------- Count of Hurricane Typhoon Event ----------# + blocks {title: "Count of Hurricane Typhoon Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_HurricaneTyphoonEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Hurricane Typhoon Event (${date})" stat_var_key: "Count_HurricaneTyphoonEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_HurricaneTyphoonEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_HurricaneTyphoonEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_HurricaneTyphoonEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_HurricaneTyphoonEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HurricaneTyphoonEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_HurricaneTyphoonEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HurricaneTyphoonEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_HurricaneTyphoonEvent" value {stat_var: "Count_HurricaneTyphoonEvent"}} + + #---------- Count of Tropical Depression Event ----------# + blocks {title: "Count of Tropical Depression Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_TropicalDepressionEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Tropical Depression Event (${date})" stat_var_key: "Count_TropicalDepressionEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_TropicalDepressionEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_TropicalDepressionEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_TropicalDepressionEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_TropicalDepressionEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_TropicalDepressionEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_TropicalDepressionEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_TropicalDepressionEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_TropicalDepressionEvent" value {stat_var: "Count_TropicalDepressionEvent"}} + + #---------- Count of Tropical Storm Event ----------# + blocks {title: "Count of Tropical Storm Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_TropicalStormEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Tropical Storm Event (${date})" stat_var_key: "Count_TropicalStormEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_TropicalStormEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_TropicalStormEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_TropicalStormEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_TropicalStormEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_TropicalStormEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_TropicalStormEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_TropicalStormEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_TropicalStormEvent" value {stat_var: "Count_TropicalStormEvent"}} + + #---------- Droughts ----------# + blocks {title: "Droughts" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_DroughtEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Droughts (${date})" stat_var_key: "Count_DroughtEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_DroughtEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_DroughtEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_DroughtEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_DroughtEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_DroughtEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_DroughtEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_DroughtEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_DroughtEvent" value {stat_var: "Count_DroughtEvent"}} + + #---------- Earthquakes ----------# + blocks {title: "Earthquakes" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_EarthquakeEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Earthquakes (${date})" stat_var_key: "Count_EarthquakeEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_EarthquakeEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_EarthquakeEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_EarthquakeEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_EarthquakeEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_EarthquakeEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_EarthquakeEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_EarthquakeEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_EarthquakeEvent" value {stat_var: "Count_EarthquakeEvent"}} + + #---------- Count of Heat Temperature Event ----------# + blocks {title: "Count of Heat Temperature Event" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_HeatTemperatureEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Count of Heat Temperature Event (${date})" stat_var_key: "Count_HeatTemperatureEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_HeatTemperatureEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_HeatTemperatureEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_HeatTemperatureEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_HeatTemperatureEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeatTemperatureEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_HeatTemperatureEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_HeatTemperatureEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_HeatTemperatureEvent" value {stat_var: "Count_HeatTemperatureEvent"}} + + #---------- Coastal Floods ----------# + blocks {title: "Coastal Floods" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_CoastalFloodEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Coastal Floods (${date})" stat_var_key: "Count_CoastalFloodEvent"}} + columns {tiles {type: LINE stat_var_key: "Count_CoastalFloodEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_CoastalFloodEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_CoastalFloodEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_CoastalFloodEvent"}} + columns {tiles {type: SCATTER stat_var_key: "Count_CoastalFloodEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "Count_CoastalFloodEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "Count_CoastalFloodEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "Count_CoastalFloodEvent" value {stat_var: "Count_CoastalFloodEvent"}} + + #---------- Settlement amount of natural hazard insurance for STRUCTURE DAMAGE within the 100 year flood zone(FEMA) ----------# + blocks {title: "Settlement amount of natural hazard insurance for STRUCTURE DAMAGE within the 100 year flood zone(FEMA)" columns {tiles {type: DESCRIPTION description: "Stat Var = SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Settlement amount of natural hazard insurance for STRUCTURE DAMAGE within the 100 year flood zone(FEMA) (${date})" stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}} + columns {tiles {type: LINE stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}} + columns {tiles {type: SCATTER stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent" value {stat_var: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingStructure_FloodEvent"}} + + #---------- Settlement amount of natural hazard insurance for HOUSE CONTENT within the 100 year flood zone(FEMA) ----------# + blocks {title: "Settlement amount of natural hazard insurance for HOUSE CONTENT within the 100 year flood zone(FEMA)" columns {tiles {type: DESCRIPTION description: "Stat Var = SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Settlement amount of natural hazard insurance for HOUSE CONTENT within the 100 year flood zone(FEMA) (${date})" stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}} + columns {tiles {type: LINE stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}} + columns {tiles {type: SCATTER stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent" stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: SCATTER stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: SCATTER stat_var_key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent" stat_var_key: "LifeExpectancy_Person"}}} + stat_var_spec {key: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent" value {stat_var: "SettlementAmount_NaturalHazardInsurance_FEMAHighRiskFloodZone_BuildingContents_FloodEvent"}} + + # Demographic vars + stat_var_spec {key: "Count_Person" value {stat_var: "Count_Person"}} + stat_var_spec {key: "Count_Person_PerArea" value {stat_var: "Count_Person_PerArea"}} + stat_var_spec {key: "LifeExpectancy_Person" value {stat_var: "LifeExpectancy_Person"}} + +} + + +############ CATEGORY: Demographics ############ + +categories { + title: "Demographics" + + #---------- Total Population ----------# + blocks {title: "Total Population" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_Person"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Total Population (${date})" stat_var_key: "Count_Person"}} + columns {tiles {type: LINE stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_Person"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_Person"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_Person"}} + columns {tiles {type: DESCRIPTION description: ""}}} + stat_var_spec {key: "Count_Person" value {stat_var: "Count_Person"}} + + #---------- Population Density ----------# + blocks {title: "Population Density" columns {tiles {type: DESCRIPTION description: "Stat Var = Count_Person_PerArea"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Population Density (${date})" stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: LINE stat_var_key: "Count_Person_PerArea"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "Count_Person_PerArea"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "Count_Person_PerArea"}} + columns {tiles {type: DESCRIPTION description: ""}}} + stat_var_spec {key: "Count_Person_PerArea" value {stat_var: "Count_Person_PerArea"}} + + #---------- Life expectancy ----------# + blocks {title: "Life expectancy" columns {tiles {type: DESCRIPTION description: "Stat Var = LifeExpectancy_Person"}}} + blocks { + columns {tiles {type: HIGHLIGHT description: "Life expectancy (${date})" stat_var_key: "LifeExpectancy_Person"}} + columns {tiles {type: LINE stat_var_key: "LifeExpectancy_Person"}}} + blocks { + columns {tiles {type: MAP stat_var_key: "LifeExpectancy_Person"}} + columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "LifeExpectancy_Person"}}} + blocks { + columns {tiles {type: BAR stat_var_key: "LifeExpectancy_Person"}} + columns {tiles {type: DESCRIPTION description: ""}}} + stat_var_spec {key: "__STATLifeExpectancy_PersonVAR" value {stat_var: "LifeExpectancy_Person"}} + + # Demographic vars + stat_var_spec {key: "Count_Person" value {stat_var: "Count_Person"}} + stat_var_spec {key: "Count_Person_PerArea" value {stat_var: "Count_Person_PerArea"}} + stat_var_spec {key: "LifeExpectancy_Person" value {stat_var: "LifeExpectancy_Person"}} + + + ##################### TEMPLATE START ############################ + + #---------- __STATVAR_DESCRIPTION ----------# + #blocks {title: "__STATVAR_DESCRIPTION" columns {tiles {type: DESCRIPTION description: "Stat Var = __STATVAR"}}} + #blocks { + # columns {tiles {type: HIGHLIGHT description: "__STATVAR_DESCRIPTION (${date})" stat_var_key: "__STATVAR"}} + # columns {tiles {type: LINE stat_var_key: "__STATVAR"}}} + #blocks { + # columns {tiles {type: MAP stat_var_key: "__STATVAR"}} + # columns {tiles {type: RANKING ranking_tile_spec {show_highest: true show_lowest: true} stat_var_key: "__STATVAR"}}} + #blocks { + # columns {tiles {type: BAR stat_var_key: "__STATVAR"}} + # columns {tiles {type: SCATTER stat_var_key: "__STATVAR" stat_var_key: "Count_Person"}}} + #blocks { + # columns {tiles {type: SCATTER stat_var_key: "__STATVAR" stat_var_key: "Count_Person_PerArea"}} + # columns {tiles {type: SCATTER stat_var_key: "__STATVAR" stat_var_key: "LifeExpectancy_Person"}}} + #stat_var_spec {key: "__STATVAR" value {stat_var: "__STATVAR"}} + + ##################### TEMPLATE END ############################ + +} \ No newline at end of file diff --git a/server/config/topic_page/development/NGA.textproto b/server/config/topic_page/development/NGA.textproto new file mode 100644 index 0000000000..e0cdcfa810 --- /dev/null +++ b/server/config/topic_page/development/NGA.textproto @@ -0,0 +1,345 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + +metadata { + topic_id: "development" + topic_name: "Development Landscape" + place_dcid: "country/NGA" + contained_place_types { + key: "Country" + value: "AdministrativeArea1" + } +} + +categories { + title: "Introduction" + blocks { + columns { + tiles { + type: DESCRIPTION + description: "Nigeria is facing increasing pressure to deliver on its Sustainable Development Goals (SDGs) in the face of rising development needs, population growth, the COVID-19 pandemic, and the cost of living crisis. This dashboard aggregates country-level development data from Data Commons to show progress on the SDGs. It compares relationships across development indicators to identify the factors that are driving or slowing progress. This information is useful for understanding the development landscape in Nigeria since the adoption of the SDGs in 2015." + } + } + } +} + +categories { + title: "Life Expectancy" + description: "The life expectancy in Nigeria is at an all-time high of 52.9 years as of 2022, the highest since 1960 when the country gained independence. At independence, life expectancy was 37.4 years; by 2000, it was 47.2 years. What is driving this improvement? We see that infant mortality was steadily declining as life expectancy rose." + + blocks { + columns { + tiles { + type: LINE + title: "Life Expectancy in ${placeName}" + stat_var_key: "lifeExpectancy" + } + } + columns { + tiles { + type: LINE + title: "Infant mortality under 1 year old in ${placeName}" + stat_var_key: "infantMortalityRate" + } + } + } + + stat_var_spec { + key: "lifeExpectancy" + value { + stat_var: "LifeExpectancy_Person" + name: "Life Expectancy" + } + } + + stat_var_spec { + key: "infantMortalityRate" + value { + stat_var: "sdg/SH_DYN_IMRT.AGE--Y0" + name: "Infant motality rate (Age = under 1 year old)" + } + } + + blocks { + description: "Other factors that increase life expectancy include the reduction of deaths from chronic diseases and wider access to safe drinking water." + columns { + tiles { + type: LINE + title: "Deaths from common diseases in ${placeName}" + stat_var_key: "sdg/SH_DTH_NCOM.AGE--Y30T70" + } + } + columns { + tiles { + type: LINE + title: "Access to clean water in ${placeName}" + stat_var_key: "sdg/SH_H2O_SAFE" + } + } + } + + stat_var_spec { + key: "sdg/SH_DTH_NCOM.AGE--Y30T70" + value { + stat_var: "sdg/SH_DTH_NCOM.AGE--Y30T70" + name: "Mortality Rate Attributed To Cardiovascular Disease, Cancer, Diabetes or Chronic Respiratory Disease With Age = 30 to 70 Years Old" + unit: "%" + } + } + + stat_var_spec { + key: "sdg/SH_H2O_SAFE" + value { + stat_var: "sdg/SH_H2O_SAFE" + name: "Proportion of population using safely managed drinking water services" + unit: "%" + } + } +} + +categories { + title: "COVID-19 Impact" + description: "COVID-19 deaths recorded in Nigeria stood at 3,155 people from 267,000 confirmed cases as of March, 2023. For other countries with large populations the rates of death were much higher. For example the United States suffered over 1 million deaths from 103 million confirmed cases. As of 2022, the COVID-19 vaccination rate in Nigeria was under 7%. Given the low vaccination rate and its poor health infrastructure, what kept the death rate so low for Nigeria and many other countries in Africa?" + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "A [research project](https://healthpolicy.fsi.stanford.edu/news/how-has-africa-largely-evaded-covid-19-pandemic-0) from a group led by a Nigerian doctor at Stanford University identified five possible factors:\n* Limited seeding (less air travel)\n* Power of the young age group\n* Exposure to previous infectious diseases\n* Population density\n* Prevalence of associated comorbid conditions" + } + } + } + + blocks { + columns { + tiles { + type: HIGHLIGHT + description: "Cumulative COVID-19 Deaths in ${placeName}" + stat_var_key: "covidDeaths" + } + tiles { + type: HIGHLIGHT + description: "COVID-19 Deaths per 100,000 people in ${placeName}" + stat_var_key: "covidDeaths_pc" + } + } + columns { + tiles { + type: HIGHLIGHT + description: "Total Population in ${placeName}" + stat_var_key: "Count_Person" + } + } + } + + stat_var_spec { + key: "covidDeaths" + value { + stat_var: "CumulativeCount_MedicalConditionIncident_COVID_19_PatientDeceased" + name: "Cumulative Count of COVID-19 Deaths" + } + } + + stat_var_spec { + key: "covidDeaths_pc" + value { + stat_var: "CumulativeCount_MedicalConditionIncident_COVID_19_PatientDeceased" + name: "Cumulative Count of COVID-19 Deaths" + denom: "Count_Person" + scaling: 100000 + } + } + + stat_var_spec { + key: "Count_Person" + value { + stat_var: "Count_Person" + name: "Total Population" + } + } +} + +categories { + title: "Population Growth" + description: "Nigeria's population has grown rapidly since independence, but this growth rate has varied considerably. The rate peaked in 1980 at 3.06%, which was followed by a sharp decline around 1985. It remained steady until around 2010, but has been steadily declining since then. The growth rate is expected to continue to decline, but nonetheless Nigeria is projected to have a population of [over 375 million people by 2050](https://www.worldometers.info/world-population/nigeria-population/#:~:text=The%20current%20population%20of%20Nigeria,of%20the%20total%20world%20population)." + + blocks { + columns { + tiles { + type: LINE + title: "Population Growth Rate in ${placeName}" + stat_var_key: "populationGrowthRate" + } + } + + columns { + tiles { + type: LINE + title: "Population Growth in ${placeName}" + stat_var_key: "population" + } + } + + + } + + stat_var_spec { + key: "population" + value { + stat_var: "Count_Person" + name: "Total Population" + } + } + + stat_var_spec { + key: "populationGrowthRate" + value { + stat_var: "GrowthRate_Count_Person" + name: "Rate of Population Growth" + } + } +} + + +categories { + title: "Fertility and Education" + description: "At independence in 1960, the fertility rate in Nigeria was 6.36 children per woman; by 2000 it had dropped to 6.12 and continues to decline. A fertility rate of 5.32 in 2020 still puts Nigeria on the path of an ever increasing population (globally the average fertility rate is 2.3) At the same time, Nigeria has been making progress towards broader access to education. What is the relationship between birth rates and education, especially for women?" + + blocks { + columns { + tiles { + type: LINE + title: "Fertility Rate in ${placeName}" + stat_var_key: "fertilityRate" + } + } + + columns { + tiles { + type: LINE + title: "Lower Secondary Education in ${placeName}" + stat_var_key: "completionRate" + } + } + } + + stat_var_spec { + key: "fertilityRate" + value { + stat_var: "FertilityRate_Person_Female" + name: "Fertility Rate" + } + } + + stat_var_spec { + key: "completionRate" + value { + stat_var: "sdg/SE_TOT_CPLR.EDUCATION_LEV--ISCED11_2" + name: "Completion rate: Lower secondary" + unit: "%" + } + } +} + + +categories { + title: "GDP and Consumption" + description: "In 2021, the Gross Domestic Product (GDP) of Nigeria grew faster than the population (3.65% vs 2.41%, respectively). However, [according to the World Bank](https://www.worldbank.org/en/country/nigeria/overview#:~:text=The%20economy%20is%20projected%20to,population%20growth%20rate%20of%202.4%25), \"The economy is projected to grow by an average of 2.9% per year between 2023 and 2025, only slightly above the estimated population growth rate of 2.4%.\" The country is in an uncomfortable position where the population may soon rise faster than its economy. What does this mean if this economic growth does not enhance the standard of living?" + + blocks { + columns { + tiles { + type: LINE + title: "GDP Growth Rate in ${placeName}" + stat_var_key: "gdpGrowthRate" + } + } + + columns { + tiles { + type: LINE + title: "Population Growth Rate in ${placeName}" + stat_var_key: "populationGrowthRate" + } + } + } + + stat_var_spec { + key: "gdpGrowthRate" + value { + stat_var: "GrowthRate_Amount_EconomicActivity_GrossDomesticProduction" + name: "Growth Rate of GDP" + } + } + + stat_var_spec { + key: "domesticMaterialConsumption" + value { + stat_var: "sdg/EN_MAT_DOMCMPT" + name: "Domestic material consumption" + } + } + + stat_var_spec { + key: "populationGrowthRate" + value { + stat_var: "GrowthRate_Count_Person" + name: "Rate of Population Growth" + } + } +} + +categories { + blocks { + columns { + tiles { + type: DESCRIPTION + description: "Civil society organisations are bringing hope and providing nonprofit services to the vulnerable in needy communities across the country in ways that improves livelihood and addresses attainment of the SDGs. During the pandemic, 132 nonprofits collectively spent 316 million Nigerian Naira (or USD$409,000) to help people in need. These nonprofits reached over 2 million beneficiaries across 31 states and 206 local governments according to data from the [Nigeria Network of NGOs](http://nnngo.org/).\n\nMany nonprofits in Nigeria are working on critical issues including infant mortality, death from common disease, access to clean water, population growth, and education. Below are some examples of these nonprofits.\n* [Helpmum](https://helpmum.org/) is a social enterprise with the mission to reduce maternal and infant mortality in Africa.\n* [Project PINK BLUE](https://projectpinkblue.org/ngoscsos-cancer-policy-advocacy-nigeria/) is an organization engaged in cancer awareness, free cancer screenings, support to people battling cancer, patient navigation, advocacy and fundraising for cancer patients, cancer research, oncology training and psychological support.\n* [Fairlife Africa](https://www.fairlifeafrica.org/) is a progressive, humanitarian organization. They are committed to empowering people through practical social initiatives and programs. The organisation stands for a fairer life for all people by improving the lives of the most disadvantaged and serving people of all faiths, races, gender, and any other orientation without discrimination.\n* [Onelife Initiative for Human Development](https://onelifeinitiative.org/sexual-reproductive-health-rights/) works to improve the well-being of young people by providing safe spaces, skills, linkages and vocational training including information and resources to enable them to make informed life decisions.\n* [Serendipity Healthcare Foundation](https://www.serendipityhealthcare.org.in/home) is a growing organization positioned to fight poverty through access to safe, clean drinking water, basic sanitation and hygiene education; also through programs aimed at reducing the scourge of malaria in rural communities and saving lives at birth.\n\nThese are just a few examples of the many nonprofits that are working to improve the lives of vulnerable people in Nigeria. Their work is essential to building a more just and equitable society." + } + } + } +} + +categories { + blocks { + columns { + tiles { + type: DESCRIPTION + description: "## ACKNOWLEDGEMENTS" + } + tiles { + type: DESCRIPTION + description: "Contributed by:\n\nOyebisi Babatunde Oluseyi\n\nExecutive Director\n\n[Nigeria Network of NGOs](https://nnngo.org/)" + } + tiles { + type: DESCRIPTION + description: "[![NNNGO](/custom_dc/custom/images/topics/development-landscape/nnngo-30th-logo.png)](https://nnngo.org)" + } + + tiles { + type: DESCRIPTION + description: "![Oyebisi Babatunde Oluseyi](/custom_dc/custom/images/topics/development-landscape/EDD1.jpeg)" + } + + tiles { + type: DESCRIPTION + description: "_The authors interacted with the following artificial intelligence tools to assist in the creation of content included on this page: Google Bard v2.0_\n\n_Funded by [Google.org](https://www.google.org)_" + } + } + + } + +} \ No newline at end of file diff --git a/server/config/topic_page/economic-and-social-growth/COL.textproto b/server/config/topic_page/economic-and-social-growth/COL.textproto new file mode 100644 index 0000000000..852359b1a5 --- /dev/null +++ b/server/config/topic_page/economic-and-social-growth/COL.textproto @@ -0,0 +1,425 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + +metadata { + topic_id: "economic-and-social-growth" + topic_name: "Economic & Social Growth" + place_dcid: "country/COL" + contained_place_types { + key: "Country" + value: "AdministrativeArea1" + } +} + +categories { + title: "Economic Development For Better Lives" + + + blocks { + description: "When we think of economic development, we may think of new infrastructure or ways the government may better meet its people's needs. But we often don't see economic development as something that affects our daily lives. In this article, we aim to review economic development and its social impact on a country. How does acountry flourish in the midst of endless difficulties and deep social and political transformations? How can economic development help to reduce violence — particularly homicides? And finally, how do civil society organizations complement economic development and state action? For this, there is no better country to review than Colombia." + columns { + tiles { + type: HIGHLIGHT + description: "People live in ${placeName} (${date})" + stat_var_key: "count_person" + } + } + columns { + tiles { + title: "Population of ${placeName} by Department (${date})" + type: MAP + stat_var_key: "count_person" + } + } + } + + blocks { + title: "From LATAM to Colombia: The Correlations of Economic Development" + description: "Over the last 50 years, Latin American (LATAM) countries such as Colombia, Ecuador, Peru, and Venezuela have steadily strengthened their GDP, except during the COVID-19 pandemic. There appears to be a regional correlation in economic performance of these countries: When one country prospers, other LATAM countries prosper as a result. Similarly, these countries suffered significant declines during the pandemic. After the pandemic, recovery was accelerated dramatically." + columns { + tiles { + type: LINE + title: "Growth Rate of GDP (${placeName})" + stat_var_key: "gdp_growth" + } + } + columns { + tiles { + type: LINE + title: "Growth Rate of GDP (${placeName})" + stat_var_key: "gdp_growth" + place_dcid_override: "country/ECU" + } + } + } + + blocks { + columns { + tiles { + type: LINE + title: "Growth Rate of GDP (${placeName})" + stat_var_key: "gdp_growth" + place_dcid_override: "country/PER" + } + } + columns { + tiles { + type: LINE + title: "Growth Rate of GDP (${placeName})" + stat_var_key: "gdp_growth" + place_dcid_override: "country/VEN" + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "Colombia has undoubtedly contributed to the accelerated growth of the region's GDP in the post-pandemic years — partly due to the different measures taken by the national government to overcome the humanitarian crisis — but how does the country's economic growth correlate with social variables?" + } + } + } + + blocks { + title: "Leading Social Change Through Economic Growth" + description: "Since 2008, economic growth has led to a significant reduction of people under the poverty line, mainly because this growth generates more employment and business opportunities and therefore a higher income." + columns { + tiles { + type: LINE + title: "GDP of ${placeName}" + stat_var_key: "gdp" + } + } + columns { + tiles { + type: LINE + title: "${placeName}'s Employed Population Below the Poverty Line" + stat_var_key: "empl_poverty_rate_15_24" + stat_var_key: "empl_poverty_rate_15_older" + stat_var_key: "empl_poverty_rate_25_older" + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "As GDP increases, poverty decreases. Newly created jobs allow governments to collect more taxes to invest in social programs, such as free secondary education for vulnerable populations. In most cases, this enables people to access better salaries, which **improves their quality of life**." + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "According to macroeconomics theories, as more production is generated in a country, the labor force increases. This is a result of production driving more consumption, which in turn drives demand and employment." + } + } + columns { + tiles { + type: DESCRIPTION + description: "When GDP increases, we see an increase in the number of higher education students not dropping out of college and instead continuing to graduation." + } + } + } + + blocks { + columns { + tiles { + type: LINE + title: "Percentage of Working-Age Population in the Labor Force" + stat_var_key: "pct_pop_laborforce" + } + } + columns { + tiles { + type: LINE + title: "Percentage of Secondary Education Students Graduating" + stat_var_key: "upper_secondary_pc" + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "Economic growth has also contributed to a decrease in the infant mortality rate, the main indicator for measuring the quality of health systems. With higher incomes, families have access to more and better food, medicines, internet, and sanitary conditions in their homes. This provides better opportunities, especially for children." + } + } + } + + blocks { + columns { + tiles { + type: LINE + title: "Number of Infant Deaths (Per 1,000 Live Births)" + stat_var_key: "infant_mortality" + } + } + columns { + tiles { + type: LINE + title: "Percentage of Internet Users" + stat_var_key: "Count_Person_IsInternetUser_PerCapita" + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "The data shows that the better the economy, the better the quality of life. Unfortunately, not all the correlations are positive. LATAM, and especially Colombia, houses a large part of the world's drug production. This makes Colombia a center of operations for transnational criminal organizations, which leads to violence against the civilian population." + } + } + } + + stat_var_spec { + key: "count_person" + value { + stat_var: "Count_Person" + name: "Population" + } + } + + stat_var_spec { + key: "gdp_growth" + value { + stat_var: "GrowthRate_Amount_EconomicActivity_GrossDomesticProduction" + name: "Growth Rate of GDP" + unit: "%" + } + } + + stat_var_spec { + key: "gdp" + value { + stat_var: "Amount_EconomicActivity_GrossDomesticProduction_Nominal" + name: "Nominal GDP" + } + } + + stat_var_spec { + key: "empl_poverty_rate_15_24" + value { + stat_var: "sdg/SI_POV_EMP1.AGE--Y15T24" + name: "Population Age 15 to 24 Years Old Living Below the Poverty Line" + unit: "%" + } + } + stat_var_spec { + key: "empl_poverty_rate_15_older" + value { + stat_var: "sdg/SI_POV_EMP1.AGE--Y_GE15" + name: "Population Age 15 Years And Older Living Below the Poverty Line" + unit: "%" + } + } + stat_var_spec { + key: "empl_poverty_rate_25_older" + value { + stat_var: "sdg/SI_POV_EMP1.AGE--Y_GE25" + name: "Population Age 25 Years And Older Living Below the Poverty Line" + unit: "%" + } + } + + stat_var_spec { + key: "pct_pop_laborforce" + value { + stat_var: "Count_Person_15To64Years_InLaborForce_AsFractionOf_Count_Person_15To64Years" + name: "Percentage of Working-Age Population in the Labor Force" + scaling: 100 + unit: "%" + } + } + stat_var_spec { + key: "upper_secondary_pc" + value { + stat_var: "sdg/SE_TOT_CPLR.EDUCATION_LEV--ISCED11_3" + name: "Percentage of Secondary Education Students Graduating" + unit: "%" + } + } + stat_var_spec { + key: "infant_mortality" + value { + stat_var: "Count_Death_0Years_AsFractionOf_Count_BirthEvent_LiveBirth" + name: "Infant Mortality Rate" + } + } + stat_var_spec { + key: "Count_Person_IsInternetUser_PerCapita" + value { + stat_var: "Count_Person_IsInternetUser_PerCapita" + name: "Percentage of Internet Users" + unit: "%" + } + } + +} + + +categories { + title: "A Growing Economy for Better Security" + + blocks { + description: "The violence that is part of everyday life in LATAM is significant. During 2022, countries such as Bolivia, Colombia, Ecuador, Peru, and Venezuela reached similar homicide rates due to the presence of armed groups seeking to expand their illegal businesses through violence." + columns { + tiles { + type: BAR + title: "Number of Homicides (Per 100,000 People)" + stat_var_key: "homicides_pc" + comparison_places: "self" + comparison_places: "country/VEN" + comparison_places: "country/ECU" + comparison_places: "country/PER" + } + } + + } + + blocks { + title: "GDP Growth and Violence" + description: "When the economy grows, the lives of the inhabitants improve by increasing access to basic needs such as health, education, internet, jobs, and security. A growing economy makes it possible for people to receive a living wage that reduces inequality and poverty gaps, which decreases the presence of illegal and subversive groups and the violence they exert." + + columns { + tiles { + type: LINE + title: "GDP of ${placeName}" + stat_var_key: "gdp" + } + } + columns { + tiles { + type: LINE + title: "Number of Homicides (Per 100,000 People)" + stat_var_key: "homicides_pc" + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "That being said, reducing violence and improving Colombian's daily lives is not just an economic development matter. Governments need allies to establish a prosperous and peaceful nation. The active participation of civil society and social organizations is vital for building bridges between government efforts and the needs of the population. In Colombia's case, there are many organizations that workto promote development and therefore improve the quality of life for all Colombians." + } + } + } + + stat_var_spec { + key: "homicides_pc" + value { + stat_var: "Count_CriminalActivities_MurderAndNonNegligentManslaughter_AsFractionOf_Count_Person" + name: "Number of Homicides (Per 100,000 People)" + scaling: 100000 + } + } + stat_var_spec { + key: "gdp" + value { + stat_var: "Amount_EconomicActivity_GrossDomesticProduction_Nominal" + name: "Nominal GDP" + } + } +} + +categories { + title: "Promoting Development Through Civil Society" + + blocks { + description: "Many efforts are being made by civil society to promote the growth of the economy that improves the lives of Colombians." + columns { + tiles { + type: DESCRIPTION + description: "Several organizations in Colombia are working for the economic and social development of the country." + } + tiles { + type: DESCRIPTION + description: "- [*WWB Colombia Foundation*](https://www.fundacionwwbcolombia.org) creates programs to strengthen the personal and business skills of vulnerable women in order to reduce the unemployment rate of this population and boost the impact of social investment." + } + tiles { + type: DESCRIPTION + description: "- [*Mano Cambiada*](https://www.manocambiada.org) seeks to prevent the recruitment of young people in contexts of violence, transforming them into social change agents through the creation of community-based tourism programs and environmental and cultural education." + } + tiles { + type: DESCRIPTION + description: "- [*Recon*](https://www.reconcolombia.org) seeks to strengthen social enterprises that impact the economic and social development of vulnerable communities." + } + tiles { + type: DESCRIPTION + description: "- [*Fundación Capital*](https://www.fundacioncapital.org) seeks to improve the financial and economic life of vulnerable populations." + } + } + columns { + tiles { + type: DESCRIPTION + description: "To create impact and social awareness, the following organizations utilize another tactic: open data." + } + tiles { + type: DESCRIPTION + description: "- [*Propacifico*](https://propacifico.org) seeks to expand the use of open data to better realize the UN's Sustainable Development Goals. They use a monitoring platform to strengthen the lowest indicators." + } + tiles { + type: DESCRIPTION + description: "- [*Alexander Von Humboldt Institute*](http://humboldt.org.co) seeks to promote collaboration in scientific and academic creation through open data." + } + tiles { + type: DESCRIPTION + description: "- [*Karisma Foundation*](https://web.karisma.org.co) promotes the use of open data to guarantee human rights on the internet through social inclusion and the democratization of knowledge." + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "Although the impact of the work of social organizations in the country is undeniable, it is important to establish open data as a constant tool in their work. Using open data is essential for promoting economic development in countries because it enhances transparency, enables evidence-based decision-making, drives economic growth and innovation, empowers communities, and facilitates collaboration. It is a powerful tool that can contribute to a more inclusive and sustainable Colombia." + } + } + } + + blocks { + title: "Acknowledgements" + columns { + tiles { + type: DESCRIPTION + description: "Designed by: [Corporación Makaia Asesoría Internacional](https://makaia.org)" + } + tiles { + type: DESCRIPTION + description: "[![Makaia](/custom_dc/custom/images/topics/economic-and-social-growth/logo-makaia-web.png)](https://makaia.org)" + } + } + } + + blocks { + columns { + tiles { + type: DESCRIPTION + description: "_Funded by [Google.org](https://www.google.org)_" + } + } + } + +} + diff --git a/server/config/topic_page/foodsecurity/USA.textproto b/server/config/topic_page/foodsecurity/USA.textproto new file mode 100644 index 0000000000..d6d8116690 --- /dev/null +++ b/server/config/topic_page/foodsecurity/USA.textproto @@ -0,0 +1,1005 @@ +# Copyright 2023 TechSoup Global +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + +metadata { + topic_id: "foodsecurity" + topic_name: "Food Security" +# place_group { +# parent_place: "Earth" +# place_type: "Country" +# } + + place_dcid: "country/USA" + place_group { + parent_place: "country/USA" + place_type: "State" + } + place_group { + parent_place: "country/USA" + place_type: "County" + } + place_group{ + parent_place: "country/USA" + place_type: "City" + } + contained_place_types { + key: "Country" + value: "State" + } + contained_place_types { + key: "State" + value: "County" + } + contained_place_types { + key: "County" + value: "City" + } + contained_place_types { + key: "City" + value: "CensusTract" + } +} + +categories { + title: "Poverty" + +#------- FOOD ASSISTANCE -------# + + ### NEW BLOCK ### + blocks { + description: "Food assistance programs address food insecurity in a variety of ways by providing critical resources, such as bulk food, prepared meals, community gardens, subsidized or free groceries, and other local community efforts. These safety net programs help families stabilize during times of financial hardship by providing financial assistance and access to balanced, nutritional meals.\n\nWhat factors might contribute to individuals not utilizing SNAP?" + columns { + tiles { + type: HIGHLIGHT + description: "People live below the poverty line" + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months" + } + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months" + } + } + columns { + tiles { + type: MAP + title: "Population Living Below the Poverty Line (${date})" + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months" + } + } + } + stat_var_spec { + key: "Count_Person_BelowPovertyLevelInThePast12Months" + value { + stat_var: "Count_Person_BelowPovertyLevelInThePast12Months" + name: "Population Living Below the Poverty Line" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: HIGHLIGHT + description: "Of people live below the poverty line" + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months_pct" + } + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months_pct" + } + } + columns { + tiles { + type: MAP + title: "Percentage of Population Living Below the Poverty Line (${date})" + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months_pct" + } + } + } + stat_var_spec { + key: "Count_Person_BelowPovertyLevelInThePast12Months_pct" + value { + stat_var: "Count_Person_BelowPovertyLevelInThePast12Months" + denom: "Count_Person" + name: "Percentage of Population Living Below the Poverty Line" + scaling: 100 + unit: "%" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: HIGHLIGHT + description: "Households in ${placeName} live below the poverty line and do not receive food assistance (SNAP)" + stat_var_key: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months" + } + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months_pct" + } + } + columns { + tiles { + type: MAP + title: "Percentage of Households That Live Below the Poverty Line and Not Receiving SNAP (${date})" + stat_var_key: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months_pct" + } + } + } + stat_var_spec { + key: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months" + value { + stat_var: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months" + name: "Households That Live Below the Poverty Line and Not Receiving SNAP" + } + } + + stat_var_spec { + key: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months_pct" + value { + stat_var: "Count_Household_WithoutFoodStampsInThePast12Months_BelowPovertyLevelInThePast12Months" + name: "Percentage of Households That Live Below the Poverty Line and Not Receiving SNAP" + denom: "Count_Household" + scaling: 100 + unit: "%" + } + } + + #------- MEDIAN INCOME -------# + + ### NEW BLOCK ### + blocks { + title: "Median Income" + description: "Income and the cost of living can help us understand where and how food insecurity impacts communities at the local level. Often, communities with higher costs of living have a segment of the population living below the poverty line with low access to balanced, nutritional meals." + columns { + tiles { + title: "Median Income (${date})" + type: MAP + stat_var_key: "Median_Income_Household" + } + } + columns { + tiles { + title: "Median Rent (${date})" + type: MAP + stat_var_key: "Median_GrossRent_HousingUnit_WithCashRent_OccupiedHousingUnit_RenterOccupied" + } + } + } + stat_var_spec { + key: "Median_Income_Household" + value { + stat_var: "Median_Income_Household" + name: "Median Income" + } + } + stat_var_spec { + key: "Median_GrossRent_HousingUnit_WithCashRent_OccupiedHousingUnit_RenterOccupied" + value { + stat_var: "Median_GrossRent_HousingUnit_WithCashRent_OccupiedHousingUnit_RenterOccupied" + name: "Median Rent" + } + } + +#------- POVERTY AND UNEMPLOYMENT -------# + + ### NEW BLOCK ### + blocks { + title: "Poverty and Unemployment" + description: "Unemployment can impact families in a variety of difficult ways, including needing to prioritize bills over groceries. Policies and programs that support individuals in finding stable employment can play a significant role in alleviating food insecurity. However, fluctuations in income — even among those who are employed — can lead to food insecurity. Unemployment and poverty both speak to how difficult it is for households to consistently meet their household's nutritional needs.\n\nHow is food insecurity in rural areas different from food insecurity in urban areas?" + columns { + tiles { + type: MAP + title: "Percentage of Population Living Below the Poverty Line (${date})" + stat_var_key: "Count_Person_BelowPovertyLevelInThePast12Months_pct" + } + } + columns { + tiles { + title: "Unemployment Rate (${date})" + type: MAP + stat_var_key: "UnemploymentRate_Person" + } + } + } + stat_var_spec { + key: "UnemploymentRate_Person" + value { + stat_var: "UnemploymentRate_Person" + name: "Unemployment Rate" + } + } + +#------- LANGUAGE -------# + + ### NEW BLOCK ### + blocks { + title: "Language" + columns { + tiles { + type: HIGHLIGHT + description: "Working-age adults who do not speak English at home" + stat_var_key: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome" + } + } + columns { + tiles { + title: "Working-Age Adults Who Do Not Speak English At Home" + type: LINE + stat_var_key: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome" + } + } + } + blocks { + columns { + tiles { + type: DESCRIPTION + description: "Language proficiency can play a role in food security. Finding and accessing assistance programs can be challenging when a person does not read or write in English. Granted that many of the individuals represented in this data have some degree of English proficiency, understanding the language spoken at home can also help food security organizations — like pantries — tailor their offerings and materials to fit the language and culture of a community." + } + } + columns { + tiles { + title: "Percentage of Working Age Adults Who Do Not Speak English At Home (${date})" + type: MAP + stat_var_key: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome_pct" + } + } + } + stat_var_spec { + key: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome" + value { + stat_var: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome" + name: "Working-Age Adults Who Do Not Speak English At Home" + } + } + stat_var_spec { + key: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome_pct" + value { + stat_var: "Count_Person_18To64Years_LanguageOtherThanEnglishSpokenAtHome" + name: "Percentage of Working Age Adults Who Do Not Speak English At Home" + denom: "Count_Person" + scaling: 100 + unit: "%" + } + } + +#------- GENDER -------# + + ### NEW BLOCK ### + blocks { + title: "Gender" + description: "Single mother households often face exacerbated economic difficulties. Often their households operate with less income and must balance professional work with caregiving responsibilities. When single caregivers rely on day care services, they are left with less income to provide sufficient and nutritious food for their household." + columns { + tiles { + type: HIGHLIGHT + description: "Of households are single mother households" + stat_var_key: "Count_Household_SingleMotherFamilyHousehold_pct" + } + } + columns { + tiles { + type: BAR + description: "Number of Single Mother Households ${date}" + stat_var_key: "Count_Household_SingleMotherFamilyHousehold" + stat_var_key: "Count_Household_SingleFatherFamilyHousehold" + comparison_places: "self" + } + } + } + + stat_var_spec { + key: "Count_Household_SingleMotherFamilyHousehold_pct" + value { + stat_var: "Count_Household_SingleMotherFamilyHousehold" + name: "Single Family Household rate" + denom: "Count_Household_FamilyHousehold" + unit: "Percent" + scaling: 100 + } + } + + stat_var_spec { + key: "Count_Household_SingleMotherFamilyHousehold" + value { + stat_var: "Count_Household_SingleMotherFamilyHousehold" + name: "Single Mother Households" + } + } + + stat_var_spec { + key: "Count_Household_SingleFatherFamilyHousehold" + value { + stat_var: "Count_Household_SingleFatherFamilyHousehold" + name: "Single Father Households" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: HIGHLIGHT + description: "Is the average earnings for women (adjusted for inflation)" + stat_var_key: "Mean_Earnings_Person_Female" + } + tiles { + type: HIGHLIGHT + description: "Is the average earnings for men (adjusted for inflation)" + stat_var_key: "Mean_Earnings_Person_Male" + } + } + columns { + tiles { + type: BAR + description: "Average Earnings (${date})" + stat_var_key: "Mean_Earnings_Person_Female" + stat_var_key: "Mean_Earnings_Person_Male" + comparison_places: "self" + } + } + } + + stat_var_spec { + key: "Mean_Earnings_Person_Female" + value { + stat_var: "Mean_Earnings_Person_Female" + name: "Average Earnings for Women" + unit: "$" + } + } + + stat_var_spec { + key: "Mean_Earnings_Person_Male" + value { + stat_var: "Mean_Earnings_Person_Male" + name: "Average Earnings for Men" + unit: "$" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: HIGHLIGHT + description: "Is the amount below the poverty level that single mother households earn on average" + stat_var_key: "Mean_IncomeDeficit_Household_SingleMotherFamilyHousehold" + } + } + columns { + tiles { + type: DESCRIPTION + description: "Single mothers often have to deal with income disparities since women on average earn less than men. Combined with the pervasiveness of single mother households living below the poverty line, this financial challenge makes it difficult for mothers to ensure nutritious food is consistently available in their household." + } + } + } + + stat_var_spec { + key: "Mean_IncomeDeficit_Household_SingleMotherFamilyHousehold" + value { + stat_var: "Mean_IncomeDeficit_Household_SingleMotherFamilyHousehold" + name: "Average Income Deficit for Single Mother Households" + unit: "$" + } + } + +} + + +categories { + title: "Health and Nutrition" + +#------- COMMUNITY FOOD SERVICES AND GROCERY STORES -------# + + ### NEW BLOCK ### + blocks { + title: "Community Food Services" + columns { + tiles { + title: "Number of Community Food Services (${date})" + type: MAP + stat_var_key: "dc/7dcmzwydmtet5" + } + } + columns { + tiles { + type: DESCRIPTION + description: "Community food services (food banks, pantries, meal programs, gardens, and other social services programs related to food) provide crucial and immediate access to food for households facing food insecurity. These programs play a critical role in providing immediate relief, promoting nutrition, and building community resilience to address food insecurity at the local level. Highly populated areas may have easier access to these services than more rural areas, which might make it difficult for food services to reach residents in need. Even when there are community food services available, there may be a cultural stigma discouraging individuals from receiving these services." + } + } + } + + stat_var_spec { + key: "dc/7dcmzwydmtet5" + value { + stat_var: "dc/7dcmzwydmtet5" + name: "Number of Community Food Services" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: MAP + title: "Number of Community Food Services (Per 100,000 People)" + stat_var_key: "pc_community_food_services" + } + } + columns { + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "pc_community_food_services" + } + + } + } + + stat_var_spec { + key: "pc_community_food_services" + value { + stat_var: "dc/j1kr0ft77ptb6" + denom: "Count_Person" + name: "Number of Community Food Services (Per 100,000 People)" + scaling: 100000 + } + } + + ### NEW BLOCK ### + blocks { + title: "Grocery Stores" + columns { + tiles { + type: DESCRIPTION + description: "Having more grocery store owners means greater availability of fresh produce and food options, reduces food deserts, and increases competition that drives lower prices. With more stores available, it is more likely that a grocer is nearby, which is important for those who lack access to a vehicle or public transportation.\n\nWhat other factors could provide us with an understanding of food availability in a region?" + } + } + columns { + tiles { + title: "Number of Grocery Store Owners (${date})" + type: MAP + stat_var_key: "dc/cc51jvbvp0jdf" + } + } + } + + stat_var_spec { + key: "dc/cc51jvbvp0jdf" + value { + stat_var: "dc/cc51jvbvp0jdf" + name: "Number of Grocery Store Owners" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: MAP + title: "Population with Low Income and Low Access to Grocery Stores" + stat_var_key: "count_lowincome_lowgroceryaccess" + } + } + columns { + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "count_lowincome_lowgroceryaccess" + } + } + } + + stat_var_spec { + key: "count_lowincome_lowgroceryaccess" + value { + stat_var: "Low_Income_Low_Access_To_Grocery_Store" + name: "Population with Low Income and Low Access to Grocery Stores" + } + } + + #------- HEALTH -------# + + ### NEW BLOCK - Health Insurance ### + blocks { + title: "Health" + columns { + tiles { + type: DESCRIPTION + description: "Lack of access to health insurance and healthcare can contribute to a cycle of poor health and poverty. Having a health emergency without health insurance is costly, can put you into a debt cycle, and can create challenges to getting nutritious food. Additionally, preventative care – which is generally inexpensive with health insurance – helps avoid costly health procedures in the future. Being in a situation that foregoes preventative care costs families more in the long run.\n\nWhat are other ways families must choose between food and health?" + } + } + columns { + tiles { + title: "Percentage of Population Without Health Insurance (${date})" + type: MAP + stat_var_key: "Count_Person_NoHealthInsurance_pct" + } + } + } + + stat_var_spec { + key: "Count_Person_NoHealthInsurance_pct" + value { + stat_var: "Count_Person_NoHealthInsurance" + name: "Percentage of Population Without Health Insurance" + denom: "Count_Person" + scaling: 100 + unit: "%" + } + } + + ### NEW BLOCK - Annual Health Checkups ### + blocks { + columns { + tiles { + title: "Percentage of Population That Has Received an Annual Checkup ${date}" + type: MAP + stat_var_key: "Percent_Person_ReceivedAnnualCheckup" + } + } + columns { + tiles { + type: DESCRIPTION + description: "Health insurance provides individuals with access to preventative health services, including annual checkups. These checkups are essential for detecting and addressing health issues early, which can lead to better health outcomes and reduced healthcare costs in the long run. Health insurance coverage can make annual health checkups more affordable, encouraging individuals to seek regular medical care." + } + } + } + + stat_var_spec { + key: "Percent_Person_ReceivedAnnualCheckup" + value { + stat_var: "Percent_Person_ReceivedAnnualCheckup" + name: "Percentage of Population That Has Received an Annual Checkup" + } + } + + ### NEW BLOCK ### + blocks { + description: "Food insecurity often leads to limited access to nutritious foods, which can result in a diet that is high in unhealthy, processed foods and low in heart-healthy foods such as fruits, vegetables, whole grains, and lean proteins. This type of diet increases the risk of developing type 2 diabetes and developing factors for coronary heart disease, such as high blood pressure, high cholesterol, and obesity. Furthermore, developing these conditions can lead to increased healthcare costs, perpetuating and exacerbating the cycle of food insecurity." + columns { + tiles { + title: "Percent Population With Diabetes" + type: MAP + stat_var_key: "Percent_Person_WithDiabetes" + } + } + columns { + tiles { + type: HIGHLIGHT + description: "Of the population has diabetes" + stat_var_key: "Percent_Person_WithDiabetes" + } + } + } + blocks { + columns { + tiles { + title: "Percent Population With Coronary Heart Disease" + type: MAP + stat_var_key: "Percent_Person_WithCoronaryHeartDisease" + } + } + columns { + tiles { + type: HIGHLIGHT + description: "Of the population has coronary heart disease" + stat_var_key: "Percent_Person_WithCoronaryHeartDisease" + } + } + } + + stat_var_spec { + key: "Percent_Person_WithCoronaryHeartDisease" + value { + stat_var: "Percent_Person_WithCoronaryHeartDisease" + name: "Percentage of Population With Coronary Heart Disease" + unit: "%" + } + } + stat_var_spec { + key: "Percent_Person_WithDiabetes" + value { + stat_var: "Percent_Person_WithDiabetes" + name: "Percentage of Population With Diabetes" + unit: "%" + } + } + + + ### NEW BLOCK - Life Expectancy ### + blocks { + columns { + tiles { + title: "Life Expectancy ${date}" + type: MAP + stat_var_key: "LifeExpectancy_Person" + } + } + columns { + tiles { + type: DESCRIPTION + description: "Access to an adequate and nutritious diet is crucial for maintaining good health and well-being. Food insecurity leads to a poor diet and contributes to a range of physical and mental health issues, and these health challenges impact life expectancy. Food insecurity is often rooted in poverty and socioeconomic disparities. Low-income households may face barriers to accessing healthcare and health insurance, education, safe housing, and other resources that influence overall health and life expectancy." + } + } + } + stat_var_spec { + key: "LifeExpectancy_Person" + value { + stat_var: "LifeExpectancy_Person" + name: "Life Expectancy" + } + } + + stat_var_spec { + key: "Count_Person_BelowPovertyLevelInThePast12Months" + value { + stat_var: "Count_Person_BelowPovertyLevelInThePast12Months" + name: "Population Below Poverty Level Status in Past Year" + } + } + +} + + + + +categories { + title: "Farming and Climate" + + #------- FARMS -------# + + ### NEW BLOCK ### + blocks { + title: "Farms" + description: "The number of farms and crop coverage are factors that influence food security by proxy. While they are not direct indicators of food insecurity, they are part of the broader agricultural landscape that contributes to food availability, affordability, and access. In some cases, farms may prioritize exporting crops over the cultivation of diverse and nutritious foods for local consumption. Prioritizing crop exports — and instead focusing on importing foods — can make local food systems vulnerable to global market fluctuations and global supply chain disruptions. Additionally, if the prices of imported foods increase, it can impact local economies and potentially hinder food affordability and access." + columns { + tiles { + type: HIGHLIGHT + description: "Farms in ${placeName}" + stat_var_key: "Count_Farm" + } + } + } + stat_var_spec { + key: "Count_Farm" + value { + stat_var: "Count_Farm" + name: "Farms" + } + } + + blocks { + columns { + tiles { + title: "Farms (${date})" + type: MAP + stat_var_key: "Count_Farm" + } + } + columns { + tiles { + title: "Percentage of Crop Covered Area (${date})" + type: MAP + stat_var_key: "LandCoverFraction_Cropland" + } + } + } + + stat_var_spec { + key: "LandCoverFraction_Cropland" + value { + stat_var: "LandCoverFraction_Cropland" + name: "Percentage of Crop Covered Area" + } + } + + #------- FARMS -------# + + ### NEW BLOCK ### + blocks { + title: "Farm Areas" + description: "Silage and forage are crops that are grown specifically to feed livestock, including cows, and are an essential component of cattle farming. Having sufficient land dedicated to silage and forage production can support a healthy, productive, and sustainable cattle population, which in turn contributes to food security by ensuring a consistent supply of meat and dairy products to these communities. Especially during periods of drought, crop failure, or other disasters, having dedicated land for cattle and feed ensures consistent supply of animal-based foods to communities in the face of potential agricultural disasters." + columns { + tiles { + title: "Beef Cows on a Farm (${date})" + type: MAP + stat_var_key: "Count_FarmInventory_BeefCows" + } + } + } + + stat_var_spec { + key: "Count_FarmInventory_BeefCows" + value { + stat_var: "Count_FarmInventory_BeefCows" + name: "Beef Cows on a Farm" + } + } + + blocks { + columns { + tiles { + title: "Land Dedicated to Forage Production (${date})" + type: MAP + stat_var_key: "Area_Farm_Forage" + } + } + columns { + tiles { + title: "Land Dedicated to Silage Production (${date})" + type: MAP + stat_var_key: "Area_Farm_CornForSilageOrGreenchop" + } + } + } + stat_var_spec { + key: "Area_Farm_Forage" + value { + stat_var: "Area_Farm_Forage" + name: "Land Dedicated to Forage Production" + } + } + stat_var_spec { + key: "Area_Farm_CornForSilageOrGreenchop" + value { + stat_var: "Area_Farm_CornForSilageOrGreenchop" + name: "Land Dedicated to Silage Production" + } + } + + #------- FARM PRODUCTION -------# + + ### NEW BLOCK ### + blocks { + title: "Farm Production" + description: "Irrigation and depleting water sources play an increasingly critical role on farms. Crops vary in their dependence on irrigation, with many vegetables and more sensitive grains being completely reliant on supplementary water to survive harsh summers. Other crops require supplemental water from irrigation to be economically viable, but are unlikely to die or completely fail without it.\n\nWith climate change impacting access to reliable irrigation, how will farmers need to adapt to this depleting resource? " + columns { + tiles { + title: "Area of Irrigated Lands on Farms (${date})" + type: MAP + stat_var_key: "Area_Farm_IrrigatedLand" + } + } + columns { + tiles { + title: "Area of Farms Growing Vegetables for Sale (${date})" + type: MAP + stat_var_key: "Area_Farm_VegetablesHarvestedForSale" + } + } + } + stat_var_spec { + key: "Area_Farm_IrrigatedLand" + value { + stat_var: "Area_Farm_IrrigatedLand" + name: "Area of Irrigated Lands on Farms" + } + } + stat_var_spec { + key: "Area_Farm_VegetablesHarvestedForSale" + value { + stat_var: "Area_Farm_VegetablesHarvestedForSale" + name: "Area of Farms Growing Vegetables for Sale" + } + } + + + #------- FARM EQUIPMENT AND SUBSIDIES -------# + + ### NEW BLOCK ### + blocks { + title: "Farm Equipment and Subsidies" + description: "The U.S. government has subsidized farmers through direct cash payments and other measures since 1933. How do higher equipment costs impact new farmers?" + columns { + tiles { + title: "Farms Receiving Government Payments (${date})" + type: MAP + stat_var_key: "Count_Farm_ReceivedGovernmentPayment" + } + } + columns { + tiles { + title: "Average Value of Farming Equipment (${date})" + type: MAP + stat_var_key: "Mean_MarketValue_Farm_MachineryAndEquipment" + } + } + } + stat_var_spec { + key: "Count_Farm_ReceivedGovernmentPayment" + value { + stat_var: "Count_Farm_ReceivedGovernmentPayment" + name: "Farms Receiving Government Payments" + } + } + stat_var_spec { + key: "Mean_MarketValue_Farm_MachineryAndEquipment" + value { + stat_var: "Mean_MarketValue_Farm_MachineryAndEquipment" + name: "Average Value of Farming Equipment" + } + } + + #------- CLIMATE AND AGRICULTURE -------# + + ### NEW BLOCK ### + blocks { + title: "Climate and Agriculture" + description: "Climate change is an increasingly significant development for farmers. Heat waves are just one factor that can lead to crop loss. Below you see a map exploring the rate of heat waves experienced by a population in a given region.\n\nWhat decisions will farmers have to make to address more frequent heat events?" + columns { + tiles { + title: "Population-weighted Number of Heat Waves (${date})" + type: MAP + stat_var_key: "PopulationWeighted_Count_HeatWaveEvent" + } + + } + } + stat_var_spec { + key: "PopulationWeighted_Count_HeatWaveEvent" + value { + stat_var: "PopulationWeighted_Count_HeatWaveEvent" + name: "Population-weighted Number of Heat Waves" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + title: "Number of Droughts (${date})" + type: MAP + stat_var_key: "Count_DroughtEvent" + } + } + columns { + tiles { + type: DESCRIPTION + description: "Farmers rely on a steady and reliable source of water for their crops to be successful, either in the form of irrigation or in the form of consistent rainfall. Coupled with intensifying water use, the number of droughts paint a picture of a dwindling key resource and the stress on farmers to obtain consistent access to this resource." + } + } + } + stat_var_spec { + key: "Count_DroughtEvent" + value { + stat_var: "Count_DroughtEvent" + name: "Droughts" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: DESCRIPTION + description: "In response to a changing climate, farmers may need to find other resources for their crops or livestock." + } + } + columns { + tiles { + title: "Irrigated Lands on Farms (${date})" + type: MAP + stat_var_key: "Area_Farm_IrrigatedLand" + } + } + } + stat_var_spec { + key: "Area_Farm_IrrigatedLand" + value { + stat_var: "Area_Farm_IrrigatedLand" + name: "Irrigated Lands on Farms" + } + } + + ### NEW BLOCK ### + blocks { + columns { + tiles : { + type: DESCRIPTION + description: "Animal products are an essential component of the U.S. food system. However, it is important to note that beef demands a lot of water. This demand stems from both the animals themselves and the feed that they rely on.\n\nHow could the U.S. preference for beef be impacting other agricultural sectors negatively?" + } + tiles: { + type: LINE + title: "Withdrawal Rate of Water for Livestock in ${placeName}" + stat_var_key: "WithdrawalRate_Water_Livestock" + } + } + columns { + tiles : { + type: DESCRIPTION + description: "Animal agriculture is often the most viable agricultural option in many areas. Factors limiting crop production include climate pressures, access to irrigation, and socioeconomic pressures.\n\nSince water resources are often limited, how might competition for this resource affect farmers?" + } + tiles { + title: "Withdrawal Rate of Water for Livestock (${date})" + type: MAP + stat_var_key: "WithdrawalRate_Water_Livestock" + } + } + } + + stat_var_spec { + key: "WithdrawalRate_Water_Livestock" + value { + stat_var: "WithdrawalRate_Water_Livestock" + name: "Withdrawal Rate of Water for Livestock" + } + } + +} + +categories { + ### NEW BLOCK ### + blocks { + columns { + tiles { + type: DESCRIPTION + description: "It is important to note that the dryer, warmer future is only one component of how climate change is expected to affect our food systems. The increasing severity of storms, massive flooding events, and other changing climate factors affect our ability to produce food. These events not only impact food production where they occur, they also drive up the demand for food and other resources as people are displaced and try to recover.\n\nIn summary, improving food security depends on careful planning and policy considerations. Food security is a multifaceted issue influenced by a wide range of factors, including income levels, access to markets, food distribution systems, government policies, social safety nets, education, health, sustainable agricultural practices, climate resilience, and more." + } + } + } + blocks { + columns { + tiles { + type: DESCRIPTION + description: "_The authors interacted with artificial intelligence tools to assist in the creation of content included on this page._\n\n_Funded by [Google.org](https://www.google.org)_" + } + } + } +} + +#categories { +# title: "Explore More" +# +# ### NEW BLOCK ### +# blocks { +# title: "See data for your state" +# columns { +# tiles { +# type: DESCRIPTION +# description: "* [Alabama](../geoId/01)\n* [Alaska](../geoId/02)\n* [Arizona](../geoId/04)\n* [Arkansas](../geoId/05)\n* [California](../geoId/06)\n* [Colorado](../geoId/08)\n* [Connecticut](../geoId/09)\n* [Delaware](../geoId/10)\n* [Florida](../geoId/12)\n* [Georgia](../geoId/13)\n* [Hawaii](../geoId/15)\n* [Idaho](../geoId/16)\n* [Illinois](../geoId/17)\n* [Indiana](../geoId/18)\n* [Iowa](../geoId/19)\n* [Kansas](../geoId/20)\n* [Kentucky](../geoId/21)\n* [Louisiana](../geoId/22)\n* [Maine](../geoId/23)\n* [Maryland](../geoId/24)\n* [Massachusetts](../geoId/25)\n* [Michigan](../geoId/26)\n* [Minnesota](../geoId/27)\n* [Mississippi](../geoId/28)\n* [Missouri](../geoId/29)" +# } +# } +# columns { +# tiles { +# type: DESCRIPTION +# description: "* [Montana](../geoId/30)\n* [Nebraska](../geoId/31)\n* [Nevada](../geoId/32)\n* [New Hampshire ](../geoId/33)\n* [New Jersey ](../geoId/34)\n* [New Mexico ](../geoId/35)\n* [New York ](../geoId/36)\n* [North Carolina ](../geoId/37)\n* [North Dakota ](../geoId/38)\n* [Ohio](../geoId/39)\n* [Oklahoma ](../geoId/40)\n* [Oregon](../geoId/41)\n* [Pennsylvania](../geoId/42)\n* [Rhode Island](../geoId/44)\n* [South Carolina](../geoId/45)\n* [South Dakota ](../geoId/46)\n* [Tennessee](../geoId/47)\n* [Texas](../geoId/48)\n* [Utah](../geoId/49)\n* [Vermont](../geoId/50)\n* [Virginia](../geoId/51)\n* [Washington](../geoId/53)\n* [West Virginia ](../geoId/54)\n* [Wisconsin](../geoId/55)\n* [Wyoming](../geoId/56)" +# } +# } +# +# } +#} + diff --git a/server/config/topic_page/foodsecurity_old/CA.textproto b/server/config/topic_page/foodsecurity_old/CA.textproto new file mode 100644 index 0000000000..e05a982109 --- /dev/null +++ b/server/config/topic_page/foodsecurity_old/CA.textproto @@ -0,0 +1,456 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + +metadata { + topic_id: "foodsecurity_old" + topic_name: "Food Security" + place_group { + parent_place: "country/USA" + place_type: "State" + } + place_group { + parent_place: "country/USA" + place_type: "County" + } + contained_place_types { + key: "State" + value: "County" + } + contained_place_types { + key: "County" + value: "CensusTract" + } +} + +categories { + title: "The Need" + + blocks { + title: "Population below the poverty level" + columns { + tiles { + type: HIGHLIGHT + description: "people below the poverty level in the last 12 months in ${placeName} (${date})" + stat_var_key: "count_person_below_poverty_level" + } + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "count_person_below_poverty_level" + } + + } + columns { + tiles { + type: MAP + title: " in ${placeName}" + stat_var_key: "count_person_below_poverty_level" + } + } + } + + blocks { + title: "Low Access to Grocery Stores" + columns { + tiles { + type: MAP + title: " in ${placeName}" + stat_var_key: "count_lowincome_lowgroceryaccess" + } + } + columns { + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "count_lowincome_lowgroceryaccess" + } + } + } + + stat_var_spec { + key: "count_person_below_poverty_level" + value { + stat_var: "Count_Person_BelowPovertyLevelInThePast12Months" + name: "Population below poverty level" + } + } + + + stat_var_spec { + key: "count_lowincome_lowgroceryaccess" + value { + stat_var: "Low_Income_Low_Access_To_Grocery_Store" + name: "Population with Low Income and Low Access to Grocery Stores" + } + } +} + + +categories { + title: "Food Assistance" + + blocks { + title: "Supplemental Nutrition Assistance Program (SNAP) recipients" + columns { + tiles { + type: HIGHLIGHT + description: "Households receiving SNAP benefits in ${placeName} (${date})" + stat_var_key: "count_snap" + } + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "pc_snap" + } + + } + columns { + tiles { + type: LINE + title: "SNAP participants in ${placeName}" + stat_var_key: "count_snap" + } + + } + } + + blocks { + title: "Community Food Services" + + columns { + tiles { + type: MAP + title: "Community Food Services establishments in ${placeName}" + stat_var_key: "pc_community_food_services" + } + } + columns { + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + show_lowest: true + } + stat_var_key: "pc_community_food_services" + } + + } + } + + stat_var_spec { + key: "count_snap" + value { + stat_var: "Count_Household_WithFoodStampsInThePast12Months" + name: "Households receiving SNAP benefits in the past year" + } + } + stat_var_spec { + key: "pc_snap" + value { + stat_var: "Count_Household_WithFoodStampsInThePast12Months" + denom: "Count_Person" + name: "Households receiving SNAP benefits in the past year (per capita)" + } + } + stat_var_spec { + key: "pc_community_food_services" + value { + stat_var: "dc/j1kr0ft77ptb6" + denom: "Count_Person" + name: "Community Food Services establishments (per capita)" + } + } +} + + + +categories { + title: "Health Conditions" + + blocks { + title: "Summary" + columns { + tiles { + type: BAR + title: "Health conditions" + stat_var_key: "prevalence_diabetes" + stat_var_key: "prevalence_chd" + stat_var_key: "prevalence_highbloodpressure" + stat_var_key: "prevalence_highcholesterol" + } + } + columns { + tiles { + type: RANKING + ranking_tile_spec { + show_highest: true + highest_title: "Highest among ${statVar}" + } + stat_var_key: "prevalence_diabetes" + stat_var_key: "prevalence_chd" + stat_var_key: "prevalence_highbloodpressure" + stat_var_key: "prevalence_highcholesterol" + } + } + } + blocks { + title: "By County" + columns { + tiles { + type: MAP + title: "Prevalence of Diabetes (${date})" + stat_var_key: "prevalence_diabetes" + } + tiles { + type: MAP + title: "Prevalence of High Blood Pressure (${date})" + stat_var_key: "prevalence_highbloodpressure" + } + } + columns { + tiles { + type: MAP + title: "Prevalence of Coronary Heart Disease (${date})" + stat_var_key: "prevalence_chd" + } + tiles { + type: MAP + title: "Prevalence of High Cholesterol (${date})" + stat_var_key: "prevalence_highcholesterol" + } + } + } + + stat_var_spec { + key: "prevalence_diabetes" + value { + stat_var: "Percent_Person_WithDiabetes" + name: "% population with Diabetes" + } + } + stat_var_spec { + key: "prevalence_chd" + value { + stat_var: "Percent_Person_WithCoronaryHeartDisease" + name: "% population with Coronary Heart Disease" + } + } + stat_var_spec { + key: "prevalence_highbloodpressure" + value { + stat_var: "Percent_Person_WithHighBloodPressure" + name: "% population with High Blood Pressure" + } + } + stat_var_spec { + key: "prevalence_highcholesterol" + value { + stat_var: "Percent_Person_WithHighCholesterol" + name: "% population with High Cholesterol" + } + } +} + +categories { + title: "Surplus Food Potential" + + blocks { + title: "Sources of Surplus Food" + columns { + tiles { + type: MAP + title: "Farms in ${placeName}" + stat_var_key: "count_farm" + } + + + tiles { + type: MAP + title: "Grocery Wholesalers in ${placeName}" + stat_var_key: "establishments_wholesalers" + } + tiles { + type: MAP + title: "Restaurants in ${placeName}" + stat_var_key: "establishments_restaurants" + } + tiles { + type: MAP + title: "Colleges and Universities in ${placeName}" + stat_var_key: "establishments_colleges" + } + } + columns { + tiles { + type: MAP + title: "Food Manufacturing in ${placeName}" + stat_var_key: "establishment_foodmanufacturing" + } + tiles { + type: MAP + title: "Grocery Stores in ${placeName}" + stat_var_key: "establishments_grocery" + } + tiles { + type: MAP + title: "Hotels in ${placeName}" + stat_var_key: "establishment_traveleraccommodations" + } + tiles { + type: MAP + title: "Primary and Secondary Schools in ${placeName}" + stat_var_key: "establishment_primarysecondaryschools" + } + } + + } + + + stat_var_spec { + key: "establishments_restaurants" + value { + stat_var: "dc/redh1q644pn3b" + name: "# of restaurants" + } + } + stat_var_spec { + key: "establishments_grocery" + value { + stat_var: "dc/bdb0eypp5ek6h" + name: "# of grocery stores" + } + } + stat_var_spec { + key: "establishments_wholesalers" + value { + stat_var: "dc/tsye5m13dgm81" + name: "# of grocery wholesalers" + } + } + stat_var_spec { + key: "establishments_colleges" + value { + stat_var: "dc/ds35leh1tbb6d" + name: "# colleges and universities" + } + } + stat_var_spec { + key: "count_farm" + value { + stat_var: "Count_Farm" + name: "# farms" + } + } + stat_var_spec { + key: "establishment_foodmanufacturing" + value { + stat_var: "dc/ld7r82rlc7se6" + name: "# food manufacturing establishments" + } + } + stat_var_spec { + key: "establishment_traveleraccommodations" + value { + stat_var: "dc/mq2x2pzme3yfh" + name: "# hotels" + } + } + stat_var_spec { + key: "establishment_primarysecondaryschools" + value { + stat_var: "dc/1xbz8tzx9lhmg" + name: "# primary and secondary schools" + } + } + + +} + + +#categories { +# title: "TESTING" +# +# blocks { +# title: "TESTING" +# description: "Testing" +# columns { +# tiles { +# type: SCATTER +# title: "TEST (${xDate}) vs. TEST (${yDate})" +# stat_var_key: 'prevalence_diabetes' +# stat_var_key: 'prevalence_chd' +# } +# } +# columns { +# tiles { +# type: BIVARIATE +# title: "Testing" +# stat_var_key: 'prevalence_diabetes' +# stat_var_key: 'prevalence_chd' +# } +# } +# } +# blocks { +# title: "TESTING" +# description: "Testing" +# columns { +# tiles { +# type: BIVARIATE +# title: "Testing" +# stat_var_key: 'prevalence_diabetes' +# stat_var_key: 'prevalence_chd' +# } +# } +# } +# +# stat_var_spec { +# key: "prevalence_diabetes" +# value { +# stat_var: "Percent_Person_WithDiabetes" +# name: "% population with Diabetes" +# } +# } +# stat_var_spec { +# key: "prevalence_chd" +# value { +# stat_var: "Percent_Person_WithCoronaryHeartDisease" +# name: "% population with Coronary Heart Disease" +# } +# } +# stat_var_spec { +# key: "prevalence_highbloodpressure" +# value { +# stat_var: "Percent_Person_WithHighBloodPressure" +# name: "% population with High Blood Pressure" +# } +# } +# stat_var_spec { +# key: "prevalence_highcholesterol" +# value { +# stat_var: "Percent_Person_WithHighCholesterol" +# name: "% population with High Cholesterol" +# } +# } +#} \ No newline at end of file diff --git a/server/config/topic_page/playground/US_Places.textproto b/server/config/topic_page/playground/US_Places.textproto new file mode 100644 index 0000000000..0f4d9ac7f2 --- /dev/null +++ b/server/config/topic_page/playground/US_Places.textproto @@ -0,0 +1,89 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +## This file specifies the topic page config for poverty in USA + +metadata { + topic_id: "playground" + topic_name: "TechSoup Topic Page Playground" + place_group { + parent_place: "country/USA" + place_type: "State" + } + place_group { + parent_place: "country/USA" + place_type: "County" + } + contained_place_types { + key: "State" + value: "County" + } + contained_place_types { + key: "County" + value: "CensusTract" + } +} + +categories { + title: "Test" + blocks { + title: "Using markdown in descriptions" + columns { + tiles { + type: DESCRIPTION + description: "# This is a test of markdown.\nThis is a description. Does *Markdown* work?\n* Yes or\n* No\n\n What about a [link](https://www.techsoup.org)?" + } + } + + } + + + blocks { + title: "Excess food generation from restaurants" + + columns { + tiles { + type: HIGHLIGHT + description: "Excess food generation from restaurants in ${placeName}" + stat_var_key: "restaurant_excessfoodgeneration" + } + } + + columns { + tiles { + type: MAP + stat_var_key: "restaurant_excessfoodgeneration" + title: "Excess food generation from restaurants by county" + } + } + } + + stat_var_spec { + key: "household_median_income" + value { + stat_var: "Median_Income_Household" + name: "Household Median Income" + } + } + + stat_var_spec { + key: "restaurant_excessfoodgeneration" + value { + stat_var: "dc/963qtn2mpnbs" + name: "Excess food generated by full service restaurants" + scaling: 1.38 + unit: "Tons" + } + } +} diff --git a/server/lib/subject_page_config.py b/server/lib/subject_page_config.py index fbbb13b590..6cfec56253 100644 --- a/server/lib/subject_page_config.py +++ b/server/lib/subject_page_config.py @@ -159,8 +159,12 @@ def _places_with_geojson(places): result = [] resp = fetch.properties(places) for place, place_props in resp.items(): - if 'geoJsonCoordinates' in place_props: - result.append(place) + # TECHSOUP UPDATE: Look for a property that starts with geoJsonCoordinates rather than an exact match + #if 'geoJsonCoordinates' in place_props: + # result.append(place) + for prop in place_props: + if prop.startswith("geoJsonCoordinates"): + result.append(place) return result @@ -247,7 +251,9 @@ def remove_empty_charts(page_config, place_dcid, contained_place_type=None): def place_metadata(place_dcid, get_child_places=True, arg_place_type=None, - arg_place_name=None) -> PlaceMetadata: + arg_place_name=None, + arg_child_places_sortbyname=False, + arg_limit_child_places=True) -> PlaceMetadata: """ Returns place metadata needed to render a subject page config for a given dcid. """ @@ -294,9 +300,12 @@ def place_metadata(place_dcid, if get_child_places: child_places = place_api.child_fetch(place_dcid) for place_type in child_places: - child_places[place_type].sort(key=lambda x: x['pop'], reverse=True) - child_places[place_type] = child_places[place_type][:place_api. - CHILD_PLACE_LIMIT] + if arg_child_places_sortbyname: + child_places[place_type].sort(key=lambda x: x['name'], reverse=False) + else: + child_places[place_type].sort(key=lambda x: x['pop'], reverse=True) + if arg_limit_child_places: + child_places[place_type] = child_places[place_type][:place_api.CHILD_PLACE_LIMIT] # Filter out unsupported place types supported_place_types = set(contained_place_types.keys()) diff --git a/server/lib/util.py b/server/lib/util.py index 1ffc389682..ac5fd09535 100644 --- a/server/lib/util.py +++ b/server/lib/util.py @@ -50,7 +50,14 @@ 'equity': ['USA', 'US_Places'], 'poverty': ['USA', 'India'], 'dev': ['CA'], - 'sdg': ['sdg'] + 'sdg': ['sdg'], + 'foodsecurity' : ['USA'], + 'foodsecurity_old' : ['CA'], + 'economic-and-social-growth' : ['COL'], + 'development' : ['NGA'], + 'climate' : ['USA'], + 'climate_allvars' : ['USA'], + 'playground' : ['US_Places'] } # Levels range from 0 (fastest, least compression), to 9 (slowest, most diff --git a/server/routes/topic_page/html.py b/server/routes/topic_page/html.py index 8d775058ec..7004a54b7d 100644 --- a/server/routes/topic_page/html.py +++ b/server/routes/topic_page/html.py @@ -25,6 +25,12 @@ import server.lib.util as libutil import server.routes.shared_api.place as place_api import server.services.datacommons as dc +import copy +import logging + +# TechSoup - add search bar and child places +_TOPICS_TO_DISPLAY_SEARCH_BAR = ["foodsecurity", "climate", "climate_allvars"] +_TOPICS_TO_SHOW_CHILD_PLACES = ["foodsecurity", "climate", "climate_allvars"] _NL_DISASTER_TOPIC = 'nl_disasters' _SDG_TOPIC = 'sdg' @@ -72,6 +78,12 @@ def topic_page(topic_id=None, place_dcid=None): all_configs = current_app.config['TOPIC_PAGE_CONFIG'] if g.env == 'local': all_configs = libutil.get_topic_page_config() + + # TO DO: For TECHSOUP dev only, remove this before deploying + #if g.env == 'custom': + if current_app.config['LOCAL']: + all_configs = libutil.get_topic_page_config() + topic_configs = all_configs.get(topic_id, []) if topic_id in _DEBUG_TOPICS: @@ -127,14 +139,33 @@ def topic_page(topic_id=None, place_dcid=None): return "Error: no config found" contained_place_type = topic_place_config.metadata.contained_place_types.get( place_type, None) - topic_place_config = lib_subject_page_config.remove_empty_charts( - topic_place_config, place_dcid, contained_place_type) + # [TECHSOUP] make a deep copy of the config so remove_empty_charts won't update the globally cached config + topic_place_config_filtered = copy.deepcopy(topic_place_config) + topic_place_config_filtered = lib_subject_page_config.remove_empty_charts( + topic_place_config_filtered, place_dcid, contained_place_type) place_names = place_api.get_i18n_name([place_dcid]) if place_names: place_name = place_names[place_dcid] else: place_name = place_dcid + + # [TECHSOUP] call place_metadata function to get child places. TO DO: refactor to avoid redundant info returned by place_metadata + if topic_id in _TOPICS_TO_SHOW_CHILD_PLACES: + show_child_places = True + place_metadata = lib_subject_page_config.place_metadata(place_dcid, True, None, None, 'name', False) + place_children = place_metadata.child_places + if place_dcid == 'country/USA': + place_children.pop('Country', None); # HACK: Remove Country from US places to prevent American Samoa from showing up. + else: + show_child_places = False + place_children = [] + + if topic_id in _TOPICS_TO_DISPLAY_SEARCH_BAR: + display_searchbar = True + else: + display_searchbar = False + return flask.render_template( 'topic_page.html', place_type=place_type, @@ -142,6 +173,10 @@ def topic_page(topic_id=None, place_dcid=None): place_dcid=place_dcid, more_places=json.dumps(more_places), topic_id=topic_id, - topic_name=topic_place_config.metadata.topic_name or "", - page_config=MessageToJson(topic_place_config), - topics_summary=topics_summary) + topic_name=topic_place_config_filtered.metadata.topic_name or "", + page_config=MessageToJson(topic_place_config_filtered), + topics_summary=topics_summary, + show_child_places=json.dumps(show_child_places), + place_children=json.dumps(place_children), + display_searchbar=json.dumps(display_searchbar), + maps_api_key=current_app.config['MAPS_API_KEY']) diff --git a/server/routes/ts_issue_landing.py b/server/routes/ts_issue_landing.py new file mode 100644 index 0000000000..c20c5daffe --- /dev/null +++ b/server/routes/ts_issue_landing.py @@ -0,0 +1,35 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Data Commons static content routes.""" + +from datetime import date +import os + +import flask +from flask import Blueprint +from flask import render_template + +import server.lib.render as lib_render +from server.services import datacommons as dc + +bp = Blueprint('ts_issue_landing', __name__) + + +@bp.route('/foodsecurity') +def foodsecurity(): + return flask.render_template('custom_dc/custom/issue_landing/foodsecurity.html') + +@bp.route('/climate') +def climate(): + return flask.render_template('custom_dc/custom/issue_landing/climate.html') \ No newline at end of file diff --git a/server/templates/custom_dc/custom/base.html b/server/templates/custom_dc/custom/base.html index d350670875..93269b04ac 100644 --- a/server/templates/custom_dc/custom/base.html +++ b/server/templates/custom_dc/custom/base.html @@ -34,9 +34,18 @@ - {{ title }} - Custom Data Commons Commons + {# Google Tag Manager #} + + {# End Google Tag Manager #} + + Data Commons for Civil Society + @@ -48,6 +57,11 @@ + {# Google Tag Manager (noscript) #} + + {# End Google Tag Manager (noscript) #} +
{% endif %} - {{ NAME }} +
Data Commons
for Civil Society
{% if subpage_title %} {% if subpage_url %}{% endif %} @@ -75,6 +89,9 @@ diff --git a/server/templates/custom_dc/custom/homepage.html b/server/templates/custom_dc/custom/homepage.html index 3905829c8c..faf9d7317a 100644 --- a/server/templates/custom_dc/custom/homepage.html +++ b/server/templates/custom_dc/custom/homepage.html @@ -21,6 +21,101 @@ {% block content %}
-

Home Page

+
+ +
+

Public data that powers your work

+

+ Data Commons for Civil Society is a powerful tool that makes it easy for nonprofits, NGOs, and other civil society organizations to find and use public data, and to explore connections between data sets. + + Whether you’re trying to make a data-informed decision or understand your community better, you can find data that matters to you. +

+ +

Tailor-made for civil society

+

+ Data Commons for Civil Society is powered by Google's Data Commons, and includes + resources designed for organizations like yours, as well as additional data sets that reflect the issues most important + to civil society. If you have datasets in mind that aren’t part of Data Commons, or you have a need that you wish you could + meet using Data Commons, please take a moment to share your ideas. Your input will help us make + Data Commons for Civil Society work better for you. +

+ +

Flexibility and functionality for your organization

+

+ Using Data Commons, you have access to an enormous amount of data that you can finetune to fit what you need. What’s more, you can select data visualizations to tell your story in the way you need it told. + Stay tuned for helpful tutorials and resources to get you started. +

+ +
+
+ +

Exploring the issues that matter to you

+

+ We are currently learning from organizations like yours to highlight data that is most relevant to your work. Let us know which issue areas are most important to you. Here are some topics that we are working on: +

+ + + +
+
+
+
What stories can you tell with Data Commons?
+

+ Data Commons can help you create engaging, data-driven stories drawing from public data. Here are some examples from the TechSoup Global Network: +

+ +
+
+
+ + +
+ +
+ +

Why is TechSoup committed to more public data?

+

+ Many of the big challenges the world faces require deep insights to solve. These insights will need to be firmly grounded in data. We believe that equipping local civil society actors with access to public data will empower them to make decisions and take calculated risks in order to best serve their communities. We also know that civil society holds rich local insights, and we are committed to helping civil society organizations share their knowledge with the world in a more inclusive way. +

+ +

About this project

+

+ TechSoup, in partnership with Google's Data Commons team, and funded by Google.org, is making Data Commons information more accessible and useful to civil society. The scope of this effort includes a number of components: +

+
    +
  • Training and support for civil society organizations using Data Commons
  • +
  • Providing templates and examples to help organizations build compelling narratives
  • +
  • Identifying and integrating new data sources relevant for nonprofits
  • +
  • Contributing nonprofit data to Data Commons, completing the picture of communities
  • +
+ + +

+ To learn more about TechSoup’s open data work with civil society or to get involved, please visit us at publicdata.techsoup.org. +

+ +

About TechSoup

+

+ TechSoup leads a global network of civil society organizations to ensure that impact organizations everywhere can benefit from data, technology, and digital skills. To date, the TechSoup Global Network has connected more than 1.4 million organizations in 236 countries and territories with more than $21 billion in technology and financial resources. Our mission is to help civil society succeed in creating a more equitable world. Learn more about the TechSoup Global Network. +

+ +

Support our work

+

+ Your support helps us get projects like this into the hands of grassroots organizations around the world. Donate to TechSoup today. +

+ + +
+ + + {% endblock %} \ No newline at end of file diff --git a/server/templates/custom_dc/custom/issue_landing/climate.html b/server/templates/custom_dc/custom/issue_landing/climate.html new file mode 100644 index 0000000000..e52e7180bb --- /dev/null +++ b/server/templates/custom_dc/custom/issue_landing/climate.html @@ -0,0 +1,101 @@ +{# + Copyright 2023 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + #} + + {%- extends BASE_HTML -%} + + {% set main_id = 'climate' %} + {% set page_id = 'page-climate' %} + {% set title = 'Climate' %} + + {% block content %} +
+
+
+
+

Data Commons for Climate Change Organizations

+ +

Climate change organizations are weighing in and sharing the information they need to bolster their reach and measure their impact. Read on to see how these organizations can benefit from public data, and don't forget to contribute by sharing the data or information that matters most to your organization.

+
+
+
Climate change at a glance
+

Based on your feedback, we've collected a number of statistics in Data Commons that may be helpful for climate change organizations.

+ +
+
+ +

Climate change organizations are asking these questions

+ + +
+

How does socioeconomic status affect exposure to the costs of natural disaster impacts?

+

+ + {% set chart_link='/tools/scatter#%26svx%3DMedian_Income_Person%26dx%3DCount_Person%26svy%3DAnnual_ExpectedLoss_NaturalHazardImpact%26dy%3DCount_Person%26epd%3DgeoId%2F12%26ept%3DCounty%26ct%3D1%26pp%3D' %} + + + + Annual costs from natural disasters vs. Median income in Florida + + Climate change can be tremendously costly to manage. Governments and communities often take on significant costs following a storm. As storms become more intense due to climate change, better resilience planning is needed to enable communities to ‘bounce back’ after these damaging events. In places like Florida, where the highest number of hurricanes have made landfall in the U.S., coastal resilience and adaptation efforts are integral to preparing its communities for future storms. +

+

+ Data Commons allows us to create visualizations like this map of Florida. Here we’re considering the intersection of two datasets: estimated annual costs from natural disasters, and the median income of a county. Data like this allow us to consider questions like, How does socioeconomic status relate to natural disaster impacts? and enables us to dive deeper into considering which communities may be impacted by future storms. +

+ +
+ +
+

What types of water usage could have an impact on water scarcity?

+

+ + {% set chart_link='/tools/timeline#place=geoId%2F19&statsVar=WithdrawalRate_Water_Industrial__WithdrawalRate_Water_Irrigation__WithdrawalRate_Water_Livestock__WithdrawalRate_Water_Domestic__WithdrawalRate_Water_Aquaculture' %} + + + + Withdrawal rates of water in Iowa + + Water and climate are intimately connected, and as climate change continues to affect worldwide water cycles, we are faced with the challenge of managing this precious resource. In the United States there is a growing challenge of managing the rate of withdrawal from surface and groundwater reservoirs. The rapid extraction of water from these sources, coupled with the varying rates of replenishment, can have significant impacts on the future of water access. +

+

+ In Iowa, the heart of the Corn Belt, water usage and agricultural production have been closely linked and managed. Data Commons allows us to explore that relationship by visualizing different agricultural sectors' water withdrawal over time. We can also add a non-agricultural sector, like Industry, to further explore how water use has changed over time and for what purpose. This increase in industrial water withdrawal in 2005 could be linked to the growth in the biofuel industry in Iowa. Insights like these can be very useful when managing such a dynamic, and valuable resource like water. +

+
+ +
+

How does the proportion of forested area compare to built-up area in the United States?

+

+ + {% set chart_link='/tools/scatter#%26svx%3DLandCoverFraction_Forest%26dx%3DCount_Person%26svy%3DLandCoverFraction_BuiltUp%26dy%3DCount_Person%26epd%3Dcountry%2FUSA%26ept%3DCounty%26ct%3D1%26pp%3D' %} + + + + Built-up area vs. Forest-covered area in the United States + + Forests play a key role in managing the amount of carbon in our atmosphere. As trees grow they store carbon in their biomass, reducing the amount of atmospheric carbon. Forests also provide a range of ecological services like biological habitat, water filtration, soil erosion prevention, and recreation. As humans create settlements, we inevitably alter the landscapes that come in contact with our development. +

+

+ Tracking land use over time can be highly useful in managing resources like the forests. This data, hosted by Data Commons, allows us to compare the proportion of built-up area to forest-covered area in 2019. Maps like this provide the opportunity to consider our growing relationship with our landscapes and can enable better planning practices for the future. +

+
+ + + + + +
+ {% endblock %} \ No newline at end of file diff --git a/server/templates/custom_dc/custom/issue_landing/foodsecurity.html b/server/templates/custom_dc/custom/issue_landing/foodsecurity.html new file mode 100644 index 0000000000..966c906534 --- /dev/null +++ b/server/templates/custom_dc/custom/issue_landing/foodsecurity.html @@ -0,0 +1,120 @@ +{# + Copyright 2023 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + #} + + {%- extends BASE_HTML -%} + + {% set main_id = 'foodsecurity' %} + {% set page_id = 'page-foodsecurity' %} + {% set title = 'Food Security' %} + + {% block content %} +
+
+
+
+

Data Commons for Food Security Organizations

+ +

Food security organizations are weighing in and sharing the information they need to bolster their reach and measure their impact. Read on to see how these organizations can benefit from public data, and don't forget to contribute by sharing the data or information that matters most to your organization.

+
+
+
Food security at a glance
+

Based on your feedback, we've collected a number of statistics in Data Commons that may be helpful for food security organizations.

+ +
+
+ +

Food security organizations are asking these questions

+ + +
+

How many food assistance organizations are operating in areas with high rates of poverty?

+

+ + {% set chart_link='/tools/scatter#%26svx%3DCount_Person_BelowPovertyLevelInThePast12Months%26pcx%3D1%26dx%3DCount_Person%26svy%3Ddc%2Fvekpd9nlmyf0b%26pcy%3D1%26dy%3DCount_Person%26epd%3DgeoId%2F20%26ept%3DCounty%26ct%3D1' %} + + + + Community food services vs. Poverty in Kansas + + Data that shows where food assistance organizations are located can help us visualize the geographic areas of focus for these organizations. + However, overlaying this data with geographic data about poverty rates can also help us see where there might be areas that are underserved. +

+

+ The map shown here uses data in Data Commons to show the per capita number of Community Food Services establishments in + each county of Kansas, combined with the per capita number of people under the poverty line. + The counties that have a more green shading are areas where there is a higher rate of poverty but a lower density of food service agencies. +

+ +
+ +
+

Where are there large numbers of people that don't live close to grocery stores?

+

+ + {% set chart_link='/tools/map#%26sv%3DHouseholds_No_Car_Low_Access_To_Grocery_Store%26pc%3D1%26denom%3DCount_Person%26pd%3DgeoId%2F37%26ept%3DCounty' %} + + + + Households with no car and low access to grocery stores in N. Carolina + + The distance that individuals live from supermarkets and large grocery stores affects their ability to access healthy foods. TechSoup is + adding data from the USDA's Food Environment Atlas to + Data Commons to make it easier for food security organizations to find statistics such as Access and Proximity to Grocery Stores. +

+

+ In this example, you can see a map of North Carolina that uses different colors to represent the per capita number of households that have no cars and are more than a mile + away from a supermarket or large grocery store. The darker colors indicate areas where there are the greatest percentage of these households. +

+
+ +
+

How common are specific health issues in areas with high rates of poverty?

+

+ + {% set chart_link='/tools/scatter#%26svx%3DCount_Person_BelowPovertyLevelInThePast12Months%26pcx%3D1%26dx%3DCount_Person%26svy%3DPercent_Person_WithDiabetes%26dy%3DCount_Person%26epd%3DgeoId%2F51%26ept%3DCounty%26ct%3D1' %} + + + + Diabetes vs. Poverty in Virginia + + Food banks can best promote nutrition and health when they understand the needs of the communities to which they distribute food. Knowing about health conditions + that are common in a particular area can help them source and distribute appropriate foods for clients with these conditions. +

+

+ Data Commons has statistics from the CDC about the + prevalence of various health conditions that may be of interest to food security organizations, such as Diabetes, + Coronary Heart Disease, High Cholesterol, + High Blood Pressure +

+

+ This data can be combined with geographic data about levels of poverty to + show which health conditions are likely to impact those in need of food assistance. +

+

+ In this example, we have a map of Virginia that shows the per capita number of people below the poverty level in a 12 month period, and we overlayed it with + data about the per capita number of people with Diabetes. Counties on the map that have a darker blue shading are areas where food pantries and other community + partners are likely to be serving clients with Diabetes. +

+
+ + + + + +
+ {% endblock %} \ No newline at end of file diff --git a/server/templates/topic_page.html b/server/templates/topic_page.html index 5826fadde8..b89eb54efa 100644 --- a/server/templates/topic_page.html +++ b/server/templates/topic_page.html @@ -37,6 +37,8 @@
+
+
{% endblock %} @@ -44,4 +46,5 @@ + {% endblock %} \ No newline at end of file diff --git a/static/css/topic_page.scss b/static/css/topic_page.scss index 60d4ef9d91..03839f4956 100644 --- a/static/css/topic_page.scss +++ b/static/css/topic_page.scss @@ -14,7 +14,12 @@ * limitations under the License. */ +/* TECHSOUP: Add searchbox and child places to topic page */ +@use "./base_subject_page"; +@use "./place/place_search"; + @use "./shared/subject_page"; + @import "./base"; @import "./draw"; @import "./draw_choropleth"; @@ -50,4 +55,5 @@ .page-selector-container h1 { margin-bottom: 0; padding-right: 0.5rem; -} \ No newline at end of file +} + diff --git a/static/custom_dc/custom/favicon.png b/static/custom_dc/custom/favicon.png new file mode 100644 index 0000000000..4f8d7428f9 Binary files /dev/null and b/static/custom_dc/custom/favicon.png differ diff --git a/static/custom_dc/custom/images/builtuparea_forestcoveredarea_usa.png b/static/custom_dc/custom/images/builtuparea_forestcoveredarea_usa.png new file mode 100644 index 0000000000..8a27d2f1c3 Binary files /dev/null and b/static/custom_dc/custom/images/builtuparea_forestcoveredarea_usa.png differ diff --git a/static/custom_dc/custom/images/climate.png b/static/custom_dc/custom/images/climate.png new file mode 100644 index 0000000000..ee62a3f3c0 Binary files /dev/null and b/static/custom_dc/custom/images/climate.png differ diff --git a/static/custom_dc/custom/images/commfoodservices_poverty_kansas.png b/static/custom_dc/custom/images/commfoodservices_poverty_kansas.png new file mode 100644 index 0000000000..219ce90877 Binary files /dev/null and b/static/custom_dc/custom/images/commfoodservices_poverty_kansas.png differ diff --git a/static/custom_dc/custom/images/diabetes_poverty-virginia.png b/static/custom_dc/custom/images/diabetes_poverty-virginia.png new file mode 100644 index 0000000000..9587f25895 Binary files /dev/null and b/static/custom_dc/custom/images/diabetes_poverty-virginia.png differ diff --git a/static/custom_dc/custom/images/food-security.png b/static/custom_dc/custom/images/food-security.png new file mode 100644 index 0000000000..a3eaee364f Binary files /dev/null and b/static/custom_dc/custom/images/food-security.png differ diff --git a/static/custom_dc/custom/images/home_header.png b/static/custom_dc/custom/images/home_header.png new file mode 100644 index 0000000000..dbc5841221 Binary files /dev/null and b/static/custom_dc/custom/images/home_header.png differ diff --git a/static/custom_dc/custom/images/lowgroceryaccess_nocar_nc.png b/static/custom_dc/custom/images/lowgroceryaccess_nocar_nc.png new file mode 100644 index 0000000000..fb5f5c4068 Binary files /dev/null and b/static/custom_dc/custom/images/lowgroceryaccess_nocar_nc.png differ diff --git a/static/custom_dc/custom/images/naturaldisastercost_medianincome_florida.png b/static/custom_dc/custom/images/naturaldisastercost_medianincome_florida.png new file mode 100644 index 0000000000..8b134d7f5f Binary files /dev/null and b/static/custom_dc/custom/images/naturaldisastercost_medianincome_florida.png differ diff --git a/static/custom_dc/custom/images/topics/development-landscape/EDD1.jpeg b/static/custom_dc/custom/images/topics/development-landscape/EDD1.jpeg new file mode 100644 index 0000000000..2a5c439c8a Binary files /dev/null and b/static/custom_dc/custom/images/topics/development-landscape/EDD1.jpeg differ diff --git a/static/custom_dc/custom/images/topics/development-landscape/nnngo-30th-logo.png b/static/custom_dc/custom/images/topics/development-landscape/nnngo-30th-logo.png new file mode 100644 index 0000000000..f76832c046 Binary files /dev/null and b/static/custom_dc/custom/images/topics/development-landscape/nnngo-30th-logo.png differ diff --git a/static/custom_dc/custom/images/topics/economic-and-social-growth/logo-makaia-web.png b/static/custom_dc/custom/images/topics/economic-and-social-growth/logo-makaia-web.png new file mode 100644 index 0000000000..5c5d5d2352 Binary files /dev/null and b/static/custom_dc/custom/images/topics/economic-and-social-growth/logo-makaia-web.png differ diff --git a/static/custom_dc/custom/images/water_withdrawalrate_iowa.png b/static/custom_dc/custom/images/water_withdrawalrate_iowa.png new file mode 100644 index 0000000000..adca2b6fb4 Binary files /dev/null and b/static/custom_dc/custom/images/water_withdrawalrate_iowa.png differ diff --git a/static/custom_dc/custom/overrides.css b/static/custom_dc/custom/overrides.css index 97d4e045c3..da7c816822 100644 --- a/static/custom_dc/custom/overrides.css +++ b/static/custom_dc/custom/overrides.css @@ -45,4 +45,171 @@ #main-footer { border-top: 1px solid #efefef; +} + +/* TechSoup overrides */ + +#main-header #main-header-logo img { + height: 25px; + margin-right: 30px; +} + +.homepage-header { + background-image: url("/custom_dc/custom/images/home_header.png"); + background-size: cover; + background-position: center; + height: 25vh; + max-height: 300px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; +} + +.homepage-header h1 { + color: #222; + font-size: 3rem; + margin: 0; +} + +.homepage-callout { + border-style: solid; + margin-left: 20px; + margin-right: 20px; + margin-top: 20px; + padding-left: 10px; + padding-right: 10px; + padding-top: 10px; + padding-bottom: 10px; + +} + +.foodsec-landing-header { + background-image: url("/custom_dc/custom/images/food-security.png"); + background-size: cover; + background-position: center; + height: 25vh; + max-height: 300px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + margin-bottom: 20px; +} + +.climate-landing-header { + background-image: url("/custom_dc/custom/images/climate.png"); + background-size: cover; + background-position: center; + height: 25vh; + max-height: 300px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + margin-bottom: 20px; +} + +.cta-button { + display: inline-block; + padding: 10px 20px; + font-size: 16px; + font-weight: bold; + text-align: center; + text-decoration: none; + background-color: #2F729B; + color: white; + border: none; + border-radius: 5px; + cursor: pointer; + margin-top: 1rem; + margin-bottom: 1rem; + margin-left: 1rem; + margin-right: 1rem; +} + +.cta-button:hover { + background-color:#004e6c; + color: white; + text-decoration: none; +} + +.cta { + text-align: center; +} + +#homepage .container { + margin-bottom: 3rem; +} + +#homepage h1 { + margin-bottom: 1rem; +} + +#homepage h3 { + margin-top: 1rem; +} + +#homepage #new-update .highlight { + margin-top: 2rem; + margin-bottom: 2rem; + margin-left: 2em; + margin-right: 2em; +} + +h1 { + margin-bottom: 1rem; +} + +h3 { + margin-bottom: 1rem; +} + +.container { + margin-bottom: 3rem; +} + +section.data-examples article { + margin-bottom: 3rem; +} + +.float-md-right { + margin-top: 1rem; + margin-bottom: 1rem; + margin-left: 2em; +} + +.float-md-left { + margin-top: 1rem; + margin-bottom: 1rem; + margin-right: 2em; +} + +.ataglance-section { + background: rgba(0, 0, 0, 0.05); + padding: 1em; +} + +.topicpage-searchbar { + width: 100%; +} + +.navbar-brand #brand-name-link { + text-decoration: none; +} + +.navbar-brand #brand-name-title { + color: #212529; + font-weight:700; +} + +.navbar-toggler { + border-color: rgba(78, 97, 45, .5) !important; +} +.navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2878, 91, 49, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important +} + +.navbar-nav > li > a { + font-size: 15px !important; } \ No newline at end of file diff --git a/static/custom_dc/custom/techsoup-logo.svg b/static/custom_dc/custom/techsoup-logo.svg new file mode 100644 index 0000000000..d478f96f92 --- /dev/null +++ b/static/custom_dc/custom/techsoup-logo.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/js/apps/topic_page/app.tsx b/static/js/apps/topic_page/app.tsx index 89a3cd5a43..49c4dbabcb 100644 --- a/static/js/apps/topic_page/app.tsx +++ b/static/js/apps/topic_page/app.tsx @@ -30,6 +30,8 @@ import { NamedTypedPlace } from "../../shared/types"; import { TopicsSummary } from "../../types/app/topic_page_types"; import { SubjectPageConfig } from "../../types/subject_page_proto_types"; import { PageSelector } from "./page_selector"; +import { ChildPlacesByType } from "../../shared/types"; +import { ChildPlaces } from "../../shared/child_places"; interface AppPropType { /** @@ -52,6 +54,18 @@ interface AppPropType { * Summary of all available page configs */ topicsSummary: TopicsSummary; + /** + * Show child places + */ + showChildPlaces?: boolean; + /** + * Child places + */ + childPlaces?: ChildPlacesByType; + /** + * Display searchbar + */ + displaySearchbar?: boolean; } const PAGE_ID = "topic"; @@ -80,8 +94,30 @@ export function App(props: AppPropType): JSX.Element { categories={props.pageConfig.categories} /> )} + {props.topic !== "sdg" && props.showChildPlaces && ( + + )}
+ {props.displaySearchbar && ( +
+
+
+
+ +
+
+
+ )} + { loadLocaleData("en", [import("../../i18n/compiled-lang/en/units.json")]).then( @@ -52,7 +56,12 @@ function renderPage(): void { const topicsSummary: TopicsSummary = JSON.parse( document.getElementById("topic-config").dataset.topicsSummary ); - + const showChildPlaces = JSON.parse(document.getElementById("topic-page-options").dataset.showChildPlaces); + const childPlaces: ChildPlacesByType = JSON.parse( + document.getElementById("place-children").dataset.pc + ); + const displaySearchbar = JSON.parse(document.getElementById("topic-page-options").dataset.displaySearchbar); + // TODO(beets): use locale from URL const locale = "en"; loadLocaleData(locale, [ @@ -74,7 +83,14 @@ function renderPage(): void { topic, pageConfig, topicsSummary, + showChildPlaces, + childPlaces, + displaySearchbar }), document.getElementById("body") ); + + // Load this after the place-autocomplete input is rendered. + initSearchAutocomplete(`/topic/${topic}`); + setComponentRestrictions({ country: "us" }); // TO DO: Hardcoding to US for now. } diff --git a/static/js/components/subject_page/block.tsx b/static/js/components/subject_page/block.tsx index f16d321600..265c27632d 100644 --- a/static/js/components/subject_page/block.tsx +++ b/static/js/components/subject_page/block.tsx @@ -20,6 +20,7 @@ import axios from "axios"; import React, { useEffect, useState } from "react"; +import ReactMarkdown from "react-markdown"; import { COLUMN_ID_PREFIX, @@ -310,7 +311,7 @@ function renderTiles( case "DESCRIPTION": return (

- {tile.description} + {tile.description}

); case "PLACE_OVERVIEW": diff --git a/static/js/components/tiles/highlight_tile.tsx b/static/js/components/tiles/highlight_tile.tsx index 9f85e15157..9c44b19b8f 100644 --- a/static/js/components/tiles/highlight_tile.tsx +++ b/static/js/components/tiles/highlight_tile.tsx @@ -70,7 +70,7 @@ export function HighlightTile(props: HighlightTilePropType): JSX.Element { false, NUM_FRACTION_DIGITS )} - {` (${highlightData.date})`} + {/*` (${highlightData.date})`*/} )} {description} diff --git a/static/js/shared/place_autocomplete.ts b/static/js/shared/place_autocomplete.ts index a17d6bad1c..9cf09ee88f 100644 --- a/static/js/shared/place_autocomplete.ts +++ b/static/js/shared/place_autocomplete.ts @@ -118,4 +118,8 @@ function placeNotFoundAlert(placeName): void { ); } -export { initSearchAutocomplete }; +function setComponentRestrictions(componentRestrictions): void { + ac.setComponentRestrictions(componentRestrictions) +} + +export { initSearchAutocomplete, setComponentRestrictions };