# Pomocníci pro data: QUERIFY, STRINGIFY, ENCRYPT, FN, CL, TRANSLATE, UNAUTHORIZED a Thelpers

> Sestavte řetězce dotazu, zapište JSON bez toho, co nechcete, zakódujte hodnotu klíčem, zkompilujte výraz, načtěte seznamy hodnot, přeložte texty, zkontrolujte oprávnění a přidejte pomocníky do šablon.

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: cs
Content-SHA256: 63e2d9235d811fdbc500ba350168e23f914dbf4b5d5568b403fcd91366d64867
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: jcomponent20@3fedd009a277f50fddc608b97afbec553b67c51b
Review: not-recorded

- `QUERIFY([url], object)` sestaví řetězec dotazu: hodnoty `null` se přeskočí, pole se spojí čárkami, data se změní na ISO texty a vše se zakóduje. S url se připojí k ní (`?` nebo `&`), i za metodou jako v `'POST /api/x'`.
- `STRINGIFY(object, [compress], [fields])` je `JSON.stringify()` se dvěma volbami: `compress: true` vynechá prázdné texty, `null` a `false` a ořezává texty; `fields` je seznam názvů, které se ponechají, funkce `(key, value)`, která rozhoduje, nebo objekt, kde `name: false` pole vynechá.
- `ENCRYPT(value, [key], [type])` změní text nebo objekt na hexadecimální text, který končí kontrolou klíče, a `DECRYPT(text, [key], [type])` vrátí hodnotu, nebo `undefined`, když klíč nebo typ nejsou stejné. **Je to obfuskace pro prohlížeč, ne bezpečnost:** kdokoli ji přečte bez klíče.
- `FN('n => n * 2')` zkompiluje výraz do funkce a zapamatuje si ji; bez `=>` je text tělem a argument se jmenuje `value`.
- `NOOP`, `EMPTYARRAY` a `EMPTYOBJECT` (zmrazené: nelze je omylem změnit), `MONTHS` a `DAYS` (názvy v angličtině) a `NOW` (`Date`, který jComponent udržuje aktuální).
- **Seznamy kódů:** `CLINIT(name, function(next) {}, [expire], [init])` zaregistruje seznam, který `function` načte (volá `next(value)`; s textem místo funkce adresa jako `GET /api/countries/`). `CL('a,b', callback)` načte seznamy, které nejsou načteny, a každý uloží do `DEF.cl.<name>` (a do stavu na této cestě); `CLRELOAD(name, callback)` je načte znovu.
- **Překlad:** `LOCALIZE(text)` načte slovník ve formátu zdrojových souborů Total.js (`key : translation`, jeden na řádek, `//` pro komentáře) a `TRANSLATE(text)` nahradí každé `@(text)` jeho překladem (stejným textem, když žádný není). Klíč je `T` plus `HASH()` textu v základu 36.
- `UNAUTHORIZED(...names)` vrátí `false`, když `window.user` má jedno z oprávnění (`user.permissions` nebo `user.roles`, seznam nebo objekt) nebo je `sa` / `su`, a jinak `true` (i když není uživatel).
- `Thelpers` (stejný objekt jako `Tangular.helpers`, a `Ta` je `Tangular`) obsahuje pomocníky šablon: přidejte jednoho přes `Thelpers.name = function(value, ...arguments)`, kde `this` je model, a použijte jej jako `{{ 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>
```
