import React, { useState } from "react"; import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper"; import { createStyles, Theme, withStyles } from "@material-ui/core/styles"; import { modalBasic } from "../../Common/FormComponents/common/styleLibrary"; import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper"; import SelectWrapper from "../../Common/FormComponents/SelectWrapper/SelectWrapper"; import Grid from "@material-ui/core/Grid"; import { factorForDropdown, getTotalSize } from "../../../../common/utils"; import { Button, LinearProgress } from "@material-ui/core"; interface IAddZoneProps { classes: any; open: boolean; onCloseZoneAndReload: (shouldReload: boolean) => void; } const styles = (theme: Theme) => createStyles({ errorBlock: { color: "red", }, buttonContainer: { textAlign: "right", }, multiContainer: { display: "flex", alignItems: "center" as const, justifyContent: "flex-start" as const, }, sizeFactorContainer: { marginLeft: 8, }, bottomContainer: { display: "flex", flexGrow: 1, alignItems: "center", "& div": { flexGrow: 1, width: "100%", }, }, factorElements: { display: "flex", justifyContent: "flex-start", }, sizeNumber: { fontSize: 35, fontWeight: 700, textAlign: "center", }, sizeDescription: { fontSize: 14, color: "#777", textAlign: "center", }, ...modalBasic, }); const AddZoneModal = ({ classes, open, onCloseZoneAndReload, }: IAddZoneProps) => { const [addSending, setAddSending] = useState(false); const [zoneName, setZoneName] = useState(""); const [numberOfInstances, setNumberOfInstances] = useState(0); const [volumesPerInstance, setVolumesPerInstance] = useState(0); const [sizeFactor, setSizeFactor] = useState("GiB"); const [volumeConfiguration, setVolumeConfig] = useState(""); const [storageClass, setStorageClass] = useState(""); const instanceCapacity: number = parseFloat(volumeConfiguration) * volumesPerInstance; const totalCapacity: number = instanceCapacity * numberOfInstances; return ( onCloseZoneAndReload(false)} modalOpen={open} title="Add Zone" >
) => { e.preventDefault(); setAddSending(true); }} > ) => { setZoneName(e.target.value); }} label="Name" value={zoneName} /> ) => { setNumberOfInstances(parseInt(e.target.value)); }} label="Volumes per Server" value={numberOfInstances.toString(10)} /> ) => { setVolumesPerInstance(parseInt(e.target.value)); }} label="Volumes per Instance" value={volumesPerInstance.toString(10)} />
) => { setVolumeConfig(e.target.value); }} label="Size" value={volumeConfiguration} />
) => { setSizeFactor(e.target.value as string); }} options={factorForDropdown()} />
) => { setStorageClass(e.target.value); }} label="Volumes per Server" value={storageClass} />
{getTotalSize(instanceCapacity.toString(10), sizeFactor)}
Instance Capacity
{getTotalSize(totalCapacity.toString(10), sizeFactor)}
Total Capacity
{addSending && ( )}
); }; export default withStyles(styles)(AddZoneModal);