Základní Tlačítko (základy GRID)
Last updated
Last updated
Jakožto první příklad si vytvoříme jednoduché tlačítko, které při stisknutí pošle digitální hodnotu true
a při puštění false
začneme novým, čistým widgetem:
vybereme nebo vytvoříme novou skupinu, dle toho kam chceme widget
a stiskneme "create new grid widget"
vytvoříme widget a otevřeme ho:
Nejdříve se zamyslíme nad tím, co chceme aby náš widget dělal a co vše k tomu bude potřebovat. Naše tlačítko bude reagovat na stisk tím, že pošle signál že je stisknuto. Naše tlačítko nic nepříjímá, pouze posílá jednu boolean hodnotu.
Tudíž nám stačí jeden output, vzhledem k tomu že se jedná o boolean, jenž pouze nabývá hodnot true/false, tak nám stačí digitální výstup.
Pozn.: Z praktického hlediska vždy začínáme s psaním input/output na začátku.
protože píšeme v jazyku Typescript, začneme takto
let valueDigOutput = context.outputs.add("valDigOut","digital","value digital out");
kde první argument označuje jednoslovně jméno výstupu (pro práci v blocku), druhý typ výstupu (digital, analog, messeage), o těch si povíme později, a poslední je popisné pojmenování jenž se zobrazí v nastavení u nastavení.
let
valueDigOutput
definuje promněnou abychom mohli k daménu outputu přistupovat v kódu
Poté definujeme rozměry widgetu, definice rozměrů je povinná ve všech widgetech.
Můžeme použít
context.addSizeProfile(1,1);
kde v parametrech definujeme výšku a šířku widgetu (v pevně daných čtvercích, tudíž widgety vypadají všude stejně. Jeden čtverec má zhruba 1 cm).
Tímto definujeme velikost napevno, bez možností jí změnit.
Pokud víme, že budeme tento widget při tvoření aplikace zvětšovat, můžeme použít
context.addSizeProfiles(1,1,5,5);
pořadí parametrů jest
(
minimální výška, minimální šířka, max. výška, max. šířka
)
;
Tímto přidáme rozsah možných velikostí.
Size profilů může být přidáno vícero, bloček začne vždy od nejmenší možné velikosti. Přidáváním síze profilů přidáváme povolené (možné) rozměry widgetu.
připomínám že **Musíme přidat jakýkoliv kladný a nenulový sizeProfile každému widgetu.
Pokud kliknete na
test
, zobrazí se toto:
Protože ačkoliv máme definované velikosti,
nemáme definované jakékoliv grafické prvky
*
*
. Musíme je do Widgetu přidat.
Protože Widgety jsou od toho, abychom poskytnuli uživateli grafickou vazbu na jeho zařízení, musíme je do Widgetu přidat.
Přidáme jednoduchý button element, z WK objektů
první argument je vždy context
(
později si ukážeme, proč
)
a druhý je text v našem tlačítku.
Pokud znovu klikneme na test, nic se nestane, protože tlačítko nená ani styl a ani není přidané do Widgetu.
pro přidání tlačítka do Widgetu použijeme
prvný argument je element, který přidáváme.
Root můžeme považovat za
základní
element, který je rozšířen o několik funkcionalit a je přítomný vždy ve všech widgetech.
Klikneme na tlačítko
test.
pokud si tlačítko zvětšíme, zjistíme že je defalutně nastylované, avšak vzhedově je naprosto ošklivé.
Upravíme si tlačítko tak, aby bylo po celé šířce i výšce našeho widgetu. Připomínám, že widgetů budeme mít v aplikaci několik a jeden widget by měl zastávat jednu funkci.
Úprava stylu elementu je jednoduchá. Šířku a výšku _button _elementu upravíme snadno pomocí
`
Pokud dáme test ihned uvidíme zlepšení.
Rosáhlejší stylování popíšeme později, pro rychlé nahlédnutí ale pomůže kapitola "Styly a jejich použití".
O interaktivní stránku widgetů se nejčastěji používají listenery. Na náš _button _přidáme event listener, který bude naslouchat zda bylo na tlačítko kliknuto.
na button zavoláme listenEvent, první argument je typ akce, na kterou má kód reagovat (v tomto případě, že na element bylo zmáčknuto tlačítko myši) a další část je funkce, co se má vykonat při vyvolání. Jedná se o zkrácený javascriptový zápis
(obojí je validní) kde _callback _je pouze pomocná promněná a můžeme jí pojmenovat jak je libo.
V hranatých závorkách je kód, co se vykoná při stisknutí levého tlačítka na myši ve chvíli co je najet na button element. V kódu voláme na záčátku definovaný valueDigOutput _jakožto výstup. Protože se jedná o digitální výstup, vkládáme do .value jenom _true nebo false. v tomto případě posíláme true (logickou 1);
přidáme ještě:
Což při puštění tlačítka myši pošle na výstup false
Nyní klikneme na
test
A mužeme testovat, pokud vše proběhlo správně, do konzole se vypisuje stav valDigOut.