Rovnice

Prepis videa

Ďalej tu máme rovnice. Tie rovnice sa zase v rámci zmien, ktoré plánujeme robiť, presunú priamo pod atribúty a bude možné vlastne každému atribútu priamo vnútri správy toho atribútu definovať rovnicu, pretože oni sú celkom logicky priamo naviazané na atribút. Cesta k počiatočnej premenej, to znamená, že to je vlastne ten atribút, na ktorý je nagázaná rovnica, ktorý sa teda doplňa tou rovnicou.

V týchto rovniciach je to veľmi silná zbraň. Tie rovnice dokážu robiť jednak základné výpočty matematické, teda operácie, ale dokážu robiť aj nejaké automatické doplňovanie, a teda predvyplňanie atribútov z iných atribútov. Čo by som tu vysvetlil, tak je vlastne dobré cesta k premenej, to je vlastne výber z tých premených, tých našich atribútov.

Keď je nejaká skupina, napríklad tu som klikol na skupinu zleva, tak sa mi zobrazia tie konkrétne premene. Viem tu pracovať aj s celým týmto objektom, s celou skupinou zleva. Toto tu je vlastne Javascriptový editor, v ktorom viem pristupovať aj ku konkrétnym atribútom, ktoré mám v skupine.

Takže tak, názov premenej to je jasné, s tým sa potom pracuje ďalej v rámci rovnice. Potom je tu možnosť Závislá premena, to znamená, ak by sa mi zmenila táto hodnota tejto premenej, to znamená, ja neviem, z ktorej sa mi stane 5, tak automaticky sa mi vykoná táto rovnica, ktorá mi vlastne upraví ten atribút, na ktorý je tá rovnica naviazaná. Aktívne Závislá premena to je vec, ktorá sa bude rušiť, takže to vysvetľovať nebudem, poručam nepoužívať.

A tu na té dati rovnice to je veľmi silná zbraň, v ktorej sa dá písať rôzny Javascript. Ukážem napríklad niečo takéto. To je klasická zlova, ktorú som nechcel.

Sumárny výpočet základu DPH. Proste dá sa tu napísať rovnica akákoľvek. Dá sa to aj vyjadriatkovo, táto zrovna nie je podsadzovaná, takže by som podsadzoval.

A dá sa tu s tým robiť fakt, že čokoľvek. Spájanie stringov, výpočet, čokoľvek, čo nám Javascript dovoluje a čo chceme robiť na klientkej strane, to znamená u klienta, aby to bežalo. Pretože hlavný rozdiel medzi udolosťami a rovnicami je, že udolosti sa vykonávajú na serveri, rovnice sa vykonávajú na klientovi na frontende.

A ešte do tohto videa dám aj pár príkladov nejakých pokročilých rovnic. To znamená základné podmienky, klasická Javascript, spájanie čísla a stringu, to som hovoril, že tiež sa dá rovnici spraviť. Prípadne potom súčet položieť po faktúre, to som ukazoval vlastne, kombinácia dvoch stringov.

Prípadne potom výpočet najvyššej hodnoty alebo nejakých iných matematických operácií. Prípadne potom zmena datumu, to ešte upozorním, že keď sa chcem dostať k hodnote datumu na dni, tak si musím dať milisekundy krát sekundy krát minúty krát hodiny a dostanem sa vlastne k dňom. Takže tak.

Prípadne potom taký komplikovanejší prípad, že pre kopírovanie hodnot z obrateného prepojenia do opakovateľnej skupiny sa dá tiež robiť formou rovnice, aj keď to by som radšej reješil cez udavosť, ale dá sa na to spraviť aj rovnica, ktorá vlastne z obrateného prepojenia dotiahuje záznamy do skupiny. Tých príkladov postupne môže pribúdať fantazia sa medzi nekladou, takže budem veľmi rád, keď sa aj vy podelíte s novými divokými príkladmi, ktoré sa vám podarili v rámci rovnic urobiť.

Príklady pokročilých rovníc

Písanie základnej podmienky

sDph ? zaklad + dph : zaklad

Spájanie čísla a stringu

(() => (isNaN(Number(suma)) ? '0.00' : Number(suma).toFixed(2)) + " " + mena)()

Súčet položiek vo faktúre

SUM(COMBINE((p, c, z, f) =>p * c + z * f, pocet, cena, zlava, fixnaZlavaSpolu)) * (zlavaNaDoklad * (percentualnaZlava / 100 + 1) + 1 - zlavaNaDoklad)

Kombinácia 2 stringov

(() => {      let adresa = ulica + " " + cislo;      return adresa;  })()

Výpočet najvyššej hodnoty (max / min / iné matematické operácie)

(() => amount && amount.length ? Math.max(...amount) : 0)()

Zmena dátumu

dodanie + splatnost * 60 * 60 * 24 * 1000

Prekopírovanie hodnôt z obráteného prepojenia do opakovateľnej skupiny

(() => {   if (op.length > 0) {     return op.map((item) => ({       _id: item._id,       _name: item._name,       cena: item.vyslednaCenaSpoluSCnDs,     }));   } else {     return [];   } })();

Substitúcia

Pre používateľa, alebo aj pre udalosti, je možné mať číselník šablón pre substitúciu. Nemusí sa teda vkladať do záznamu ale preberá sa z číselníka a môže sa aj dynamicky meniť (napr. podľa stavu – na každom zázname číselníka môže byť iná šablóna podľa potreby)

Výber 1 záznamu z opakovateľnej skupiny

Výber záznamov v tabuľke z obráteného prepojenia

Postup pre výber zaznamov v tabulke z obráteneho prepojenia:

  • Pozri si video nižšie ⬇️
  •  Naštuduj si priložené materiály v podkladoch
  • Prikladám vzorec z videa:
(() => {
  const updateDefaultValue = op.map((item1) => {
    let matchingItem = defaultValue.find((item2) => item2._id === item1._id);
    if (matchingItem) {
      return { ...item1, vybratPolozku: matchingItem.vybratPolozku };
    }
    return item1;
  });
  return updateDefaultValue;
})();

Obsah