import { AppBar, createStyles, makeStyles, styled, Tab, Tabs, Theme, withStyles } from '@material-ui/core'; import * as React from 'react' import { tabA11yProps, TabPanel, toMenuItems } from './FormUtil'; import * as _m from '../models/Manifest' import { FormikTextField } from '../components/common/FormikTextField'; import { FormikCardList } from '../components/common/FormikCardList'; import NotConfigured from './NotConfiguredPanel'; import { useField, useFormikContext } from 'formik'; const useStyles = makeStyles((theme: Theme) => ({ root: { flexGrow: 1, backgroundColor: theme.palette.background.paper, }, alertPanel: { width: 1200 }, })); const alertTypes = { 'loadBalancer': ['http4xx', 'http5xx', 'elb4xx', 'elb5xx', 'latency'], 'database': ['highActiveConnection', 'connectionAcquireTimeIsHigh', 'maxConnectionPoolReached'], 'kafka': ['consumerGroupLag', 'kafkaMessageRate'] } const severity = ['critical', 'warning'] const FixWidthTextField = styled(FormikTextField)({ margin: 5, width: 300 }) interface StyledTabProps { label: string; } const commonAlerts = (i, alertType) => (<> {toMenuItems(alertTypes[alertType])} {toMenuItems(severity)} ) const LoadBalancerAlert = () => { const alertType = 'loadBalancer' return ( {(i) => commonAlerts(i, alertType)} ) } const DatabaseAlert = () => { const alertType = 'database' return ( {(i) => commonAlerts(i, alertType)} ) } const KafkaAlertGroupField = (props) => { const { i } = props const [kafkaAlertType] = useField(`deployment.alerts.kafka.${i}.type`) if (kafkaAlertType.value === "consumerGroupLag") { return } else { return <> } } const KafkaAlert = () => { const alertType = 'kafka' return ( {(i) => (<> {commonAlerts(i, alertType)} )} ) } const CustomAlert = () => { const alertType = 'custom' return ( {(i) => (<> {toMenuItems(severity)} )} ) } const AlertForm = () => { const classes = useStyles(); const { values, setValues }: { values: any, setValues: any } = useFormikContext() const [currentTab, setCurrentTab] = React.useState(0); const handleTabChange = (event: React.ChangeEvent<{}>, newTab: number) => { setCurrentTab(newTab); }; return ( setValues(_m.addAlerts(values))} removeAction={() => setValues(_m.removeAlerts(values))} >
) } export default AlertForm