Refresh-Intervall: Mindestzeiten je nach Quellen erzwingen
Mindest-Aktualisierungsintervall im Lage-Modal: 30 Minuten Basis, 45 bei X oder Telegram, 60 bei X und Telegram zugleich (internationale Quellen ohne Einfluss). Minutenwerte darunter sind im UI nicht mehr einstellbar (min-Attribut, Clamp am Feld und beim Speichern). Beim Umstellen von Stunden auf Minuten wird das Minimum gesetzt und als Hinweis angezeigt. Gilt für Anlegen und Bearbeiten. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -578,8 +578,16 @@ const App = {
|
||||
// Telegram-Kategorien Toggle
|
||||
const tgCheckbox = document.getElementById('inc-telegram');
|
||||
if (tgCheckbox) {
|
||||
|
||||
tgCheckbox.addEventListener('change', () => updateIntervalMin());
|
||||
}
|
||||
{ const xCheckbox = document.getElementById('inc-x');
|
||||
if (xCheckbox) xCheckbox.addEventListener('change', () => updateIntervalMin()); }
|
||||
{ const ivInput = document.getElementById('inc-refresh-value');
|
||||
if (ivInput) ivInput.addEventListener('change', () => {
|
||||
const u = parseInt(document.getElementById('inc-refresh-unit').value);
|
||||
const m = (u === 1) ? _getMinIntervalMinutes() : 1;
|
||||
if (isNaN(parseInt(ivInput.value)) || parseInt(ivInput.value) < m) ivInput.value = m;
|
||||
}); }
|
||||
|
||||
|
||||
// Feedback
|
||||
@@ -1836,9 +1844,9 @@ const App = {
|
||||
// === Event Handlers ===
|
||||
|
||||
_getFormData() {
|
||||
const value = parseInt(document.getElementById('inc-refresh-value').value) || 15;
|
||||
const value = parseInt(document.getElementById('inc-refresh-value').value) || 30;
|
||||
const unit = parseInt(document.getElementById('inc-refresh-unit').value) || 1;
|
||||
const interval = Math.max(10, Math.min(10080, value * unit));
|
||||
const interval = Math.max(_getMinIntervalMinutes(), Math.min(10080, value * unit));
|
||||
return {
|
||||
title: document.getElementById('inc-title').value.trim(),
|
||||
description: document.getElementById('inc-description').value.trim() || null,
|
||||
@@ -2294,6 +2302,7 @@ async handleRefresh() {
|
||||
updateSourcesHint();
|
||||
toggleTypeDefaults(true);
|
||||
toggleRefreshInterval();
|
||||
updateIntervalMin();
|
||||
|
||||
// Modal-Titel und Submit ändern
|
||||
{ const _e = document.getElementById('modal-new-title'); if (_e) _e.textContent = (typeof T === 'function') ? T('modal.new_incident.edit_title', 'Lage bearbeiten') : 'Lage bearbeiten'; }
|
||||
@@ -3633,6 +3642,7 @@ function openModal(id) {
|
||||
document.getElementById('inc-notify-status-change').checked = false;
|
||||
toggleTypeDefaults();
|
||||
toggleRefreshInterval();
|
||||
updateIntervalMin();
|
||||
}
|
||||
const modal = document.getElementById(id);
|
||||
modal._previousFocus = document.activeElement;
|
||||
@@ -3814,17 +3824,38 @@ function toggleRefreshInterval() {
|
||||
if (startField) startField.classList.toggle('visible', mode === 'auto');
|
||||
}
|
||||
|
||||
function _getMinIntervalMinutes() {
|
||||
// Mindest-Intervall (Minuten) je nach Quellen: 30 Basis, 45 bei X oder Telegram, 60 bei beiden. International zaehlt nicht.
|
||||
const tg = document.getElementById('inc-telegram');
|
||||
const x = document.getElementById('inc-x');
|
||||
const tgOn = !!(tg && tg.checked);
|
||||
const xOn = !!(x && x.checked);
|
||||
if (tgOn && xOn) return 60;
|
||||
if (tgOn || xOn) return 45;
|
||||
return 30;
|
||||
}
|
||||
|
||||
function updateIntervalMin() {
|
||||
const unit = parseInt(document.getElementById('inc-refresh-unit').value);
|
||||
const input = document.getElementById('inc-refresh-value');
|
||||
const minMinutes = _getMinIntervalMinutes();
|
||||
const hint = document.getElementById('interval-min-hint');
|
||||
if (unit === 1) {
|
||||
// Minuten: Minimum 10
|
||||
input.min = 10;
|
||||
if (parseInt(input.value) < 10) input.value = 10;
|
||||
// Minuten: dynamisches Minimum (30 / 45 bei X oder Telegram / 60 bei beiden)
|
||||
input.min = minMinutes;
|
||||
if (isNaN(parseInt(input.value)) || parseInt(input.value) < minMinutes) input.value = minMinutes;
|
||||
if (hint) {
|
||||
let zusatz = '';
|
||||
if (minMinutes === 45) zusatz = ' (X oder Telegram aktiv)';
|
||||
else if (minMinutes === 60) zusatz = ' (X und Telegram aktiv)';
|
||||
hint.textContent = 'Mindestens ' + minMinutes + ' Minuten' + zusatz;
|
||||
hint.style.display = '';
|
||||
}
|
||||
} else {
|
||||
// Stunden/Tage/Wochen: Minimum 1
|
||||
// Stunden/Tage/Wochen: eine Einheit liegt ueber jedem Minuten-Minimum
|
||||
input.min = 1;
|
||||
if (parseInt(input.value) < 1) input.value = 1;
|
||||
if (isNaN(parseInt(input.value)) || parseInt(input.value) < 1) input.value = 1;
|
||||
if (hint) hint.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren