import React, {useState, useEffect, useCallback} from 'react'; import * as Icon from 'react-feather'; import { formatDate, formatDateAbsolute, formatNumber, } from '../utils/common-functions'; import {formatDistance} from 'date-fns'; import {Tooltip} from 'react-lightweight-tooltip'; function Row(props) { const [state, setState] = useState(props.state); const [districts, setDistricts] = useState(props.districts); const [sortedDistricts, setSortedDistricts] = useState(props.districts); const [sortData, setSortData] = useState({ sortColumn: localStorage.getItem('district.sortColumn') ? localStorage.getItem('district.sortColumn') : 'confirmed', isAscending: localStorage.getItem('district.isAscending') ? localStorage.getItem('district.isAscending') === 'true' : false, }); useEffect(() => { setState(props.state); }, [props.state]); useEffect(() => { setDistricts(props.districts); setSortedDistricts(props.districts); }, [props.districts]); const handleReveal = () => { props.handleReveal(props.state.state); }; const sortDistricts = useCallback( (aDistricts) => { const sorted = {}; if (aDistricts) { Object.keys(aDistricts) .sort((district1, district2) => { const sortColumn = sortData.sortColumn; const value1 = sortColumn === 'district' ? district1 : parseInt(aDistricts[district1].confirmed); const value2 = sortColumn === 'district' ? district2 : parseInt(aDistricts[district2].confirmed); const comparisonValue = value1 > value2 ? 1 : value1 === value2 && district1 > district2 ? 1 : -1; return sortData.isAscending ? comparisonValue : comparisonValue * -1; }) .forEach((key) => { sorted[key] = aDistricts[key]; }); setSortedDistricts(sorted); } }, [sortData.isAscending, sortData.sortColumn] ); const handleSort = (column) => { const isAscending = sortData.sortColumn === column ? !sortData.isAscending : sortData.sortColumn === 'district'; setSortData({ sortColumn: column, isAscending: isAscending, }); localStorage.setItem('district.sortColumn', column); localStorage.setItem('district.isAscending', isAscending); }; useEffect(() => { sortDistricts(districts); }, [districts, sortData, sortDistricts]); return ( props.onHighlightState?.(state, props.index)} onMouseLeave={() => props.onHighlightState?.()} /* onTouchStart={() => props.onHighlightState?.(state, props.index)}*/ /* onClick={!props.total ? handleReveal : null}*/ style={{background: props.index % 2 === 0 ? '#f8f9fa' : ''}} >
{ handleReveal(); }} > {state.state} {state.statenotes && ( )}
{state.deltaconfirmed > 0 && } {state.deltaconfirmed > 0 ? `${state.deltaconfirmed}` : ''} {parseInt(state.confirmed) === 0 ? '-' : formatNumber(state.confirmed)} {/* {!state.delta.active==0 && } {state.delta.active>0 ? `${state.delta.active}` : ''} */} {parseInt(state.active) === 0 ? '-' : formatNumber(state.active)} {state.deltarecovered > 0 && } {state.deltarecovered > 0 ? `${state.deltarecovered}` : ''} {parseInt(state.recovered) === 0 ? '-' : formatNumber(state.recovered)} {state.deltadeaths > 0 && } {state.deltadeaths > 0 ? `${state.deltadeaths}` : ''} {parseInt(state.deaths) === 0 ? '-' : formatNumber(state.deaths)}
Last updated 
{isNaN(Date.parse(formatDate(props.state.lastupdatedtime))) ? '' : `${formatDistance( new Date(formatDate(props.state.lastupdatedtime)), new Date() )} ago`}
handleSort('district')}>
District
{sortData.isAscending ? (
) : (
)}
handleSort('confirmed')}>
{window.innerWidth <= 769 ? window.innerWidth <= 375 ? 'C' : 'Cnfmd' : 'Confirmed'}
{sortData.isAscending ? (
) : (
)}
{sortedDistricts && Object.keys(sortedDistricts) .filter((district) => district.toLowerCase() !== 'unknown') .map((district, index) => { if (district.toLowerCase() !== 'unknown') { return ( props.onHighlightDistrict?.(district, state, props.index) } onMouseLeave={() => props.onHighlightDistrict?.()} /* onTouchStart={() => props.onHighlightDistrict?.(district, state, props.index) }*/ > {district} {sortedDistricts[district].delta.confirmed > 0 && ( )} {sortedDistricts[district].delta.confirmed > 0 ? `${sortedDistricts[district].delta.confirmed}` : ''} {formatNumber(sortedDistricts[district].confirmed)} ); } return null; })} {sortedDistricts?.Unknown && ( Unknown{' '} # {sortedDistricts['Unknown'].delta.confirmed > 0 && ( )} {sortedDistricts['Unknown'].delta.confirmed > 0 ? `${sortedDistricts['Unknown'].delta.confirmed}` : ''} {formatNumber(sortedDistricts['Unknown'].confirmed)} #
Awaiting patient-level details from State Bulletin
)} ); } export default Row;