From eea7e1f724f5abfbb6403454e38866fe9fcf531e Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Mon, 14 Sep 2026 23:33:03 +0100 Subject: [PATCH] Add InfoActionButtons to Various Dashboard Components - Integrated InfoActionButtons into multiple components across the Finance and Inventory sections, enhancing user interaction and providing contextual actions for invoices, payment policies, payments, tax records, and various inventory items. - Updated the respective components to include the new buttons with appropriate object types and list mode settings, improving the overall functionality and user experience in the dashboard. --- src/components/Dashboard/Finance/Invoices.jsx | 2 + .../Dashboard/Finance/PaymentPolicies.jsx | 2 + src/components/Dashboard/Finance/Payments.jsx | 2 + .../Dashboard/Finance/TaxRecords.jsx | 2 + .../Dashboard/Inventory/FilamentStocks.jsx | 2 + .../Dashboard/Inventory/OrderItems.jsx | 2 + .../Dashboard/Inventory/PartStocks.jsx | 2 + .../Dashboard/Inventory/ProductStocks.jsx | 2 + .../Dashboard/Inventory/PurchaseOrders.jsx | 2 + .../Dashboard/Inventory/Shipments.jsx | 2 + .../Dashboard/Inventory/StockAudits.jsx | 2 + .../Dashboard/Inventory/StockEvents.jsx | 2 + .../Dashboard/Inventory/StockLocations.jsx | 2 + .../Dashboard/Inventory/StockTransfers.jsx | 2 + .../Dashboard/Management/AppPasswords.jsx | 2 + .../Dashboard/Management/AuditLogs.jsx | 2 + .../Dashboard/Management/CourierServices.jsx | 2 + .../Dashboard/Management/Couriers.jsx | 2 + .../Dashboard/Management/DocumentJobs.jsx | 2 + .../DocumentJobs/NewDocumentJob.jsx | 11 +- .../Dashboard/Management/DocumentPrinters.jsx | 2 + .../Dashboard/Management/DocumentSizes.jsx | 2 + .../Management/DocumentTemplates.jsx | 2 + .../Dashboard/Management/EmailAccounts.jsx | 2 + .../Dashboard/Management/EmailMessages.jsx | 2 + .../EmailMessages/NewEmailMessage.jsx | 16 ++- .../Dashboard/Management/EmailTemplates.jsx | 2 + .../Dashboard/Management/FilamentSkus.jsx | 2 + .../Dashboard/Management/Filaments.jsx | 2 + src/components/Dashboard/Management/Files.jsx | 2 + src/components/Dashboard/Management/Hosts.jsx | 2 + .../Dashboard/Management/Materials.jsx | 2 + .../Dashboard/Management/NoteTypes.jsx | 2 + .../Dashboard/Management/PartSkus.jsx | 2 + src/components/Dashboard/Management/Parts.jsx | 2 + .../Management/PermissionSettings.jsx | 2 + .../Management/ProductCategories.jsx | 2 + .../Dashboard/Management/ProductSkus.jsx | 2 + .../Dashboard/Management/Products.jsx | 2 + .../Dashboard/Management/StockAuditLevels.jsx | 2 + .../Dashboard/Management/TaxRates.jsx | 2 + .../Dashboard/Management/UserGroups.jsx | 2 + src/components/Dashboard/Management/Users.jsx | 2 + .../Dashboard/Management/Vendors.jsx | 2 + .../Dashboard/Production/FilamentProfiles.jsx | 2 + .../Dashboard/Production/GCodeFiles.jsx | 2 + src/components/Dashboard/Production/Jobs.jsx | 2 + .../Dashboard/Production/PrinterProfiles.jsx | 2 + .../Dashboard/Production/Printers.jsx | 2 + .../Dashboard/Production/SubJobs.jsx | 2 + src/components/Dashboard/Sales/Clients.jsx | 2 + .../Dashboard/Sales/FulfillmentPolicies.jsx | 2 + .../Dashboard/Sales/ListingVarients.jsx | 2 + src/components/Dashboard/Sales/Listings.jsx | 2 + .../Dashboard/Sales/Marketplaces.jsx | 2 + .../Dashboard/Sales/ReturnPolicies.jsx | 2 + .../Dashboard/Sales/SalesOrders.jsx | 2 + .../Dashboard/common/DocumentPrintButton.jsx | 112 ++++++++++++----- .../Dashboard/common/EmailSendButton.jsx | 118 ++++++++++++++---- .../Dashboard/common/InfoActionButtons.jsx | 4 +- .../common/LoadingPleaseWaitModal.jsx | 30 +++++ .../Dashboard/context/TableStateContext.jsx | 5 +- .../Dashboard/utils/emailRecipients.js | 20 +++ .../Dashboard/utils/fetchAllObjectPages.js | 41 ++++++ .../Dashboard/utils/templateObjectData.js | 21 ++++ src/database/models/DocumentJob.js | 13 +- src/database/models/EmailMessage.js | 6 +- 67 files changed, 434 insertions(+), 73 deletions(-) create mode 100644 src/components/Dashboard/common/LoadingPleaseWaitModal.jsx create mode 100644 src/components/Dashboard/utils/fetchAllObjectPages.js create mode 100644 src/components/Dashboard/utils/templateObjectData.js diff --git a/src/components/Dashboard/Finance/Invoices.jsx b/src/components/Dashboard/Finance/Invoices.jsx index 2cc85d33..071d6d05 100644 --- a/src/components/Dashboard/Finance/Invoices.jsx +++ b/src/components/Dashboard/Finance/Invoices.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -48,6 +49,7 @@ const Invoices = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Finance/PaymentPolicies.jsx b/src/components/Dashboard/Finance/PaymentPolicies.jsx index 3f3a5c34..64461393 100644 --- a/src/components/Dashboard/Finance/PaymentPolicies.jsx +++ b/src/components/Dashboard/Finance/PaymentPolicies.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -48,6 +49,7 @@ const PaymentPolicies = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Finance/Payments.jsx b/src/components/Dashboard/Finance/Payments.jsx index 4e11c998..847e8a6c 100644 --- a/src/components/Dashboard/Finance/Payments.jsx +++ b/src/components/Dashboard/Finance/Payments.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const Payments = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Finance/TaxRecords.jsx b/src/components/Dashboard/Finance/TaxRecords.jsx index 87d6154e..449b9580 100644 --- a/src/components/Dashboard/Finance/TaxRecords.jsx +++ b/src/components/Dashboard/Finance/TaxRecords.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const TaxRecords = () => { updateCollapseState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/FilamentStocks.jsx b/src/components/Dashboard/Inventory/FilamentStocks.jsx index 37dfb320..b7d39ae8 100644 --- a/src/components/Dashboard/Inventory/FilamentStocks.jsx +++ b/src/components/Dashboard/Inventory/FilamentStocks.jsx @@ -15,6 +15,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -56,6 +57,7 @@ const FilamentStocks = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/OrderItems.jsx b/src/components/Dashboard/Inventory/OrderItems.jsx index e37a0aa1..6719b969 100644 --- a/src/components/Dashboard/Inventory/OrderItems.jsx +++ b/src/components/Dashboard/Inventory/OrderItems.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const OrderItems = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/PartStocks.jsx b/src/components/Dashboard/Inventory/PartStocks.jsx index 97819f59..4e38664f 100644 --- a/src/components/Dashboard/Inventory/PartStocks.jsx +++ b/src/components/Dashboard/Inventory/PartStocks.jsx @@ -15,6 +15,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -56,6 +57,7 @@ const PartStocks = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/ProductStocks.jsx b/src/components/Dashboard/Inventory/ProductStocks.jsx index f18a5388..cdf24e28 100644 --- a/src/components/Dashboard/Inventory/ProductStocks.jsx +++ b/src/components/Dashboard/Inventory/ProductStocks.jsx @@ -16,6 +16,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -57,6 +58,7 @@ const ProductStocks = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/PurchaseOrders.jsx b/src/components/Dashboard/Inventory/PurchaseOrders.jsx index dcbeef06..2a0fe2b3 100644 --- a/src/components/Dashboard/Inventory/PurchaseOrders.jsx +++ b/src/components/Dashboard/Inventory/PurchaseOrders.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const PurchaseOrders = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/Shipments.jsx b/src/components/Dashboard/Inventory/Shipments.jsx index 2c9061f5..3c0b833f 100644 --- a/src/components/Dashboard/Inventory/Shipments.jsx +++ b/src/components/Dashboard/Inventory/Shipments.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const Shipments = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/StockAudits.jsx b/src/components/Dashboard/Inventory/StockAudits.jsx index 36f998c0..382dedd8 100644 --- a/src/components/Dashboard/Inventory/StockAudits.jsx +++ b/src/components/Dashboard/Inventory/StockAudits.jsx @@ -15,6 +15,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -56,6 +57,7 @@ const StockAudits = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/StockEvents.jsx b/src/components/Dashboard/Inventory/StockEvents.jsx index 181e2ceb..110d8768 100644 --- a/src/components/Dashboard/Inventory/StockEvents.jsx +++ b/src/components/Dashboard/Inventory/StockEvents.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const StockEvents = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/StockLocations.jsx b/src/components/Dashboard/Inventory/StockLocations.jsx index b652c3e6..e0bbea8e 100644 --- a/src/components/Dashboard/Inventory/StockLocations.jsx +++ b/src/components/Dashboard/Inventory/StockLocations.jsx @@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -54,6 +55,7 @@ const StockLocations = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Inventory/StockTransfers.jsx b/src/components/Dashboard/Inventory/StockTransfers.jsx index 904d9da6..42b5bc10 100644 --- a/src/components/Dashboard/Inventory/StockTransfers.jsx +++ b/src/components/Dashboard/Inventory/StockTransfers.jsx @@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -54,6 +55,7 @@ const StockTransfers = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/AppPasswords.jsx b/src/components/Dashboard/Management/AppPasswords.jsx index fb29570d..089a95b1 100644 --- a/src/components/Dashboard/Management/AppPasswords.jsx +++ b/src/components/Dashboard/Management/AppPasswords.jsx @@ -11,6 +11,7 @@ import SortSidebarButton from '../common/SortSidebarButton' import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const AppPasswords = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/AuditLogs.jsx b/src/components/Dashboard/Management/AuditLogs.jsx index 45c0139c..1ce0a787 100644 --- a/src/components/Dashboard/Management/AuditLogs.jsx +++ b/src/components/Dashboard/Management/AuditLogs.jsx @@ -11,6 +11,7 @@ import FilterSidebarButton from '../common/FilterSidebarButton' import SortSidebarButton from '../common/SortSidebarButton' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import ObjectTableViewButton from '../common/ObjectTableViewButton' @@ -49,6 +50,7 @@ const AuditLogs = () => { updateVisibleState={updateColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/CourierServices.jsx b/src/components/Dashboard/Management/CourierServices.jsx index 5d78dafe..5cb70382 100644 --- a/src/components/Dashboard/Management/CourierServices.jsx +++ b/src/components/Dashboard/Management/CourierServices.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const CourierServices = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Couriers.jsx b/src/components/Dashboard/Management/Couriers.jsx index 51d8c338..6703a671 100644 --- a/src/components/Dashboard/Management/Couriers.jsx +++ b/src/components/Dashboard/Management/Couriers.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const Couriers = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/DocumentJobs.jsx b/src/components/Dashboard/Management/DocumentJobs.jsx index b9da3c45..e4b775c2 100644 --- a/src/components/Dashboard/Management/DocumentJobs.jsx +++ b/src/components/Dashboard/Management/DocumentJobs.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const DocumentJobs = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx b/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx index c9ca88cc..12cb0631 100644 --- a/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx +++ b/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx @@ -8,6 +8,7 @@ import { ApiServerContext } from '../../context/ApiServerContext' import { useCallback, useContext, useEffect, useRef, useState } from 'react' import { Modal } from 'antd' import dayjs from 'dayjs' +import { toTemplateObjectData } from '../../utils/templateObjectData' const NewDocumentJob = ({ onOk, defaultValues = {} }) => { const { @@ -125,7 +126,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => { }} > @@ -158,7 +159,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => { downloadTemplate( objectData.documentTemplate._id, objectData.documentTemplate.content, - objectData.object, + toTemplateObjectData(objectData.objects), fileName, 'pdf', () => { @@ -175,7 +176,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => { downloadTemplate( objectData.documentTemplate._id, objectData.documentTemplate.content, - objectData.object, + toTemplateObjectData(objectData.objects), fileName, 'png', () => { @@ -192,7 +193,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => { downloadTemplate( objectData.documentTemplate._id, objectData.documentTemplate.content, - objectData.object, + toTemplateObjectData(objectData.objects), fileName, 'jpeg', () => { @@ -209,7 +210,7 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => { downloadTemplate( objectData.documentTemplate._id, objectData.documentTemplate.content, - objectData.object, + toTemplateObjectData(objectData.objects), fileName, 'svg', () => { diff --git a/src/components/Dashboard/Management/DocumentPrinters.jsx b/src/components/Dashboard/Management/DocumentPrinters.jsx index 96d487ec..11ed8981 100644 --- a/src/components/Dashboard/Management/DocumentPrinters.jsx +++ b/src/components/Dashboard/Management/DocumentPrinters.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const DocumentPrinters = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/DocumentSizes.jsx b/src/components/Dashboard/Management/DocumentSizes.jsx index 5838beab..810e2d84 100644 --- a/src/components/Dashboard/Management/DocumentSizes.jsx +++ b/src/components/Dashboard/Management/DocumentSizes.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const DocumentSizes = () => { updateCollapseState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/DocumentTemplates.jsx b/src/components/Dashboard/Management/DocumentTemplates.jsx index 195f2190..22d72381 100644 --- a/src/components/Dashboard/Management/DocumentTemplates.jsx +++ b/src/components/Dashboard/Management/DocumentTemplates.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const DocumentTemplates = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/EmailAccounts.jsx b/src/components/Dashboard/Management/EmailAccounts.jsx index c23f77ce..bd7b60b9 100644 --- a/src/components/Dashboard/Management/EmailAccounts.jsx +++ b/src/components/Dashboard/Management/EmailAccounts.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -48,6 +49,7 @@ const EmailAccounts = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/EmailMessages.jsx b/src/components/Dashboard/Management/EmailMessages.jsx index 751c2f1f..175cbe18 100644 --- a/src/components/Dashboard/Management/EmailMessages.jsx +++ b/src/components/Dashboard/Management/EmailMessages.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -48,6 +49,7 @@ const EmailMessages = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/EmailMessages/NewEmailMessage.jsx b/src/components/Dashboard/Management/EmailMessages/NewEmailMessage.jsx index 2c86d6d2..738ffefd 100644 --- a/src/components/Dashboard/Management/EmailMessages/NewEmailMessage.jsx +++ b/src/components/Dashboard/Management/EmailMessages/NewEmailMessage.jsx @@ -14,7 +14,8 @@ import WizardView from '../../common/WizardView' import TemplatePreview from '../../common/TemplatePreview' import ProgressDisplay from '../../common/ProgressDisplay' import { ApiServerContext } from '../../context/ApiServerContext' -import { resolveEmailRecipients } from '../../utils/emailRecipients' +import { resolveEmailRecipientsForObjects } from '../../utils/emailRecipients' +import { toTemplateObjectData } from '../../utils/templateObjectData' const progressByState = { queued: 10, @@ -46,9 +47,13 @@ const EmailWizardContent = ({ return } let cancelled = false - resolveEmailRecipients({ + resolveEmailRecipientsForObjects({ type: objectData?.objectType, - objectData: objectData?.object, + objects: Array.isArray(objectData?.objects) + ? objectData.objects + : objectData?.object + ? [objectData.object] + : [], fetchObject }).then((result) => { if (!cancelled) setCandidates(result) @@ -60,6 +65,7 @@ const EmailWizardContent = ({ defaultCandidates, fetchObject, objectData?.object, + objectData?.objects, objectData?.objectType ]) @@ -110,7 +116,7 @@ const EmailWizardContent = ({ visibleProperties={{ name: true, objectType: true, - object: true, + objects: true, emailTemplate: true, emailAccount: true, recipientEmail: true, @@ -142,7 +148,7 @@ const EmailWizardContent = ({ }} > { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/FilamentSkus.jsx b/src/components/Dashboard/Management/FilamentSkus.jsx index ffdcfb41..58a6dc6f 100644 --- a/src/components/Dashboard/Management/FilamentSkus.jsx +++ b/src/components/Dashboard/Management/FilamentSkus.jsx @@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -54,6 +55,7 @@ const FilamentSkus = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Filaments.jsx b/src/components/Dashboard/Management/Filaments.jsx index 160cae26..53c91516 100644 --- a/src/components/Dashboard/Management/Filaments.jsx +++ b/src/components/Dashboard/Management/Filaments.jsx @@ -13,6 +13,7 @@ import ObjectTableViewButton from '../common/ObjectTableViewButton' import FilterSidebarButton from '../common/FilterSidebarButton' import SortSidebarButton from '../common/SortSidebarButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -58,6 +59,7 @@ const Filaments = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Files.jsx b/src/components/Dashboard/Management/Files.jsx index d87a527b..86f76400 100644 --- a/src/components/Dashboard/Management/Files.jsx +++ b/src/components/Dashboard/Management/Files.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -50,6 +51,7 @@ const Files = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Hosts.jsx b/src/components/Dashboard/Management/Hosts.jsx index 0c01bca8..f143788c 100644 --- a/src/components/Dashboard/Management/Hosts.jsx +++ b/src/components/Dashboard/Management/Hosts.jsx @@ -7,6 +7,7 @@ import { Flex, Space } from 'antd' import useColumnVisibility from '../hooks/useColumnVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -57,6 +58,7 @@ const Hosts = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Materials.jsx b/src/components/Dashboard/Management/Materials.jsx index 2d6d4270..da714340 100644 --- a/src/components/Dashboard/Management/Materials.jsx +++ b/src/components/Dashboard/Management/Materials.jsx @@ -13,6 +13,7 @@ import SortSidebarButton from '../common/SortSidebarButton' import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -54,6 +55,7 @@ const Materials = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/NoteTypes.jsx b/src/components/Dashboard/Management/NoteTypes.jsx index 6cd1cbcf..cacb61a6 100644 --- a/src/components/Dashboard/Management/NoteTypes.jsx +++ b/src/components/Dashboard/Management/NoteTypes.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const NoteTypes = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/PartSkus.jsx b/src/components/Dashboard/Management/PartSkus.jsx index a5155054..4ec907d0 100644 --- a/src/components/Dashboard/Management/PartSkus.jsx +++ b/src/components/Dashboard/Management/PartSkus.jsx @@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -53,6 +54,7 @@ const PartSkus = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Parts.jsx b/src/components/Dashboard/Management/Parts.jsx index bc5517eb..c97847d7 100644 --- a/src/components/Dashboard/Management/Parts.jsx +++ b/src/components/Dashboard/Management/Parts.jsx @@ -18,6 +18,7 @@ import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -57,6 +58,7 @@ const Parts = (filter) => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/PermissionSettings.jsx b/src/components/Dashboard/Management/PermissionSettings.jsx index 25b4fe18..654a719c 100644 --- a/src/components/Dashboard/Management/PermissionSettings.jsx +++ b/src/components/Dashboard/Management/PermissionSettings.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const PermissionSettingsList = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/ProductCategories.jsx b/src/components/Dashboard/Management/ProductCategories.jsx index c524a203..dfa2a0a5 100644 --- a/src/components/Dashboard/Management/ProductCategories.jsx +++ b/src/components/Dashboard/Management/ProductCategories.jsx @@ -13,6 +13,7 @@ import SortSidebarButton from '../common/SortSidebarButton' import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -54,6 +55,7 @@ const ProductCategories = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/ProductSkus.jsx b/src/components/Dashboard/Management/ProductSkus.jsx index 897124f2..92d8d88b 100644 --- a/src/components/Dashboard/Management/ProductSkus.jsx +++ b/src/components/Dashboard/Management/ProductSkus.jsx @@ -13,6 +13,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -54,6 +55,7 @@ const ProductSkus = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Products.jsx b/src/components/Dashboard/Management/Products.jsx index 10d31d7a..343d7264 100644 --- a/src/components/Dashboard/Management/Products.jsx +++ b/src/components/Dashboard/Management/Products.jsx @@ -29,6 +29,7 @@ import SortSidebarButton from '../common/SortSidebarButton' import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -320,6 +321,7 @@ const Products = () => { onReload={() => tableRef.current?.reload()} /> + { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/TaxRates.jsx b/src/components/Dashboard/Management/TaxRates.jsx index 1abf3d32..4d66a17c 100644 --- a/src/components/Dashboard/Management/TaxRates.jsx +++ b/src/components/Dashboard/Management/TaxRates.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const TaxRates = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/UserGroups.jsx b/src/components/Dashboard/Management/UserGroups.jsx index 8b4bed0d..427c96fd 100644 --- a/src/components/Dashboard/Management/UserGroups.jsx +++ b/src/components/Dashboard/Management/UserGroups.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const UserGroups = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Users.jsx b/src/components/Dashboard/Management/Users.jsx index 43dc32aa..afd80090 100644 --- a/src/components/Dashboard/Management/Users.jsx +++ b/src/components/Dashboard/Management/Users.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const Users = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Management/Vendors.jsx b/src/components/Dashboard/Management/Vendors.jsx index ac3d21ac..64260c46 100644 --- a/src/components/Dashboard/Management/Vendors.jsx +++ b/src/components/Dashboard/Management/Vendors.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -50,6 +51,7 @@ const Vendors = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Production/FilamentProfiles.jsx b/src/components/Dashboard/Production/FilamentProfiles.jsx index 8fbcc484..d508e191 100644 --- a/src/components/Dashboard/Production/FilamentProfiles.jsx +++ b/src/components/Dashboard/Production/FilamentProfiles.jsx @@ -2,6 +2,7 @@ import { useRef } from 'react' import { Flex, Space } from 'antd' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -49,6 +50,7 @@ const FilamentProfiles = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Production/GCodeFiles.jsx b/src/components/Dashboard/Production/GCodeFiles.jsx index 650a1e4b..ac3b850e 100644 --- a/src/components/Dashboard/Production/GCodeFiles.jsx +++ b/src/components/Dashboard/Production/GCodeFiles.jsx @@ -14,6 +14,7 @@ import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -55,6 +56,7 @@ const GCodeFiles = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Production/Jobs.jsx b/src/components/Dashboard/Production/Jobs.jsx index fe614d6a..6ebf9e64 100644 --- a/src/components/Dashboard/Production/Jobs.jsx +++ b/src/components/Dashboard/Production/Jobs.jsx @@ -13,6 +13,7 @@ import ColumnViewButton from '../common/ColumnViewButton.jsx' import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility.jsx' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ExportListButton from '../common/ExportListButton.jsx' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -53,6 +54,7 @@ const Jobs = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Production/PrinterProfiles.jsx b/src/components/Dashboard/Production/PrinterProfiles.jsx index 52840eea..5ee14e74 100644 --- a/src/components/Dashboard/Production/PrinterProfiles.jsx +++ b/src/components/Dashboard/Production/PrinterProfiles.jsx @@ -2,6 +2,7 @@ import { useRef } from 'react' import { Flex, Space } from 'antd' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -48,6 +49,7 @@ const PrinterProfiles = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Production/Printers.jsx b/src/components/Dashboard/Production/Printers.jsx index 11405d6f..d3dd7928 100644 --- a/src/components/Dashboard/Production/Printers.jsx +++ b/src/components/Dashboard/Production/Printers.jsx @@ -7,6 +7,7 @@ import ObjectActions from '../common/ObjectActions' import BulkObjectActions from '../common/BulkObjectActions' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -58,6 +59,7 @@ const Printers = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Production/SubJobs.jsx b/src/components/Dashboard/Production/SubJobs.jsx index 86a0d92d..0e7fa221 100644 --- a/src/components/Dashboard/Production/SubJobs.jsx +++ b/src/components/Dashboard/Production/SubJobs.jsx @@ -13,6 +13,7 @@ import ColumnViewButton from '../common/ColumnViewButton.jsx' import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility.jsx' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ExportListButton from '../common/ExportListButton.jsx' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -53,6 +54,7 @@ const SubJobs = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/Clients.jsx b/src/components/Dashboard/Sales/Clients.jsx index 9db1b052..69944333 100644 --- a/src/components/Dashboard/Sales/Clients.jsx +++ b/src/components/Dashboard/Sales/Clients.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -51,6 +52,7 @@ const Clients = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/FulfillmentPolicies.jsx b/src/components/Dashboard/Sales/FulfillmentPolicies.jsx index 462eeb77..46b297fd 100644 --- a/src/components/Dashboard/Sales/FulfillmentPolicies.jsx +++ b/src/components/Dashboard/Sales/FulfillmentPolicies.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -48,6 +49,7 @@ const FulfillmentPolicies = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/ListingVarients.jsx b/src/components/Dashboard/Sales/ListingVarients.jsx index 5d2204fe..1a63b25f 100644 --- a/src/components/Dashboard/Sales/ListingVarients.jsx +++ b/src/components/Dashboard/Sales/ListingVarients.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const ListingVarients = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/Listings.jsx b/src/components/Dashboard/Sales/Listings.jsx index e0507943..5678718d 100644 --- a/src/components/Dashboard/Sales/Listings.jsx +++ b/src/components/Dashboard/Sales/Listings.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const Listings = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/Marketplaces.jsx b/src/components/Dashboard/Sales/Marketplaces.jsx index b6a31d5b..945b4570 100644 --- a/src/components/Dashboard/Sales/Marketplaces.jsx +++ b/src/components/Dashboard/Sales/Marketplaces.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const Marketplaces = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/ReturnPolicies.jsx b/src/components/Dashboard/Sales/ReturnPolicies.jsx index f0c84dad..0d3e84e2 100644 --- a/src/components/Dashboard/Sales/ReturnPolicies.jsx +++ b/src/components/Dashboard/Sales/ReturnPolicies.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -47,6 +48,7 @@ const ReturnPolicies = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/Sales/SalesOrders.jsx b/src/components/Dashboard/Sales/SalesOrders.jsx index 385c9c42..36023d65 100644 --- a/src/components/Dashboard/Sales/SalesOrders.jsx +++ b/src/components/Dashboard/Sales/SalesOrders.jsx @@ -11,6 +11,7 @@ import useFilterSidebarVisibility from '../hooks/useFilterSidebarVisibility' import useSortSidebarVisibility from '../hooks/useSortSidebarVisibility' import ColumnViewButton from '../common/ColumnViewButton' import ExportListButton from '../common/ExportListButton' +import InfoActionButtons from '../common/InfoActionButtons' import ListViewTabs from '../common/ListViewTabs' import ListViewEditButtons from '../common/ListViewEditButtons' import { ObjectListViewProvider } from '../context/ObjectListViewContext' @@ -52,6 +53,7 @@ const SalesOrders = () => { updateVisibleState={setColumnVisibility} /> + diff --git a/src/components/Dashboard/common/DocumentPrintButton.jsx b/src/components/Dashboard/common/DocumentPrintButton.jsx index 6e6d4288..cc718433 100644 --- a/src/components/Dashboard/common/DocumentPrintButton.jsx +++ b/src/components/Dashboard/common/DocumentPrintButton.jsx @@ -7,33 +7,39 @@ import { useMemo, useRef } from 'react' -// import { getModelByName } from '../../../database/ObjectModels' import DocumentPrinterIcon from '../../Icons/DocumentPrinterIcon' -import { Button, Dropdown, Modal } from 'antd' +import { Button, Dropdown, Modal, message } from 'antd' import { ApiServerContext } from '../context/ApiServerContext' +import { TableStateContext } from '../context/TableStateContext' import DocumentTemplateIcon from '../../Icons/DocumentTemplateIcon' import NewDocumentJob from '../Management/DocumentJobs/NewDocumentJob' import { AuthContext } from '../context/AuthContext' +import LoadingPleaseWaitModal from './LoadingPleaseWaitModal' +import { fetchAllObjectPages } from '../utils/fetchAllObjectPages' +import { resolveObjectsList } from '../utils/templateObjectData' const DocumentPrintButton = ({ type, objectData, + objects, + listMode = false, disabled = false, ...buttonProps }) => { - const { - fetchObjects, - connected, - subscribeToObjectUpdates, - subscribeToObjectTypeUpdates - } = useContext(ApiServerContext) + const { fetchObjects, connected, subscribeToObjectUpdates, subscribeToObjectTypeUpdates } = + useContext(ApiServerContext) + const tableState = useContext(TableStateContext) const fetchObjectsRef = useRef(fetchObjects) fetchObjectsRef.current = fetchObjects const [documentTemplates, setDocumentTemplates] = useState([]) const [currentDocumentTemplate, setCurrentDocumentTemplate] = useState(null) const [loading, setLoading] = useState(false) + const [listLoading, setListLoading] = useState(false) const [newDocumentJobOpen, setNewDocumentJobOpen] = useState(false) + const [selectedObjects, setSelectedObjects] = useState(() => + resolveObjectsList(objects, objectData) + ) const subscribedIdsRef = useRef([]) const unsubscribesRef = useRef([]) @@ -42,6 +48,11 @@ const DocumentPrintButton = ({ const { token } = useContext(AuthContext) + const resolvedObjects = useMemo( + () => resolveObjectsList(objects, objectData), + [objects, objectData] + ) + const subscriptionFilter = useMemo( () => ({ objectType: type, @@ -69,7 +80,7 @@ const DocumentPrintButton = ({ try { const result = await fetchObjectsRef.current('documentTemplate', { filter: subscriptionFilter, - limit: 100 // Get more templates to show in dropdown + limit: 100 }) if (result && result.data) { @@ -89,13 +100,13 @@ const DocumentPrintButton = ({ const loadDocumentTemplatesRef = useRef(loadDocumentTemplates) loadDocumentTemplatesRef.current = loadDocumentTemplates - // Stable key from objectData._id (excludes _isEditing so toggling edit mode doesn't trigger template reload) const objectKey = useMemo(() => { - if (!objectData) return null - return objectData._id ?? objectData.id ?? null - }, [objectData]) + if (listMode) return 'list' + const first = resolvedObjects[0] + 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(() => { loadDocumentTemplates() }, [objectKey, token, type, loadDocumentTemplates]) @@ -147,7 +158,9 @@ const DocumentPrintButton = ({ useEffect(() => { 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( (id) => !subscribedIdsRef.current.includes(id) @@ -197,15 +210,40 @@ const DocumentPrintButton = ({ } }, []) - // Handle template selection - const handleTemplateSelect = (template) => { - setCurrentDocumentTemplate(template) - setNewDocumentJobOpen(true) - // TODO: Implement the actual printing logic here - // This could open a print dialog, navigate to a print page, etc. - } + const handleTemplateSelect = useCallback( + async (template) => { + setCurrentDocumentTemplate(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 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 templatesByTag = new Map() const untaggedTemplates = [] @@ -228,9 +266,9 @@ const DocumentPrintButton = ({ } for (const tag of templateTags) { - const templates = templatesByTag.get(tag) ?? [] - templates.push(template) - templatesByTag.set(tag, templates) + const tagged = templatesByTag.get(tag) ?? [] + tagged.push(template) + templatesByTag.set(tag, tagged) } } @@ -252,9 +290,14 @@ const DocumentPrintButton = ({ .map(toTemplateMenuItem) 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) { return (