# Pomocníci pre dáta: QUERIFY, STRINGIFY, ENCRYPT, FN, CL, TRANSLATE, UNAUTHORIZED a Thelpers

> Vytvorte reťazce dotazu, zapíšte JSON bez toho, čo nechcete, zakódujte hodnotu kľúčom, skompilujte výraz, načítajte zoznamy hodnôt, preložte texty, skontrolujte oprávnenia a pridajte pomocníkov do šablón.

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: sk
Content-SHA256: 51f2f304c6aaa14e5360b76701eafd6fe85799c7096ee2607431f7f50e3b2733
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: jcomponent20@3fedd009a277f50fddc608b97afbec553b67c51b
Review: not-recorded

- `QUERIFY([url], object)` vytvorí reťazec dotazu: hodnoty `null` sa preskočia, polia sa spoja čiarkami, dátumy sa zmenia na ISO texty a všetko sa zakóduje. S url sa pripojí k nej (`?` alebo `&`), aj za metódou ako v `'POST /api/x'`.
- `STRINGIFY(object, [compress], [fields])` je `JSON.stringify()` s dvoma možnosťami: `compress: true` vynechá prázdne texty, `null` a `false` a orezáva texty; `fields` je zoznam názvov, ktoré sa ponechajú, funkcia `(key, value)`, ktorá rozhoduje, alebo objekt, kde `name: false` pole vynechá.
- `ENCRYPT(value, [key], [type])` zmení text alebo objekt na hexadecimálny text, ktorý končí kontrolou kľúča, a `DECRYPT(text, [key], [type])` vráti hodnotu, alebo `undefined`, keď kľúč alebo typ nie sú rovnaké. **Je to obfuskácia pre prehliadač, nie bezpečnosť:** ktokoľvek ho prečíta bez kľúča.
- `FN('n => n * 2')` skompiluje výraz do funkcie a zapamätá si ju; bez `=>` je text telom a argument sa volá `value`.
- `NOOP`, `EMPTYARRAY` a `EMPTYOBJECT` (zmrazené: nemožno ich omylom zmeniť), `MONTHS` a `DAYS` (názvy v angličtine) a `NOW` (`Date`, ktorý jComponent udržiava aktuálny).
- **Zoznamy kódov:** `CLINIT(name, function(next) {}, [expire], [init])` zaregistruje zoznam, ktorý `function` načíta (volá `next(value)`; s textom namiesto funkcie adresa ako `GET /api/countries/`). `CL('a,b', callback)` načíta zoznamy, ktoré nie sú načítané, a každý uloží do `DEF.cl.<name>` (a do stavu na tejto ceste); `CLRELOAD(name, callback)` ich načíta znova.
- **Preklad:** `LOCALIZE(text)` načíta slovník vo formáte zdrojových súborov Total.js (`key : translation`, jeden na riadok, `//` pre komentáre) a `TRANSLATE(text)` nahradí každé `@(text)` jeho prekladom (rovnakým textom, keď žiadny nie je). Kľúč je `T` plus `HASH()` textu v základe 36.
- `UNAUTHORIZED(...names)` vráti `false`, keď `window.user` má jedno z oprávnení (`user.permissions` alebo `user.roles`, zoznam alebo objekt) alebo je `sa` / `su`, a inak `true` (aj keď nie je používateľ).
- `Thelpers` (rovnaký objekt ako `Tangular.helpers`, a `Ta` je `Tangular`) obsahuje pomocníkov šablón: pridajte jedného cez `Thelpers.name = function(value, ...arguments)`, kde `this` je model, a použite ho ako `{{ value | name(argument) }}`.

```html public/index.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>jComponent</title>
	<link rel="stylesheet" href="//cdn.componentator.com/spa.min@20.css" />
	<script src="//cdn.componentator.com/spa.min@20.js"></script>
</head>
<body>
	<p class="out"></p>
</body>
</html>
```
