Funkce
Řetězcové funkce
Při práci s řetězci ve výrazech je důležité používat jednoduché uvozovky (’’) pro uzavření literálních řetězců. Výjimka nastane, když chcete do literálního řetězce zahrnout jednoduché uvozovky. V takovém případě můžete použít dvojité uvozovky ("") k uzavření celého řetězce.
Příklad:
- Správně: if(${yesno} = 1, “řetězec s ‘jednoduchými uvozovkami’ v něm”, “bez jednoduchých uvozovek”)
- Nesprávně: if(${yesno} = 1, ‘řetězec s ‘jednoduchými uvozovkami’ v něm’, ‘bez jednoduchých uvozovek’)
Ohledně typografických uvozovek je důležité si uvědomit jejich přítomnost, protože mohou způsobit problémy ve výrazech. Mnohé editory formátovaného textu automaticky převádějí rovné uvozovky na typografické, což může způsobit syntaktické chyby nebo neočekávané chování.
rtSurvey podporuje různé funkce, včetně:
string(field): Převede pole na řetězec.- Příklad:
string(34.8)bude převedeno na'34.8'.
- Příklad:
string-length(field): Vrátí délku řetězcového pole.- Příklad:
string-length(.) > 3 and string-length(.) < 10lze použít pro zajištění, že aktuální pole má 3 až 10 znaků.
- Příklad:
substr(fieldorstring, startindex, endindex): Vrátí podřetězec začínající nastartindexa končící těsně předendindex. Indexy začínají od 0 pro první znak v řetězci.- Příklad:
substr(${phone}, 0, 3)vrátí první tři číslice telefonního čísla.
- Příklad:
concat(a, b, c, ...): Zřetězí pole (a/nebo řetězce) dohromady.- Příklad:
concat(${firstname}, ' ', ${lastname})vrátí celé jméno kombinací hodnot v políchfirstnamealastname.
- Příklad:
linebreak(): Vrátí znak zalomení řádku.- Příklad:
concat(${field1}, linebreak(), ${field2}, linebreak(), ${field3})vrátí seznam tří hodnot polí se zalomením řádků mezi nimi.
- Příklad:
lower(): Převede řetězec na malá písmena.- Příklad:
lower('Název ulice')vrátí “název ulice”.
- Příklad:
upper(): Převede řetězec na velká písmena.- Příklad:
upper('Název ulice')vrátí “NÁZEV ULICE”.
- Příklad:
Funkce pro select_one a select_multiple
count-selected(field): Vrátí počet vybraných položek v poli select_multiple.- Příklad:
count-selected(.) = 3lze použít jako výraz omezení pro zajištění výběru přesně tří možností.
- Příklad:
selected(field, value): Vrátí true nebo false v závislosti na tom, zda byla zadaná hodnota vybrána v poli select_one nebo select_multiple.- Příklad:
selected(${color}, 'Blue')lze použít jako výraz relevance pro zobrazení skupiny nebo pole pouze tehdy, pokud respondent vybral „Modrou" jako svou oblíbenou barvu.
- Příklad:
selected-at(field, number): Vrátí vybranou položku na zadané pozici v poli select_multiple. Pokud je předáno číslo 0, vrátí první vybranou položku; číslo 1 vrátí druhou atd.choice-label(field, value): Vrátí popisek pro volbu pole select_one nebo select_multiple, jak je definována v listu choices.
Funkce pro opakující se pole
join(string, repeatedfield): Pro pole uvnitř skupiny opakování generuje řetězcem oddělený seznam hodnot.- Příklad:
join(', ', ${member_name})vygeneruje jeden čárkami oddělený seznam ze všech zadaných jmen.
- Příklad:
join-if(string, repeatedfield, expression): Funguje stejně jakojoin(), ale kontroluje každou instanci pomocí dodaného výrazu.count(repeatgroup): Vrátí aktuální počet opakování skupiny opakování.count-if(repeatgroup, expression): Funguje stejně jakocount(), ale kontroluje každou instanci pomocí dodaného výrazu.sum(repeatedfield): Pro pole uvnitř skupiny opakování vypočítá součet všech hodnot.sum-if(repeatedfield, expression): Funguje stejně jakosum(), ale kontroluje každou instanci pomocí dodaného výrazu.min(repeatedfield): Pro pole uvnitř skupiny opakování vypočítá minimum ze všech hodnot.max(repeatedfield): Pro pole uvnitř skupiny opakování vypočítá maximum ze všech hodnot.index(): Volaná uvnitř skupiny opakování vrátí číslo indexu pro aktuální skupinu nebo instanci.indexed-repeat(repeatedfield, repeatgroup, index): Odkazuje na pole nebo skupinu uvnitř skupiny opakování zvenku dané skupiny opakování.rank-index(index, repeatedfield): Tato funkce vypočítá ordinální pořadí zadané instance opakovaného pole pro použití mimo skupinu opakování.rank-index-if(index, repeatedfield, expression): Tato funkce funguje podobně jakorank-index(), ale kontroluje každou instanci pomocí dodaného výrazu.
Číselné funkce
| Operátor | Operace | Příklad | Příklad výsledku |
|---|---|---|---|
+ | Sčítání | 1 + 1 | 2 |
- | Odčítání | 3 - 2 | 1 |
* | Násobení | 3 * 2 | 6 |
div | Dělení | 10 div 2 | 5 |
mod | Modulo | 9 mod 2 | 1 |
rtSurvey podporuje číselné funkce, včetně:
number(field): Převede hodnotu pole na číslo.int(field): Převede hodnotu pole na celé číslo.min(field1, ..., fieldx): Vrátí minimální hodnotu mezi předanými poli.max(field1, ..., fieldx): Vrátí maximální hodnotu mezi předanými poli.format-number(field): Formátuje hodnotu celého čísla nebo desetinného čísla podle nastavení národního prostředí uživatele.round(field, digits): Zaokrouhlí číselnou hodnotu pole na zadaný počet desetinných míst.abs(number): Vrátí absolutní hodnotu čísla.pow(base, exponent): Vrátí hodnotu prvního parametru umocněného na druhou mocninu druhého parametru.random(): Vrátí náhodné desetinné číslo mezi 0.0 (včetně) a 1.0 (bez).
Funkce data a času
Hodnoty data v rtSurvey jsou ukládány jako řetězce ve formátu YYYY-MM-DD. Hodnoty datetime jsou ukládány jako řetězce ISO 8601 (YYYY-MM-DDTHH:MM:SS). Použijte decimal-date-time() pro převod na číslo pro aritmetiku (např. výpočet dob trvání).
today(): Vrátí dnešní datum jako řetězec ve formátuYYYY-MM-DD. Vyhodnotí se jednou při otevření formuláře.now(): Vrátí aktuální datum a čas jako řetězec ISO 8601. Vyhodnocuje se pokaždé, když je výraz vypočítán.date(value): Převede hodnotu (řetězec nebo číslo) na řetězec data.date-time(value): Převede hodnotu na řetězec datetime.decimal-date-time(value): Převede řetězec data nebo datetime na desetinné číslo představující milisekundy od epochy Unix dělené 86400000.- Příklad: Trvání ve dnech mezi dvěma daty:
decimal-date-time(${end_date}) - decimal-date-time(${start_date})
- Příklad: Trvání ve dnech mezi dvěma daty:
format-date(date, format): Formátuje hodnotu data pomocí formátovacího řetězce.- Formátovací tokeny:
%Y(4místný rok),%m(měsíc 01–12),%d(den 01–31) - Příklad:
format-date(today(), '%d/%m/%Y')→'15/03/2024'
- Formátovací tokeny:
format-date-time(datetime, format): Formátuje hodnotu datetime pomocí formátovacího řetězce.- Příklad:
format-date-time(now(), '%d/%m/%Y %H:%M')→'15/03/2024 14:32'
- Příklad:
Logické funkce
boolean(value): Převede libovolnou hodnotu na boolean.boolean-from-string(string): Vrátítrue, pokud je řetězec'1'nebo'true'.true(): Vrátí logickou hodnotutrue.false(): Vrátí logickou hodnotufalse.not(expression): Vrátí logickou negaci výrazu.
Geo funkce
area(geoshape_value): Vypočítá plochu v čtverečních metrech uzavřenou hodnotou geoshape (polygon).- Příklad:
area(${field_boundary})— vypočítá plochu průzkumného pole v m².
- Příklad:
distance(coordinates): Vypočítá celkovou délku cesty v metrech geotrace (linie) nebo vzdálenost mezi dvěma geopoint.
Validační funkce
regex(value, pattern): Vrátítrue, pokudvalueodpovídá regulárnímu výrazupattern.- Příklad:
regex(., '^[0-9]{10}$')— ověří 10místné číslo.
- Příklad:
checklist(min, max, v1, v2, ...): Vyhodnotí seznam boolean výrazů a vrátítrue, pokud počet hodnottrueje meziminamax.weighted-checklist(min, max, v1, w1, v2, w2, ...): Jakochecklist(), ale každá hodnota má váhu.
Utility funkce
uuid(): Generuje náhodný UUID (formát RFC 4122 v4) jako řetězec.- Typicky se používá s
once()pro generování stabilního jedinečného ID:once(uuid())
- Typicky se používá s
version(): Vrátí hodnotu atributuversionformuláře nastavenou v listu settings.position(): Při volání uvnitř skupiny opakování vrátí 1-based index aktuální instance opakování.coalesce(a, b): Vrátía, pokudanení prázdné; jinak vrátíb.- Příklad:
coalesce(${preferred_name}, ${full_name})— použije preferované jméno, pokud je nastaveno.
- Příklad:
once(value): Vyhodnotívaluea uloží ho, ale pouze pokud je aktuální pole prázdné.- Příklad:
once(today())v sloupcidefaultnastaví dnešní datum jednou a neaktualizuje ho.
- Příklad:
substr-jsonpath(value, jsonpath): Extrahuje podřetězec z JSON řetězce pomocí výrazu JSONPath.