diff --git a/client/public/locales/en/common.json b/client/public/locales/en/common.json index d0ff6d4..d06fced 100644 --- a/client/public/locales/en/common.json +++ b/client/public/locales/en/common.json @@ -72,6 +72,7 @@ "showBorder": "Show Border", "previewScale": "Preview Scale", "skipItems": "Skip Items", + "itemCopies": "Item Copies", "contentSettings": "Content Settings", "layoutSettings": "Layout Settings", "horizontalSpacing": "Horizontal Spacing", diff --git a/client/src/components/printing/printingDialog.tsx b/client/src/components/printing/printingDialog.tsx index a10e633..fcccb44 100644 --- a/client/src/components/printing/printingDialog.tsx +++ b/client/src/components/printing/printingDialog.tsx @@ -75,6 +75,7 @@ const PrintingDialog: React.FC = ({ items, style, extraSett const [paperColumns, setPaperColumns] = useSavedState("print-itemsPerRow", 3); const [paperRows, setPaperRows] = useSavedState("print-rowsPerPage", 8); const [skipItems, setSkipItems] = useSavedState("print-skipItems", 0); + const [itemCopies, setItemCopies] = useSavedState("print-itemCopies", 1); const [paperSize, setPaperSize] = useSavedState("print-paperSize", "A4"); const [customPaperWidth, setCustomPaperWidth] = useSavedState("print-customPaperWidth", 210); const [customPaperHeight, setCustomPaperHeight] = useSavedState("print-customPaperHeight", 297); @@ -92,7 +93,12 @@ const PrintingDialog: React.FC = ({ items, style, extraSett const itemsPerRow = paperColumns; const rowsPerPage = paperRows; - const itemsIncludingSkipped = [...Array(skipItems).fill(<>), ...items]; + const itemsIncludingSkipped = [...Array(skipItems).fill(<>)]; + for (const item of items) { + for (let i = 0; i < itemCopies; i += 1) { + itemsIncludingSkipped.push(item); + } + } const rowsOfItems = []; for (let row_idx = 0; row_idx < itemsIncludingSkipped.length / itemsPerRow; row_idx += 1) { @@ -272,6 +278,30 @@ const PrintingDialog: React.FC = ({ items, style, extraSett + + + + { + setItemCopies(value); + }} + /> + + + { + setItemCopies(value ?? 1); + }} + /> + + +