Jak na APEX 14: Application control center aneb řízení a přístupnost aplikací.

Jak na APEX, 29. 3. 2019

Jelikož ne vždy chci, aby se uživatelé do aplikace dostali (zejména když je updatuji a podobně) je rozumné nastavit nějaký mechanizmus, kterým je dokáži ovládat.

V tomto článku jedno takové řešení popíšu. Aplikaci jsem nazval Application control center. A obsahuje pár ostatních aplikací, které jsem vytvořil ve svém workspace.

V centru dokáži nastavit to, zda je aplikace dostupná a nebo ne, a pokud uživatel přesto aplikaci otevře například externím linkem, přesměruje ho systém do control centra. Tam mohu uvést například i důvod nebo oznámení, kdy bude aplikace zase dostupná.

Dříve nebo později bude každý, kdo spravuje více aplikací, něco takového potřebovat. Tento způsob je jen ukázkou, jak na to. Kreativitě se však samozřejmě meze nekladou.

Na gifu výše jsem ukázal, co se stane, když rozkliknu aplikaci, která je dostupná (obyčejné přesměrování), a co se stane, když aplikace dostupná není.

Když uživatel použije link na aplikaci místo rozkliku v control centru, do aplikace se stejně nedostane, a bude přesměrován do centra, kde je napsán důvod, proč je aplikace nedostupná. Zobrazeno na gifu níže.

Teď změním nastavení tak, abych se dostal do aplikace. Aplikaci zpřístupním a zkusím na ni kliknout. Stejně tak bude fungovat i link.

Status jsem tam nechal jako HTML, ale ideální je si udělat list of values s defaultními stavy a případně si je později přidávat a editovat.

Každopádně bych měl asi vysvětlit, jak to celé funguje. Celá věc je postavená jen na jedné jediné tabulce, ve které je pro každou aplikaci jeden řádek. Tabulka obsahuje sloupce jako název, link na obrázek, popis atd. Nejdůležitější je sloupec availability, který určuje, zda je aplikace dostupná.

Modální okno, které otevírám ikonou nastavení je editovatelný grid vygenerovaný z této tabulky. Nic jsem nemusel programovat, všechno jsem naklikal v průvodci vytvoření modálního okna. Jediná úprava je zelené zvýraznění řádků, které obsahuje availability = 1.

Samotná strana s kartami aplikací je pak sql script, který poskládá z tabulky HTML elementy (karty). K tomu jsem připojil nějaké css a karty byly na světě. Určitě bude možné použít apexový region List nebo Card. Chtěl jsem však ukázat, že apex zvládne naprosto všechno, a pokud chci budovat nad oracle sql databází vlastní webové stranky od úplné píky, nic mi v tom nebrání.

Takhle vypadají karty staticky napsané v HTML.

A takhle vypadá script, který je generuje. Je to obyčejný select s loopem, ve kterém se parametry z tabulky doplní do karty.

Nyní ukážu, kam jsem tento SQL script vložil. A kam jsem napsal dodatečné css.

Pro zobrazování karet jsem vytvořil display only item v regionu, který je blank with atributes. Item musí byt nastavený na escape special characters NO. Css jsem usmítil do inline css v nastavení samotné page.

Modální okno s oznámením o nedostupnosti se zobrazuje díky javascript funkci, která je v html kartě na onClick. Předává se do ní ID aplikace (potřebné pro link) a jestli je available nebo ne.

Podle toho se poté otevře aplikace, nebo dojde ke kliku na skryté tlačítko, které otevře modál s oznámením.

To je z pohledu aplikace control center všechno. Zbývá už jen jedna věc. A to, proč nejde do aplikace vstoupit ani přes link. Ukážu to na příkladu z aplikace Blog.

Je to velmi jednoduché, na úvodní straně (dá se udělat i na přihlašovací straně) je branch, která se inicializuje ještě předtím, než se vůbec aplikace načte. Dojde v ní ke kontrole, jestli má otevíraná aplikace nastaveno v kontrolní tabulce available = 1. Pokud ne, dojde k přesměrování na control center. Pokud ano, nic se nestane a uživatel se dostane do aplikace.

Na tuto akci se dá nastavit i role, takže mohu omezit dostupnost jen pro určitou skupinu lidí (například pro zákazníka) a další skupiny nebudou nijak omezeny (například vývojáři).

Jen jedna tabulka, trocha html, které při použití běžných apex komponent ani není nutná a jeden řádek kódu v každé aplikaci a je to. Control center je na světě. Ještě jedna maličkost na závěr: appka samozřejmě funguje i na mobilních zařízeních (pro ukázku jsem použil simulátor iPhone7 v xcode). Funguje prostě na všem co dokáže prohlížet web 🙂

admin

Mohlo by vás také zajímat