import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { enqueueSnackbar as enqueueSnackbarAction, closeSnackbar as closeSnackbarAction } from 'store/actions' import moment from 'moment' // material-ui import { Button, Box, Stack, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, IconButton, Toolbar, TextField, InputAdornment, ButtonGroup, Chip } from '@mui/material' import { useTheme } from '@mui/material/styles' // project imports import MainCard from 'ui-component/cards/MainCard' import { StyledButton } from 'ui-component/button/StyledButton' import ConfirmDialog from 'ui-component/dialog/ConfirmDialog' // API import variablesApi from 'api/variables' // Hooks import useApi from 'hooks/useApi' import useConfirm from 'hooks/useConfirm' // utils import useNotifier from 'utils/useNotifier' // Icons import { IconTrash, IconEdit, IconX, IconPlus, IconSearch, IconVariable } from '@tabler/icons' import VariablesEmptySVG from 'assets/images/variables_empty.svg' // const import AddEditVariableDialog from './AddEditVariableDialog' import HowToUseVariablesDialog from './HowToUseVariablesDialog' // ==============================|| Credentials ||============================== // const Variables = () => { const theme = useTheme() const customization = useSelector((state) => state.customization) const dispatch = useDispatch() useNotifier() const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) const [showVariableDialog, setShowVariableDialog] = useState(false) const [variableDialogProps, setVariableDialogProps] = useState({}) const [variables, setVariables] = useState([]) const [showHowToDialog, setShowHowToDialog] = useState(false) const { confirm } = useConfirm() const getAllVariables = useApi(variablesApi.getAllVariables) const [search, setSearch] = useState('') const onSearchChange = (event) => { setSearch(event.target.value) } function filterVariables(data) { return data.name.toLowerCase().indexOf(search.toLowerCase()) > -1 } const addNew = () => { const dialogProp = { type: 'ADD', cancelButtonName: 'Cancel', confirmButtonName: 'Add', data: {} } setVariableDialogProps(dialogProp) setShowVariableDialog(true) } const edit = (variable) => { const dialogProp = { type: 'EDIT', cancelButtonName: 'Cancel', confirmButtonName: 'Save', data: variable } setVariableDialogProps(dialogProp) setShowVariableDialog(true) } const deleteVariable = async (variable) => { const confirmPayload = { title: `Delete`, description: `Delete variable ${variable.name}?`, confirmButtonName: 'Delete', cancelButtonName: 'Cancel' } const isConfirmed = await confirm(confirmPayload) if (isConfirmed) { try { const deleteResp = await variablesApi.deleteVariable(variable.id) if (deleteResp.data) { enqueueSnackbar({ message: 'Variable deleted', options: { key: new Date().getTime() + Math.random(), variant: 'success', action: (key) => ( ) } }) onConfirm() } } catch (error) { const errorData = error.response?.data || `${error.response?.status}: ${error.response?.statusText}` enqueueSnackbar({ message: `Failed to delete Variable: ${errorData}`, options: { key: new Date().getTime() + Math.random(), variant: 'error', persist: true, action: (key) => ( ) } }) } } } const onConfirm = () => { setShowVariableDialog(false) getAllVariables.request() } useEffect(() => { getAllVariables.request() // eslint-disable-next-line react-hooks/exhaustive-deps }, []) useEffect(() => { if (getAllVariables.data) { setVariables(getAllVariables.data) } }, [getAllVariables.data]) return ( <>

Variables 

) }} /> } > Add Variable
{variables.length <= 0 && ( VariablesEmptySVG
No Variables Yet
)} {variables.length > 0 && ( Name Value Type Last Updated Created {variables.filter(filterVariables).map((variable, index) => (
{variable.name}
{variable.value} {moment(variable.updatedDate).format('DD-MMM-YY')} {moment(variable.createdDate).format('DD-MMM-YY')} edit(variable)}> deleteVariable(variable)}>
))}
)}
setShowVariableDialog(false)} onConfirm={onConfirm} > setShowHowToDialog(false)}> ) } export default Variables