From cb255449c514532d3973fa0f2c58b06214db0c71 Mon Sep 17 00:00:00 2001 From: Salah Eddine Lalami <50052356+idurar@users.noreply.github.com> Date: Sat, 28 Oct 2023 03:12:43 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20minor=20bugs=20fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/RecentTable/index.jsx | 100 +++++++++++------- .../components/DataTableDropMenu.jsx | 47 -------- .../EmailDataTableModule/index.jsx | 2 +- .../componenets/EmailForm.jsx | 4 +- .../EmailModule/UpdateEmailModule/index.jsx | 1 + .../src/modules/ErpPanelModule/DataTable.jsx | 21 ++-- .../src/modules/ErpPanelModule/ReadItem.jsx | 6 +- frontend/src/modules/ErpPanelModule/index.jsx | 11 +- frontend/src/pages/AdvancedSettings/index.jsx | 26 ++--- frontend/src/pages/Email/index.jsx | 6 +- frontend/src/pages/Invoice/index.jsx | 4 +- frontend/src/pages/Quote/index.jsx | 4 +- 12 files changed, 112 insertions(+), 120 deletions(-) delete mode 100644 frontend/src/modules/EmailModule/EmailDataTableModule/components/DataTableDropMenu.jsx diff --git a/frontend/src/modules/DashboardModule/components/RecentTable/index.jsx b/frontend/src/modules/DashboardModule/components/RecentTable/index.jsx index 8b7120ec9..d1b82c06a 100644 --- a/frontend/src/modules/DashboardModule/components/RecentTable/index.jsx +++ b/frontend/src/modules/DashboardModule/components/RecentTable/index.jsx @@ -4,55 +4,83 @@ import { Descriptions, Dropdown, Menu, Table } from 'antd'; import { request } from '@/request'; import useFetch from '@/hooks/useFetch'; -import { - EllipsisOutlined, - EyeOutlined, - EditOutlined, - DeleteOutlined, - FilePdfOutlined, -} from '@ant-design/icons'; +import { EllipsisOutlined, EyeOutlined, EditOutlined, FilePdfOutlined } from '@ant-design/icons'; import { useDispatch, useSelector } from 'react-redux'; +import { erp } from '@/redux/erp/actions'; import { selectCurrentLang } from '@/redux/lang/selectors'; import { useHistory } from 'react-router-dom'; import { DOWNLOAD_BASE_URL } from '@/config/serverApiConfig'; import useResponsiveTable from '@/hooks/useResponsiveTable'; -function DropDownRowMenu({ row, entity }) { +export default function RecentTable({ ...props }) { + let { entity, dataTableColumns } = props; + + const items = [ + { + label: 'Show', + key: 'read', + icon: , + }, + { + label: 'Edit', + key: 'edit', + icon: , + }, + { + label: 'Download', + key: 'download', + icon: , + }, + ]; + const history = useHistory(); - const Show = () => { - history.push(`/${entity}/read/${row._id}`); - }; - function Edit() { - history.push(`/${entity}/update/${row._id}`); - } - function Download() { - window.open(`${DOWNLOAD_BASE_URL}${entity}/${entity}-${row._id}.pdf`, '_blank'); - } + const dispatch = useDispatch(); - return ( - - } onClick={Show}> - Show - - } onClick={Edit}> - Edit - - }> - Download - - - ); -} + const handleRead = (record) => { + dispatch(erp.currentItem({ data: record })); + history.push(`/${entity}/read/${record._id}`); + }; + const handleEdit = (record) => { + dispatch(erp.currentAction({ actionType: 'update', data: record })); + history.push(`/${entity}/update/${record._id}`); + }; + const handleDownload = (record) => { + window.open(`${DOWNLOAD_BASE_URL}${entity}/${entity}-${record._id}.pdf`, '_blank'); + }; -export default function RecentTable({ ...props }) { - let { entity, dataTableColumns } = props; dataTableColumns = [ ...dataTableColumns, { title: '', - render: (row) => ( - - + key: 'action', + render: (_, record) => ( + { + switch (key) { + case 'read': + handleRead(record); + break; + case 'edit': + handleEdit(record); + break; + case 'download': + handleDownload(record); + break; + + default: + break; + } + // else if (key === '2')handleCloseTask + }, + }} + trigger={['click']} + > + e.preventDefault()} + /> ), }, diff --git a/frontend/src/modules/EmailModule/EmailDataTableModule/components/DataTableDropMenu.jsx b/frontend/src/modules/EmailModule/EmailDataTableModule/components/DataTableDropMenu.jsx deleted file mode 100644 index c442d5a50..000000000 --- a/frontend/src/modules/EmailModule/EmailDataTableModule/components/DataTableDropMenu.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Menu } from 'antd'; - -import { - EyeOutlined, - EditOutlined, - DeleteOutlined, - FilePdfOutlined, - CreditCardOutlined, -} from '@ant-design/icons'; -import { useSelector, useDispatch } from 'react-redux'; -import { selectCurrentLang } from '@/redux/lang/selectors'; -import { erp } from '@/redux/erp/actions'; -import { selectItemById } from '@/redux/erp/selectors'; -import { useErpContext } from '@/context/erp'; - -import { DOWNLOAD_BASE_URL } from '@/config/serverApiConfig'; -import uniqueId from '@/utils/uinqueId'; -import { useHistory } from 'react-router-dom'; - -export default function DataTableDropMenu({ row, entity }) { - const dispatch = useDispatch(); - const history = useHistory(); - const { erpContextAction } = useErpContext(); - const { recordPanel, modal } = erpContextAction; - const item = useSelector(selectItemById(row._id)); - function Read() { - dispatch(erp.currentItem({ data: item })); - // readPanel.open(); - history.push(`/email/read/${row._id}`); - } - - function Edit() { - dispatch(erp.currentAction({ actionType: 'update', data: item })); - // updatePanel.open(); - history.push(`/email/update/${row._id}`); - } - return ( - - } onClick={Read}> - Show - - } onClick={Edit}> - Edit - - - ); -} diff --git a/frontend/src/modules/EmailModule/EmailDataTableModule/index.jsx b/frontend/src/modules/EmailModule/EmailDataTableModule/index.jsx index b2080df35..24eaf8600 100644 --- a/frontend/src/modules/EmailModule/EmailDataTableModule/index.jsx +++ b/frontend/src/modules/EmailModule/EmailDataTableModule/index.jsx @@ -5,7 +5,7 @@ import DataTableDropMenu from './components/DataTableDropMenu'; export default function EmailDataTableModule({ config }) { return ( - + ); } diff --git a/frontend/src/modules/EmailModule/UpdateEmailModule/componenets/EmailForm.jsx b/frontend/src/modules/EmailModule/UpdateEmailModule/componenets/EmailForm.jsx index 9dcdd40de..0e8252ed0 100644 --- a/frontend/src/modules/EmailModule/UpdateEmailModule/componenets/EmailForm.jsx +++ b/frontend/src/modules/EmailModule/UpdateEmailModule/componenets/EmailForm.jsx @@ -27,7 +27,7 @@ export default function EmailForm({ current = null }) { }; return ( - <> + {displayLabels(current?.emailVariables)} @@ -45,6 +45,6 @@ export default function EmailForm({ current = null }) { - + ); } diff --git a/frontend/src/modules/EmailModule/UpdateEmailModule/index.jsx b/frontend/src/modules/EmailModule/UpdateEmailModule/index.jsx index fe2f25449..a11b5a793 100644 --- a/frontend/src/modules/EmailModule/UpdateEmailModule/index.jsx +++ b/frontend/src/modules/EmailModule/UpdateEmailModule/index.jsx @@ -53,6 +53,7 @@ export default function UpdateEmailModule({ config }) { onClick={() => { history.push(`/${config.entity.toLowerCase()}`); }} + key="emailform404" > Back to Quote Page diff --git a/frontend/src/modules/ErpPanelModule/DataTable.jsx b/frontend/src/modules/ErpPanelModule/DataTable.jsx index bc737ace0..e5ae24307 100644 --- a/frontend/src/modules/ErpPanelModule/DataTable.jsx +++ b/frontend/src/modules/ErpPanelModule/DataTable.jsx @@ -22,20 +22,21 @@ import useResponsiveTable from '@/hooks/useResponsiveTable'; import { DOWNLOAD_BASE_URL } from '@/config/serverApiConfig'; -function AddNewItem({ config }) { +function AddNewItem({ config, hasCreate = true }) { const history = useHistory(); const { ADD_NEW_ENTITY, entity } = config; - const { erpContextAction } = useErpContext(); - const { createPanel } = erpContextAction; - const handelClick = () => { + + const handleClick = () => { history.push(`/${entity.toLowerCase()}/create`); }; - return ( - - ); + if (hasCreate) + return ( + + ); + else return null; } export default function DataTable({ config, extra = [] }) { @@ -178,7 +179,7 @@ export default function DataTable({ config, extra = [] }) { , - create ? : <>, + , ]} style={{ padding: '20px 0px', diff --git a/frontend/src/modules/ErpPanelModule/ReadItem.jsx b/frontend/src/modules/ErpPanelModule/ReadItem.jsx index b223b444e..85510a3c8 100644 --- a/frontend/src/modules/ErpPanelModule/ReadItem.jsx +++ b/frontend/src/modules/ErpPanelModule/ReadItem.jsx @@ -96,7 +96,6 @@ export default function ReadItem({ config, selectedItem }) { const [currentErp, setCurrentErp] = useState(selectedItem ?? resetErp); useEffect(() => { - const controller = new AbortController(); if (currentResult) { const { items, invoice, ...others } = currentResult; @@ -114,7 +113,10 @@ export default function ReadItem({ config, selectedItem }) { setCurrentErp({ ...invoice.items, ...others, ...invoice }); } } - return () => controller.abort(); + return () => { + setItemsList([]); + setCurrentErp(resetErp); + }; }, [currentResult]); return ( diff --git a/frontend/src/modules/ErpPanelModule/index.jsx b/frontend/src/modules/ErpPanelModule/index.jsx index b9fcd2839..db71e3a7f 100644 --- a/frontend/src/modules/ErpPanelModule/index.jsx +++ b/frontend/src/modules/ErpPanelModule/index.jsx @@ -13,8 +13,17 @@ export default function ErpPanel({ config, extra }) { const dispatch = useDispatch(); const { state } = useErpContext(); const { deleteModal } = state; - useLayoutEffect(() => { + + const dispatcher = () => { dispatch(erp.resetState()); + }; + + useLayoutEffect(() => { + const controller = new AbortController(); + dispatcher(); + return () => { + controller.abort(); + }; }, []); return ( diff --git a/frontend/src/pages/AdvancedSettings/index.jsx b/frontend/src/pages/AdvancedSettings/index.jsx index 4854ed73c..6f87af41f 100644 --- a/frontend/src/pages/AdvancedSettings/index.jsx +++ b/frontend/src/pages/AdvancedSettings/index.jsx @@ -52,32 +52,34 @@ export default function AdvancedSettings() { title: 'enabled', dataIndex: 'enabled', key: 'enabled', - render: (text, row) => { + onCell: (record, rowIndex) => { return { props: { style: { width: '60px', }, }, - children: ( - } - unCheckedChildren={} - /> - ), }; }, + render: (_, record) => { + return ( + } + unCheckedChildren={} + /> + ); + }, }, ]; const lang = useSelector(selectCurrentLang); const Labels = { - PANEL_TITLE: lang.setting, - DATATABLE_TITLE: lang.setting_list, - ADD_NEW_ENTITY: lang.add_new_setting, + PANEL_TITLE: lang.settings, + DATATABLE_TITLE: lang.settings_list, + ADD_NEW_ENTITY: lang.add_new_settings, ENTITY_NAME: lang.setting, CREATE_ENTITY: lang.save, UPDATE_ENTITY: lang.update, diff --git a/frontend/src/pages/Email/index.jsx b/frontend/src/pages/Email/index.jsx index d5a0f3ba2..43e044660 100644 --- a/frontend/src/pages/Email/index.jsx +++ b/frontend/src/pages/Email/index.jsx @@ -33,16 +33,12 @@ export default function AdvancedSettings() { { title: 'Template Name', dataIndex: 'emailName', + key: 'emailName', }, { title: 'Subject', dataIndex: 'emailSubject', key: 'emailSubject', - render: (text, row) => { - return { - children: {text}, - }; - }, }, ]; diff --git a/frontend/src/pages/Invoice/index.jsx b/frontend/src/pages/Invoice/index.jsx index 9efb3ec9e..d74fae6ce 100644 --- a/frontend/src/pages/Invoice/index.jsx +++ b/frontend/src/pages/Invoice/index.jsx @@ -41,12 +41,12 @@ export default function Invoice() { { title: 'Total', dataIndex: 'total', - render: (total) => moneyRowFormatter({ amount: total }), + onCell: (total) => moneyRowFormatter({ amount: total }), }, { title: 'Balance', dataIndex: 'credit', - render: (credit) => moneyRowFormatter({ amount: credit }), + onCell: (credit) => moneyRowFormatter({ amount: credit }), }, { title: 'Status', diff --git a/frontend/src/pages/Quote/index.jsx b/frontend/src/pages/Quote/index.jsx index dea600bae..4c0628ba0 100644 --- a/frontend/src/pages/Quote/index.jsx +++ b/frontend/src/pages/Quote/index.jsx @@ -41,12 +41,12 @@ export default function Quote() { { title: 'SubTotal', dataIndex: 'subTotal', - render: (amount) => moneyRowFormatter({ amount }), + onCell: (subTotal) => moneyRowFormatter({ amount: subTotal }), }, { title: 'Total', dataIndex: 'total', - render: (amount) => moneyRowFormatter({ amount }), + onCell: (total) => moneyRowFormatter({ amount: total }), }, {