Függvények
Karakterlánc-függvények
Amikor kifejezéseken belül karakterláncokkal dolgozik, fontos az egyszeres idézőjelek (’’) használata az irodalmi karakterláncok körülzárásához. Kivétel azonban, ha egyszeres idézőjeleket szeretne beleilleszteni egy irodalmi karakterláncba. Ilyen esetekben kettős idézőjeleket ("") használhat a teljes karakterlánc körülzárásához.
Például:
- Helyes: if(${yesno} = 1, “egy ’egyszeres idézőjeleket’ tartalmazó karakterlánc”, “itt nincsenek egyszeres idézőjelek”)
- Helytelen: if(${yesno} = 1, ’egy ’egyszeres idézőjeleket’ tartalmazó karakterlánc’, ‘itt nincsenek egyszeres idézőjelek’)
Az okos idézőjelek vonatkozásában fontos tudni, hogy azok problémákat okozhatnak a kifejezésekben. Sok szövegszerkesztő automatikusan konvertálja az egyenes idézőjeleket ("" vagy ‘’) okos idézőjelekre vagy görbe idézőjelekre ("" vagy ‘’), ami szintaktikai hibákat vagy váratlan viselkedést okozhat. Ennek elkerülése érdekében győződjön meg arról, hogy következetesen egyenes idézőjeleket (’’) használ a kifejezéseiben.
Az rtSurvey különféle függvényeket támogat, többek között:
string(mező): Karakterlánccá alakítja a mezőt.- Példa:
string(34.8)'34.8'értékre konvertálódik.
- Példa:
string-length(mező): Visszaadja a karakterlánc-mező hosszát.- Példa:
string-length(.) > 3 and string-length(.) < 10biztosítja, hogy az aktuális mező 3 és 10 karakter között legyen.
- Példa:
substr(mezőVagyKarakterlánc, kezdőIndex, végIndex): Alszövegláncot ad vissza akezdőIndex-től avégIndexelőttig. Az indexek 0-tól számozódnak.- Példa:
substr(${phone}, 0, 3)a telefonszám első három számjegyét adja vissza.
- Példa:
concat(a, b, c, ...): Mezőket (és/vagy karakterláncokat) fűz össze.- Példa:
concat(${firstname}, ' ', ${lastname})teljes nevet ad vissza azutónévésvezetéknévmezők kombinálásával.
- Példa:
linebreak(): Sortörés karaktert ad vissza.- Példa:
concat(${field1}, linebreak(), ${field2}, linebreak(), ${field3})három mező értékét adja vissza sortörésekkel elválasztva.
- Példa:
lower(): Karakterláncot kisbetűssé alakítja.- Példa:
lower('Utca neve')“utca neve” értéket ad vissza.
- Példa:
upper(): Karakterláncot nagybetűssé alakítja.- Példa:
upper('Utca neve')“UTCA NEVE” értéket ad vissza.
- Példa:
select_one és select_multiple függvények
count-selected(mező): Visszaadja a select_multiple mezőben kiválasztott elemek számát.- Példa:
count-selected(.) = 3korlátként biztosítja, hogy pontosan három lehetőség legyen kiválasztva.
- Példa:
selected(mező, érték): Igaz vagy hamis értéket ad vissza attól függően, hogy a megadott érték ki van-e választva.- Példa:
selected(${color}, 'Blue')relevanciakifejezésként csak akkor jelenít meg egy csoportot, ha a válaszadó “Kéket” választott. - Megjegyzés: A második paraméter mindig a lehetőség értékét adja meg, nem a feliratot. Használja a choices munkalap value oszlopának értékét.
- Példa:
selected-at(mező, szám): Visszaadja a select_multiple mezőben a megadott pozíción lévő kiválasztott elemet. A 0 az első kiválasztott elemet adja vissza, az 1 a másodikat, stb.- Példa:
selected-at(${fruits}, 0) = 'Apple'relevanciakifejezésként csak akkor jelenít meg egy csoportot, ha az első kiválasztott lehetőség “Apple”. - Megjegyzés: A visszaadott érték a lehetőség értéke, nem a felirata.
- Példa:
choice-label(mező, érték): Visszaadja egy select_one vagy select_multiple mező lehetőségének feliratát.- példa:
choice-label(${country}, ${country})visszaadja az aktuálisan kiválasztott lehetőség feliratát acountrynevű mezőben.
- példa:
- példa:
choice-label(${languages}, selected-at(${languages}, 0))visszaadja az első kiválasztott lehetőség feliratát alanguagesmezőben.
- példa:
- Megjegyzés: Ez a függvény a lehetőség feliratát adja vissza, nem az értékét.
Ismétlődő mezők függvényei
Az rtSurvey-ben, ha ugyanazt a kérdést többször szeretné feltenni, elhelyezhet egy mezőt egy ismétlőcsoportban. Az alábbi függvények segítenek kezelni az ilyen ismétlődő mezőket és adatokat.
join(elválasztó, ismétlődőMező): Ismétlőcsoporton belüli mező esetén karakterlánccal elválasztott listát generál az értékekből.- Példa:
join(', ', ${member_name})vesszővel elválasztott listát generál az összes megadott névből.
- Példa:
join-if(elválasztó, ismétlődőMező, kifejezés): Ugyanúgy működik, mint ajoin(), de megvizsgálja az egyes példányokat a megadott kifejezéssel. Ha a kifejezés hamis, az elem kimarad.- Példa:
join-if(', ', ${member_name}, ${age} >= 18)felnőtt tagok neveiből álló listát generál.
- Példa:
count(ismétlőcsoport): Visszaadja az ismétlőcsoport aktuális ismétlésszámát.- Példa:
count(${groupname})a csoport példányainak számát adja vissza.
- Példa:
count-if(ismétlőcsoport, kifejezés): Ugyanúgy működik, mint acount(), de csak a feltételt teljesítő példányokat számolja.- Példa:
count-if(${members}, ${age} >= 18)felnőtt tagok számát adja vissza.
- Példa:
sum(ismétlődőMező): Ismétlőcsoporton belüli mező esetén kiszámítja az összes érték összegét.- Példa:
sum(${loan_amount})az összes kölcsön összértékét adja vissza.
- Példa:
sum-if(ismétlődőMező, kifejezés): Ugyanúgy működik, mint asum(), de csak a feltételt teljesítő példányokat összegzi.- Példa:
sum-if(${loan_amount}, ${loan_amount} > 500)az 500 feletti kölcsönök összértékét adja vissza.
- Példa:
min(ismétlődőMező): Ismétlőcsoporton belüli mező esetén kiszámítja az összes érték minimumát.- Példa:
min(${member_age})a legfiatalabb tag korát adja vissza.
- Példa:
min-if(ismétlődőMező, kifejezés): Ugyanúgy működik, mint amin(), de csak a feltételt teljesítő példányokkal.- Példa:
min-if(${member_age}, ${member_age} >= 18)a legfiatalabb felnőtt tag korát adja vissza.
- Példa:
max(ismétlődőMező): Ismétlőcsoporton belüli mező esetén kiszámítja az összes érték maximumát.- Példa:
max(${member_age})a legidősebb tag korát adja vissza.
- Példa:
max-if(ismétlődőMező, kifejezés): Ugyanúgy működik, mint amax(), de csak a feltételt teljesítő példányokkal.- Példa:
max-if(${member_age}, ${member_age} >= 18)a legidősebb felnőtt tag korát adja vissza.
- Példa:
index(): Ismétlőcsoporton belül hívva visszaadja az aktuális csoport vagy példány indexszámát.- Példa:
index()ismétlőcsoporton belül az első példánynál 1-et, a másodiknál 2-t ad vissza, stb.
- Példa:
indexed-repeat(ismétlődőMező, ismétlőcsoport, index): Hivatkozik ismétlőcsoporton belüli mezőre annak kívülről. Az első paraméter adja meg az ismétlődő mezőt vagy csoportot, a második az ismétlőcsoportot, a harmadik a sorszámot.- példa:
indexed-repeat(${name}, ${names}, 1)visszaadja az első nevet, ha a name mező egy “names” nevű korábbi ismétlőcsoportban van.
- példa:
- példa:
indexed-repeat(${name}, ${names}, index())a neve-t adja vissza az aktuális ismétlőcsoport-példányszámnak megfelelő indexszel.
- példa:
rank-index(index, ismétlődőMező): Kiszámítja az ismétlődő mező megadott példányának sorrendi rangját az ismétlőcsoporton kívüli használathoz. Az 1-es rang a legmagasabb értékű példányhoz, a 2-es a következő legmagasabb értékűhöz rendelődik, stb.- Példa:
rank-index(1, ${random_draw})kiszámítja az első példány rangját arandom_drawmező értéke alapján a többi példányhoz képest.
- Példa:
rank-index-if(index, ismétlődőMező, kifejezés): Hasonlóan működik, mint arank-index(), de megvizsgálja az egyes példányokat a megadott kifejezéssel. Ha a kifejezés hamis, az elem kihagyódik. Ha a feltétel miatt kihagyott példányhoz ad meg indexet, érvénytelen indexnek számít, és 999-es rang kerül visszaadásra.- Példa:
rank-index-if(1, ${age}, ${age} >= 18)kiszámítja a kor rangját a felnőttek körében, csak a 18 évesnél idősebb példányokat figyelembe véve.
- Példa:
Numerikus függvények
| Operátor | Művelet | Példa | Példa válasz |
|---|---|---|---|
+ | Összeadás | 1 + 1 | 2 |
- | Kivonás | 3 - 2 | 1 |
* | Szorzás | 3 * 2 | 6 |
div | Osztás | 10 div 2 | 5 |
mod | Modulus | 9 mod 2 | 1 |
Az rtSurvey numerikus függvényeket is támogat, többek között:
number(mező): Számmá alakítja a mező értékét.- Példa:
number('34.8')= 34.8
- Példa:
int(mező): Egésszé alakítja a mező értékét.- Példa:
int('39.2')= 39
- Példa:
min(mező1, ..., mezőx): Visszaadja a megadott mezők minimális értékét.- Példa:
min(${father_age}, ${mother_age})az apa vagy anya korát adja vissza, amelyik kisebb.
- Példa:
max(mező1, ..., mezőx): Visszaadja a megadott mezők maximális értékét.- Példa:
max(${father_age}, ${mother_age})az apa vagy anya korát adja vissza, amelyik nagyobb.
- Példa:
format-number(mező): A felhasználó területi beállításainak megfelelően formázza az egész szám vagy tizedes érték mezőt.- Példa:
format-number(${income})a “120000” értéket “120 000” formában formázhatja.
- Példa:
round(mező, számjegyek): A numerikus mező értékét a megadott tizedesjegy-számra kerekíti.- Példa:
round(${interest_rate}, 2)
- Példa:
abs(szám): Visszaadja egy szám abszolút értékét.pow(alap, kitevő): Visszaadja az első paraméter értékét a második paraméter hatványán emelve.log10(mezőVagyÉrték): Visszaadja a mező vagy érték tízes alapú logaritmusát.sin(mezőVagyÉrték): Visszaadja a mező vagy érték szinuszát, radiánban kifejezve.cos(mezőVagyÉrték): Visszaadja a mező vagy érték koszinuszát, radiánban kifejezve.tan(mezőVagyÉrték): Visszaadja a mező vagy érték tangesét, radiánban kifejezve.asin(mezőVagyÉrték): Visszaadja a mező vagy érték arkszinuszát, radiánban kifejezve.acos(mezőVagyÉrték): Visszaadja a mező vagy érték arkkoszinuszát, radiánban kifejezve.atan(mezőVagyÉrték): Visszaadja a mező vagy érték arktangensét, radiánban kifejezve.atan2(x, y): Visszaadja a (x, y) koordinátájú pont és a pozitív x-tengely által bezárt szöget radiánban. Az eredmény -pi() és pi() közé esik.sqrt(mezőVagyÉrték): Visszaadja a mező vagy érték nemnegatív négyzetgyökét.exp(x): Visszaadja az e^x értékét.pi(): Visszaadja a pi értékét.
Dátum és idő függvények
Az rtSurvey-ben a dátumértékek ÉÉÉÉ-HH-NN formátumú karakterláncként vannak tárolva. A dátum-idő értékek ISO 8601 karakterláncként (ÉÉÉÉ-HH-NNTTÓ:PP:MP). Az aritmetikához (pl. időtartamok kiszámításához) használja a decimal-date-time() függvényt számrá konvertáláshoz.
today(): Visszaadja a mai dátumotÉÉÉÉ-HH-NNformátumú karakterláncként. Az űrlap megnyitásakor egyszer értékelődik ki.- Példa:
today()→'2024-03-15' - Általános felhasználás:
defaultoszlopban a mai dátum előzetes kitöltéséhez, vagyrelevant/constraintmezőkben egy dátummezővel való összehasonlításhoz.
- Példa:
now(): Visszaadja az aktuális dátumot és időt ISO 8601 karakterláncként. Minden egyes kiértékeléskor újra kiszámítja.- Példa:
now()→'2024-03-15T14:32:00.000+03:00' - Általános felhasználás: Egy adott esemény pontos időbélyegének rögzítése a felmérés során.
- Példa:
date(érték): Értéket (karakterlánc vagy szám) dátum karakterlánccá konvertál.- Példa:
date('2024-03-15')→'2024-03-15'
- Példa:
date-time(érték): Értéket dátum-idő karakterlánccá konvertál.- Példa:
date-time(${event_timestamp})
- Példa:
decimal-date-time(érték): Dátum vagy dátum-idő karakterláncot tizedes számmá konvertál, amely a Unix epoch óta eltelt milliszekundumokat osztva 86400000-rel jelöl (töredék napok 1970-01-01 óta). Ezt a dátumok aritmetikájához kell használni.- Példa: Két dátum közötti napok száma:
decimal-date-time(${end_date}) - decimal-date-time(${start_date}) - Példa: Két dátum-idő közötti percek száma:
(decimal-date-time(${end_time}) - decimal-date-time(${start_time})) * 1440
- Példa: Két dátum közötti napok száma:
format-date(dátum, formátum): Dátumértéket formáz egy mintakarakterlánc segítségével.- Formátum tokenek:
%Y(4 jegyű év),%y(2 jegyű év),%m(hónap 01–12),%d(nap 01–31),%a(hét napja rövidítve),%b(hónap neve rövidítve) - Példa:
format-date(today(), '%d/%m/%Y')→'15/03/2024'
- Formátum tokenek:
format-date-time(dátumIdő, formátum): Dátum-idő értéket formáz egy mintakarakterlánc segítségével. Aformat-datetokeneken kívül fogadja:%H(óra 00–23),%h(óra 01–12),%M(perc 00–59),%S(másodperc 00–59),%3(milliszekundum),%P(DE/DU)- Példa:
format-date-time(now(), '%d/%m/%Y %H:%M')→'15/03/2024 14:32'
Boolean függvények
boolean(érték): Bármely értéket boolean-ná konvertál. Nem üres karakterláncokra, nem nulla számokra éstrueértékreigaz-t, üres karakterláncokra,0-ra ésfalseértékrehamis-t ad vissza.- Példa:
boolean(${name})igazértéket ad vissza, ha anamenem üres.
- Példa:
boolean-from-string(karakterlánc):igaz-t ad vissza, ha a karakterlánc'1'vagy'true'(kis- és nagybetű-érzéketlen); egyébkénthamis-t.- Példa:
boolean-from-string(${enabled_flag})– hasznos, ha egy mező'true'/'false'szövegként tárol értéket.
- Példa:
true(): Visszaadja a booleanigazértéket.- Példa: A
requiredoszlopban atrue()egyenértékű ayesértékkel.
- Példa: A
false(): Visszaadja a booleanhamisértéket.- Példa:
if(${skip_section} = 'yes', false(), true())– dinamikusan állítja be a kötelezőséget.
- Példa:
not(kifejezés): Visszaadja a kifejezés logikai negáltját.- Példa:
not(${consent} = 'yes')– figyelmeztetést jelenít meg, ha NEM adtak beleegyezést. - Példa:
not(selected(${issues}, 'none'))– részlet megkövetelése, ha nem “none” lett kiválasztva.
- Példa:
További karakterlánc-függvények
starts-with(karakterlánc, előtag):igaz-t ad vissza, ha akarakterláncazelőtag-gal kezdődik.- Példa:
starts-with(${phone}, '+36')ellenőrzi, hogy a telefonszám a magyarországi körzetszámmal kezdődik-e.
- Példa:
contains(karakterlánc, részkarakter):igaz-t ad vissza, ha akarakterlánctartalmazza arészkarakter-t.- Példa:
contains(${email}, '@')ellenőrzi, hogy az e-mail-cím tartalmaz-e@jelet.
- Példa:
substring-before(karakterlánc, tű): Visszaadja akarakterláncazon részét, amely atűelső előfordulása előtt van.- Példa:
substring-before(${full_name}, ' ')kinyeri az első szót (utónevet).
- Példa:
substring-after(karakterlánc, tű): Visszaadja akarakterláncazon részét, amely atűelső előfordulása után van.- Példa:
substring-after(${email}, '@')kinyeri az e-mail-cím domain részét.
- Példa:
normalize-space(karakterlánc): Eltávolítja a vezető és záró szóközöket, és az összes belső szóközsorozatot egyetlen szóközre redukálja.- Példa:
normalize-space(${name})– megtisztítja a névtől a felesleges szóközöket.
- Példa:
translate(karakterlánc, keresési_karakterek, csere_karakterek): Akarakterláncban szereplő és akeresési_karakterek-ben megtalálható minden karaktert acsere_karakterek-ben lévő megfelelő karakterre cseréli. Acsere_karakterek-ben nem szereplő megfelelővel rendelkező karakterek törlődnek.- Példa:
translate(${phone}, ' -()', '')eltávolítja a szóközöket, kötőjeleket és zárójeleket a telefonszámból.
- Példa:
További matematikai függvények
floor(szám): Visszaadja aszám-nál kisebb vagy egyenlő legnagyobb egészt (negatív végtelen felé kerekít).- Példa:
floor(4.9)= 4,floor(-2.1)= -3
- Példa:
ceiling(szám): Visszaadja aszám-nál nagyobb vagy egyenlő legkisebb egészt (pozitív végtelen felé kerekít).- Példa:
ceiling(4.1)= 5,ceiling(-2.9)= -2
- Példa:
random(): 0.0 (befoglalt) és 1.0 (kizárt) közötti véletlenszerű tizedes számot ad vissza.- Példa:
random()→ pl.0.7341 - Példa:
int(random() * 6) + 1→ véletlenszerű szám 1–6 között (kockadobás)
- Példa:
coalesce(a, b): Visszaadjaaértékét, haanem üres; egyébként visszaadjabértékét. Hasznos tartalékként, ha egy mező esetleg üres lehet.- Példa:
coalesce(${preferred_name}, ${full_name})– ha be van állítva, a preferált nevet használja, egyébként a teljes névhez esik vissza.
- Példa:
once(érték): Kiértékeli azérték-et és tárolja, de csak akkor, ha az aktuális mező üres. Ha a mező már rendelkezik értékkel, azonce()a meglévő értéket adja vissza változatlanul. Ez megakadályozza, hogy az újraszámítás felülírja a felhasználói bevitelt.- Példa:
once(today())adefaultoszlopban egyszer beállítja a mai dátumot, és nem frissíti, ha a kérdező újra megnyitja az űrlapot. - Példa:
once(uuid())egyszer generál UUID-t, és az újraszerkesztések során stabil marad.
- Példa:
Geo-függvények
area(geoshape_érték): Kiszámítja egy geoshape (sokszög) által bezárt területet négyzetméterben.- A paraméter egy
lat1 lon1 0 0; lat2 lon2 0 0; ...formátumú geoshape értéke. - Példa:
area(${field_boundary})– kiszámítja a felmért mező területét m²-ben. - Példa:
round(area(${field_boundary}) div 10000, 2)– hektárrá konvertál.
- A paraméter egy
distance(koordináták): Kiszámítja egy geotrace (vonal) teljes útvonal hosszát méterben, vagy két geopoint közötti távolságot.- Geotrace esetén:
distance(${route})a teljes útvonal hosszát méterben adja vissza. - Két geopoint esetén:
distance(concat(${point_a}, ' ', ${point_b}))a köztük lévő távolságot adja vissza. - Példa:
round(distance(${road_trace}) div 1000, 3)– közúti hossz kilométerben.
- Geotrace esetén:
Ellenőrző függvények
regex(érték, minta):igaz-t ad vissza, ha azértékilleszkedik amintareguláris kifejezésre. Aconstraintoszlopban mintaalapú ellenőrzéshez használja.- Példa:
regex(., '^[0-9]{10}$')– 10 jegyű szám ellenőrzése. - Példa:
regex(., '^[A-Z]{2}[0-9]{6}$')– útlevélszám formátum ellenőrzése (2 nagybetű + 6 számjegy). - Példa:
regex(., '^[^@]+@[^@]+\.[^@]{2,}$')– alapvető e-mail formátum ellenőrzése.
- Példa:
checklist(min, max, v1, v2, ...): Kiértékeli a boolean kifejezések listáját, ésigaz-t ad vissza, ha azigazértékek számaminésmaxközé esik (befoglalóan). Adjon meg-1-et aminvagymaxértéknél, hogy kihagyja azt a korlátot.- Példa:
checklist(2, 3, ${q1} = 'yes', ${q2} = 'yes', ${q3} = 'yes')– pontosan 2 vagy 3 feltétel teljesítésekor ad át.
- Példa:
weighted-checklist(min, max, v1, w1, v2, w2, ...): Hasonló achecklist()-hez, de minden értéknek súlya van. Azigazértékek súlyainak összegeminésmaxközé kell essen.- Példa:
weighted-checklist(10, -1, ${has_toilet}, 4, ${has_sink}, 3, ${has_shower}, 5)– a meglévő létesítmények súlyainak összege legalább 10 kell legyen.
- Példa:
Segédfüggvények
uuid(): Véletlenszerű UUID-t generál (RFC 4122 v4 formátum) karakterláncként.- Példa:
uuid()→'a3f8b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c' - Általában
once()segítségével stabil egyedi ID generálásához:once(uuid())
- Példa:
version(): Visszaadja az űrlapversionattribútumának értékét a settings munkalapról.- Példa:
version()→'3.1' - Hasznos
calculatemezőkben az űrlap verziójának exportált adatokba való beágyazásához.
- Példa:
position(): Ismétlőcsoporton belül hívva visszaadja az aktuális ismétlési példány 1-től számozott indexét.- Példa:
position()az első példányban1-et, a másodikban2-t ad vissza, stb. - Lásd még:
index()(alias),indexed-repeat()az ismétlési értékek hivatkozásához a csoporton kívülről.
- Példa:
thousandsep(hossz, elválasztó, érték): Ezres elválasztóval formázza a számot. Ahossza minimális karakterlánc teljes hossza (szóközökkel töltve ki, ha rövidebb), azelválasztóa használandó karakter (pl.','), azértéka formázandó szám.- Példa:
thousandsep(0, ',', 1234567)→'1,234,567' - Példa:
thousandsep(0, '.', ${income})→ a jövedelmet ponttal formázza ezres elválasztóként.
- Példa:
substr-jsonpath(érték, jsonpath): Alszöveget von ki egy JSON-karakterláncból JSONPath-kifejezés segítségével.- Példa:
substr-jsonpath(${api_response}, '$.data.name')– kinyeri azapi_response-ban tárolt JSON-karakterláncnamemezőjét. - Általában a
callapi()segítségével az API-válaszokból való specifikus értékek kinyeréséhez használják.
- Példa: