Configurierung des Slot amount generation
This commit is contained in:
@@ -203,6 +203,18 @@
|
|||||||
if (slotsAmountsDisplay) slotsAmountsDisplay.innerText = totalSlots + " Slots gesamt";
|
if (slotsAmountsDisplay) slotsAmountsDisplay.innerText = totalSlots + " Slots gesamt";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper utility in case your timeToMinutes handler doesn't catch empty strings safely
|
||||||
|
function safeTimeToMinutes(timeString) {
|
||||||
|
if (!timeString || typeof timeString !== 'string' || !timeString.includes(':')) {
|
||||||
|
return 0; // Return 0 instead of NaN for empty or missing values
|
||||||
|
}
|
||||||
|
const parts = timeString.split(':');
|
||||||
|
const hours = parseInt(parts[0], 10);
|
||||||
|
const minutes = parseInt(parts[1], 10);
|
||||||
|
if (isNaN(hours) || isNaN(minutes)) return 0;
|
||||||
|
return (hours * 60) + minutes;
|
||||||
|
}
|
||||||
|
|
||||||
// Berechnet die Slots basierend auf den konfigurierten Zeiten & Pausen
|
// Berechnet die Slots basierend auf den konfigurierten Zeiten & Pausen
|
||||||
function calculateSlots() {
|
function calculateSlots() {
|
||||||
if (!slotLengthInput || !slotsAmountsInput || !clientsperslot) return;
|
if (!slotLengthInput || !slotsAmountsInput || !clientsperslot) return;
|
||||||
@@ -213,6 +225,9 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIX 1: Make sure we parse the input VALUE, defaulting to 1 if empty or invalid
|
||||||
|
const multiplier = parseInt(clientsperslot.value, 10) || 1;
|
||||||
|
|
||||||
let totalSlots = 0;
|
let totalSlots = 0;
|
||||||
const rows = Array.from(daysContainer.querySelectorAll('[data-day-row]'));
|
const rows = Array.from(daysContainer.querySelectorAll('[data-day-row]'));
|
||||||
|
|
||||||
@@ -224,12 +239,13 @@
|
|||||||
|
|
||||||
if (!startTime || !endTime) return;
|
if (!startTime || !endTime) return;
|
||||||
|
|
||||||
const startMins = timeToMinutes(startTime);
|
// Using safety parsing to prevent missing values from generating NaN
|
||||||
const endMins = timeToMinutes(endTime);
|
const startMins = safeTimeToMinutes(startTime);
|
||||||
const pauseStartMins = timeToMinutes(pauseStart);
|
const endMins = safeTimeToMinutes(endTime);
|
||||||
const pauseEndMins = timeToMinutes(pauseEnd);
|
const pauseStartMins = safeTimeToMinutes(pauseStart);
|
||||||
|
const pauseEndMins = safeTimeToMinutes(pauseEnd);
|
||||||
|
|
||||||
if (endMins <= startMins) return; // Ungültige Zeit
|
if (isNaN(startMins) || isNaN(endMins) || endMins <= startMins) return;
|
||||||
|
|
||||||
// Wenn eine gültige Pause innerhalb der Start/Endzeit existiert
|
// Wenn eine gültige Pause innerhalb der Start/Endzeit existiert
|
||||||
if (pauseStartMins > 0 && pauseEndMins > 0 && pauseStartMins < pauseEndMins && pauseStartMins > startMins && pauseStartMins < endMins) {
|
if (pauseStartMins > 0 && pauseEndMins > 0 && pauseStartMins < pauseEndMins && pauseStartMins > startMins && pauseStartMins < endMins) {
|
||||||
@@ -248,8 +264,12 @@
|
|||||||
totalSlots += Math.floor((endMins - startMins) / slotLength);
|
totalSlots += Math.floor((endMins - startMins) / slotLength);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
totalSlotscomplete = totalSlots * Number(clientsperslot)
|
|
||||||
updateSlotsDisplay(totalSlotscomplete);
|
// FIX 2: Multiply by our safely parsed input value scalar
|
||||||
|
const totalSlotscomplete = totalSlots * multiplier;
|
||||||
|
|
||||||
|
// Safety check: if anything went wrong anyway, fallback to 0 instead of displaying NaN
|
||||||
|
updateSlotsDisplay(isNaN(totalSlotscomplete) ? 0 : totalSlotscomplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Synchronisiert das Textfeld und fügt den Break-Cut hinzu
|
// Synchronisiert das Textfeld und fügt den Break-Cut hinzu
|
||||||
|
|||||||
Reference in New Issue
Block a user