Měsíční kalendář pomocí JavaScriptu podruhé
V minulém článku jsme si předvedli zobrazení měsíčního kalendáře pomocí JavaScriptu. Dnes doplníme tento kalendář o jednoduchý diář plánovaných akcí nebo výročí.
Na úvod je potřeba zdůraznit, že dále uvedený skript má za úkol pouze zobrazit do měsíčního kalendáře zadaná data událostí. Neřeší tedy přidávání dat do databáze – i toto by se sice dalo aspoň v omezeném rozsahu realizovat „čistým“ JavaScriptem (například pomocí cookies), osobně se však domnívám, že by šlo o řešení poněkud samoúčelné a že hlavní aplikace kalendáře bude v propojení se serverovým skriptem (ASP, PHP), který může v návaznosti na databázi řešit správu událostí, výročí, popřípadě úkolů. Na klientském (java)skriptu zůstává tedy pouze úkol rozumného zobrazení, který si nyní popíšeme.
První úkolem je vytvoření vhodné datové struktury, do níž budou data o událostech zapsána. V příkladu je použito dvourozměrné pole (respektive „pole polí“ v rozložení měsíce x dny), odpovídající jednotlivým dnům v roce. Každý prvek pole může obsahovat hodnotu null (bez události) nebo objekt Event, který v sobě ukládá data o jedné nebo více událostech připadajících na daný den. Vytvoření a inicializace zmíněného pole vypadá takto:
|
Chceme-li do pole c_event ukládat objekty typu Event, musíme vytvořit konstruktor. Ten v sobě obsahuje jednak inicializaci objektu a rovněž definici metody Add, která má za úkol přidat jednu událost do objektu Event. Pro zestručnění zápisu následného kódu konstruktor zároveň okamžitě volá metodu Add, tzn. přidává ihned první událost do objektu Event – do sebe sama. První parametr konstruktoru i metody Add, txt, popisuje přidávanou událost – např. textem „Schůze ve 12.30“, druhý určuje prioritu události číslem v rozsahu 1..3.
|
Jako třetí vytvoříme pomocnou funkci AddEvent pro přidání události do pole c_event, která kontroluje, zda příslušná buňka pole již obsahuje objekt Event či nikoliv a podle toho buď voláním konstruktoru vytváří nový objekt, nebo pouze přidává událost do stávajícího objektu:
|
Nyní může následovat úsek, v němž jsou do výše uvedených datových struktur plněna konkrétní data. Jak již bylo řečeno, tuto část JavaScriptového kódu by měl generovat serverový skript (lze rovněž s výhodou využít odkaz na „include“ .js soubor). Přidání dat v našem příkladu vypadá nějak takto:
|
Zbývající část se zabývá nutnými úpravami skriptu, uvedeného v minulém čísle, pro potřeby zobrazení právě nadefinovaných událostí. Pro úsporu místa si zde neukážeme skript celý, pouze jeho nutné úpravy.
Hlavní modifikace se týká funkce WriteCell, která zobrazuje obsah buňky tabulky (tj. jednoho dne). Přibyl jí třetí parametr, určující objekt Event s událostmi pro zobrazovaný den (může rovněž nabývat hodnoty null). Na funkci není nic složitého, jedná se opět jen o sérii volání document.write a zcela jistě bude při konkrétní aplikaci upravována s ohledem na grafiku celé stránky.
|
Další úpravy se týkají funkce WriteMonthTable,respektive všech volání WriteCell v této funkci. Pro první a poslední volání (kde se vytvářejí prázdné doplňující buňky tabulky se šedým podkladem, doplníme pouze předání třetího parametru null…
|
…pro zbývající dvě volání funkce WriteCell již jako třetí parametr předáme hodnotu konkrétní buňky pole c_event:
|
Jak celý upravený měsíční kalendář s přehledem událostí vypadá, se můžete přesvědčit zde (protože data událostí jsou navedena jen pro září, nezobrazí se v otevřeném okně kalendář pro aktuální měsíc, ale pro září aktuálního roku).
To je pro tentokrát vše, přeji vám příjemný den.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Landing page: Jak vytvořit landing page s vysokým CTR
7. května 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023 -
Moderní trendy ve webdesignu: Top trendy pro rok 2024
12. ledna 2024 -
Proč je důležité tvořit obsah na váš web?
29. srpna 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024