diff --git a/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx b/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx
index 93d3e54..b5ae825 100644
--- a/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx
+++ b/src/components/Dashboard/Finance/Invoices/InvoiceInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -19,6 +19,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -31,9 +32,6 @@ import {
} from '../../../../database/ObjectModels.js'
import OrderItemIcon from '../../../Icons/OrderItemIcon.jsx'
import ShipmentIcon from '../../../Icons/ShipmentIcon.jsx'
-import PostInvoice from './PostInvoice.jsx'
-import AcknowledgeInvoice from './AcknowledgeInvoice.jsx'
-import NewPayment from '../Payments/NewPayment.jsx'
const log = loglevel.getLogger('InvoiceInfo')
log.setLevel(config.logLevel)
@@ -42,6 +40,15 @@ const InvoiceInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const invoiceId = new URLSearchParams(location.search).get('invoiceId')
const [collapseState, updateCollapseState] = useCollapseState('InvoiceInfo', {
info: true,
@@ -60,9 +67,6 @@ const InvoiceInfo = () => {
loading: false,
objectData: {}
})
- const [postInvoiceOpen, setPostInvoiceOpen] = useState(false)
- const [acknowledgeInvoiceOpen, setAcknowledgeInvoiceOpen] = useState(false)
- const [newPaymentOpen, setNewPaymentOpen] = useState(false)
const actions = {
edit: () => {
@@ -81,18 +85,6 @@ const InvoiceInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- post: () => {
- setPostInvoiceOpen(true)
- return true
- },
- acknowledge: () => {
- setAcknowledgeInvoiceOpen(true)
- return true
- },
- newPayment: () => {
- setNewPaymentOpen(true)
- return true
- }
}
const editDisabled =
@@ -101,7 +93,6 @@ const InvoiceInfo = () => {
?.disabled(objectFormState.objectData) ?? false
return (
- <>
{
type='invoice'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -306,65 +298,6 @@ const InvoiceInfo = () => {
- {
- setPostInvoiceOpen(false)
- }}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPostInvoiceOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setAcknowledgeInvoiceOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setAcknowledgeInvoiceOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setNewPaymentOpen(false)
- }}
- destroyOnHidden={true}
- >
- {
- setNewPaymentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- reset={newPaymentOpen}
- defaultValues={{
- invoice: { ...objectFormState.objectData },
- amount: objectFormState.objectData?.grandTotalAmount
- }}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx b/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx
index 0aee1fc..2532264 100644
--- a/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx
+++ b/src/components/Dashboard/Finance/Payments/PaymentInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,6 +17,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -24,10 +25,6 @@ import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import { getModelByName } from '../../../../database/ObjectModels.js'
-import PostPayment from './PostPayment.jsx'
-import AuthorisePayment from './AuthorisePayment.jsx'
-import DeclinePayment from './DeclinePayment.jsx'
-import CancelPayment from './CancelPayment.jsx'
const log = loglevel.getLogger('PaymentInfo')
log.setLevel(config.logLevel)
@@ -36,6 +33,15 @@ const PaymentInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const paymentId = new URLSearchParams(location.search).get('paymentId')
const [collapseState, updateCollapseState] = useCollapseState('PaymentInfo', {
info: true,
@@ -51,10 +57,6 @@ const PaymentInfo = () => {
loading: false,
objectData: {}
})
- const [postPaymentOpen, setPostPaymentOpen] = useState(false)
- const [authorisePaymentOpen, setAuthorisePaymentOpen] = useState(false)
- const [declinePaymentOpen, setDeclinePaymentOpen] = useState(false)
- const [cancelPaymentOpen, setCancelPaymentOpen] = useState(false)
const actions = {
edit: () => {
@@ -73,22 +75,6 @@ const PaymentInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- post: () => {
- setPostPaymentOpen(true)
- return true
- },
- authorise: () => {
- setAuthorisePaymentOpen(true)
- return true
- },
- decline: () => {
- setDeclinePaymentOpen(true)
- return true
- },
- cancel: () => {
- setCancelPaymentOpen(true)
- return true
- }
}
const editDisabled =
@@ -97,7 +83,6 @@ const PaymentInfo = () => {
?.disabled(objectFormState.objectData) ?? false
return (
- <>
{
type='payment'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -244,79 +230,6 @@ const PaymentInfo = () => {
- {
- setPostPaymentOpen(false)
- }}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPostPaymentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setAuthorisePaymentOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setAuthorisePaymentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setDeclinePaymentOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setDeclinePaymentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setCancelPaymentOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setCancelPaymentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx b/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx
index b2619f2..b1c19c6 100644
--- a/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx
+++ b/src/components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx
@@ -155,6 +155,7 @@ const TaxRecordInfo = () => {
type='taxRecord'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx b/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx
index e980974..ce5650f 100644
--- a/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx
+++ b/src/components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx
@@ -153,6 +153,7 @@ const FilamentStockInfo = () => {
type='filamentStock'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/FilamentStocks/LoadFilamentStock.jsx b/src/components/Dashboard/Inventory/FilamentStocks/LoadFilamentStock.jsx
index bd8d0e0..6d430b6 100644
--- a/src/components/Dashboard/Inventory/FilamentStocks/LoadFilamentStock.jsx
+++ b/src/components/Dashboard/Inventory/FilamentStocks/LoadFilamentStock.jsx
@@ -215,6 +215,7 @@ const LoadFilamentStock = ({
showBed={false}
showMoreInfo={false}
id={loadFilamentStockFormValues.printer._id}
+ offline={!connected}
/>
) : null}
diff --git a/src/components/Dashboard/Inventory/FilamentStocks/UnloadFilamentStock.jsx b/src/components/Dashboard/Inventory/FilamentStocks/UnloadFilamentStock.jsx
index ea49d7e..66a87f2 100644
--- a/src/components/Dashboard/Inventory/FilamentStocks/UnloadFilamentStock.jsx
+++ b/src/components/Dashboard/Inventory/FilamentStocks/UnloadFilamentStock.jsx
@@ -175,6 +175,7 @@ const UnloadFilamentStock = ({ onOk, reset, printer = null }) => {
showBed={false}
showMoreInfo={false}
id={unloadFilamentStockFormValues.printer._id}
+ offline={!connected}
/>
) : null}
diff --git a/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx b/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx
index 8bea305..d548aa1 100644
--- a/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx
+++ b/src/components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx
@@ -148,6 +148,7 @@ const OrderItemInfo = () => {
type='orderItem'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx b/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx
index e6ee1c7..810502a 100644
--- a/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx
+++ b/src/components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx
@@ -164,6 +164,7 @@ const PartStockInfo = () => {
type='partStock'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx b/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx
index e6c30fa..d031682 100644
--- a/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx
+++ b/src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -14,7 +14,6 @@ import {
getModelProperty,
getModelByName
} from '../../../../database/ObjectModels.js'
-import PostProductStock from './PostProductStock.jsx'
import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx'
import NoteIcon from '../../../Icons/NoteIcon.jsx'
import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx'
@@ -26,6 +25,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -41,10 +41,18 @@ const ProductStockInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const productStockId = new URLSearchParams(location.search).get(
'productStockId'
)
- const [postProductStockOpen, setPostProductStockOpen] = useState(false)
const [collapseState, updateCollapseState] = useCollapseState(
'ProductStockInfo',
{
@@ -83,10 +91,6 @@ const ProductStockInfo = () => {
objectFormRef?.current.handleDelete?.()
return true
},
- post: () => {
- setPostProductStockOpen(true)
- return true
- }
}
const editDisabled =
@@ -95,7 +99,6 @@ const ProductStockInfo = () => {
?.disabled(objectFormState.objectData) ?? false
return (
- <>
{
type='productStock'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -302,25 +306,6 @@ const ProductStockInfo = () => {
- {
- setPostProductStockOpen(false)
- }}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPostProductStockOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx b/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx
index aca6954..e82da87 100644
--- a/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx
+++ b/src/components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,6 +17,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -24,16 +25,10 @@ import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import OrderItemsIcon from '../../../Icons/OrderItemIcon.jsx'
-import NewOrderItem from '../OrderItems/NewOrderItem.jsx'
-import NewShipment from '../Shipments/NewShipment.jsx'
-import PostPurchaseOrder from './PostPurchaseOrder.jsx'
-import AcknowledgePurchaseOrder from './AcknowledgePurchaseOrder.jsx'
-import CancelPurchaseOrder from './CancelPurchaseOrder.jsx'
import ShipmentIcon from '../../../Icons/ShipmentIcon.jsx'
import InvoiceIcon from '../../../Icons/InvoiceIcon.jsx'
import StockEventIcon from '../../../Icons/StockEventIcon.jsx'
import { getModelByName } from '../../../../database/ObjectModels.js'
-import NewInvoice from '../../Finance/Invoices/NewInvoice.jsx'
const log = loglevel.getLogger('PurchaseOrderInfo')
log.setLevel(config.logLevel)
@@ -44,13 +39,15 @@ const PurchaseOrderInfo = () => {
const orderItemsTableRef = useRef(null)
const shipmentsTableRef = useRef(null)
const actionHandlerRef = useRef(null)
- const [newOrderItemOpen, setNewOrderItemOpen] = useState(false)
- const [newShipmentOpen, setNewShipmentOpen] = useState(false)
- const [postPurchaseOrderOpen, setPostPurchaseOrderOpen] = useState(false)
- const [acknowledgePurchaseOrderOpen, setAcknowledgePurchaseOrderOpen] =
- useState(false)
- const [cancelPurchaseOrderOpen, setCancelPurchaseOrderOpen] = useState(false)
- const [newInvoiceOpen, setNewInvoiceOpen] = useState(false)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const purchaseOrderId = new URLSearchParams(location.search).get(
'purchaseOrderId'
)
@@ -96,30 +93,6 @@ const PurchaseOrderInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- newOrderItem: () => {
- setNewOrderItemOpen(true)
- return true
- },
- newShipment: () => {
- setNewShipmentOpen(true)
- return true
- },
- newInvoice: () => {
- setNewInvoiceOpen(true)
- return true
- },
- post: () => {
- setPostPurchaseOrderOpen(true)
- return true
- },
- acknowledge: () => {
- setAcknowledgePurchaseOrderOpen(true)
- return true
- },
- cancel: () => {
- setCancelPurchaseOrderOpen(true)
- return true
- }
}
const editDisabled = getModelByName('purchaseOrder')
@@ -127,7 +100,6 @@ const PurchaseOrderInfo = () => {
.disabled(objectFormState.objectData)
return (
- <>
{
type='purchaseOrder'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -361,122 +334,6 @@ const PurchaseOrderInfo = () => {
- {
- setNewOrderItemOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewOrderItemOpen(false)
- }}
- reset={newOrderItemOpen}
- defaultValues={{
- order: { _id: purchaseOrderId },
- orderType: 'purchaseOrder',
- syncAmount: 'itemCost'
- }}
- />
-
- {
- setNewShipmentOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewShipmentOpen(false)
- }}
- reset={newShipmentOpen}
- defaultValues={{
- orderType: 'purchaseOrder',
- order: { _id: purchaseOrderId }
- }}
- />
-
- {
- setNewInvoiceOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewInvoiceOpen(false)
- }}
- reset={newInvoiceOpen}
- defaultValues={{
- orderType: 'purchaseOrder',
- order: { ...objectFormState.objectData }
- }}
- />
-
- {
- setPostPurchaseOrderOpen(false)
- }}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPostPurchaseOrderOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setAcknowledgePurchaseOrderOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setAcknowledgePurchaseOrderOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setCancelPurchaseOrderOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setCancelPurchaseOrderOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx b/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx
index 0e03635..915c3d7 100644
--- a/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx
+++ b/src/components/Dashboard/Inventory/Shipments/PurchaseOrderInfo.jsx
@@ -184,6 +184,7 @@ const PurchaseOrderInfo = () => {
type='purchaseOrder'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx b/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx
index 74f95d0..dfa13ac 100644
--- a/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx
+++ b/src/components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,6 +17,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -24,9 +25,6 @@ import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import OrderItemIcon from '../../../Icons/OrderItemIcon.jsx'
-import ShipShipment from './ShipShipment.jsx'
-import ReceiveShipment from './ReceiveShipment.jsx'
-import CancelShipment from './CancelShipment.jsx'
const log = loglevel.getLogger('ShipmentInfo')
log.setLevel(config.logLevel)
@@ -35,6 +33,15 @@ const ShipmentInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const shipmentId = new URLSearchParams(location.search).get('shipmentId')
const [collapseState, updateCollapseState] = useCollapseState(
'ShipmentInfo',
@@ -53,10 +60,6 @@ const ShipmentInfo = () => {
loading: false,
objectData: {}
})
-
- const [shipShipmentOpen, setShipShipmentOpen] = useState(false)
- const [receiveShipmentOpen, setReceiveShipmentOpen] = useState(false)
- const [cancelShipmentOpen, setCancelShipmentOpen] = useState(false)
const actions = {
edit: () => {
objectFormRef?.current?.startEditing?.()
@@ -74,22 +77,9 @@ const ShipmentInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- ship: () => {
- setShipShipmentOpen(true)
- return true
- },
- receive: () => {
- setReceiveShipmentOpen(true)
- return true
- },
- cancel: () => {
- setCancelShipmentOpen(true)
- return true
- }
}
return (
- <>
{
type='shipment'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -256,61 +247,6 @@ const ShipmentInfo = () => {
- {
- setShipShipmentOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setShipShipmentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setReceiveShipmentOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setReceiveShipmentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setCancelShipmentOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setCancelShipmentOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx b/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx
index 8d9faac..2f9044f 100644
--- a/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx
+++ b/src/components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx
@@ -158,6 +158,7 @@ const StockAuditInfo = () => {
type='stockAudit'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx b/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx
index f77dbb3..eb3121f 100644
--- a/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx
+++ b/src/components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx
@@ -159,6 +159,7 @@ const StockLocationInfo = () => {
type='stockLocation'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx b/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx
index 2a93b28..e973a8e 100644
--- a/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx
+++ b/src/components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import useCollapseState from '../../hooks/useCollapseState.jsx'
import NotesPanel from '../../common/NotesPanel.jsx'
@@ -12,7 +12,6 @@ import {
getModelProperty,
getModelByName
} from '../../../../database/ObjectModels.js'
-import PostStockTransfer from './PostStockTransfer.jsx'
import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx'
import NoteIcon from '../../../Icons/NoteIcon.jsx'
import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx'
@@ -22,6 +21,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -33,10 +33,18 @@ const StockTransferInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const stockTransferId = new URLSearchParams(location.search).get(
'stockTransferId'
)
- const [postOpen, setPostOpen] = useState(false)
const [collapseState, updateCollapseState] = useCollapseState(
'StockTransferInfo',
{
@@ -73,10 +81,6 @@ const StockTransferInfo = () => {
objectFormRef?.current.handleDelete?.()
return true
},
- post: () => {
- setPostOpen(true)
- return true
- }
}
const editDisabled =
@@ -85,7 +89,6 @@ const StockTransferInfo = () => {
?.disabled(objectFormState.objectData) ?? false
return (
- <>
{
type='stockTransfer'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -253,25 +257,6 @@ const StockTransferInfo = () => {
- {
- setPostOpen(false)
- }}
- width={520}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPostOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx b/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx
index 76de2e4..8440af8 100644
--- a/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx
+++ b/src/components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState, useContext } from 'react'
+import { useRef, useState, useEffect, useContext } from 'react'
import { useLocation } from 'react-router-dom'
-import { Flex, Modal, Space } from 'antd'
+import { Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import useCollapseState from '../../hooks/useCollapseState'
import InfoCollapse from '../../common/InfoCollapse'
@@ -13,13 +13,13 @@ import EditButtons from '../../common/EditButtons'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
-import RegenerateAppPasswordSecret from './RegenerateAppPasswordSecret.jsx'
import { getModelByName } from '../../../../database/ObjectModels.js'
import { AuthContext } from '../../context/AuthContext.jsx'
@@ -27,11 +27,19 @@ const AppPasswordInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const { userProfile } = useContext(AuthContext)
const appPasswordId = new URLSearchParams(location.search).get(
'appPasswordId'
)
- const [regenerateSecretOpen, setRegenerateSecretOpen] = useState(false)
const [collapseState, updateCollapseState] = useCollapseState(
'AppPasswordInfo',
{
@@ -49,10 +57,6 @@ const AppPasswordInfo = () => {
})
const actions = {
- regenerateSecret: () => {
- setRegenerateSecretOpen(true)
- return false
- },
edit: () => {
objectFormRef?.current?.startEditing?.()
return false
@@ -72,7 +76,6 @@ const AppPasswordInfo = () => {
.disabled({ ...objectFormState.objectData, _user: userProfile })
return (
- <>
{
type='appPassword'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -198,20 +202,6 @@ const AppPasswordInfo = () => {
-
- {
- actionHandlerRef.current?.clearAction?.()
- setRegenerateSecretOpen(false)
- }}
- footer={null}
- >
-
-
- >
)
}
diff --git a/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx b/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx
index 22cba55..8a5fdee 100644
--- a/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx
+++ b/src/components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx
@@ -157,6 +157,7 @@ const CourierServiceInfo = () => {
type='courierService'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/Couriers/CourierInfo.jsx b/src/components/Dashboard/Management/Couriers/CourierInfo.jsx
index bb6a76e..cc72d44 100644
--- a/src/components/Dashboard/Management/Couriers/CourierInfo.jsx
+++ b/src/components/Dashboard/Management/Couriers/CourierInfo.jsx
@@ -153,6 +153,7 @@ const CourierInfo = () => {
type='courier'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx b/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx
index e8ad5d7..3794874 100644
--- a/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx
+++ b/src/components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx
@@ -154,6 +154,7 @@ const DocumentJobInfo = () => {
type='documentJob'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx b/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx
index 65277d5..d5d5b99 100644
--- a/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx
+++ b/src/components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx
@@ -163,6 +163,7 @@ const DocumentPrinterInfo = () => {
type='documentPrinter'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx b/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx
index 6dc0730..ecd491a 100644
--- a/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx
+++ b/src/components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx
@@ -154,6 +154,7 @@ const DocumentSizeInfo = () => {
type='documentSize'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx b/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx
index 23dca4c..2306403 100644
--- a/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx
+++ b/src/components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx
@@ -160,6 +160,7 @@ const DocumentTemplateInfo = () => {
type='documentTemplate'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx b/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx
index 51fea6b..bfb95f6 100644
--- a/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx
+++ b/src/components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx
@@ -152,6 +152,7 @@ const FilamentSkuInfo = () => {
type='filamentSku'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx b/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx
index 3b13260..1c51ef1 100644
--- a/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx
+++ b/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx
@@ -15,6 +15,7 @@ const NewFilamentSku = ({ onOk, reset, defaultValues }) => {
}}
>
{({ handleSubmit, submitLoading, objectData, formValid }) => {
+ console.log('objectData', objectData)
const steps = [
{
title: 'Required',
diff --git a/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx b/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx
index 28e33b7..dccc904 100644
--- a/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx
+++ b/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config'
@@ -17,6 +17,7 @@ import EditButtons from '../../common/EditButtons'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -25,7 +26,6 @@ import FilamentSkuIcon from '../../../Icons/FilamentSkuIcon.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
-import NewFilamentSku from '../FilamentSkus/NewFilamentSku'
const log = loglevel.getLogger('FilamentInfo')
log.setLevel(config.logLevel)
@@ -35,8 +35,15 @@ const FilamentInfo = () => {
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
const filamentId = new URLSearchParams(location.search).get('filamentId')
- const [newFilamentSkuOpen, setNewFilamentSkuOpen] = useState(false)
const filamentSkusTableRef = useRef()
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ filamentSkusTableRef.current?.reload?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const [collapseState, updateCollapseState] = useCollapseState(
'FilamentInfo',
{
@@ -58,10 +65,6 @@ const FilamentInfo = () => {
})
const actions = {
- newFilamentSku: () => {
- setNewFilamentSkuOpen(true)
- return true
- },
edit: () => {
objectFormRef?.current?.startEditing?.()
return false
@@ -81,215 +84,192 @@ const FilamentInfo = () => {
}
return (
- <>
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
-
- {
- actionHandlerRef.current.callAction('finishEdit')
- }}
- cancelEditing={() => {
- actionHandlerRef.current.callAction('cancelEdit')
- }}
- startEditing={() => {
- actionHandlerRef.current.callAction('edit')
- }}
- editLoading={objectFormState.editLoading}
- formValid={objectFormState.formValid}
- disabled={
- objectFormState.beingEditedByOther || objectFormState.loading
- }
- loading={objectFormState.editLoading}
- />
-
-
-
-
-
-
-
- }
- active={collapseState.info}
- onToggle={(expanded) => updateCollapseState('info', expanded)}
- collapseKey='info'
- >
- {
- setEditFormState((prev) => ({ ...prev, ...state }))
- }}
- >
- {({ loading, isEditing, objectData }) => {
- return (
- }
- isEditing={isEditing}
- type='filament'
- objectData={objectData}
- />
- )
- }}
-
-
-
-
- }
- active={collapseState.filamentSkus}
- onToggle={(expanded) =>
- updateCollapseState('filamentSkus', expanded)
- }
- collapseKey='filamentSkus'
- >
- {objectFormState.loading ? (
-
- ) : (
-
- )}
-
-
- }
- active={collapseState.stocks}
- onToggle={(expanded) => updateCollapseState('stocks', expanded)}
- collapseKey='stocks'
- >
- {objectFormState.loading ? (
-
- ) : (
-
- )}
-
-
- setNewFilamentSkuOpen(false)}
- destroyOnHidden={true}
- >
- {
- setNewFilamentSkuOpen(false)
- filamentSkusTableRef.current?.reload?.()
- }}
- reset={newFilamentSkuOpen}
- defaultValues={{
- filament: objectFormState?.objectData || undefined
- }}
- />
-
-
- }
- active={collapseState.notes}
- onToggle={(expanded) => updateCollapseState('notes', expanded)}
- collapseKey='notes'
- >
-
-
-
-
-
- }
- active={collapseState.auditLogs}
- onToggle={(expanded) =>
- updateCollapseState('auditLogs', expanded)
- }
- collapseKey='auditLogs'
- >
- {objectFormState.loading ? (
-
- ) : (
-
- )}
-
-
-
+
+
+
+ {
+ actionHandlerRef.current.callAction('finishEdit')
+ }}
+ cancelEditing={() => {
+ actionHandlerRef.current.callAction('cancelEdit')
+ }}
+ startEditing={() => {
+ actionHandlerRef.current.callAction('edit')
+ }}
+ editLoading={objectFormState.editLoading}
+ formValid={objectFormState.formValid}
+ disabled={
+ objectFormState.beingEditedByOther || objectFormState.loading
+ }
+ loading={objectFormState.editLoading}
+ />
+
+
- >
+
+
+
+
+ }
+ active={collapseState.info}
+ onToggle={(expanded) => updateCollapseState('info', expanded)}
+ collapseKey='info'
+ >
+ {
+ setEditFormState((prev) => ({ ...prev, ...state }))
+ }}
+ >
+ {({ loading, isEditing, objectData }) => {
+ return (
+ }
+ isEditing={isEditing}
+ type='filament'
+ objectData={objectData}
+ />
+ )
+ }}
+
+
+
+
+ }
+ active={collapseState.filamentSkus}
+ onToggle={(expanded) =>
+ updateCollapseState('filamentSkus', expanded)
+ }
+ collapseKey='filamentSkus'
+ >
+ {objectFormState.loading ? (
+
+ ) : (
+
+ )}
+
+
+ }
+ active={collapseState.stocks}
+ onToggle={(expanded) => updateCollapseState('stocks', expanded)}
+ collapseKey='stocks'
+ >
+ {objectFormState.loading ? (
+
+ ) : (
+
+ )}
+
+
+ }
+ active={collapseState.notes}
+ onToggle={(expanded) => updateCollapseState('notes', expanded)}
+ collapseKey='notes'
+ >
+
+
+
+
+
+ }
+ active={collapseState.auditLogs}
+ onToggle={(expanded) => updateCollapseState('auditLogs', expanded)}
+ collapseKey='auditLogs'
+ >
+ {objectFormState.loading ? (
+
+ ) : (
+
+ )}
+
+
+
+
)
}
diff --git a/src/components/Dashboard/Management/Files/FileInfo.jsx b/src/components/Dashboard/Management/Files/FileInfo.jsx
index fc89096..487eaae 100644
--- a/src/components/Dashboard/Management/Files/FileInfo.jsx
+++ b/src/components/Dashboard/Management/Files/FileInfo.jsx
@@ -168,6 +168,7 @@ const FileInfo = () => {
type='file'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/Hosts/HostInfo.jsx b/src/components/Dashboard/Management/Hosts/HostInfo.jsx
index 6069cd9..cade824 100644
--- a/src/components/Dashboard/Management/Hosts/HostInfo.jsx
+++ b/src/components/Dashboard/Management/Hosts/HostInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,10 +17,10 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
-import HostOTP from './HostOtp.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import PrinterIcon from '../../../Icons/PrinterIcon.jsx'
@@ -34,6 +34,15 @@ const HostInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const hostId = new URLSearchParams(location.search).get('hostId')
const [collapseState, updateCollapseState] = useCollapseState('HostInfo', {
info: true,
@@ -42,8 +51,6 @@ const HostInfo = () => {
notes: true,
auditLogs: false
})
-
- const [hostOTPOpen, setHostOTPOpen] = useState(false)
const [objectFormState, setEditFormState] = useState({
isEditing: false,
editLoading: false,
@@ -54,10 +61,6 @@ const HostInfo = () => {
})
const actions = {
- hostOTP: () => {
- setHostOTPOpen(true)
- return false
- },
edit: () => {
objectFormRef?.current.startEditing()
return false
@@ -77,7 +80,6 @@ const HostInfo = () => {
}
return (
- <>
{
type='host'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -267,20 +270,6 @@ const HostInfo = () => {
-
- {
- actionHandlerRef.current.clearAction()
- setHostOTPOpen(false)
- }}
- footer={false}
- >
-
-
- >
)
}
diff --git a/src/components/Dashboard/Management/Materials/MaterialInfo.jsx b/src/components/Dashboard/Management/Materials/MaterialInfo.jsx
index 005a0a6..5617b97 100644
--- a/src/components/Dashboard/Management/Materials/MaterialInfo.jsx
+++ b/src/components/Dashboard/Management/Materials/MaterialInfo.jsx
@@ -155,6 +155,7 @@ const MaterialInfo = () => {
type='material'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx b/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx
index 01c0ffa..584b9af 100644
--- a/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx
+++ b/src/components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx
@@ -143,6 +143,7 @@ const NoteTypeInfo = () => {
type='noteType'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/Notes/NoteInfo.jsx b/src/components/Dashboard/Management/Notes/NoteInfo.jsx
index 10c8bd7..a42e3f8 100644
--- a/src/components/Dashboard/Management/Notes/NoteInfo.jsx
+++ b/src/components/Dashboard/Management/Notes/NoteInfo.jsx
@@ -151,6 +151,7 @@ const NoteInfo = () => {
type='note'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx b/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx
index 5d006c9..40a4308 100644
--- a/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx
+++ b/src/components/Dashboard/Management/PartSkus/PartSkuInfo.jsx
@@ -147,6 +147,7 @@ const PartSkuInfo = () => {
type='partSku'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/Parts/PartInfo.jsx b/src/components/Dashboard/Management/Parts/PartInfo.jsx
index f1d2000..6526790 100644
--- a/src/components/Dashboard/Management/Parts/PartInfo.jsx
+++ b/src/components/Dashboard/Management/Parts/PartInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import useCollapseState from '../../hooks/useCollapseState'
import NotesPanel from '../../common/NotesPanel'
import InfoCollapse from '../../common/InfoCollapse'
@@ -14,6 +14,7 @@ import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx'
import NoteIcon from '../../../Icons/NoteIcon.jsx'
import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -21,15 +22,22 @@ import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import PartSkuIcon from '../../../Icons/PartSkuIcon.jsx'
-import NewPartSku from '../PartSkus/NewPartSku'
const PartInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
const partId = new URLSearchParams(location.search).get('partId')
- const [newPartSkuOpen, setNewPartSkuOpen] = useState(false)
const partSkusTableRef = useRef()
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ partSkusTableRef.current?.reload?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const [collapseState, updateCollapseState] = useCollapseState('PartInfo', {
info: true,
partSkus: true,
@@ -46,10 +54,6 @@ const PartInfo = () => {
})
const actions = {
- newPartSku: () => {
- setNewPartSkuOpen(true)
- return true
- },
edit: () => {
objectFormRef?.current?.startEditing?.()
return false
@@ -65,7 +69,6 @@ const PartInfo = () => {
}
return (
- <>
{
type='part'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -190,25 +194,6 @@ const PartInfo = () => {
)}
- setNewPartSkuOpen(false)}
- destroyOnHidden={true}
- >
- {
- setNewPartSkuOpen(false)
- partSkusTableRef.current?.reload?.()
- }}
- reset={newPartSkuOpen}
- defaultValues={{
- part: objectFormState?.objectData || undefined
- }}
- />
-
}
@@ -242,7 +227,6 @@ const PartInfo = () => {
- >
)
}
diff --git a/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx b/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx
index 2ca72ae..7b9c272 100644
--- a/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx
+++ b/src/components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx
@@ -152,6 +152,7 @@ const ProductCategoryInfo = () => {
type='productCategory'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx b/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx
index 8e9a050..443f39a 100644
--- a/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx
+++ b/src/components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx
@@ -148,6 +148,7 @@ const ProductSkuInfo = () => {
type='productSku'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/Products/ProductInfo.jsx b/src/components/Dashboard/Management/Products/ProductInfo.jsx
index 9ddb98f..b0d8fdb 100644
--- a/src/components/Dashboard/Management/Products/ProductInfo.jsx
+++ b/src/components/Dashboard/Management/Products/ProductInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import useCollapseState from '../../hooks/useCollapseState'
import NotesPanel from '../../common/NotesPanel'
import InfoCollapse from '../../common/InfoCollapse'
@@ -15,13 +15,13 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx'
import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import ProductSkuIcon from '../../../Icons/ProductSkuIcon.jsx'
-import NewProductSku from '../ProductSkus/NewProductSku'
const ProductInfo = () => {
const location = useLocation()
@@ -34,8 +34,16 @@ const ProductInfo = () => {
notes: true,
auditLogs: false
})
- const [newProductSkuOpen, setNewProductSkuOpen] = useState(false)
const productSkusTableRef = useRef()
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ productSkusTableRef.current?.reload?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const [objectFormState, setEditFormState] = useState({
isEditing: false,
editLoading: false,
@@ -46,10 +54,6 @@ const ProductInfo = () => {
})
const actions = {
- newProductSku: () => {
- setNewProductSkuOpen(true)
- return true
- },
edit: () => {
objectFormRef?.current?.startEditing?.()
return false
@@ -65,7 +69,6 @@ const ProductInfo = () => {
}
return (
- <>
{
type='product'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -193,26 +197,6 @@ const ProductInfo = () => {
- setNewProductSkuOpen(false)}
- destroyOnHidden={true}
- >
- {
- setNewProductSkuOpen(false)
- productSkusTableRef.current?.reload?.()
- }}
- reset={newProductSkuOpen}
- defaultValues={{
- product: objectFormState?.objectData || undefined
- }}
- />
-
-
}
@@ -246,7 +230,6 @@ const ProductInfo = () => {
- >
)
}
diff --git a/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx b/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx
index 68572ad..782ac7d 100644
--- a/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx
+++ b/src/components/Dashboard/Management/TaxRates/TaxRateInfo.jsx
@@ -152,6 +152,7 @@ const TaxRateInfo = () => {
type='taxRate'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Management/Users/UserInfo.jsx b/src/components/Dashboard/Management/Users/UserInfo.jsx
index 77d05ad..2df0543 100644
--- a/src/components/Dashboard/Management/Users/UserInfo.jsx
+++ b/src/components/Dashboard/Management/Users/UserInfo.jsx
@@ -1,6 +1,6 @@
import { useRef, useState } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import useCollapseState from '../../hooks/useCollapseState'
import NotesPanel from '../../common/NotesPanel'
@@ -22,7 +22,6 @@ import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
-import NewAppPassword from '../AppPasswords/NewAppPassword.jsx'
import ObjectProperty from '../../common/ObjectProperty.jsx'
import { getModelProperty } from '../../../../database/ObjectModels.js'
import { useMediaQuery } from 'react-responsive'
@@ -33,7 +32,6 @@ const UserInfo = () => {
const appPasswordsTableRef = useRef(null)
const actionHandlerRef = useRef(null)
const userId = new URLSearchParams(location.search).get('userId')
- const [newAppPasswordOpen, setNewAppPasswordOpen] = useState(false)
const [collapseState, updateCollapseState] = useCollapseState('UserInfo', {
info: true,
appPasswords: true,
@@ -51,10 +49,6 @@ const UserInfo = () => {
const isMobile = useMediaQuery({ maxWidth: 768 })
const actions = {
- newAppPassword: () => {
- setNewAppPasswordOpen(true)
- return false
- },
edit: () => {
objectFormRef?.current?.startEditing?.()
return false
@@ -70,205 +64,184 @@ const UserInfo = () => {
}
return (
- <>
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
-
- {
- actionHandlerRef.current.callAction('finishEdit')
- }}
- cancelEditing={() => {
- actionHandlerRef.current.callAction('cancelEdit')
- }}
- startEditing={() => {
- actionHandlerRef.current.callAction('edit')
- }}
- editLoading={objectFormState.editLoading}
- formValid={objectFormState.formValid}
- disabled={
- objectFormState.beingEditedByOther || objectFormState.loading
- }
- loading={objectFormState.editLoading}
- />
-
-
-
-
-
-
- }
- active={collapseState.info}
- onToggle={(expanded) => updateCollapseState('info', expanded)}
- collapseKey='info'
- >
- {
- setEditFormState((prev) => ({ ...prev, ...state }))
- }}
- >
- {({ loading, isEditing, objectData }) => (
-
-
-
-
-
-
- }
- isEditing={isEditing}
- type='user'
- objectData={objectData}
- visibleProperties={{
- profileImage: false
- }}
- />
-
- )}
-
-
-
- }
- active={collapseState.appPasswords}
- onToggle={(expanded) =>
- updateCollapseState('appPasswords', expanded)
- }
- collapseKey='appPasswords'
- >
- {!userId ? (
-
- ) : (
-
- )}
-
- }
- active={collapseState.notes}
- onToggle={(expanded) => updateCollapseState('notes', expanded)}
- collapseKey='notes'
- >
-
-
-
-
- }
- active={collapseState.auditLogs}
- onToggle={(expanded) =>
- updateCollapseState('auditLogs', expanded)
- }
- collapseKey='auditLogs'
- >
- {objectFormState.loading ? (
-
- ) : (
-
- )}
-
-
-
+
+
+
+ {
+ actionHandlerRef.current.callAction('finishEdit')
+ }}
+ cancelEditing={() => {
+ actionHandlerRef.current.callAction('cancelEdit')
+ }}
+ startEditing={() => {
+ actionHandlerRef.current.callAction('edit')
+ }}
+ editLoading={objectFormState.editLoading}
+ formValid={objectFormState.formValid}
+ disabled={
+ objectFormState.beingEditedByOther || objectFormState.loading
+ }
+ loading={objectFormState.editLoading}
+ />
+
+
-
- {
- actionHandlerRef.current?.clearAction?.()
- setNewAppPasswordOpen(false)
- }}
- footer={null}
- >
- {
- setNewAppPasswordOpen(false)
- appPasswordsTableRef.current?.reload?.()
- }}
- reset={newAppPasswordOpen}
- defaultValues={{ user: { ...objectFormState.objectData } }}
- />
-
- >
+
+
+
+ }
+ active={collapseState.info}
+ onToggle={(expanded) => updateCollapseState('info', expanded)}
+ collapseKey='info'
+ >
+ {
+ setEditFormState((prev) => ({ ...prev, ...state }))
+ }}
+ >
+ {({ loading, isEditing, objectData }) => (
+
+
+
+
+
+
+ }
+ isEditing={isEditing}
+ type='user'
+ objectData={objectData}
+ visibleProperties={{
+ profileImage: false
+ }}
+ />
+
+ )}
+
+
+
+ }
+ active={collapseState.appPasswords}
+ onToggle={(expanded) =>
+ updateCollapseState('appPasswords', expanded)
+ }
+ collapseKey='appPasswords'
+ >
+ {!userId ? (
+
+ ) : (
+
+ )}
+
+ }
+ active={collapseState.notes}
+ onToggle={(expanded) => updateCollapseState('notes', expanded)}
+ collapseKey='notes'
+ >
+
+
+
+
+ }
+ active={collapseState.auditLogs}
+ onToggle={(expanded) =>
+ updateCollapseState('auditLogs', expanded)
+ }
+ collapseKey='auditLogs'
+ >
+ {objectFormState.loading ? (
+
+ ) : (
+
+ )}
+
+
+
+
)
}
diff --git a/src/components/Dashboard/Management/Vendors/VendorInfo.jsx b/src/components/Dashboard/Management/Vendors/VendorInfo.jsx
index 53f943f..87c860c 100644
--- a/src/components/Dashboard/Management/Vendors/VendorInfo.jsx
+++ b/src/components/Dashboard/Management/Vendors/VendorInfo.jsx
@@ -152,6 +152,7 @@ const VendorInfo = () => {
type='vendor'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx b/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx
index 7201e6e..5cb64ed 100644
--- a/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx
+++ b/src/components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx
@@ -189,6 +189,7 @@ const FilamentProfileInfo = () => {
id={filamentProfileId}
type='filamentProfile'
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) =>
setObjectFormState((current) => ({ ...current, ...state }))
}
diff --git a/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx b/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx
index aeb6990..ef6c490 100644
--- a/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx
+++ b/src/components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx
@@ -155,6 +155,7 @@ const GCodeFileInfo = () => {
type='gcodeFile'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Production/Jobs/JobInfo.jsx b/src/components/Dashboard/Production/Jobs/JobInfo.jsx
index 663311c..37628af 100644
--- a/src/components/Dashboard/Production/Jobs/JobInfo.jsx
+++ b/src/components/Dashboard/Production/Jobs/JobInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,13 +17,13 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import JobIcon from '../../../Icons/JobIcon.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
-import DeployJob from './DeployJob.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import { getModelByName } from '../../../../database/ObjectModels.js'
@@ -34,9 +34,16 @@ const JobInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
- const jobId = new URLSearchParams(location.search).get('jobId')
- const [deployJobOpen, setDeployJobOpen] = useState(false)
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
+ const jobId = new URLSearchParams(location.search).get('jobId')
const [collapseState, updateCollapseState] = useCollapseState('JobInfo', {
info: true,
subJobs: true,
@@ -73,14 +80,9 @@ const JobInfo = () => {
objectFormRef?.current.handleUpdate()
return true
},
- deploy: () => {
- setDeployJobOpen(true)
- return false
- }
}
return (
- <>
{
type='job'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -239,25 +242,6 @@ const JobInfo = () => {
- {
- actionHandlerRef.current.clearAction()
- setDeployJobOpen(false)
- }}
- >
- {
- actionHandlerRef.current.clearAction()
- setDeployJobOpen(false)
- }}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx b/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx
index 8df893e..a3fc445 100644
--- a/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx
+++ b/src/components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx
@@ -162,6 +162,7 @@ const PrinterProfileInfo = () => {
id={printerProfileId}
type='printerProfile'
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) =>
setObjectFormState((current) => ({ ...current, ...state }))
}
diff --git a/src/components/Dashboard/Production/Printers/ControlPrinter.jsx b/src/components/Dashboard/Production/Printers/ControlPrinter.jsx
index f8991f9..98b1754 100644
--- a/src/components/Dashboard/Production/Printers/ControlPrinter.jsx
+++ b/src/components/Dashboard/Production/Printers/ControlPrinter.jsx
@@ -1,6 +1,6 @@
import { useState, useRef, useEffect, useContext } from 'react'
import { useLocation } from 'react-router-dom'
-import { Space, Flex, Card, Splitter, Divider, Modal } from 'antd'
+import { Space, Flex, Card, Splitter, Divider } from 'antd'
import loglevel from 'loglevel'
import config from '../../../../config.js'
import useCollapseState from '../../hooks/useCollapseState.jsx'
@@ -11,6 +11,7 @@ import NoteIcon from '../../../Icons/NoteIcon.jsx'
import ObjectForm from '../../common/ObjectForm.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
import ObjectActions from '../../common/ObjectActions.jsx'
+import { useActions } from '../../context/ActionsContext'
import PropTypes from 'prop-types'
import ObjectInfo from '../../common/ObjectInfo.jsx'
@@ -29,8 +30,6 @@ import MissingPlaceholder from '../../common/MissingPlaceholder.jsx'
import { useMediaQuery } from 'react-responsive'
import AlertsDisplay from '../../common/AlertsDisplay.jsx'
import { ApiServerContext } from '../../context/ApiServerContext.jsx'
-import LoadFilamentStock from '../../Inventory/FilamentStocks/LoadFilamentStock.jsx'
-import UnloadFilamentStock from '../../Inventory/FilamentStocks/UnloadFilamentStock.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import PrinterControlButtons from '../../common/PrinterControlButtons.jsx'
@@ -59,6 +58,7 @@ const ControlPrinter = ({ slicerIntegration = false }) => {
)
const { connected, sendObjectAction } = useContext(ApiServerContext)
+ const { setCurrentObject, setCurrentObjectType, setOnModalOk } = useActions()
const [sideBarVisible, setSideBarVisible] = useState(
collapseState.temperature ||
collapseState.position ||
@@ -66,8 +66,14 @@ const ControlPrinter = ({ slicerIntegration = false }) => {
collapseState.misc
)
- const [loadFilamentStockOpen, setLoadFilamentStockOpen] = useState(false)
- const [unloadFilamentStockOpen, setUnloadFilamentStockOpen] = useState(false)
+ const [objectFormState, setEditFormState] = useState({
+ isEditing: false,
+ editLoading: false,
+ formValid: false,
+ activities: [],
+ loading: false,
+ objectData: {}
+ })
useEffect(() => {
setSideBarVisible(
@@ -78,14 +84,26 @@ const ControlPrinter = ({ slicerIntegration = false }) => {
)
}, [collapseState])
- const [objectFormState, setEditFormState] = useState({
- isEditing: false,
- editLoading: false,
- formValid: false,
- activities: [],
- loading: false,
- objectData: {}
- })
+ useEffect(() => {
+ setCurrentObjectType('printer')
+ return () => {
+ setCurrentObject(null)
+ setCurrentObjectType(null)
+ }
+ }, [setCurrentObject, setCurrentObjectType])
+
+ useEffect(() => {
+ if (objectFormState.objectData?._id) {
+ setCurrentObject(objectFormState.objectData)
+ }
+ }, [objectFormState.objectData, setCurrentObject])
+
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const actions = {
edit: () => {
@@ -156,14 +174,6 @@ const ControlPrinter = ({ slicerIntegration = false }) => {
})
}
return true
- },
- loadFilamentStock: () => {
- setLoadFilamentStockOpen(true)
- return true
- },
- unloadFilamentStock: () => {
- setUnloadFilamentStockOpen(true)
- return true
}
}
@@ -373,6 +383,7 @@ const ControlPrinter = ({ slicerIntegration = false }) => {
id={printerId}
type='printer'
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -595,34 +606,6 @@ const ControlPrinter = ({ slicerIntegration = false }) => {
- setLoadFilamentStockOpen(false)}
- footer={null}
- width='700px'
- destroyOnHidden={true}
- >
- setLoadFilamentStockOpen(false)}
- reset={false}
- filamentStockLoaded={false}
- />
-
- setUnloadFilamentStockOpen(false)}
- footer={null}
- width='700px'
- destroyOnHidden={true}
- >
- setUnloadFilamentStockOpen(false)}
- reset={false}
- filamentStockLoaded={false}
- />
-
>
)
}
diff --git a/src/components/Dashboard/Production/Printers/PrinterInfo.jsx b/src/components/Dashboard/Production/Printers/PrinterInfo.jsx
index 4487ba7..7c275c9 100644
--- a/src/components/Dashboard/Production/Printers/PrinterInfo.jsx
+++ b/src/components/Dashboard/Production/Printers/PrinterInfo.jsx
@@ -1,7 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
-import NewPrinterProfile from '../PrinterProfiles/NewPrinterProfile'
+import { Card, Flex, Space } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,6 +16,7 @@ import ObjectForm from '../../common/ObjectForm.jsx'
import EditButtons from '../../common/EditButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -33,6 +33,9 @@ const PrinterInfo = () => {
const objectFormRef = useRef(null)
const profilesTableRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
const printerId = new URLSearchParams(location.search).get('printerId')
const [collapseState, updateCollapseState] = useCollapseState('PrinterInfo', {
info: true,
@@ -50,7 +53,14 @@ const PrinterInfo = () => {
loading: false,
objectData: {}
})
- const [newPrinterProfileOpen, setNewPrinterProfileOpen] = useState(false)
+
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ profilesTableRef.current?.reload?.()
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const actions = {
edit: () => {
@@ -65,14 +75,9 @@ const PrinterInfo = () => {
objectFormRef?.current.handleUpdate()
return true
},
- newPrinterProfile: () => {
- setNewPrinterProfileOpen(true)
- return true
- }
}
return (
- <>
{
type='printer'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -248,28 +254,6 @@ const PrinterInfo = () => {
- {
- setNewPrinterProfileOpen(false)
- }}
- destroyOnHidden={true}
- >
- {
- setNewPrinterProfileOpen(false)
- profilesTableRef.current?.reload()
- }}
- reset={newPrinterProfileOpen}
- defaultValues={{
- printer: { ...objectFormState.objectData }
- }}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx b/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx
index c6b35d0..99d846f 100644
--- a/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx
+++ b/src/components/Dashboard/Production/SubJobs/SubJobInfo.jsx
@@ -143,6 +143,7 @@ const SubJobInfo = () => {
type='subJob'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Sales/Clients/ClientInfo.jsx b/src/components/Dashboard/Sales/Clients/ClientInfo.jsx
index 5423a32..8e1e812 100644
--- a/src/components/Dashboard/Sales/Clients/ClientInfo.jsx
+++ b/src/components/Dashboard/Sales/Clients/ClientInfo.jsx
@@ -152,6 +152,7 @@ const ClientInfo = () => {
type='client'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
diff --git a/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx b/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx
index 3393c66..7c278ce 100644
--- a/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx
+++ b/src/components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import loglevel from 'loglevel'
import config from '../../../../config'
import useCollapseState from '../../hooks/useCollapseState'
@@ -16,14 +16,13 @@ import EditButtons from '../../common/EditButtons'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
-import PublishListingVarient from './PublishListingVarient.jsx'
-import UnpublishListingVarient from './UnpublishListingVarient.jsx'
const log = loglevel.getLogger('ListingVarientInfo')
log.setLevel(config.logLevel)
@@ -32,11 +31,18 @@ const ListingVarientInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const listingVarientId = new URLSearchParams(location.search).get(
'listingVarientId'
)
- const [publishOpen, setPublishOpen] = useState(false)
- const [unpublishOpen, setUnpublishOpen] = useState(false)
const [collapseState, updateCollapseState] = useCollapseState(
'ListingVarientInfo',
{
@@ -71,18 +77,9 @@ const ListingVarientInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- publish: () => {
- setPublishOpen(true)
- return true
- },
- unpublish: () => {
- setUnpublishOpen(true)
- return true
- }
}
return (
- <>
{
type='listingVarient'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -221,39 +219,6 @@ const ListingVarientInfo = () => {
- setPublishOpen(false)}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPublishOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- />
-
- setUnpublishOpen(false)}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setUnpublishOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Sales/Listings/ListingInfo.jsx b/src/components/Dashboard/Sales/Listings/ListingInfo.jsx
index fc2c44d..6931b22 100644
--- a/src/components/Dashboard/Sales/Listings/ListingInfo.jsx
+++ b/src/components/Dashboard/Sales/Listings/ListingInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, Modal, Space } from 'antd'
+import { Card, Flex, Space } from 'antd'
import loglevel from 'loglevel'
import config from '../../../../config'
import useCollapseState from '../../hooks/useCollapseState'
@@ -17,15 +17,13 @@ import EditButtons from '../../common/EditButtons'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
-import NewListingVarient from '../ListingVarients/NewListingVarient.jsx'
-import PublishListing from './PublishListing.jsx'
-import UnpublishListing from './UnpublishListing.jsx'
const log = loglevel.getLogger('ListingInfo')
log.setLevel(config.logLevel)
@@ -35,10 +33,16 @@ const ListingInfo = () => {
const objectFormRef = useRef(null)
const listingVarientsTableRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ listingVarientsTableRef.current?.reload?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const listingId = new URLSearchParams(location.search).get('listingId')
- const [newListingVarientOpen, setNewListingVarientOpen] = useState(false)
- const [publishListingOpen, setPublishListingOpen] = useState(false)
- const [unpublishListingOpen, setUnpublishListingOpen] = useState(false)
const [collapseState, updateCollapseState] = useCollapseState('ListingInfo', {
info: true,
listingVarients: true,
@@ -71,22 +75,9 @@ const ListingInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- newListingVarient: () => {
- setNewListingVarientOpen(true)
- return true
- },
- publish: () => {
- setPublishListingOpen(true)
- return true
- },
- unpublish: () => {
- setUnpublishListingOpen(true)
- return true
- }
}
return (
- <>
{
type='listing'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -245,61 +237,6 @@ const ListingInfo = () => {
- {
- setNewListingVarientOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewListingVarientOpen(false)
- listingVarientsTableRef.current?.reload()
- }}
- reset={newListingVarientOpen}
- defaultValues={{
- listing: objectFormState.objectData
- }}
- />
-
- setPublishListingOpen(false)}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPublishListingOpen(false)
- objectFormRef?.current.handleFetchObject()
- listingVarientsTableRef.current?.reload?.()
- }}
- />
-
- setUnpublishListingOpen(false)}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setUnpublishListingOpen(false)
- objectFormRef?.current.handleFetchObject()
- listingVarientsTableRef.current?.reload?.()
- }}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx b/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx
index c161589..f77c8d9 100644
--- a/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx
+++ b/src/components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx
@@ -1,6 +1,6 @@
-import { useContext, useRef, useState } from 'react'
+import { useContext, useRef, useState , useEffect} from 'react'
import { useLocation } from 'react-router-dom'
-import { Card, Flex, message, Modal, Space } from 'antd'
+import { Card, Flex, message, Space } from 'antd'
import loglevel from 'loglevel'
import config from '../../../../config'
import useCollapseState from '../../hooks/useCollapseState'
@@ -16,15 +16,13 @@ import EditButtons from '../../common/EditButtons'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
-import SyncListings from './SyncListings.jsx'
-import SyncOrders from './SyncOrders.jsx'
-import ConfigureMarketplace from './ConfigureMarketplace.jsx'
import { ApiServerContext } from '../../context/ApiServerContext.jsx'
import { ElectronContext } from '../../context/ElectronContext.jsx'
import {
@@ -39,6 +37,15 @@ const MarketplaceInfo = () => {
const location = useLocation()
const objectFormRef = useRef(null)
const actionHandlerRef = useRef(null)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const { getMarketplaceAuthUrl, refreshMarketplaceAuth } =
useContext(ApiServerContext)
const { openExternalUrl } = useContext(ElectronContext)
@@ -61,9 +68,6 @@ const MarketplaceInfo = () => {
loading: false,
objectData: {}
})
- const [syncListingsOpen, setSyncListingsOpen] = useState(false)
- const [syncOrdersOpen, setSyncOrdersOpen] = useState(false)
- const [configureModalOpen, setConfigureModalOpen] = useState(false)
const startAuthorization = async () => {
const objectData = objectFormState.objectData
@@ -128,18 +132,6 @@ const MarketplaceInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- syncListings: () => {
- setSyncListingsOpen(true)
- return true
- },
- syncOrders: () => {
- setSyncOrdersOpen(true)
- return true
- },
- configure: () => {
- setConfigureModalOpen(true)
- return true
- },
connect: () => {
startAuthorization()
return true
@@ -155,7 +147,6 @@ const MarketplaceInfo = () => {
}
return (
- <>
{
type='marketplace'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -291,63 +283,6 @@ const MarketplaceInfo = () => {
- setSyncListingsOpen(false)}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered
- >
- {
- setSyncListingsOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- setSyncOrdersOpen(false)}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered
- >
- {
- setSyncOrdersOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- setConfigureModalOpen(false)}
- width={650}
- footer={null}
- destroyOnHidden={true}
- centered
- >
- {
- startAuthorization()
- setConfigureModalOpen(false)
- }}
- isConnected={
- !!(
- objectFormState.objectData?.config?.refreshToken ||
- objectFormState.objectData?.config?.accessToken ||
- objectFormState.objectData?.config?.shopCipher
- )
- }
- loading={objectFormState.loading}
- disabled={objectFormState.isEditing}
- />
-
- >
)
}
diff --git a/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx b/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx
index 5f6f9cd..e898204 100644
--- a/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx
+++ b/src/components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx
@@ -1,6 +1,6 @@
-import { useRef, useState } from 'react'
+import { useRef, useState, useEffect } from 'react'
import { useLocation } from 'react-router-dom'
-import { Space, Flex, Card, Modal } from 'antd'
+import { Space, Flex, Card } from 'antd'
import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel'
import config from '../../../../config.js'
@@ -17,6 +17,7 @@ import EditButtons from '../../common/EditButtons.jsx'
import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons.jsx'
import ActivityIndicator from '../../common/ActivityIndicator.jsx'
import ActionHandler from '../../common/ActionHandler.jsx'
+import { useActions } from '../../context/ActionsContext'
import ObjectActions from '../../common/ObjectActions.jsx'
import ObjectTable from '../../common/ObjectTable.jsx'
import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
@@ -24,16 +25,10 @@ import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx'
import OrderItemsIcon from '../../../Icons/OrderItemIcon.jsx'
-import NewOrderItem from '../../Inventory/OrderItems/NewOrderItem.jsx'
-import NewShipment from '../../Inventory/Shipments/NewShipment.jsx'
-import PostSalesOrder from './PostSalesOrder.jsx'
-import ConfirmSalesOrder from './ConfirmSalesOrder.jsx'
-import CancelSalesOrder from './CancelSalesOrder.jsx'
import ShipmentIcon from '../../../Icons/ShipmentIcon.jsx'
import InvoiceIcon from '../../../Icons/InvoiceIcon.jsx'
import StockEventIcon from '../../../Icons/StockEventIcon.jsx'
import { getModelByName } from '../../../../database/ObjectModels.js'
-import NewInvoice from '../../Finance/Invoices/NewInvoice.jsx'
const log = loglevel.getLogger('SalesOrderInfo')
log.setLevel(config.logLevel)
@@ -44,12 +39,15 @@ const SalesOrderInfo = () => {
const orderItemsTableRef = useRef(null)
const shipmentsTableRef = useRef(null)
const actionHandlerRef = useRef(null)
- const [newOrderItemOpen, setNewOrderItemOpen] = useState(false)
- const [newShipmentOpen, setNewShipmentOpen] = useState(false)
- const [postSalesOrderOpen, setPostSalesOrderOpen] = useState(false)
- const [confirmSalesOrderOpen, setConfirmSalesOrderOpen] = useState(false)
- const [cancelSalesOrderOpen, setCancelSalesOrderOpen] = useState(false)
- const [newInvoiceOpen, setNewInvoiceOpen] = useState(false)
+
+
+ const { setOnModalOk } = useActions()
+ useEffect(() => {
+ setOnModalOk(() => () => {
+ objectFormRef.current?.handleFetchObject?.()
+ })
+ return () => setOnModalOk(null)
+ }, [setOnModalOk])
const salesOrderId = new URLSearchParams(location.search).get('salesOrderId')
const [collapseState, updateCollapseState] = useCollapseState(
'SalesOrderInfo',
@@ -93,30 +91,6 @@ const SalesOrderInfo = () => {
objectFormRef?.current?.handleDelete?.()
return true
},
- newOrderItem: () => {
- setNewOrderItemOpen(true)
- return true
- },
- newShipment: () => {
- setNewShipmentOpen(true)
- return true
- },
- newInvoice: () => {
- setNewInvoiceOpen(true)
- return true
- },
- post: () => {
- setPostSalesOrderOpen(true)
- return true
- },
- confirm: () => {
- setConfirmSalesOrderOpen(true)
- return true
- },
- cancel: () => {
- setCancelSalesOrderOpen(true)
- return true
- }
}
const editDisabled = getModelByName('salesOrder')
@@ -124,7 +98,6 @@ const SalesOrderInfo = () => {
.disabled(objectFormState.objectData)
return (
- <>
{
type='salesOrder'
style={{ height: '100%' }}
ref={objectFormRef}
+ setCurrentObject={true}
onStateChange={(state) => {
setEditFormState((prev) => ({ ...prev, ...state }))
}}
@@ -358,122 +332,6 @@ const SalesOrderInfo = () => {
- {
- setNewOrderItemOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewOrderItemOpen(false)
- }}
- reset={newOrderItemOpen}
- defaultValues={{
- order: { _id: salesOrderId },
- orderType: 'salesOrder',
- syncAmount: 'itemPrice'
- }}
- />
-
- {
- setNewShipmentOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewShipmentOpen(false)
- }}
- reset={newShipmentOpen}
- defaultValues={{
- orderType: 'salesOrder',
- order: { _id: salesOrderId }
- }}
- />
-
- {
- setNewInvoiceOpen(false)
- }}
- width={800}
- footer={null}
- destroyOnHidden={true}
- >
- {
- setNewInvoiceOpen(false)
- }}
- reset={newInvoiceOpen}
- defaultValues={{
- orderType: 'salesOrder',
- order: { ...objectFormState.objectData }
- }}
- />
-
- {
- setPostSalesOrderOpen(false)
- }}
- width={500}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setPostSalesOrderOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setConfirmSalesOrderOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setConfirmSalesOrderOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- {
- setCancelSalesOrderOpen(false)
- }}
- width={515}
- footer={null}
- destroyOnHidden={true}
- centered={true}
- >
- {
- setCancelSalesOrderOpen(false)
- objectFormRef?.current.handleFetchObject()
- }}
- objectData={objectFormState.objectData}
- />
-
- >
)
}
diff --git a/src/database/models/AppPassword.js b/src/database/models/AppPassword.js
index f87519e..afaa3e2 100644
--- a/src/database/models/AppPassword.js
+++ b/src/database/models/AppPassword.js
@@ -1,3 +1,11 @@
+import { createElement, lazy } from 'react'
+
+const AppPasswordInfo = lazy(
+ () => import('../../components/Dashboard/Management/AppPasswords/AppPasswordInfo')
+)
+const RegenerateAppPasswordSecret = lazy(
+ () => import('../../components/Dashboard/Management/AppPasswords/RegenerateAppPasswordSecret')
+)
import AppPasswordIcon from '../../components/Icons/AppPasswordIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,21 +23,20 @@ export const AppPassword = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/apppasswords/info?appPasswordId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/apppasswords/info?appPasswordId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -38,21 +45,21 @@ export const AppPassword = {
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/apppasswords/info?appPasswordId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/apppasswords/info?appPasswordId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -60,17 +67,25 @@ export const AppPassword = {
{ type: 'divider' },
{
name: 'regenerateSecret',
+ type: 'modal',
+ modalWidth: 520,
label: 'Regenerate Secret',
- type: 'button',
row: true,
icon: LockIcon,
- url: (_id) =>
- `/dashboard/management/apppasswords/info?appPasswordId=${_id}&action=regenerateSecret`,
disabled: (objectData) => {
return objectData?._user?._id != objectData?.user?._id
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(RegenerateAppPasswordSecret, { id: objectData._id, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(AppPasswordInfo)
+ }
+ ],
columns: ['_reference', 'name', 'user', 'active', 'createdAt', 'updatedAt'],
filters: [
'_id',
diff --git a/src/database/models/Client.js b/src/database/models/Client.js
index bb1032f..17ea309 100644
--- a/src/database/models/Client.js
+++ b/src/database/models/Client.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const ClientInfo = lazy(
+ () => import('../../components/Dashboard/Sales/Clients/ClientInfo')
+)
import ClientIcon from '../../components/Icons/ClientIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,38 +20,40 @@ export const Client = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/sales/clients/info?clientId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) => `/dashboard/sales/clients/info?clientId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/clients/info?clientId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/sales/clients/info?clientId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -54,11 +61,17 @@ export const Client = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/sales/clients/info?clientId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ClientInfo)
}
],
columns: [
diff --git a/src/database/models/Courier.js b/src/database/models/Courier.js
index 1416f9d..f5be91a 100644
--- a/src/database/models/Courier.js
+++ b/src/database/models/Courier.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const CourierInfo = lazy(
+ () => import('../../components/Dashboard/Management/Couriers/CourierInfo')
+)
import CourierIcon from '../../components/Icons/CourierIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const Courier = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/couriers/info?courierId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/couriers/info?courierId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/couriers/info?courierId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/couriers/info?courierId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const Courier = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/couriers/info?courierId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(CourierInfo)
}
],
columns: ['_reference', 'name', 'country', 'email', 'website', 'createdAt'],
diff --git a/src/database/models/CourierService.js b/src/database/models/CourierService.js
index 655ed3b..ca8605b 100644
--- a/src/database/models/CourierService.js
+++ b/src/database/models/CourierService.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const CourierServiceInfo = lazy(
+ () => import('../../components/Dashboard/Management/CourierServices/CourierServiceInfo')
+)
import CourierServiceIcon from '../../components/Icons/CourierServiceIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,40 +20,40 @@ export const CourierService = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/courierservices/info?courierServiceId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/courierservices/info?courierServiceId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/courierservices/info?courierServiceId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/courierservices/info?courierServiceId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -56,11 +61,17 @@ export const CourierService = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/courierservices/info?courierServiceId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(CourierServiceInfo)
}
],
columns: [
diff --git a/src/database/models/DocumentJob.js b/src/database/models/DocumentJob.js
index 3fa6c94..386f607 100644
--- a/src/database/models/DocumentJob.js
+++ b/src/database/models/DocumentJob.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const DocumentJobInfo = lazy(
+ () => import('../../components/Dashboard/Management/DocumentJobs/DocumentJobInfo')
+)
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -15,44 +20,49 @@ export const DocumentJob = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/documentjobs/info?documentJobId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/documentjobs/info?documentJobId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
+ }
+, {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'finishEdit',
label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/documentjobs/info?documentJobId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
+ ],
+ pages: [
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/documentjobs/info?documentJobId=${_id}&action=cancelEdit`,
- visible: (objectData) => {
- return objectData?._isEditing && objectData?._isEditing == true
- }
+ name: 'info',
+ content: () => createElement(DocumentJobInfo)
}
],
columns: ['_reference', 'name', 'state', 'createdAt', 'updatedAt'],
diff --git a/src/database/models/DocumentPrinter.js b/src/database/models/DocumentPrinter.js
index 3be89a9..09fd245 100644
--- a/src/database/models/DocumentPrinter.js
+++ b/src/database/models/DocumentPrinter.js
@@ -1,8 +1,13 @@
+import { createElement, lazy } from 'react'
+
+const DocumentPrinterInfo = lazy(
+ () => import('../../components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo')
+)
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
-import DocumentPrinterIcon from '../../components/Icons/DocumentPrinterIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
import XMarkIcon from '../../components/Icons/XMarkIcon'
+import DocumentPrinterIcon from '../../components/Icons/DocumentPrinterIcon'
export const DocumentPrinter = {
name: 'documentPrinter',
@@ -14,44 +19,49 @@ export const DocumentPrinter = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/documentprinters/info?documentPrinterId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/documentprinters/info?documentPrinterId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
+ }
+, {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'finishEdit',
label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/documentprinters/info?documentPrinterId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
+ ],
+ pages: [
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/documentprinters/info?documentPrinterId=${_id}&action=cancelEdit`,
- visible: (objectData) => {
- return objectData?._isEditing && objectData?._isEditing == true
- }
+ name: 'info',
+ content: () => createElement(DocumentPrinterInfo)
}
],
columns: [
diff --git a/src/database/models/DocumentSize.js b/src/database/models/DocumentSize.js
index 4a3eb5e..2cffc22 100644
--- a/src/database/models/DocumentSize.js
+++ b/src/database/models/DocumentSize.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const DocumentSizeInfo = lazy(
+ () => import('../../components/Dashboard/Management/DocumentSizes/DocumentSizeInfo')
+)
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -14,44 +19,49 @@ export const DocumentSize = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/documentsizes/info?documentSizeId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/documentsizes/info?documentSizeId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
+ }
+, {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'finishEdit',
label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/documentsizes/info?documentSizeId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
+ ],
+ pages: [
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/documentsizes/info?documentSizeId=${_id}&action=cancelEdit`,
- visible: (objectData) => {
- return objectData?._isEditing && objectData?._isEditing == true
- }
+ name: 'info',
+ content: () => createElement(DocumentSizeInfo)
}
],
columns: [
diff --git a/src/database/models/DocumentTemplate.js b/src/database/models/DocumentTemplate.js
index f2f695d..c292c77 100644
--- a/src/database/models/DocumentTemplate.js
+++ b/src/database/models/DocumentTemplate.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const DocumentTemplateInfo = lazy(
+ () => import('../../components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo')
+)
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -23,44 +28,49 @@ export const DocumentTemplate = {
},
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/documenttemplates/info?documentTemplateId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/documenttemplates/info?documentTemplateId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
+ }
+, {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'finishEdit',
label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/documenttemplates/info?documentTemplateId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
+ ],
+ pages: [
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/documenttemplates/info?documentTemplateId=${_id}&action=cancelEdit`,
- visible: (objectData) => {
- return objectData?._isEditing && objectData?._isEditing == true
- }
+ name: 'info',
+ content: () => createElement(DocumentTemplateInfo)
}
],
columns: [
diff --git a/src/database/models/Filament.js b/src/database/models/Filament.js
index 272ea04..c762174 100644
--- a/src/database/models/Filament.js
+++ b/src/database/models/Filament.js
@@ -1,8 +1,16 @@
+import { createElement, lazy } from 'react'
+
+const FilamentInfo = lazy(
+ () => import('../../components/Dashboard/Management/Filaments/FilamentInfo')
+)
+const NewFilamentSku = lazy(
+ () => import('../../components/Dashboard/Management/FilamentSkus/NewFilamentSku')
+)
import EditIcon from '../../components/Icons/EditIcon'
-import FilamentIcon from '../../components/Icons/FilamentIcon'
-import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
import XMarkIcon from '../../components/Icons/XMarkIcon'
+import FilamentIcon from '../../components/Icons/FilamentIcon'
+import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import PlusIcon from '../../components/Icons/PlusIcon'
import BinIcon from '../../components/Icons/BinIcon'
@@ -16,39 +24,40 @@ export const Filament = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/filaments/info?filamentId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/filaments/info?filamentId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/filaments/info?filamentId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/filaments/info?filamentId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -56,28 +65,36 @@ export const Filament = {
{ type: 'divider' },
{
name: 'newFilamentSku',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Filament SKU',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/management/filaments/info?filamentId=${_id}&action=newFilamentSku`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewFilamentSku, { defaultValues: { filament: objectData }, onOk, reset: true })
}
},
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/management/filaments/info?filamentId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(FilamentInfo)
+ }
+ ],
columns: [
'_reference',
'name',
diff --git a/src/database/models/FilamentProfile.js b/src/database/models/FilamentProfile.js
index 90b2d12..6c5b06a 100644
--- a/src/database/models/FilamentProfile.js
+++ b/src/database/models/FilamentProfile.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const FilamentProfileInfo = lazy(
+ () => import('../../components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo')
+)
import FilamentProfileIcon from '../../components/Icons/FilamentProfileIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,47 +20,57 @@ export const FilamentProfile = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/production/filamentprofiles/info?filamentProfileId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/production/filamentprofiles/info?filamentProfileId=${_id}&action=edit`,
visible: (objectData) => !objectData?._isEditing
},
- {
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/production/filamentprofiles/info?filamentProfileId=${_id}&action=finishEdit`,
- visible: (objectData) => objectData?._isEditing === true
- },
{
name: 'cancelEdit',
label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/production/filamentprofiles/info?filamentProfileId=${_id}&action=cancelEdit`,
- visible: (objectData) => objectData?._isEditing === true
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
+ },
+ {
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
row: true,
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/production/filamentprofiles/info?filamentProfileId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(FilamentProfileInfo)
}
],
columns: ['_reference', 'name', 'filamentType', 'filament', 'updatedAt'],
diff --git a/src/database/models/FilamentSku.js b/src/database/models/FilamentSku.js
index 3870629..d908eed 100644
--- a/src/database/models/FilamentSku.js
+++ b/src/database/models/FilamentSku.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const FilamentSkuInfo = lazy(
+ () => import('../../components/Dashboard/Management/FilamentSkus/FilamentSkuInfo')
+)
import FilamentSkuIcon from '../../components/Icons/FilamentSkuIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,40 +20,40 @@ export const FilamentSku = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/filamentskus/info?filamentSkuId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/filamentskus/info?filamentSkuId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/filamentskus/info?filamentSkuId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/filamentskus/info?filamentSkuId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -56,11 +61,17 @@ export const FilamentSku = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/filamentskus/info?filamentSkuId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(FilamentSkuInfo)
}
],
columns: [
diff --git a/src/database/models/FilamentStock.js b/src/database/models/FilamentStock.js
index dffc4cd..3ab9f27 100644
--- a/src/database/models/FilamentStock.js
+++ b/src/database/models/FilamentStock.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const FilamentStockInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo')
+)
import FilamentStockIcon from '../../components/Icons/FilamentStockIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
@@ -11,12 +16,18 @@ export const FilamentStock = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/inventory/filamentstocks/info?filamentStockId=${_id}`
+ icon: InfoCircleIcon
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(FilamentStockInfo)
}
],
columns: [
diff --git a/src/database/models/File.js b/src/database/models/File.js
index 728d8fe..248976d 100644
--- a/src/database/models/File.js
+++ b/src/database/models/File.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const FileInfo = lazy(
+ () => import('../../components/Dashboard/Management/Files/FileInfo')
+)
import DownloadIcon from '../../components/Icons/DownloadIcon'
import FileIcon from '../../components/Icons/FileIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
@@ -16,59 +21,66 @@ export const File = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/files/info?fileId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/files/info?fileId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/files/info?fileId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/files/info?fileId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'download',
+ type: 'page',
+ pageName: 'info',
label: 'Download',
row: true,
- icon: DownloadIcon,
- url: (_id) =>
- `/dashboard/management/files/info?fileId=${_id}&action=download`
+ icon: DownloadIcon
},
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/files/info?fileId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(FileInfo)
}
],
columns: [
diff --git a/src/database/models/GCodeFile.js b/src/database/models/GCodeFile.js
index a338150..24dc3ef 100644
--- a/src/database/models/GCodeFile.js
+++ b/src/database/models/GCodeFile.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const GCodeFileInfo = lazy(
+ () => import('../../components/Dashboard/Production/GCodeFiles/GCodeFileInfo')
+)
import DownloadIcon from '../../components/Icons/DownloadIcon'
import EditIcon from '../../components/Icons/EditIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -24,50 +29,57 @@ export const GCodeFile = {
},
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/production/gcodefiles/info?gcodeFileId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'download',
+ type: 'page',
+ pageName: 'info',
label: 'Download',
row: true,
- icon: DownloadIcon,
- url: (_id) =>
- `/dashboard/production/gcodefiles/info?gcodeFileId=${_id}&action=download`
+ icon: DownloadIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/production/gcodefiles/info?gcodeFileId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
+ }
+, {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'finishEdit',
label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/production/gcodefiles/info?gcodeFileId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
+ ],
+ pages: [
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/production/gcodefiles/info?gcodeFileId=${_id}&action=cancelEdit`,
- visible: (objectData) => {
- return objectData?._isEditing && objectData?._isEditing == true
- }
+ name: 'info',
+ content: () => createElement(GCodeFileInfo)
}
],
diff --git a/src/database/models/Host.js b/src/database/models/Host.js
index 87e7764..f8fc9bf 100644
--- a/src/database/models/Host.js
+++ b/src/database/models/Host.js
@@ -1,3 +1,11 @@
+import { createElement, lazy } from 'react'
+
+const HostInfo = lazy(
+ () => import('../../components/Dashboard/Management/Hosts/HostInfo')
+)
+const HostOTP = lazy(
+ () => import('../../components/Dashboard/Management/Hosts/HostOtp')
+)
import HostIcon from '../../components/Icons/HostIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -16,40 +24,40 @@ export const Host = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/hosts/info?hostId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/hosts/info?hostId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/hosts/info?hostId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/hosts/info?hostId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -59,18 +67,27 @@ export const Host = {
},
{
name: 'connect',
+ type: 'modal',
+ modalWidth: 520,
label: 'Connect',
icon: OTPIcon,
- url: (_id) =>
- `/dashboard/management/hosts/info?hostId=${_id}&action=hostOTP`
+ content: (objectData, { onOk } = {}) => {
+ return createElement(HostOTP, { id: objectData._id, onOk })
+ }
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/hosts/info?hostId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(HostInfo)
}
],
columns: ['_reference', 'name', 'state', 'tags', 'connectedAt'],
diff --git a/src/database/models/Invoice.js b/src/database/models/Invoice.js
index 2919f59..d9ec180 100644
--- a/src/database/models/Invoice.js
+++ b/src/database/models/Invoice.js
@@ -1,3 +1,17 @@
+import { createElement, lazy } from 'react'
+
+const InvoiceInfo = lazy(
+ () => import('../../components/Dashboard/Finance/Invoices/InvoiceInfo')
+)
+const PostInvoice = lazy(
+ () => import('../../components/Dashboard/Finance/Invoices/PostInvoice')
+)
+const AcknowledgeInvoice = lazy(
+ () => import('../../components/Dashboard/Finance/Invoices/AcknowledgeInvoice')
+)
+const NewPayment = lazy(
+ () => import('../../components/Dashboard/Finance/Payments/NewPayment')
+)
import InvoiceIcon from '../../components/Icons/InvoiceIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -16,19 +30,19 @@ export const Invoice = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/finance/invoices/info?invoiceId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -38,34 +52,31 @@ export const Invoice = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -76,47 +87,59 @@ export const Invoice = {
{ type: 'divider' },
{
name: 'newPayment',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Payment',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=newPayment`,
disabled: (objectData) => {
const allowedStates = ['acknowledged', 'partiallyPaid', 'overdue']
return !allowedStates.includes(objectData?.state?.type)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewPayment, {
+ defaultValues: {
+ invoice: objectData,
+ amount: objectData?.grandTotalAmount
+ },
+ onOk,
+ reset: true
+ })
}
},
{ type: 'divider' },
{
name: 'post',
+ type: 'modal',
+ modalWidth: 520,
label: 'Post',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=post`,
visible: (objectData) => {
return objectData?.state?.type == 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PostInvoice, { objectData, onOk })
}
},
{
name: 'acknowledge',
+ type: 'modal',
+ modalWidth: 520,
label: 'Acknowledge',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=acknowledge`,
visible: (objectData) => {
return objectData?.state?.type == 'sent'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(AcknowledgeInvoice, { objectData, onOk })
}
},
{
name: 'cancel',
+ type: 'page',
+ pageName: 'info',
label: 'Cancel',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/finance/invoices/info?invoiceId=${_id}&action=cancel`,
disabled: (objectData) => {
const allowedStates = [
'acknowledged',
@@ -131,6 +154,12 @@ export const Invoice = {
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(InvoiceInfo)
+ }
+ ],
group: ['orderType'],
filters: [
'vendor',
diff --git a/src/database/models/Job.js b/src/database/models/Job.js
index ea82626..87a9a23 100644
--- a/src/database/models/Job.js
+++ b/src/database/models/Job.js
@@ -1,3 +1,11 @@
+import { createElement, lazy } from 'react'
+
+const JobInfo = lazy(
+ () => import('../../components/Dashboard/Production/Jobs/JobInfo')
+)
+const DeployJob = lazy(
+ () => import('../../components/Dashboard/Production/Jobs/DeployJob')
+)
import JobIcon from '../../components/Icons/JobIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -16,18 +24,19 @@ export const Job = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/production/jobs/info?jobId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) => `/dashboard/production/jobs/info?jobId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -37,34 +46,31 @@ export const Job = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/production/jobs/info?jobId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/production/jobs/info?jobId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/production/jobs/info?jobId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -75,17 +81,26 @@ export const Job = {
{ type: 'divider' },
{
name: 'deploy',
+ type: 'modal',
+ modalWidth: 680,
label: 'Deploy',
default: true,
row: true,
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/production/jobs/info?jobId=${_id}&action=deploy`,
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(DeployJob, { objectData, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(JobInfo)
+ }
+ ],
columns: ['_reference', 'quantity', 'state', 'gcodeFile', 'createdAt'],
filters: [
'state',
@@ -96,13 +111,7 @@ export const Job = {
'createdAt',
'updatedAt'
],
- sorters: [
- 'createdAt',
- 'state',
- 'quantity',
- 'gcodeFile',
- 'updatedAt'
- ],
+ sorters: ['createdAt', 'state', 'quantity', 'gcodeFile', 'updatedAt'],
properties: [
{
name: '_id',
diff --git a/src/database/models/Listing.js b/src/database/models/Listing.js
index 14e22c0..d89e446 100644
--- a/src/database/models/Listing.js
+++ b/src/database/models/Listing.js
@@ -1,3 +1,17 @@
+import { createElement, lazy } from 'react'
+
+const ListingInfo = lazy(
+ () => import('../../components/Dashboard/Sales/Listings/ListingInfo')
+)
+const NewListingVarient = lazy(
+ () => import('../../components/Dashboard/Sales/ListingVarients/NewListingVarient')
+)
+const PublishListing = lazy(
+ () => import('../../components/Dashboard/Sales/Listings/PublishListing')
+)
+const UnpublishListing = lazy(
+ () => import('../../components/Dashboard/Sales/Listings/UnpublishListing')
+)
import ListingIcon from '../../components/Icons/ListingIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -16,39 +30,40 @@ export const Listing = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/sales/listings/info?listingId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -56,44 +71,56 @@ export const Listing = {
{ type: 'divider' },
{
name: 'newListingVarient',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Listing Varient',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=newListingVarient`
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewListingVarient, { defaultValues: { listing: objectData }, onOk, reset: true })
+ }
},
{ type: 'divider' },
{
name: 'publish',
+ type: 'modal',
+ modalWidth: 520,
label: 'Publish',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=publish`,
visible: (objectData) =>
objectData?.state?.type === 'draft' ||
objectData?.state?.type === 'inactive',
- disabled: (objectData) => objectData?.state?.type === 'syncing'
+ disabled: (objectData) => objectData?.state?.type === 'syncing',
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PublishListing, { objectData, onOk })
+ }
},
{
name: 'unpublish',
+ type: 'modal',
+ modalWidth: 520,
label: 'Unpublish',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=unpublish`,
visible: (objectData) => objectData?.state?.type === 'active',
- disabled: (objectData) => objectData?.state?.type === 'syncing'
+ disabled: (objectData) => objectData?.state?.type === 'syncing',
+ content: (objectData, { onOk } = {}) => {
+ return createElement(UnpublishListing, { objectData, onOk })
+ }
},
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/sales/listings/info?listingId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ListingInfo)
}
],
columns: [
diff --git a/src/database/models/ListingVarient.js b/src/database/models/ListingVarient.js
index 33c7134..9368eda 100644
--- a/src/database/models/ListingVarient.js
+++ b/src/database/models/ListingVarient.js
@@ -1,3 +1,14 @@
+import { createElement, lazy } from 'react'
+
+const ListingVarientInfo = lazy(
+ () => import('../../components/Dashboard/Sales/ListingVarients/ListingVarientInfo')
+)
+const PublishListingVarient = lazy(
+ () => import('../../components/Dashboard/Sales/ListingVarients/PublishListingVarient')
+)
+const UnpublishListingVarient = lazy(
+ () => import('../../components/Dashboard/Sales/ListingVarients/UnpublishListingVarient')
+)
import ListingVarientIcon from '../../components/Icons/ListingVarientIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -7,6 +18,7 @@ import BinIcon from '../../components/Icons/BinIcon'
export const ListingVarient = {
name: 'listingVarient',
+ url: '/dashboard/sales/listingvarients',
label: 'Listing Varient',
labelPlural: 'Listing Varients',
prefix: 'LVR',
@@ -14,40 +26,40 @@ export const ListingVarient = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,35 +67,45 @@ export const ListingVarient = {
{ type: 'divider' },
{
name: 'publish',
+ type: 'modal',
+ modalWidth: 520,
label: 'Publish',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}&action=publish`,
visible: (objectData) =>
objectData?.state?.type === 'draft' ||
objectData?.state?.type === 'inactive',
- disabled: (objectData) => objectData?.state?.type === 'syncing'
+ disabled: (objectData) => objectData?.state?.type === 'syncing',
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PublishListingVarient, { objectData, onOk })
+ }
},
{
name: 'unpublish',
+ type: 'modal',
+ modalWidth: 520,
label: 'Unpublish',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}&action=unpublish`,
visible: (objectData) => objectData?.state?.type === 'active',
- disabled: (objectData) => objectData?.state?.type === 'syncing'
+ disabled: (objectData) => objectData?.state?.type === 'syncing',
+ content: (objectData, { onOk } = {}) => {
+ return createElement(UnpublishListingVarient, { objectData, onOk })
+ }
},
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/sales/listingvarients/info?listingVarientId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ListingVarientInfo)
}
],
columns: [
diff --git a/src/database/models/Marketplace.js b/src/database/models/Marketplace.js
index ce324b4..d83d082 100644
--- a/src/database/models/Marketplace.js
+++ b/src/database/models/Marketplace.js
@@ -1,3 +1,14 @@
+import { createElement, lazy } from 'react'
+
+const MarketplaceInfo = lazy(
+ () => import('../../components/Dashboard/Sales/Marketplaces/MarketplaceInfo')
+)
+const SyncListings = lazy(
+ () => import('../../components/Dashboard/Sales/Marketplaces/SyncListings')
+)
+const SyncOrders = lazy(
+ () => import('../../components/Dashboard/Sales/Marketplaces/SyncOrders')
+)
import MarketplaceIcon from '../../components/Icons/MarketplaceIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -17,39 +28,40 @@ export const Marketplace = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/sales/marketplaces/info?marketplaceId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -57,34 +69,37 @@ export const Marketplace = {
{ type: 'divider' },
{
name: 'syncListings',
+ type: 'modal',
+ modalWidth: 520,
label: 'Sync Listings',
- type: 'button',
icon: ReloadIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=syncListings`,
disabled: (objectData) => {
return objectData?.state?.type != 'ready'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(SyncListings, { objectData, onOk })
}
},
{
name: 'syncOrders',
+ type: 'modal',
+ modalWidth: 520,
label: 'Sync Orders',
- type: 'button',
icon: ReloadIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=syncOrders`,
disabled: (objectData) => {
return objectData?.state?.type != 'ready'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(SyncOrders, { objectData, onOk })
}
},
{ type: 'divider' },
{
name: 'connect',
+ type: 'page',
+ pageName: 'info',
label: 'Connect',
- type: 'button',
icon: LinkIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=connect`,
disabled: (objectData) => {
return (
objectData?.state?.type == 'ready' ||
@@ -95,22 +110,20 @@ export const Marketplace = {
},
{
name: 'reconnect',
+ type: 'page',
+ pageName: 'info',
label: 'Reconnect',
- type: 'button',
icon: LinkIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=reconnect`,
disabled: (objectData) => {
return objectData?.state?.type != 'ready'
}
},
{
name: 'refreshToken',
+ type: 'page',
+ pageName: 'info',
label: 'Refresh Token',
- type: 'button',
icon: ReloadIcon,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=refreshToken`,
disabled: (objectData) => {
return objectData?.state?.type != 'ready'
}
@@ -118,11 +131,17 @@ export const Marketplace = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/sales/marketplaces/info?marketplaceId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(MarketplaceInfo)
}
],
columns: [
diff --git a/src/database/models/Material.js b/src/database/models/Material.js
index 1757b85..7f35e6f 100644
--- a/src/database/models/Material.js
+++ b/src/database/models/Material.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const MaterialInfo = lazy(
+ () => import('../../components/Dashboard/Management/Materials/MaterialInfo')
+)
import MaterialIcon from '../../components/Icons/MaterialIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const Material = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/materials/info?materialId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/materials/info?materialId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/materials/info?materialId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/materials/info?materialId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const Material = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/materials/info?materialId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(MaterialInfo)
}
],
columns: ['_reference', 'name', 'tags', 'createdAt', 'updatedAt'],
diff --git a/src/database/models/NoteType.js b/src/database/models/NoteType.js
index a593060..abb7ad8 100644
--- a/src/database/models/NoteType.js
+++ b/src/database/models/NoteType.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const NoteTypeInfo = lazy(
+ () => import('../../components/Dashboard/Management/NoteTypes/NoteTypeInfo')
+)
import NoteTypeIcon from '../../components/Icons/NoteTypeIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -14,42 +19,49 @@ export const NoteType = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/notetypes/info?noteTypeId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/notetypes/info?noteTypeId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
+ }
+, {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'finishEdit',
label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/notetypes/info?noteTypeId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
+ ],
+ pages: [
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/notetypes/info?noteTypeId=${_id}&action=cancelEdit`,
- visible: (objectData) => {
- return objectData?._isEditing && objectData?._isEditing == true
- }
+ name: 'info',
+ content: () => createElement(NoteTypeInfo)
}
],
columns: ['_reference', 'name', 'color', 'active', 'createdAt', 'updatedAt'],
diff --git a/src/database/models/OrderItem.js b/src/database/models/OrderItem.js
index 72eab8a..5d65f99 100644
--- a/src/database/models/OrderItem.js
+++ b/src/database/models/OrderItem.js
@@ -1,9 +1,14 @@
+import { createElement, lazy } from 'react'
+
+const OrderItemInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/OrderItems/OrderItemInfo')
+)
import OrderItemIcon from '../../components/Icons/OrderItemIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
-import BinIcon from '../../components/Icons/BinIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
import XMarkIcon from '../../components/Icons/XMarkIcon'
+import BinIcon from '../../components/Icons/BinIcon'
export const OrderItem = {
name: 'orderItem',
@@ -15,19 +20,19 @@ export const OrderItem = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/inventory/orderitems/info?orderItemId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -37,40 +42,31 @@ export const OrderItem = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
- },
- disabled: (objectData) => {
- return objectData?.state?.type != 'draft'
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
- },
- disabled: (objectData) => {
- return objectData?.state?.type != 'draft'
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -79,6 +75,12 @@ export const OrderItem = {
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(OrderItemInfo)
+ }
+ ],
group: [],
filters: [
'name',
diff --git a/src/database/models/Part.js b/src/database/models/Part.js
index c88600b..7e89a31 100644
--- a/src/database/models/Part.js
+++ b/src/database/models/Part.js
@@ -1,8 +1,16 @@
+import { createElement, lazy } from 'react'
+
+const PartInfo = lazy(
+ () => import('../../components/Dashboard/Management/Parts/PartInfo')
+)
+const NewPartSku = lazy(
+ () => import('../../components/Dashboard/Management/PartSkus/NewPartSku')
+)
import EditIcon from '../../components/Icons/EditIcon'
-import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
-import PartIcon from '../../components/Icons/PartIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
import XMarkIcon from '../../components/Icons/XMarkIcon'
+import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
+import PartIcon from '../../components/Icons/PartIcon'
import PlusIcon from '../../components/Icons/PlusIcon'
export const Part = {
@@ -15,39 +23,40 @@ export const Part = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/parts/info?partId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/parts/info?partId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/parts/info?partId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/parts/info?partId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,16 +64,24 @@ export const Part = {
{ type: 'divider' },
{
name: 'newPartSku',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Part SKU',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/management/parts/info?partId=${_id}&action=newPartSku`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewPartSku, { defaultValues: { part: objectData }, onOk, reset: true })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PartInfo)
+ }
+ ],
columns: [
'_reference',
'name',
diff --git a/src/database/models/PartSku.js b/src/database/models/PartSku.js
index c409c11..3ec88a7 100644
--- a/src/database/models/PartSku.js
+++ b/src/database/models/PartSku.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const PartSkuInfo = lazy(
+ () => import('../../components/Dashboard/Management/PartSkus/PartSkuInfo')
+)
import PartSkuIcon from '../../components/Icons/PartSkuIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const PartSku = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/partskus/info?partSkuId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/partskus/info?partSkuId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/partskus/info?partSkuId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/partskus/info?partSkuId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const PartSku = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/partskus/info?partSkuId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PartSkuInfo)
}
],
columns: [
diff --git a/src/database/models/PartStock.js b/src/database/models/PartStock.js
index e66cfb7..ecffb66 100644
--- a/src/database/models/PartStock.js
+++ b/src/database/models/PartStock.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const PartStockInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/PartStocks/PartStockInfo')
+)
import PartStockIcon from '../../components/Icons/PartStockIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
@@ -11,11 +16,18 @@ export const PartStock = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/inventory/partstocks/info?partStockId=${_id}`
+ icon: InfoCircleIcon
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PartStockInfo)
}
],
filters: [
diff --git a/src/database/models/Payment.js b/src/database/models/Payment.js
index 390dbed..e55d0d9 100644
--- a/src/database/models/Payment.js
+++ b/src/database/models/Payment.js
@@ -1,3 +1,20 @@
+import { createElement, lazy } from 'react'
+
+const PaymentInfo = lazy(
+ () => import('../../components/Dashboard/Finance/Payments/PaymentInfo')
+)
+const PostPayment = lazy(
+ () => import('../../components/Dashboard/Finance/Payments/PostPayment')
+)
+const AuthorisePayment = lazy(
+ () => import('../../components/Dashboard/Finance/Payments/AuthorisePayment')
+)
+const DeclinePayment = lazy(
+ () => import('../../components/Dashboard/Finance/Payments/DeclinePayment')
+)
+const CancelPayment = lazy(
+ () => import('../../components/Dashboard/Finance/Payments/CancelPayment')
+)
import PaymentIcon from '../../components/Icons/PaymentIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
@@ -15,19 +32,19 @@ export const Payment = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/finance/payments/info?paymentId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -37,34 +54,31 @@ export const Payment = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -75,60 +89,74 @@ export const Payment = {
{ type: 'divider' },
{
name: 'post',
+ type: 'modal',
+ modalWidth: 520,
label: 'Post',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=post`,
visible: (objectData) => {
return objectData?.state?.type == 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PostPayment, { objectData, onOk })
}
},
{
name: 'authorise',
+ type: 'modal',
+ modalWidth: 520,
label: 'Authorise',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=authorise`,
disabled: (objectData) => {
return objectData?.state?.type != 'posted'
},
visible: (objectData) => {
return objectData?.state?.type == 'posted'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(AuthorisePayment, { objectData, onOk })
}
},
{
name: 'decline',
+ type: 'modal',
+ modalWidth: 520,
label: 'Decline',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=decline`,
disabled: (objectData) => {
return objectData?.state?.type != 'posted'
},
visible: (objectData) => {
return objectData?.state?.type == 'posted'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(DeclinePayment, { objectData, onOk })
}
},
{
name: 'cancel',
+ type: 'modal',
+ modalWidth: 520,
label: 'Cancel',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/finance/payments/info?paymentId=${_id}&action=cancel`,
disabled: (objectData) => {
return objectData?.state?.type != 'posted'
},
visible: (objectData) => {
return objectData?.state?.type == 'posted'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(CancelPayment, { objectData, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PaymentInfo)
+ }
+ ],
group: ['vendor', 'client', 'invoice'],
filters: [
'vendor',
diff --git a/src/database/models/Printer.js b/src/database/models/Printer.js
index 1ab15b7..58abab9 100644
--- a/src/database/models/Printer.js
+++ b/src/database/models/Printer.js
@@ -1,3 +1,17 @@
+import { createElement, lazy } from 'react'
+
+const PrinterInfo = lazy(
+ () => import('../../components/Dashboard/Production/Printers/PrinterInfo')
+)
+const NewPrinterProfile = lazy(
+ () => import('../../components/Dashboard/Production/PrinterProfiles/NewPrinterProfile')
+)
+const LoadFilamentStock = lazy(
+ () => import('../../components/Dashboard/Inventory/FilamentStocks/LoadFilamentStock')
+)
+const UnloadFilamentStock = lazy(
+ () => import('../../components/Dashboard/Inventory/FilamentStocks/UnloadFilamentStock')
+)
import PrinterIcon from '../../components/Icons/PrinterIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import ReloadIcon from '../../components/Icons/ReloadIcon'
@@ -22,13 +36,13 @@ export const Printer = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/production/printers/info?printerId=${_id}`
+ icon: InfoCircleIcon
},
-
{
name: 'control',
label: 'Control',
@@ -38,31 +52,31 @@ export const Printer = {
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/production/printers/info?printerId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/production/printers/info?printerId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/production/printers/info?printerId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -70,11 +84,13 @@ export const Printer = {
{ type: 'divider' },
{
name: 'newPrinterProfile',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Printer Profile',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/production/printers/info?printerId=${_id}&action=newPrinterProfile`
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewPrinterProfile, { defaultValues: { printer: objectData }, onOk, reset: true })
+ }
},
{ type: 'divider' },
{
@@ -188,35 +204,57 @@ export const Printer = {
children: [
{
name: 'loadFilamentStock',
+ type: 'modal',
+ modalWidth: 700,
label: 'Load Filament Stock',
icon: FilamentStockIcon,
- url: (_id) =>
- `/dashboard/production/printers/control?printerId=${_id}&action=loadFilamentStock`,
disabled: (objectData) => {
return (
objectData?.state?.type == 'printing' ||
objectData?.state?.type == 'error' ||
objectData?.currentFilamentStock != null
)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(LoadFilamentStock, {
+ printer: objectData,
+ onOk,
+ reset: false,
+ filamentStockLoaded: false
+ })
}
},
{
name: 'unloadFilamentStock',
+ type: 'modal',
+ modalWidth: 700,
label: 'Unload Filament Stock',
icon: FilamentStockIcon,
- url: (_id) =>
- `/dashboard/production/printers/control?printerId=${_id}&action=unloadFilamentStock`,
disabled: (objectData) => {
return (
objectData?.state?.type == 'printing' ||
objectData?.state?.type == 'error' ||
objectData?.currentFilamentStock == null
)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(UnloadFilamentStock, {
+ printer: objectData,
+ onOk,
+ reset: false,
+ filamentStockLoaded: false
+ })
}
}
]
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PrinterInfo)
+ }
+ ],
columns: [
'_reference',
'name',
diff --git a/src/database/models/PrinterProfile.js b/src/database/models/PrinterProfile.js
index d5c106b..3319fe1 100644
--- a/src/database/models/PrinterProfile.js
+++ b/src/database/models/PrinterProfile.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const PrinterProfileInfo = lazy(
+ () => import('../../components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo')
+)
import PrinterProfileIcon from '../../components/Icons/PrinterProfileIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -280,47 +285,57 @@ export const PrinterProfile = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/production/printerprofiles/info?printerProfileId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/production/printerprofiles/info?printerProfileId=${_id}&action=edit`,
visible: (objectData) => !objectData?._isEditing
},
- {
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/production/printerprofiles/info?printerProfileId=${_id}&action=finishEdit`,
- visible: (objectData) => objectData?._isEditing === true
- },
{
name: 'cancelEdit',
label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/production/printerprofiles/info?printerProfileId=${_id}&action=cancelEdit`,
- visible: (objectData) => objectData?._isEditing === true
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
+ },
+ {
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
row: true,
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/production/printerprofiles/info?printerProfileId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PrinterProfileInfo)
}
],
columns: [
diff --git a/src/database/models/Product.js b/src/database/models/Product.js
index cd9f584..8c86f19 100644
--- a/src/database/models/Product.js
+++ b/src/database/models/Product.js
@@ -1,3 +1,11 @@
+import { createElement, lazy } from 'react'
+
+const ProductInfo = lazy(
+ () => import('../../components/Dashboard/Management/Products/ProductInfo')
+)
+const NewProductSku = lazy(
+ () => import('../../components/Dashboard/Management/ProductSkus/NewProductSku')
+)
import ProductIcon from '../../components/Icons/ProductIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +23,40 @@ export const Product = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/products/info?productId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/products/info?productId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/products/info?productId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/products/info?productId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -57,16 +66,24 @@ export const Product = {
},
{
name: 'newProductSku',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Product SKU',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/management/products/info?productId=${_id}&action=newProductSku`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewProductSku, { defaultValues: { product: objectData }, onOk, reset: true })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ProductInfo)
+ }
+ ],
columns: [
'_reference',
'name',
diff --git a/src/database/models/ProductCategory.js b/src/database/models/ProductCategory.js
index 21aaa60..069623a 100644
--- a/src/database/models/ProductCategory.js
+++ b/src/database/models/ProductCategory.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const ProductCategoryInfo = lazy(
+ () => import('../../components/Dashboard/Management/ProductCategories/ProductCategoryInfo')
+)
import ProductCategoryIcon from '../../components/Icons/ProductCategoryIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -16,40 +21,40 @@ export const ProductCategory = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/management/productcategories/info?productCategoryId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/productcategories/info?productCategoryId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/productcategories/info?productCategoryId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/productcategories/info?productCategoryId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -57,11 +62,17 @@ export const ProductCategory = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/productcategories/info?productCategoryId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ProductCategoryInfo)
}
],
columns: ['_reference', 'name', 'createdAt', 'updatedAt'],
diff --git a/src/database/models/ProductSku.js b/src/database/models/ProductSku.js
index fba329b..f9cf349 100644
--- a/src/database/models/ProductSku.js
+++ b/src/database/models/ProductSku.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const ProductSkuInfo = lazy(
+ () => import('../../components/Dashboard/Management/ProductSkus/ProductSkuInfo')
+)
import ProductSkuIcon from '../../components/Icons/ProductSkuIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const ProductSku = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/productskus/info?productSkuId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/productskus/info?productSkuId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/productskus/info?productSkuId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/productskus/info?productSkuId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const ProductSku = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/productskus/info?productSkuId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ProductSkuInfo)
}
],
columns: [
diff --git a/src/database/models/ProductStock.js b/src/database/models/ProductStock.js
index 7c14299..088d459 100644
--- a/src/database/models/ProductStock.js
+++ b/src/database/models/ProductStock.js
@@ -1,3 +1,11 @@
+import { createElement, lazy } from 'react'
+
+const ProductStockInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/ProductStocks/ProductStockInfo')
+)
+const PostProductStock = lazy(
+ () => import('../../components/Dashboard/Inventory/ProductStocks/PostProductStock')
+)
import ProductStockIcon from '../../components/Icons/ProductStockIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,20 +23,19 @@ export const ProductStock = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/inventory/productstocks/info?productStockId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/inventory/productstocks/info?productStockId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -38,34 +45,31 @@ export const ProductStock = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/inventory/productstocks/info?productStockId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/productstocks/info?productStockId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/inventory/productstocks/info?productStockId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -76,16 +80,24 @@ export const ProductStock = {
{ type: 'divider' },
{
name: 'post',
+ type: 'modal',
+ modalWidth: 520,
label: 'Post',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/productstocks/info?productStockId=${_id}&action=post`,
visible: (objectData) => {
return objectData?.state?.type == 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PostProductStock, { objectData, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ProductStockInfo)
+ }
+ ],
filters: [
'productSku',
'state',
diff --git a/src/database/models/PurchaseOrder.js b/src/database/models/PurchaseOrder.js
index 3986326..fdd9349 100644
--- a/src/database/models/PurchaseOrder.js
+++ b/src/database/models/PurchaseOrder.js
@@ -1,3 +1,26 @@
+import { createElement, lazy } from 'react'
+
+const PurchaseOrderInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo')
+)
+const NewOrderItem = lazy(
+ () => import('../../components/Dashboard/Inventory/OrderItems/NewOrderItem')
+)
+const NewShipment = lazy(
+ () => import('../../components/Dashboard/Inventory/Shipments/NewShipment')
+)
+const NewInvoice = lazy(
+ () => import('../../components/Dashboard/Finance/Invoices/NewInvoice')
+)
+const PostPurchaseOrder = lazy(
+ () => import('../../components/Dashboard/Inventory/PurchaseOrders/PostPurchaseOrder')
+)
+const AcknowledgePurchaseOrder = lazy(
+ () => import('../../components/Dashboard/Inventory/PurchaseOrders/AcknowledgePurchaseOrder')
+)
+const CancelPurchaseOrder = lazy(
+ () => import('../../components/Dashboard/Inventory/PurchaseOrders/CancelPurchaseOrder')
+)
import PurchaseOrderIcon from '../../components/Icons/PurchaseOrderIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import PlusIcon from '../../components/Icons/PlusIcon'
@@ -16,20 +39,19 @@ export const PurchaseOrder = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -39,34 +61,31 @@ export const PurchaseOrder = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -76,34 +95,49 @@ export const PurchaseOrder = {
},
{ type: 'divider' },
{
- name: 'New Order Item',
+ name: 'newOrderItem',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Order Item',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=newOrderItem`,
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewOrderItem, {
+ defaultValues: {
+ order: { _id: objectData._id },
+ orderType: 'purchaseOrder',
+ syncAmount: 'itemCost'
+ },
+ onOk,
+ reset: true
+ })
}
},
{
- name: 'New Shipment',
+ name: 'newShipment',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Shipment',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=newShipment`,
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewShipment, {
+ defaultValues: { orderType: 'purchaseOrder', order: { _id: objectData._id } },
+ onOk,
+ reset: true
+ })
}
},
{
- name: 'New Invoice',
+ name: 'newInvoice',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Invoice',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=newInvoice`,
disabled: (objectData) => {
const allowedStates = [
'received',
@@ -112,6 +146,13 @@ export const PurchaseOrder = {
'partiallyShipped'
]
return !allowedStates.includes(objectData?.state?.type)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewInvoice, {
+ defaultValues: { orderType: 'purchaseOrder', order: objectData },
+ onOk,
+ reset: true
+ })
}
},
{
@@ -119,30 +160,33 @@ export const PurchaseOrder = {
},
{
name: 'post',
+ type: 'modal',
+ modalWidth: 520,
label: 'Post',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=post`,
visible: (objectData) => {
return objectData?.state?.type == 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PostPurchaseOrder, { objectData, onOk })
}
},
{
name: 'acknowledge',
+ type: 'modal',
+ modalWidth: 520,
label: 'Acknowledge',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=acknowledge`,
visible: (objectData) => {
return objectData?.state?.type == 'sent'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(AcknowledgePurchaseOrder, { objectData, onOk })
}
},
{
name: 'complete',
label: 'Complete',
- type: 'button',
icon: CheckIcon,
url: (_id) =>
`/dashboard/inventory/shipments/info?shipmentId=${_id}&action=complete`,
@@ -155,12 +199,11 @@ export const PurchaseOrder = {
},
{
name: 'cancel',
+ type: 'modal',
+ modalWidth: 520,
label: 'Cancel',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/inventory/purchaseorders/info?purchaseOrderId=${_id}&action=cancel`,
disabled: (objectData) => {
return objectData?.state?.type == 'cancelled'
},
@@ -170,9 +213,18 @@ export const PurchaseOrder = {
objectData?.state?.type != 'completed' &&
objectData?.state?.type != 'received'
)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(CancelPurchaseOrder, { objectData, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(PurchaseOrderInfo)
+ }
+ ],
group: ['vendor'],
filters: [
'vendor',
diff --git a/src/database/models/SalesOrder.js b/src/database/models/SalesOrder.js
index e322f46..d6e5563 100644
--- a/src/database/models/SalesOrder.js
+++ b/src/database/models/SalesOrder.js
@@ -1,3 +1,26 @@
+import { createElement, lazy } from 'react'
+
+const SalesOrderInfo = lazy(
+ () => import('../../components/Dashboard/Sales/SalesOrders/SalesOrderInfo')
+)
+const NewOrderItem = lazy(
+ () => import('../../components/Dashboard/Inventory/OrderItems/NewOrderItem')
+)
+const NewShipment = lazy(
+ () => import('../../components/Dashboard/Inventory/Shipments/NewShipment')
+)
+const NewInvoice = lazy(
+ () => import('../../components/Dashboard/Finance/Invoices/NewInvoice')
+)
+const PostSalesOrder = lazy(
+ () => import('../../components/Dashboard/Sales/SalesOrders/PostSalesOrder')
+)
+const ConfirmSalesOrder = lazy(
+ () => import('../../components/Dashboard/Sales/SalesOrders/ConfirmSalesOrder')
+)
+const CancelSalesOrder = lazy(
+ () => import('../../components/Dashboard/Sales/SalesOrders/CancelSalesOrder')
+)
import SalesOrderIcon from '../../components/Icons/SalesOrderIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import PlusIcon from '../../components/Icons/PlusIcon'
@@ -16,19 +39,19 @@ export const SalesOrder = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/sales/salesorders/info?salesOrderId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -38,34 +61,31 @@ export const SalesOrder = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -75,34 +95,54 @@ export const SalesOrder = {
},
{ type: 'divider' },
{
- name: 'New Order Item',
+ name: 'newOrderItem',
+ type: 'modal',
+ modalWidth: 700,
label: 'New Order Item',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=newOrderItem`,
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewOrderItem, {
+ defaultValues: {
+ order: { _id: objectData._id },
+ orderType: 'salesOrder',
+ syncAmount: 'itemPrice'
+ },
+ onOk,
+ reset: true
+ })
}
},
{
- name: 'New Shipment',
+ name: 'newShipment',
+ type: 'modal',
+ modalWidth: 700,
+ modalCentered: false,
label: 'New Shipment',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=newShipment`,
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewShipment, {
+ defaultValues: {
+ orderType: 'salesOrder',
+ order: { _id: objectData._id }
+ },
+ onOk,
+ reset: true
+ })
}
},
{
- name: 'New Invoice',
+ name: 'newInvoice',
+ type: 'modal',
+ modalWidth: 700,
+ modalCentered: false,
label: 'New Invoice',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=newInvoice`,
disabled: (objectData) => {
const allowedStates = [
'delivered',
@@ -113,38 +153,50 @@ export const SalesOrder = {
'partiallyShipped'
]
return !allowedStates.includes(objectData?.state?.type)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewInvoice, {
+ defaultValues: { orderType: 'salesOrder', order: objectData },
+ onOk,
+ reset: true
+ })
}
},
{ type: 'divider' },
{
name: 'post',
+ type: 'modal',
+ modalWidth: 520,
+ modalCentered: true,
label: 'Post',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=post`,
visible: (objectData) => {
return objectData?.state?.type == 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PostSalesOrder, { objectData, onOk })
}
},
{
name: 'confirm',
+ type: 'modal',
+ modalWidth: 520,
label: 'Confirm',
- type: 'button',
+ modalCentered: true,
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=confirm`,
visible: (objectData) => {
return objectData?.state?.type == 'sent'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(ConfirmSalesOrder, { objectData, onOk })
}
},
{
name: 'complete',
+ type: 'page',
+ pageName: 'info',
label: 'Complete',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=complete`,
disabled: (objectData) => {
return objectData?.state?.type != 'delivered'
},
@@ -154,12 +206,11 @@ export const SalesOrder = {
},
{
name: 'cancel',
+ type: 'modal',
+ modalWidth: 520,
label: 'Cancel',
- type: 'button',
icon: XMarkIcon,
danger: true,
- url: (_id) =>
- `/dashboard/sales/salesorders/info?salesOrderId=${_id}&action=cancel`,
disabled: (objectData) => {
return objectData?.state?.type == 'cancelled'
},
@@ -169,9 +220,18 @@ export const SalesOrder = {
objectData?.state?.type != 'completed' &&
objectData?.state?.type != 'delivered'
)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(CancelSalesOrder, { objectData, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(SalesOrderInfo)
+ }
+ ],
group: ['client'],
filters: [
'client',
diff --git a/src/database/models/Shipment.js b/src/database/models/Shipment.js
index d381f9c..a7e1a23 100644
--- a/src/database/models/Shipment.js
+++ b/src/database/models/Shipment.js
@@ -1,3 +1,17 @@
+import { createElement, lazy } from 'react'
+
+const ShipmentInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/Shipments/ShipmentInfo')
+)
+const ShipShipment = lazy(
+ () => import('../../components/Dashboard/Inventory/Shipments/ShipShipment')
+)
+const ReceiveShipment = lazy(
+ () => import('../../components/Dashboard/Inventory/Shipments/ReceiveShipment')
+)
+const CancelShipment = lazy(
+ () => import('../../components/Dashboard/Inventory/Shipments/CancelShipment')
+)
import ShipmentIcon from '../../components/Icons/ShipmentIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,19 +29,19 @@ export const Shipment = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/inventory/shipments/info?shipmentId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/inventory/shipments/info?shipmentId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -37,40 +51,31 @@ export const Shipment = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/inventory/shipments/info?shipmentId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
- },
- disabled: (objectData) => {
- return objectData?.state?.type != 'draft'
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/shipments/info?shipmentId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
- },
- disabled: (objectData) => {
- return objectData?.state?.type != 'draft'
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/inventory/shipments/info?shipmentId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -81,11 +86,10 @@ export const Shipment = {
{ type: 'divider' },
{
name: 'ship',
+ type: 'modal',
+ modalWidth: 520,
label: 'Ship',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/shipments/info?shipmentId=${_id}&action=ship`,
disabled: (objectData) => {
return objectData?.state?.type != 'planned'
},
@@ -94,15 +98,17 @@ export const Shipment = {
objectData?.state?.type == 'planned' ||
objectData?.state?.type == 'draft'
)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(ShipShipment, { objectData, onOk })
}
},
{
name: 'receive',
+ type: 'modal',
+ modalWidth: 520,
label: 'Receive',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/shipments/info?shipmentId=${_id}&action=receive`,
disabled: (objectData) => {
return objectData?.state?.type != 'shipped'
},
@@ -111,7 +117,27 @@ export const Shipment = {
objectData?.state?.type == 'shipped' ||
objectData?.state?.type == 'delivered'
)
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(ReceiveShipment, { objectData, onOk })
}
+ },
+ {
+ name: 'cancel',
+ type: 'modal',
+ modalWidth: 520,
+ label: 'Cancel',
+ icon: CheckIcon,
+ danger: true,
+ content: (objectData, { onOk } = {}) => {
+ return createElement(CancelShipment, { objectData, onOk })
+ }
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(ShipmentInfo)
}
],
group: [],
diff --git a/src/database/models/StockAudit.js b/src/database/models/StockAudit.js
index 614fab4..4640d46 100644
--- a/src/database/models/StockAudit.js
+++ b/src/database/models/StockAudit.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const StockAuditInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/StockAudits/StockAuditInfo')
+)
import StockAuditIcon from '../../components/Icons/StockAuditIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
@@ -11,11 +16,18 @@ export const StockAudit = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/inventory/stockaudits/info?stockAuditId=${_id}`
+ icon: InfoCircleIcon
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(StockAuditInfo)
}
],
columns: ['_reference', 'state', 'createdAt', 'updatedAt'],
diff --git a/src/database/models/StockLocation.js b/src/database/models/StockLocation.js
index 06674f8..d44d38d 100644
--- a/src/database/models/StockLocation.js
+++ b/src/database/models/StockLocation.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const StockLocationInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/StockLocations/StockLocationInfo')
+)
import StockLocationIcon from '../../components/Icons/StockLocationIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
@@ -11,12 +16,18 @@ export const StockLocation = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/inventory/stocklocations/info?stockLocationId=${_id}`
+ icon: InfoCircleIcon
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(StockLocationInfo)
}
],
filters: ['name','createdAt','updatedAt','_reference'],
diff --git a/src/database/models/StockTransfer.js b/src/database/models/StockTransfer.js
index 328bd02..230cf97 100644
--- a/src/database/models/StockTransfer.js
+++ b/src/database/models/StockTransfer.js
@@ -1,3 +1,11 @@
+import { createElement, lazy } from 'react'
+
+const StockTransferInfo = lazy(
+ () => import('../../components/Dashboard/Inventory/StockTransfers/StockTransferInfo')
+)
+const PostStockTransfer = lazy(
+ () => import('../../components/Dashboard/Inventory/StockTransfers/PostStockTransfer')
+)
import StockTransferIcon from '../../components/Icons/StockTransferIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,20 +23,19 @@ export const StockTransfer = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) =>
- `/dashboard/inventory/stocktransfers/info?stockTransferId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
- type: 'button',
icon: EditIcon,
- url: (_id) =>
- `/dashboard/inventory/stocktransfers/info?stockTransferId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -38,34 +45,31 @@ export const StockTransfer = {
},
{
name: 'cancelEdit',
- label: 'Cancel Edit',
- type: 'button',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/inventory/stocktransfers/info?stockTransferId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'finishEdit',
- label: 'Finish Edit',
- type: 'button',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/stocktransfers/info?stockTransferId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
- type: 'button',
icon: BinIcon,
danger: true,
- url: (_id) =>
- `/dashboard/inventory/stocktransfers/info?stockTransferId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
@@ -76,16 +80,24 @@ export const StockTransfer = {
{ type: 'divider' },
{
name: 'post',
+ type: 'modal',
+ modalWidth: 520,
label: 'Post',
- type: 'button',
icon: CheckIcon,
- url: (_id) =>
- `/dashboard/inventory/stocktransfers/info?stockTransferId=${_id}&action=post`,
visible: (objectData) => {
return objectData?.state?.type == 'draft'
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(PostStockTransfer, { objectData, onOk })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(StockTransferInfo)
+ }
+ ],
filters: [
'state',
'state.type',
diff --git a/src/database/models/SubJob.js b/src/database/models/SubJob.js
index 07440f1..45e61a8 100644
--- a/src/database/models/SubJob.js
+++ b/src/database/models/SubJob.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const SubJobInfo = lazy(
+ () => import('../../components/Dashboard/Production/SubJobs/SubJobInfo')
+)
import SubJobIcon from '../../components/Icons/SubJobIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import XMarkIcon from '../../components/Icons/XMarkIcon'
@@ -13,24 +18,31 @@ export const SubJob = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/production/subjobs/info?subJobId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'cancel',
+ type: 'page',
+ pageName: 'info',
label: 'Cancel Sub Job',
row: true,
icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/production/subjobs/info?subJobId=${_id}&action=cancel`,
disabled: (objectData) => {
return objectData?.state?.type !== 'queued'
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(SubJobInfo)
+ }
+ ],
columns: [
'_reference',
'printer',
diff --git a/src/database/models/TaxRate.js b/src/database/models/TaxRate.js
index eebc8bb..38f0656 100644
--- a/src/database/models/TaxRate.js
+++ b/src/database/models/TaxRate.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const TaxRateInfo = lazy(
+ () => import('../../components/Dashboard/Management/TaxRates/TaxRateInfo')
+)
import TaxRateIcon from '../../components/Icons/TaxRateIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const TaxRate = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/taxrates/info?taxRateId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/taxrates/info?taxRateId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/taxrates/info?taxRateId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/taxrates/info?taxRateId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const TaxRate = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/taxrates/info?taxRateId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(TaxRateInfo)
}
],
columns: [
diff --git a/src/database/models/TaxRecord.js b/src/database/models/TaxRecord.js
index 4027923..3eea782 100644
--- a/src/database/models/TaxRecord.js
+++ b/src/database/models/TaxRecord.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const TaxRecordInfo = lazy(
+ () => import('../../components/Dashboard/Finance/TaxRecords/TaxRecordInfo')
+)
import TaxRecordIcon from '../../components/Icons/TaxRecordIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const TaxRecord = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/finance/taxrecords/info?taxRecordId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/finance/taxrecords/info?taxRecordId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/finance/taxrecords/info?taxRecordId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/finance/taxrecords/info?taxRecordId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const TaxRecord = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/finance/taxrecords/info?taxRecordId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(TaxRecordInfo)
}
],
columns: [
diff --git a/src/database/models/User.js b/src/database/models/User.js
index 39f7a01..fe6e4d3 100644
--- a/src/database/models/User.js
+++ b/src/database/models/User.js
@@ -1,6 +1,16 @@
+import { createElement, lazy } from 'react'
+
+const UserInfo = lazy(
+ () => import('../../components/Dashboard/Management/Users/UserInfo')
+)
+const NewAppPassword = lazy(
+ () => import('../../components/Dashboard/Management/AppPasswords/NewAppPassword')
+)
import PersonIcon from '../../components/Icons/PersonIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
+import CheckIcon from '../../components/Icons/CheckIcon'
+import XMarkIcon from '../../components/Icons/XMarkIcon'
import PlusIcon from '../../components/Icons/PlusIcon'
export const User = {
@@ -13,31 +23,64 @@ export const User = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/users/info?userId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) => `/dashboard/management/users/info?userId=${_id}&action=edit`
+ visible: (objectData) => {
+ return !(objectData?._isEditing && objectData?._isEditing == true)
+ }
+ },
+ {
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
+ },
+ {
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
+ visible: (objectData) => {
+ return objectData?._isEditing && objectData?._isEditing == true
+ }
},
{
name: 'newAppPassword',
+ type: 'modal',
+ modalWidth: 680,
label: 'New App Password',
- type: 'button',
icon: PlusIcon,
- url: (_id) =>
- `/dashboard/management/users/info?userId=${_id}&action=newAppPassword`,
disabled: (objectData) => {
return objectData?._user?._id != objectData?._id
+ },
+ content: (objectData, { onOk } = {}) => {
+ return createElement(NewAppPassword, { defaultValues: { user: objectData }, onOk, reset: true })
}
}
],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(UserInfo)
+ }
+ ],
columns: ['_reference', 'name', 'username', 'email', 'role', 'createdAt'],
filters: [
'name',
diff --git a/src/database/models/Vendor.js b/src/database/models/Vendor.js
index 5975e36..3475eee 100644
--- a/src/database/models/Vendor.js
+++ b/src/database/models/Vendor.js
@@ -1,3 +1,8 @@
+import { createElement, lazy } from 'react'
+
+const VendorInfo = lazy(
+ () => import('../../components/Dashboard/Management/Vendors/VendorInfo')
+)
import VendorIcon from '../../components/Icons/VendorIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
@@ -15,39 +20,40 @@ export const Vendor = {
actions: [
{
name: 'info',
+ type: 'page',
+ pageName: 'info',
label: 'Info',
default: true,
row: true,
- icon: InfoCircleIcon,
- url: (_id) => `/dashboard/management/vendors/info?vendorId=${_id}`
+ icon: InfoCircleIcon
},
{
name: 'edit',
+ type: 'page',
+ pageName: 'info',
label: 'Edit',
row: true,
icon: EditIcon,
- url: (_id) =>
- `/dashboard/management/vendors/info?vendorId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
}
},
{
- name: 'finishEdit',
- label: 'Save Edits',
- icon: CheckIcon,
- url: (_id) =>
- `/dashboard/management/vendors/info?vendorId=${_id}&action=finishEdit`,
+ name: 'cancelEdit',
+ label: 'Cancel Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: XMarkIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
},
{
- name: 'cancelEdit',
- label: 'Cancel Edits',
- icon: XMarkIcon,
- url: (_id) =>
- `/dashboard/management/vendors/info?vendorId=${_id}&action=cancelEdit`,
+ name: 'finishEdit',
+ label: 'Save Edits',
+ type: 'page',
+ pageName: 'info',
+ icon: CheckIcon,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
}
@@ -55,11 +61,17 @@ export const Vendor = {
{ type: 'divider' },
{
name: 'delete',
+ type: 'page',
+ pageName: 'info',
label: 'Delete',
icon: BinIcon,
- danger: true,
- url: (_id) =>
- `/dashboard/management/vendors/info?vendorId=${_id}&action=delete`
+ danger: true
+ }
+ ],
+ pages: [
+ {
+ name: 'info',
+ content: () => createElement(VendorInfo)
}
],
columns: [
diff --git a/src/routes/FinanceRoutes.jsx b/src/routes/FinanceRoutes.jsx
index 675e301..125176a 100644
--- a/src/routes/FinanceRoutes.jsx
+++ b/src/routes/FinanceRoutes.jsx
@@ -14,24 +14,15 @@ const TaxRecordsInfoRedirect = () => {
const Invoices = lazy(
() => import('../components/Dashboard/Finance/Invoices.jsx')
)
-const InvoiceInfo = lazy(
- () => import('../components/Dashboard/Finance/Invoices/InvoiceInfo.jsx')
-)
const Payments = lazy(
() => import('../components/Dashboard/Finance/Payments.jsx')
)
-const PaymentInfo = lazy(
- () => import('../components/Dashboard/Finance/Payments/PaymentInfo.jsx')
-)
const FinanceOverview = lazy(
() => import('../components/Dashboard/Finance/FinanceOverview.jsx')
)
const TaxRecords = lazy(
() => import('../components/Dashboard/Finance/TaxRecords.jsx')
)
-const TaxRecordInfo = lazy(
- () => import('../components/Dashboard/Finance/TaxRecords/TaxRecordInfo.jsx')
-)
const FinanceRoutes = [
}
/>,
} />,
- }
- />,
} />,
- }
- />,
} />,
- }
- />,
import('../components/Dashboard/Inventory/FilamentStocks.jsx')
)
-const FilamentStockInfo = lazy(
- () =>
- import('../components/Dashboard/Inventory/FilamentStocks/FilamentStockInfo.jsx')
-)
const PartStocks = lazy(
() => import('../components/Dashboard/Inventory/PartStocks.jsx')
)
const ProductStocks = lazy(
() => import('../components/Dashboard/Inventory/ProductStocks.jsx')
)
-const ProductStockInfo = lazy(
- () =>
- import(
- '../components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx'
- )
-)
-const PartStockInfo = lazy(
- () => import('../components/Dashboard/Inventory/PartStocks/PartStockInfo.jsx')
-)
const StockEvents = lazy(
() => import('../components/Dashboard/Inventory/StockEvents.jsx')
)
const StockAudits = lazy(
() => import('../components/Dashboard/Inventory/StockAudits.jsx')
)
-const StockAuditInfo = lazy(
- () =>
- import('../components/Dashboard/Inventory/StockAudits/StockAuditInfo.jsx')
-)
const PurchaseOrders = lazy(
() => import('../components/Dashboard/Inventory/PurchaseOrders.jsx')
)
-const PurchaseOrderInfo = lazy(
- () =>
- import('../components/Dashboard/Inventory/PurchaseOrders/PurchaseOrderInfo.jsx')
-)
const OrderItems = lazy(
() => import('../components/Dashboard/Inventory/OrderItems.jsx')
)
-const OrderItemInfo = lazy(
- () => import('../components/Dashboard/Inventory/OrderItems/OrderItemInfo.jsx')
-)
const Shipments = lazy(
() => import('../components/Dashboard/Inventory/Shipments.jsx')
)
-const ShipmentInfo = lazy(
- () => import('../components/Dashboard/Inventory/Shipments/ShipmentInfo.jsx')
-)
const InventoryOverview = lazy(
() => import('../components/Dashboard/Inventory/InventoryOverview.jsx')
)
const StockLocations = lazy(
() => import('../components/Dashboard/Inventory/StockLocations.jsx')
)
-const StockLocationInfo = lazy(
- () =>
- import('../components/Dashboard/Inventory/StockLocations/StockLocationInfo.jsx')
-)
const StockTransfers = lazy(
() => import('../components/Dashboard/Inventory/StockTransfers.jsx')
)
-const StockTransferInfo = lazy(
- () =>
- import(
- '../components/Dashboard/Inventory/StockTransfers/StockTransferInfo.jsx'
- )
-)
const InventoryRoutes = [
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
- } />,
- }
- />
+ } />
]
export default InventoryRoutes
diff --git a/src/routes/ManagementRoutes.jsx b/src/routes/ManagementRoutes.jsx
index c26bfbc..e024f85 100644
--- a/src/routes/ManagementRoutes.jsx
+++ b/src/routes/ManagementRoutes.jsx
@@ -4,69 +4,32 @@ import { Route } from 'react-router-dom'
const Filaments = lazy(
() => import('../components/Dashboard/Management/Filaments')
)
-const FilamentInfo = lazy(
- () => import('../components/Dashboard/Management/Filaments/FilamentInfo.jsx')
-)
const FilamentSkus = lazy(
() => import('../components/Dashboard/Management/FilamentSkus.jsx')
)
-const FilamentSkuInfo = lazy(
- () =>
- import('../components/Dashboard/Management/FilamentSkus/FilamentSkuInfo.jsx')
-)
const Parts = lazy(() => import('../components/Dashboard/Management/Parts.jsx'))
-const PartInfo = lazy(
- () => import('../components/Dashboard/Management/Parts/PartInfo.jsx')
-)
const PartSkus = lazy(
() => import('../components/Dashboard/Management/PartSkus.jsx')
)
-const PartSkuInfo = lazy(
- () => import('../components/Dashboard/Management/PartSkus/PartSkuInfo.jsx')
-)
const Products = lazy(
() => import('../components/Dashboard/Management/Products.jsx')
)
-const ProductInfo = lazy(
- () => import('../components/Dashboard/Management/Products/ProductInfo.jsx')
-)
const ProductCategories = lazy(
() => import('../components/Dashboard/Management/ProductCategories.jsx')
)
-const ProductCategoryInfo = lazy(
- () =>
- import('../components/Dashboard/Management/ProductCategories/ProductCategoryInfo.jsx')
-)
const ProductSkus = lazy(
() => import('../components/Dashboard/Management/ProductSkus.jsx')
)
-const ProductSkuInfo = lazy(
- () =>
- import('../components/Dashboard/Management/ProductSkus/ProductSkuInfo.jsx')
-)
const Vendors = lazy(() => import('../components/Dashboard/Management/Vendors'))
-const VendorInfo = lazy(
- () => import('../components/Dashboard/Management/Vendors/VendorInfo')
-)
const Materials = lazy(
() => import('../components/Dashboard/Management/Materials')
)
-const MaterialInfo = lazy(
- () => import('../components/Dashboard/Management/Materials/MaterialInfo.jsx')
-)
const Couriers = lazy(
() => import('../components/Dashboard/Management/Couriers')
)
-const CourierInfo = lazy(
- () => import('../components/Dashboard/Management/Couriers/CourierInfo.jsx')
-)
const CourierServices = lazy(
() => import('../components/Dashboard/Management/CourierServices')
)
-const CourierServiceInfo = lazy(
- () =>
- import('../components/Dashboard/Management/CourierServices/CourierServiceInfo.jsx')
-)
const Settings = lazy(
() => import('../components/Dashboard/Management/Settings')
)
@@ -76,243 +39,103 @@ const AuditLogs = lazy(
const NoteTypes = lazy(
() => import('../components/Dashboard/Management/NoteTypes.jsx')
)
-const NoteTypeInfo = lazy(
- () => import('../components/Dashboard/Management/NoteTypes/NoteTypeInfo.jsx')
-)
const NoteInfo = lazy(
() => import('../components/Dashboard/Management/Notes/NoteInfo.jsx')
)
const Users = lazy(() => import('../components/Dashboard/Management/Users.jsx'))
-const UserInfo = lazy(
- () => import('../components/Dashboard/Management/Users/UserInfo.jsx')
-)
const AppPasswords = lazy(
() => import('../components/Dashboard/Management/AppPasswords.jsx')
)
-const AppPasswordInfo = lazy(
- () =>
- import('../components/Dashboard/Management/AppPasswords/AppPasswordInfo.jsx')
-)
const Hosts = lazy(() => import('../components/Dashboard/Management/Hosts.jsx'))
-const HostInfo = lazy(
- () => import('../components/Dashboard/Management/Hosts/HostInfo.jsx')
-)
const DocumentSizes = lazy(
() => import('../components/Dashboard/Management/DocumentSizes.jsx')
)
-const DocumentSizeInfo = lazy(
- () =>
- import('../components/Dashboard/Management/DocumentSizes/DocumentSizeInfo.jsx')
-)
const DocumentTemplates = lazy(
() => import('../components/Dashboard/Management/DocumentTemplates.jsx')
)
-const DocumentTemplateInfo = lazy(
- () =>
- import('../components/Dashboard/Management/DocumentTemplates/DocumentTemplateInfo.jsx')
-)
const DocumentPrinters = lazy(
() => import('../components/Dashboard/Management/DocumentPrinters.jsx')
)
-const DocumentPrinterInfo = lazy(
- () =>
- import('../components/Dashboard/Management/DocumentPrinters/DocumentPrinterInfo.jsx')
-)
const DocumentJobs = lazy(
() => import('../components/Dashboard/Management/DocumentJobs.jsx')
)
-const DocumentJobInfo = lazy(
- () =>
- import('../components/Dashboard/Management/DocumentJobs/DocumentJobInfo.jsx')
-)
const DocumentTemplateDesign = lazy(
() =>
import('../components/Dashboard/Management/DocumentTemplates/DocumentTemplateDesign.jsx')
)
const Files = lazy(() => import('../components/Dashboard/Management/Files.jsx'))
-const FileInfo = lazy(
- () => import('../components/Dashboard/Management/Files/FileInfo.jsx')
-)
const TaxRates = lazy(
() => import('../components/Dashboard/Management/TaxRates.jsx')
)
-const TaxRateInfo = lazy(
- () => import('../components/Dashboard/Management/TaxRates/TaxRateInfo.jsx')
-)
const About = lazy(() => import('../components/Dashboard/Management/About.jsx'))
const ManagementRoutes = [
} />,
- }
- />,
}
/>,
- }
- />,
} />,
- }
- />,
} />,
- }
- />,
} />,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
} />,
} />,
- }
- />,
- }
- />,
- }
- />,
+ } />,
} />,
- }
- />,
} />,
- }
- />,
} />,
- }
- />,
}
/>,
- }
- />,
} />,
- }
- />,
} />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- } />,
}
/>,
- }
- />,
} />,
} />,
} />,
- } />,
- }
- />
+ } />
]
export default ManagementRoutes
diff --git a/src/routes/ProductionRoutes.jsx b/src/routes/ProductionRoutes.jsx
index 68d366e..611e1f0 100644
--- a/src/routes/ProductionRoutes.jsx
+++ b/src/routes/ProductionRoutes.jsx
@@ -10,40 +10,19 @@ const Printers = lazy(
const ControlPrinter = lazy(
() => import('../components/Dashboard/Production/Printers/ControlPrinter.jsx')
)
-const PrinterInfo = lazy(
- () => import('../components/Dashboard/Production/Printers/PrinterInfo.jsx')
-)
const PrinterProfiles = lazy(
() => import('../components/Dashboard/Production/PrinterProfiles.jsx')
)
-const PrinterProfileInfo = lazy(
- () =>
- import('../components/Dashboard/Production/PrinterProfiles/PrinterProfileInfo.jsx')
-)
const FilamentProfiles = lazy(
() => import('../components/Dashboard/Production/FilamentProfiles.jsx')
)
-const FilamentProfileInfo = lazy(
- () =>
- import('../components/Dashboard/Production/FilamentProfiles/FilamentProfileInfo.jsx')
-)
const Jobs = lazy(() => import('../components/Dashboard/Production/Jobs.jsx'))
-const JobInfo = lazy(
- () => import('../components/Dashboard/Production/Jobs/JobInfo.jsx')
-)
const SubJobs = lazy(
() => import('../components/Dashboard/Production/SubJobs.jsx')
)
-const SubJobInfo = lazy(
- () => import('../components/Dashboard/Production/SubJobs/SubJobInfo.jsx')
-)
const GCodeFiles = lazy(
() => import('../components/Dashboard/Production/GCodeFiles')
)
-const GCodeFileInfo = lazy(
- () =>
- import('../components/Dashboard/Production/GCodeFiles/GCodeFileInfo.jsx')
-)
const GCodeFilePreview = lazy(
() =>
import('../components/Dashboard/Production/GCodeFiles/GCodeFilePreview.jsx')
@@ -61,49 +40,23 @@ const ProductionRoutes = [
path='production/printers/control'
element={}
/>,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
} />,
} />,
- }
- />,
- } />,
}
/>,
- }
- />,
import('../components/Dashboard/Sales/Clients.jsx'))
-const ClientInfo = lazy(
- () => import('../components/Dashboard/Sales/Clients/ClientInfo.jsx')
-)
const SalesOrders = lazy(
() => import('../components/Dashboard/Sales/SalesOrders.jsx')
)
-const SalesOrderInfo = lazy(
- () => import('../components/Dashboard/Sales/SalesOrders/SalesOrderInfo.jsx')
-)
const SalesOverview = lazy(
() => import('../components/Dashboard/Sales/SalesOverview.jsx')
)
const Marketplaces = lazy(
() => import('../components/Dashboard/Sales/Marketplaces.jsx')
)
-const MarketplaceInfo = lazy(
- () => import('../components/Dashboard/Sales/Marketplaces/MarketplaceInfo.jsx')
-)
const Listings = lazy(
() => import('../components/Dashboard/Sales/Listings.jsx')
)
-const ListingInfo = lazy(
- () => import('../components/Dashboard/Sales/Listings/ListingInfo.jsx')
-)
-const ListingVarientInfo = lazy(
- () =>
- import('../components/Dashboard/Sales/ListingVarients/ListingVarientInfo.jsx')
-)
const SalesRoutes = [
} />,
} />,
- }
- />,
}
/>,
- }
- />,
}
/>,
- }
- />,
- } />,
- }
- />,
- }
- />
+ } />
]
export default SalesRoutes