@antonio-goncalves/react-regional-data-display v1.0.0
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-displayUsage
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. |
3 years ago