Files
kuehlfinder/src/pages/finder.astro
T

79 lines
5.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
import Base from '../layouts/Base.astro';
import { allProducts } from '../lib/pricing';
const products = allProducts.map(p=>({slug:p.slug,name:p.name,type:p.type,badge:p.badge,uvp:p.uvp,apartment:p.apartmentSuitable}));
---
<Base title="Klima-Finder: welche mobile Klimaanlage passt zu dir? | Kühlfinder" description="Beantworte wenige Fragen und finde heraus, ob mobile Split oder Monoblock passt mit Verfügbarkeits-Check.">
<section class="wrap" style="margin-top:1.6rem;max-width:720px">
<p class="kicker"><span class="u"></span>60-Sekunden-Finder</p>
<h1>Welches portable Klimagerät passt zu dir?</h1>
<div id="finder" class="card"></div>
</section>
</Base>
<script define:vars={{ products }}>
const Q = [
{k:'room',q:'Welcher Raum?',a:['Schlafzimmer','Homeoffice','Wohnzimmer','Dachgeschoss','Kinderzimmer']},
{k:'size',q:'Wie groß ist der Raum?',a:['bis 15 m²','1525 m²','2540 m²','über 40 m²']},
{k:'outdoor',q:'Außengerät möglich (Balkon/Fensterbank)?',a:['Ja','Nein','Unsicher']},
{k:'window',q:'Welche Fensterart?',a:['Dreh-Kipp','Balkontür','Dachfenster','Schiebefenster','keine gute Möglichkeit']},
{k:'noise',q:'Wie wichtig ist Leise?',a:['Sehr','Mittel','Egal']},
{k:'budget',q:'Budget?',a:['unter 500 €','500800 €','8001300 €','über 1300 €']},
{k:'urgency',q:'Wie dringend?',a:['Heute','Diese Woche','Nur informieren']}
];
const ans={}; let i=0;
const el=document.getElementById('finder');
const find=s=>products.find(p=>p.slug===s);
function pick(){
const out=find('midea-portasplit-12000'); let primary, alt, budget, warn='';
const outdoor=ans.outdoor==='Ja';
const noOutlet=ans.window==='keine gute Möglichkeit';
const hiBudget=(ans.budget==='8001300 €'||ans.budget==='über 1300 €');
const smallRoom=(ans.size==='bis 15 m²'||ans.size==='1525 m²');
if(noOutlet){warn='Ohne Abluft-/Außenmöglichkeit kann kein echtes Klimagerät die Wärme abführen. Prüfe Dreh-Kipp-Fenster oder Balkontür sonst hilft nur Verschattung und Lüften.';}
if(ans.room==='Schlafzimmer'&&outdoor&&smallRoom) primary='midea-portasplit-cool-8000';
else if(outdoor&&hiBudget) primary='midea-portasplit-12000';
else if(!outdoor&&hiBudget) primary='delonghi-pac-ex105';
else if(!outdoor&&ans.budget==='500800 €') primary='midea-silent-cool-26-pro-wf';
else if(ans.budget==='unter 500 €') primary='comfee-mobile-12000';
else primary='delonghi-pac-ex105';
alt = (find(primary).type==='mobile_split')?'delonghi-pac-ex105':'midea-portasplit-cool-8000';
budget = 'comfee-mobile-12000';
if(find(primary).type==='monoblock') warn = warn || 'Tipp: Monoblock braucht eine gute Fensterabdichtung, sonst sinkt die Kühlleistung.';
return {primary:find(primary),alt:find(alt),budget:find(budget),warn};
}
function result(){
const r=pick(); window.track&&window.track("finder_ergebnis",{modell:r.primary&&r.primary.slug});
const card=p=>`<a class="rc" href="/geraete/${p.slug}"><strong>${p.name}</strong><span class="note">${p.badge}</span></a>`;
el.innerHTML=`<h2>Deine Empfehlung</h2>
<div class="reco"><span class="badge">Beste Wahl</span>${card(r.primary)}</div>
<div class="reco"><span class="badge">Wenn ausverkauft</span>${card(r.alt)}</div>
<div class="reco"><span class="badge">Budget</span>${card(r.budget)}</div>
${r.warn?`<p class="warn">${r.warn}</p>`:''}
<div class="rcta">
<a class="btn" href="/karte?produkt=${r.primary.slug}">Verfügbarkeit auf Karte</a>
<a class="btn ghost" href="/alarm?produkt=${r.primary.slug}">Alarm setzen</a>
<button class="btn ghost" id="again">Nochmal</button>
</div>`;
document.getElementById('again').onclick=()=>{i=0;step();};
}
function step(){
if(i>=Q.length) return result();
const q=Q[i];
el.innerHTML=`<div class="prog">Frage ${i+1} / ${Q.length}</div><h2>${q.q}</h2>
<div class="opts">${q.a.map(a=>`<button class="opt" data-v="${a}">${a}</button>`).join('')}</div>`;
el.querySelectorAll('.opt').forEach(b=>b.onclick=()=>{ans[q.k]=b.dataset.v;i++;step();});
}
step();
</script>
<style is:global>
#finder .prog{font-size:.85rem;color:var(--slate);margin-bottom:.3rem}
#finder .opts{display:grid;gap:.6rem;margin-top:1rem}
#finder .opt{font-family:var(--font-body);font-size:1rem;text-align:left;padding:.9rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);cursor:pointer;transition:border-color .15s,background .15s}
#finder .opt:hover{border-color:var(--petrol);background:var(--petrol-soft)}
#finder .reco{display:flex;align-items:center;gap:.8rem;margin:.6rem 0}
#finder .rc{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);flex:1;border:1px solid var(--line);border-radius:var(--radius);padding:.7rem .9rem}
#finder .rc:hover{border-color:var(--petrol)}
#finder .warn{background:var(--warm-bg);color:oklch(0.42 0.11 47);padding:.8rem 1rem;border-radius:var(--radius);margin-top:.8rem}
#finder .rcta{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}
</style>