/* eslint-disable @typescript-eslint/indent */ /** * @format */ import { Box, Button, Flex, Heading, Spacer, Text } from '@chakra-ui/react' import React, {FC} from 'react' import {Legend} from 'recharts' import {ActionsDropDown} from '../ActionDropDown/ActionDropDown' import {ButtonWithIconProps} from '../UIcomponents' import moment from 'moment' import {TimePeriods} from '../../types/types' export const ChartLegend: FC = () => ( ) export interface ITooltipListElement { propertyNames: Array propertyKeyNames: Array color: string rightColumnKey?: string } export type CustomTooltipProps = { payload?: any headingKeyName: string headingType: 'date' | 'string' elements: Array style?: any } export const CustomTooltip: FC = ({ payload, headingKeyName, headingType, elements, style }) => ( <> {payload && payload.length && ( {headingType === 'date' ? moment(payload[0].payload[headingKeyName]).format('MMM, YY') : payload[0].payload[headingKeyName]} {Array.isArray(elements) ? elements.map((item, index) => ( {item.propertyNames.map((prop, index) => ( {prop.length > 0 && ( {prop} )} {item.propertyKeyNames[index] === 'price' ? ( RM{' '} {payload[0].payload[item.propertyKeyNames[index]]} ) : ( {payload[0].payload[item.propertyKeyNames[index]]} )} ))} )) : elements} )} ) export type TimeFilterButtonsProps = { buttons: Array } export const TimeFilterButtons = ({buttons}: {buttons: Array}) => ( <> {buttons.map((item, index) => ( ))} ) export const ChartWrapper = ({ heading, timeFilterButtons, dropDownActions, children, showTimePeriodFilters, showActionButtons }: { heading: string timeFilterButtons: any dropDownActions: any children?: any showTimePeriodFilters: boolean showActionButtons: boolean }) => ( {heading} {showActionButtons && } {showTimePeriodFilters && ( )} {children} <> ) export const CustomLabel = (props: any) => { const { x, y, index, activeLegends, dataArray, currentTimePeriod, tooltipType } = props const itemData = dataArray[index] const tobeDisplayed = activeLegends.find( (item: any) => item.id === itemData.id ) if (tobeDisplayed) { if (tooltipType === 'double') { return ( {} ) } else { return ( { } ) } } else { return null } } type CustomTooltipDoubleProps = { payload?: any headingKeyName: string headingType: 'date' | 'string' elements: Array style?: any } export const CustomTooltipDouble: FC = ({ payload, headingKeyName, headingType, elements, style }) => ( <> {payload && payload.length && ( {headingType === 'date' ? moment(payload[0].payload[headingKeyName]).format('MMM, YY') : payload[0].payload[headingKeyName]} # {payload[0].payload && Object.values(Object.keys(payload[0].payload) .filter(key => key !== 'id' && key !== 'date') .reduce((obj, key) => Object.assign(obj, { [key]: payload[0].payload[key] }), {})) .map((point: any, index: any) => elements.map((item, index) => ( {item.propertyNames.map((prop, index) => ( {prop.length > 0 && {prop}: } {item.propertyKeyNames[index] === 'price' ? ` RM ${point[item.propertyKeyNames[index]]}` : ` ${point[item.propertyKeyNames[index]]}`} ))} {index === 0 && item.rightColumnKey && ( {point[item.rightColumnKey]} )} )) )} )} )