Compare commits
2 Commits
e32e48fa3a
...
eea7e1f724
| Author | SHA1 | Date | |
|---|---|---|---|
| eea7e1f724 | |||
| 8adf2d7847 |
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const Invoices = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='invoice' />
|
<ExportListButton objectType='invoice' />
|
||||||
|
<InfoActionButtons type='invoice' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const PaymentPolicies = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='paymentPolicy' />
|
<ExportListButton objectType='paymentPolicy' />
|
||||||
|
<InfoActionButtons type='paymentPolicy' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const Payments = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='payment' />
|
<ExportListButton objectType='payment' />
|
||||||
|
<InfoActionButtons type='payment' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const TaxRecords = () => {
|
|||||||
updateCollapseState={setColumnVisibility}
|
updateCollapseState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='taxRecord' />
|
<ExportListButton objectType='taxRecord' />
|
||||||
|
<InfoActionButtons type='taxRecord' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -56,6 +57,7 @@ const FilamentStocks = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='filamentStock' />
|
<ExportListButton objectType='filamentStock' />
|
||||||
|
<InfoActionButtons type='filamentStock' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const OrderItems = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='orderItem' />
|
<ExportListButton objectType='orderItem' />
|
||||||
|
<InfoActionButtons type='orderItem' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -56,6 +57,7 @@ const PartStocks = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='partStock' />
|
<ExportListButton objectType='partStock' />
|
||||||
|
<InfoActionButtons type='partStock' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -57,6 +58,7 @@ const ProductStocks = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='productStock' />
|
<ExportListButton objectType='productStock' />
|
||||||
|
<InfoActionButtons type='productStock' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const PurchaseOrders = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='purchaseOrder' />
|
<ExportListButton objectType='purchaseOrder' />
|
||||||
|
<InfoActionButtons type='purchaseOrder' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const Shipments = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='shipment' />
|
<ExportListButton objectType='shipment' />
|
||||||
|
<InfoActionButtons type='shipment' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -56,6 +57,7 @@ const StockAudits = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='stockAudit' />
|
<ExportListButton objectType='stockAudit' />
|
||||||
|
<InfoActionButtons type='stockAudit' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const StockEvents = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='stockEvent' />
|
<ExportListButton objectType='stockEvent' />
|
||||||
|
<InfoActionButtons type='stockEvent' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -54,6 +55,7 @@ const StockLocations = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='stockLocation' />
|
<ExportListButton objectType='stockLocation' />
|
||||||
|
<InfoActionButtons type='stockLocation' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -54,6 +55,7 @@ const StockTransfers = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='stockTransfer' />
|
<ExportListButton objectType='stockTransfer' />
|
||||||
|
<InfoActionButtons type='stockTransfer' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import SortSidebarButton from '../common/SortSidebarButton'
|
|||||||
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const AppPasswords = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='appPassword' />
|
<ExportListButton objectType='appPassword' />
|
||||||
|
<InfoActionButtons type='appPassword' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import FilterSidebarButton from '../common/FilterSidebarButton'
|
|||||||
import SortSidebarButton from '../common/SortSidebarButton'
|
import SortSidebarButton from '../common/SortSidebarButton'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import ObjectTableViewButton from '../common/ObjectTableViewButton'
|
import ObjectTableViewButton from '../common/ObjectTableViewButton'
|
||||||
@ -49,6 +50,7 @@ const AuditLogs = () => {
|
|||||||
updateVisibleState={updateColumnVisibility}
|
updateVisibleState={updateColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='auditLog' />
|
<ExportListButton objectType='auditLog' />
|
||||||
|
<InfoActionButtons type='auditLog' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const CourierServices = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='courierService' />
|
<ExportListButton objectType='courierService' />
|
||||||
|
<InfoActionButtons type='courierService' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const Couriers = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='courier' />
|
<ExportListButton objectType='courier' />
|
||||||
|
<InfoActionButtons type='courier' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const DocumentJobs = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='documentJob' />
|
<ExportListButton objectType='documentJob' />
|
||||||
|
<InfoActionButtons type='documentJob' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import { ApiServerContext } from '../../context/ApiServerContext'
|
|||||||
import { useCallback, useContext, useEffect, useRef, useState } from 'react'
|
import { useCallback, useContext, useEffect, useRef, useState } from 'react'
|
||||||
import { Modal } from 'antd'
|
import { Modal } from 'antd'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
|
import { toTemplateObjectData } from '../../utils/templateObjectData'
|
||||||
|
|
||||||
const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
||||||
const {
|
const {
|
||||||
@ -125,7 +126,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TemplatePreview
|
<TemplatePreview
|
||||||
objectData={objectData?.object}
|
objectData={toTemplateObjectData(objectData?.objects)}
|
||||||
documentTemplate={objectData?.documentTemplate}
|
documentTemplate={objectData?.documentTemplate}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -158,7 +159,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
|||||||
downloadTemplate(
|
downloadTemplate(
|
||||||
objectData.documentTemplate._id,
|
objectData.documentTemplate._id,
|
||||||
objectData.documentTemplate.content,
|
objectData.documentTemplate.content,
|
||||||
objectData.object,
|
toTemplateObjectData(objectData.objects),
|
||||||
fileName,
|
fileName,
|
||||||
'pdf',
|
'pdf',
|
||||||
() => {
|
() => {
|
||||||
@ -175,7 +176,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
|||||||
downloadTemplate(
|
downloadTemplate(
|
||||||
objectData.documentTemplate._id,
|
objectData.documentTemplate._id,
|
||||||
objectData.documentTemplate.content,
|
objectData.documentTemplate.content,
|
||||||
objectData.object,
|
toTemplateObjectData(objectData.objects),
|
||||||
fileName,
|
fileName,
|
||||||
'png',
|
'png',
|
||||||
() => {
|
() => {
|
||||||
@ -192,7 +193,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
|||||||
downloadTemplate(
|
downloadTemplate(
|
||||||
objectData.documentTemplate._id,
|
objectData.documentTemplate._id,
|
||||||
objectData.documentTemplate.content,
|
objectData.documentTemplate.content,
|
||||||
objectData.object,
|
toTemplateObjectData(objectData.objects),
|
||||||
fileName,
|
fileName,
|
||||||
'jpeg',
|
'jpeg',
|
||||||
() => {
|
() => {
|
||||||
@ -209,7 +210,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => {
|
|||||||
downloadTemplate(
|
downloadTemplate(
|
||||||
objectData.documentTemplate._id,
|
objectData.documentTemplate._id,
|
||||||
objectData.documentTemplate.content,
|
objectData.documentTemplate.content,
|
||||||
objectData.object,
|
toTemplateObjectData(objectData.objects),
|
||||||
fileName,
|
fileName,
|
||||||
'svg',
|
'svg',
|
||||||
() => {
|
() => {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const DocumentPrinters = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='documentPrinter' />
|
<ExportListButton objectType='documentPrinter' />
|
||||||
|
<InfoActionButtons type='documentPrinter' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const DocumentSizes = () => {
|
|||||||
updateCollapseState={setColumnVisibility}
|
updateCollapseState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='documentSize' />
|
<ExportListButton objectType='documentSize' />
|
||||||
|
<InfoActionButtons type='documentSize' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const DocumentTemplates = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='documentTemplate' />
|
<ExportListButton objectType='documentTemplate' />
|
||||||
|
<InfoActionButtons type='documentTemplate' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const EmailAccounts = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='emailAccount' />
|
<ExportListButton objectType='emailAccount' />
|
||||||
|
<InfoActionButtons type='emailAccount' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const EmailMessages = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='emailMessage' />
|
<ExportListButton objectType='emailMessage' />
|
||||||
|
<InfoActionButtons type='emailMessage' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -14,7 +14,8 @@ import WizardView from '../../common/WizardView'
|
|||||||
import TemplatePreview from '../../common/TemplatePreview'
|
import TemplatePreview from '../../common/TemplatePreview'
|
||||||
import ProgressDisplay from '../../common/ProgressDisplay'
|
import ProgressDisplay from '../../common/ProgressDisplay'
|
||||||
import { ApiServerContext } from '../../context/ApiServerContext'
|
import { ApiServerContext } from '../../context/ApiServerContext'
|
||||||
import { resolveEmailRecipients } from '../../utils/emailRecipients'
|
import { resolveEmailRecipientsForObjects } from '../../utils/emailRecipients'
|
||||||
|
import { toTemplateObjectData } from '../../utils/templateObjectData'
|
||||||
|
|
||||||
const progressByState = {
|
const progressByState = {
|
||||||
queued: 10,
|
queued: 10,
|
||||||
@ -46,9 +47,13 @@ const EmailWizardContent = ({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let cancelled = false
|
let cancelled = false
|
||||||
resolveEmailRecipients({
|
resolveEmailRecipientsForObjects({
|
||||||
type: objectData?.objectType,
|
type: objectData?.objectType,
|
||||||
objectData: objectData?.object,
|
objects: Array.isArray(objectData?.objects)
|
||||||
|
? objectData.objects
|
||||||
|
: objectData?.object
|
||||||
|
? [objectData.object]
|
||||||
|
: [],
|
||||||
fetchObject
|
fetchObject
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (!cancelled) setCandidates(result)
|
if (!cancelled) setCandidates(result)
|
||||||
@ -60,6 +65,7 @@ const EmailWizardContent = ({
|
|||||||
defaultCandidates,
|
defaultCandidates,
|
||||||
fetchObject,
|
fetchObject,
|
||||||
objectData?.object,
|
objectData?.object,
|
||||||
|
objectData?.objects,
|
||||||
objectData?.objectType
|
objectData?.objectType
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -110,7 +116,7 @@ const EmailWizardContent = ({
|
|||||||
visibleProperties={{
|
visibleProperties={{
|
||||||
name: true,
|
name: true,
|
||||||
objectType: true,
|
objectType: true,
|
||||||
object: true,
|
objects: true,
|
||||||
emailTemplate: true,
|
emailTemplate: true,
|
||||||
emailAccount: true,
|
emailAccount: true,
|
||||||
recipientEmail: true,
|
recipientEmail: true,
|
||||||
@ -142,7 +148,7 @@ const EmailWizardContent = ({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<TemplatePreview
|
<TemplatePreview
|
||||||
objectData={objectData?.object}
|
objectData={toTemplateObjectData(objectData?.objects)}
|
||||||
template={objectData?.emailTemplate}
|
template={objectData?.emailTemplate}
|
||||||
templateType='emailTemplate'
|
templateType='emailTemplate'
|
||||||
capabilities={{
|
capabilities={{
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const EmailTemplates = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='emailTemplate' />
|
<ExportListButton objectType='emailTemplate' />
|
||||||
|
<InfoActionButtons type='emailTemplate' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -54,6 +55,7 @@ const FilamentSkus = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='filamentSku' />
|
<ExportListButton objectType='filamentSku' />
|
||||||
|
<InfoActionButtons type='filamentSku' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import ObjectTableViewButton from '../common/ObjectTableViewButton'
|
|||||||
import FilterSidebarButton from '../common/FilterSidebarButton'
|
import FilterSidebarButton from '../common/FilterSidebarButton'
|
||||||
import SortSidebarButton from '../common/SortSidebarButton'
|
import SortSidebarButton from '../common/SortSidebarButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -58,6 +59,7 @@ const Filaments = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='filament' />
|
<ExportListButton objectType='filament' />
|
||||||
|
<InfoActionButtons type='filament' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -50,6 +51,7 @@ const Files = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='file' />
|
<ExportListButton objectType='file' />
|
||||||
|
<InfoActionButtons type='file' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { Flex, Space } from 'antd'
|
|||||||
import useColumnVisibility from '../hooks/useColumnVisibility'
|
import useColumnVisibility from '../hooks/useColumnVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -57,6 +58,7 @@ const Hosts = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='host' />
|
<ExportListButton objectType='host' />
|
||||||
|
<InfoActionButtons type='host' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import SortSidebarButton from '../common/SortSidebarButton'
|
|||||||
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -54,6 +55,7 @@ const Materials = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='material' />
|
<ExportListButton objectType='material' />
|
||||||
|
<InfoActionButtons type='material' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const NoteTypes = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='noteType' />
|
<ExportListButton objectType='noteType' />
|
||||||
|
<InfoActionButtons type='noteType' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -53,6 +54,7 @@ const PartSkus = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='partSku' />
|
<ExportListButton objectType='partSku' />
|
||||||
|
<InfoActionButtons type='partSku' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
|||||||
|
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -57,6 +58,7 @@ const Parts = (filter) => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='part' />
|
<ExportListButton objectType='part' />
|
||||||
|
<InfoActionButtons type='part' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const PermissionSettingsList = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='permissionSetting' />
|
<ExportListButton objectType='permissionSetting' />
|
||||||
|
<InfoActionButtons type='permissionSetting' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import SortSidebarButton from '../common/SortSidebarButton'
|
|||||||
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -54,6 +55,7 @@ const ProductCategories = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='productCategory' />
|
<ExportListButton objectType='productCategory' />
|
||||||
|
<InfoActionButtons type='productCategory' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -54,6 +55,7 @@ const ProductSkus = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='productSku' />
|
<ExportListButton objectType='productSku' />
|
||||||
|
<InfoActionButtons type='productSku' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import SortSidebarButton from '../common/SortSidebarButton'
|
|||||||
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -320,6 +321,7 @@ const Products = () => {
|
|||||||
onReload={() => tableRef.current?.reload()}
|
onReload={() => tableRef.current?.reload()}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='product' />
|
<ExportListButton objectType='product' />
|
||||||
|
<InfoActionButtons type='product' listMode={true} />
|
||||||
<Popover
|
<Popover
|
||||||
content={getViewDropdownItems()}
|
content={getViewDropdownItems()}
|
||||||
placement='bottomLeft'
|
placement='bottomLeft'
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const StockAuditLevels = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='stockAuditLevel' />
|
<ExportListButton objectType='stockAuditLevel' />
|
||||||
|
<InfoActionButtons type='stockAuditLevel' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const TaxRates = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='taxRate' />
|
<ExportListButton objectType='taxRate' />
|
||||||
|
<InfoActionButtons type='taxRate' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const UserGroups = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='userGroup' />
|
<ExportListButton objectType='userGroup' />
|
||||||
|
<InfoActionButtons type='userGroup' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const Users = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='user' />
|
<ExportListButton objectType='user' />
|
||||||
|
<InfoActionButtons type='user' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -50,6 +51,7 @@ const Vendors = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='vendor' />
|
<ExportListButton objectType='vendor' />
|
||||||
|
<InfoActionButtons type='vendor' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { useRef } from 'react'
|
|||||||
import { Flex, Space } from 'antd'
|
import { Flex, Space } from 'antd'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -49,6 +50,7 @@ const FilamentProfiles = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='filamentProfile' />
|
<ExportListButton objectType='filamentProfile' />
|
||||||
|
<InfoActionButtons type='filamentProfile' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
|||||||
|
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -55,6 +56,7 @@ const GCodeFiles = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='gcodeFile' />
|
<ExportListButton objectType='gcodeFile' />
|
||||||
|
<InfoActionButtons type='gcodeFile' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import ColumnViewButton from '../common/ColumnViewButton.jsx'
|
|||||||
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility.jsx'
|
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility.jsx'
|
||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ExportListButton from '../common/ExportListButton.jsx'
|
import ExportListButton from '../common/ExportListButton.jsx'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -53,6 +54,7 @@ const Jobs = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='job' />
|
<ExportListButton objectType='job' />
|
||||||
|
<InfoActionButtons type='job' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { useRef } from 'react'
|
|||||||
import { Flex, Space } from 'antd'
|
import { Flex, Space } from 'antd'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const PrinterProfiles = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='printerProfile' />
|
<ExportListButton objectType='printerProfile' />
|
||||||
|
<InfoActionButtons type='printerProfile' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import ObjectActions from '../common/ObjectActions'
|
|||||||
import BulkObjectActions from '../common/BulkObjectActions'
|
import BulkObjectActions from '../common/BulkObjectActions'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -58,6 +59,7 @@ const Printers = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='printer' />
|
<ExportListButton objectType='printer' />
|
||||||
|
<InfoActionButtons type='printer' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import ColumnViewButton from '../common/ColumnViewButton.jsx'
|
|||||||
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility.jsx'
|
import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility.jsx'
|
||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ExportListButton from '../common/ExportListButton.jsx'
|
import ExportListButton from '../common/ExportListButton.jsx'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -53,6 +54,7 @@ const SubJobs = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='subJob' />
|
<ExportListButton objectType='subJob' />
|
||||||
|
<InfoActionButtons type='subJob' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -51,6 +52,7 @@ const Clients = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='client' />
|
<ExportListButton objectType='client' />
|
||||||
|
<InfoActionButtons type='client' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -48,6 +49,7 @@ const FulfillmentPolicies = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='fulfillmentPolicy' />
|
<ExportListButton objectType='fulfillmentPolicy' />
|
||||||
|
<InfoActionButtons type='fulfillmentPolicy' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const ListingVarients = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='listingVarient' />
|
<ExportListButton objectType='listingVarient' />
|
||||||
|
<InfoActionButtons type='listingVarient' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const Listings = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='listing' />
|
<ExportListButton objectType='listing' />
|
||||||
|
<InfoActionButtons type='listing' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const Marketplaces = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='marketplace' />
|
<ExportListButton objectType='marketplace' />
|
||||||
|
<InfoActionButtons type='marketplace' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -47,6 +48,7 @@ const ReturnPolicies = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='returnPolicy' />
|
<ExportListButton objectType='returnPolicy' />
|
||||||
|
<InfoActionButtons type='returnPolicy' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility'
|
|||||||
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility'
|
||||||
import ColumnViewButton from '../common/ColumnViewButton'
|
import ColumnViewButton from '../common/ColumnViewButton'
|
||||||
import ExportListButton from '../common/ExportListButton'
|
import ExportListButton from '../common/ExportListButton'
|
||||||
|
import InfoActionButtons from '../common/InfoActionButtons'
|
||||||
import ListViewTabs from '../common/ListViewTabs'
|
import ListViewTabs from '../common/ListViewTabs'
|
||||||
import ListViewEditButtons from '../common/ListViewEditButtons'
|
import ListViewEditButtons from '../common/ListViewEditButtons'
|
||||||
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
import { ObjectListViewProvider } from '../context/ObjectListViewContext'
|
||||||
@ -52,6 +53,7 @@ const SalesOrders = () => {
|
|||||||
updateVisibleState={setColumnVisibility}
|
updateVisibleState={setColumnVisibility}
|
||||||
/>
|
/>
|
||||||
<ExportListButton objectType='salesOrder' />
|
<ExportListButton objectType='salesOrder' />
|
||||||
|
<InfoActionButtons type='salesOrder' listMode={true} />
|
||||||
</Space>
|
</Space>
|
||||||
<ListViewTabs />
|
<ListViewTabs />
|
||||||
<Space>
|
<Space>
|
||||||
|
|||||||
@ -7,33 +7,39 @@ import {
|
|||||||
useMemo,
|
useMemo,
|
||||||
useRef
|
useRef
|
||||||
} from 'react'
|
} from 'react'
|
||||||
// import { getModelByName } from '../../../database/ObjectModels'
|
|
||||||
import DocumentPrinterIcon from '../../Icons/DocumentPrinterIcon'
|
import DocumentPrinterIcon from '../../Icons/DocumentPrinterIcon'
|
||||||
import { Button, Dropdown, Modal } from 'antd'
|
import { Button, Dropdown, Modal, message } from 'antd'
|
||||||
import { ApiServerContext } from '../context/ApiServerContext'
|
import { ApiServerContext } from '../context/ApiServerContext'
|
||||||
|
import { TableStateContext } from '../context/TableStateContext'
|
||||||
import DocumentTemplateIcon from '../../Icons/DocumentTemplateIcon'
|
import DocumentTemplateIcon from '../../Icons/DocumentTemplateIcon'
|
||||||
import NewDocumentJob from '../Management/DocumentJobs/NewDocumentJob'
|
import NewDocumentJob from '../Management/DocumentJobs/NewDocumentJob'
|
||||||
import { AuthContext } from '../context/AuthContext'
|
import { AuthContext } from '../context/AuthContext'
|
||||||
|
import LoadingPleaseWaitModal from './LoadingPleaseWaitModal'
|
||||||
|
import { fetchAllObjectPages } from '../utils/fetchAllObjectPages'
|
||||||
|
import { resolveObjectsList } from '../utils/templateObjectData'
|
||||||
|
|
||||||
const DocumentPrintButton = ({
|
const DocumentPrintButton = ({
|
||||||
type,
|
type,
|
||||||
objectData,
|
objectData,
|
||||||
|
objects,
|
||||||
|
listMode = false,
|
||||||
disabled = false,
|
disabled = false,
|
||||||
...buttonProps
|
...buttonProps
|
||||||
}) => {
|
}) => {
|
||||||
const {
|
const { fetchObjects, connected, subscribeToObjectUpdates, subscribeToObjectTypeUpdates } =
|
||||||
fetchObjects,
|
useContext(ApiServerContext)
|
||||||
connected,
|
const tableState = useContext(TableStateContext)
|
||||||
subscribeToObjectUpdates,
|
|
||||||
subscribeToObjectTypeUpdates
|
|
||||||
} = useContext(ApiServerContext)
|
|
||||||
const fetchObjectsRef = useRef(fetchObjects)
|
const fetchObjectsRef = useRef(fetchObjects)
|
||||||
fetchObjectsRef.current = fetchObjects
|
fetchObjectsRef.current = fetchObjects
|
||||||
|
|
||||||
const [documentTemplates, setDocumentTemplates] = useState([])
|
const [documentTemplates, setDocumentTemplates] = useState([])
|
||||||
const [currentDocumentTemplate, setCurrentDocumentTemplate] = useState(null)
|
const [currentDocumentTemplate, setCurrentDocumentTemplate] = useState(null)
|
||||||
const [loading, setLoading] = useState(false)
|
const [loading, setLoading] = useState(false)
|
||||||
|
const [listLoading, setListLoading] = useState(false)
|
||||||
const [newDocumentJobOpen, setNewDocumentJobOpen] = useState(false)
|
const [newDocumentJobOpen, setNewDocumentJobOpen] = useState(false)
|
||||||
|
const [selectedObjects, setSelectedObjects] = useState(() =>
|
||||||
|
resolveObjectsList(objects, objectData)
|
||||||
|
)
|
||||||
|
|
||||||
const subscribedIdsRef = useRef([])
|
const subscribedIdsRef = useRef([])
|
||||||
const unsubscribesRef = useRef([])
|
const unsubscribesRef = useRef([])
|
||||||
@ -42,6 +48,11 @@ const DocumentPrintButton = ({
|
|||||||
|
|
||||||
const { token } = useContext(AuthContext)
|
const { token } = useContext(AuthContext)
|
||||||
|
|
||||||
|
const resolvedObjects = useMemo(
|
||||||
|
() => resolveObjectsList(objects, objectData),
|
||||||
|
[objects, objectData]
|
||||||
|
)
|
||||||
|
|
||||||
const subscriptionFilter = useMemo(
|
const subscriptionFilter = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
objectType: type,
|
objectType: type,
|
||||||
@ -69,7 +80,7 @@ const DocumentPrintButton = ({
|
|||||||
try {
|
try {
|
||||||
const result = await fetchObjectsRef.current('documentTemplate', {
|
const result = await fetchObjectsRef.current('documentTemplate', {
|
||||||
filter: subscriptionFilter,
|
filter: subscriptionFilter,
|
||||||
limit: 100 // Get more templates to show in dropdown
|
limit: 100
|
||||||
})
|
})
|
||||||
|
|
||||||
if (result && result.data) {
|
if (result && result.data) {
|
||||||
@ -89,13 +100,13 @@ const DocumentPrintButton = ({
|
|||||||
const loadDocumentTemplatesRef = useRef(loadDocumentTemplates)
|
const loadDocumentTemplatesRef = useRef(loadDocumentTemplates)
|
||||||
loadDocumentTemplatesRef.current = loadDocumentTemplates
|
loadDocumentTemplatesRef.current = loadDocumentTemplates
|
||||||
|
|
||||||
// Stable key from objectData._id (excludes _isEditing so toggling edit mode doesn't trigger template reload)
|
|
||||||
const objectKey = useMemo(() => {
|
const objectKey = useMemo(() => {
|
||||||
if (!objectData) return null
|
if (listMode) return 'list'
|
||||||
return objectData._id ?? objectData.id ?? null
|
const first = resolvedObjects[0]
|
||||||
}, [objectData])
|
if (!first) return null
|
||||||
|
return first._id ?? first.id ?? null
|
||||||
|
}, [listMode, resolvedObjects])
|
||||||
|
|
||||||
// Fetch document templates when component mounts or objectData, type or token changes
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadDocumentTemplates()
|
loadDocumentTemplates()
|
||||||
}, [objectKey, token, type, loadDocumentTemplates])
|
}, [objectKey, token, type, loadDocumentTemplates])
|
||||||
@ -147,7 +158,9 @@ const DocumentPrintButton = ({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (connected !== true) return
|
if (connected !== true) return
|
||||||
|
|
||||||
const templateIds = documentTemplates.map((template) => template._id).filter(Boolean)
|
const templateIds = documentTemplates
|
||||||
|
.map((template) => template._id)
|
||||||
|
.filter(Boolean)
|
||||||
|
|
||||||
const newTemplateIds = templateIds.filter(
|
const newTemplateIds = templateIds.filter(
|
||||||
(id) => !subscribedIdsRef.current.includes(id)
|
(id) => !subscribedIdsRef.current.includes(id)
|
||||||
@ -197,15 +210,40 @@ const DocumentPrintButton = ({
|
|||||||
}
|
}
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
// Handle template selection
|
const handleTemplateSelect = useCallback(
|
||||||
const handleTemplateSelect = (template) => {
|
async (template) => {
|
||||||
setCurrentDocumentTemplate(template)
|
setCurrentDocumentTemplate(template)
|
||||||
setNewDocumentJobOpen(true)
|
|
||||||
// TODO: Implement the actual printing logic here
|
if (listMode) {
|
||||||
// This could open a print dialog, navigate to a print page, etc.
|
setListLoading(true)
|
||||||
}
|
try {
|
||||||
|
const list = await fetchAllObjectPages({
|
||||||
|
fetchObjects: fetchObjectsRef.current,
|
||||||
|
type,
|
||||||
|
filter: tableState?.getObjectListFilter?.(type) || {},
|
||||||
|
sorter: tableState?.getObjectListSorter?.(type) || {}
|
||||||
|
})
|
||||||
|
if (!list.length) {
|
||||||
|
message.warning('No objects in this list to print')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setSelectedObjects(list)
|
||||||
|
setNewDocumentJobOpen(true)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error fetching objects for document job:', error)
|
||||||
|
message.error('Failed to load objects for printing')
|
||||||
|
} finally {
|
||||||
|
setListLoading(false)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
setSelectedObjects(resolvedObjects)
|
||||||
|
setNewDocumentJobOpen(true)
|
||||||
|
},
|
||||||
|
[listMode, resolvedObjects, tableState, type]
|
||||||
|
)
|
||||||
|
|
||||||
// Group templates by tag for nested dropdown menu; untagged templates at root
|
|
||||||
const menuItems = useMemo(() => {
|
const menuItems = useMemo(() => {
|
||||||
const templatesByTag = new Map()
|
const templatesByTag = new Map()
|
||||||
const untaggedTemplates = []
|
const untaggedTemplates = []
|
||||||
@ -228,9 +266,9 @@ const DocumentPrintButton = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const tag of templateTags) {
|
for (const tag of templateTags) {
|
||||||
const templates = templatesByTag.get(tag) ?? []
|
const tagged = templatesByTag.get(tag) ?? []
|
||||||
templates.push(template)
|
tagged.push(template)
|
||||||
templatesByTag.set(tag, templates)
|
templatesByTag.set(tag, tagged)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,9 +290,14 @@ const DocumentPrintButton = ({
|
|||||||
.map(toTemplateMenuItem)
|
.map(toTemplateMenuItem)
|
||||||
|
|
||||||
return [...rootUntaggedItems, ...taggedMenuItems]
|
return [...rootUntaggedItems, ...taggedMenuItems]
|
||||||
}, [documentTemplates])
|
}, [documentTemplates, handleTemplateSelect])
|
||||||
|
|
||||||
|
const unavailable =
|
||||||
|
disabled ||
|
||||||
|
loading ||
|
||||||
|
listLoading ||
|
||||||
|
(!listMode && resolvedObjects.length === 0)
|
||||||
|
|
||||||
// If no templates available, show disabled state
|
|
||||||
if (documentTemplates.length === 0 && !loading) {
|
if (documentTemplates.length === 0 && !loading) {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
@ -274,16 +317,17 @@ const DocumentPrintButton = ({
|
|||||||
loading: loading
|
loading: loading
|
||||||
}}
|
}}
|
||||||
trigger={['hover']}
|
trigger={['hover']}
|
||||||
disabled={disabled || loading}
|
disabled={unavailable}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
{...buttonProps}
|
{...buttonProps}
|
||||||
icon={<DocumentPrinterIcon />}
|
icon={<DocumentPrinterIcon />}
|
||||||
disabled={disabled || loading}
|
disabled={unavailable}
|
||||||
loading={loading}
|
loading={loading || listLoading}
|
||||||
title={loading ? 'Loading templates...' : 'Print document'}
|
title={loading ? 'Loading templates...' : 'Print document'}
|
||||||
/>
|
/>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
|
<LoadingPleaseWaitModal open={listLoading} />
|
||||||
<Modal
|
<Modal
|
||||||
open={newDocumentJobOpen}
|
open={newDocumentJobOpen}
|
||||||
onCancel={() => setNewDocumentJobOpen(false)}
|
onCancel={() => setNewDocumentJobOpen(false)}
|
||||||
@ -305,7 +349,7 @@ const DocumentPrintButton = ({
|
|||||||
reset={!newDocumentJobOpen}
|
reset={!newDocumentJobOpen}
|
||||||
defaultValues={{
|
defaultValues={{
|
||||||
objectType: type,
|
objectType: type,
|
||||||
object: objectData,
|
objects: selectedObjects,
|
||||||
documentTemplate: currentDocumentTemplate
|
documentTemplate: currentDocumentTemplate
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
@ -317,7 +361,9 @@ const DocumentPrintButton = ({
|
|||||||
DocumentPrintButton.propTypes = {
|
DocumentPrintButton.propTypes = {
|
||||||
type: PropTypes.string.isRequired,
|
type: PropTypes.string.isRequired,
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
objectData: PropTypes.object.isRequired
|
objectData: PropTypes.object,
|
||||||
|
objects: PropTypes.array,
|
||||||
|
listMode: PropTypes.bool
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DocumentPrintButton
|
export default DocumentPrintButton
|
||||||
|
|||||||
@ -7,18 +7,30 @@ import {
|
|||||||
useRef,
|
useRef,
|
||||||
useState
|
useState
|
||||||
} from 'react'
|
} from 'react'
|
||||||
import { Button, Dropdown, Modal } from 'antd'
|
import { Button, Dropdown, Modal, message } from 'antd'
|
||||||
import { ApiServerContext } from '../context/ApiServerContext'
|
import { ApiServerContext } from '../context/ApiServerContext'
|
||||||
import { AuthContext } from '../context/AuthContext'
|
import { AuthContext } from '../context/AuthContext'
|
||||||
|
import { TableStateContext } from '../context/TableStateContext'
|
||||||
import MailIcon from '../../Icons/MailIcon'
|
import MailIcon from '../../Icons/MailIcon'
|
||||||
import EmailTemplateIcon from '../../Icons/EmailTemplateIcon'
|
import EmailTemplateIcon from '../../Icons/EmailTemplateIcon'
|
||||||
import NewEmailMessage from '../Management/EmailMessages/NewEmailMessage'
|
import NewEmailMessage from '../Management/EmailMessages/NewEmailMessage'
|
||||||
import {
|
import {
|
||||||
getDefaultEmailRecipient,
|
getDefaultEmailRecipient,
|
||||||
resolveEmailRecipients
|
resolveEmailRecipients,
|
||||||
|
resolveEmailRecipientsForObjects
|
||||||
} from '../utils/emailRecipients'
|
} from '../utils/emailRecipients'
|
||||||
|
import LoadingPleaseWaitModal from './LoadingPleaseWaitModal'
|
||||||
|
import { fetchAllObjectPages } from '../utils/fetchAllObjectPages'
|
||||||
|
import { resolveObjectsList } from '../utils/templateObjectData'
|
||||||
|
|
||||||
const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps }) => {
|
const EmailSendButton = ({
|
||||||
|
type,
|
||||||
|
objectData,
|
||||||
|
objects,
|
||||||
|
listMode = false,
|
||||||
|
disabled = false,
|
||||||
|
...buttonProps
|
||||||
|
}) => {
|
||||||
const {
|
const {
|
||||||
fetchObject,
|
fetchObject,
|
||||||
fetchObjects,
|
fetchObjects,
|
||||||
@ -27,16 +39,26 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
subscribeToObjectTypeUpdates
|
subscribeToObjectTypeUpdates
|
||||||
} = useContext(ApiServerContext)
|
} = useContext(ApiServerContext)
|
||||||
const { token } = useContext(AuthContext)
|
const { token } = useContext(AuthContext)
|
||||||
|
const tableState = useContext(TableStateContext)
|
||||||
const [templates, setTemplates] = useState([])
|
const [templates, setTemplates] = useState([])
|
||||||
const [recipients, setRecipients] = useState([])
|
const [recipients, setRecipients] = useState([])
|
||||||
const [selectedTemplate, setSelectedTemplate] = useState(null)
|
const [selectedTemplate, setSelectedTemplate] = useState(null)
|
||||||
|
const [selectedObjects, setSelectedObjects] = useState(() =>
|
||||||
|
resolveObjectsList(objects, objectData)
|
||||||
|
)
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
const [loading, setLoading] = useState(false)
|
const [loading, setLoading] = useState(false)
|
||||||
|
const [listLoading, setListLoading] = useState(false)
|
||||||
const fetchObjectsRef = useRef(fetchObjects)
|
const fetchObjectsRef = useRef(fetchObjects)
|
||||||
const fetchObjectRef = useRef(fetchObject)
|
const fetchObjectRef = useRef(fetchObject)
|
||||||
fetchObjectsRef.current = fetchObjects
|
fetchObjectsRef.current = fetchObjects
|
||||||
fetchObjectRef.current = fetchObject
|
fetchObjectRef.current = fetchObject
|
||||||
|
|
||||||
|
const resolvedObjects = useMemo(
|
||||||
|
() => resolveObjectsList(objects, objectData),
|
||||||
|
[objects, objectData]
|
||||||
|
)
|
||||||
|
|
||||||
const filter = useMemo(
|
const filter = useMemo(
|
||||||
() => ({ objectType: type, global: false, active: true }),
|
() => ({ objectType: type, global: false, active: true }),
|
||||||
[type]
|
[type]
|
||||||
@ -71,11 +93,15 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
}, [loadTemplates])
|
}, [loadTemplates])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (listMode) {
|
||||||
|
setRecipients([])
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
let cancelled = false
|
let cancelled = false
|
||||||
setRecipients([])
|
setRecipients([])
|
||||||
resolveEmailRecipients({
|
resolveEmailRecipients({
|
||||||
type,
|
type,
|
||||||
objectData,
|
objectData: resolvedObjects[0],
|
||||||
fetchObject: (...args) => fetchObjectRef.current(...args)
|
fetchObject: (...args) => fetchObjectRef.current(...args)
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (!cancelled) setRecipients(result)
|
if (!cancelled) setRecipients(result)
|
||||||
@ -83,19 +109,14 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
return () => {
|
return () => {
|
||||||
cancelled = true
|
cancelled = true
|
||||||
}
|
}
|
||||||
}, [objectData, type])
|
}, [listMode, resolvedObjects, type])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!connected) return undefined
|
if (!connected) return undefined
|
||||||
return subscribeToObjectTypeUpdates('emailTemplate', filter, () =>
|
return subscribeToObjectTypeUpdates('emailTemplate', filter, () =>
|
||||||
loadTemplates(true)
|
loadTemplates(true)
|
||||||
)
|
)
|
||||||
}, [
|
}, [connected, filter, loadTemplates, subscribeToObjectTypeUpdates])
|
||||||
connected,
|
|
||||||
filter,
|
|
||||||
loadTemplates,
|
|
||||||
subscribeToObjectTypeUpdates
|
|
||||||
])
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!connected) return undefined
|
if (!connected) return undefined
|
||||||
@ -121,6 +142,50 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
return () => unsubscribes.forEach((unsubscribe) => unsubscribe?.())
|
return () => unsubscribes.forEach((unsubscribe) => unsubscribe?.())
|
||||||
}, [connected, matches, subscribeToObjectUpdates, templates])
|
}, [connected, matches, subscribeToObjectUpdates, templates])
|
||||||
|
|
||||||
|
const handleTemplateSelect = useCallback(
|
||||||
|
async (template) => {
|
||||||
|
setSelectedTemplate(template)
|
||||||
|
|
||||||
|
if (listMode) {
|
||||||
|
setListLoading(true)
|
||||||
|
try {
|
||||||
|
const list = await fetchAllObjectPages({
|
||||||
|
fetchObjects: fetchObjectsRef.current,
|
||||||
|
type,
|
||||||
|
filter: tableState?.getObjectListFilter?.(type) || {},
|
||||||
|
sorter: tableState?.getObjectListSorter?.(type) || {}
|
||||||
|
})
|
||||||
|
if (!list.length) {
|
||||||
|
message.warning('No objects in this list to email')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const nextRecipients = await resolveEmailRecipientsForObjects({
|
||||||
|
type,
|
||||||
|
objects: list,
|
||||||
|
fetchObject: (...args) => fetchObjectRef.current(...args)
|
||||||
|
})
|
||||||
|
if (!nextRecipients.length) {
|
||||||
|
message.warning('No email recipients available for these objects')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setSelectedObjects(list)
|
||||||
|
setRecipients(nextRecipients)
|
||||||
|
setOpen(true)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error fetching objects for email:', error)
|
||||||
|
message.error('Failed to load objects for email')
|
||||||
|
} finally {
|
||||||
|
setListLoading(false)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
setSelectedObjects(resolvedObjects)
|
||||||
|
setOpen(true)
|
||||||
|
},
|
||||||
|
[listMode, resolvedObjects, tableState, type]
|
||||||
|
)
|
||||||
|
|
||||||
const menuItems = useMemo(() => {
|
const menuItems = useMemo(() => {
|
||||||
const byTag = new Map()
|
const byTag = new Map()
|
||||||
const untagged = []
|
const untagged = []
|
||||||
@ -129,8 +194,7 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
label: template.name,
|
label: template.name,
|
||||||
icon: <EmailTemplateIcon />,
|
icon: <EmailTemplateIcon />,
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
setSelectedTemplate(template)
|
handleTemplateSelect(template)
|
||||||
setOpen(true)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -159,19 +223,28 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
.map(makeItem)
|
.map(makeItem)
|
||||||
}))
|
}))
|
||||||
]
|
]
|
||||||
}, [templates])
|
}, [handleTemplateSelect, templates])
|
||||||
|
|
||||||
const defaultRecipient = useMemo(
|
const defaultRecipient = useMemo(
|
||||||
() => getDefaultEmailRecipient(recipients),
|
() => getDefaultEmailRecipient(recipients),
|
||||||
[recipients]
|
[recipients]
|
||||||
)
|
)
|
||||||
|
|
||||||
const unavailable = disabled || loading || !templates.length || !recipients.length
|
const unavailable =
|
||||||
const title = !recipients.length
|
disabled ||
|
||||||
? 'No email recipients available for this object'
|
loading ||
|
||||||
: !templates.length
|
listLoading ||
|
||||||
|
!templates.length ||
|
||||||
|
(!listMode && (!resolvedObjects.length || !recipients.length))
|
||||||
|
const title = listMode
|
||||||
|
? !templates.length
|
||||||
? 'No email templates available for this object type'
|
? 'No email templates available for this object type'
|
||||||
: 'Send email'
|
: 'Send email'
|
||||||
|
: !recipients.length
|
||||||
|
? 'No email recipients available for this object'
|
||||||
|
: !templates.length
|
||||||
|
? 'No email templates available for this object type'
|
||||||
|
: 'Send email'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -180,10 +253,11 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
{...buttonProps}
|
{...buttonProps}
|
||||||
icon={<MailIcon />}
|
icon={<MailIcon />}
|
||||||
disabled={unavailable}
|
disabled={unavailable}
|
||||||
loading={loading}
|
loading={loading || listLoading}
|
||||||
title={title}
|
title={title}
|
||||||
/>
|
/>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
|
<LoadingPleaseWaitModal open={listLoading} />
|
||||||
<Modal
|
<Modal
|
||||||
open={open}
|
open={open}
|
||||||
onCancel={() => setOpen(false)}
|
onCancel={() => setOpen(false)}
|
||||||
@ -195,7 +269,7 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
onOk={() => setOpen(false)}
|
onOk={() => setOpen(false)}
|
||||||
defaultValues={{
|
defaultValues={{
|
||||||
objectType: type,
|
objectType: type,
|
||||||
object: objectData,
|
objects: selectedObjects,
|
||||||
emailTemplate: selectedTemplate,
|
emailTemplate: selectedTemplate,
|
||||||
...defaultRecipient
|
...defaultRecipient
|
||||||
}}
|
}}
|
||||||
@ -208,7 +282,9 @@ const EmailSendButton = ({ type, objectData, disabled = false, ...buttonProps })
|
|||||||
|
|
||||||
EmailSendButton.propTypes = {
|
EmailSendButton.propTypes = {
|
||||||
type: PropTypes.string.isRequired,
|
type: PropTypes.string.isRequired,
|
||||||
objectData: PropTypes.object.isRequired,
|
objectData: PropTypes.object,
|
||||||
|
objects: PropTypes.array,
|
||||||
|
listMode: PropTypes.bool,
|
||||||
disabled: PropTypes.bool
|
disabled: PropTypes.bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -52,6 +52,9 @@ const HostDeviceScanner = ({
|
|||||||
? crypto.randomUUID()
|
? crypto.randomUUID()
|
||||||
: `scan-${Date.now()}-${Math.random().toString(16).slice(2)}`
|
: `scan-${Date.now()}-${Math.random().toString(16).slice(2)}`
|
||||||
)
|
)
|
||||||
|
const startedRef = useRef(false)
|
||||||
|
const activeHostIdRef = useRef(null)
|
||||||
|
const pendingStopRef = useRef(null)
|
||||||
|
|
||||||
const [scanning, setScanning] = useState(false)
|
const [scanning, setScanning] = useState(false)
|
||||||
const [progress, setProgress] = useState(0)
|
const [progress, setProgress] = useState(0)
|
||||||
@ -80,22 +83,52 @@ const HostDeviceScanner = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!hostId || connected !== true || !compatible) {
|
const sessionId = sessionIdRef.current
|
||||||
return
|
const canScan = Boolean(hostId) && connected === true && compatible
|
||||||
|
|
||||||
|
const stopScan = (targetHostId) => {
|
||||||
|
if (!targetHostId || !startedRef.current) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sendObjectActionRef.current(targetHostId, 'host', {
|
||||||
|
type: 'scanNetworkStop',
|
||||||
|
data: { sessionId }
|
||||||
|
})
|
||||||
|
startedRef.current = false
|
||||||
|
activeHostIdRef.current = null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pendingStopRef.current) {
|
||||||
|
clearTimeout(pendingStopRef.current)
|
||||||
|
pendingStopRef.current = null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!canScan) {
|
||||||
|
const hostToStop = activeHostIdRef.current
|
||||||
|
pendingStopRef.current = setTimeout(() => {
|
||||||
|
stopScan(hostToStop)
|
||||||
|
pendingStopRef.current = null
|
||||||
|
}, 250)
|
||||||
|
return () => {
|
||||||
|
if (pendingStopRef.current) {
|
||||||
|
clearTimeout(pendingStopRef.current)
|
||||||
|
pendingStopRef.current = null
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let cancelled = false
|
let cancelled = false
|
||||||
const sessionId = sessionIdRef.current
|
console.log('Scan session id:', sessionId)
|
||||||
|
|
||||||
const isSessionEvent = (event) => event?.data?.sessionId === sessionId
|
const isSessionEvent = (event) => event?.data?.sessionId === sessionId
|
||||||
|
|
||||||
const startScan = () => {
|
const startScan = () => {
|
||||||
if (cancelled) return
|
|
||||||
|
|
||||||
setProgress(0)
|
setProgress(0)
|
||||||
setCurrentIP(null)
|
setCurrentIP(null)
|
||||||
setScanError(null)
|
setScanError(null)
|
||||||
setScanning(true)
|
setScanning(true)
|
||||||
|
setDevices([])
|
||||||
|
setSelectedKey(null)
|
||||||
|
|
||||||
sendObjectActionRef.current(
|
sendObjectActionRef.current(
|
||||||
hostId,
|
hostId,
|
||||||
@ -113,6 +146,7 @@ const HostDeviceScanner = ({
|
|||||||
if (result?.success === false) {
|
if (result?.success === false) {
|
||||||
setScanning(false)
|
setScanning(false)
|
||||||
setScanError(result.error || 'Failed to start network scan')
|
setScanError(result.error || 'Failed to start network scan')
|
||||||
|
startedRef.current = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -192,29 +226,27 @@ const HostDeviceScanner = ({
|
|||||||
onComplete
|
onComplete
|
||||||
)
|
)
|
||||||
|
|
||||||
setDevices([])
|
const alreadyRunning = startedRef.current && activeHostIdRef.current === hostId
|
||||||
setSelectedKey(null)
|
if (!alreadyRunning) {
|
||||||
startScan()
|
if (startedRef.current && activeHostIdRef.current) {
|
||||||
|
stopScan(activeHostIdRef.current)
|
||||||
|
}
|
||||||
|
startedRef.current = true
|
||||||
|
activeHostIdRef.current = hostId
|
||||||
|
startScan()
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
cancelled = true
|
cancelled = true
|
||||||
if (unsubFound) unsubFound()
|
if (unsubFound) unsubFound()
|
||||||
if (unsubProgress) unsubProgress()
|
if (unsubProgress) unsubProgress()
|
||||||
if (unsubComplete) unsubComplete()
|
if (unsubComplete) unsubComplete()
|
||||||
sendObjectActionRef.current(hostId, 'host', {
|
pendingStopRef.current = setTimeout(() => {
|
||||||
type: 'scanNetworkStop',
|
stopScan(hostId)
|
||||||
data: { sessionId }
|
pendingStopRef.current = null
|
||||||
})
|
}, 250)
|
||||||
}
|
}
|
||||||
}, [
|
}, [hostId, connected, compatible])
|
||||||
hostId,
|
|
||||||
connected,
|
|
||||||
compatible,
|
|
||||||
port,
|
|
||||||
protocol,
|
|
||||||
connectionInterface,
|
|
||||||
objectType
|
|
||||||
])
|
|
||||||
|
|
||||||
const applyDevice = useCallback(
|
const applyDevice = useCallback(
|
||||||
(device) => {
|
(device) => {
|
||||||
|
|||||||
@ -25,7 +25,9 @@ const InfoActionButtons = (props) => {
|
|||||||
InfoActionButtons.propTypes = {
|
InfoActionButtons.propTypes = {
|
||||||
type: PropTypes.string.isRequired,
|
type: PropTypes.string.isRequired,
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
objectData: PropTypes.object.isRequired
|
objectData: PropTypes.object,
|
||||||
|
objects: PropTypes.array,
|
||||||
|
listMode: PropTypes.bool
|
||||||
}
|
}
|
||||||
|
|
||||||
export default InfoActionButtons
|
export default InfoActionButtons
|
||||||
|
|||||||
30
src/components/Dashboard/common/LoadingPleaseWaitModal.jsx
Normal file
30
src/components/Dashboard/common/LoadingPleaseWaitModal.jsx
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import PropTypes from 'prop-types'
|
||||||
|
import { Modal, Space, Typography } from 'antd'
|
||||||
|
import { LoadingOutlined } from '@ant-design/icons'
|
||||||
|
|
||||||
|
const { Text } = Typography
|
||||||
|
|
||||||
|
const LoadingPleaseWaitModal = ({ open = false }) => (
|
||||||
|
<Modal
|
||||||
|
open={open}
|
||||||
|
className='loading-modal'
|
||||||
|
title={false}
|
||||||
|
height={20}
|
||||||
|
style={{ maxWidth: 220, top: '50%', transform: 'translateY(-50%)' }}
|
||||||
|
closable={false}
|
||||||
|
maskClosable={false}
|
||||||
|
footer={false}
|
||||||
|
zIndex={2000}
|
||||||
|
>
|
||||||
|
<Space size={'middle'}>
|
||||||
|
<LoadingOutlined />
|
||||||
|
<Text style={{ margin: 0 }}>Loading, please wait...</Text>
|
||||||
|
</Space>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
|
||||||
|
LoadingPleaseWaitModal.propTypes = {
|
||||||
|
open: PropTypes.bool
|
||||||
|
}
|
||||||
|
|
||||||
|
export default LoadingPleaseWaitModal
|
||||||
@ -10,7 +10,10 @@ import {
|
|||||||
import { useSearchParams } from 'react-router-dom'
|
import { useSearchParams } from 'react-router-dom'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
|
|
||||||
const TableStateContext = createContext()
|
const TableStateContext = createContext(null)
|
||||||
|
|
||||||
|
// eslint-disable-next-line react-refresh/only-export-components
|
||||||
|
export { TableStateContext }
|
||||||
|
|
||||||
export const FILTER_URL_PARAM = 'filter'
|
export const FILTER_URL_PARAM = 'filter'
|
||||||
export const SORT_URL_PARAM = 'sort'
|
export const SORT_URL_PARAM = 'sort'
|
||||||
|
|||||||
@ -79,6 +79,26 @@ export const resolveEmailRecipients = async ({
|
|||||||
return candidates
|
return candidates
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const resolveEmailRecipientsForObjects = async ({
|
||||||
|
type,
|
||||||
|
objects,
|
||||||
|
fetchObject
|
||||||
|
}) => {
|
||||||
|
const list = Array.isArray(objects) ? objects.filter(Boolean) : []
|
||||||
|
const merged = []
|
||||||
|
for (const objectData of list) {
|
||||||
|
const result = await resolveEmailRecipients({
|
||||||
|
type,
|
||||||
|
objectData,
|
||||||
|
fetchObject
|
||||||
|
})
|
||||||
|
for (const candidate of result) {
|
||||||
|
addCandidate(merged, candidate)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return merged
|
||||||
|
}
|
||||||
|
|
||||||
/** Prefer a client/vendor ref; otherwise use a plain email candidate. */
|
/** Prefer a client/vendor ref; otherwise use a plain email candidate. */
|
||||||
export const getDefaultEmailRecipient = (candidates = []) => {
|
export const getDefaultEmailRecipient = (candidates = []) => {
|
||||||
if (!Array.isArray(candidates) || !candidates.length) return null
|
if (!Array.isArray(candidates) || !candidates.length) return null
|
||||||
|
|||||||
41
src/components/Dashboard/utils/fetchAllObjectPages.js
Normal file
41
src/components/Dashboard/utils/fetchAllObjectPages.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
export async function fetchAllObjectPages({
|
||||||
|
fetchObjects,
|
||||||
|
type,
|
||||||
|
filter = {},
|
||||||
|
sorter = {},
|
||||||
|
limit = 25
|
||||||
|
}) {
|
||||||
|
if (!type || typeof fetchObjects !== 'function') return []
|
||||||
|
|
||||||
|
const all = []
|
||||||
|
let page = 1
|
||||||
|
let totalPages = 1
|
||||||
|
|
||||||
|
do {
|
||||||
|
const result = await fetchObjects(type, {
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
filter,
|
||||||
|
sorter
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!result || Array.isArray(result)) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = Array.isArray(result.data) ? result.data : []
|
||||||
|
all.push(...data)
|
||||||
|
|
||||||
|
if (Number.isFinite(result.totalPages) && result.totalPages > 0) {
|
||||||
|
totalPages = result.totalPages
|
||||||
|
} else if (result.hasMore) {
|
||||||
|
totalPages = page + 1
|
||||||
|
} else {
|
||||||
|
totalPages = page
|
||||||
|
}
|
||||||
|
|
||||||
|
page += 1
|
||||||
|
} while (page <= totalPages)
|
||||||
|
|
||||||
|
return all
|
||||||
|
}
|
||||||
21
src/components/Dashboard/utils/templateObjectData.js
Normal file
21
src/components/Dashboard/utils/templateObjectData.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
export function resolveObjectsList(objects, objectData) {
|
||||||
|
if (Array.isArray(objects) && objects.length) {
|
||||||
|
return objects.filter(Boolean)
|
||||||
|
}
|
||||||
|
if (objectData) {
|
||||||
|
return [objectData]
|
||||||
|
}
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toTemplateObjectData(objects) {
|
||||||
|
const list = Array.isArray(objects) ? objects.filter(Boolean) : []
|
||||||
|
if (!list.length) return {}
|
||||||
|
if (list.length === 1) {
|
||||||
|
const first = list[0]
|
||||||
|
if (first && typeof first === 'object' && !Array.isArray(first)) {
|
||||||
|
return first
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { objects: list }
|
||||||
|
}
|
||||||
@ -166,7 +166,12 @@ export const DocumentJob = {
|
|||||||
columnFixed: 'left',
|
columnFixed: 'left',
|
||||||
value: (objectData) => {
|
value: (objectData) => {
|
||||||
if (objectData?.createdAt == undefined) {
|
if (objectData?.createdAt == undefined) {
|
||||||
return `${objectData?.documentTemplate?.name || 'No template'} ${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')} (${objectData?.object?.name || objectData?.object?._id})`
|
const list = Array.isArray(objectData?.objects)
|
||||||
|
? objectData.objects
|
||||||
|
: []
|
||||||
|
const first = list[0]
|
||||||
|
const extra = list.length > 1 ? ` +${list.length - 1}` : ''
|
||||||
|
return `${objectData?.documentTemplate?.name || 'No template'} ${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')} (${first?.name || first?._id || 'no object'}${extra})`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -188,11 +193,11 @@ export const DocumentJob = {
|
|||||||
type: 'objectType'
|
type: 'objectType'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'object',
|
name: 'objects',
|
||||||
label: 'Object',
|
label: 'Objects',
|
||||||
required: true,
|
required: true,
|
||||||
columnWidth: 150,
|
columnWidth: 150,
|
||||||
type: 'object',
|
type: 'objectList',
|
||||||
objectType: (objectData) => {
|
objectType: (objectData) => {
|
||||||
return objectData?.objectType
|
return objectData?.objectType
|
||||||
},
|
},
|
||||||
|
|||||||
@ -220,9 +220,9 @@ export const EmailMessage = {
|
|||||||
columnWidth: 180
|
columnWidth: 180
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'object',
|
name: 'objects',
|
||||||
label: 'Object',
|
label: 'Objects',
|
||||||
type: 'object',
|
type: 'objectList',
|
||||||
objectType: (data) => data?.objectType,
|
objectType: (data) => data?.objectType,
|
||||||
required: true,
|
required: true,
|
||||||
readOnly: readOnlyAfterCreate,
|
readOnly: readOnlyAfterCreate,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user