@antonio-goncalves/react-regional-data-display
v1.0.0
Published
React components based on [mapbox](https://www.mapbox.com/) used to display quantitative data of geographical regions with support for multiples data sets and dates.
Downloads
4
Readme
React Regional Data Display
React components based on mapbox used to display quantitative data of geographical regions with support for multiples data sets and dates.
Install
npm install @antonio-goncalves/react-regional-data-display
Usage
Usage example using data provided by Eurostats.
import * as React from "react";
import {ReactRegionalDataDisplay} from "@antonio-goncalves/react-regional-data-display";
import '@antonio-goncalves/react-regional-data-display/dist/main.css'
import useSWR from 'swr'
import axios from 'axios'
const center = {
lng: 13.9612,
lat: 57.1004,
zoom: 2.36
}
const fetcher =( url:string )=> axios.get(url).then(res => res.data)
const MAPBOX_TOKEN="your-token";
export function DataDisplayWithData(){
const { data:dataSets, error:dataSetsError } = useSWR('https://preview.antonio-goncalves.com/api/dataSets?ids=gdp,populationDensity', fetcher)
const { data:regions, error:regionsError } = useSWR('https://preview.antonio-goncalves.com/api/regions/eurostatCountries10m?ids=BE,BG,CZ,DK,DE,EE,IE,EL,ES,FR,HR,IT,CY,LV,LT,LU,HU,MT,NL,AT,PL,PT,RO,SI,SK,FI,SE,IS,LI,NO,CH,UK,ME,MK,AL,RS,TR', fetcher)
if(dataSetsError || regionsError){
const errors = []
if(dataSetsError){
errors.push(<p style={{color:"red"}}>Error when fetching data sets: {dataSetsError.message}</p>)
}
if(regionsError){
errors.push(<p style={{color:"red"}}>Error when fetching regions: {regionsError.message}</p>)
}
return <>
{errors.map((el,i)=>(
el
))}
</>
}
return (
<ReactRegionalDataDisplay
dataSets={dataSets}
regions={regions}
mapBoxToken={MAPBOX_TOKEN}
center={center}
/>
)
}
Components
React component provided by this library.
ReactRegionalDataDisplay
Main component providing the map visualizer, data info, data set and date selection.
Properties
| Name | Type | Is Optional | Default Value | Description | |-----------------------|------------------|-------------|---------------------------|-----------------------------------------------------------------------------------------------------------------| | dataSets | DataSet[] | no | | Data sets available on the component. | | regions | Region[] | no | | GeoJSON data of regions available on the map. | | center | Center | yes | { zoom:1, lng:0, lat:0} | Center position and zoom. | | mapBoxToken | string | no | | Access token required to use mapbox. | | mapHeight | string or number | yes | 500 | Height of the map, use a number of "px" or a sring for a css value. | | mapBoxOptions | object | yes | | Extra options passed to the mapbox constructor. | | onDataSetChange | (dataSetId:string)=>void| yes | | Fired when a new data set is selected. | | className | string | yes | | Custom class for the container. | | sliderClassName | string | yes | | Custom class for the slider element. | | dropdownClassName | string | yes | | Custom class for the dropdown element. | | placeholderClassName | string | yes | | Custom class for the placeholder text. | | mapContainerClassName | string | yes | | Custom class for map container. | | style | object | yes | | Custom style for the container. | | sliderStyle | object | yes | | Custom style for the slider element. | | dropdownStyle | object | yes | | Custom style for the dropdown element. | | placeholderStyle | object | yes | | Custom style for the placeholder text. | | mapContainerStyle | object | yes | | Custom style for map container. |
RegionsMap
Map component used on this project, can be used as a standalone component if date and data set selection is not required.
Properties
| Name | Type | Is Optional | Default Value | Description | |----------------|----------------------|--------|---------------|----------------------------------------------------------------------------------------------------------------| | regionsData | RegionData[] or null | no | | Data value for each region. | | regions | Region[] | no | | GeoJSON data of regions available on the map. | | center | Center | yes | { zoom:1, lng:0, lat:0} | Center position and zoom. | | mapBoxToken | string | no | | Access token required to use mapbox. | | mapHeight | string or number | yes | 500 | Height of the map, use a number of "px" or a sring for a css value. | | mapBoxOptions | object | yes | | Extra options passed to the mapbox constructor. | | scale | Scale | no | | Scale used by the map. | | footnotes | Footnote[] | yes | | Footnotes texts available to be used by data points. | | unit | Unit | no | | Unit of the data showed on the map. | | dropdownClassName | string | yes | | Custom class for the dropdown element. | | mapContainerClassName | string | yes | | Custom class for the map container. | | mapContainerStyle | object | yes | | Custom style for the map container. |
Scale
Coloured scale used on the map
Properties
| Name | Type | Is Optional | Default Value | Description | |-------------|---------|--------|---------------|--------------------------------------| | value | DataScale | no | | Numeric intervals and colors. | | unit | Unit | no | | Unit showed on the label. | | onMouseOver | (value?: ScaleInterval)=>void | no | | Mouse over event for each scale area. |
Slider
Animated slider used for date selection.
Properties
| Name | Type | Is Optional | Default Value | Description | |-------------|-----------------------|-------------|---------------|------------------------------------------------------------| | value | number | no | | Current selection of the scale. | | values | SliderValue[] | no | | Available values. | | timeBetweenJumps | number | yes | 1000 | Time in ms between between selection when in animated mode is enabled. | | onChange | (value: number)=>void | no | | Event when fired when the value changes | | className | string | yes | | Custom class for the slider. | | style | object | yes | | Custom style for the slider. |
Structures
Data structures used on this project.
DataSet
Object describing a data set.
| Name | Type | Is Optional | Default Value | Description | |-------------|---------------|-------------|---------------|-----------------------------------------------------------------------| | id | string | no | | Id of the data set. | | name | string | no | | Name of the data set. | | description | string | no | | Description of the data set. | | center | Center | no | | Position and zoom of the map (overrides "center" property of the map). | | source | DataSetSource | no | | Source of the data. | | dates | DataSetDates | no | | Dates of the data set. | | unit | Unit | no | | Unit of the data set. | | scale | DataScale | no | | Scale info for the data set. | | data | RegionData[] or null | no | | Data values for each region. | | footnotes | Footnote[] | yes | | Footnotes texts available to be used by data points. |
Center
Object describing the center position and zoom on the map.
| Name | Type | Is Optional | Default Value | Description | |------|--------|-------------|----------------------|-----------------| | lat | number | no | | Latitude value. | | lng | number | no | | Longitude value. | | zoom | number | no | | Zoom level. |
DataSetSource
Object describing the source of the data
| Name | Type | Is Optional | Default Value | Description | |------|--------|-------------|----------------------|-----------------------------------------------------------------| | name | string | no | | Name of the source. | | url | string | no | | Url of the source. |
DataSetDates
Object describing the dates available on the data set
| Name | Type | Is Optional | Default Value | Description | |------------|----------|-------------|----------------------|------------------------------------------------------------------------------------------| | format | string | no | | Format on how to display the dates. | | timestamps | number[] | no | | Values of the timestamps in ms. |
Unit
Object describing the unit
| Name | Type | Is Optional | Default Value | Description | |--------|--------|-------------|----------------------|----------------------| | name | string | no | | Name of the unit. | | symbol | string | no | | Symbol of the unit. |
DataScale
Object describing the scale used on the map
| Name | Type | Is Optional | Default Value | Description | |------------|----------|-------------|----------------------|--------------------------| | startValue | number | no | | First value of the scale. | | steps | number[] | no | | Values for each step. | | colors | string[] | no | | Color of each step. |
RegionData
Object describing the data for each region
| Name | Type | Is Optional | Default Value | Description | |---------------|----------|-------------|----------------------|----------------------| | dateTimestamp | number | no | | Date of the data. | | id | string | no | | Id of the region. | | value | number | no | | Numeric value of the data. | | footnoteIds | string[] | yes | | Ids of the footnotes. |
Footnote
Object describing footnotes available
| Name | Type | Is Optional | Default Value | Description | |-------------|----------|-------------|----------------------|----------------------------| | id | string | no | | Id of the footnote. | | value | string | no | | Text value of the footnote. |
Region
Object containing the contours of a region
| Name | Type | Is Optional | Default Value | Description | |---------|---------|-------------|----------------------|---------------------------------------------------| | id | string | no | | Id of the region. | | name | string | no | | name of the region. | | geoJSON | GeoJSON | no | | Contours of the region, GeoJSON (type="Feature"). |
SliderValue
| Name | Type | Is Optional | Default Value | Description | |---------|---------|-------------|----------------------|------------------------| | label | string | no | | Label of the value. | | value | number | no | | Numeric value. |
ScaleInterval
| Name | Type | Is Optional | Default Value | Description | |----------|--------|-------------|----------------------|-------------------| | minValue | number | no | | Minimum value. | | maxValue | number | no | | Maximum value. | | color | string | no | | Color of the area. |