Kedvcsináló bevezető helyett most mindenkinek elveszem a kedvét attól, hogy ilyen fába vágja fejszéjét.
Az idő múlásával összefüggésben keletkező, dátum típusú adatokkal dolgozni a legkellemetlenebb, legfárasztóbb programozói munkák közé tartozik annak ellenére, hogy a széles körben használt programozási nyelvek remek függvényeket/metódusokat kínálnak az ilyen feladatok hatékony ellátásához. Szerény képességekkel, korlátok közé szorult és földhözragadt gondolkodásmóddal nehezen birkózok meg a percek, órák, napok, hetek, hónapok és évek változatos méretű egységeivel, a hónapok eltérő hosszával, szökőmásodpercekkel és -évekkel (másnak is beletört már ebbe a bicskája). Tovább fokozzák a kínos helyzetet az időzónák, valamint a téli és nyári időszámításból fakadó összevisszaság. Amikor már nagyjából összeszedem magam, és azt hiszem, hogy uralom a helyzetet, akkor meg jönnek a változó dátumra eső ünnepek, mint a húsvét és a pünkösd. Nem lehet ezek fölött elegánsan elsiklani a naptár kirajzolásának abban a fázisában, amikor a piros betűs ünnepek jelölésénél tartok.
Tervezés, adatszerkezetek, algoritmusok, és a működés logikája elkészült – eddig tartott a sétagalopp. Ami igazán embert próbáló, az csak ezután következik: a feldolgozott adatok tálalása. Ezek rendezett, áttekinthető megjelenítése, továbbá egy ergonomikus, nem túlbonyolított "user interface" megkomponálása a legkeményebb dió.

Nincs ínyedre az egyhangúság? Akkor az eseménynaptár szolgáltatás megnyeri tetszésedet, mert több módon is előhívhatod, kezdve az ebben a mondatban látható hivatkozással. Különben a kényelmi funkciók között szerepel, és az oldaltérkép lehetőségei között érhető el, amit például a nyitóoldalon, az eseménynaptárnál és a jelzések haszna című fejezetben is megtalálsz, de megjelenik a hiba esetén feltűnő 404-es oldalon is.
Az eseménynaptár többféle üzemmódot kínálva dolgozza fel, és változtatható megjelenéssel mutatja az adatokat. Azoknál a történeteknél szolgáltat érdemleges eredményt, amiknél a leírt folyamatok résztevékenységeit alcímek alá szerveztem. Jellemzően ilyenek a borkészítésről és az építkezésről szóló, hosszan elhúzódó, sokrétű cselekményt mesélő történetek. Ezeknél a hamburger menüben feltűnik a naptár ikon, aminek révén a funkció előhívható. Innen nem hiányozna, de a példa kedvéért alcímeket iktattam a szövegbe.

A példa kedvéért

Az alcímekkel egyrészt működik a lapon belüli ugrás, másrészt ezeket érzékelve elhelyezem a naptár ikont a történet hamburger menüjében, amivel olvasás közben az eseménynaptár kényelmesen elérhetővé válik. Az év összes napja megjelenik, fölötte egyszerű kezelőfelület teszi irányíthatóvá a naptáron gyakorolható műveleteket. Bal felső sarokban a hamburger, mellette az oldaltérkép legördíthető választéka. Alatta a nyitóoldalhoz vezető házikó. Mellette annak a történetnek vagy helyzetnek a megnevezése, amit az eseménynaptár ábrázol. A naptár feletti sorban a [?] gomb a most olvasott, az eseménynaptár működését magyarázó weboldalt jeleníti meg. A jobbra látható évszámnál van lehetőség évet választani, amennyiben a feldolgozott dátumok több éves időszakot fednek le. Kapcsolható a fejléc megjelenítése a kényelmesebb, gyorsabb, pontosabb tájékozódás érdekében, ha szükséged van a hónapok és a hét napjainak megnevezésére.

Szokványos naptárábrázolásból láttam már eleget – sablonosak, helypazarlók. Most ezeknél tömörebb változatot képzeltem el, aminek megvalósítását bonyolítja a használatos eszközök kijelzőinek eltérő tájolása. A megjelenés fajtája elsődlegesen a kijelző szélességétől függ. Ha keskenyebb 1300 képpontnál, akkor az álló változatot mutatom, különben a fekvőt. Függhet a megjelenés tájolása a HTML file-ban elhelyezett <object name="naptar"></object> sor attribútumaitól is, így a tajol="allo" szerepeltetésével a széles kijelzőn automatikusan fekvő tájolású megjelenítés felülírható. Akármilyen tájolásban jelenik meg a naptár, ezt kedvedre váltogathatod a [▭] és [▯] gombokkal.

A speciális naptár háromféle üzemmódban szolgáltat adatokat:

  1. A baloldali naptár ikonról indítva csak a történet alcímeihez tartozó napokat jelöli meg.

  2. Az oldaltérképről indítva a webhely összes történetének első közzétételi dátumai szerepelnek a naptárban.

  3. Magából az eseménynaptárból indítható egy olyan adatfeldolgozás, ami a webhelyen tárolt összes történet szövegéből gyűjti ki az alcímeket, és ezek dátumai lesznek bejelölve a naptárban (több évet felölelő időszak, sok eseménnyel). Ez a folyamat a [𝜮] gombbal indítható, és a webhely jelenlegi mérete mellett néhány száz KiB adatforgalommal, és néhány másodpercnyi várakozással jár.
    Frissítés: időközben elkészült az alcimek.json file-ból dolgozó fejlesztés, ami minimális adatforgalommal és gyakorlatilag várakozási idő nélkül működik.

