Produktion: Suche-Reiter + Sammel-Druck mit editierbaren Maßen
Suche-Reiter (ganz oben, vor Neu): großes Suchfeld über alle aktiven Stufen (Neu, Warteschlange, Im Druck, Kuvertierung, Versandfertig), empfängergenau – Einzelaufträge zeigen den Namen, Mehrfachaufträge den Empfänger an der richtigen Briefnummer. Über dem Feld ein Typ-Umschalter (Schriftstück / Kuvert / Druckobjekte) mit je eigenem, im Reiter einstellbarem Standard-Template + Maschine (lokal gespeichert). Der Druck-Button gibt genau diesen Empfänger mit dem Standard-Template in die Warteschlange; Druckobjekte öffnet die Dateien zum Herunterladen. Sammel-Druck (Mass-Select): pro Format nicht nur Template + Maschine, sondern auch Maße/Position (Breite, Höhe, X, Y, Scale, Rotation) editierbar – übersteuert die Template-Werte wie beim Einzeldruck (enqueue-bulk reicht die params jetzt an die Jobs durch). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1267,6 +1267,17 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
const mode = body.mode === 'direct' ? 'direct' : 'queue';
|
||||
const prioFor = (m) => (mode === 'direct' && !busySet.has(String(m))) ? 100 : 0;
|
||||
|
||||
// Reinigt eine Maß-Übersteuerung auf erlaubte Zahlenfelder (oder null) –
|
||||
// wie in /enqueue, damit der Sammel-Druck Template-Werte übersteuern kann.
|
||||
const clampParams = (p) => {
|
||||
if (!p || typeof p !== 'object') return null;
|
||||
const out = {};
|
||||
for (const k of ['width', 'height', 'xpos', 'ypos', 'scale', 'rotation']) {
|
||||
if (p[k] !== undefined && p[k] !== null && p[k] !== '' && !isNaN(Number(p[k]))) out[k] = Number(p[k]);
|
||||
}
|
||||
return Object.keys(out).length ? out : null;
|
||||
};
|
||||
|
||||
const jobs = [];
|
||||
const uebersprungen = [];
|
||||
const mkJob = async (order, typ, fmt) => {
|
||||
@@ -1277,7 +1288,8 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
}
|
||||
jobs.push(await svc('jobs').createOne({
|
||||
order: order.id, machine: cfg.machine, type: typ, template: cfg.template,
|
||||
format: fmt.key, format_label: cfg.label || fmt.label, status: 'queued', priority: prioFor(cfg.machine),
|
||||
format: fmt.key, format_label: cfg.label || fmt.label, params: clampParams(cfg.params),
|
||||
status: 'queued', priority: prioFor(cfg.machine),
|
||||
}));
|
||||
};
|
||||
for (const order of orders) {
|
||||
|
||||
Reference in New Issue
Block a user