Bugtracker in „Bugs" umbenennen und Erfolgsmeldung einblenden
Reiter, Panel, Käfer-Beschriftungen und Doku sprechen von Bugs statt Fehlern. Nach dem Senden schließt sich das Panel sofort und eine Einblendung bestätigt die Meldung. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
4ec23ccd25
commit
e8ab95159e
5 files changed
+32
-31
No files matched your search
+11
-10
@@ -51,7 +51,7 @@ async function api(path, { method = 'GET', body, raw } = {}) {
|
||||
}
|
||||
|
||||
// ---------- Anmeldung zum Bearbeiten ----------
|
||||
const EDITOR_VIEWS = ['personen', 'abwesenheiten', 'anfragen', 'fehler', 'einstellungen'];
|
||||
const EDITOR_VIEWS = ['personen', 'abwesenheiten', 'anfragen', 'bugs', 'einstellungen'];
|
||||
function isEditor() { return !state.data || state.data.auth?.editor !== false; }
|
||||
function applyAuthUI() {
|
||||
const a = state.data?.auth || { protected: false, editor: true };
|
||||
@@ -148,7 +148,7 @@ function avatarEl(p, cls = '') {
|
||||
|
||||
// ---------- Navigation ----------
|
||||
function showView(name) {
|
||||
const known = ['kalender', 'personen', 'abwesenheiten', 'anfragen', 'fehler', 'einstellungen'];
|
||||
const known = ['kalender', 'personen', 'abwesenheiten', 'anfragen', 'bugs', 'einstellungen'];
|
||||
if (!known.includes(name)) name = 'kalender';
|
||||
if (!isEditor() && EDITOR_VIEWS.includes(name)) name = 'kalender';
|
||||
if (name === 'abwesenheiten' && state.data) prepareAbsenceImport();
|
||||
@@ -1140,14 +1140,14 @@ $('#holiday-add').addEventListener('submit', async (e) => {
|
||||
} catch (err) { toast(err.message, true); }
|
||||
});
|
||||
|
||||
// ---------- Fehler melden (für alle) ----------
|
||||
// ---------- Bug melden (für alle) ----------
|
||||
const bugPanel = $('#bug-panel');
|
||||
const bugCanvas = $('#bug-canvas');
|
||||
const bugState = { base: null, rects: [], draft: null, sending: false, capture: null, closeTimer: null, target: null };
|
||||
|
||||
function viewName() {
|
||||
const v = location.hash.slice(1) || 'kalender';
|
||||
const names = { kalender: 'Kalender', personen: 'Personen', abwesenheiten: 'Abwesenheiten', anfragen: 'Anfragen', fehler: 'Fehler', einstellungen: 'Einstellungen' };
|
||||
const names = { kalender: 'Kalender', personen: 'Personen', abwesenheiten: 'Abwesenheiten', anfragen: 'Anfragen', bugs: 'Bugs', einstellungen: 'Einstellungen' };
|
||||
const month = v === 'kalender' ? ` (${MONTHS[state.month.getMonth()]} ${state.month.getFullYear()})` : '';
|
||||
return `${names[v] || v}${month}${isEditor() ? ', angemeldet' : ''}`;
|
||||
}
|
||||
@@ -1351,12 +1351,13 @@ $('#bug-form').addEventListener('submit', async (e) => {
|
||||
return;
|
||||
}
|
||||
bugState.sending = false;
|
||||
out.textContent = 'Danke, der Fehler ist gemeldet.';
|
||||
bugState.closeTimer = setTimeout(() => { bugState.closeTimer = null; closeBugPanel(); }, 2000);
|
||||
// Panel sofort schließen und die Bestätigung unten einblenden
|
||||
closeBugPanel();
|
||||
toast('Bug erfolgreich gemeldet. Danke für den Hinweis.');
|
||||
if (isEditor()) load().catch((err) => toast(err.message, true));
|
||||
});
|
||||
|
||||
// ---------- Fehlermeldungen bearbeiten (nur Bearbeiter) ----------
|
||||
// ---------- Bugs bearbeiten (nur Bearbeiter) ----------
|
||||
const canCopyImages = () => Boolean(window.isSecureContext && navigator.clipboard && navigator.clipboard.write && window.ClipboardItem);
|
||||
async function copyText(text) {
|
||||
if (window.isSecureContext && navigator.clipboard?.writeText) { await navigator.clipboard.writeText(text); return; }
|
||||
@@ -1394,7 +1395,7 @@ function bugRow(b) {
|
||||
a.title = 'Screenshot in voller Größe öffnen';
|
||||
const img = document.createElement('img');
|
||||
img.src = `bugs/${b.id}.png`;
|
||||
img.alt = 'Screenshot zur Fehlermeldung';
|
||||
img.alt = 'Screenshot zum Bug';
|
||||
img.loading = 'lazy';
|
||||
a.appendChild(img);
|
||||
li.appendChild(a);
|
||||
@@ -1431,7 +1432,7 @@ function bugRow(b) {
|
||||
}
|
||||
if (b.status === 'offen') btn('Erledigt', 'ghost', () => run(() => api(`api/bugs/${b.id}`, { method: 'PUT', body: { status: 'erledigt' } }), 'Als erledigt markiert.'));
|
||||
else btn('Wieder öffnen', 'ghost', () => run(() => api(`api/bugs/${b.id}`, { method: 'PUT', body: { status: 'offen' } })));
|
||||
btn('Löschen', 'ghost danger', () => { if (confirm('Diese Fehlermeldung samt Screenshot löschen?')) run(() => api(`api/bugs/${b.id}`, { method: 'DELETE' }), 'Meldung gelöscht.'); });
|
||||
btn('Löschen', 'ghost danger', () => { if (confirm('Diesen Bug samt Screenshot löschen?')) run(() => api(`api/bugs/${b.id}`, { method: 'DELETE' }), 'Bug gelöscht.'); });
|
||||
grow.appendChild(actions);
|
||||
li.appendChild(grow);
|
||||
return li;
|
||||
@@ -1443,7 +1444,7 @@ function renderBugs() {
|
||||
$('#bugs-clipboard-hint').hidden = canCopyImages();
|
||||
const list = $('#bug-list');
|
||||
list.textContent = '';
|
||||
if (open.length === 0) list.innerHTML = '<li class="hint">Keine offenen Fehlermeldungen.</li>';
|
||||
if (open.length === 0) list.innerHTML = '<li class="hint">Keine offenen Bugs.</li>';
|
||||
for (const b of open) list.appendChild(bugRow(b));
|
||||
const doneList = $('#bug-list-done');
|
||||
doneList.textContent = '';
|
||||
|
||||
Reference in new issue
Block a user