From ba8ac85f0bcba4ca20750a7c44ecebd7ab4154a1 Mon Sep 17 00:00:00 2001 From: rene Date: Mon, 13 Apr 2026 19:48:09 +0200 Subject: [PATCH] Gesundheit: Hunde-Picker als Einstiegsseite bei mehreren Hunden --- backend/static/js/pages/health.js | 56 +++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/backend/static/js/pages/health.js b/backend/static/js/pages/health.js index 540e507..09885c1 100644 --- a/backend/static/js/pages/health.js +++ b/backend/static/js/pages/health.js @@ -31,17 +31,17 @@ window.Page_health = (() => { async function refresh() { if (!_appState.activeDog) return; - if (!_container.querySelector('#health-tabs')) { - await _render(); + if (_appState.dogs.length > 1) { + _renderDogPicker(); return; } - await _loadAll(); - _renderTab(); + _data = {}; + await _renderHealth(); } async function onDogChange() { _data = {}; - await _render(); + await _renderHealth(); } function openNew() { @@ -49,7 +49,7 @@ window.Page_health = (() => { } // ---------------------------------------------------------- - // RENDER — Hauptstruktur + // RENDER — Einstieg: Picker bei mehreren Hunden, sonst direkt // ---------------------------------------------------------- async function _render() { if (!_appState.activeDog) { @@ -62,6 +62,50 @@ window.Page_health = (() => { return; } + if (_appState.dogs.length > 1) { + _renderDogPicker(); + } else { + await _renderHealth(); + } + } + + // ---------------------------------------------------------- + // HUNDE-PICKER + // ---------------------------------------------------------- + function _renderDogPicker() { + const activeDogId = _appState.activeDog?.id; + + const cards = _appState.dogs.map(dog => { + const isActive = dog.id === activeDogId; + const av = dog.foto_url + ? `${_esc(dog.name)}` + : `🐕`; + return ` +
+
${av}
+
${_esc(dog.name)}
+ ${dog.rasse ? `
${_esc(dog.rasse)}
` : ''} +
`; + }).join(''); + + _container.innerHTML = ` +
+

Wessen Gesundheitsakte?

+
${cards}
+
`; + + _container.querySelectorAll('.diary-picker-card').forEach(el => { + el.addEventListener('click', () => { + App.setActiveDog(parseInt(el.dataset.dogId)); + }); + }); + } + + // ---------------------------------------------------------- + // HEALTH-ANSICHT — Tabs mit Einträgen + // ---------------------------------------------------------- + async function _renderHealth() { _container.innerHTML = `