PageSourceSearch

https://www.tankerkoenig.de/_nuxt/BnrNsCQh.js

js tankerkoenig.de collected 2026-10-03 19:29:31 UTC 42,964 bytes, 1 lines download raw bytes

1import{s as et,r as tt,g as ve,a as st,N as Ce,n as be,b as nt,e as at,p as rt,Z as Pe,z as lt,k as it,c as ot,d as Me,l as ut,f as dt,_ as ct}from"./jSiGNYXf.js";import{_ as mt}from"./CDU58lVA.js";import{P as pt}from"./3A8-GMsd.js";import{_ as ze}from"./CLeoKJr7.js";import{d as ee,u as oe,n as Y,c as a,e as n,t,i as c,b as Z,f as l,F as x,k as h,w as H,r as Q,p as ht,q as Ae,s as pe,l as r,x as ne,y as X,z as Ie,m as O,A as Oe,_ as ae,o as s,B as ie,C as gt,D as Le,E as ft,G as De,H as kt,I as He,J as vt,K as bt,L as _t,M as xt,N as Te,O as yt,P as _e,Q as wt,R as $t,S as zt,T as Dt,U as Et,V as he,W as ce,X as St,Y as Ct,Z as Pt,$ as Mt,a0 as At,a1 as Lt,a2 as Tt,a3 as Kt,a4 as Rt,a5 as Ke,a6 as Re}from"./BMqsgX0q.js";import{c as Fe,z as Ft,f as Ne,a as Nt}from"./z4tpwna_.js";import{f as te,s as Ee}from"./BDSvxepI.js";import{f as We,a as se}from"./BQ6wUm6E.js";import{N as Ve,m as Bt,F as Zt}from"./rIHos1g9.js";import{F as le,a as de,b as me,D as V,s as ue,m as qe,h as J}from"./CxrwSfTW.js";import{i as Ut,a as Gt,o as Qe,p as Je,h as jt}from"./Da40wmFg.js";import{Z as It,K as Ot,p as Ht,z as Wt}from"./CemHhfc7.js";import{i as Vt,d as qt}from"./DlXh5Vpi.js";import{u as Qt}from"./TmAkswQm.js";import{_ as Jt}from"./BxV2Z0nw.js";import Xt from"./BMG8hke8.js";import{u as Yt}from"./DUBH3OFk.js";import{_ as es}from"./B-XbNIf4.js";import{_ as ts}from"./CAC6Xg-V.js";import{_ as ss}from"./NTUrG8th.js";import{u as ns,d as as,a as rs,b as ls}from"./_Kq1W62l.js";import"./7K4-BY-f.js";import"./C4Mq8ote.js";import"./DL1ylVB0.js";import"./DlAUqK2U.js";const is={"aria-labelledby":"kreis-preisueberblick",class:"rounded-xl border border-border bg-surface-muted p-4 sm:p-6"},os={"data-test":"anzeige-sorte",class:"sr-only",role:"status","aria-live":"polite"},us={class:"grid grid-cols-1 gap-4 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-start"},ds={class:"min-w-0"},cs={id:"kreis-preisueberblick",class:"text-h2"},ms={class:"mt-2 flex flex-wrap items-center gap-x-3 gap-y-1.5 text-sm"},ps={"data-test":"stand-mittag",class:"text-muted mt-1.5 max-w-prose text-sm"},hs={class:"text-muted mt-1.5 max-w-prose text-sm"},gs={class:"tabular-nums"},fs={key:0,"data-test":"kreis-ab-preis",class:"sm:text-right"},ks={class:"text-muted mb-1.5 text-xs tabular-nums"},vs={key:0,"data-test":"kreis-lcd-station",class:"text-muted mt-2 max-w-48 text-xs"},bs={class:"mt-4"},_s={class:"w-full text-left text-sm"},xs={class:"sr-only"},ys={class:"border-b border-border text-xs text-muted"},ws={scope:"col",class:"py-2 pr-3 font-medium"},$s={class:"inline-flex items-center gap-1"},zs={scope:"row",class:"py-2.5 pr-3 font-semibold text-foreground whitespace-nowrap"},Ds={key:0,class:"text-muted block text-xs font-normal"},Es={class:"py-2.5 pr-3 font-semibold text-foreground tabular-nums whitespace-nowrap"},Ss={class:"py-2.5 pr-3 text-foreground tabular-nums whitespace-nowrap"},Cs=["rowspan"],Ps={key:0,class:"text-muted"},Ms={key:1,class:"text-muted"},As={key:2,class:"text-muted block text-xs"},Ls={key:3,class:"text-muted block text-xs"},Ts={key:0,"data-test":"kreis-vergleich",class:"mt-3 max-w-prose text-sm text-foreground"},Ks={key:0},Rs={class:"tabular-nums"},Fs={class:"tabular-nums"},Ns={key:1},Bs={class:"tabular-nums"},Zs={class:"tabular-nums"},Us={class:"tabular-nums"},Gs={class:"tabular-nums"},js={key:2,class:"text-muted mt-1"},Is={key:3,"data-test":"kreis-sortenhinweis",class:"mt-1 text-foreground"},Os={key:1,"data-test":"kreis-orte",class:"text-muted mt-3 max-w-prose text-sm"},Hs={class:"tabular-nums"},xe=8,Ws=ee({__name:"KreisPreisUeberblick",props:{kreis:{},snapshot:{}},setup(d){const e=d,f=r(()=>ne(e.kreis.typ,e.kreis.name)),M=r(()=>X(e.kreis.typ,e.kreis.name)),A=r(()=>Ie(e.kreis.typ)),i=r(()=>Ve[e.kreis.bundesland]??e.kreis.bundesland),C=r(()=>We(e.snapshot.stand)),y=r(()=>et(e.snapshot.stand)),R=oe(),F=O(!1);Y(()=>{F.value=!0});const $=r(()=>F.value?ue(R.query.kraftstoff)??V:V);function L(D){return te(D)||void 0}function T(D){const g=Ee({brand:D.brand,name:D.name,street:D.street}),B=L(D.place),I=B!=null&&B.toLocaleLowerCase("de")===g.toLocaleLowerCase("de");return{...D,name:g,street:L(D.street),place:I?void 0:B}}function w(D){const g=e.snapshot.fuels[D].cheapest[0];return g?T(g):null}function p(D){const g=e.snapshot.fuels[D];if(g.minGeteilt!=null)return g.minGeteilt;const B=g.cheapest[0]?.price;return B==null?0:g.cheapest.filter(I=>I.price===B).length-1}const u=r(()=>e.snapshot.fuels[$.value].cheapest[0]?.price??null),E=r(()=>w($.value)),N=r(()=>p($.value)),K=r(()=>{const D=de.map(g=>{const B=w(g);return B?`${B.name}|${B.street??""}|${B.place??""}`:null});return D[0]!=null&&D.every(g=>g===D[0])}),v=r(()=>e.snapshot.fuels[$.value]),S=r(()=>Fe(v.value.median,v.value.landMedian)),_=r(()=>Fe(v.value.median,v.value.bundMedian));function b(D,g){return D==null?null:D>0?`${D} Cent über ${g}`:D<0?`${Math.abs(D)} Cent unter ${g}`:`gleichauf mit ${g}`}const j=r(()=>tt(e.snapshot,$.value)),W=D=>D?`${D}; 1 = am günstigsten`:"1 = am günstigsten",o=r(()=>W(ve(v.value.rankGeteilt))),m=r(()=>W(ve(v.value.landRankGeteilt))),k=r(()=>ve(v.value.landRankGeteilt)),z=r(()=>st(e.snapshot,$.value,i.value)),P=r(()=>[j.value?null:b(S.value,`dem Median ${Ae(i.value)}`),b(_.value,"dem bundesweiten Median")].filter(D=>D!=null)),q=r(()=>{const D=e.snapshot.orte.slice(0,xe),g=e.snapshot.fuels[$.value].cheapest[0]?.place;if(g){const B=I=>Oe(te(I)||I);if(!D.some(I=>B(I.name)===B(g))){const I=e.snapshot.orte.find(re=>B(re.name)===B(g));
1I&&D.splice(xe-1,1,I)}}return D.map(B=>({name:te(B.name)||B.name,anzahl:B.anzahl}))}),G=r(()=>Math.max(0,e.snapshot.orte.length-xe));return(D,g)=>{const B=mt,I=pt,re=ze,ge=ae;return s(),a("section",is,[n("p",os,"Tagesüberblick zeigt "+t(c(le)[$.value]),1),n("div",us,[n("div",ds,[n("h2",cs,"Tagesüberblick "+t(f.value),1),n("p",ms,[Z(B,{stand:d.snapshot.stand},null,8,["stand"]),g[0]||(g[0]=n("a",{href:"#kreis-live","data-test":"live-sprung",class:"text-link inline-block py-1 underline underline-offset-2"},[l("Aktuelle Preisliste weiter unten "),n("span",{"aria-hidden":"true"},"↓")],-1))]),n("p",ps,t(y.value),1),n("p",hs,[n("span",gs,t(d.snapshot.stationCount),1),l(" Tankstellen mit aktueller Preismeldung "+t(M.value)+" ("+t(A.value)+", keine Umkreis-Suche) ",1)])]),u.value!=null?(s(),a("div",fs,[n("p",ks,[l(t(c(le)[$.value])+" ab",1),C.value?(s(),a(x,{key:0},[l(" · Stand "+t(C.value),1)],64)):h("",!0)]),Z(I,{price:u.value,size:"md"},null,8,["price"]),E.value?(s(),a("p",vs,[l(t(E.value.name),1),E.value.place?(s(),a(x,{key:0},[l(" in "+t(E.value.place),1)],64)):h("",!0),N.value>0?(s(),a(x,{key:1},[l(" und "+t(N.value)+" weitere",1)],64)):h("",!0)])):h("",!0)])):h("",!0)]),n("div",bs,[n("table",_s,[n("caption",xs,"Günstigster Preis, Medianpreis und die Tankstelle mit dem günstigsten Preis je Kraftstoffsorte "+t(M.value),1),n("thead",null,[n("tr",ys,[g[3]||(g[3]=n("th",{scope:"col",class:"py-2 pr-3 font-medium"},"Sorte",-1)),g[4]||(g[4]=n("th",{scope:"col",class:"py-2 pr-3 font-medium"},"ab",-1)),n("th",ws,[n("span",$s,[g[2]||(g[2]=l(" Median ",-1)),Z(re,{label:"Was bedeutet Median?"},{default:H(()=>[...g[1]||(g[1]=[l(" Der mittlere Preis: Sortiert man alle Tankstellen mit Preismeldung vom günstigsten zum teuersten Preis, steht der Median genau in der Mitte. Anders als ein Durchschnitt wird er von einzelnen Ausreißern kaum verschoben. ",-1)])]),_:1})])]),g[5]||(g[5]=n("th",{scope:"col",class:"hidden py-2 font-medium sm:table-cell"},"Am günstigsten bei",-1))])]),n("tbody",null,[(s(!0),a(x,null,Q(c(de),U=>(s(),a("tr",{key:U,class:"border-b border-border align-top last:border-b-0"},[n("th",zs,[l(t(c(le)[U])+" ",1),d.snapshot.fuels[U].meldend<d.snapshot.stationCount?(s(),a("span",Ds,t(d.snapshot.fuels[U].meldend)+" von "+t(d.snapshot.stationCount)+" melden",1)):h("",!0)]),n("td",Es,t(w(U)?`${c(se)(w(U).price)} €`:"–"),1),n("td",Ss,t(d.snapshot.fuels[U].median!=null?`${c(se)(d.snapshot.fuels[U].median)} €`:"–"),1),!K.value||U===c(de)[0]?(s(),a("td",{key:0,class:ie(["hidden py-2.5 text-foreground sm:table-cell",K.value?"border-b-0 align-middle":""]),rowspan:K.value?c(de).length:void 0},[w(U)?(s(),a(x,{key:0},[l(t(w(U).name),1),w(U).place?(s(),a("span",Ps," · "+t(w(U).place),1)):h("",!0),w(U).street?(s(),a("span",Ms,", "+t(w(U).street),1)):h("",!0),K.value?(s(),a("span",As,"bei allen drei Sorten")):h("",!0),(K.value?N.value:p(U))>0?(s(),a("span",Ls,"+"+t(K.value?N.value:p(U))+" weitere zum selben Preis",1)):h("",!0)],64)):(s(),a(x,{key:1},[l("–")],64))],10,Cs)):h("",!0)]))),128))])])]),v.value.rank!=null?(s(),a("div",Ts,[j.value&&v.value.landRank!=null?(s(),a("p",Ks,[l(t(c(ht)(i.value))+" ("+t(c(me)[$.value])+"-Median): Platz ",1),n("span",Rs,t(v.value.landRank),1),g[6]||(g[6]=l(" von ",-1)),n("span",Fs,t(d.snapshot.landRegionCount),1),l(" Regionen ("+t(m.value)+"). ",1)])):j.value?h("",!0):(s(),a("p",Ns,[l(" Im bundesweiten Vergleich ("+t(c(me)[$.value])+"-Median): Platz ",1),n("span",Bs,t(v.value.rank),1),g[8]||(g[8]=l(" von ",-1)),n("span",Zs,t(d.snapshot.regionCount),1),l(" Regionen ("+t(o.value)+")",1),v.value.landRank!=null?(s(),a(x,{key:0},[l(", "+t(c(Ae)(i.value))+" Platz ",1),n("span",Us,t(v.value.landRank),1),g[7]||(g[7]=l(" von ",-1)),n("span",Gs,t(d.snapshot.landRegionCount),1),k.value?(s(),a(x,{key:0},[l(" ("+t(k.value)+")",1)],64)):h("",!0)],64)):h("",!0),g[9]||(g[9]=l(". ",-1))])),P.value.length?(s(),a("p",js,t(c(me)[$.value])+"-Median: "+t(P.value.join(" · "))+". ",1)):h("",!0),z.value?(s(),a("p",Is,[l(t(z.value.text)+" ",1),z.value.richtung==="besser"?(s(),pe(ge,{key:0,to:{query:{kraftstoff:z.value.fuel}}
1,"data-test":"sortenhinweis-link",class:"text-link inline-block py-1 underline underline-offset-2"},{default:H(()=>[l(t(c(le)[z.value.fuel])+" anzeigen",1)]),_:1},8,["to"])):h("",!0)])):h("",!0)])):h("",!0),q.value.length>1?(s(),a("p",Os,[g[11]||(g[11]=l(" Tankstellen mit Preismeldung: ",-1)),(s(!0),a(x,null,Q(q.value,(U,fe)=>(s(),a(x,{key:U.name},[l(t(U.name)+" (",1),n("span",Hs,t(U.anzahl),1),g[10]||(g[10]=l(")",-1)),fe<q.value.length-1?(s(),a(x,{key:0},[l(", ")],64)):h("",!0)],64))),128)),G.value>0?(s(),a(x,{key:0},[l(" und "+t(G.value)+" weitere Orte",1)],64)):h("",!0)])):h("",!0)])}}}),Vs=Object.assign(Ws,{__name:"KreisPreisUeberblick"}),qs={DEF01:"DK",DEF07:"DK",DEF0C:"DK",DE949:"NL",DE94B:"NL",DE94C:"NL",DEA1B:"NL",DEA1E:"NL",DEA29:"NL",DEA34:"NL",DEA2D:"NL/BE",DEA28:"BE",DEB23:"BE/LU",DEB25:"LU",DEC02:"FR/LU",DEC01:"FR",DEC04:"FR",DEC05:"FR",DEB3K:"FR",DEB3H:"FR",DEB3E:"FR",DE124:"FR",DE134:"FR",DE133:"FR",DE132:"FR",DE139:"CH/FR",DE13A:"CH",DE136:"CH",DE138:"CH",DE147:"CH/AT",DE27A:"AT/CH",DE27E:"AT",DE27B:"AT",DE21D:"AT",DE216:"AT",DE21F:"AT",DE21K:"AT",DE21M:"AT",DE215:"AT",DE214:"AT",DE22A:"AT",DE222:"AT",DE228:"AT",DE225:"CZ/AT",DE229:"CZ",DE235:"CZ",DE239:"CZ",DE237:"CZ",DE23A:"CZ",DE24D:"CZ",DE249:"CZ",DED44:"CZ",DED42:"CZ",DED43:"CZ",DED2F:"CZ",DED2C:"CZ",DED2D:"PL/CZ",DE40G:"PL",DE40C:"PL",DE403:"PL",DE409:"PL",DE405:"PL",DE40I:"PL",DE80N:"PL"};function Qs(d){return Object.hasOwn(qs,d)}function Be(d,e,f){let M=!1;for(let A=0,i=f.length-1;A<f.length;i=A++){const[C,y]=f[A],[R,F]=f[i];y>d!=F>d&&e<(R-C)*(d-y)/(F-y)+C&&(M=!M)}return M}function Js(d,e,f){for(const M of f){const[A,...i]=M;if(!(!A||!Be(d,e,A))&&!i.some(C=>Be(d,e,C)))return!0}return!1}const Ze=new Map;function Xs(d){const e=Ze.get(d);if(e)return e;const f=$fetch(`/geo/ringe/${d}.json`,{responseType:"json",retry:!1}).catch(()=>null);return Ze.set(d,f),f}const Ys=6e4,Ue=new Map;function en(d,e){return`${d}:${e?"slim":"voll"}`}function $e(d,e){const f=en(d,e?.slim),M=Ue.get(f);if(M)return M;const A=Qt(),i=O("idle"),C=O([]),y=O(null),R=O(!0),F=O(null),$=w=>C.value.filter(p=>Je(p[w]));function L(w){const p=$(w).sort((K,v)=>K[w]-v[w]||K.name.localeCompare(v.name,"de")),u=Qe(p,K=>K[w]);if(!u.length)return{median:null,min:null,guenstigsteOrt:void 0,guenstigsteLage:null};const E=u.map(K=>K[w]),N=u[0];return{median:Bt(E),min:E[0],guenstigsteOrt:N.city||void 0,guenstigsteLage:N.lat!=null&&N.lng!=null?{lat:N.lat,lng:N.lng}:null}}const T={status:i,stationen:C,kennzahlen:L,geladenUm:y,wiederholbar:R,fehler:F,laeuft:null,geladenZeitpunkt:null,load:()=>T.laeuft?T.laeuft:i.value==="ready"&&T.geladenZeitpunkt!=null&&Date.now()-T.geladenZeitpunkt<Ys?Promise.resolve():(i.value="loading",F.value=null,T.laeuft=Promise.all([A.getRegionStations(d,{slim:e?.slim}),Xs(d)]).then(([p,u])=>{C.value=p.filter(E=>u&&E.lat!=null&&E.lng!=null?Js(E.lat,E.lng,u):Ut(E,e?.bbox)&&Gt(E.zip,e?.plzPraefixe)),y.value=We(new Date().toISOString()),T.geladenZeitpunkt=Date.now(),i.value="ready"}).catch(p=>{F.value=p,R.value=!Vt(p),i.value="error"}).finally(()=>{T.laeuft=null}),T.laeuft)};return Ue.set(f,T),T}const tn=["aria-busy"],sn={id:"kreis-nachbarn",class:"text-h2"},nn={"data-test":"nachbar-marker-platz",class:"text-muted mt-1 min-h-10 text-sm"},an={key:0,"data-test":"nachbar-live-marker"},rn={class:"font-semibold text-foreground"},ln={class:"tabular-nums"},on={key:0,"data-test":"nachbar-fazit",class:"mt-1 max-w-prose text-foreground"},un={key:1,"data-test":"nachbar-rechnung",class:"text-muted mt-1 max-w-prose text-sm"},dn={"data-test":"nachbar-basis",class:"text-muted mt-1 max-w-prose align-middle text-sm"},cn={class:"ml-1 inline-block align-text-bottom"},mn={class:"mt-3 flex flex-col"},pn={class:"min-w-0 text-foreground"},hn={class:"text-right text-foreground tabular-nums"},gn={class:"block"},fn={key:0,class:"text-muted block text-xs"},kn={key:2,"data-test":"nachbar-kappung",class:"text-muted mt-2 max-w-prose text-xs"},vn={key:3,"data-test":"nachbar-luecken",class:"text-muted mt-2 max-w-prose text-xs"},bn={key:4,"data-test":"nachbar-fehler",class:"text-muted mt-2 max-w-prose text-xs"}
1,_n=5,xn=ee({__name:"KreisNachbarn",props:{kreis:{},snapshot:{}},setup(d,{expose:e}){const f=d,M=oe(),A=O(!1);Y(()=>{A.value=!0});const i=r(()=>A.value?ue(M.query.kraftstoff)??V:V),C=$e(f.kreis.nuts3,{bbox:f.snapshot.bbox,plzPraefixe:f.snapshot.plzPraefixe}),y=f.snapshot.nachbarn.map(o=>({nuts3:o.nuts3,live:$e(o.nuts3,{bbox:o.bbox,plzPraefixe:o.plzPraefixe,slim:!0})})),R=O(!1);async function F(){await Promise.all([C.load(),...y.map(o=>o.live.load())]),R.value=!0}e({ladeLive:F});const $=r(()=>C.status.value==="loading"||y.some(o=>o.live.status.value==="loading")),L=r(()=>C.kennzahlen(i.value).min),T=r(()=>y.some(o=>o.live.status.value==="ready"&&o.live.kennzahlen(i.value).min!=null)),w=r(()=>R.value&&C.status.value==="ready"&&L.value!=null&&T.value),p=r(()=>be(f.snapshot,i.value).flatMap(o=>{const m=y.find(P=>P.nuts3===o.nuts3);if(m?.live.status.value==="ready"&&m.live.kennzahlen(i.value).min!=null)return[];const z=Le(o.nuts3);return z?[ne(z.typ,z.name)]:[]})),u=r(()=>be(f.snapshot,i.value).length),E=O(null);Y(()=>{if(!E.value||typeof IntersectionObserver>"u")return;const o=new IntersectionObserver(m=>{m.some(k=>k.isIntersecting)&&(o.disconnect(),F())},{rootMargin:"600px"});o.observe(E.value),gt(()=>o.disconnect())});const N=r(()=>It[i.value][2]),K=r(()=>{const o=be(f.snapshot,i.value).flatMap(k=>{const z=Le(k.nuts3);
1if(!z)return[];const P=z.stadtSlug?De(z.stadtSlug):kt(z.slug)?He(z):null;return[{nuts3:k.nuts3,name:ne(z.typ,z.name),preis:k.preis,min:k.min,ort:k.ort,km:k.km,diffCent:k.diffCent,to:qe(P,i.value)}]});if(!w.value)return o;const m=L.value;return o.flatMap(k=>{const z=y.find(q=>q.nuts3===k.nuts3);if(z?.live.status.value!=="ready")return[];const P=z.live.kennzahlen(i.value);return P.min==null?[]:[{...k,preis:P.median,min:P.min,ort:P.guenstigsteOrt,km:P.guenstigsteLage?Math.round(jt({lat:f.kreis.lat,lng:f.kreis.lng},P.guenstigsteLage)):null,diffCent:Ft(P.min,m)}]}).sort((k,z)=>(k.min??1/0)-(z.min??1/0)||(k.km??1/0)-(z.km??1/0)||k.nuts3.localeCompare(z.nuts3))}),v=r(()=>K.value.slice(0,_n)),S=r(()=>nt({zeilen:K.value.map(o=>({name:o.name,min:o.min,ort:o.ort?te(o.ort):void 0,km:o.km})),eigenesMin:w.value?L.value:f.snapshot.fuels[i.value].min,eigenerMedian:w.value?C.kennzahlen(i.value).median:f.snapshot.fuels[i.value].median,fuelLabel:le[i.value],mitte:b.value,fehlend:w.value?u.value-K.value.length:0})),_=r(()=>vt(f.kreis.typ)),b=r(()=>ft(f.kreis.typ)),j=r(()=>Qs(f.kreis.nuts3)?"Lohnt der Weg in eine Nachbarregion?":`Lohnt der Weg über die ${_.value}?`);function W(o){return o==null?"":o<0?`${Ne(Math.abs(o))} Cent günstiger`:o>0?`${Ne(o)} Cent teurer`:"gleicher Preis"}return(o,m)=>{const k=ze,z=ae;return v.value.length?(s(),a("section",{key:0,ref_key:"wurzel",ref:E,"aria-labelledby":"kreis-nachbarn","aria-busy":$.value?"true":void 0,class:"rounded-xl border border-border bg-surface p-4 sm:p-6"},[n("h2",sn,t(j.value),1),n("p",nn,[w.value?(s(),a("span",an,[n("span",rn,[m[1]||(m[1]=l("Aktuell",-1)),c(C).geladenUm.value?(s(),a(x,{key:0},[m[0]||(m[0]=l(" · abgerufen ",-1)),n("span",ln,t(c(C).geladenUm.value),1)],64)):h("",!0)]),m[2]||(m[2]=l(" · Daten können bis zu 1 Stunde alt sein ",-1))])):h("",!0)]),S.value?(s(),a("p",on,t(S.value.satz),1)):h("",!0),S.value?.erlaeuterung?(s(),a("p",un,t(S.value.erlaeuterung),1)):h("",!0),n("p",dn,[l(" Verglichen wird die günstigste Station hier gegen die günstigste in den Nachbarregionen. Danach ist die Liste sortiert; der "+t(c(me)[i.value])+"-Median der Region steht darunter.",1),n("span",cn,[Z(k,{align:"left",label:`Warum erst ab ${c(Ce)} Cent?`},{default:H(()=>[l(' Ein „Ja" gibt es erst ab '+t(c(Ce))+" Cent Unterschied. Über Mittag steigen die Preise bundesweit um rund "+t(N.value)+" Cent, darunter ist ein Regionsunterschied keine Fahrentscheidung. Übersteigt die Entfernung, was die Ersparnis trägt, sagen wir es dazu: dann lohnt der Weg nur, wenn du ohnehin dort unterwegs bist. Gezählt werden nur Tankstellen, die im Gebiet der jeweiligen Region liegen; Meldungen von außerhalb werden verworfen. Die MTS-K erfasst nur Tankstellen in Deutschland: Preise jenseits der Staatsgrenze liegen uns nicht vor. ",1),w.value?(s(),a(x,{key:0},[l("Die Preise sind frisch abgerufen und können aus dem Zwischenspeicher bis zu 1 Stunde alt sein.")],64)):(s(),a(x,{key:1},[l("Alle Preise stammen vom Tagesstand oben auf dieser Seite.")],64)),l(" Die Entfernung ist Luftlinie ab "+t(b.value)+", nicht deine Route. Sind zwei Regionen gleich günstig, nennen wir die nähere. ",1)]),_:1},8,["label"])])]),n("ul",mn,[(s(!0),a(x,null,Q(v.value,P=>(s(),a("li",{key:P.nuts3,class:"grid grid-cols-[1fr_auto] items-baseline gap-x-4 border-b border-border py-2 text-sm last:border-b-0"},[n("span",pn,[P.to?(s(),pe(z,{key:0,to:P.to,"data-test":"nachbar-link",class:"text-link inline-block py-1 underline underline-offset-2"},{default:H(()=>[l(t(P.name),1)]),_:2},1032,["to"])):(s(),a(x,{key:1},[l(t(P.name),1)],64))]),n("span",hn,[n("span",gn,[P.min!=null?(s(),a(x,{key:0},[l("ab "+t(c(se)(P.min))+" €",1)],64)):(s(),a(x,{key:1},[l("Median "+t(c(se)(P.preis))+" €",1)],64)),P.diffCent!=null?(s(),a("span",{key:2,"data-test":"nachbar-diff",class:ie([P.diffCent<0?"text-trend-down-ink":P.diffCent>0?"text-trend-up-ink":"text-muted","block sm:ml-1 sm:inline"])},t(W(P.diffCent)),3)):h("",!0)]),P.min!=null?(s(),a("span",fn,"Median "+t(c(se)(P.preis))+" €",1)):h("",!0)])]))),128))]),u.value>v.value.length?(s(),a("p",kn," Gezeigt sind "+t(v.value.length)+" von "+t(u.value)+" Nac
1hbarregionen. Die Antwort oben rechnet über alle. ",1)):h("",!0),w.value&&p.value.length?(s(),a("p",vn," Für "+t(p.value.join(", "))+" liegen gerade keine aktuellen Zahlen vor. ",1)):h("",!0),R.value&&!w.value?(s(),a("p",bn," Gerade waren keine aktuellen Zahlen zu holen. Die Liste zeigt den Tagesstand dieser Seite. ")):h("",!0)],8,tn)):h("",!0)}}}),yn=Object.assign(xn,{__name:"KreisNachbarn"}),wn={"aria-labelledby":"kreis-live",class:"rounded-xl border border-border bg-surface p-4 sm:p-6"},$n={class:"mb-4 flex flex-wrap items-end justify-between gap-3"},zn={id:"kreis-live",class:"text-h2"},Dn={class:"text-muted mt-1 text-sm"},En={class:"font-semibold text-foreground"},Sn={"data-test":"live-zeit",class:"tabular-nums"},Cn={key:0,"data-live-skelett":"",role:"status","aria-busy":"true"},Pn={class:"flex flex-col gap-2","aria-hidden":"true"},Mn={key:1},An={role:"alert",class:"text-sm text-foreground"},Ln={key:2,"data-test":"live-leer"},Tn={role:"status","aria-live":"polite",class:"text-sm font-medium text-foreground"},Kn={class:"mb-3 flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5"},Rn={role:"status","aria-live":"polite",class:"text-sm font-medium text-foreground"},Fn={class:"flex flex-col"},Nn={class:"min-w-0 text-foreground"},Bn={key:0,class:"text-muted"},Zn={class:"text-right font-semibold text-foreground tabular-nums"},Un={class:"mt-4"},ye=10,Ge=14,Gn=ee({__name:"KreisLivePreise",props:{kreis:{},plzPraefixe:{},bbox:{}},setup(d){const e=d,f=$e(e.kreis.nuts3,{bbox:e.bbox,plzPraefixe:e.plzPraefixe}),{status:M,geladenUm:A,wiederholbar:i,fehler:C,load:y}=f,R=r(()=>ne(e.kreis.typ,e.kreis.name)),F=r(()=>X(e.kreis.typ,e.kreis.name)),$=r(()=>Ie(e.kreis.typ)),L=O(V);Yt(L),Y(y);const T=r(()=>M.value==="error"?qt(C.value):""),w=r(()=>f.stationen.value.filter(_=>Je(_[L.value]))),p=r(()=>Qe([...w.value].sort((_,b)=>_[L.value]-b[L.value]||_.name.localeCompare(b.name,"de")),_=>_[L.value])),u=O(!1),E=r(()=>p.value.length>Ge&&!u.value),N=r(()=>p.value.slice(0,E.value?ye:p.value.length).map(_=>({id:_.id,titel:Ee({brand:_.brand,name:_.name,street:_.street}),ort:te(_.city)||void 0,strasse:te(_.street)||void 0,preis:_[L.value]}))),K=_=>Oe(_??""),v=r(()=>{const _=N.value.map(b=>K(b.ort)).filter(Boolean);return _.length>1&&_.every(b=>b===_[0])}),S=r(()=>({path:"/regionen",query:{ebene:"3",land:e.kreis.bundesland,region:e.kreis.nuts3}}));return(_,b)=>{const j=Jt,W=Xt,o=ae;return s(),a("section",wn,[n("div",$n,[n("div",null,[n("h2",zn,"Aktuelle Preise "+t(F.value),1),n("p",Dn,[n("span",En,[b[4]||(b[4]=l("Aktuell",-1)),c(A)?(s(),a(x,{key:0},[b[3]||(b[3]=l(" · abgerufen ",-1)),n("span",Sn,t(c(A)),1)],64)):h("",!0)]),l(" · Daten können bis zu 1 Stunde alt sein · ganzes "+t($.value),1)]),b[5]||(b[5]=n("p",{"data-test":"live-bruecke",class:"text-muted mt-1 max-w-prose text-xs"}," Spritpreise ändern sich mehrmals täglich; darum können diese Zahlen vom Tagesüberblick oben abweichen. ",-1))]),Z(j,{modelValue:L.value,"onUpdate:modelValue":b[0]||(b[0]=m=>L.value=m)},null,8,["modelValue"])]),c(M)==="loading"||c(M)==="idle"?(s(),a("div",Cn,[b[6]||(b[6]=n("span",{class:"sr-only"},"Aktuelle Preise werden geladen …",-1)),n("ul",Pn,[(s(),a(x,null,Q(5,m=>n("li",{key:m,class:"h-11 animate-pulse rounded-lg bg-surface-muted"})),64))])])):c(M)==="error"?(s(),a("div",Mn,[n("p",An,t(T.value),1),b[8]||(b[8]=n("p",{class:"text-muted mt-1 text-sm"},[n("a",{href:"#kreis-preisueberblick",class:"text-info-ink underline underline-offset-2"}," Der Tagesüberblick oben "),l(" zeigt die Preise der letzten Aktualisierung. ")],-1)),c(i)?(s(),a("button",{key:0,type:"button","data-test":"live-retry",class:"border-border text-foreground hover:bg-surface-muted mt-3 inline-flex min-h-11 items-center gap-2 rounded-md border px-4 py-2 text-sm font-semibold transition-colors",onClick:b[1]||(b[1]=m=>c(y)())},[Z(W,{name:"lucide:refresh-cw",size:"16","aria-hidden":"true"}),b[7]||(b[7]=l(" Erneut versuchen ",-1))])):h("",!0)])):p.value.length?(s(),a(x,{key:3},[n("div",Kn,[n("p",Rn,[l(t(p.value.length)+" "+t(p.value.length===1?"Tankstelle":"Tankstellen")+" mit Preismeldung",1),E.value?(s(),a(x,{key:0},[l(", wir zeigen die "+t(ye)+" günstigsten")],64)):h("",!0)]),b[10]||(b[10]=n("p",{class:"text-muted text-xs"},"Preise: MTS-K (Bundeskartellamt)",-1))]),n("ol",Fn,[(s(!0),a(x,null,Q(N.value,m=>(s(),a("li",{key:m.id,class:"grid grid-cols-[1fr_auto] items-baseline gap-x-4 border-b border-border py-2 text-sm last:border-b-0"},[n("span",Nn,[Z(o,{to:{path:`/tankstelle/${m.id}`,query:{kraftstoff:L.value}}
1,"data-test":"station-link",class:"text-link inline-block py-1 underline underline-offset-2"},{default:H(()=>[l(t(m.titel),1)]),_:2},1032,["to"]),m.ort&&!v.value||m.strasse?(s(),a("span",Bn,[m.ort&&!v.value?(s(),a(x,{key:0},[l(" · "+t(m.ort),1)],64)):h("",!0),m.strasse?(s(),a(x,{key:1},[!m.ort||v.value?(s(),a(x,{key:0},[l(" · ")],64)):(s(),a(x,{key:1},[l(", ")],64)),l(t(m.strasse),1)],64)):h("",!0)])):h("",!0)]),n("span",Zn,t(c(se)(m.preis))+" €",1)]))),128))]),p.value.length>Ge?(s(),a("button",{key:0,type:"button","data-test":"live-aufklappen",class:"border-border text-foreground hover:bg-surface-muted mt-3 inline-flex min-h-11 items-center gap-2 rounded-md border px-4 py-2 text-sm font-semibold transition-colors",onClick:b[2]||(b[2]=m=>u.value=!u.value)},[Z(W,{name:u.value?"lucide:chevron-up":"lucide:chevron-down",size:"16","aria-hidden":"true"},null,8,["name"]),l(" "+t(u.value?`Nur die ${ye} günstigsten zeigen`:`Alle ${p.value.length} anzeigen`),1)])):h("",!0)],64)):(s(),a("div",Ln,[n("p",Tn," Gerade liegt für diese Sorte keine aktuelle Preismeldung aus dem "+t($.value)+" vor. ",1),b[9]||(b[9]=n("p",{class:"text-muted mt-1 text-sm"}," Der Tagesüberblick oben zeigt die Preise der letzten Aktualisierung. ",-1))])),n("p",Un,[Z(o,{to:S.value,"data-test":"karte-link",class:"inline-flex min-h-11 items-center gap-2 rounded-md bg-info px-4 py-2 text-sm font-semibold text-price-foreground transition-colors hover:bg-info-hover"},{default:H(()=>[Z(W,{name:"lucide:map",size:"16","aria-hidden":"true"}),l(" "+t(R.value)+" auf der Regionalkarte ansehen ",1)]),_:1},8,["to"])]),b[11]||(b[11]=n("noscript",null,"Die aktuelle Preisliste braucht JavaScript. Der Tagesüberblick oben zeigt die Preise zum Tagesstand.",-1))])}}}),jn=Object.assign(Gn,{__name:"KreisLivePreise"}),In={id:"kreis-fakten",class:"text-h2"},On={class:"sr-only"},Hn={class:"mt-3 grid grid-cols-1 gap-x-6 gap-y-2 text-sm sm:grid-cols-2"},Wn={class:"text-muted"},Vn={key:0,class:"inline-flex items-center gap-1"},qn={class:"font-semibold text-foreground"},Qn={key:0,class:"text-muted mt-3 max-w-prose text-sm"},Jn={key:1,"data-test":"sitz-abgrenzung",class:"text-muted mt-3 max-w-prose text-sm"},Xn={class:"text-muted mt-3 max-w-prose text-xs"},Yn=ee({__name:"KreisFaktenbox",props:{kreis:{},snapshot:{},fuel:{default:V}},setup(d){const e=d,f=r(()=>Dt(e.kreis.typ)),M=r(()=>{const p=bt(e.kreis.typ);return`${p.charAt(0).toUpperCase()}${p.slice(1)} in Zahlen`}),A=r(()=>_t(e.kreis.typ,e.kreis.name)),i=new Intl.NumberFormat("de-DE"),C=r(()=>at(e.kreis.einwohner,e.snapshot.stationCount)),y=r(()=>Ht(e.kreis.slug)),R=r(()=>rt(e.kreis.slug,e.snapshot.stationCount)),F=r(()=>y.value!=null),$=r(()=>Et(e.kreis)),L=r(()=>{const p=[{label:"Kfz-Kennzeichen",wert:e.kreis.kennzeichen.join(", ")}];if(!f.value&&e.kreis.kreisstadt){const u=xt(e.kreis),E=e.kreis.typ==="region"||e.kreis.typ==="regionalverband"||e.kreis.typ==="staedteregion";p.push({label:E||Te(e.kreis)?"Verwaltungssitz":"Kreisstadt",wert:e.kreis.kreisstadt,to:u?J(u,e.fuel):void 0,sitz:!0})}if(!f.value){const u=yt(e.kreis);u&&e.kreis.kreisstadt!==_e(u.name)&&p.push({label:"Kreisfreie Stadt",wert:`${_e(u.name)}
1 (eigene Seite)`,to:J(De(u.stadtSlug),e.fuel)})}if(f.value){const u=wt(e.kreis);u&&p.push({label:"Verwaltungssitz von",wert:ne(u.typ,u.name),to:J(He(u),e.fuel),sitz:!0})}if(p.push({label:"Einwohner",wert:i.format(e.kreis.einwohner)}),p.push({label:"Fläche",wert:`${i.format(Math.round(e.kreis.flaecheKm2))} km²`}),C.value!=null&&p.push({label:"Tankstellendichte",wert:`1 Tankstelle je ~${i.format(C.value)} Einwohner`}),$.value){const u=$t($.value);p.push({label:"Landschaft",wert:$.value,...u?{to:J(zt(u),e.fuel)}:{}})}if(y.value){const u=R.value!=null?` · 1 Tankstelle je ~${i.format(R.value)} Pkw`:"";p.push({label:"Pkw mit Verbrenner",wert:`${i.format(y.value.tankend)}${u}`,breit:!0,hilfe:!0})}return p}),T=r(()=>L.value.some(p=>p.sitz)),w=r(()=>!Te(e.kreis)||_e(e.kreis.name)!==e.kreis.kreisstadt?null:`Die Stadt ${e.kreis.kreisstadt} ist kreisfrei und gehört nicht zum Kreisgebiet; ihre Tankstellen zählt diese Seite nicht mit.`);return(p,u)=>{const E=ze,N=ae,K=es;return s(),pe(K,{labelledby:"kreis-fakten"},{default:H(()=>[n("h2",In,t(M.value),1),n("p",On,"Kennzahlen "+t(A.value),1),n("dl",Hn,[(s(!0),a(x,null,Q(L.value,v=>(s(),a("div",{key:v.label,class:ie(["flex flex-wrap items-baseline justify-between gap-x-3 border-b border-border pb-2 sm:justify-start sm:gap-x-2",v.breit?"sm:col-span-2":""])},[n("dt",Wn,[v.hilfe?(s(),a("span",Vn,[l(t(v.label)+": ",1),Z(E,{align:"left",label:"Was zählt als Pkw mit Verbrenner?"},{default:H(()=>[...u[0]||(u[0]=[l(" Alle Pkw, die tanken: Benziner, Diesel, Gas- und Hybridfahrzeuge. Reine Elektroautos zählen nicht mit, sie tanken nie. ",-1)])]),_:1})])):(s(),a(x,{key:1},[l(t(v.label)+":",1)],64))]),n("dd",qn,[v.to?(s(),pe(N,{key:0,to:v.to,class:"text-link -my-1 inline-block py-1 underline underline-offset-2"},{default:H(()=>[l(t(v.wert),1)]),_:2},1032,["to"])):(s(),a(x,{key:1},[l(t(v.wert),1)],64))])],2))),128))]),d.kreis.gebietsstandHinweis?(s(),a("p",Qn,t(d.kreis.gebietsstandHinweis),1)):h("",!0),w.value?(s(),a("p",Jn,t(w.value),1)):h("",!0),n("p",Xn,[u[1]||(u[1]=l(" Einwohner/Fläche: Statistisches Bundesamt, GV-ISys (Stand 31.12.2024, ",-1)),u[2]||(u[2]=n("a",{href:"https://www.govdata.de/dl-de/by-2-0",target:"_blank",rel:"noopener",class:"underline"},"dl-de/by-2.0",-1)),u[3]||(u[3]=l(") · Kennzeichen",-1)),T.value?(s(),a(x,{key:0},[l(" und Verwaltungssitz")],64)):h("",!0),u[4]||(u[4]=l(": Wikidata (CC0) · ",-1)),F.value?(s(),a(x,{key:1},[l("Pkw-Bestand: "+t(c(Ot))+" · ",1)],64)):h("",!0),u[5]||(u[5]=l(" Tankstellendichte: eigene Berechnung zum Tagesstand. ",-1))])]),_:1})}}}),ea=Object.assign(Yn,{__name:"KreisFaktenbox"});function ta(d){return he(`mittagsliste-${d}`,()=>$fetch(`/api/kreis-mittagsliste/${d}`))}const sa={"aria-labelledby":"kreis-zwoelf-uhr",class:"rounded-xl border border-border bg-surface p-4 sm:p-6"},na={id:"kreis-zwoelf-uhr",class:"text-h2"},aa={"data-test":"zwoelf-uhr-mess",class:"mt-2 max-w-prose text-foreground"},ra={key:0,"data-test":"mittagsliste-leer-bruecke",class:"text-muted mt-1 max-w-prose text-sm"},la={key:1,"data-test":"mittagsliste",class:"bg-surface-muted mt-5 mb-5 rounded-lg p-4 sm:p-5"},ia={key:0,"data-test":"mittagsliste-bruecke",class:"text-muted mt-1 max-w-prose text-sm"},oa={class:"mt-4 grid gap-x-8 gap-y-4 sm:grid-cols-2"},ua={key:0,class:"text-muted text-sm"},da={class:"text-muted mt-4 max-w-prose text-xs"},ca={class:"text-muted mt-2 max-w-prose text-sm"},ma={"data-test":"zwoelf-uhr-messhinweis",class:"text-muted mt-2 max-w-prose text-xs"},pa={key:1,class:"mt-2 max-w-prose text-foreground"},ha={class:"mt-2 text-sm"},ga=ee({__name:"KreisZwoelfUhr",props:{kreis:{}},async setup(d){let e,f;const M=d,A=oe(),i=O(!1);Y(()=>{i.value=!0});const C=r(()=>i.value?ue(A.query.kraftstoff)??V:V),y=r(()=>lt(M.kreis,C.value)),R=r(()=>X(M.kreis.typ,M.kreis.name)),F=r(()=>{const S=y.value;return S?[S.anstieg,S.stabil,S.bund].filter(Boolean).join(" "):""}),{data:$}=([e,f]=ce(()=>ta(M.kreis.nuts3)),e=await e,f(),e),L=r(()=>($.value?.frei?$.value[C.value]:[])??[]),T=r(()=>$.value?.tage??0),w=r(()=>$.value?.verlaufGeprueft===!0),p=r(()=>Wt(M.kreis.nuts3,C.value)?.[1]??0),u=r(()=>{if(!p.value)return null;const S=L.value.length,_=S===1?"besteht diese eine":`bestehen diese ${S}`;
1return`Von den ${p.value} aus der Messung oben ${_} auch alle Prüfungen der Liste.`}),E=r(()=>{if(!$.value?.frei||L.value.length||!p.value)return null;const S=w.value?", im Wochenverlauf ohne regelmäßige Mittagserhöhung und ohne Erhöhung außerhalb der Mittagszeit":"";return`Keine davon besteht alle Prüfungen für die namentliche Liste: an jedem der ${T.value} Messtage stabil, nicht über dem mittleren Preis der Region${S}.`}),N=S=>[S.city,S.street].filter(Boolean).join(", "),K=S=>Ee({brand:S.brand,name:S.name,street:S.street}),v=r(()=>{const S=[`An jedem der ${T.value} Messtage blieb ihr Preis über Mittag unverändert und lag nicht über dem mittleren Preis der Region.`];return w.value&&S.push("Zusätzlich am Preisverlauf der vergangenen sieben Tage geprüft: Tankstellen, die an fünf oder mehr Tagen mittags erhöht haben, stehen nicht in der Liste. Dasselbe gilt für Tankstellen, die in diesen sieben Tagen außerhalb der Mittagszeit erhöht haben."),S.push("Quelle: MTS-K."),S.join(" ")});return(S,_)=>{const b=ae;return s(),a("section",sa,[n("h2",na,[y.value?(s(),a(x,{key:0},[l("Der Mittagssprung "+t(R.value),1)],64)):(s(),a(x,{key:1},[l("Die 12-Uhr-Regel")],64))]),y.value?(s(),a(x,{key:0},[n("p",aa,t(F.value),1),E.value?(s(),a("p",ra,t(E.value),1)):h("",!0),L.value.length?(s(),a("div",la,[_[0]||(_[0]=St('<h3 class="text-h3 flex items-center gap-2"><svg viewBox="92 138 328 270" fill="currentColor" aria-hidden="true" class="text-primary h-5 w-auto shrink-0"><path d="M112 348 V196 l72 74 72 -110 72 110 72 -74 V348 Z"></path><rect x="104" y="360" width="304" height="48" rx="16"></rect><circle cx="112" cy="196" r="20"></circle><circle cx="256" cy="160" r="22"></circle><circle cx="400" cy="196" r="20"></circle></svg><span>Diese Tankstellen ließen den Preis über Mittag stehen</span></h3>',1)),u.value?(s(),a("p",ia,t(u.value),1)):h("",!0),n("ul",oa,[(s(!0),a(x,null,Q(L.value,j=>(s(),a("li",{key:j.id,class:"min-w-0"},[Z(b,{to:{path:`/tankstelle/${j.id}`,query:{kraftstoff:C.value}},"data-test":"mittagsliste-link",class:"text-link inline-block py-1 text-base font-semibold underline underline-offset-2"},{default:H(()=>[l(t(K(j)),1)]),_:2},1032,["to"]),N(j)?(s(),a("p",ua,t(N(j)),1)):h("",!0)]))),128))]),n("p",da,t(v.value),1)])):h("",!0),n("p",ca,t(c(Pe)),1),n("p",ma,t(y.value.messung),1)],64)):(s(),a("p",pa,t(c(Pe)),1)),n("p",ha,[Z(b,{to:"/preisentwicklung",class:"text-link inline-block py-1 underline underline-offset-2"},{default:H(()=>[..._[1]||(_[1]=[l("Preisentwicklung im Tagesverlauf ansehen",-1)])]),_:1})])])}}}),fa=Object.assign(ga,{__name:"KreisZwoelfUhr"}),ka=20,va={key:0,"data-test":"historie",class:"rounded-xl border border-border bg-surface-muted p-4 sm:p-6"},ba={"data-test":"historie-sparkline",class:"mt-3"},_a=["viewBox"],xa=["d"],ya={class:"mt-3 max-w-prose text-sm"},wa={key:0,"data-test":"historie-wochentage",class:"mt-4"},$a={"aria-hidden":"true",viewBox:"0 0 280 96",class:"mt-1 h-24 w-full max-w-md",preserveAspectRatio:"xMinYMid meet"},za=["x","y","height"],Da=["x","y"],Ea=["x"],Sa=["x"],Ca={"data-test":"historie-kuer",class:"mt-3 max-w-prose text-sm"},Pa={"data-test":"historie-legende","aria-hidden":"true",class:"text-muted mt-1 max-w-prose text-xs"},Ma={class:"text-muted mt-3 max-w-prose text-xs"},je=300,we=64,Aa=2,La=ee({__name:"KreisHistorie",props:{kreis:{},historie:{}},setup(d){const e=d,f=oe(),M=O(!1);Y(()=>{M.value=!0});const A=r(()=>M.value?ue(f.query.kraftstoff)??V:V),i=r(()=>!!e.historie&&e.historie.tage.length>=ka),C=r(()=>e.historie?.tage??[]),y=r(()=>C.value.map(o=>o[A.value])),R=r(()=>y.value.filter(o=>o!=null)),F=r(()=>Math.min(...R.value)),$=r(()=>Math.max(...R.value)),L=o=>o.split("-").reverse().join("."),T=r(()=>L(C.value.at(-1).datum)),w=r(()=>{const o=y.value.length;if(!o||!R.value.length)return"";const m=$.value-F.value,k=[];let z=!1;return y.value.forEach((P,q)=>{if(P==null){z=!1;return}const G=q/Math.max(1,o-1)*je,D=m===0?we/2:4+($.value-P)/m*(we-8);k.push(`${z?"L":"M"}${G.toFixed(1)},${D.toFixed(1)}`),z=!0}),k.join(" ")}),p=r(()=>e.historie?.wochentage[A.value]??{deltas:[],wochen:0}),u=r(()=>e.historie?.kuer[A.value]??null),E=o=>Math.abs(o)<.05?0:Math.min(28,Math.max(2,Math.abs(o)/Aa*28)),N=o=>{const m=Math.abs(o).toFixed(1).replace(".",",").replace(/,0$/,"");return`${o>0?"+":"−"}${m}`},K={Mo:"Montag",Di:"Dienstag",Mi:"Mittwoch",Do:"Donnerstag",Fr:"Freitag",Sa:"Samstag",So:"Sonntag"},v=o=>`${Math.abs(o).toFixed(1).replace(".",",").replace(/,0$/,"")} Cent`,S=r(()=>Zt[A.value]),_=r(()=>X(e.kreis.typ,e.kreis.name)),b=r(()=>({e5:"text-chart-e5",e10:"text-chart-e10",diesel:"text-chart-diesel"})[A.value]),j=r(()=>{const o=R.value[0],m=R.value.at(-1);if(o==null||m==null)return"";const k=(m-o)*100,z=k<=-.05?`etwa ${v(k)} unter`:k>=.05?`etwa ${v(k)} über`:"etwa auf";return`${S.value} lag am ${T.value} ${z} dem Stand von vor 30 Tagen; die Spanne der letzten 30 Tage betrug ${v(($.value-F.value)*100)}.`}),W=r(()=>{const o=u.value;return o?v(p.value.deltas.find(m=>m.tag===o.tag)?.deltaCent??0):""});return(o,m)=>i.value?(s(),a("section",va,[m[3]||(m[3]=n("h2",{class:"text-h3"},"So bewegte sich der Preis",-1)),n("div",ba,[(s(),a("svg",{"aria-hidden":"true",viewBox:`0 0 ${je} ${we}`,class:ie(["h-16 w-full max-w-md",b.value]),preserveAspectRatio:"none"},[n("path",{d:w.value,fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"},null,8,xa)],10,_a)),n("p",ya,t(j.value),1)]),p.value.deltas.length?(s(),a("div",wa,[m[2]||(m[2]=n("h3",{class:"text-sm font-semibold"},"Wochentagsmuster",-1)),(s(),a("svg",$a,[m[0]||(m[0]=n("line",{x1:"0",y1:"40",x2:"280",y2:"40",stroke:"currentColor",class:"text-muted","stroke-width":"1"},null,-1)),(s(!0),a(x,null,Q(p.value.deltas,(k,z)=>(s(),a("g",{key:k.tag},[E(k.deltaCent)>0?(s(),a(x,{key:0},[n("rect",{"data-test":"wt-balken",x:z*40+12,width:"16",y:k.deltaCent<0?40:40-E(k.deltaCent),height:E(k.deltaCent),class:ie(u.value&&k.tag===u.value.tag?b.value:"text-muted"),fill:"currentColor",rx:"2"},null,10,za),n("text",{x:z*40+20,y:k.deltaCent<0?40+E(k.deltaCent)+8:40-E(k.deltaCent)-3,"text-anchor":"middle",class:"fill-current text-muted","font-size":"9"},t(N(k.deltaCent)),9,Da)],64)):(s(),a("rect",{key:1,"data-test":"wt-null",x:z*40+16,width:"8",y:"39",height:"2",class:"text-muted",fill:"currentColor"},null,8,Ea)),n("text",{x:z*40+20,y:"94","text-anchor":"middle",class:"fill-current text-muted","font-size":"10"},t(k.tag),9,Sa)]))),128))])),n("p",Ca,[u.value?(s(),a(x,{key:0},[l("Am günstigsten war "+t(S.value)+" zuletzt meist am ",1),n("strong",null,t(K[u.value.tag]),1),l(": im Median "+t(W.value)+" unter dem Wochenniveau, gerechnet über die letzten "+t(u.value.wochen)+" vollen Wochen.",1)],64)):(s(),a(x,{key:1},[l("Ein fester Wochentag als Spartag lässt sich für diesen Kreis nicht belegen: kein Wochentag war über die letzten "+t(p.value.wochen)+" vollen Wochen zuverlässig der günstigste.",1)],64))]),n("p",Pa,[m[1]||(m[1]=l(" Balken nach unten: an dem Wochentag war es zuletzt günstiger als das Wochenniveau, nach oben: teurer (Zahlen in Cent). Kurze Striche: keine messbare Abweichung. ",-1)),u.value?(s(),a(x,{key:0},[l("Der farbige Balken markiert den günstigsten Wochentag.")],64)):h("",!0)])])):h("",!0),n("p",Ma,[l(" Quelle: Tankerkönig-Marktmedian für das Gebiet "+t(_.value)+", täglich nachts aktualisiert; jüngster Punkt: "+t(T.value)+". ",1),h("",!0)])])):h("",!0)}}),Ta=Object.assign(La,{__name:"KreisHistorie"});function Ka(d){return he(`snapshot-kreis-${d}`,()=>
1$fetch(`/api/snapshots/kreis/${d}`))}function Ra(d){return he(`umriss-kreis-${d}`,()=>$fetch(`/api/geo/kreis-umriss/${d}`))}function Fa(d){return he(`historie-${d}`,()=>$fetch(`/api/snapshots/historie/${d}`))}const Na={class:"mx-auto max-w-5xl px-6 pb-10"},Ba={class:"mt-6 flex flex-col gap-6"},Za={key:0,"aria-label":"Weitere Spritpreis-Übersichten",class:"rounded-xl border border-border bg-surface-muted p-4 sm:p-6"},Ua={class:"mt-2 flex flex-col gap-1.5 text-sm"},Ga={key:0},ja={class:"text-muted max-w-prose text-xs"},gr=ee({__name:"[kreis]",async setup(d){let e,f;const M=oe(),A=M.params.kreis,i=Ct(A),{data:C}=([e,f]=ce(()=>Ka(A)),e=await e,f(),e);if(!C.value)throw Pt({statusCode:404,statusMessage:`Kein Snapshot für ${A} (npm run snapshots)`});const y=C.value,{data:R}=([e,f]=ce(()=>Ra(i.nuts3)),e=await e,f(),e),{data:F}=([e,f]=ce(()=>Fa(i.nuts3)),e=await e,f(),e),$=ne(i.typ,i.name),L=`Spritpreise ${X(i.typ,i.name)}`,T=Ve[i.bundesland]??i.bundesland,w=Mt(i),p=At(w),u=it(i,y),E=ot(i,y),N=Lt(),K=`${N.url}${Tt(A)}`;Kt({title:u,description:E,ogTitle:u,ogDescription:E,ogImage:K,twitterImage:K});const v=Me(i,y,void 0,F.value??null);ns([as({"@type":"FAQPage"}),rs({itemListElement:[{name:"Start",item:"/"},{name:"Regionen",item:Ke},p?{name:T,item:Re(w)}:{name:T},{name:$}]}),...v.map(G=>ls({name:G.frage,acceptedAnswer:G.antwort})),{"@type":"Dataset",name:`Median-Kraftstoffpreise ${$}`,description:`Median-Preise für Diesel, Super E5 und Super E10 sowie die günstigsten Tankstellen ${X(i.typ,i.name)}, berechnet aus den Preismeldungen der Markttransparenzstelle für Kraftstoffe (MTS-K).`,creator:{"@type":"Organization",name:"Tankerkönig"},license:"https://creativecommons.org/licenses/by-nc-sa/4.0/",isBasedOn:"https://www.bundeskartellamt.de/DE/Aufgaben/MarkttransparenzstelleFuerKraftstoffe/mtsk_node.html",spatialCoverage:`${$}, ${T}, Deutschland`,dateModified:y.stand,isPartOf:{"@type":"Dataset",name:"Median-Kraftstoffpreise je Landkreis und Bundesland in Deutschland",url:`${N.url}/regionen`}}]);const S=O(!1);Y(()=>{S.value=!0});const _=r(()=>S.value?ue(M.query.kraftstoff)??V:V),b=r(()=>dt(i,y,_.value)),j=r(()=>Nt(Me(i,y,_.value,F.value??null),_.value)),W=r(()=>[{label:"Start",to:"/"},{label:"Regionen",to:J(Ke,_.value)},p?{label:T,to:J(Re(w),_.value)}:{label:T},{label:$}]),o=(i.enthaeltGrossstaedte??[]).map(G=>Rt(G)).filter(G=>!!G),m=r(()=>o.map(G=>({slug:G.slug,name:G.name,to:qe(De(G.slug),_.value)}))),k=ut(i),z=r(()=>J(k.to,_.value)),P=v.some(G=>G.link?.to===k.to),q=_;return(G,D)=>{const g=ct,B=Vs,I=yn,re=jn,ge=ea,U=fa,fe=Ta,Xe=ts,Se=ae,Ye=ss;return s(),a("div",null,[Z(g,{h1:L,lead:b.value,trail:W.value,"share-title":`Spritpreise ${c($)}`,"share-placement":"below",umriss:c(R)},null,8,["lead","trail","share-title","umriss"]),n("div",Na,[n("div",Ba,[Z(B,{kreis:c(i),snapshot:c(y)},null,8,["kreis","snapshot"]),Z(I,{kreis:c(i),snapshot:c(y)},null,8,["kreis","snapshot"]),Z(re,{kreis:c(i),"plz-praefixe":c(y).plzPraefixe,bbox:c(y).bbox},null,8,["kreis","plz-praefixe","bbox"]),Z(ge,{kreis:c(i),snapshot:c(y),fuel:_.value},null,8,["kreis","snapshot","fuel"]),Z(U,{kreis:c(i)},null,8,["kreis"]),Z(fe,{kreis:c(i),historie:c(F)??null},null,8,["kreis","historie"]),Z(Xe,{eintraege:j.value,"heading-id":"kreis-faq"},null,8,["eintraege"]),c(o).length||!c(P)?(s(),a("nav",Za,[D[0]||(D[0]=n("h2",{class:"text-h3"},"Weiter vergleichen",-1)),n("ul",Ua,[(s(!0),a(x,null,Q(m.value,ke=>(s(),a("li",{key:ke.slug},[Z(Se,{to:ke.to,"data-test":"stadt-link",class:"text-link inline-block py-1 underline underline-offset-2"},{default:H(()=>[l(" Spritpreise "+t(ke.name)+" (Stadtseite mit Umkreis-Suche) ",1)]),_:2},1032,["to"])]))),128)),c(P)?h("",!0):(s(),a("li",Ga,[Z(Se,{to:z.value,"data-test":"land-link",class:"text-link inline-block py-1 underline underline-offset-2"},{default:H(()=>[l(t(c(k).label),1)]),_:1},8,["to"])]))])])):h("",!0),Z(Ye,{ort:c(X)(c(i).typ,c(i).name),fuel:c(q)},null,8,["ort","fuel"]),n("p",ja,[l(" Preisdaten: Markttransparenzstelle für Kraftstoffe (MTS-K), Bundeskartellamt, CC BY 4.0 · Kennzahlen beziehen sich auf Tankstellen mit aktueller Preismeldung im Gebiet "+t(c($))+" (Verwaltungsgrenze, keine Umkreis-Suche) · Regionsgrenzen: © EuroGeographics (EU GISCO, NUTS 2021). ",1),D[1]||(D[1]=n("a",{href:"https://creativecommons.tankerkoenig.de",target:"_blank",rel:"noopener",class:"text-link underline"},"Rohdaten über die Open Data API",-1))])])])])}}});
1export{gr as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.