Kam jinam
Univerzální aplikace v TypeScript
Univerzální aplikace je generátor uživatelského rozhraní. Na základě definice stránky vytvoří stránku podle zadání.
Uživatelské rozhraní je definováno pomocí objektového modelu v json. Objektový model podporuje dědičnost, takže je možné definovat základ jednoho pohledu na objekt v samostatném abstraktním pohledu a z něj pak vytvořit několik konkrétních pohledů.
Příklad definice rozhraní
Přehled posledních stránek upravovaných v CMS na pracovním stole portálu je sezname clipů (clipList):
Jeho popis se skládá ze dvou částí - popisu seznamu:
Druhou část tvoří popis konkrétního clipu - zobrazení jedné položky:
Dědičnost
Obě ukázky v předchozím příkladu obsahují na prvním řádku informaci `"extends":"abstract",`. Ta říká, že jde o rozšíření abstraktního předka, který definuje část pohledu.
Abstraktní předem může být definován přímo daným objektem, ale může být sám zděděn z předka objektu. Společný základ pohledu tak může sloužit na desítkám míst.
Obsah a forma
Popis pohledu obsahuje zadání, co má pohled obsahovat. Neobsahuje ale žádnou informaci, jak má pohled vypadat. Framework odděluje obsah od formy - definice pohledu obsahuje zadání obsahu, ale formu definují scss / css styly. Ty aplikace načítá samostatně.
Díky oddělení obsahu a formy může aplikace nabízet různé podoby vzhledu. Nahoře je ukázka v jednom vzhledu, ale pomocí css stylů je definována i řada dalších. Např. dále je ukázka stejného pohledu v tmavém stylu:
Bezpečnost
První ukázka ukazuje, že součástí popisu přehledu stránek je i definice, jak tyto stránky vybrat. Mohlo by se zdát, že systém je nebezpečný, protože uživatelská aplikace posílá na serveru požadavky, co zobrazit. Ale není tomu tak
Popisy objektů využívá klientská aplikace i back-end server. Část zadání v bloku serverData zpracovává přímo server. Klientská aplikace do výběru dat nemůže zasáhnout. Přesněji řečeno může výběr omezovat pomocí filtrů, ale nemůže ho rozšířit.