|
|
|
|
|
|
|
import React, { useState, useEffect } from "react"; |
|
import { |
|
Table, |
|
TableHead, |
|
TableRow, |
|
TableHeaderCell, |
|
TableCell, |
|
Button, |
|
Icon, |
|
Badge, |
|
TableBody, |
|
Text, |
|
} from "@tremor/react"; |
|
import { InputNumber, message } from "antd"; |
|
import { alertingSettingsCall, updateConfigFieldSetting } from "../networking"; |
|
import { TrashIcon, CheckCircleIcon } from "@heroicons/react/outline"; |
|
import DynamicForm from "./dynamic_form"; |
|
interface alertingSettingsItem { |
|
field_name: string; |
|
field_type: string; |
|
field_value: any; |
|
field_default_value: any; |
|
field_description: string; |
|
stored_in_db: boolean | null; |
|
premium_field: boolean; |
|
} |
|
|
|
interface AlertingSettingsProps { |
|
accessToken: string | null; |
|
premiumUser: boolean; |
|
} |
|
|
|
const AlertingSettings: React.FC<AlertingSettingsProps> = ({ |
|
accessToken, |
|
premiumUser, |
|
}) => { |
|
const [alertingSettings, setAlertingSettings] = useState< |
|
alertingSettingsItem[] |
|
>([]); |
|
|
|
useEffect(() => { |
|
|
|
if (!accessToken) { |
|
return; |
|
} |
|
alertingSettingsCall(accessToken).then((data) => { |
|
setAlertingSettings(data); |
|
}); |
|
}, [accessToken]); |
|
|
|
const handleInputChange = (fieldName: string, newValue: any) => { |
|
|
|
const updatedSettings = alertingSettings.map((setting) => |
|
setting.field_name === fieldName |
|
? { ...setting, field_value: newValue } |
|
: setting |
|
); |
|
|
|
console.log(`updatedSettings: ${JSON.stringify(updatedSettings)}`) |
|
setAlertingSettings(updatedSettings); |
|
}; |
|
|
|
const handleSubmit = (formValues: Record<string, any>) => { |
|
if (!accessToken) { |
|
return; |
|
} |
|
|
|
console.log(`formValues: ${formValues}`) |
|
let fieldValue = formValues; |
|
|
|
if (fieldValue == null || fieldValue == undefined) { |
|
return; |
|
} |
|
|
|
const initialFormValues: Record<string, any> = {}; |
|
|
|
alertingSettings.forEach((setting) => { |
|
initialFormValues[setting.field_name] = setting.field_value; |
|
}); |
|
|
|
|
|
const mergedFormValues = { ...formValues, ...initialFormValues }; |
|
console.log(`mergedFormValues: ${JSON.stringify(mergedFormValues)}`) |
|
const { slack_alerting, ...alertingArgs } = mergedFormValues; |
|
console.log(`slack_alerting: ${slack_alerting}, alertingArgs: ${JSON.stringify(alertingArgs)}`) |
|
try { |
|
updateConfigFieldSetting(accessToken, "alerting_args", alertingArgs); |
|
if (typeof slack_alerting === "boolean") { |
|
if (slack_alerting == true) { |
|
updateConfigFieldSetting(accessToken, "alerting", ["slack"]); |
|
} else { |
|
updateConfigFieldSetting(accessToken, "alerting", []); |
|
} |
|
} |
|
|
|
message.success("Wait 10s for proxy to update."); |
|
} catch (error) { |
|
|
|
} |
|
}; |
|
|
|
const handleResetField = (fieldName: string, idx: number) => { |
|
if (!accessToken) { |
|
return; |
|
} |
|
|
|
try { |
|
|
|
|
|
|
|
const updatedSettings = alertingSettings.map((setting) => |
|
setting.field_name === fieldName |
|
? { |
|
...setting, |
|
stored_in_db: null, |
|
field_value: setting.field_default_value, |
|
} |
|
: setting |
|
); |
|
setAlertingSettings(updatedSettings); |
|
} catch (error) { |
|
|
|
console.log("ERROR OCCURRED!"); |
|
} |
|
}; |
|
|
|
return ( |
|
<DynamicForm |
|
alertingSettings={alertingSettings} |
|
handleInputChange={handleInputChange} |
|
handleResetField={handleResetField} |
|
handleSubmit={handleSubmit} |
|
premiumUser={premiumUser} |
|
/> |
|
); |
|
}; |
|
|
|
export default AlertingSettings; |
|
|