A naptárban megjelölt napok azért különböznek a többitől, mert ezeken a napokon történt valami, és ezek a történetek a megjelölt napokra nyomva előcsalogathatók. Elsőre az jelenik meg, hogy a kiválasztott napon mi minden történt (akár több témában is), aztán ebből választva lehet továbblépni a történethez vagy a történeten belüli alcímhez. Ha egy történet nem tartalmaz eseményekhez kapcsolódó alcímeket, akkor nyilván az ezekhez rendelhető dátumok is hiányoznak. Ilyen esetben a történetek az első közzététel dátumával kerülnek be az eseménynaptárba. Akkor áll elő ilyen helyzet, ha nem egy időponthoz vagy időszakhoz köthető történést mesélek, hanem valami furcsa gondolatomat a világról – ilyen esetben a közzététel időpontja szolgál támpontul.

Az egész munkát végigkísérte a weboldalakon olvasható írásokhoz köthető dátumok kettősségéből fakadó gyötrelem. Sima ügynek számít a történeti hűséggel dátumozható cselekmények kezelése, de az időponthoz szorosan nem köthető gondolatok, vélemények, ismertetők szövegénél csak a megjelenés dátumát rögzíthetem pontosan. Ha nincs történés, akkor dátum sincs, ellenben az eseményeknél ez az adat jól megfogható, ráadásul a történeteket mesélő írásokhoz második dátumként kapcsolódik a megjelenés időpontja is.
Hogyan lehet ezeket az adatokat kavarodás nélkül kezelni, megmutatni?
Ennek a fejezetnek a fogalmazásába május 26-án kezdtem bele. Ekkor készült el a vázlat és a példaként szerepeltetett alcímek sora, amik mellett ez a dátum szerepel. A baloldali menüből hívható eseménynaptár ebben az üzemmódban az alcímek dátumai alapján jelöli meg az érintett napot (vagy napokat), ami jelen esetben május 26. Ez egy egyszerű eset, de több bejelölt napot láthatsz a naptárban, több éven keresztül, ha megnézed valamelyik bor készítésének eseménynaptárát (például a 2020-as cabernet sauvignon).

Aztán a szöveg bővült, kikerekedett, majd 28-án közzétettem a webhelyen. Ez az esemény is látható a 2023-as évben, amennyiben az oldaltérképről indítod, mert ebben az üzemmódban az első közzétételek dátumait mutatja a naptár (itt is hozzáférhetsz).

A weboldalakon olvasható történetek nem lettek tanulságosabbak, sem szórakoztatóbbak. Értelmetlenül dolgoztam volna ezen a kiegészítésen? Döntse el mindenki saját világlátása szerint. Mindenesetre az eseménynaptárból ránézésre és azonnal kiderül, hogy mely napokon történt valami érdekesség, aminek leírására időt szántam. Ehhez képest egy listát végignézni, az abban feltűnő dátumokat elolvasni és kiértékelni fájdalmasan fárasztó.

Nem vitás, valóban fárasztó egy száraz adatsor kiértékelése. Ennek ellenére, és az előző szakaszban megfogalmazott véleményemmel szembe menve, mégis legyártottam egy újabb kényelmi funkciót, ami pont egy ilyen listát szolgáltat. Napló névre hallgat, és az oldaltérkép elején érhető el. Nem témák szerinti csoportosításban sorolja fel a történetek címeit, hanem a történésekhez kapcsolódó dátumok szerint rendezve.

Jól sikerült a szolgáltatás kivitelezése. Minden vágyam teljesült, ami ritka a mai világban, ahol nap mint nap szembesülök ótvar, kritikán aluli, esetleg elrontott, néha egyenesen működésképtelen megoldásokkal. Jó ideje nem hagyom magam átverni az építőipari kivitelezések alkalmával sem – szinte minden munkát magam végzek. Az IT megoldások terén hasonló a helyzet, csupán a "szinte" hiányzik a kijelentésből. Néhány éve a kerti munkákra és fejlesztésekre is kiterjesztettem az önerős kivitelezést, amivel a paraszti kultúrának egy vékony szeletét honosítom meg a hegyoldalban. Saját bor gyártását is előnyben részesítem a boltban kapható termékek megvásárlásával szemben, saját villanyt is termelek – jó úton járok az önellátás felé.

A házilagos villanytermelés manapság nem egyszerű feladat Magyarországon, amit nem a műszaki megoldás bonyolultsága okoz. A technológiából fakadó szabályozásával semmi gond, mert azt az áram tulajdonságai határozzák meg. Viszont az a része, ahogy politikusok bumfordian hozott törvényekkel, rendeletekkel igyekeznek palástolni egyéni érdekeik érvényesítését, az ellentmond nem csak a közérdeknek, de az észszerűségnek is. A napelemes villanytermelés jelenlegi kerékkötő szabályozása tragikusan kártékony. Ennek az ügynek a helyretétele önmagában megérne egy forradalmat, de legalább egy jól sikerült országgyűlési választást.