Komponenty pro Webassembly

Aplikace

Aplikace
Aplikace je celý obsah okna/záložky v prohlížeči. Je to zároveň kontejner pro agendy.

Aplikace může být spuštěna jak ve webovém prohlížeči, tak samostatně. Říkáme tomu PWA - progresivní webová aplikace.

Aplikace se chová spíše jako desktopová aplikace než web. V horní části je menu. V dolní je status bar, kde je na levo umístěna poslední zpráva pro uživatele, na pravo je kontrolka statusu připojení/čtení ze sítě. Dole, případně napravo můžete mít panel spuštených agend, mezi kterými lze přepínat. Zbytek prostoru je volný pro agendy.

Layout je navržen s ohledem na co nejlepší využití prostoru na obrazovce, pokud tedy máte 4K rozlišení, plocha na Vašem monituru bude dobře využita. Jinak je rozlišení optimalizováno na FullHD obrazovky. Na obrázku je zmenšení šířky na 748 pixelů. Je to jen pro ukázku jak vypdá aplikace pokud se takto zůží.

Reprezentuje nový moderní web s architekturou tenký server/tlustý klient. Část operací se přesunula ze serveru na klienta výsledkem je mnohem lepší user experience. Aplikace je nejen pocitově rychlejší, ale i ergonomičtější - například byly ostraněny pagery, takže už nemusíte klikat na další stránky, ale další řádky v tabulce zobrazíte pouhým otečením kolečkem myši.

Aplikace využívá paralelního zpracování, přidaného do prohlížečů okolo roku 2019. Takže zatímco uživatel aplikace klikl na nějaký ovládací prvek a probíhá dotaz na server, uživatel může stále s aplikací normálně pracovat. Má tak ještě lepší user experience, že odpovídá naměřenému času získání odpovědi.

Agenda

Agenda
Agenda je jedno okno aplikace. Může, ale nemusí to být kontejner pro tabulky, ke kterým přistupujete přes karty. Okno agendy může být zvětšováno, zmenšováno, posouváno po obrazovce, maximalizováno a minimalizováno.

Agendu spustíte nějakou klávesou nebo jednoduše vybráním z menu.

Tabulka

Tabulka
Tabulka je kontejner pro sloupce. Sloupce mohou být buď nativní, tedy skutečně uložené v databázi nebo syntetické, tzn. vznikají syntézou nativních až u klienta. Alternativně mohou být vypočtené na straně serveru nebo uložené v dočasných databázových tabulkách.

V záhlaví tabulky jsou filtry. Jsou to schválně jen vstupní pole, protože je vidět co se filtruje a zabírají jen málo místa na obrazovce. Když nad něj najedete myší, uvidíte ho v plné velikosti. Do fitrovacího pole můžete zadat nejen vzorek toho co se má hledat, ale i celý výraz. Může tak hledat nejden "sova", jako na obrázku [obr. 3] výše, když hledáme pána který se jmenuje Sova, nebo "2", pokud hledáme záznam číslo 2 [obr. 2] ale i takové výrazy jako ">=1000 a <=1008" [obr. 4]pokud nás zajímá jen určitý rozsah číselných hodnot.

Samozřejmě, že syntaxi nemůžete umět hned. Proto můžete kliknout na filter pravým tlačítekm a uvidíte dialog, kde může tento složitější výraz "vyklikat" [obr. 5]. Na obrázku výše je třeba možnost zadání jedné z číselníkových hodnot. Pokud je ten číselník většího rozsahu, nabízí se použít místo pole zaškrtávacích políček, jak ji vidět na obrázku [obr. 6].

Každý záznam v tabulce má genericky vytvořenou historii [obr. 7]. I celá tabulka má historii, dostaneme se k ní přes záložku "flashback". Jediné, čím se opticky liší od "živé" tabulky je pás tlačítek, pomocí kterých můžete skákat po časech, kdy se udála nějaká změna. Pokud Vás zajímá stav tabulky v konkrétním čase, jednoduše zadáte datum a čas do vstupního pole uprostřed toho pásu.

