feat: Etiketten-Seitenlayout auf dem A4-Bogen frei waehlbar
Backend Image / build-and-push (push) Successful in 2m16s
Frontend Image / build-and-push (push) Successful in 2m0s

- LabelTemplate bekommt columns/rows (optional, leer = automatisch
  passend), plus konfigurierbare Raender/Abstaende - damit ein Etikett
  exakt auf das vorgedruckte Raster eines physischen Etikettenbogens
  (z.B. Avery) gelegt werden kann statt nur automatisch berechnet
- Startposition beim Drucken waehlbar, fuer bereits angebrochene Boegen
  (erste Seite startet ab der gewaehlten Position, Folgeseiten wieder
  von vorne)
This commit is contained in:
Nick Szaunig committed 2026-09-01 19:43:01 +02:00
1 parent 9659b8d266
commit c6941a797f
11 files changed
+357 -27

No files matched your search

@@ -4,6 +4,7 @@ import {
ArrayMaxSize,
IsArray,
IsBoolean,
IsInt,
IsNumber,
IsOptional,
IsString,
@@ -36,6 +37,47 @@ export class CreateLabelTemplateDto {
@Min(10)
heightMm?: number;
@ApiPropertyOptional({
description:
'Spalten pro A4-Bogen. Leer = automatisch so viele wie passen.',
})
@IsOptional()
@IsInt()
@Min(1)
columns?: number;
@ApiPropertyOptional({
description: 'Zeilen pro A4-Bogen. Leer = automatisch so viele wie passen.',
})
@IsOptional()
@IsInt()
@Min(1)
rows?: number;
@ApiPropertyOptional()
@IsOptional()
@IsNumber()
@Min(0)
marginTopMm?: number;
@ApiPropertyOptional()
@IsOptional()
@IsNumber()
@Min(0)
marginLeftMm?: number;
@ApiPropertyOptional()
@IsOptional()
@IsNumber()
@Min(0)
gapXMm?: number;
@ApiPropertyOptional()
@IsOptional()
@IsNumber()
@Min(0)
gapYMm?: number;
@ApiPropertyOptional()
@IsOptional()
@IsBoolean()