/* ============================================================
BAN YARO — Hunde-Knigge
Seiten-Modul: Begegnungen, Community-Voting, KI-Rat, Haftpflicht.
============================================================ */
window.Page_knigge = (() => {
// ----------------------------------------------------------
// MODUL-STATE
// ----------------------------------------------------------
let _container = null;
let _appState = null;
// Voting-State: { szenario_id: { counts: {}, user_answer: null } }
const _voteState = {};
// ----------------------------------------------------------
// HARDCODED INHALTE
// ----------------------------------------------------------
const BEGEGNUNGEN = [
{
icon: '',
titel: 'Fremder Hund',
tipps: 'Kurze Leine, ruhig bleiben, Hunde schnüffeln lassen wenn beide entspannt. Eskalation: weglenken, Richtung wechseln.',
},
{
icon: '',
titel: 'Kinder',
tipps: 'Hund nie unbeaufsichtigt mit Kindern. Kind fragen ob es streicheln darf. Hund dahinter positionieren, nicht zwischen Kind und Weg.',
},
{
icon: '',
titel: 'Radfahrer',
tipps: 'Hund an die Seite nehmen. Fahrrad = potentielle Bedrohung für manche Hunde. Frühzeitig weglenken.',
},
{
icon: '',
titel: 'Jogger',
tipps: 'Kurze Leine, Abstand halten, Hund nicht anspringen lassen.',
},
{
icon: '',
titel: 'ÖPNV',
tipps: 'Maulkorbpflicht gilt im ÖPNV (Deutschland-weit). Kleine Hunde in Transportbox kostenlos, große Hunde brauchen Fahrschein. Regeln je Stadt unterschiedlich.',
},
{
icon: '',
titel: 'Supermarkt / Geschäfte',
tipps: 'Grundsätzlich Hausrecht des Betreibers. "Hunde willkommen"-Schild = explizite Einladung. Im Zweifel fragen. Außen anbinden nur kurz und beaufsichtigt.',
},
];
const SZENARIEN = [
{
id: 'begegnung_leine',
frage: 'Dein Hund ist gut sozialisiert und läuft frei. Ein angeleinten Hund kommt entgegen. Was tust du?',
antworten: [
{ key: 'a', text: 'Hund weiterlaufen lassen — er ist ja friedlich' },
{ key: 'b', text: 'Hund anleinen und Abstand halten' },
{ key: 'c', text: 'Besitzer fragen ob ein Treffen ok ist' },
],
richtig: 'b',
erklaerung: 'Freilaufende Hunde auf angeleine Hunde zulaufen zu lassen ist unhöflich und kann den angeleinten Hund in Stress versetzen ("Leinenfrust"). Immer erst anleinen und Abstand halten.',
},
{
id: 'gassi_kot',
frage: 'Dein Hund macht sein Geschäft im Park abseits des Weges im Gebüsch. Was machst du?',
antworten: [
{ key: 'a', text: 'Liegenlassen — im Gebüsch stört es niemanden' },
{ key: 'b', text: 'Aufsammeln, auch wenn es versteckt liegt' },
{ key: 'c', text: 'Nur aufsammeln wenn jemand zuschaut' },
],
richtig: 'b',
erklaerung: 'Kot grundsätzlich immer aufsammeln — auch im Gebüsch. Kinder spielen überall, und Parasiten (z.B. Spulwurm) können für Menschen gefährlich sein.',
},
{
id: 'restaurant_hund',
frage: 'Im Restaurant-Außenbereich sitzt du mit deinem Hund. Ein anderer Gast bittet dich deinen Hund wegzunehmen weil er Angst hat. Was tust du?',
antworten: [
{ key: 'a', text: 'Ablehnen — Außenbereich ist hundefreundlich' },
{ key: 'b', text: 'Hund wegsetzen oder selbst weiter hinten platzieren' },
{ key: 'c', text: 'Personal entscheiden lassen' },
],
richtig: 'c',
erklaerung: 'Das Personal / der Betreiber entscheidet über das Hausrecht. Gut wäre es, selbst Kompromissbereitschaft zu zeigen und den Hund etwas wegzurücken — das deeskaliert und signalisiert Rücksicht.',
},
{
id: 'anleine_pflicht',
frage: 'Im Park gibt es keine Schilder. Muss dein Hund an die Leine?',
antworten: [
{ key: 'a', text: 'Nein — kein Schild bedeutet keine Pflicht' },
{ key: 'b', text: 'Kommt auf die Gemeindeordnung an' },
{ key: 'c', text: 'Ja — immer Leinenpflicht in öffentlichen Parks' },
],
richtig: 'b',
erklaerung: 'Leinenpflicht ist Ländersache und variiert stark. Viele Bundesländer haben eine allgemeine Anleinpflicht in Ortschaften oder Parks. Im Zweifel Hund anleinen oder Gemeindewebsite prüfen.',
},
];
// ----------------------------------------------------------
// INIT
// ----------------------------------------------------------
async function init(container, appState) {
_container = container;
_appState = appState;
_render();
_loadAllVotes();
}
function refresh() {
// statische Seite — kein Reload nötig
}
// ----------------------------------------------------------
// HAUPT-RENDER
// ----------------------------------------------------------
function _render() {
_container.innerHTML = `