Sloupce v tabulce můžete libovolně přidávat, ubírat, přesouvat a měnit jim šířku.

Sloupec

Sloupec
Každý sloupec má nějaký typ, který definuje jak jsou ukládána data do databáze, jakým způsobem se na ně díváme, jaký mají ovládací prvek ve formuláři, jaký parser (parsování = zpracování textu) je použit při filtrování a nakonec jaký dialog je použit při zadávání do filtru, pokud nehceme použít parser (kdy zadáváme přímo do vstupního pole).

Typy mohou být i nulovatelné, to znamená, že nám říkají , že informace není zadána. Možná to zní trošku kostrbatě, ale přestavte si že chce znát věk osoby (celé číslo) a nebo chceme jasně naznačit, že dotyčná osoba nám ho nezadala (zadala NULL).

  • int - celé číslo. Rozsah od -2 147 483 648 do 2 147 483 647. Může být nulovatelný. [obr. 1]
  • natural - přirozené číslo. Rozsah od 0 do 4 294 967 295. Může být nulovatelné.
  • long - velké celé číslo. Rozsah od -263 až 263-1. Může být nulovatelný.
  • natural long - velké přirozené číslo. Rozsah od 0 až 264-1. Může být nulovatelný.
  • string - text. Může být nulovatelný. [obr. 2]
  • float - reálné číslo. Může být nulovatelné.
  • double - reálné číslo s rozšířenou přesností. Může být nulovatelné.
  • bool - binární hodnota s možnostmi ano/ne. Může být nulovatelná. [obr. 3]
  • enum - hodnota z číselníku. Může být nulovatelná. [obr. 4]
  • big enum - hodnota z číselníku. Při zádávání je použit našeptávač, místo výběru se seznamu. Může být nulovatelná. [obr. 5]
  • address - adresa. V databázi je uložena jako text, ale na frontendu se s ná pracuje jako se strukturou. Má položky jako ulice, město, čp, atd... Může být nulovatelná.
  • name - jméno. V databázi je uložena jako 4 pole: Jméno(text), příjmení(text), titul před(číselník) a tiutul za(čísleník). Filtru může vyhovovat více osob, pouku mají stejné jméno. Může být nulovatelná. Je to syntetický sloupec. [obr. 6]
  • name enum - jméno. V databázi je uloženo jako číselníková hodnota do tabulky která má jméno, příjmení, titul před a titul za. Označuje jednu konkrétní osobu. Může být nulovatelná.
  • date - datum. Může být nulovatelné.
  • time - čas. Může být nulovatelný.
  • datetime - časový okamžik. Může být nulovatelný.
  • datetimeus - časový okamžik s rolišením na mikrosekundy. Může být nulovatelný.
  • authortag - značka autora. Obsahuje datum a čas s rozlišením na mikrosekundy a id autora. Toto je v každé tabulce, a proto je možná historie i flashback. Může být nulovatelná. Je to Syntetický sloupec.
  • enum map - seznam číselníkových hodnot, kde záleží na pořadí. Tato množina nemůže být nulovatelná, ale může být prázdná
  • integer vector - celočíselná množina. V databázi zaleží na pořadí, na klientovi se to zatím používá spíše jako množina. Tato množina nemůže být nulovatelná, ale může být prázdná.

Formulář

Formulář
Ke každé tabulce patří formulář, který reprezentuje jeden řádek tabulky. [obr. 1]. Tento klasický je v ceně a není účtován.

Formulářové pole je "živá" tabulka. Každý řádek je vlastně malým formulářem. Může tedy vypadat různě, třeba jako zaškrtávací seznam [obr. 4][obr. 5], jako seznam kategorií[obr. 3], nebo třeba jako "textový" editor, kde na obrázku [obr. 2] je časový snímek pracovního dne. Narozdíl od textového editoru, nutí uživatele aby rozdělili den na úseky a zadali jim dobu trvání.