import React from 'react'; import { useTranslation } from 'react-i18next'; import { Checkbox, Button, makeStyles } from '@material-ui/core'; import { BigNumber } from 'ethers'; import { CertificateSource } from '../../../features/certificates'; import { useOriginConfiguration } from '../../../utils/configuration'; import { LightenColor } from '../../../utils/colors'; import { EnergyFormatter } from '../../../utils/EnergyFormatter'; import { formatDate, moment } from '../../../utils/time'; import { DeviceIcon } from '../../Icons'; export interface IInboxItemData { id: string; name: string; country: string; type: string; capacity: number; certificates: IInboxCertificateData[]; } export interface IInboxCertificateData { id: number; dateStart: number; dateEnd: number; energy: BigNumber; maxEnergy: BigNumber; source: CertificateSource; assetId: string; } export function InboxItem(props: { device: IInboxItemData; selected: number[]; selectedDevices: string[]; onDeviceSelect: (id: string) => void; onCertificateSelect: (id: number, deviceId: string) => void; onViewClick: (id: number) => void; }): JSX.Element { const { device, selected, onDeviceSelect, onCertificateSelect, selectedDevices, onViewClick } = props; const configuration = useOriginConfiguration(); const mainBgColor = configuration?.styleConfig?.MAIN_BACKGROUND_COLOR; const simpleTextColor = configuration?.styleConfig?.SIMPLE_TEXT_COLOR; const defaultTextColor = configuration?.styleConfig?.TEXT_COLOR_DEFAULT; const primaryDimColor = configuration?.styleConfig?.PRIMARY_COLOR_DIM; const primaryColor = configuration?.styleConfig?.PRIMARY_COLOR; const unselectedIconColor = LightenColor(defaultTextColor, -7); const useStyles = makeStyles({ device: { padding: '18px 20px', background: LightenColor(mainBgColor, 4), boxShadow: '0 2px 4px rgba(0,0,0,.2)', display: 'flex', flexDirection: 'row' }, verticalCenter: { display: 'flex', alignItems: 'center' }, entry: { marginBottom: '10px' }, certificate: { padding: '18px 20px', background: LightenColor(mainBgColor, 6), boxShadow: '0 2px 4px rgba(0,0,0,.2)', display: 'flex', flexDirection: 'row', borderBottom: '1px solid #464646' }, selected: { background: primaryDimColor }, text_1: { fontSize: '16px', color: simpleTextColor }, text_2: { fontSize: '14px', color: simpleTextColor, opacity: '.5' }, text_3: { fontSize: '12px', color: simpleTextColor, opacity: '.5' }, checkbox: { marginRight: '20px' }, iconContainer: { display: 'flex', alignItems: 'center' }, icon: { width: 55, height: 55, marginRight: '25px' } }); const classes = useStyles(); const { t } = useTranslation(); return (
onDeviceSelect(device.id)} />
{device.name}
{device.country}
{device.certificates.map((cert) => { const isSelected = selected.includes(cert.id); return (
onCertificateSelect(cert.id, device.id)} />
{device.type}
{EnergyFormatter.format(cert.maxEnergy, true)}
Generation Time Frame
{formatDate(moment.unix(cert.dateStart))} {' - '} {formatDate(moment.unix(cert.dateEnd))}
); })}
); }