{"version":3,"sources":["webpack:///./src/components/overlay-modal/component.js","webpack:///./src/components/info-overlay/info-overlay.js","webpack:///./src/enums/overlay-options.js","webpack:///./src/utils/react-select-style/index.js","webpack:///./src/utils/svg/text-utils.js","webpack:///./src/components/anchor-economy-2/dashboard/data-context.js","webpack:///./src/components/anchor-economy-2/dashboard/options-context.js","webpack:///./src/components/anchor-economy-2/dashboard/selection-context.js","webpack:///./src/components/anchor-economy-2/dashboard/dashboard-search.js","webpack:///./src/components/anchor-economy-2/contributions/contributions.js","webpack:///./src/components/anchor-economy-2/profile/profile-details.js","webpack:///./src/components/anchor-economy-2/profile/reliance.js","webpack:///./src/utils/number-formatter/index.js","webpack:///./src/components/anchor-economy-2/profile/profile.js","webpack:///./src/components/anchor-economy-2/dashboard-table/dashboard-filter.js","webpack:///./src/components/anchor-economy-2/dashboard-table/dashboard-filters.js","webpack:///./src/components/anchor-economy-2/dashboard-table/custom-header.js","webpack:///./src/components/anchor-economy-2/info/profile-overlay.js","webpack:///./src/components/anchor-economy-2/dashboard-table/compare-regions.js","webpack:///./src/components/anchor-economy-2/dashboard-table/table-download.js","webpack:///./src/components/anchor-economy-2/dashboard-table/console-error-fix.js","webpack:///./src/components/anchor-economy-2/constants.js","webpack:///./src/components/anchor-economy-2/dashboard-table/dashboard-table.js","webpack:///./src/components/anchor-economy-2/dashboard/dashboard.js","webpack:///./src/components/anchor-economy-2/index.js"],"names":["_class","Component","constructor","props","super","_defineProperty","this","overlayMarkup","className","isOpen","wrapper","refocusElement","childProps","pageBody","setAttribute","childrenWithProps","React","cloneElement","onClose","updateAriaHidden","createPortal","react__WEBPACK_IMPORTED_MODULE_1___default","a","createElement","id","aria-hidden","state","role","aria-labelledby","aria-describedby","tabIndex","onClick","type","aria-label","el","parentNode","removeChild","removeOverlay","focus","document","querySelector","[object Object]","componentDidMount","componentDidUpdate","prevProps","prevState","setState","render","createOverlay","bool","updateState","func","object","isRequired","element","string","data","array","__webpack_require__","d","__webpack_exports__","InfoOverlay","prop_types__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_2___default","n","components_overlay_modal_component__WEBPACK_IMPORTED_MODULE_3__","react_dom__WEBPACK_IMPORTED_MODULE_4__","text","heading","body","showInfoButtonOnly","offset","overlayType","handleShow","useCallback","c","renderOverlay","overlayWrapper","overlay","insertAdjacentElement","createOverlayWrapper","refocus","Fragment","dangerouslySetInnerHTML","__html","propTypes","exact","number","OverlayOptions","AEOVERLAY","HMEOVERLAY","OMEOVERLAY","DEFAULT","getSelectStyles","filterWidth","filterHeight","isSVP","isMVP","isMulti","useMaxWidth","container","styles","margin","option","provided","color","isDisabled","backgroundColor","fontFamily","position","padding","&:hover","textDecoration","&:after","content","width","height","display","isSelected","backgroundSize","backgroundRepeat","right","bottom","backgroundImage","selectProps","control","borderWidth","borderStyle","borderColor","borderBottomColor","menuIsOpen","fontSize","maxWidth","minHeight","marginRight","singleValue","opacity","transition","placeholder","indicatorsContainer","alignItems","clearIndicator","indicatorSeparator","dropdownIndicator","transform","menu","border","lineHeight","maxHeight","overflowY","borderTopLeftRadius","borderTopRightRadius","borderTopColor"," > div","zIndex","getTextWidth","fontFace","context","getContext","font","measureText","DataContext","createContext","DataContextProvider","children","react_default","Provider","value","shape","filters","records","OptionsContext","OptionsContextProvider","options","images","definitions","arrayOf","title","download","SelectionContext","SelectionContextProvider","buttonClicked","setButtonClicked","selection","setSelection","metric","setMetric","region","setRegion","DashboardSearch","regions","useContext","componentOptions","searchRef","useRef","slice","map","x","oecode","label","sort","b","toLowerCase","onRegionChange","selected","metricsOptions","item","column","name","splice","getMetricsOptions","onMetricChange","infoOverlayData","ref","info_overlay","react_select_browser_esm","isClearable","onChange","disabled","current","scrollIntoView","Contributions","imgSrc","values","change","percent","definition","modal","total","direct","indirect","induced","comp","infoOverlyData","src","alt","ProfileDetails","category","details","countEstablished","employment","income","operationalSpend","capitalSpend","Reliance","reliance","min","max","totalRange","parseFloat","progressBarPercentage","reliancePosition","usPosition","relianceWidth","style","justifyContent","flexWrap","left","viewBox","fill","xmlns","fillRule","clipRule","y","borderRadius","background","alignSelf","top","numberFormatter","significantDigits","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","notation","compactDisplay","format","formatObjectProperties","obj","symbol","Object","keys","forEach","key","index","formatChangeSign","num","numForm","Profile","changes","relianceRange","setCompareRegion","hideCompare","note","source","stateProfiles","profileData","changesData","compData","regionName","regionStates","split","population","impact_share_allind_gdp","impact_share_allind_emp","impact_share_allind_inc","impact_emp_direct","impact_emp_indirect","impact_emp_induced","impact_emp_total","impact_gdp_direct","impact_gdp_indirect","impact_gdp_induced","impact_gdp_total","impact_inc_direct","impact_inc_indirect","impact_inc_induced","impact_inc_total","hospital_direct_estab_qcew","hospital_direct_opex_emp","hospital_direct_opex_inc","hospital_direct_opex","hospital_direct_capex","highered_direct_estab_qcew","highered_direct_opex_emp","highered_direct_opex_inc","highered_direct_opex","highered_direct_capex","p_chg_emp","p_chg_gdp","p_chg_inc","p_chg_population","abs_change_reliance","employmentData","incomeData","grossValueAddedData","hospitalData","higherEdData","profileHmtl","saveAsPng","filename","printDate","window","screen","contributions","profile_reliance","profile_details","href","length","stateNum","pageReferences","file","states","i","includes","onViewStateProfileClick","target","rel","DashboardFilter","filter","indexId","currentFilters","setCurrentFilters","isSearchable","isOptionDisabled","setSelected","useState","useEffect","undefined","onSelectChanged","v","Array","isArray","tempValue","displayValues","defaultProps","DashboardFilters","compareRegion","countSelectedFilters","regionValues","regionFilter","e","checked","currentTarget","htmlFor","dashboard_filter","CustomHeader","ProfileOverlay","buttonText","disclaimer","sources","profile","component","CompareRegions","selectedRegions","setSelectedRegions","clicked","downloadData","dataKey","wb","utils","book_new","ws","json_to_sheet","book_append_sheet","ws2","ws3","ws4","writeFileXLSX","oldRender","TableCell","args","otherArgs","isEmpty","propsWithoutEmpty","apply","OPTIONS","FIELD_MAPPINGS","filter_p_chg_inc","filter_p_chg_gdp","filter_abs_chg_reliance","DashboardTable","selectedRegion","tableRecords","allRecords","us","setData","tableRef","createRef","sr","7","showDownloads","setShowDownloads","selectedRegionsData","setSelectedRegionsData","sc","selectedCheckboxes","setSelectedCheckBoxes","columns","filterName","filterType","sortThirdClickReset","setCellHeaderProps","columnMeta","textAlign","setCellProps","cellValue","rowIndex","columnIndex","customHeadLabelRender","custom_header","customBodyRender","tableMeta","updateValue","rowData","profile_overlay","z","print","search","viewColumns","selectableRowsHeader","responsive","tableBodyMaxHeight","rowsPerPageOptions","selectToolbarPlacement","selectableRows","pagination","rowsSelected","oecodes","row","push","getSelected","onRowSelectionChange","currentRowsSelected","allRowsSelected","hasOwnProperty","call","dataIndex","indexOf","customToolbarSelect","selectedRows","displayData","setSelectedRows","regionCodes","r","compare_regions","isRowSelectable","elevation","textLabels","getSorted","recs","page","Math","floor","changePage","s","querySelectorAll","innerHTML","setTimeout","dashboard_filters","ThemeProvider","theme","createTheme","overrides","MuiInputBase","input","MuiTypography","root","&.MuiTablePagination-caption","h6","textTransform","subtitle1","MuiTablePagination","caption","menuItem","select","MUIDataTableSelectCell","headerCell","MUIDataTableToolbar","icon","iconActive","MUIDataTableToolbarSelect","MuiTableHead","& tr > th:nth-child(2) > span","MuiTableBody","& tr > td:nth-child(2)","& tr > td:not(:nth-child(2))","MUIDataTableHeadCell","fixedHeader","toolButton","marginLeft","overflowWrap","&:nth-child(3)","MuiTableCell","head","MuiButton","MuiTableSortLabel","active","MuiTableRow","&.MuiTableRow-hover","MUIDataTableBodyRow","&.mui-row-selected","MUIDataTableBodyCell","MuiButtonBase","&.MuiCheckbox-colorPrimary.Mui-checked","MUIDataTableSearch","searchIcon","clearIcon","MuiInput","underline","borderBottom","getMuiTheme","dist_default","innerRef","dataWithSource","record","Dashboard","getFilterName","opt","changeFilterName","1","2","3","4","getName","changeColName","colName","reliances","profileDefinitions","dashboard_search","notes","dashboard_table","columnName","newKeys","keyValues","assign","renameKeys","getTableData","anchor_economy_2_class","config","pageWrapper","ready","dashboard","attributes"],"mappings":"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","file":"assets/js/45.js","sourcesContent":["import './css/index.css';\r\nimport React, { Component } from 'react';\r\nimport { bool, object, element, func, string, array } from 'prop-types';\r\nimport { createPortal } from 'react-dom';\r\n\r\nexport default class extends Component {\r\n\r\n static propTypes = {\r\n isOpen: bool,\r\n updateState: func,\r\n wrapper: object.isRequired,\r\n refocusElement: object,\r\n overlayMarkup: element,\r\n className: string,\r\n data: array\r\n };\r\n\r\n constructor( props ) {\r\n\r\n super( props );\r\n\r\n this.state = { isOpen: props.isOpen };\r\n\r\n this.pageBody = document.querySelector( 'body' );\r\n\r\n }\r\n\r\n static getDerivedStateFromProps( props ) {\r\n\r\n return { isOpen: props.isOpen };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n\r\n document.querySelector( '.info-overlay .info-overlay-content .info-overlay-close' ).focus();\r\n\r\n }\r\n\r\n componentDidUpdate( prevProps, prevState ) {\r\n\r\n if ( this.props.isOpen !== this.state.isOpen && prevState.isOpen === this.state.isOpen ) {\r\n\r\n this.setState( { isOpen: this.props.isOpen } );\r\n\r\n }\r\n\r\n }\r\n\r\n createOverlay = () => {\r\n\r\n const { overlayMarkup, className, isOpen, wrapper, refocusElement, ...childProps } = this.props;\r\n\r\n this.pageBody.setAttribute( 'aria-hidden', true );\r\n\r\n const childrenWithProps = React.cloneElement( overlayMarkup, { onClose: this.updateAriaHidden, ...childProps } );\r\n\r\n\r\n return (\r\n createPortal(\r\n \r\n \r\n ×\r\n \r\n
{ childrenWithProps }
\r\n ,\r\n this.props.wrapper\r\n )\r\n );\r\n\r\n };\r\n\r\n removeOverlay = () => {\r\n\r\n const el = this.props.wrapper;\r\n\r\n if ( el ) {\r\n\r\n el.parentNode.removeChild( el );\r\n\r\n }\r\n\r\n };\r\n\r\n updateAriaHidden = () => {\r\n\r\n this.pageBody.setAttribute( 'aria-hidden', false );\r\n\r\n this.removeOverlay();\r\n\r\n this.props.refocusElement ? this.props.refocusElement.focus() : null;\r\n\r\n\r\n return null;\r\n\r\n };\r\n\r\n render() {\r\n\r\n return this.state.isOpen ? this.createOverlay() : this.updateAriaHidden();\r\n\r\n }\r\n\r\n}\r\n","import './css/index.css';\r\nimport { number, exact, string, bool } from 'prop-types';\r\nimport React, { useCallback } from 'react';\r\nimport OverlayModal from 'components/overlay-modal/component';\r\nimport { render } from 'react-dom';\r\n\r\nexport default function InfoOverlay( props ) {\r\n\r\n const { text, heading, body, showInfoButtonOnly, offset } = props.data;\r\n const { overlayType } = props;\r\n\r\n const handleShow = useCallback( ( c ) => {\r\n\r\n renderOverlay( heading, body );\r\n\r\n\r\n } );\r\n\r\n const createOverlayWrapper = () => {\r\n\r\n const overlay = document.createElement( 'div' );\r\n\r\n overlay.className = `info-overlay${ overlayType ? ` ${ overlayType }` : '' }`;\r\n\r\n return document.body.insertAdjacentElement( 'beforeend', overlay );\r\n\r\n };\r\n\r\n const renderOverlay = ( heading, body ) => {\r\n\r\n\r\n const overlayWrapper = createOverlayWrapper();\r\n const refocus = document.querySelector( '.snippet-button' );\r\n\r\n const overlayMarkup = (\r\n <>\r\n \r\n

{ heading }

\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n );\r\n\r\n render(\r\n ,\r\n overlayWrapper\r\n );\r\n\r\n };\r\n\r\n\r\n return (\r\n \r\n\r\n );\r\n\r\n}\r\n\r\nInfoOverlay.propTypes = {\r\n data: exact( { text: string, heading: string, body: string, showInfoButtonOnly: bool, offset: bool } ),\r\n overlayType: string,\r\n id: number\r\n};\r\n","export const OverlayOptions = {\r\n AEOVERLAY: 'ae-overlay',\r\n HMEOVERLAY: 'hme-overlay',\r\n OMEOVERLAY: 'ome-overlay',\r\n DEFAULT: 'default'\r\n};\r\n","const getSelectStyles = ( filterWidth, filterHeight, isSVP, isMVP, isMulti, useMaxWidth ) => {\r\n\r\n return {\r\n container: ( styles ) => {\r\n\r\n return {\r\n ...styles,\r\n margin: '0 0 30px'\r\n };\r\n\r\n },\r\n option: ( provided, state ) => ( {\r\n ...provided,\r\n color: state.isDisabled ? '#d8d8d8' : '#001d4e',\r\n backgroundColor: 'transparent',\r\n fontFamily: 'Graphik-Regular',\r\n position: 'relative',\r\n padding: '8px 12px',\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n textDecoration: state.isDisabled ? 'none' : 'underline'\r\n },\r\n '&:after': {\r\n content: '\"\"',\r\n width: '15px',\r\n height: '15px',\r\n display: state.isSelected ? 'inline-block' : 'none',\r\n backgroundSize: 'contain',\r\n backgroundRepeat: 'no-repeat',\r\n margin: '0',\r\n position: 'absolute',\r\n right: '10px',\r\n bottom: '30%',\r\n backgroundImage: state.selectProps.isMulti ? 'url(/assets/images/svg/icon-utility/x.svg)' : 'none'\r\n }\r\n } ),\r\n control: ( styles, state ) => {\r\n\r\n return {\r\n ...styles,\r\n backgroundColor: state.isDisabled ? '#eee' : '#fff',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: '#929fb3',\r\n borderBottomColor: state.selectProps.menuIsOpen ? 'transparent' : '#929fb3',\r\n fontFamily: 'Graphik-Regular',\r\n fontSize: '16px',\r\n color: '#949596',\r\n width: useMaxWidth ? '' : filterWidth,\r\n maxWidth: useMaxWidth ? filterWidth : '',\r\n minHeight: filterHeight,\r\n marginRight: 10,\r\n '&:hover': {\r\n borderColor: '#324de6'\r\n }\r\n };\r\n\r\n },\r\n singleValue: ( provided, state ) => {\r\n\r\n const opacity = state.isDisabled ? 0.5 : 1;\r\n const transition = 'opacity 300ms';\r\n\r\n return { ...provided, opacity, transition, color: '#011e4d' };\r\n\r\n },\r\n placeholder: ( styles, state ) => {\r\n\r\n return {\r\n ...styles,\r\n fontFamily: 'Graphik-Regular',\r\n color: state.isDisabled ? '#949596' : '#949596'\r\n };\r\n\r\n },\r\n indicatorsContainer: ( styles ) => {\r\n\r\n return {\r\n ...styles,\r\n padding: '5px 0 0',\r\n alignItems: 'flex-start'\r\n };\r\n\r\n },\r\n clearIndicator: ( styles, state ) => {\r\n\r\n if ( state.selectProps.isMulti ) {\r\n\r\n return {\r\n ...styles,\r\n display: 'none'\r\n };\r\n\r\n }\r\n\r\n return {\r\n ...styles\r\n };\r\n\r\n },\r\n indicatorSeparator: ( styles ) => {\r\n\r\n return {\r\n ...styles,\r\n width: 0\r\n };\r\n\r\n },\r\n dropdownIndicator: ( styles, state ) => {\r\n\r\n return {\r\n ...styles,\r\n color: '#001156',\r\n transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : 'rotate(0deg)'\r\n };\r\n\r\n },\r\n menu: ( styles, state ) => {\r\n\r\n return {\r\n ...styles,\r\n backgroundColor: '#fff',\r\n border: '1px solid #929fb3',\r\n fontFamily: 'Graphik-Regular',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n color: '#001d4e',\r\n width: filterWidth,\r\n margin: 0,\r\n maxHeight: 324,\r\n overflowY: 'scroll',\r\n borderTopLeftRadius: state.selectProps.menuIsOpen ? 0 : 5,\r\n borderTopRightRadius: state.selectProps.menuIsOpen ? 0 : 5,\r\n borderTopColor: state.selectProps.menuIsOpen ? 'transparent' : '#929fb3',\r\n ' > div': {\r\n maxHeight: 'none'\r\n },\r\n zIndex: 999\r\n };\r\n\r\n }\r\n };\r\n\r\n};\r\n\r\nconst getSelectTheme = ( theme ) => {\r\n\r\n return ( {\r\n ...theme,\r\n borderRadius: 5,\r\n colors: {\r\n ...theme.colors,\r\n primary: '#ebf0f4',\r\n primary25: '#ebf0f4',\r\n neutral40: '#001d4e',\r\n neutral30: '#929fb3'\r\n }\r\n } );\r\n\r\n};\r\n\r\nconst handleOnBlur = () =>{\r\n\r\n const e = null;\r\n\r\n throw e;\r\n\r\n};\r\n\r\nexport { getSelectStyles, getSelectTheme, handleOnBlur };","export function getTextWidth( text, fontSize, fontFace ) {\r\n\r\n const canvas = document.createElement( 'canvas' ),\r\n context = canvas.getContext( '2d' );\r\n\r\n context.font = `${ fontSize }px ${ fontFace }`;\r\n\r\n return context.measureText( text ).width;\r\n\r\n}","import { object, shape } from 'prop-types';\r\nimport React, { createContext } from 'react';\r\n\r\nconst DataContext = createContext( null );\r\n\r\nconst DataContextProvider = ( { children, data } ) => {\r\n\r\n return (\r\n \r\n { children }\r\n \r\n );\r\n\r\n};\r\n\r\nexport { DataContext, DataContextProvider };\r\n\r\nDataContextProvider.propTypes = {\r\n children: object,\r\n data: shape( {\r\n filters: object,\r\n records: object\r\n } ).isRequired\r\n};","import { array, arrayOf, object, shape, string } from 'prop-types';\r\nimport React, { createContext } from 'react';\r\n\r\nconst OptionsContext = createContext( null );\r\n\r\nconst OptionsContextProvider = ( { children, options } ) => {\r\n\r\n return (\r\n \r\n { children }\r\n \r\n );\r\n\r\n};\r\n\r\nexport { OptionsContext, OptionsContextProvider };\r\n\r\nOptionsContextProvider.propTypes = {\r\n children: object,\r\n options: shape( {\r\n images: array,\r\n definitions: arrayOf(\r\n shape( {\r\n title: string,\r\n body: string\r\n } )\r\n )\r\n } ),\r\n download: string\r\n};","import { bool, func, object, string } from 'prop-types';\r\nimport React, { createContext } from 'react';\r\n\r\nconst SelectionContext = createContext( null );\r\n\r\nconst SelectionContextProvider = ( { children,\r\n buttonClicked, setButtonClicked,\r\n selection, setSelection,\r\n metric, setMetric,\r\n region, setRegion\r\n} ) => {\r\n\r\n return (\r\n \r\n { children }\r\n \r\n );\r\n\r\n};\r\n\r\nSelectionContextProvider.propTypes = {\r\n children: object,\r\n buttonClicked: bool,\r\n setButtonClicked: func,\r\n selection: string,\r\n setSelection: func,\r\n metric: object,\r\n setMetric: func,\r\n region: string,\r\n setRegion: func\r\n};\r\n\r\nexport { SelectionContext, SelectionContextProvider };","import React, { useCallback, useContext, useRef } from 'react';\r\nimport Select from 'react-select';\r\nimport InfoOverlay from '../../info-overlay/info-overlay';\r\nimport { getSelectStyles } from '../../../utils/react-select-style';\r\nimport { DataContext } from './data-context';\r\nimport { OptionsContext } from './options-context';\r\nimport { SelectionContext } from './selection-context';\r\nimport { OverlayOptions } from 'enums/overlay-options';\r\n\r\nconst DashboardSearch = ( ) => {\r\n\r\n const { filters, regions } = useContext ( DataContext );\r\n const componentOptions = useContext( OptionsContext );\r\n const { setSelection, setButtonClicked, metric, setMetric, region, setRegion } = useContext( SelectionContext );\r\n\r\n const searchRef = useRef();\r\n\r\n const options = [ ...regions ].slice( 1 ).map( ( x ) => {\r\n\r\n return { value: x.oecode, label: x.region };\r\n\r\n } )\r\n .sort( ( a, b ) => ( a.label.toLowerCase() > b.label.toLowerCase() ? 1 : -1 ) );\r\n\r\n const onRegionChange = useCallback( ( selected ) => {\r\n\r\n if ( selected === null ) {\r\n\r\n setRegion( null );\r\n setButtonClicked( false );\r\n\r\n }\r\n else {\r\n\r\n setRegion( selected );\r\n\r\n }\r\n\r\n } );\r\n\r\n const getMetricsOptions = () => {\r\n\r\n for ( const item in filters ) {\r\n\r\n const filteredOptions = filters[item].map( ( x ) => {\r\n\r\n return { value: x.column, label: x.name };\r\n\r\n } );\r\n\r\n return filteredOptions.splice( 3 );\r\n\r\n }\r\n\r\n };\r\n\r\n const metricsOptions = getMetricsOptions();\r\n\r\n const onMetricChange = useCallback( ( selected ) => {\r\n\r\n if ( selected === null ) {\r\n\r\n setMetric( null );\r\n setButtonClicked( false );\r\n setSelection( '2019' );\r\n\r\n }\r\n else {\r\n\r\n setMetric( selected );\r\n\r\n }\r\n\r\n } );\r\n\r\n const onButtonClicked = () => {\r\n\r\n searchRef.current.scrollIntoView();\r\n\r\n setButtonClicked( true );\r\n\r\n };\r\n\r\n const selectWidth = '100%';\r\n\r\n const infoOverlayData = [\r\n {\r\n heading: componentOptions.definitions[0].title,\r\n body: componentOptions.definitions[0].body,\r\n showInfoButtonOnly: true\r\n },\r\n {\r\n heading: componentOptions.definitions[1].title,\r\n body: componentOptions.definitions[1].body,\r\n showInfoButtonOnly: true\r\n }\r\n ];\r\n\r\n\r\n return (\r\n\r\n
\r\n
\r\n

Search by Region\r\n

\r\n \r\n
\r\n
\r\n or\r\n
\r\n
\r\n

Select Metric\r\n

\r\n \r\n
\r\n\r\n
\r\n \r\n View Result\r\n \r\n
\r\n
\r\n\r\n );\r\n\r\n};\r\n\r\nexport default DashboardSearch;","import './css/index.css';\r\nimport { bool, object, shape, string } from 'prop-types';\r\nimport React from 'react';\r\nimport InfoOverlay from '../../info-overlay/info-overlay';\r\nimport { OverlayOptions } from 'enums/overlay-options';\r\n\r\nconst Contributions = ( { title, imgSrc, values, change, percent, definition, modal } ) => {\r\n\r\n const { total, direct, indirect, induced, comp } = values;\r\n\r\n const infoOverlyData = {\r\n heading: definition.title,\r\n body: definition.body,\r\n showInfoButtonOnly: true,\r\n offset: true\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {\r\n { !modal ? : null }\r\n
Anchor
{ title }
\r\n
\r\n\r\n

{ comp } in 2004

\r\n

{ total }

\r\n

{ change }% from 2004

\r\n\r\n
\r\n\r\n
\r\n

{ percent }

\r\n

of this region's
{ title }

\r\n
\r\n\r\n
\r\n\r\n

\r\n Direct\r\n
\r\n { direct }\r\n

\r\n

\r\n Indirect\r\n
\r\n { indirect }\r\n

\r\n

\r\n Induced\r\n
\r\n { induced }\r\n

\r\n\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default Contributions;\r\n\r\nContributions.propTypes = {\r\n title: string.isRequired,\r\n imgSrc: string.isRequired,\r\n values: object.isRequired,\r\n change: string.isRequired,\r\n percent: string.isRequired,\r\n definition: shape( {\r\n heading: string,\r\n body: string\r\n } ),\r\n modal: bool\r\n};","import { bool, shape, string } from 'prop-types';\r\nimport React from 'react';\r\nimport InfoOverlay from '../../info-overlay/info-overlay';\r\nimport { OverlayOptions } from 'enums/overlay-options';\r\n\r\nconst ProfileDetails = ( { type, category, details, definition, modal } ) => {\r\n\r\n const { countEstablished,\r\n employment,\r\n income,\r\n operationalSpend,\r\n capitalSpend\r\n } = details;\r\n\r\n const { title, body } = definition;\r\n const infoOverlayData = {\r\n heading: title,\r\n body: body,\r\n showInfoButtonOnly: true\r\n };\r\n\r\n return (\r\n
\r\n

{ type } { !modal ? : null }

\r\n
\r\n {/*
\r\n
Number of { category }
\r\n
{ countEstablished }
\r\n
*/}\r\n
\r\n
Employment
\r\n
{ employment }
\r\n
\r\n
\r\n
Income
\r\n
{ income }
\r\n
\r\n
\r\n
Operational Spend
\r\n
{ operationalSpend }
\r\n
\r\n
\r\n
Capital Spend
\r\n
{ capitalSpend }
\r\n
\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default ProfileDetails;\r\n\r\nProfileDetails.propTypes = {\r\n type: string.isRequired,\r\n category: string.isRequired,\r\n details: shape( {\r\n countEstablished: string,\r\n employment: string,\r\n income: string,\r\n operationalSpend: string,\r\n capitalSpend: string\r\n } ).isRequired,\r\n definition: shape( {\r\n heading: string,\r\n body: string\r\n } ),\r\n modal: bool\r\n};","import { string } from 'prop-types';\r\nimport React from 'react';\r\nimport { getTextWidth } from '../../../utils/svg/text-utils';\r\n\r\nconst Reliance = ( { reliance, min, max, comp, change } ) => {\r\n\r\n const totalRange = parseFloat( max );\r\n const maxWidth = 200;\r\n const progressBarPercentage = reliance / totalRange * 100;\r\n const reliancePosition = maxWidth * ( reliance / totalRange ) - 44;\r\n const usPosition = maxWidth * ( 1 / totalRange );\r\n\r\n const relianceWidth = getTextWidth( reliance, 34, 'Graphik-Semibold', ) / 2;\r\n\r\n return (\r\n <>\r\n\r\n
\r\n\r\n

{ comp } in 2004

\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n { reliance }\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n { /*
*/ }\r\n
\r\n\r\n
\r\n { min }\r\n
\r\n\r\n
\r\n
\r\n US = 1\r\n
\r\n\r\n
\r\n { max }\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n

{ change } from 2004

\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n );\r\n\r\n};\r\n\r\nexport default Reliance;\r\n\r\nReliance.propTypes = {\r\n reliance: string.isRequired,\r\n min: string,\r\n max: string,\r\n comp: string,\r\n change: string\r\n};","const numberFormatter = ( number, significantDigits ) => {\r\n\r\n return new Intl\r\n .NumberFormat( 'en-US',\r\n { maximumFractionDigits: significantDigits,\r\n minimumFractionDigits: significantDigits,\r\n notation: 'compact',\r\n compactDisplay: 'short'\r\n } )\r\n .format( number );\r\n\r\n};\r\n\r\nexport default numberFormatter;","import './css/index.css';\r\nimport { array, arrayOf, bool, func, number, object, shape, string } from 'prop-types';\r\nimport React from 'react';\r\nimport Contributions from '../contributions/contributions';\r\nimport ProfileDetails from './profile-details';\r\nimport Reliance from './reliance';\r\nimport numberFormatter from '../../../utils/number-formatter';\r\nimport { saveAsPng } from 'save-html-as-image';\r\nimport InfoOverlay from '../../info-overlay/info-overlay';\r\nimport { OverlayOptions } from 'enums/overlay-options';\r\n\r\nconst formatObjectProperties = ( obj, symbol ) => {\r\n\r\n Object.keys( obj ).forEach( ( key, index ) => {\r\n\r\n obj[key] = `${ symbol }${ numberFormatter( obj[key], 1 ) }`;\r\n\r\n } );\r\n\r\n return obj;\r\n\r\n};\r\n\r\nconst formatChangeSign = ( num, numForm ) => {\r\n\r\n if ( num < 0 ) {\r\n\r\n return `${ numberFormatter( num, numForm ) }`;\r\n\r\n }\r\n else {\r\n\r\n return `+${ numberFormatter( num, numForm ) }`;\r\n\r\n }\r\n\r\n};\r\n\r\nconst Profile = ( { region, changes, comp, relianceRange, definitions, setCompareRegion, hideCompare, images, download, note, source, stateProfiles } ) => {\r\n\r\n if ( region === null ) return;\r\n\r\n const profileData = region[0];\r\n const changesData = changes[0];\r\n const compData = comp[0];\r\n const [ regionName, regionStates ] = profileData.region.split( ', ' );\r\n\r\n const { population,\r\n impact_share_allind_gdp, impact_share_allind_emp, impact_share_allind_inc,\r\n impact_emp_direct, impact_emp_indirect, impact_emp_induced, impact_emp_total,\r\n impact_gdp_direct, impact_gdp_indirect, impact_gdp_induced, impact_gdp_total,\r\n impact_inc_direct, impact_inc_indirect, impact_inc_induced, impact_inc_total,\r\n reliance,\r\n hospital_direct_estab_qcew, hospital_direct_opex_emp, hospital_direct_opex_inc, hospital_direct_opex, hospital_direct_capex,\r\n highered_direct_estab_qcew, highered_direct_opex_emp, highered_direct_opex_inc, highered_direct_opex, highered_direct_capex\r\n } = profileData;\r\n\r\n const { p_chg_emp, p_chg_gdp, p_chg_inc, p_chg_population, abs_change_reliance } = changesData;\r\n\r\n const employmentData = {\r\n total: impact_emp_total, direct: impact_emp_direct,\r\n indirect: impact_emp_indirect, induced: impact_emp_induced,\r\n comp: compData.impact_emp_total\r\n };\r\n const incomeData = {\r\n total: impact_inc_total, direct: impact_inc_direct,\r\n indirect: impact_inc_indirect, induced: impact_inc_induced,\r\n comp: compData.impact_inc_total\r\n };\r\n const grossValueAddedData = {\r\n total: impact_gdp_total, direct: impact_gdp_direct,\r\n indirect: impact_gdp_indirect, induced: impact_gdp_induced,\r\n comp: compData.impact_gdp_total\r\n };\r\n\r\n const hospitalData = {\r\n countEstablished: numberFormatter( hospital_direct_estab_qcew, 0 ),\r\n employment: numberFormatter( hospital_direct_opex_emp, 1 ),\r\n income: `$${ numberFormatter( hospital_direct_opex_inc, 1 ) }`,\r\n operationalSpend: `$${ numberFormatter( hospital_direct_opex, 1 ) }`,\r\n capitalSpend: `$${ numberFormatter( hospital_direct_capex, 1 ) }`\r\n };\r\n const higherEdData = {\r\n countEstablished: numberFormatter( highered_direct_estab_qcew, 0 ),\r\n employment: numberFormatter( highered_direct_opex_emp, 1 ),\r\n income: `$${ numberFormatter( highered_direct_opex_inc, 1 ) }`,\r\n operationalSpend: `$${ numberFormatter( highered_direct_opex, 1 ) }`,\r\n capitalSpend: `$${ numberFormatter( highered_direct_capex, 1 ) }`\r\n };\r\n\r\n const downloadProfile = () => {\r\n\r\n const profileHmtl = document.querySelector( '.dashboard' );\r\n\r\n saveAsPng( profileHmtl,\r\n { filename: `${ regionName }, ${ regionStates } - Profile`, printDate: true },\r\n {\r\n width: 1200,\r\n height: window.screen.width <= 768 ? 4705 : 2185,\r\n backgroundColor: '#fff',\r\n style: {\r\n justifyContent: 'center'\r\n }\r\n } );\r\n\r\n };\r\n\r\n const onViewStateProfileClick = () => {\r\n\r\n if ( regionStates ) {\r\n\r\n const state = regionStates.length > 2 ? regionStates.slice( 0, 2 ) : regionStates;\r\n\r\n const stateNum = stateProfiles.pageReferences[ state ];\r\n\r\n const link = `${ stateProfiles.file }#page=${ stateNum }`;\r\n\r\n return `${ link }`;\r\n\r\n }\r\n\r\n if ( !regionStates ) {\r\n\r\n let stateNum = 0;\r\n\r\n stateProfiles.states.forEach( ( state, i ) => {\r\n\r\n if ( regionName.includes( state ) ) {\r\n\r\n // stateName = state;\r\n stateNum = i;\r\n\r\n }\r\n\r\n return regionName.includes( state );\r\n\r\n } );\r\n\r\n const link = stateNum <= 5 ? `${ stateProfiles.file }#page=${ stateNum + 2 }` : `${ stateProfiles.file }#page=${ stateNum + 3 }`;\r\n\r\n return `${ link }`;\r\n\r\n }\r\n\r\n\r\n };\r\n\r\n const onCompareRegionClick = () => {\r\n\r\n // move on click\r\n\r\n setCompareRegion( true );\r\n\r\n const viewResultButton = document.querySelector( '.dashboard-search-container' );\r\n\r\n viewResultButton.scrollIntoView();\r\n\r\n };\r\n\r\n const { title, body } = definitions[0];\r\n const infoOverlayData = {\r\n heading: title,\r\n body: body,\r\n showInfoButtonOnly: true\r\n };\r\n\r\n return (\r\n <>\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

{ regionName }

\r\n

{ regionStates }

\r\n\r\n
\r\n

2004 population: { Intl.NumberFormat( 'en-US' ).format( compData.population ) }

\r\n

2019 population: { Intl.NumberFormat( 'en-US' ).format( population ) }

\r\n

{ formatChangeSign( p_chg_population, 1 ) }% from 2004

\r\n
\r\n\r\n

2019 Economic Contributions{ !hideCompare ? : null }

\r\n

Direct, indirect and induced impacts add to form total impact, with some differences due to rounding.

\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n

Reliance Index

\r\n

\r\n { definitions[4].body }\r\n

\r\n

\r\n * Reliance Index for the United States = 1\r\n

\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n { hideCompare ?\r\n <>\r\n :\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n { /*

Download the full data set for more information

*/ }\r\n

{ note }

\r\n

{ source }

\r\n
\r\n \r\n );\r\n\r\n};\r\n\r\nexport default Profile;\r\n\r\nProfile.propTypes = {\r\n region: arrayOf( object ),\r\n changes: arrayOf( object ),\r\n comp: arrayOf( object ),\r\n relianceRange: arrayOf( number ).isRequired,\r\n definitions: arrayOf(\r\n shape( {\r\n heading: string,\r\n body: string\r\n } )\r\n ),\r\n setCompareRegion: func,\r\n hideCompare: bool,\r\n images: array,\r\n download: string,\r\n note: string,\r\n source: string,\r\n stateProfiles: object\r\n};","import { array, arrayOf, bool, func, number, object, shape, string } from 'prop-types';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport { getSelectStyles } from '../../../utils/react-select-style';\r\nimport InfoOverlay from '../../info-overlay/info-overlay';\r\nimport { OverlayOptions } from 'enums/overlay-options';\r\n\r\nconst DashboardFilter = ( { filter, indexId, width, currentFilters, setCurrentFilters, definitions, placeholder, isMulti, isSearchable, isOptionDisabled } ) => {\r\n\r\n const [ selected, setSelected ] = useState( null );\r\n // const selectWidth = 285;\r\n\r\n useEffect( () => {\r\n\r\n if ( filter.column !== 'region' ) {\r\n\r\n if ( currentFilters[indexId] === undefined ) {\r\n\r\n setSelected( null );\r\n\r\n }\r\n else {\r\n\r\n setSelected( currentFilters[indexId] );\r\n\r\n }\r\n\r\n }\r\n else {\r\n\r\n const values = currentFilters[indexId] === undefined ? '' : currentFilters[indexId].value;\r\n\r\n setSelected( values );\r\n\r\n }\r\n\r\n }, [ currentFilters ] );\r\n\r\n const onSelectChanged = useCallback( ( value ) => {\r\n\r\n const v = { ...currentFilters };\r\n\r\n if ( value === null || value.length === 0 ) {\r\n\r\n delete v[indexId];\r\n\r\n }\r\n else {\r\n\r\n if ( Array.isArray( value ) ) {\r\n\r\n const tempValue = {\r\n filter: filter.column,\r\n label: filter.name,\r\n value: [ ...value ]\r\n };\r\n\r\n v[indexId] = tempValue;\r\n\r\n }\r\n else {\r\n\r\n value['filter'] = filter.column;\r\n v[indexId] = value;\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n setSelected( value );\r\n setCurrentFilters( v );\r\n\r\n } );\r\n\r\n const options = filter.values.map( ( x, i ) => {\r\n\r\n return { value: x, label: filter.displayValues[i] };\r\n\r\n } );\r\n\r\n return (\r\n <>\r\n { /* { indexId === 3 ?
: <> } */ }\r\n
\r\n

{ filter.name }\r\n { definitions.length > 0 ?\r\n :\r\n <>\r\n }\r\n

\r\n ( Array.isArray( selected ) ? selected.length >= 10 : false ) }\r\n />\r\n
\r\n \r\n );\r\n\r\n};\r\n\r\nexport default DashboardFilter;\r\n\r\nDashboardFilter.propTypes = {\r\n filter: shape( {\r\n name: string,\r\n column: string,\r\n values: array,\r\n displayValues: array\r\n } ),\r\n indexId: number,\r\n width: number,\r\n currentFilters: object,\r\n setCurrentFilters: func,\r\n definitions: arrayOf( shape( {\r\n title: string,\r\n body: string\r\n } ) ),\r\n isMulti: bool,\r\n placeholder: string,\r\n isSearchable: bool,\r\n isOptionDisabled: bool\r\n};\r\n\r\nDashboardFilter.defaultProps = {\r\n isMulti: false,\r\n placeholder: 'Select One',\r\n isSearchable: false\r\n};","import { array, arrayOf, bool, func, object, shape, string } from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { OptionsContext } from '../dashboard/options-context';\r\nimport DashboardFilter from './dashboard-filter';\r\nimport { SelectionContext } from '../dashboard/selection-context';\r\n\r\nconst DashboardFilters = ( { records, filters, currentFilters, setCurrentFilters, compareRegion, setCompareRegion } ) => {\r\n\r\n const componentOptions = useContext( OptionsContext );\r\n const { selection, setSelection } = useContext( SelectionContext );\r\n const definitions = [ ...componentOptions.definitions ];\r\n\r\n const resetFilters = () => {\r\n\r\n setCurrentFilters( {} );\r\n\r\n };\r\n\r\n const onBackButtonPress = () => {\r\n\r\n setCompareRegion( false );\r\n\r\n };\r\n\r\n const countSelectedFilters = Object.keys( currentFilters ).length;\r\n const regionValues = records\r\n .map( ( x ) => ( { region: x.region, oecode: x.oecode } ) )\r\n .sort( ( a, b ) => ( a.region.toLowerCase() > b.region.toLowerCase() ? 1 : -1 ) );\r\n const regionFilter = {\r\n name: 'Region',\r\n column: 'region',\r\n values: regionValues.map( ( x ) => x.oecode ),\r\n displayValues: regionValues.map( ( x ) => x.region )\r\n };\r\n\r\n const onChange = ( e ) => {\r\n\r\n setSelection( e.selection );\r\n\r\n };\r\n\r\n\r\n return (\r\n
\r\n { compareRegion ?\r\n
\r\n \r\n
\r\n : '' }\r\n\r\n
View and Compare Regions and Metrics
\r\n

Select a dataset and adjust its filters to explore the data. Use the checkboxes on the left side of the table to compare up to 10 regions.

\r\n\r\n
\r\n
Select a dataset
\r\n\r\n
\r\n
\r\n onChange( { selection: e.currentTarget.value, position: 0 } ) }\r\n />\r\n
\r\n
\r\n
\r\n onChange( { selection: e.currentTarget.value, position: 1 } ) }\r\n />\r\n
\r\n
\r\n
\r\n onChange( { selection: e.currentTarget.value, position: 2 } ) }\r\n />\r\n \r\n
\r\n
\r\n\r\n\r\n {\r\n countSelectedFilters > 0 ?\r\n \r\n : <>\r\n }\r\n
\r\n\r\n
\r\n\r\n
\r\n
{ selection === 'change' ? 'Filter the table below based on 2019 values' : `Filter the table below on ${ selection } data` }
\r\n
\r\n\r\n
\r\n d.title === 'Region' ) }\r\n isMulti={ true }\r\n placeholder={ 'Select or Type Region' }\r\n isSearchable={ true }\r\n />\r\n { /*
*/ }\r\n {\r\n filters.map( ( x, i ) => d.title === x.name ) }\r\n isMulti={ false }\r\n />\r\n\r\n )\r\n }\r\n
\r\n\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default DashboardFilters;\r\n\r\nDashboardFilters.propTypes = {\r\n records: array,\r\n filters: arrayOf( shape( {\r\n name: string,\r\n column: string,\r\n values: array,\r\n displayValues: array\r\n } ) ),\r\n currentFilters: object,\r\n setCurrentFilters: func,\r\n compareRegion: bool,\r\n setCompareRegion: func\r\n};","import './css/index.css';\r\nimport React from 'react';\r\nimport { string } from 'prop-types';\r\n\r\nconst CustomHeader = ( { label, text } ) => {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{ label }
{ text }
\r\n );\r\n\r\n};\r\n\r\nexport default CustomHeader;\r\n\r\nCustomHeader.propTypes = {\r\n label: string.isRequired,\r\n text: string.isRequired\r\n};","import React, { useCallback, useContext } from 'react';\r\nimport { render } from 'react-dom';\r\nimport { array, arrayOf, number, shape, string, object } from 'prop-types';\r\nimport OverlayModal from 'components/overlay-modal/component';\r\nimport Profile from '../profile/profile';\r\nimport { OptionsContext } from '../dashboard/options-context';\r\n\r\nconst ProfileOverlay = ( { region, changes, comp, buttonText, relianceRange, images, download } ) => {\r\n\r\n const componentOptions = useContext( OptionsContext );\r\n const definitions = [ ...componentOptions.definitions ].slice( 2 );\r\n const source = componentOptions.disclaimer.sources;\r\n\r\n const handleShow = useCallback( ( c ) => {\r\n\r\n renderOverlay( region );\r\n\r\n } );\r\n\r\n const createOverlayWrapper = () => {\r\n\r\n const overlay = document.createElement( 'div' );\r\n\r\n overlay.className = 'info-overlay';\r\n\r\n return document.body.insertAdjacentElement( 'beforeend', overlay );\r\n\r\n };\r\n\r\n const renderOverlay = ( ) => {\r\n\r\n const overlayWrapper = createOverlayWrapper();\r\n const refocus = document.querySelector( '.snippet-button' );\r\n\r\n const overlayMarkup = (\r\n
\r\n \r\n
\r\n );\r\n\r\n render(\r\n ,\r\n overlayWrapper\r\n );\r\n\r\n };\r\n\r\n\r\n return (\r\n \r\n { buttonText }\r\n \r\n );\r\n\r\n};\r\n\r\nexport default ProfileOverlay;\r\n\r\nProfileOverlay.propTypes = {\r\n region: array,\r\n changes: arrayOf( object ),\r\n comp: arrayOf( object ),\r\n buttonText: string,\r\n relianceRange: arrayOf( number ).isRequired,\r\n definitions: arrayOf(\r\n shape( {\r\n heading: string,\r\n body: string\r\n } )\r\n ),\r\n images: array,\r\n download: string\r\n};","import { array, bool, func } from 'prop-types';\r\nimport React from 'react';\r\n\r\nconst CompareRegions = ( { selectedRegions, setSelectedRegions, clicked } ) => {\r\n\r\n const onCompareClick = () => {\r\n\r\n setSelectedRegions( selectedRegions );\r\n\r\n };\r\n\r\n const onClearClick = () => {\r\n\r\n setSelectedRegions( [] );\r\n\r\n };\r\n\r\n return (\r\n
\r\n {\r\n clicked ?\r\n \r\n : \r\n }\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default CompareRegions;\r\n\r\nCompareRegions.propTypes = {\r\n selectedRegions: array,\r\n setSelectedRegions: func,\r\n clicked: bool\r\n};","import { utils, writeFileXLSX } from 'xlsx';\r\n\r\nconst downloadData = ( records, dataKey, filename ) => {\r\n\r\n const wb = utils.book_new();\r\n\r\n const ws = utils.json_to_sheet( records[0] );\r\n\r\n utils.book_append_sheet( wb, ws, '2019 Data Download' );\r\n\r\n const ws2 = utils.json_to_sheet( records[1] );\r\n\r\n\r\n utils.book_append_sheet( wb, ws2, '2004 Data Download' );\r\n\r\n const ws3 = utils.json_to_sheet( records[2] );\r\n\r\n\r\n utils.book_append_sheet( wb, ws3, 'Change Data Download' );\r\n\r\n const ws4 = utils.json_to_sheet( dataKey );\r\n\r\n utils.book_append_sheet( wb, ws4, 'Data Keys' );\r\n\r\n writeFileXLSX( wb, filename );\r\n\r\n};\r\n\r\nexport default downloadData;","// This file serves to fix the issue described here:\r\n// https://github.com/gregnb/mui-datatables/issues/1893\r\n//\r\n// issue should be resolved by updating\r\nimport { TableCell } from '@material-ui/core';\r\n\r\nconst oldRender = TableCell.render;\r\n\r\nTableCell.render = function ( ...args ) {\r\n\r\n const [ props, ...otherArgs ] = args;\r\n\r\n if ( typeof props === 'object' && props && 'isEmpty' in props ) {\r\n\r\n const { isEmpty, ...propsWithoutEmpty } = props;\r\n\r\n\r\n return oldRender.apply( this, [ propsWithoutEmpty, ...otherArgs ] );\r\n\r\n }\r\n else {\r\n\r\n return oldRender.apply( this, args );\r\n\r\n }\r\n\r\n};","export const OPTIONS = {\r\n current: '2019',\r\n comparision: '2004',\r\n change: 'p_change'\r\n};\r\n\r\nexport const FIELD_MAPPINGS = { p_chg_emp: 'impact_emp_total',\r\n p_chg_inc: 'impact_inc_total',\r\n p_chg_gdp: 'impact_gdp_total',\r\n abs_change_reliance: 'reliance',\r\n filter_p_chg_inc: 'filter_impact_inc_total',\r\n filter_p_chg_gdp: 'filter_impact_gdp_total',\r\n filter_abs_chg_reliance: 'filter_reliance'\r\n};","import './css/index.css';\r\nimport React, { createRef, useContext, useEffect, useState } from 'react';\r\nimport { array, arrayOf, bool, func, number, object } from 'prop-types';\r\nimport MUIDataTable from 'mui-datatables';\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/';\r\nimport DashboardFilters from './dashboard-filters';\r\nimport CustomHeader from './custom-header';\r\nimport ProfileOverlay from '../info/profile-overlay';\r\nimport numberFormatter from '../../../utils/number-formatter';\r\nimport CompareRegions from './compare-regions';\r\nimport downloadData from './table-download';\r\nimport './console-error-fix';\r\nimport { OptionsContext } from '../dashboard/options-context';\r\nimport Profile from '../profile/profile';\r\nimport { saveAsPng } from 'save-html-as-image';\r\nimport { SelectionContext } from '../dashboard/selection-context';\r\nimport { DataContext } from '../dashboard/data-context';\r\nimport { OPTIONS } from '../constants';\r\n\r\nconst DashboardTable = ( { selectedRegion, tableRecords, compareRegion, setCompareRegion,\r\n relianceRange, images, dataKey,\r\n stateProfiles } ) => {\r\n\r\n const { filters, records } = useContext( DataContext );\r\n const componentOptions = useContext( OptionsContext );\r\n const { selection, metric } = useContext( SelectionContext );\r\n\r\n const definitions = [ ...componentOptions.definitions ].slice( 2 );\r\n const source = componentOptions.disclaimer.sources;\r\n\r\n const allRecords = records[selection];\r\n const us = allRecords[0];\r\n\r\n const [ data, setData ] = useState( tableRecords );\r\n const tableRef = createRef();\r\n const sr = !selectedRegion || {\r\n 7:\r\n { filter: 'region', label: 'Region', value: [ { label: selectedRegion['region'], value: selectedRegion['oecode'] } ] }\r\n };\r\n\r\n const [ currentFilters, setCurrentFilters ] = useState( selectedRegion !== null ? sr : {} );\r\n const [ showDownloads, setShowDownloads ] = useState( false );\r\n\r\n const [ selectedRegions, setSelectedRegions ] = useState( [] );\r\n const [ selectedRegionsData, setSelectedRegionsData ] = useState( [] );\r\n\r\n\r\n const sc = !selectedRegion || [ { label: selectedRegion['region'], value: selectedRegion['oecode'] } ];\r\n const [ selectedCheckboxes, setSelectedCheckBoxes ] = useState( selectedRegion !== null ? sc : [] );\r\n\r\n const selectedColumnColor = '#fdfdda';\r\n const maxRowsCheckable = 10;\r\n\r\n const isRowSelectable = ( dataIndex, selectedRows, data ) => {\r\n\r\n if ( selectedRegions.length > 0 ) return false;\r\n\r\n if ( selectedRows.data.length >= maxRowsCheckable ) {\r\n\r\n if ( selectedRows.data.map( ( x ) => x.dataIndex ).includes( dataIndex ) ) return true;\r\n\r\n return false;\r\n\r\n }\r\n\r\n return true;\r\n\r\n };\r\n\r\n const onSelectedRowChange = ( currentRowsSelected, allRowsSelected, rowsSelected ) => {\r\n\r\n if ( Object.hasOwnProperty.call( currentFilters, 7 ) ) {\r\n\r\n const filters = { ...currentFilters };\r\n\r\n if ( allRowsSelected.length === 0 ) {\r\n\r\n delete filters['7'];\r\n\r\n }\r\n else if ( filters['7'].value.length > allRowsSelected.length ) {\r\n\r\n // remove value\r\n const selected = data.filter( ( x, i ) => allRowsSelected.map( ( row ) => row.dataIndex ).includes( i ) )\r\n .map( ( x ) => ( { value: x['oecode'], label: x['region'] } ) );\r\n\r\n\r\n filters['7'].value = [ ...selected ];\r\n\r\n }\r\n else {\r\n\r\n // add to filter\r\n const selected = data.filter( ( x, i ) => currentRowsSelected[0].dataIndex === i )\r\n .map( ( x ) => ( { value: x['oecode'], label: x['region'] } ) );\r\n\r\n const exists = currentFilters['7'].value.filter( ( x ) => x.value === selected[0].value ).length > 0;\r\n\r\n if ( !exists ) {\r\n\r\n filters['7'].value = [ ...currentFilters['7'].value, ...selected ];\r\n\r\n }\r\n\r\n }\r\n\r\n setCurrentFilters( filters );\r\n\r\n }\r\n else {\r\n\r\n // create filter\r\n const filters = { ...currentFilters };\r\n\r\n if ( allRowsSelected.length > 0 ) {\r\n\r\n const selected = data.filter( ( x, i ) => rowsSelected.indexOf( i ) !== -1 )\r\n .map( ( x ) => ( { value: x['oecode'], label: x['region'] } ) );\r\n\r\n if ( selected.length === 0 ) {\r\n\r\n delete filters['7'];\r\n\r\n }\r\n else {\r\n\r\n filters['7'] = { filter: 'region', label: 'Region', value: selected };\r\n\r\n }\r\n\r\n }\r\n setCurrentFilters( filters );\r\n\r\n }\r\n\r\n };\r\n\r\n const customToolbar = ( selectedRows, displayData, setSelectedRows ) => {\r\n\r\n const regionCodes = displayData\r\n .filter( ( row ) => selectedRows.data.map( ( r ) => r.dataIndex ).includes( row.dataIndex ) )\r\n .map( ( d ) => d.data[0] );\r\n\r\n return (\r\n 0 }\r\n />\r\n );\r\n\r\n };\r\n\r\n const getSelected = () => {\r\n\r\n const selected = [];\r\n\r\n if ( selectedCheckboxes.length > 0 && selectedRegions.length === 0 ) {\r\n\r\n const oecodes = selectedCheckboxes.map( ( x ) => x.value );\r\n\r\n // what index is the checkbox in with the data.\r\n\r\n data.forEach( ( row, i ) => {\r\n\r\n if ( oecodes.includes( row['oecode'] ) ) {\r\n\r\n selected.push( i );\r\n\r\n }\r\n\r\n } );\r\n\r\n }\r\n else {\r\n\r\n const oecodes = selectedCheckboxes.map( ( x ) => x.value );\r\n\r\n selectedRegionsData.forEach( ( row, i ) => {\r\n\r\n if ( oecodes.includes( row['oecode'] ) ) {\r\n\r\n selected.push( i );\r\n\r\n }\r\n\r\n } );\r\n\r\n }\r\n\r\n return selected;\r\n\r\n };\r\n\r\n const formatChangeSign = ( num, numForm ) => {\r\n\r\n if ( num < 0 ) {\r\n\r\n return `${ numberFormatter( num, numForm ) }`;\r\n\r\n }\r\n else {\r\n\r\n return `+${ numberFormatter( num, numForm ) }`;\r\n\r\n }\r\n\r\n };\r\n\r\n const columns = [\r\n {\r\n name: 'oecode',\r\n label: 'oecode',\r\n options: {\r\n display: false\r\n },\r\n filterName: ''\r\n },\r\n {\r\n name: 'region',\r\n label: 'Region',\r\n options: {\r\n filter: true,\r\n filterType: 'multiselect',\r\n sort: true,\r\n sortThirdClickReset: true,\r\n setCellHeaderProps: ( columnMeta ) => {\r\n\r\n return { style: { textAlign: 'left' } };\r\n\r\n },\r\n setCellProps: ( cellValue, rowIndex, columnIndex ) => {\r\n\r\n\r\n return { style: { textAlign: 'left' } };\r\n\r\n\r\n },\r\n customHeadLabelRender: ( value ) => {\r\n\r\n return ;\r\n\r\n },\r\n customBodyRender: ( value, tableMeta, updateValue ) => {\r\n\r\n const region = records[OPTIONS.current].filter( ( x ) => x['oecode'] === tableMeta.rowData[0] );\r\n\r\n return x['oecode'] === tableMeta.rowData[0] ) }\r\n comp={ records[OPTIONS.comparision].filter( ( x ) => x['oecode'] === tableMeta.rowData[0] ) }\r\n buttonText={ value }\r\n relianceRange={ relianceRange }\r\n definitions={ definitions }\r\n images={ images }\r\n download={ componentOptions.download }\r\n />;\r\n\r\n }\r\n },\r\n filterName: ''\r\n },\r\n {\r\n name: 'impact_emp_total',\r\n label: 'Anchor Employment',\r\n options: {\r\n sort: true,\r\n sortThirdClickReset: true,\r\n // customSort: ( data, colIndex, order ) => {\r\n\r\n // return sortDirection;\r\n\r\n // },\r\n customHeadLabelRender: ( value ) => {\r\n\r\n return ;\r\n\r\n },\r\n customBodyRender: ( value, tableMeta, updateValue ) => {\r\n\r\n if ( selection === 'p_change' ) {\r\n\r\n return `${ formatChangeSign( value, 1 ) }%`;\r\n\r\n }\r\n else {\r\n\r\n return numberFormatter( value, 1 );\r\n\r\n }\r\n\r\n },\r\n setCellProps: ( cellValue, rowIndex, columnIndex, x, y, z ) => {\r\n\r\n if ( metric !== null && metric.value === 'filter_impact_emp_total' ) { // || metric !== null && metric.value === 'filter_p_chg_emp'\r\n\r\n return { style: { backgroundColor: selectedColumnColor } };\r\n\r\n }\r\n\r\n },\r\n setCellHeaderProps: ( columnMeta ) => {\r\n\r\n return { style: { width: '100px' } };\r\n\r\n }\r\n },\r\n filterName: 'filter_impact_emp_total'\r\n\r\n },\r\n {\r\n name: 'impact_inc_total',\r\n label: 'Anchor Income',\r\n options: {\r\n sort: true,\r\n sortThirdClickReset: true,\r\n customHeadLabelRender: ( value ) => {\r\n\r\n return ;\r\n\r\n },\r\n customBodyRender: ( value, tableMeta, updateValue ) => {\r\n\r\n if ( selection === 'p_change' ) {\r\n\r\n return `${ formatChangeSign( value, 1 ) }%`;\r\n\r\n }\r\n else {\r\n\r\n return `$${ numberFormatter( value, 1 ) }`;\r\n\r\n }\r\n\r\n },\r\n setCellProps: ( cellValue, rowIndex, columnIndex ) => {\r\n\r\n if ( metric !== null && metric.value === 'filter_impact_inc_total' ) {\r\n\r\n return { style: { backgroundColor: selectedColumnColor } };\r\n\r\n }\r\n\r\n },\r\n setCellHeaderProps: ( columnMeta ) => {\r\n\r\n return { style: { width: '100px' } };\r\n\r\n }\r\n },\r\n filterName: 'filter_impact_inc_total'\r\n },\r\n {\r\n name: 'impact_gdp_total',\r\n label: 'Anchor GDP',\r\n options: {\r\n sort: true,\r\n sortThirdClickReset: true,\r\n customHeadLabelRender: ( value ) => {\r\n\r\n return ;\r\n\r\n },\r\n customBodyRender: ( value, tableMeta, updateValue ) => {\r\n\r\n if ( selection === 'p_change' ) {\r\n\r\n return `${ formatChangeSign( value, 1 ) }%`;\r\n\r\n }\r\n else {\r\n\r\n return `$${ numberFormatter( value, 1 ) }`;\r\n\r\n }\r\n\r\n\r\n },\r\n setCellProps: ( cellValue, rowIndex, columnIndex ) => {\r\n\r\n if ( metric !== null && metric.value === 'filter_impact_gdp_total' ) {\r\n\r\n return { style: { backgroundColor: selectedColumnColor } };\r\n\r\n }\r\n\r\n },\r\n setCellHeaderProps: ( columnMeta ) => {\r\n\r\n return { style: { width: '75px' } };\r\n\r\n }\r\n },\r\n filterName: 'filter_impact_gdp_total'\r\n },\r\n {\r\n name: 'reliance',\r\n label: 'Reliance Index',\r\n options: {\r\n sort: true,\r\n sortThirdClickReset: true,\r\n customHeadLabelRender: ( value ) => {\r\n\r\n return ;\r\n\r\n },\r\n customBodyRender: ( value, tableMeta, updateValue ) => {\r\n\r\n if ( selection === 'p_change' ) {\r\n\r\n return formatChangeSign( value, 2 );\r\n\r\n }\r\n else {\r\n\r\n return numberFormatter( value, 2 );\r\n\r\n }\r\n\r\n\r\n },\r\n setCellProps: ( cellValue, rowIndex, columnIndex ) => {\r\n\r\n if ( metric !== null && metric.value === 'filter_reliance' ) {\r\n\r\n return { style: { backgroundColor: selectedColumnColor } };\r\n\r\n }\r\n\r\n },\r\n setCellHeaderProps: ( columnMeta ) => {\r\n\r\n return { style: { width: '75px' } };\r\n\r\n }\r\n },\r\n filterName: 'filter_reliance'\r\n }\r\n ];\r\n\r\n const options = {\r\n download: false,\r\n print: false,\r\n search: false,\r\n filter: false,\r\n viewColumns: false,\r\n selectableRowsHeader: false,\r\n responsive: 'standard',\r\n tableBodyMaxHeight: '686px',\r\n rowsPerPageOptions: [ 10, 25, 50, 100 ],\r\n selectToolbarPlacement: 'replace',\r\n selectableRows: 'multiple',\r\n pagination: selectedRegions.length > 0 ? false : true,\r\n rowsSelected: getSelected(),\r\n onRowSelectionChange: onSelectedRowChange,\r\n customToolbarSelect: customToolbar,\r\n isRowSelectable: isRowSelectable,\r\n elevation: 1,\r\n textLabels: {\r\n selectedRows: {\r\n text: `of ${ maxRowsCheckable } rows selected`\r\n }\r\n }\r\n };\r\n\r\n const getSorted = ( recs ) => {\r\n\r\n const d = recs\r\n .sort( ( x, y ) => {\r\n\r\n if ( x['region'] < y['region'] ) {\r\n\r\n return -1;\r\n\r\n }\r\n if ( x['region'] > y['columnName'] ) {\r\n\r\n return 1;\r\n\r\n }\r\n\r\n return 0;\r\n\r\n } );\r\n\r\n return d;\r\n\r\n };\r\n\r\n useEffect( () => {\r\n\r\n let d = metric === null ? getSorted( allRecords.slice( 1 ) ) : tableRecords;\r\n\r\n const regionFilter = Object.hasOwnProperty.call( currentFilters, 7 );\r\n\r\n for ( const key in currentFilters ) {\r\n\r\n const element = currentFilters[key];\r\n\r\n if ( element.filter !== 'region' ) {\r\n\r\n if ( element.filter === 'oecode' ) {\r\n\r\n d = d.filter( ( x ) => {\r\n\r\n if ( regionFilter ) {\r\n\r\n return element.value.includes( x[element.filter] )\r\n || currentFilters['7'].value.map( ( x ) => x.value ).includes( x['oecode'] );\r\n\r\n }\r\n else {\r\n\r\n return element.value.includes( x[element.filter] );\r\n\r\n }\r\n\r\n } );\r\n\r\n }\r\n else {\r\n\r\n d = d.filter( ( x ) => {\r\n\r\n if ( regionFilter ) {\r\n\r\n return x[element.filter] === element.value\r\n || currentFilters['7'].value.map( ( x ) => x.value ).includes( x['oecode'] );\r\n\r\n }\r\n else {\r\n\r\n return x[element.filter] === element.value;\r\n\r\n }\r\n\r\n } );\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n setData( d );\r\n\r\n if ( Object.hasOwnProperty.call( currentFilters, 7 ) ) {\r\n\r\n setSelectedCheckBoxes( currentFilters['7'].value );\r\n\r\n const page = Math.floor( d.map( ( x ) => x['oecode'] ).indexOf( currentFilters['7'].value[currentFilters['7'].value.length - 1].value ) / 10 );\r\n\r\n\r\n tableRef.current.changePage( page );\r\n\r\n }\r\n else {\r\n\r\n setSelectedCheckBoxes( [] );\r\n\r\n }\r\n\r\n if ( Object.keys( currentFilters ).length === 0 ) {\r\n\r\n setSelectedRegions( [] );\r\n setSelectedRegionsData( [] );\r\n\r\n }\r\n\r\n }, [ currentFilters, tableRecords ] );\r\n\r\n useEffect( () => {\r\n\r\n const s = data.filter( ( r ) => selectedRegions.includes( r['oecode'] ) );\r\n\r\n setSelectedRegionsData( getSorted( s ) );\r\n\r\n }, [ selectedRegions ] );\r\n\r\n useEffect( () => {\r\n\r\n return () => {\r\n\r\n const profiles = document.querySelectorAll( '.dashboard' );\r\n\r\n profiles.forEach( ( profileHmtl, i ) => {\r\n\r\n const name = `${ profileHmtl.children[0].innerHTML }, ${ profileHmtl.children[1].innerHTML }`;\r\n\r\n saveAsPng( profileHmtl,\r\n { filename: `${ name } - Profile`, printDate: true },\r\n {\r\n width: 1200,\r\n height: window.screen.width <= 768 ? 4705 : 2185,\r\n backgroundColor: '#fff',\r\n style: {\r\n justifyContent: 'center'\r\n }\r\n } );\r\n\r\n } );\r\n\r\n setTimeout( function () {\r\n\r\n setShowDownloads( false );\r\n\r\n }, 300 );\r\n\r\n };\r\n\r\n }, [ showDownloads ] );\r\n\r\n const onDownloadRegionProfiles = () => {\r\n\r\n setShowDownloads( true );\r\n\r\n };\r\n\r\n const onSelectedDownloadClick = () => {\r\n\r\n const current = records[OPTIONS.current].filter( ( r ) => selectedRegions.includes( r['oecode'] ) );\r\n const compare = records[OPTIONS.comparision].filter( ( r ) => selectedRegions.includes( r['oecode'] ) );\r\n const changes = records[OPTIONS.change].filter( ( r ) => selectedRegions.includes( r['oecode'] ) );\r\n\r\n const dataWithSource = [ current, compare, changes, {}, { region: componentOptions.disclaimer.sources } ];\r\n\r\n downloadData( dataWithSource, dataKey, 'anchor-economy-compared-dataset.xlsx' );\r\n\r\n };\r\n\r\n const getMuiTheme = () =>\r\n createTheme( {\r\n overrides: {\r\n MuiInputBase: {\r\n input: {\r\n color: '#fff'\r\n }\r\n },\r\n MuiTypography: {\r\n root: {\r\n '&.MuiTablePagination-caption': {\r\n fontFamily: 'Graphik-Regular',\r\n fontSize: '14px',\r\n color: '#000',\r\n margin: 'inherit'\r\n }\r\n },\r\n h6: {\r\n fontFamily: 'Graphik-Bold',\r\n fontSize: '24px',\r\n color: '#fff',\r\n textTransform: 'uppercase'\r\n },\r\n subtitle1: {\r\n fontFamily: 'Graphik-Bold',\r\n fontSize: '18px',\r\n color: '#011E4D'\r\n }\r\n },\r\n MuiTablePagination: {\r\n caption: {\r\n fontFamily: 'Graphik-Regular',\r\n fontSize: '14px',\r\n color: '#000'\r\n },\r\n menuItem: {\r\n fontFamily: 'Graphik-Regular',\r\n fontSize: '14px'\r\n },\r\n select: {\r\n color: '#000'\r\n }\r\n },\r\n MUIDataTableSelectCell: {\r\n headerCell: {\r\n backgroundColor: '#F4F4F4'\r\n }\r\n },\r\n MUIDataTableToolbar: {\r\n root: {\r\n backgroundColor: '#011E4D'\r\n },\r\n icon: {\r\n color: '#fff'\r\n },\r\n iconActive: {\r\n color: '#fff'\r\n }\r\n },\r\n MUIDataTableToolbarSelect: {\r\n root: {\r\n backgroundColor: '#D3D9E0'\r\n }\r\n },\r\n MuiTableHead: {\r\n root: {\r\n '& tr > th:nth-child(2) > span': {\r\n justifyContent: 'left'\r\n }\r\n\r\n }\r\n },\r\n MuiTableBody: {\r\n root: {\r\n '& tr > td:nth-child(2)': {\r\n textAlign: 'left'\r\n },\r\n '& tr > td:not(:nth-child(2))': {\r\n textAlign: 'right'\r\n }\r\n }\r\n },\r\n MUIDataTableHeadCell: {\r\n root: {\r\n padding: '16px 16px 8px 16px'\r\n },\r\n fixedHeader: {\r\n backgroundColor: '#F4F4F4'\r\n },\r\n data: {\r\n fontFamily: 'Graphik-Semibold',\r\n fontSize: '14px',\r\n color: '#011E4D'\r\n },\r\n toolButton: {\r\n padding: '6px 0px',\r\n marginLeft: '0',\r\n marginRight: '0',\r\n overflowWrap: 'break-word',\r\n textAlign: 'right',\r\n '&:nth-child(3)': {\r\n width: '120px'\r\n },\r\n '&:hover': {\r\n backgroundColor: '#f4f4f4'\r\n }\r\n }\r\n },\r\n MuiTableCell: {\r\n head: {\r\n color: 'rgba(0, 0, 0, 0)'\r\n }\r\n },\r\n MuiButton: {\r\n root: {\r\n color: 'rgba(0, 0, 0, 0)'\r\n }\r\n },\r\n MuiTableSortLabel: {\r\n root: {\r\n display: 'none'\r\n },\r\n active: {\r\n display: 'block'\r\n }\r\n },\r\n MuiTableRow: {\r\n root: {\r\n '&.MuiTableRow-hover': {\r\n '&:hover': {\r\n backgroundColor: '#FCFDD9'\r\n }\r\n }\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&.mui-row-selected': {\r\n backgroundColor: 'rgba(0, 142, 255, 0.15)'\r\n }\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n fontFamily: 'Graphik-Medium',\r\n fontSize: '14px',\r\n color: '#011e4d'\r\n }\r\n },\r\n MuiButtonBase: {\r\n root: {\r\n '&.MuiCheckbox-colorPrimary.Mui-checked': {\r\n color: 'rgba(0, 142, 255, 1)'\r\n }\r\n }\r\n },\r\n MUIDataTableSearch:\r\n {\r\n searchIcon: {\r\n color: '#fff'\r\n },\r\n clearIcon: {\r\n color: '#fff'\r\n }\r\n },\r\n MuiInput: {\r\n input: {\r\n color: '#fff',\r\n fontFamily: 'Graphik-Regular',\r\n fontSize: '16px'\r\n },\r\n underline: {\r\n borderBottom: '1px solid #fff'\r\n }\r\n }\r\n }\r\n } );\r\n\r\n return (\r\n <>\r\n
\r\n \r\n\r\n \r\n 0 ? data.filter( ( r ) => selectedRegions.includes( r['oecode'] ) ) : data }\r\n columns={ columns }\r\n options={ options }\r\n />\r\n \r\n
\r\n
\r\n { selectedRegions.length > 0 ?\r\n <>\r\n \r\n Download Region Profiles\r\n \r\n \r\n Download Compared Data set\r\n \r\n \r\n : ''\r\n }\r\n
\r\n\r\n { !showDownloads ||\r\n
\r\n {\r\n records[selection].filter( ( x ) => selectedRegions.includes( x['oecode'] ) )\r\n .map( ( record ) => (\r\n x['oecode'] === record.oecode ) }\r\n comp={ records[OPTIONS.comparision].filter( ( x ) => selectedRegions.includes( x['oecode'] ) ) }\r\n relianceRange={ relianceRange }\r\n definitions={ definitions }\r\n images={ images }\r\n download={ componentOptions.download }\r\n source={ source }\r\n stateProfiles={ stateProfiles }\r\n />\r\n ) )\r\n }\r\n
\r\n }\r\n \r\n );\r\n\r\n};\r\n\r\nexport default DashboardTable;\r\n\r\nDashboardTable.propTypes = {\r\n selectedRegion: object,\r\n tableRecords: array,\r\n compareRegion: bool,\r\n setCompareRegion: func,\r\n relianceRange: arrayOf( number ).isRequired,\r\n images: array,\r\n dataKey: array,\r\n stateProfiles: object\r\n};","import './css/index.css';\r\nimport { array, arrayOf, shape, string, object } from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\nimport DashboardSearch from './dashboard-search';\r\nimport Profile from '../profile/profile';\r\nimport DashboardTable from '../dashboard-table/dashboard-table';\r\nimport { OptionsContextProvider } from './options-context';\r\nimport { SelectionContextProvider } from './selection-context';\r\nimport { FIELD_MAPPINGS, OPTIONS } from '../constants';\r\nimport { DataContextProvider } from './data-context';\r\n\r\nconst Dashboard = ( { data, dataKey, options, stateProfiles } ) => {\r\n\r\n const [ buttonClicked, setButtonClicked ] = useState( false );\r\n const [ compareRegion, setCompareRegion ] = useState( false );\r\n const [ selection, setSelection ] = useState( '2019' );\r\n const [ region, setRegion ] = useState( null );\r\n const [ metric, setMetric ] = useState( null );\r\n\r\n\r\n useEffect( () => {\r\n\r\n setCompareRegion( false );\r\n\r\n }, [ region ] );\r\n\r\n const selectedRegion = region !== null ? data.records[OPTIONS.current].filter( ( x ) => x['oecode'] === region.value ) : null;\r\n const comp = region !== null ? data.records[OPTIONS.comparision].filter( ( x ) => x['oecode'] === region.value ) : null;\r\n const changes = region !== null ? data.records[OPTIONS.change].filter( ( x ) => x['oecode'] === region.value ) : null;\r\n\r\n const getFilterName = ( opt ) => {\r\n\r\n return selection === 'p_change' ? changeFilterName[opt] : filterName[opt];\r\n\r\n };\r\n\r\n const filterName = {\r\n\r\n 1: 'filter_impact_emp_total',\r\n 2: 'filter_impact_inc_total',\r\n 3: 'filter_impact_gdp_total',\r\n 4: 'filter_reliance'\r\n\r\n };\r\n\r\n const changeFilterName = {\r\n\r\n 1: 'filter_p_chg_emp',\r\n 2: 'filter_p_chg_inc',\r\n 3: 'filter_p_chg_gdp',\r\n 4: 'filter_abs_chg_reliance'\r\n\r\n };\r\n\r\n const getName = ( opt ) => {\r\n\r\n return selection === 'p_change' ? changeColName[opt] : colName[opt];\r\n\r\n };\r\n\r\n const colName = {\r\n\r\n 1: 'impact_emp_total',\r\n 2: 'impact_inc_total',\r\n 3: 'impact_gdp_total',\r\n 4: 'reliance'\r\n\r\n };\r\n\r\n const changeColName = {\r\n\r\n 1: 'p_chg_emp',\r\n 2: 'p_chg_inc',\r\n 3: 'p_chg_gdp',\r\n 4: 'abs_change_reliance'\r\n\r\n };\r\n\r\n const reliances = data.records[OPTIONS.current].map( ( x ) => x.reliance ).sort();\r\n\r\n const relianceRange = [ reliances[0], reliances[reliances.length - 1] ];\r\n\r\n const profileDefinitions = [ ...options.definitions ].slice( 2 );\r\n\r\n const getTableData = () => {\r\n\r\n let d;\r\n\r\n if ( metric === null ) {\r\n\r\n d = data.records[OPTIONS.current].slice( 1 )\r\n .sort( ( x, y ) => {\r\n\r\n if ( x['region'] < y['region'] ) {\r\n\r\n return -1;\r\n\r\n }\r\n if ( x['region'] > y['columnName'] ) {\r\n\r\n return 1;\r\n\r\n }\r\n\r\n return 0;\r\n\r\n } );\r\n\r\n }\r\n else {\r\n\r\n const columns = [\r\n {\r\n colName: 'filter_impact_emp_total',\r\n filterName: getFilterName( 1 ),\r\n name: getName( 1 )\r\n },\r\n {\r\n colName: 'filter_impact_inc_total',\r\n filterName: getFilterName( 2 ),\r\n name: getName( 2 )\r\n },\r\n {\r\n colName: 'filter_impact_gdp_total',\r\n filterName: getFilterName( 3 ),\r\n name: getName( 3 )\r\n },\r\n {\r\n colName: 'filter_reliance',\r\n filterName: getFilterName( 4 ),\r\n name: getName( 4 )\r\n }\r\n ];\r\n const columnItem = columns.filter( ( x ) => x.colName === metric.value );\r\n const columnName = columnItem[0].name;\r\n\r\n d = data.records[selection].slice( 1 )\r\n .sort( ( x, y ) => {\r\n\r\n if ( selection === 'p_change' ) {\r\n\r\n if ( x[columnName] < y[columnName] ) {\r\n\r\n return 1;\r\n\r\n }\r\n if ( x[columnName] > y[columnName] ) {\r\n\r\n return -1;\r\n\r\n }\r\n\r\n return 0;\r\n\r\n }\r\n else {\r\n\r\n if ( x[columnName] < y[columnName] ) {\r\n\r\n return 1;\r\n\r\n }\r\n if ( x[columnName] > y[columnName] ) {\r\n\r\n return -1;\r\n\r\n }\r\n\r\n return 0;\r\n\r\n }\r\n\r\n } );\r\n\r\n }\r\n\r\n function renameKeys( obj, newKeys ) {\r\n\r\n const keyValues = Object.keys( obj ).map( ( key ) => {\r\n\r\n const newKey = newKeys[key] || key;\r\n\r\n\r\n return { [newKey]: obj[key] };\r\n\r\n } );\r\n\r\n\r\n return Object.assign( {}, ...keyValues );\r\n\r\n }\r\n\r\n if ( selection === 'p_change' ) {\r\n\r\n const temp = d.map( ( x ) => {\r\n\r\n return renameKeys( x, FIELD_MAPPINGS );\r\n\r\n } );\r\n\r\n d = temp;\r\n\r\n }\r\n\r\n return d;\r\n\r\n };\r\n\r\n\r\n return (\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n {\r\n region !== null && buttonClicked && !compareRegion &&\r\n <>\r\n
\r\n \r\n \r\n }\r\n {\r\n ( ( metric !== null && buttonClicked ) || compareRegion ) &&\r\n <>\r\n
\r\n \r\n \r\n }\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default Dashboard;\r\n\r\nDashboard.propTypes = {\r\n data: shape( {\r\n filters: object,\r\n records: object\r\n } ).isRequired,\r\n dataKey: array.isRequired,\r\n stateProfiles: shape( {\r\n file: string,\r\n states: array,\r\n pageReferences: object\r\n } ).isRequired,\r\n // stateProfiles: object.isRequired,\r\n options: shape( {\r\n images: array,\r\n definitions: arrayOf(\r\n shape( {\r\n title: string,\r\n body: string\r\n } )\r\n )\r\n } )\r\n};","import React from 'react';\r\nimport { render } from 'react-dom';\r\nimport Dashboard from './dashboard/dashboard';\r\n\r\nexport default class {\r\n\r\n static name = 'anchor-economy-2';\r\n\r\n constructor( config ) {\r\n\r\n Object.assign( this, config );\r\n\r\n this.pageWrapper = document.querySelector( '.page' );\r\n\r\n }\r\n\r\n ready() {\r\n\r\n render(\r\n , this.element\r\n );\r\n\r\n }\r\n\r\n}\r\n"],"sourceRoot":""}