Jobangebote: Gemerkte nicht mehr unter Offen anzeigen

Favorisierte Angebote erscheinen ausschließlich im Gemerkt-Tab und werden
aus der Offen-Liste, dem Offen-Zähler (Header-Badge) und dem Tab-Zähler
ausgeblendet. Auf der Offen-Seite wird die Zeile beim Merken live entfernt.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-17 00:01:50 +02:00
co-authored by Claude
parent d9ba8698e0
commit 96fd0e282d
3 changed files with 30 additions and 18 deletions
+15 -5
View File
@@ -40,9 +40,10 @@
.then(function (r) {
if (r.ok && r.json && r.json.success) {
setzeBtn(btn, !!r.json.favorit);
// Auf der Startseite: beim Entfernen die Zeile ausblenden
// und die ganze Sektion einräumen, wenn sie leer wird.
if (!r.json.favorit) entferneFavoritZeile(btn);
// Zeile ausblenden, sobald sie nicht mehr in die aktuelle
// Ansicht gehört: auf der Offen-Seite beim Merken (favorit=1),
// auf der Gemerkt-Seite / Startseite beim Entfernen (favorit=0).
entferneFavoritZeile(btn, !!r.json.favorit);
} else {
setzeBtn(btn, aktiv); // Server hat abgelehnt -> zurückrollen
if (r.json && r.json.error) console.warn('Favorit:', r.json.error);
@@ -62,11 +63,20 @@
if (lbl) lbl.textContent = aktiv ? 'Gemerkt' : 'Merken';
}
function entferneFavoritZeile(btn) {
function entferneFavoritZeile(btn, istFavorit) {
var item = btn.closest('[data-fav-item]');
if (!item) return; // nicht auf der Startseite -> nur optisch umschalten
if (!item) return; // keine ausblendbare Zeile -> nur optisch umschalten
var card = btn.closest('[data-fav-card]') || document.getElementById('favoritenCard');
// Offen-Seite: Zeile verschwindet beim Merken (favorit=1).
// Gemerkt-Seite / Startseite: Zeile verschwindet beim Entfernen (favorit=0).
var view = card && card.getAttribute('data-fav-view');
var entfernenBeiFavorit = (view === 'offen');
if (istFavorit !== entfernenBeiFavorit) return;
item.remove();
// Auf der Offen-Seite bleibt die Sektion samt Überschrift stehen —
// dort wird nur die einzelne Zeile entfernt. Auf der Gemerkt-Seite
// und Startseite räumen wir die leere Sektion ganz ein.
if (view === 'offen') return;
if (card && !card.querySelectorAll('[data-fav-item]').length) {
card.style.transition = 'opacity 0.2s ease';
card.style.opacity = '0';