Inputvaledierung für die Projektnummern
This commit is contained in:
@@ -38,6 +38,21 @@ function getWeekendPercentage(date) {
|
||||
return 100; // Kein Wochenende = 100% (normal)
|
||||
}
|
||||
|
||||
/** Plausibilitätsprüfung Projektnummer: 7 Ziffern, beginnt mit 5, dann YY (Jahr), dann 4 Ziffern (z.B. 5260001). */
|
||||
function isValidProjectNumber(value) {
|
||||
if (value === null || value === undefined || String(value).trim() === '') return true;
|
||||
return /^5\d{6}$/.test(String(value).trim());
|
||||
}
|
||||
|
||||
function validateActivityProjectNumbers(activities) {
|
||||
for (let i = 0; i < activities.length; i++) {
|
||||
if (!isValidProjectNumber(activities[i].projectNumber)) {
|
||||
return { valid: false, activityIndex: i + 1, value: activities[i].projectNumber };
|
||||
}
|
||||
}
|
||||
return { valid: true };
|
||||
}
|
||||
|
||||
// Statistiken laden
|
||||
async function loadUserStats() {
|
||||
try {
|
||||
@@ -683,7 +698,8 @@ function renderWeek() {
|
||||
data-date="${dateStr}"
|
||||
data-field="activity${idx + 1}_project_number"
|
||||
value="${activity.projectNumber || ''}"
|
||||
placeholder="Projektnummer"
|
||||
placeholder="z. B. 5260001"
|
||||
title="7 Ziffern: 5 + Jahr (YY) + 4 Ziffern"
|
||||
${timeFieldsDisabled} ${disabled}
|
||||
onblur="saveEntry(this)"
|
||||
class="activity-project-input">
|
||||
@@ -1274,6 +1290,19 @@ async function saveEntry(input) {
|
||||
projectNumber: projectInput ? (projectInput.value || null) : (currentEntries[date][`activity${i}_project_number`] || null)
|
||||
});
|
||||
}
|
||||
|
||||
const projectNumberCheck = validateActivityProjectNumbers(activities);
|
||||
if (!projectNumberCheck.valid) {
|
||||
const idx = projectNumberCheck.activityIndex;
|
||||
const invalidInput = document.querySelector(`input[data-date="${date}"][data-field="activity${idx}_project_number"]`);
|
||||
if (invalidInput) {
|
||||
invalidInput.value = '';
|
||||
}
|
||||
if (activities[idx - 1]) {
|
||||
activities[idx - 1].projectNumber = null;
|
||||
}
|
||||
alert(`Ungültige Projektnummer in Tätigkeit ${projectNumberCheck.activityIndex}: Die Projektnummer muss 7 Ziffern haben, mit 5 beginnen, gefolgt vom Jahr (YY) und 4 Ziffern (z.B. 5260001). Die Eingabe wurde geleert.`);
|
||||
}
|
||||
|
||||
// Aktualisiere currentEntries mit den DOM-Werten
|
||||
currentEntries[date].start_time = start_time;
|
||||
@@ -1538,6 +1567,11 @@ async function saveEntry(input) {
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (!response.ok) {
|
||||
alert(result.error || 'Fehler beim Speichern');
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.success) {
|
||||
// Aktualisiere Stunden-Anzeige
|
||||
|
||||
Reference in New Issue
Block a user