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