/* eslint-disable indent */ import { Box, Dialog, DialogActions, DialogContent, DialogTitle, Grid, TextField } from '@mui/material'; import React, { useEffect } from 'react'; import PropTypes from 'prop-types'; import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; import IconButton from '@mui/material/IconButton'; import MDButton from 'components/Button'; import { useDispatch, useSelector } from 'react-redux'; import { WidgetSelectors } from 'redux/WidgetRedux'; import WidgetActions from 'redux/WidgetRedux'; import { API } from 'constant'; import { useFormik } from 'formik'; import LOGGER from 'services/Logger'; function MaterialForm({ formType, setFormOpen, selected, inventoryId }) { const dispatch = useDispatch(); const formik = useFormik({ initialValues: formType === 'family' ? { name: '', inventoryId } : formType === 'subfamily' ? { name: '', inventoryId, parentId: selected._id || '' } : { name: formType.name, inventoryId, parentId: formType.parent?._id || undefined }, onSubmit: (values) => { LOGGER.log('Form values and field info', values); ['family', 'subfamily'].includes(formType) ? dispatch( WidgetActions.editWidgetRequest({ loader: 'location-request', slug: API.ADD_WIDGET_FAMILY, method: 'post', data: values, type: 'add' }) ) : dispatch( WidgetActions.editWidgetRequest({ loader: 'location-request', slug: `${API.EDIT_WIDGET_FAMILY}${formType._id}`, method: 'patch', data: values, type: 'edit' }) ); setFormOpen(false); } }); return ( { setFormOpen(false); }} > {['family', 'subfamily'].includes(formType) ? 'Create' : 'Edit'} material{' '} {['family', 'subfamily'].includes(formType) ? formType : null} {/* Some more text if needed */} { setFormOpen(false); }} > Cancel Save ); } MaterialForm.propTypes = { formType: PropTypes.any, setFormOpen: PropTypes.any, selected: PropTypes.any, inventoryId: PropTypes.any }; function WidgetNestedDataTable({ data, selected, setSelected, setFormOpen, setFormType, inventoryId }) { const [open, setOpen] = React.useState(false); const dispatch = useDispatch(); const widgetChildren = useSelector(WidgetSelectors.getWidgetsByParentId(data._id)); return ( <> setOpen(!open)} > {open ? : } { setFormType(data); setFormOpen(true); }} > EDIT { setSelected(data); }} > {data.name} { setSelected(null); dispatch( WidgetActions.editWidgetRequest({ loader: 'location-request', slug: `${API.EDIT_WIDGET_FAMILY}${data._id}`, deletedId: data._id, method: 'delete', type: 'delete' }) ); }} > DELETE {open && widgetChildren ? ( {/* Add headers here */} {widgetChildren.map((data) => ( ))} ) : null} ); } WidgetNestedDataTable.propTypes = { data: PropTypes.any, selected: PropTypes.any, setSelected: PropTypes.any, setFormOpen: PropTypes.any, setFormType: PropTypes.any, inventoryId: PropTypes.any }; const bottomButtonStyling = { width: '200px', marginTop: '25px', textTransform: 'uppercase', borderRadius: '100px', padding: '13px 30px' }; function WidgetNestedDataTableContainer({ inventoryId }) { const dispatch = useDispatch(); const [selected, setSelected] = React.useState(null); const [formType, setFormType] = React.useState('family'); const [formOpen, setFormOpen] = React.useState(false); const widgetFamilyData = useSelector(WidgetSelectors.getWidgetFamiliesByInventoryId(inventoryId)); useEffect(() => { dispatch( WidgetActions.widgetRequest({ loader: 'location-request', slug: `${API.GET_WIDGET_FAMILY_BY_INVENTORY}${inventoryId}`, method: 'get' }) ); }, []); return ( <> {widgetFamilyData && widgetFamilyData.map((p) => ( ))} { setFormType('family'); setFormOpen(true); }} > Add Family { setFormType('subfamily'); setFormOpen(true); }} > Add SubFamily {/*
{JSON.stringify(selected, null, 4)}
*/} {formOpen && ( )} ); } WidgetNestedDataTableContainer.propTypes = { inventoryId: PropTypes.any }; export default WidgetNestedDataTableContainer;