SmartWeb framework pre uľahčenie vývoja webových aplikácií postavených na JavaScript knižnici React poskytuje niekoľko predpripravených komponentov s napojením na systém D2000 cez D2Api. Dodávané komponenty sa nachádzajú v adresári components SmartWeb frameworku a ďalej sú logicky rozčlenené do adresárov podľa ich určenia. Niektoré komponenty sa dajú naimportovat alternatívne aj s CSS štýlmi - vtedy má názov súboru predponu "themed". "Otémované" verzie komponentov sú vlastné tie neotémované spolu s prednastavenými CSS štýlmi. Napríklad:
// otémovaná verzia komponentu alert import alert from 'framework/components/alert/themedAlert' // verzia komponentu alert bez CSS štýlov - neotémovaná, CSS je nutné ručne naimportovať import alert from 'framework/components/alert/alert'
Dialógové okná (alert)
Alert a ThemedAlert
Komponenta Alert slúži na zobrazovanie dialógových okien. Komponenta používajú ako zdrojovú knižnicu SweetAlert2 a ich rozhranie je zhodné s rozhraním knižnice SweetAlert2. Komponentá má aj naštýlovanú verziu preddefinovanými CSS štýlmi.
// otémovaná verzia komponentu alert import alert from 'framework/components/alert/themedAlert' // verzia komponentu alert bez CSS štýlov - neotémovaná, CSS je nutné ručne naimportovať import alert from 'framework/components/alert/alert' // príklad použitia alert({title: 'Úspech', text: 'Podarilo sa to!', type: 'success'})
Autentifikačné komponenty (auth)
LoginForm
Komponent LoginForm predstavuje formulár, ktorým sa užívateľ prihlasuje do webovej aplikácie resp. systému D2000. Pre použitie LoginForm komponentu je v ňom potrebné zadefinovať textové pole (html element <input>) s názvom "j_username" pre meno užívateľa, textové pole s názvom "j_password" pre heslo užívateľa a odosielacie tlačidlo (element <button type="submit">). Samotná akcia prihlásenia je implementovaná na úrovni SmartWeb-u a po úspešnej autentifikácii je užívateľ presmerovaný na stránku pages/index.html.
import React from 'react' import SimplePageContainer from 'framework/components/react/simplePageContainer' import LoginForm from 'framework/components/auth/loginForm' // Jednoduchý príklad použitia LoginForm komponentu SimplePageContainer.renderComponent(class LoginPage extends React.Component { render() { return ( <LoginForm {...this.props}> <input type="text" placeholder="Používateľské meno" required="" name="j_username"/> <input type="password" placeholder="Heslo" name="j_password"/> <button type="submit">Prihlásiť</button> </LoginForm> ); } } );
LogoutLink
Komponent LogoutLink je jednoduchým odkazom (html element <a>), na kliknutie ktorého sa zobrazí potvrdzovací dialóg odhlásenia užívateľa. Po potvrdení je užívateľ z aplikácie odhlásený a presmerovaný na úvodnú (prihlasovaciu) stránku.
import React from 'react'; import LogoutLink from "framework/components/auth/logoutLink"; // Príklad použitia komponentu LogoutLink ako jednej z položiek menu export default class PageHeader extends React.Component { render() { return ( <div className="container-fluid"> <div className="row"> <div className="col-xs-4"> <a href="#section1">Section 1</a> </div> <div className="col-xs-4"> <a href="#section2">Section 2</a> </div> <div className="col-xs-4"> <a href="#section3">Section 3</a> </div> <div className="col-xs-4"> <LogoutLink>Logout</LogoutLink> </div> </div> </div> ); } };
Základné komponenty pre komunikáciu s D2000 (d2)
DataContainer
Základný komponent SmartWeb Frameworku. Potomok komponentu SimplePageContainer, ktorý v sebe navyš zabaľuje rozhranie D2Api a automaticky nadväzuje a ukončuje pripojenie k D2000. Zároveň zabezpečuje podporu pre klávesové skratky na prepínanie režimu ladenia (CTRL+ALT+D) a rebundlovania aplikácie (CTRL+ALT+R). Do ostatných komponentov sa propaguje ako atribút s názvom d2.
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
connection | object | Obsahuje informácie o pripojení k D2000 ako názov aplikácie a meno prihláseného užívateľa. Atribút je nastavovaný automaticky. |
TclScheme
Tento komponent slúži na zobrazenie D2000 schémy pomocou technológie tenkého klienta (TCL). Schéma bude na stránku vložená ako HTML element <iframe>. Atribúty komponentu sú:
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
d2 | object | áno | Odkaz na komponent DataContainer. Odovzdáva sa z rodičovského kontajneru. | |
datasource | string | áno | Názov D2000 objektu typu schéma, ktorá má byť zobrazená. |
ValueComponent
Komponent zobrazujúci aktuálnu hodnotu D2000 objektu. Hodnota je zobrazovaná v HTML elemente <span>. Nasledujúca tabuľka popisuje atribúty komponentu:
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
d2 | object | áno | Odkaz na komponent DataContainer. Odovzdáva sa z rodičovského kontajneru. | |
datasource | string | áno | Názov D2000 objektu, ktorého hodnota má byť zobrazovaná. | |
returnFields | string[] | Zoznam atribútov hodnoty, ktoré majú byť spolu s hodnotou objektu zaslané. Možné atribúty sú popísané na stránke Serializácia dát medzi klientom a API rozhraniami. | ||
description | string | Manuálne definovaný popis objektu - má prednosť pred popisom definovaným v D2000. | ||
technicalUnits | string | Manuálne definované technické jednotku objektu - majú prednosť pred definovanými v D2000. | ||
numberFormat | string | Formát pre číselné hodnoty objektu v tvare pre knižnicu Numeral.js. Ak je definovaný, má prednosť pred formátovanou hodnotou zaslanou z D2000. | ||
dateFormat | string | Formát pre hodnoty typu absolútny čas v tvare pre knižnicu Moment.js. Ak je definovaný, má prednosť pred formátovanou hodnotou zaslanou z D2000. | ||
missingDescription | string | Popis, ktorý sa použije v prípade, že nebol definovaný manuálne, ani v D2000. | ||
missingFormattedValue | string | Formátovaná hodnota, ktorá sa použije v prípade, že objekt nemá platnú hodnotu. | ||
missingTechnicalUnits | string | Technické jednotky, ktoré sa použijú v prípade, že neboli definované manuálne, ani v D2000. | ||
className | string | Názov CSS triedy, ktorá bude aplikovaná na HTML element <span> zobrazujúci hodnotu objektu. | ||
style | object | CSS štýl, ktorý bude aplikovaný na HTML element <span> zobrazujúci hodnotu objektu. |
Komponenty dátumovníka (datetime)
BootstrapDatePicker a ThemedBootstrapDatePicker
Komponenty výberovníka dátumu. Založené sú na komponente Bootstrap Datepicker, ktorého atribúty rozširujú o nasledovné:
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
name | string | Unikátne meno pre HTML element <input>. | ||
className | string | Názov CSS triedy, ktorá bude aplikovaná na HTML element <input> zobrazujúci vybraný dátum. | ||
defaultValue | string date | Predvolená hodnota. Môže byť zadaná ako text alebo ako objekt date. | ||
disabled | bool | false | Zakáže alebo povolí modifikáciu. | |
enableKeyboardEdit | bool | true | Povolí alebo zakáže modifikáciu pomocou kláves. |
ThemedBootstrapDatePicker sa od BootstrapDatePicker odlišuje len tým, že je naštýlovaný predvolenými CSS štýlmi.
BootstrapDateRangePicker a ThemedBootstrapDateRangePicker
Komponenty BootstrapDateRangePicker a ThemedBootstrapDateRangePicker sú rozšírením dátumovníka. Zobrazujú dva dátumy, ktorými sa definuje interval. Atribúty zabaleného komponentu Bootstrap Datepicker rozširujú o nasledovné:
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
name | string | Unikátne meno pre HTML element <input>. | ||
className | string | Názov CSS triedy, ktorá bude aplikovaná na HTML element <input> zobrazujúci vybraný dátum. | ||
defaultFromValue | string date | Predvolená hodnota začiatku intervalu. Môže byť zadaná ako text alebo ako objekt date. | ||
defaultToValue | string date | Predvolená hodnota konca intervalu. Môže byť zadaná ako text alebo ako objekt date. | ||
betweenDatesText | string | "do" | Text zobrazený medzi dátumami. | |
disabled | bool | false | Zakáže alebo povolí modifikáciu. | |
enableKeyboardEdit | bool | true | Povolí alebo zakáže modifikáciu pomocou kláves. |
Komponenty zoznamov (list)
LazyList
Komponent LazyList implementuje zoznam, ktorý podporuje postupné načítavanie obsahu. Vo svojej základnej verzii zobrazuje obsah pomocou elementov <div>. Pre finálne použitie sa predpokladá preťaženie metód renderItem a render, ktoré majú na starosti vykresľovanie obsahu zoznamu. Komponent rozpoznáva nasledovné atribúty:
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
loadHandler | function | function (size, callback) { callback([]); } | Funkcia, ktorá je volaná pri požiadavke na načítanie ďalších dát. Parameter size hovorí, maximálne koľko prvkov má byť načítaných a parameter callback je funkcia, ktorou budú načítané dáta doplnené na koniec zoznamu. | |
batchSize | number | 10 | Predvolený počet prvkov, ktorý je načítavaný v jednej dávke. Odovzdáva sa ako parameter do funkcie loadHandler. |
Základné komponenty rozširujúce React (react)
ConfigurableComponent
Tento komponent slúži ako wrapper pre komponenty, ktoré nie sú natívnymi React komponentami. Vytvorením potomka tohto komponentu a preťažením metód configureComponent, render a wrappedInstance je im možné jednoducho pridať podporu zobrazovania pomocou React frameworku.
RootElement
Komponent, ktorý nahradzuje HTML element s id = "root" za zvolený React komponent. Tento komponent má len interné využitie.
SimplePageContainer
Základný kontainer web stránky. Zabezpečuje podporu pre klávesové skratky na prepínanie režimu ladenia (CTRL+ALT+D) a rebundlovania aplikácie (CTRL+ALT+R). Jeho využitie je pre React stránky, ktoré nepotrebujú pripojenie k D2000. Na tvorbu web stránok, ktoré požadujú pripojenie k D2000 slúži potomok tohto komponentu DataContainer.
Tabuľkové komponenty (table)
DataTable a ThemedDataTable
Tabuľkové komponenty DataTable a ThemedDataTable (DataTable naštýlovaná CSS štýlmi) v sebe zabaľujú knižnicu DataTables. Rozhranie tejto knižnice rozširujú o nasledovné atribúty:
Názov atribútu | Typ | Povinný | Predvolená hodnota | Popis |
---|---|---|---|---|
className | string | Názov CSS triedy, ktorá bude aplikovaná na hlavný HTML element zobrazujúci tabuľku. | ||
style | object | CSS štýl, ktorý bude aplikovaný na hlavný HTML element zobrazujúci tabuľku. | ||
width | string | Šírka tabuľky. | ||
height | string | Výška tabuľky. | ||
renderFooter | bool | false | Príznak či názvy stĺpcov budú zobrazené aj v pätičke tabuľky. |
import React from 'react' import {DataContainer} from '../custom/components' import Table from 'framework/components/table/themedDataTable' // Príklad použitia komponentu ThemedDataTable, ktorý načítavá dáta volaním RPC DataContainer.renderComponent(class IndexPage extends React.Component { async loadData(data, callback, settings) { const d2Api = this.props.d2; const response = await d2Api.rpc("E.SmartWebApiTutorial", "GetPersonData", 1000, { type: 'record', structType: 'SD.Arr_Person', returnAs: 'vysledok', value: [] }).call(); callback({ data: response.vysledok, recordsTotal: response.vysledok.length }); } render() { return ( <div> <Table className="table table-striped table-bordered dt-responsive nowrap dataTable" width="100%" ajax = {(data, callback, settings) => { this.loadData(data, callback, settings); }} columns = {[ {title: "Meno", data: "meno.value"}, {title: "Vek", data: "vek.value"} ]} select={true} ref = {(component) => { this.table = component; }}/> </div> ); } });