- Připravené nasazení na Cloudflare Pages: Projekt obsahuje reprodukovatelnou konfiguraci a příkazy pro nasazení adresáře
web/, kontrolu limitů a povinných generovaných dat i produkční HTTP hlavičky s revalidací měření.
- Doplněna dokumentace prvního nasazení a připojení subdomény
meteo.heca.czbez nutnosti přesunu celé DNS zóny na Cloudflare.
- Oddělení zdrojového kódu a generovaných dat: Meteorologické soubory ve
web/data/zůstávají lokálně dostupné pro aktualizaci a sestavení webu, ale již se neukládají do Git repozitáře ani jeho historie.
- Přenositelné odkazy v dokumentaci: Lokální absolutní odkazy byly nahrazeny relativními cestami, takže dokumentace ani veřejný changelog nezveřejňují strukturu pracovního adresáře.
- Podpora pro čas 24:00 v datových feedech: Převod časových údajů z UTC do lokálního času
Europe/Praguesprávně podporuje čas24:00(půlnoc na konci dne) a převádí jej na začátek následujícího kalendářního dne. - Odolnost při stahování dat ze serveru ČHMÚ: Síťové dotazy s HTTP 200 obsahující prázdné tělo (0 B) vyvolají opakovaný pokus (retry), čímž se předchází chybám parsování při dočasném generování souborů na serveru.
- Přidány unit testy pro převod času
24:00z UTC do lokálního času i ISO timestampů.
- Živá data podle pražského kalendářního dne: Průběžná 10minutová měření se skládají ze sousedních UTC souborů a filtrují až po převodu timestampů do
Europe/Prague, takže denní extrémy a historie zahrnují i místní čas od půlnoci. - Odolnost proti částečným výpadkům: Selhání aktualizace jednotlivé stanice již neodstraní její poslední platná data ani absolutní rekordní override z denního výstupu.
- Bezpečná údržba historických podkladů: Výpočty rekordů a ročních statistik podporují vynucenou obnovu historické CSV cache přes
--force; aktualizace metadat zachovává historické rekordy a aktivita stanice se řídí posledním skutečným pozorováním. - Jednotný pražský čas na backendu: Výběr aktuálního dne, měsíce a roku již nezávisí na systémové časové zóně serveru.
- Přidány regresní testy pro hranice UTC/pražského dne, fallback z okamžité teploty, zachování stanice při výpadku a nedestruktivní sloučení metadat.
- Aktualizován projektový skill pro práci s daty ČHMÚ a dokumentace roční obnovy historické cache.
- Zpřesněno pravidlo pro práci s
TODO.md, aby před commitem vyžadovalo věcnou kontrolu bez kosmetických změn.
- Spolehlivé přepínání dnů a stanic: Opožděná odpověď staršího síťového požadavku již nemůže přepsat data nověji zvoleného dne ani roční graf jiné stanice.
- Jednotný pražský čas: Aktuální rok, datum a výpočet stáří živých měření se určují v časové zóně
Europe/Praguenezávisle na nastavení zařízení návštěvníka. - Bezpečné vykreslování dat: Dynamické údaje stanic a měření jsou před vložením do HTML escapovány, takže nemohou vytvořit nežádoucí značky nebo atributy.
- Přidány regresní JS testy pro pořadí asynchronních požadavků, pražské datum v zimním i letním čase a escapování HTML.
- Sloučení celorepublikové aktivity rekordů do jednoho grafu: Graf aktivity rekordů v celorepublikových statistikách byl sloučen do jediného přehledného skládaného sloupcového grafu. Rekordní maxima jsou vynášena směrem nahoru (+), zatímco rekordní minima jsou vynášena směrem dolů (-).
- Zobrazení čistých číselných hodnot bez jednotky: Na ose Y i v hover tooltipu aktivity rekordů se nyní zobrazuje pouze čistá číselná hodnota (počet stanic) bez přípony
st..
- Obecná aproximace a vyhlazování křivek v grafech: Do celorepublikových i ročních grafů stanic byla přidána možnost vyhlazování pro všechny spojité grafy (maximální i minimální teploty, rychlost větru, nárazy větru, rosný bod, kumulace srážek a kumulace slunečního svitu).
- Volba ze 3 matematických metod: Uživatel si může přepnout mezi 14denním klouzavým průměrem, Savitzky-Golay filtrem (15bodové okno) a Kubickým splinem (Gaussovo vyhlazení). Vyhlazení se aplikuje na všechny čáry v grafu najednou bez nechtěného zdvojení čar.
- Vylepšení UX: Přepínač vyhlazování byl umístěn přímo do šedé lišty záložek pod tlačítka přepínání grafů a preferovaný režim se pamatuje v prohlížeči.
- Tlačítko pro zaostření viditelných stanic (Fit bounds): Do ovládání zoomu Leaflet mapy vpravo nahoře bylo přidáno nové tlačítko
🎯. Stisknutím se automaticky spočítá výřez mapy ze všech aktuálně zobrazených/vyfiltrovaných stanic tak, aby byla mapa vycentrovaná a maximálně využila plochu okna. Vypočtený výřez je omezen stropemmaxZoom: 9.5, aby při vyfiltrování jediné stanice mapa nezůstala extrémně přiblížená na uliční detail.
- Statická metadata stanic a oddělení runtime stavu: Soubor
stations_meta.jsonje nyní striktně statickou databází metadat a historických rekordů. Skriptupdate_current.pyjej za běhu již nepřepisuje. Možnosti stanic (has_casmax,has_10m) se ukládají výhradně doweb/data/stations_capabilities.jsona frontend je načítá z tohoto samostatného souboru. - Oprava kešování a zkrácení intervalu pro 10m live data ČHMÚ: Interval kešování pro dnešní 10minutová živá data byl zkrácen z 60 minut na 5 minut a byla opravena chyba v obsluze odpovědi HTTP 304, která neoprávněně posouvala modifikační čas kešovaných souborů a zamykala načítání nových dat ze serveru ČHMÚ.
- Čas dosažení denního minima: Do zpracování meteorologických dat a do uživatelského rozhraní byl doplněn čas dosažení denního minima (
time_min). Čas je nyní zobrazován v popupu stanice při výběru režimu minim, v detailní legendě porovnání teplot, na ryskách stupnice i v mapových tooltipech symetricky k dosavadnímu času denního maxima.
- Zobrazení odchylky v hintu kumulativních grafů: Do tooltipů kumulativních grafů ročních statistik (Kumulované srážky a Kumulovaný sluneční svit) byl přidán nový řádek se zobrazením odchylky (rozdílu) mezi letošní kumulací a dlouhodobým průměrem pro daný kalendářní den v milimetrech (
mm), resp. hodinách (h).
- Tlačítko pro reset URL parametrů: Vedle tlačítka „Kopírovat odkaz“ v postranní liště bylo přidáno tlačítko „Reset URL“. Stisknutím se okamžitě smaže část za mřížkou (
#part) z URL adresy, vynulují se stavové příznaky (dirty flags) a aplikace se vrátí do výchozího zobrazení.
- Kumulativní graf slunečního svitu u stanic: Do modálního okna s ročními statistickými grafy stanic byla přidána nová záložka „Sluneční svit (kumulace)“. Graf zobrazuje celkový nárůst doby slunečního svitu v hodinách od začátku roku v porovnání s dlouhodobým normálem (1991–2020) a odchylku k aktuálnímu dni pro posouzení sluneční aktivity i solárních zisků (FVE).
- Samostatné záložky pro minima a maxima v celorepublikových grafech: Celorepublikové grafy v modálním okně již nezávisejí na nastaveném režimu zobrazení hlavní mapy. V záhlaví okna byly přidány samostatné záložky uspořádané do dvou systémových řádků (horní řada pro maxima, spodní pro minima), což umožňuje přímo přepínat mezi průběhem, odchylkou a aktivitou rekordů pro denní maxima i minima.
- Datum začátku měření v popupech a grafech: Do popupů stanic a do záhlaví ročních grafů bylo přidáno datum začátku měření (odvozeno jako nejstarší
BEGIN_DATEz metadat ČHMÚ pro každou stanici). - Data měření v tooltipech teplotní škály: Tooltipy (hinty) ryskových ukazatelů v teplotní škále porovnání teplot v popupu nyní zobrazují konkrétní datum a čas měření pro denní a absolutní minima i maxima.
- Upraven skript
download_metadata.pypro automatické stahování a parsování data začátku měření dostations_meta.json.
- Zesvětlování značek při starých datech: Omezeno zesvětlování (snížení opacity) značek stanic na mapě a karet stanic v panelu při starých/zpožděných datech pouze na režim „Aktuální“. V režimech denních a absolutních maxim a minim (kde není čerstvost posledního měření relevantní) se značky a karty již nezesvětlují.
- Symbol srážek na mapě: V režimu zobrazení "Aktuální" (a pouze pro aktuální den) se na mapových markerech stanic s detekovanými aktivními srážkami (> 0 mm za posledních 10 minut) zobrazuje odznáček se symbolem mraku s deštěm
🌧️. Odznáček je umístěn v levém horním rohu markeru s modrým ohraničením a zamezuje kolizím s ostatními ukazateli.
- Automatické určení aktuálního roku: Roční a celorepublikové statistiky, průběžná aktualizace ročních dat i popisky grafů už nejsou pevně svázané s rokem 2026. Po přechodu do nového roku automaticky pracují s aktuálním kalendářním rokem.
- Přidány Python a JavaScript regresní testy, které hlídají výběr souborů aktuálního roku, ochranu aktualizace ročních statistik a návrat pevně zadaného roku do zdrojového kódu a popisků.
- Přidán
Makefilese zkratkami pro vývojový server, aktualizaci dat, metadata, historické rekordy a sestavení webu. - Přegenerována průběžná, roční a celorepubliková data včetně nových dnů 13. a 14. července 2026.
- Modulární architektura frontendu: Kompletní interní přestavba aplikace z jednoho monolitického souboru na sadu přehledných ES modulů (
web/js/src/) sestavovaných do jednoho produkčního souboru. Funkčnost i vzhled aplikace zůstávají beze změny; přestavba zrychluje další vývoj a umožňuje automatické testování klíčové logiky (barvy, trendy, permalinky, řazení). - Oprava poškozených ročních statistik: Regenerace všech 255 ročních datových souborů z lokální cache historických dat ČHMÚ (soubor stanice 0-20000-0-11487 byl poškozený a nešel načíst, což rozbíjelo roční grafy dané stanice).
- Nový Python bundler
scripts/build_js.py(bez závislosti na npm): topologické řazení ES modulů podle importů, sloučení do jedné IIFE, vynucení konvencí (pouze pojmenované relativní importy bez aliasů, unikátní top-level jména, zákaz cyklů a top-level await, validace importovaných jmen proti exportům cíle) a automatická syntaktická kontrola výstupu přesnode --check. Zapojen doscripts/build_pages.py. - Rozdělení
web/js/app.js(4715 řádků) na 11 zdrojových modulů:config,dates,colors,trend,sorting,theme,url-state,chart-popup,charts-annual,charts-globalamain. ObřírenderAnnualChartContentrozsekán na render funkce per záložka s dispatch mapou. Hash serializace URL vyčleněna do čistých funkcíparseHashState/buildHashQueryString. - Nové JS unit testy přes vestavěný
node --test(tests/js/, bez npm): datumové utility, teplotní barvy, trendové šipky, parsování a serializace URL hash stavu, řazení stanic. scripts/bump_version.pynyní zapisujeappVersiondo zdrojovéhoweb/js/src/config.jsi do generovanéhoweb/js/app.js, aby bump přežil další sestavení bundleru.- Oprava smoke testu UI (
scripts/smoke_test_ui.py):require_oknyní detekuje selhání i v případech, kdyplaywright-cli run-codevrátí exit kód 0, ale testovací kód uvnitř vyhodil chybu (rozpoznáno podle řádku### Errorve výstupu). Dosud test vždy procházel bez ohledu na skutečný výsledek. - Oprava závodu ve smoke testu UI:
#stats-totalje vindex.htmlinicializovaný na "0", takže test kontroloval počet stanic hned podomcontentloaded, dřív než aplikace stihla fetchnout data. Přidánopage.waitForFunctiončekající na naplněnou nenulovou hodnotu (timeout 15000 ms) před původními asserty. - Přidány round-trip testy hash stavu URL (
tests/js/url-state.test.mjs) probuildHashQueryString: výchozí stav, plný stav s ověřením přesného pořadí parametrů, podmínky pro zápislat/lon/z(jen bez stanice, smapStateDirtya nenulovým centrem/zoomem) asideWidth(jen po tažení a při šířce nad 320), a round-trip přesparseHashState. - Nový
tests/test_build_js.py(unittest) ověřující bundlerscripts/build_js.py: úspěšné sestavení se správným pořadím závislostí, detekce cyklické závislosti, kolize top-level jmen, chybějící modul, alias v importu a import neexportovaného jména. scripts/build_js.py: funkcebuild()nyní přijímá parametrysrc_dir/entry/output(se stávajícími výchozími hodnotami) místo pevných modulových konstant, aby šla bundlovat i do dočasných adresářů v testech.- Robustnější parsování importů v bundleru (
scripts/build_js.py): vyčleněna sdílená pomocná funkcestrip_strings_and_comments(dříve součástí kontroly top-level await), která maskuje obsah řetězců a komentářů mezerami při zachování offsetů. Používá se i při hledání import statementů, takže import-like text uvnitř template literalů nebo komentářů už nezpůsobí falešnou závislost nebo tichou korupci bundlu.TOPLEVEL_DECL_RErozšířeno ovaraasync function. - Zprovoznění smoke testu UI, který kvůli SRI nikdy reálně neběžel: stuby Leaflet/Chart.js podvrhované přes
page.routeprohlížeč blokoval kvůliintegrityhashům vindex.html(L is not defined), takže se aplikace v testu vůbec nenačetla. Dokument se nyní v testu přepisuje bezintegrity/crossorigin/referrerpolicyatributů. Dále opraven strict-mode konflikt (expectVisiblena víceprvkových selektorech nyní používá.first()) a při selhání se k chybě připojují nasbírané console/page chyby, aby timeout nemaskoval skutečnou příčinu.
- Warming Stripes (Climate Fingerprint) pro konkrétní stanici: V ročním přehledu stanice byla přidána nová interaktivní záložka zobrazující barevný otisk letošního průběhu teplotních odchylek (366 pruhů bez mezer).
- Dynamické barvení statistik s kontrastem: Statistiky pod grafem Warming Stripes jsou obarveny podle aktuálních odchylek (průměrná odchylka, nejvyšší nadprůměr, nejhlubší podprůměr a poměr dnů) s automatickým výpočtem YIQ kontrastu pro stoprocentní čitelnost textu v tmavém i světlém režimu.
- Teplotně mapovaní a interaktivní jezdci filtru (Bod 2): Vyladěn styling pseudo-elementů posuvníků (thumbs), které se nyní spolehlivě zbarvují podle aktuálně vybrané teploty. Přidány moderní focus-visible stavy pro eliminaci výchozího outline a upraveny ztmavovací overlaye.
- Custom Dark Mode filtry pro mapové dlaždice (Bod 8): V tmavém režimu přidán CSS filtr na Leaflet mapové dlaždice (jas, kontrast, saturace), což zvyšuje čitelnost a umožňuje neonovým markerům rekordů lépe vyniknout.
- Estetické vylepšení grafů Chart.js (Bod 9): U popup grafů byl přidán lineární barevný přechod pod křivkami (Area Gradient) od barvy veličiny do ztracena. Tooltipy všech grafů (popup, roční i celorepublikové) byly sjednoceny do zaobleného designu s Outfit/Inter fonty.
- Decentní zakázkový scrollbar (Bod 10): V postranním panelu a v seznamu stanic byly sjednoceny a vizuálně zjemněny posuvníky (scrollbars) pomocí poloprůhledných barev s plynulým hover efektem.
- Sjednocen formát výpisů a chybových hlášení při aktualizaci dat a výpočtech. Každý výpis týkající se konkrétní stanice nyní obsahuje jak její název/město, tak i ID/WSI ve formátu
Jméno (ID)(např.Ostrava (0-203-0-20101156002)). Upraveny byly skriptyupdate_current.py,calculate_records.py,add_absolute_mins.py,download_metadata.py,calculate_annual_stats.pyacalculate_global_stats.py.
- Zlepšení UX a rozvržení nastavení panelu: Zavedena jednotná třída
.setting-groups rozestupem16px(flex gap) mezi skupinami voleb a odstraněny přebytečné dělící čáry. - One-Click řazení stanic: Výběr řazení stanic byl změněn z dropdown select boxu na moderní segmentový přepínač pro možnost řazení jediným kliknutím.
- Konzistence barevného schématu minim: Rysky a značky legendy pro absolutní minima (
alltime-min) a předchozí absolutní minima (historical-alltime-min) byly upraveny z nekonzistentních barev (bílá, šedá) na logické a kontrastní odstíny tmavě modré a modré, což plně odpovídá pravidlu o modrých/azurových barvách pro minima. - Oprava pozadí statistik v tmavém režimu: Pro statické boxy
.stat-itembylo přidáno správné pozadí pro tmavý režim (rgba(255, 255, 255, 0.03)), čímž se sjednotil jejich vzhled s ostatními statistickými boxy. - Robustnější fallback N/A markerů: Do CSS byly doplněny fallback styly pro barvu pozadí a textu pro mapové markery bez měření (
.state-na), aby správně odpovídaly vzhledu karet.
- Do bočního panelu stanic přidány ovládací prvky pro řazení stanic (podle abecedy, podle teploty sestupně, podle teploty vzestupně) a teplotní filtr od-do v °C.
- Pro teplotní filtr byl přidán grafický posuvník se dvěma jezdci (dual range slider) stylizovaný jako plnohodnotná barevná teplotní stupnice (od -40 °C do 40 °C). Neaktivní části stupnice mimo vybraný rozsah jsou automaticky ztmaveny a jezdci (thumbs) mění svou barvu podle teploty, na kterou ukazují.
- Zajištěno ukládání stavu řazení a teplotního filtru do URL hash pro snadné sdílení stavu aplikace.
- Vylepšeno označení extrémních teplot na mapě: v jakémkoliv zvoleném režimu zobrazení jsou nyní označeny stanice s nejvyšší (zlatá korunka 👑, třída
state-highest) a nejnižší (modrá vločka ❄️, třídastate-lowest) teplotou. - Extrémní stanice na mapě mají nastaven nejvyšší z-index offset (
1000), takže se vykreslují nad ostatními překrývajícími se body a jsou vždy viditelné.
- Přidána nová záložka Klimatické dny v ročních statistikách detailu stanice. Zobrazuje sloupcový graf (Grouped Bar Chart) s počty letních, tropických, supertropických, mrazových, ledových, arktických dnů a tropických nocí v aktuálním roce (2026) v porovnání s klimatologickým normálem (1991–2020).
- Pod graf byla přidána moderní tabulka s procentuálními progress bary naplnění normálu a odznáčky odchylek (např. o kolik dní více/méně než průměrně letos nastalo).
- Upraveno řazení teplot v porovnávacím panelu detailu stanice, kde se předchozí historické rekordy nově korektně řadí podle své teplotní hodnoty mezi ostatní položky.
- Zlepšena vizuální prezentace teplot v porovnání: aktuální teplota je nově zobrazena zeleně, maximální teploty mají odstíny červené (dnešní max. světle červená, denní max. červená, absolutní max. a předchozí rekordy tmavě červená).
- Zvýrazněny a rozšířeny rysky na teplotní stupnici (gauge ticks) na šířku 6px a výšku 22px pro lepší čitelnost a rozpoznatelnost jejich barev. Přidány rysky pro předchozí historické rekordy.
- Přepínač režimů zobrazení teploty na mapě byl převeden na přehlednější dvou sloupcový layout (vlevo minima, vpravo maxima) s plnou šířkou pro tlačítko "Aktuální".
- V detailu stanice (Leaflet popup) byla do teplotního srovnání přidána aktuální (10minutová) teplota. Všechny teploty v legendě škály jsou nově řazeny vzestupně podle naměřené hodnoty.
- Opravena chyba parsování parametrů URL hashe, kdy chybějící souřadnice mapy (
lat,lon) a zoom (z) byly chybně vyhodnoceny jako0(Null Island), což způsobovalo nesprávné vycentrování mapy a zoom při načtení specifických režimů (např.#mode=actual). Mapové souřadnice a zoom se nyní načtou pouze při reálné interakci uživatele s mapou nebo pokud jsou v URL explicitně přítomné.
- Do přepínače hodnot na mapě přibyl režim Aktuální, který v bodech zobrazuje poslední dostupnou 10minutovou teplotu místo denního maxima.
- V režimu Aktuální se u mapových bodů zobrazuje malá šipka fáze dne:
↑, pokud je poslední aktuální měření stále u dosavadního denního maxima, a↓, pokud už aktuální teplota po dosažení maxima klesla.
- Zaostávající dnešní měření starší než hodinu na mapě nyní blednou výrazněji, aby stará data nepůsobila stejně čerstvě jako aktuální měření.
- Stáří dnešních měření se nově počítá i proti aktuálnímu času v prohlížeči, takže starší data zůstávají viditelně zaostávající i po skončení pravidelných aktualizací.
- Význam šipky byl sjednocen s denním maximem stanice: nejde o obecný krátkodobý trend, ale o informaci, zda už pravděpodobně proběhl teplotní vrchol dne.
- Šipka v režimu Aktuální se zobrazuje i u zaostávajících měření; stáří dat se odlišuje pouze vyblednutím markeru.
- Přidán end-to-end smoke test hlavního UI nad lokálními statickými daty, který ověřuje načtení mapy a stanic, přepínání všech teplotních režimů, popup stanice, roční grafy a celorepublikové grafy.
- Stav mapy a panelu se nově ukládá do URL hashe jako rozdíl proti výchozímu zobrazení: režim, historické datum, ručně změněná poloha a zoom mapy, hledání, rychlý filtr, zavřené sekce, vybraná stanice, záložky popupu i otevřené grafové modály. Panel nabízí globální tlačítko pro zkopírování odkazu na aktuální zobrazení.
- Doplněno ukládání a čtení přepisů absolutních minim (
all_time_min_overrides) pro překonaná absolutní minima bez zápisu runtime rekordů dostations_meta.json.
- Symetrické a důsledné názvosloví:
- Odstraněno matoucí označení "Denní rek." a plně zavedeno jednotné a symetrické dělení na Dnešní (aktuálně naměřená hodnota), Denní (historické maximum/minimum pro kalendářní den) a Abs. (absolutní all-time maximum/minimum stanice).
- Tato symetrie byla implementována napříč celým klientským rozhraním (přepínače na mapě, popisky celorepublikových statistik, extrémní denní hodnoty, ryskové diagramy v detailech stanic i legendy ročních grafů).
- Aktualizována dokumentace projektu (
README.md,content/metodika-grafu.md) a vysvětlující texty pro zachování pojmové integrity. - Umožněno přehledné zalamování přepínačů na mapě pro menší displeje na postranním panelu.
- Rozšířena teplotní stupnice na hlavním panelu legendy z rozmezí
-10°C / 40°Cna-40°C / 40°C(s krokem 20 °C) a rozšířena barevná škála interpolace o tmavé fialové/indigové odstíny pro extrémní mrazy.
- Sledování minimálních teplot a rekordů:
- Přidána podpora pro stahování, parsování a ukládání denních minimálních teplot (
temp_min) z ČHMÚ denních archivů a operativních 10m datových toků. - Přidána podpora pro sledování historických a denních rekordů minim (uložených v
stations_meta.jsonjakoall_time_minadaily_records_min). - Přidán nový přepínač hodnot na mapě Denní min. pro vizualizaci naměřených minimálních teplot dne.
- Rozšířena teplotní škála v popupu stanice z
-10°C / 40°Cna-40°C / 40°Cpro zimní extrémy, se symetrickým rozložením ryskových ukazatelů (absolutní minimum: bílá, denní rekord minima: azurová, dnešní minimum: modrá, dnešní maximum: zelená, denní rekord maxima: červená, absolutní rekord maxima: černá). - Přejmenovány popisky ryskového schématu na Dnešní maximum a Dnešní minimum.
- Rozšířeny roční grafy stanice o novou záložku Minimální teplota zobrazující roční průběh minimálních teplot (včetně historického rekordu minima, průměrného minima a naměřených minim v roce 2026).
- Zavedena kompletní symetrie pro minimální teploty v levém panelu: rychlé filtry ("🥶 Denní", "🚨 Absolutní", "☀️ Nepřekonán"), popisky statistik překonání rekordů a teplotních extrémů se dynamicky přepínají dle zvoleného zobrazení na mapě.
- Rozšířeny celorepublikové roční grafy o podporu minimálních teplot: při zobrazení "Denní min." na mapě se roční celorepublikové grafy (Průběh, Odchylka a Aktivita rekordů) automaticky přepnou na zobrazení minim, s modrým podbarvením překonaných rekordů.
- Jednorázový backendový skript:
- Vytvořen jednorázový importní skript
add_absolute_mins.pypro naplněnístations_meta.jsonúdaji o historických absolutních minimech a denních minimech ze všech 255 stanic.
- Přejmenování projektu: Kompletní přejmenování projektu z "CRTempMax" na "meteo.heca.cz" / "Meteo Heča" napříč celou aplikací:
- Aktualizovány titulky stránek, metadata (
og:title), hlavní nadpisy (loga), patičky a popisy stránek. - Opraven a aktualizován popis barevné indikace teplotních rekordů na stránce „O projektu“ podle platného barevného standardu (červená pro denní rekordy, černá/bílá pro absolutní rekordy).
- Upraven kontrolní test v
dev_server.py, aby správně detekoval běžící lokální server pod novými názvy.
- Rozšíření ročních grafů o další meteorologické veličiny:
- Do ročního modálního okna stanice byly přidány 4 nové záložky: Rychlost větru, Nárazy větru, Rosný bod a Sluneční svit.
- Pro každou novou veličinu se vykresluje roční průběh složený z historického maxima, historického minima, dlouhodobého průměru a naměřených hodnot v roce 2026.
- Pod grafy jsou integrovány odpovídající statistické boxy:
- Rychlost větru: Hist. maximum, Hist. minimum, Letošní max. a Letošní průměr.
- Nárazy větru: Hist. maximum, Hist. průměrný náraz, Letošní max. náraz a Letošní průměrný náraz.
- Rosný bod: Hist. maximum, Hist. minimum, Letošní max. a Letošní min.
- Sluneční svit: Hist. max. denní, Průměrná roční doba, Letošní max. denní a Letošní celková doba.
- Zpracování a stahování nových dat:
- Skript
calculate_annual_stats.pynově stahuje a agreguje historická CSV pro rychlost větru (F), nárazy větru (Fmax), rosný bod (TPM) a sluneční svit (SSV) pro všech 255 stanic. - Skript
update_current.pystahuje a průběžně aktualizuje tato data z operativních měření a ukládá je do denních JSONů a ročních souborů.
- Kumulativní srážkový graf:
- Do modálního okna ročního grafu stanice byla přidána nová třetí záložka „Srážky (kumulace)“, která zobrazuje postupný nárůst srážek od začátku roku.
- Graf srovnává dvě křivky: dlouhodobý průměrný kumulovaný srážkový úhrn a letošní kumulovaný srážkový úhrn k dnešnímu dni (rok 2026).
- Pod grafem jsou zobrazeny tři přehledné statistické boxy: dlouhodobý průměrný celkový roční srážkový úhrn, letošní kumulovaný srážkový úhrn a přesná odchylka od průměru k dnešnímu dni (včetně označení, zda jde o nadprůměr či podprůměr).
- Upřesnění názvosloví a zamezení mezipaměti:
- Tlačítko v popupu stanice na mapě bylo přejmenováno na obecnější „Roční grafy“.
- Opraven mechanismus cache-busting – verze konstanty
appVersionvapp.jsse nyní automaticky synchronizuje při spuštění skriptubump_version.py.
- Roční graf srážek pro stanice:
- Do modálního okna ročního grafu stanice byla přidána nová záložka „Srážky“, která doplňuje stávající záložku „Teplota“.
- Srážkový graf přehledně zobrazuje průběh denních úhrnů srážek během roku: historické denní minimum, historický denní průměr, historické denní maximum a hodnoty pro letošní rok (2026).
- Pod grafem jsou zobrazeny čtyři přehledné statistické boxy: historické maximum denního úhrnu (s rokem naměření), dlouhodobý průměrný roční úhrn (suma denních průměrů), letošní maximální denní úhrn a celkový letošní srážkový úhrn (suma denních úhrnů v roce 2026).
- Srážkový graf plně podporuje zvětšení (zoom) pomocí tlačítka
⛶a responzivní zobrazení. - Agregace srážek na backendu:
- Skript
update_current.pynově z opendata.chmi.cz stahuje a zpracovává historii srážkových úhrnů (SRA element z měsíčních a 10m JSONů) a ukládá denní sumy pod klíčemprecipv souborechcurrent-YYYY-MM-DD.json. - Skript
calculate_annual_stats.pystahuje historické CSV soubory srážek (dly-{wsi}-SRA.csv), počítá pro každý kalendářní den historické extrémy a průměry a ukládá je do nového klíčedaily_data_precipvannual/{wsi}.json.
- Korekce měřítka os u nulových a konstantních hodnot v grafech:
- U srážek, rychlosti a nárazů větru a délky slunečního svitu se nyní při nulových hodnotách (např. bezdeštný den) vykreslí čára grafu u spodního okraje namísto středu.
- U ostatních konstantních hodnot (např. stálá vlhkost nebo teplota) se osy přizpůsobí tak, aby čára nebyla zbytečně centrována ve virtuálním středu bez odpovídajícího kontextu, ale odpovídala reálnému rozsahu (např. 80 % vlhkost se zobrazí v 80 % výšky grafu).
- Systematické zvětšování grafů (Zoom):
- Všechny tři grafy v aplikaci (graf v popup okně stanice, roční teplotní průběh v modálu stanice a celorepublikové grafy v modálu statistik) mají nyní v pravém horním rohu tlačítko
⛶pro zvětšení (zoom). - Kliknutím na tlačítko zoom se otevře univerzální celoobrazovkové modální okno (
#chart-zoom-modal), které zkopíruje konfiguraci a datové sady ze zdrojového grafu a vykreslí jeho zvětšený klon. - Zvětšený graf má optimalizované velikosti písem a popisky pro lepší čitelnost.
- U grafu v popup okně se ve zvětšeném zobrazení automaticky zapíná osa Y pro teplotní řadu (
y-temp), což usnadňuje odečítání hodnot. - Zavření modalu je možné stiskem klávesy
Escape, kliknutím na tlačítkoXnebo kliknutím mimo samotnou kartu grafu. - Aktualizace pokynů pro AI agenty:
- Přidána nová metodika a standard pro práci s grafy a jejich zoomování do klientského skillu
styling-frontend.
- Zobrazení názvu stanice při najetí myší (tooltip):
- Každý marker na mapě má nyní při najetí myší (hover) zobrazený elegantní, přizpůsobený Leaflet tooltip.
- Tooltip přehledně zobrazuje název stanice, popřípadě i město/obec v závorce, pokud se název liší (např. „Znojmo (Kuchařovice)“).
- Vzhled tooltipu byl kompletně stylován pomocí CSS proměnných tak, aby respektoval světlý i tmavý motiv aplikace.
- Sjednocení metodiky výpočtu absolutních rekordů:
- Opraven rozdíl v počítání překonaných absolutních rekordů mezi klientskou a serverovou částí.
- V
calculate_global_stats.pyse nově počet stanic s překonaným absolutním rekordem počítá přesně podle logiky frontendu (kontrolouall_time_overridespro daný den), čímž se zohlední případ, kdy byl rekord překonán v předchozích dnech téhož roku a dnešní teplota jej již znovu nepřekonala. - Navýšena verze aplikace na
1.21.2pro cache-busting.
- Zobrazení absolutních rekordů v grafu aktivity:
- Opravena chyba, kdy se překonané absolutní rekordy nezobrazovaly v grafu z důvodu mezipaměti prohlížeče.
- Byl navýšen cache-busting a verze aplikace na
1.21.1, což vynutí okamžité stažení nového JSONu a aktualizovaného klientského skriptu.
- Celorepublikové grafy a statistiky teplotních rekordů:
- Přidán nový backend skript
scripts/calculate_global_stats.pypro agregaci celorepublikových teplotních dat za rok 2026. - Výpočet agreguje naměřená maxima všech aktivních stanic, jejich dlouhodobé historické průměry (normál) a absolutní denní rekordy. Spočítá průměrnou teplotní anomálii ČR (odchylku od normálu v °C) a počty stanic s překonaným nebo vyrovnaným denním rekordem.
- Skript podporuje plný rebuild historie (
--rebuild) a inkrementální aktualizaci. - Integrace inkrementální aktualizace do
scripts/update_current.pyna konci procesu. Globální statistiky se přepočítávají pouze pro dny, které byly aktualizovány v aktuálním hodinovém či denním běhu. - Výstupní data se ukládají do vysoce optimalizovaného statického JSON souboru
web/data/global_stats.json(cca 30 KB pro celý rok), což zamezuje lagování a zajišťuje bleskové načtení na klientovi. - Upraven frontend v
web/index.html– v záhlaví panelu přibylo tlačítko📊 Celorepublikové grafya nové modální okno s třítabovou navigací: - V modálním okně přibyl přehledný řádek ukazující data pro aktuálně aktivní den v mapě a spodní KPI boxy se statistikami celého roku (nejteplejší/nejchladnější den, den s nejvíce rekordy, průměrná anomálie roku).
- Zaručena plná mobilní responzivita a podpora světlého/tmavého motivu.
- Oprava stahování uzavřených měsíců (cesty na serveru ČHMÚ):
- Opravena chyba v
scripts/update_current.py, kdy se po uzavření měsíce (červen) nenačetla kompletní denní data, protože ČHMÚ přesouvá soubory uzavřených měsíců do příslušných dvouciferných podsložek (např./06/), zatímco aktuální měsíc je přímo v kořeni/recent/data/daily/. - Skript nyní správně stahuje data podle stavu měsíce (aktuální v kořeni, uzavřený v podsložce) s automatickým obousměrným fallbackem.
- Opravena a upřesněna dokumentace v
docs/data_sources.md.
- Automatická aktualizace a dočištění neoficiálních dat:
- Opravena chyba v
update_current.py, kdy se dny starší než 3 dny (např. 30. červen při běhu 3. července) přestaly aktualizovat a zůstávaly trvale ve stavu "částečná data" (mixed). - Skript nyní automaticky vyhledává a zařazuje do zpracování všechny dny za posledních 45 dní, které nemají příznak
"data_source": "official". - Tím dojde k automatickému stažení a nahrazení live dat oficiálními daty ČHMÚ, jakmile je ústav zpětně zveřejní.
- Barevný přechod okraje markerů (okruží bodů) podle rekordů:
- Okraj bodu na mapě (marker-pin border) již nepoužívá pouze fixní barvy (zelená/červená/černobílá), ale plynule přechází ze zelené do červené a z červené do tmavě modré (ve světlém režimu) / bílé (v tmavém režimu) v závislosti na tom, jak blízko je naměřená teplota k rekordům.
- Přechod ze zelené (
#10b981) do červené (#ef4444) začíná od hodnotydenní rekord - 5.0 °Ca dosahuje plné červené při dosažení denního rekordu. - Pokud teplota stoupá dále k absolutnímu rekordu, okraj plynule přechází do tmavě modré/černé
#0f172a(světlé téma) / bílé#ffffff(tmavé téma). - Limit rozdílu od denního rekordu, od kterého začíná barevný přechod, je definován jako konfigurovatelná konstanta
RECORD_TRANSITION_THRESHOLD = 5.0vweb/js/app.js. - Sjednocena vizuální prezentace celého okruží: pulzující i statický glow (
::afterstín) nově využívá stejné dynamické CSS proměnné jako samotný okraj markeru. Tím se odstranila chyba zobrazení dvou různých barev (např. černého vnitřního kroužku v červené záři) a bod má nyní vždy jedno barevně konzistentní pulzující okruží.
- Indikace nejvyšší teploty dne (korunka): Stanice s nejvyšší teplotou dne na mapě již nepoužívá fixní zlatavý okraj (
state-highest), ale má standardní dynamicky počítaný okraj (zelený/přechodový/červený/černý) podle své naměřené hodnoty vůči svým vlastním rekordům. Značka s korunkou👑na markeru zůstává plně zachována. Stejně tak byla legenda v levém panelu v sekci Indikace stavů stanic upravena, aby namísto zlatavého puntíku zobrazovala ikonku korunky👑.
- Oprava aktualizace nedávno uzavřených měsíců a cesty k datům:
- Opravena chyba v
update_current.py, kdy se po přechodu do nového měsíce přestala aktualizovat data za poslední dny předchozího měsíce kvůli předčasnému zmrazení cache. - Nově se pro měsíce, které skončily před méně než 5 dny, kontroluje stáří cache a případně se stahují aktualizovaná data (limity: 2 hodiny pro aktuální měsíc, 12 hodin pro nedávno uzavřený měsíc). Pro plně uzavřené měsíce (>= 5 dní) se cache považuje za finální pouze tehdy, pokud byla stažena/upravena alespoň 3 dny po skončení měsíce.
- Odstraněna nefunkční dvouciferná podsložka
{MM}/z URL pro stahování uzavřených měsíců, kterou ČHMÚ na svém serveru zrušil (všechny recentní měsíce jsou nyní dostupné přímo v kořenové složce).
- Zobrazení doplňkových meteorologických veličin a tabulkový přehled:
- Backend (
update_current.pyaget_today_10m_data) nově z 10m JSON dat ČHMÚ stahuje a zpracovává historii pro relativní vlhkost (H), tlak vzduchu (P), srážkové úhrny (SRA10M), průměrnou rychlost větru (Fprum), nárazy větru (Fmax), rosný bod (TPM) a sluneční svit (SSV10M). - Tato data jsou serializována do denních JSON/GeoJSON souborů.
- Na klientské straně byla do Leaflet popupu přidána nová záložka Ostatní, která v přehledné tabulce zobrazuje aktuální hodnoty všech dostupných veličin (včetně teploty) s příslušnými jednotkami.
- Uspořádání popup detailu do záložek (Tabs):
- Detail stanice v mapovém popupu je nyní z důvodu úspory místa na mobilních zařízeních organizován do tří interaktivních záložek: Teplota, Ostatní a Graf.
- Plně kombinovaný a přizpůsobitelný denní graf:
- Na záložce Graf se nyní dynamicky vykresluje jeden přehledný kombinovaný graf pro všechny dostupné denní průběhy veličin (teplota, vlhkost, tlak, srážky, rychlost větru, nárazy větru, rosný bod, sluneční svit).
- Y-osy jsou skryté pro úsporu místa. Přesné hodnoty s příslušnými jednotkami (
°C,%,hPa,mm,m/s,s) se zobrazují v interaktivním tooltipu při najetí na body. - V horní části grafu je zobrazena klikatelná legenda, umožňující uživatelům skrýt/zobrazit jednotlivé veličiny dle potřeby.
- Graf se inicializuje líně (lazy-load) až po prvním přepnutí na záložku Graf, což předchází chybám výpočtu rozměrů u skrytých canvasů.
- Zvětšení rozměrů popupu a grafu: Navýšena šířka popupu na 360px (responzivně max. 85vw na mobilech) a výška grafu z 115px na 320px pro lepší čitelnost.
- Oprava ořezání/zmrazení denní historie: Opravena chyba v
update_current.py, kdy se dnešní (aktuální) historie v merge logic přepisovala staršími verzemi dat z existujícího souboru. Dnešní data jsou nyní vždy kompletní až po poslední měření.
- Vizualizace stáří dat a zaostávání stanic:
- Do JSON výstupu pro dnešní den (
current-YYYY-MM-DD.json) bylo přidáno polelast_update_times časem posledního měření z 10minutového teplotního průběhu. - Na klientské straně (frontend) se nyní automaticky vypočítává lag (zpoždění) poslední aktualizace stanice vůči celkovému času generování dat či nejčerstvějšímu měření.
- Stanice se zpožděním větším než 30 minut jsou vizuálně zjemněny (fading/opacity) úměrně stáří dat (od 100% u čerstvých dat po minimum 45% u dat starších než 2 hodiny). Toto se promítá jak na mapové body (marker-pin), tak na karty stanic v postranním panelu.
- U zaostávajících stanic se na kartách v postranním panelu zobrazuje čas posledního měření (např.
(v 07:50)). - V popupu na mapě se vedle data měření maxima nově zobrazuje řádek
Poslední měření: HH:MMpro lepší diagnostiku. - Jemnější a plynulejší zoomování kolečkem myši:
- Na mapě byl zapnut zlomkový zoom (fractional zoom) s krokem
0.25(namísto původního skoku o1.0) a zpomaleno přibližování při scrollování myší (wheelPxPerZoomLevel: 150), což zabraňuje necitlivým skokům měřítka.
- Pravidla detekce zaostávajících stanic (Backend):
- Zrušeno tiché odstraňování (nullifikace) teplot a časů u stanic, které zaostávají za ostatními. Data jsou plně zachována pro zobrazení a vizuální odlišení na frontendu.
- Diagnostika zaostávajících stanic (
nullify_stale_today_stations) na backendu byla opravena tak, aby zpoždění měřila podle skutečného času posledního měření v historii teplot (temp_history) namísto času výskytu denního maxima (time), což způsobovalo falešné detekce výpadků.
- Dnešní teplotní průběh v popup okně:
- Do popup oken všech meteorologických stanic na mapě byl přidán malý interaktivní graf zobrazující teplotní průběh pro aktuální den z live 10minutových dat ČHMÚ.
- Graf využívá knihovnu Chart.js a je plně responzivní, automaticky se přizpůsobuje tmavému i světlému režimu.
- Teplotní historie se stahuje na backendu ze 10m JSON datových sad ČHMÚ, ukládá se do
current-YYYY-MM-DD.jsona její integrita je zachována i při přechodu do minulých dnů (merge stávající historie).
- Roční teplotní grafy:
- Do popup oken všech meteorologických stanic na mapě bylo přidáno tlačítko
📊 Roční teplotní průběh. - Po kliknutí se otevře moderní modální okno s interaktivním linkovým grafem (využívající knihovnu Chart.js s plným zabezpečením integrity SRI).
- Graf zobrazuje historické rozmezí teplot (stínované pásmo mezi absolutním minimem a maximem pro každý z 366 kalendářních dnů), dlouhodobý průměr (přerušovaná čára) a naměřené teploty v letošním roce 2026 (čára končící aktuálním dnem).
- Graf je plně responzivní a automaticky přizpůsobuje své barvy světlému i tmavému motivu.
- Pod grafem se zobrazuje přehledná mřížka s klíčovými statistikami stanice (historické a letošní teplotní extrémy).
- Změna licence kódů (Právní ochrana):
- Odstraněna licence MIT pro vlastní kód aplikace.
- Zdrojový kód projektu byl přelicencován pod Proprietární licenci (Všechna práva vyhrazena) pro zamezení nežádoucího komerčního kopírování.
- Patičky v postranním panelu i na statických podstránkách byly upraveny na
Kód: Všechna práva vyhrazena. Otevřená data ČHMÚ a cizí knihovny jsou nadále řádně citovány. - Automatická aktualizace ročních dat: Skript
update_current.pybyl rozšířen, aby při stahování denních teplot automaticky zrcadlil naměřená maxima do příslušných ročních souborů stanic.
- Zvýraznění nejvyšší teploty: Na stanici (stanice) s nejvyšší teplotou vybraného dne se zobrazuje zlatý okraj a ikona královské korunky (
👑) v pravém horním rohu markeru. Marker má zvýšenýz-index, takže se vykresluje nad ostatními překrývajícími se body. - Dynamické extrémy v panelu: Pod statistickou mřížku v postranním panelu byla přidána nová sekce, která přehledně zobrazuje aktuální minimum a maximum (včetně názvu stanice) na mapě. Tyto údaje se dynamicky aktualizují a reagují na textové vyhledávání a rychlé filtry.
- Barevné odlišení okrajů markerů:
- Teploty, které nepřekročily žádný rekord (normální stav), mají nově zelený okraj pro lepší konzistenci.
- Stanice bez měření (N/A) mají šedý okraj.
- Legendu postranního panelu jsme doplnili o vysvětlení všech 5 stavů.
- Pravidlo pro čištění TODO: Do
AGENTS.mdbylo přidáno provozní pravidlo ukládající AI agentům povinnost odstraňovat dokončené úkoly zTODO.mdpři zápisu změn do Changelogu.
- Logika aktualizace dat (
update_current.py): - Odstraněno automatické přeskakování uzavřených/oficiálních dnů na úrovni skriptu. Tyto dny jsou nyní řádně zpracovávány a o jejich (ne)aktualizaci rozhoduje mechanismus ETag / If-None-Match a porovnání obsahu souborů.
- Parametr
--forcebyl implementován i do vnitřních stahovacích funkcí (get_station_month_dataaget_today_10m_data), kde nyní při vynucení obchází lokální vypršení časového limitu cache.
- Přejmenování tlačítka pro zobrazení naměřených teplot: Přejmenováno tlačítko „Aktuální“ v přepínači hodnot na „Denní max.“ a jeho tooltip na „Maximum pro zvolený den“ pro zpřesnění významu zobrazené hodnoty v mapových bodech.
- Optimalizace aktualizace dat (
update_current.py): - Skript nyní porovnává nově stažená data s existujícími soubory
current-DATE.json. Pokud v nich nedošlo k žádné změně (např. protože ČHMÚ data na svém serveru neaktualizoval a vrátily se 304 HTTP odpovědi), soubor se nepřepisuje a do konzole se nevypisuje info o jeho vygenerování. - U starších dnů, které již mají kompletní úřední data (
data_source: "official"), se stahování a aktualizace dat automaticky přeskakuje. - Přidán parametr
--force(nebo-f) pro vynucení kompletního znovustažení a přepsání všech dní bez ohledu na jejich status. - Potlačeno duplicitní vypisování zpráv
[PŘEKONÁN DENNÍ/ABSOLUTNÍ REKORD]pro dny, kde již byla daná teplota zaznamenána v minulých spuštěních. - Zajištěno sloučení a uchování schopností stanic (
capabilities) z předchozích běhů u neaktualizovaných stanic.
- Rozlišení zdroje dat (live vs. úřední): Každý denní JSON soubor nyní obsahuje pole
data_source("live"/"official"/"mixed") a každá stanice polesource. Frontend zobrazí pod statistikami informační badge, pokud jsou data průběžná (live, 10m) nebo smíšená — úřední denní data badge nezobrazují (jsou standardní stav). - Zachování live dat při přechodu dne: Pokud ČHMÚ ještě nezveřejnil úřední denní data pro včerejšek, skript nyní zachová data stažená 10m endpointem z doby, kdy byl den aktuální (
source: "live"), místo přepsání nullem. Jakmile ČHMÚ data publikuje, automaticky se upgradují na"official".
- [BUGFIX] Oprava URL šablony ČHMÚ (
update_current.py): Odstraněn chybný subfolder/{mm}/z URL šablony pro měsíční JSON. Tento subfolder způsoboval, že všechny síťové dotazy na ČHMÚ pro aktuální měsíc končily chybou 404 a skript byl nucen používat starou cache z disku. - [BUGFIX] Zrušení cachování statusu 404 (
update_current.py): Odstraněna logika cachování chybových 404 stavů. Pokud ČHMÚ vrátí 404 (např. při chybě v URL nebo dočasné nedostupnosti), stav se již neukládá do.metasouborů a neblokuje budoucí stahování. - [BUGFIX] Fallback kopírující data předchozího dne (
update_current.py): Odstraněna chybná logika, která při absenci dat pro historický den D dosazovala data z nejbližšího staršího dne D-1. Toto způsobovalo, že dva po sobě jdoucí dny měly identická data stanic. ČHMÚ běžně publikuje včerejší data se zpožděním — správným chováním jenull(nyní nahrazeno mergem live dat), ne tichá kopie předchozího dne. - [BUGFIX] Cache semantic check pro aktuální měsíc (
update_current.py): Odstraněna chybná podmínkaany(d in tma_records for d in month_dates), která způsobovala, že 25 hodin stará cache měsíčního JSONu byla použita jako platná, pokud v ní existovalo alespoň jedno z požadovaných dat (typicky D-2). Věkový limit 2 hodiny se tím zcela bypasoval. Opraveno na čistě věkový check bez sémantické kontroly přítomnosti konkrétních datumů.
Tato verze přidává automatickou detekci stanic se zastaralými daty na backendu.
- Detekce zastaralých stanic (
update_current.py): Skript po stažení dat pro dnešní den vypočítá medián časů posledních měření všech aktivních stanic. Stanicím, jejichž poslední měření zaostává o více než 60 minut za tímto mediánem (tj. mají jen staré ranní hodnoty zatímco ostatní stanice již reportují odpolední data), je automaticky nastaventemp: null. Na frontendu se pak zobrazí jako stanice bez dat (hodnotaN/A) — stejně jako ostatní stanice bez měření pro daný den.
Tato verze opravuje chování mapy a centrování při výběru stanice ze seznamu, zejména na mobilních zařízeních a v režimu na stojato (portrait).
- Centrování a zobrazení popupů: Odstraněn hardcoded X-offset (180px) a předimenzovaný autoPanPadding (420px), které způsobovaly posouvání markerů a popupů mimo obrazovku na užších displejích a v zobrazení na stojato. Mapa se nyní centruje přímo na souřadnice stanice a Leaflet automaticky zajistí viditelnost celého popupu.
- Sbalení panelu na mobilu: Při výběru stanice ze seznamu na mobilních zařízeních (šířka displeje <= 600px) se postranní panel automaticky sbalí a mapa se překreslí, aby byla stanice a její popup plně viditelná na displeji.
Tato verze řeší temporalitu absolutních rekordů během roku v kalendáři a zobrazuje předchozí historický rekord v popupu stanice.
- Historické rekordy v popupu: Pokud byl na stanici během aktuálního roku (2026) překonán absolutní rekord, v popupu stanice se zobrazí jak nově platné maximum, tak pro srovnání i původní historický rekord z ČHMÚ databáze (s textem Předchozí hist. rekord).
- Temporalita all-time rekordů: Absolutní rekordy se již nepromítají v kalendářní historii zpětně (např. při pohledu na 26. 6. neuvidíte rekord padlý až 27. 6.). Změny rekordů se propisují jako overrides chronologicky přímo do denních JSON souborů
current-YYYY-MM-DD.json.
Tato verze přináší opravy chyb v porovnávání rekordů a zpřesňuje texty na podstránce O projektu.
- Striktní porovnání rekordů: Opraveno porovnání teplot na klientské straně z
>=na strictly>. Vyrovnání rekordu (např. když je dnešní teplota stejná jako absolutní rekord) se již nezobrazuje jako „překonané“. - Zachování historických rekordů: Opravena chyba, kdy skript
update_current.pypři překonání rekordu přepisoval databázistations_meta.json. Databáze rekordů nyní zůstává statická jako oficiální historie a překonání se vyhodnocuje dynamicky na klientovi, takže uživatel vidí původní překonaný rekord i aktuální naměřenou hodnotu. - Neutralizace textů: Přeformulovány pasáže o denních a absolutních rekordech na podstránce O projektu za účelem odstranění bulvárních a neprofesionálních obratů a zvýšení věcné neutrality.
Tato verze přináší kompletní optimalizaci přenosových formátů a zavedení kalendářní historie s podporou libovolného počtu dní.
- Historie z kalendáře: Uživatelé mohou nově kliknout na kalendář v postranním panelu a zobrazit si teplotní rekordy pro libovolný den z historie projektu.
- Šipky pro krokování dní: Přidána tlačítka pro posun o den zpět (◀) a den vpřed (▶) pro snadnější navigaci v kalendářní historii.
- Klávesové zkratky: Uživatelé mohou krokovat dny pomocí klávesových zkratek
Ctrl + Šipka vlevoaCtrl + Šipka vpravo. - Časy rekordů: V grafech a popupech se nově zobrazuje přesný čas překonání historických denních a absolutních rekordů, pokud byl zaznamenán.
- Dynamický výběr dne: Hardcoded přepínače byly nahrazeny dynamickými rychlými tlačítky (Dnes, Včera a předchozí den) a integrovaným HTML5 kalendářovým výběrem.
- Sloučená data a obrovská úspora přenosů: Všechny denní rekordy pro celý rok byly sloučeny přímo do
web/data/stations_meta.json. Soubory měřenícurrent-DATE.jsonbyly zjednodušeny tak, aby obsahovaly pouze aktuální naměřené teploty a časy. To snížilo velikost denních souborů měření na méně než 4KB (více než 98% úspora přenosového pásma!). - Vizualizace rekordů bez měření: Aplikace nově umožňuje vizualizovat historické denní rekordy pro jakýkoliv den v roce na mapě (v režimech "Denní rek." a "Abs. rek."), i když pro daný den neexistuje soubor s aktuálním měřením (který se zobrazí jako "N/A" pouze v režimu "Aktuální").
Tato verze přináší podrobné vysvětlení a přehledovou tabulku stanic a jejich datových možností na podstránku O projektu.
- Vysvětlení nedostupnosti časů: Na podstránku O projektu byla přidána sekce objasňující, proč u některých stanic může chybět včerejší čas maxima (rozdíl mezi typy stanic ČHMÚ).
- Generovaná tabulka stanic: Přidána přehledná tabulka všech 256 aktivních stanic v projektu, která ukazuje kód (ID) a podporu jednotlivých datových toků.
Tato verze přináší zprovoznění vizualizace dnešních (průběžných) teplotních maxim a zviditelňuje přepínací tlačítka „Včera / Dnes“.
- Zprovoznění dnešních průběžných teplot: Na mapě a v seznamu jsou nyní zobrazována aktuální denní maxima teplot (aktualizovaná každou hodinu) včetně času jejich dosažení.
- Zobrazení přepínače dní: V hlavním zobrazení aplikace v
index.htmlbyl zviditelněn přepínač „Včera / Dnes“, který umožňuje interaktivně přepínat mezi kompletními včerejšími daty a průběžnými dnešními daty.
Tato verze přináší nový filtr „Nepřekonán“ a doplňuje plnou synchronizaci filtrace s mapou.
- Filtr „Nepřekonán“: Přidáno třetí rychlé filtrační tlačítko v postranním panelu pro zobrazení pouze stanic, kde nebyly překročeny žádné rekordy (zelená barva).
- Filtrace bodů na mapě: Vyhledávání a rychlé filtry v postranním panelu nyní dynamicky filtrují a skrývají/zobrazují body přímo na mapě.
- Úprava popisků filtrů: Filtrační tlačítka byla zkrácena a zpřehledněna pro snadnější použití na mobilních zařízeních.
Tato verze výrazně optimalizuje výkon aplikace a snižuje spotřebu procesoru.
- Možnost vypnutí animací: Nový přepínač „Animovat překročení" v postranním panelu umožňuje uživateli vypnout pulzující animace mapových markerů pro úsporu výkonu a baterie.
- Výrazná optimalizace výkonu: Odstraněním náročných CSS grafických efektů (rozostření pozadí) a optimalizací překreslování mapy došlo k drastickému snížení spotřeby baterie a zrychlení aplikace.
Tato verze přináší integraci statických podstránek a zavedení šablonovacího systému pro oddělení textového obsahu od vzhledu webu.
- Nové statické podstránky: Přidány sekce „O projektu“ a „Ochrana soukromí“ s plnou podporou tmavého režimu.
- Navigace v patičce: Do patičky postranního panelu v
index.htmlbyly přidány odkazy na nově vytvořené statické podstránky.
Tato verze vizuálně zjednodušuje uživatelské rozhraní pro data zveřejňovaná jednou denně.
- Skrytí přepínače dne: Přepínač „Zobrazený den“ byl v postranním panelu skryt pro zamezení zmatení uživatelů u denně aktualizovaných dat.
Tato verze přináší optimalizaci a zrychlení stahování dat, sémantické cachování a pročištění seznamu sledovaných míst.
- Rychlejší načítání a úspora dat: Implementace sémantického cachování a podmíněných přenosů výrazně urychlila spuštění a omezila zbytečné stahování nezměněných souborů.
- Zpřehlednění seznamu stanic: Z konfigurace bylo vyřazeno 73 neaktivních stanic, které již neměří teplotu vzduchu, seznam se zredukoval na 256 aktivních teplotních stanic.
Tato verze přináší kompletní přepracování a sjednocení vizuálního stylu ovládacích prvků v postranním panelu.
- Sjednocení vzhledu a čitelnosti (A11y): Přepínače a rychlé filtry v panelu byly vizuálně sjednoceny a kontrast aktivních tlačítek byl zvýšen pro lepší čitelnost.
Tato verze přináší drobné opravy chování a stylů tlačítek rychlých filtrů.
- Drobné opravy vzhledu: Opraveno chování tlačítek rychlých filtrů (překrývání stavů při přejetí myší a nežádoucí systémové obrysy po kliknutí).
Tato verze přináší vyčištění nastavení zobrazení, sjednocení barev ohraničení karet stanic a přidání rychlých filtrů.
- Rychlé filtry seznamu: Přidána tlačítka Denní rekordy a Absolutní rekordy pro okamžité filtrování stanic v seznamu.
- Zpřehlednění barev karet: Vzhled karet v seznamu byl vizuálně sjednocen s typem překročení (červená pro denní rekord, černá/bílá pro absolutní rekord).
Tato verze přináší možnost horizontálního drag-resizingu panelu a plnou responzivitu pro menší obrazovky.
- Nastavitelná šířka panelu: Přidán resize handle na pravém okraji sidebaru umožňující měnit šířku panelu tažením.
- Responzivní zobrazení na mobilech: Na mobilních telefonech se panel chová jako celovýškový vysouvací overlay.
Tato verze přináší zobrazení času měření maxima v detailech stanic a zpřehlednění grafů.
- Čas měření maxima: V detailu stanice (popupu) se nyní zobrazuje přesný čas, kdy bylo naměřeno dnešní maximum.
- Zpřehlednění detailu stanice: Absolutně pozicované bubliny nad a pod teplotním pruhem byly nahrazeny čistým legendovým přehledem pod grafem.
Tato verze přináší opravu syntaxe a zavedení nové horizontální teplotní škály (gauge bar).
- Nový teploměr: V popup oknech stanic byl sloupcový graf nahrazen horizontální teplotní škálou od -10 °C do 45 °C s ukazateli.
Tato verze přináší změnu barevného kódování stanic na základě teploty a podmíněné pulzování markerů.
- Barevná teplotní stupnice: Kruhové značky na mapě se vybarvují podle aktuální teploty (od modré pro -10 °C po červenou pro 40 °C).
- Světelná indikace rekordů: Přidáno pulsování (červené pro denní rekord, černé/bílé pro absolutní) kolem bodů na mapě.
- Rychlé přepínání režimů: Volba zobrazení hodnot byla předělána na přímá tlačítka pro přepnutí na jedno kliknutí.
Tato verze přináší optimalizace backendového stahování dat.
Tato verze přináší kompletní rozšíření databáze na všechny dostupné stanice ČHMÚ a zobrazení verze v rozhraní.
- Rozšíření o všechny stanice: Sledování bylo rozšířeno na celkem 256 meteorologických stanic ČHMÚ.
- Zobrazení verze v UI: Do patičky ovládacího panelu byl přidán štítek s verzí aplikace.
Tato verze přináší kompletní pokrytí krajských měst a výrazné vylepšení uživatelského rozhraní.
- Krajská města: Pokrytí bylo rozšířeno na všechna krajská sídla v ČR.
- Vyhledávání stanic: Přidáno vyhledávací pole pro rychlé hledání v seznamu.
- Sbalovací sekce: Nastavení v panelu jsou nově sbalena do praktických modulů.
- Dlaždice se statistikami: Přidán přehled počtu stanic překračujících rekordy.
První stabilní verze (Proof of Concept) pro ověření funkčnosti stahování a porovnávání dat.
- Spuštění projektu: První verze vizualizace teplotních rekordů pro 4 testovací města (Praha, Brno, Ostrava, Zlín) s interaktivní mapou a přepínáním motivu vzhledu.