import React from 'react'; import { useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; import { Dialog, Grid, IconButton, useTheme, Box, Divider, Button } from '@material-ui/core'; import { Close as CloseIcon, ArrowRightAlt as ArrowRightAltIcon } from '@material-ui/icons'; import { OrderSide } from '@energyweb/exchange-irec-client'; import { moment, formatCurrencyComplete, EnergyFormatter, DATE_FORMAT_INCLUDING_TIME, LightenColor, fromGeneralSelectors } from '@energyweb/origin-ui-core'; import { getEnvironment } from '../../features/general'; import { Order } from '../../utils/exchange'; import { getDeviceName } from '../../utils/device'; import { IOriginTypography } from '../../types/typography'; import { useOriginConfiguration } from '../../utils/configuration'; import { AnyDevice } from '../../types'; interface IOwnProps { order: Order; close: () => void; showCancelOrder: (order: Order) => void; devices: AnyDevice[]; } export const OrderDetailsModal = (props: IOwnProps) => { const { t } = useTranslation(); const environment = useSelector(getEnvironment); const anyOption = t('order.anyValue'); const { order, close, showCancelOrder, devices } = props; const { filled, asset, product: { generationFrom, generationTo, location, deviceType, gridOperator = anyOption } } = order; const spacing = useTheme().spacing; const textPrimary = useTheme().palette?.text?.primary; const fontSizeMd = ((useTheme().typography as unknown) as IOriginTypography)?.fontSizeMd; const fontSizeLg = ((useTheme().typography as unknown) as IOriginTypography)?.fontSizeLg; const configuration = useOriginConfiguration(); const originBgColor = configuration?.styleConfig?.MAIN_BACKGROUND_COLOR; const bgLighten = LightenColor(originBgColor, 2); const bgDarken = LightenColor(originBgColor, -2); const currency = useSelector(fromGeneralSelectors.getCurrencies)[0]; const deviceTypeFormatted = (deviceArr: string[]): string => deviceArr.filter((type) => !type.includes(';')).join(', '); const primaryDeviceType = deviceType ? deviceTypeFormatted(deviceType) : anyOption; const region = location ? location[0].split(';')[1] : anyOption; return ( {moment(order.validFrom).format(DATE_FORMAT_INCLUDING_TIME)} Order No. {order.id} {formatCurrencyComplete(order.price / 100, currency)} {EnergyFormatter.format(order.currentVolume, true)} {primaryDeviceType} {order.side === OrderSide.Ask && ( {asset.deviceId ? getDeviceName(asset.deviceId, devices, environment) : anyOption} )} {moment(generationFrom).format('MMM, YYYY')} {moment(generationTo).format('MMM, YYYY')} {order.side === OrderSide.Bid && ( {t('device.properties.deviceType')} {primaryDeviceType} {t('device.properties.gridOperator')} {gridOperator} {t('device.properties.region')} {region} )} {t('order.properties.filled')} {filled || '-'} ); };