import React, { useState } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { useTranslation } from 'react-i18next';
import {
Dialog,
DialogTitle,
Grid,
Box,
Typography,
Slider,
DialogContent,
makeStyles,
createStyles,
Tooltip,
IconButton,
Theme
} from '@material-ui/core';
import CloseIcon from '@material-ui/icons/Close';
import { formatCurrencyComplete } from '@energyweb/origin-ui-core';
import { getShowBundleDetails, showBundleDetails } from '../../features/bundles';
import { Bundle } from '../../utils/exchange';
import { bundlePrice } from '../../utils/bundles';
import { BundleContents } from './BundleContents';
import { useOriginConfiguration } from '../../utils/configuration';
import { AnyDevice } from '../../types';
interface IOwnProps {
bundle: Bundle;
owner: boolean;
devices: AnyDevice[];
}
const useDialogStyles = makeStyles((theme: Theme) =>
createStyles({
closeButton: {
position: 'absolute',
top: theme.spacing(1),
right: theme.spacing(1)
},
tooltip: {
backgroundColor: theme.palette.primary.main
}
})
);
const COUNT_OF_PRICE_MARKS = 11;
function SliderLabel(props) {
const { children, open, value } = props;
const styles = useDialogStyles();
return (
{children}
);
}
export const BundleDetails = (props: IOwnProps) => {
const dispatch = useDispatch();
const showModal = useSelector(getShowBundleDetails);
const { t } = useTranslation();
const { bundle, owner, devices } = props;
let { splits } = bundle;
const { price } = bundle;
const prices = splits.map(({ volume }) => bundlePrice({ volume, price }));
const maxPrice = Math.ceil(Math.max(...prices) / 10) * 10;
const minPrice = Math.floor(Math.min(...prices) / 10) * 10;
const styles = useDialogStyles();
const configuration = useOriginConfiguration();
const originSimpleTextColor = configuration?.styleConfig?.SIMPLE_TEXT_COLOR;
const [priceRange, setPriceRange] = useState([minPrice, maxPrice]);
splits = splits.filter(
({ volume }) =>
bundlePrice({ volume, price }) >= priceRange[0] &&
bundlePrice({ volume, price }) <= priceRange[1]
);
const priceStep = Math.floor((maxPrice - minPrice) / (COUNT_OF_PRICE_MARKS - 1));
const marks = Array.from(Array(COUNT_OF_PRICE_MARKS).keys()).map((i) => {
const from = minPrice;
const value = from + i * priceStep;
return { value, label: String(value) };
});
return (
);
};