Strengfunktioner

rtSurvey understøtter forskellige funktioner, herunder:

  1. string(felt): Konverterer et felt til en streng.

    • Eksempel: string(34.8) konverteres til '34.8'.
  2. string-length(felt): Returnerer længden af et strengfelt.

    • Eksempel: string-length(.) > 3 and string-length(.) < 10 kan bruges til at sikre, at det aktuelle felt er mellem 3 og 10 tegn.
  3. substr(feltEllerStreng, startindeks, slutindeks): Returnerer en delstreng startende ved startindeks og sluttende lige før slutindeks. Indekser starter ved 0 for det første tegn i strengen.

    • Eksempel: substr(${phone}, 0, 3) returnerer de første tre cifre i et telefonnummer.
  4. concat(a, b, c, ...): Sammensætter felter (og/eller strenge).

    • Eksempel: concat(${firstname}, ' ', ${lastname}) returnerer et fuldt navn ved at kombinere værdierne i felterne firstname og lastname.
  5. linebreak(): Returnerer et linjeskifttegn.

    • Eksempel: concat(${field1}, linebreak(), ${field2}, linebreak(), ${field3}) returnerer en liste med tre feltværdier med linjeskift imellem.
  6. lower(): Konverterer en streng til alle små bogstaver.

    • Eksempel: lower('Gadenavn') returnerer “gadenavn”.
  7. upper(): Konverterer en streng til alle store bogstaver.

    • Eksempel: upper('Gadenavn') returnerer “GADENAVN”.

select_one og select_multiple funktioner

  1. count-selected(felt): Returnerer antallet af valgte elementer i et select_multiple-felt.

    • Eksempel: count-selected(.) = 3 kan bruges som et betingelsesudtryk til at sikre, at præcis tre valg er valgt.
  2. selected(felt, værdi): Returnerer sand eller falsk afhængigt af, om den angivne værdi er valgt i select_one- eller select_multiple-feltet.

    • Eksempel: selected(${color}, 'Blue') kan bruges som et relevansudtryk til kun at vise en gruppe eller et felt, hvis respondenten valgte “Blue” som sin yndlingsfarve.
    • Bemærk: Den anden parameter bør altid angive valgværdien, ikke valglabelen. Brug værdien fra value-kolonnen i choices-regnearket i formulardefinitionen.
  3. selected-at(felt, nummer): Returnerer det valgte element ved den angivne position i et select_multiple-felt. Når det oversendte tal er 0, returneres det første valgte element; når tallet er 1, returneres det andet valgte element, og så videre.

    • Eksempel: selected-at(${fruits}, 0) = 'Apple' kan bruges som et relevansudtryk til kun at vise en gruppe eller et felt, hvis det første valgte valg er “Apple”.
    • Bemærk: Den returnerede værdi vil være valgværdien, ikke valglabelen.
  4. choice-label(felt, værdi): Returnerer labelen for et select_one- eller select_multiple-felts valg som defineret i choices-regnearket i formulardefinitionen.

    • Eksempel 1: choice-label(${country}, ${country}) returnerer valglabelen for det aktuelt valgte valg i feltet med navnet country.
    • Eksempel 2: choice-label(${languages}, selected-at(${languages}, 0)) returnerer labelen for det første valgte valg i feltet med navnet languages.
    • Bemærk: Denne funktion henter valglabelen, ikke værdien.

Gentagede feltfunktioner

I rtSurvey, hvis du vil stille det/de samme spørgsmål flere gange, kan du placere et felt inde i en gentagelsesgruppe. Dette resulterer i flere instanser af det samme felt. Følgende funktioner kan hjælpe dig med at håndtere disse gentagne felter og de gentagne data, de producerer. Se hjælpeemnet om gentagne felter for flere detaljer.

  1. join(streng, gentagetFelt): For et felt inden for en gentagelsesgruppe genereres en strengadskilt liste af værdier. Den første parameter angiver afgrænsningstegnet til adskillelse af værdierne.

    • Eksempel: join(', ', ${member_name}) genererer en enkelt kommasepareret liste fra alle indtastede navne.
  2. join-if(streng, gentagetFelt, udtryk): Fungerer præcis ligesom join(), bortset fra at den kontrollerer hver instans i gentagelsesgruppen ved hjælp af det angivne udtryk. Hvis udtrykket evalueres til falsk, udelades elementet fra outputtet.

    • Eksempel: join-if(', ', ${member_name}, ${age} >= 18) genererer en kommasepareret liste over navne på kun voksne medlemmer (dem med alder 18 og derover).
  3. count(gentagelsesgruppe): Returnerer det aktuelle antal gange en gentagelsesgruppe er gentaget.

    • Eksempel: count(${gruppenavn}) returnerer antallet af instanser af gruppen.
  4. count-if(gentagelsesgruppe, udtryk): Fungerer præcis ligesom count(), bortset fra at den kontrollerer hver instans i gentagelsesgruppen ved hjælp af det angivne udtryk. Hvis udtrykket evalueres til falsk, udelades elementet.

    • Eksempel: count-if(${members}, ${age} >= 18) returnerer antallet af voksne medlemmer baseret på aldersfeltet inden for “members” gentagelsesgruppen.
  5. sum(gentagetFelt): For et felt inden for en gentagelsesgruppe beregnes summen af alle værdier.

    • Eksempel: sum(${loan_amount}) returnerer den samlede værdi af alle lån.
  6. sum-if(gentagetFelt, udtryk): Fungerer præcis ligesom sum(), bortset fra at den kontrollerer hver instans ved hjælp af det angivne udtryk.

    • Eksempel: sum-if(${loan_amount}, ${loan_amount} > 500) returnerer den samlede værdi af alle lån, der er over 500.
  7. min(gentagetFelt): For et felt inden for en gentagelsesgruppe beregnes minimum af alle værdier.

    • Eksempel: min(${member_age}) returnerer alderen på det yngste medlem i gruppen.
  8. min-if(gentagetFelt, udtryk): Fungerer præcis ligesom min(), bortset fra at den kontrollerer hver instans ved hjælp af det angivne udtryk.

    • Eksempel: min-if(${member_age}, ${member_age} >= 18) returnerer alderen på den yngste voksne i gruppen.
  9. max(gentagetFelt): For et felt inden for en gentagelsesgruppe beregnes maksimum af alle værdier.

    • Eksempel: max(${member_age}) returnerer alderen på det ældste medlem i gruppen.
  10. max-if(gentagetFelt, udtryk): Fungerer præcis ligesom max(), bortset fra at den kontrollerer hver instans ved hjælp af det angivne udtryk.

    • Eksempel: max-if(${member_age}, ${member_age} >= 18) returnerer alderen på den ældste voksne i gruppen.
  11. index(): Kaldet inden for en gentagelsesgruppe returneres indeksnummeret for den aktuelle gruppe eller instans.

    • Eksempel: index() returnerer 1 for den første instans, 2 for den anden, og så videre.
  12. indexed-repeat(gentagetFelt, gentagelsesgruppe, indeks): Referencer et felt eller en gruppe, der er inden for en gentagelsesgruppe, fra uden for den gentagelsesgruppen.

    • Eksempel 1: indexed-repeat(${name}, ${names}, 1) returnerer det første navn, der er tilgængeligt, når namefeltet er inden for en forudgående gentagelsesgruppe med navnet “names”.
    • Eksempel 2: indexed-repeat(${name}, ${names}, index()) henter det navn, der svarer til instansnummeret for den aktuelle gentagelsesgruppe.
  13. rank-index(indeks, gentagetFelt): Denne funktion beregner den ordinale rang for den angivne instans af et gentaget felt til brug uden for gentagelsesgruppen. Rang 1 tildeles instansen med den højeste værdi, rang 2 til instansen med den næsthøjeste værdi, og så videre. Hvis du sender et ugyldigt indeks eller et indeks til en instans med en ikke-numerisk værdi, returneres en rang på 999.

    • Eksempel: rank-index(1, ${random_draw}) beregner rangen for den første instans baseret på værdien af dens random_draw-felt sammenlignet med andre instansers værdier.
  14. rank-index-if(indeks, gentagetFelt, udtryk): Denne funktion fungerer ligesom rank-index(), men den kontrollerer hver instans i det gentagne felts gentagelsesgruppe ved hjælp af det angivne udtryk. Hvis udtrykket evalueres til falsk, udelades elementet fra beregningen.

    • Eksempel: rank-index-if(1, ${age}, ${age} >= 18) beregner alderrangeringen inden for gruppen af voksne, idet kun instanser, hvor alderen er større end eller lig med 18, medtages.

Talfunktioner

OperatorOperationEksempelEksempelsvar
+Addition1 + 12
-Subtraktion3 - 21
*Multiplikation3 * 26
divDivision10 div 25
modModulus9 mod 21

rtSurvey understøtter talfunktioner, herunder:

  • number(felt): Konverterer feltets værdi til et tal.

    • Eksempel: number('34.8') = 34.8
  • int(felt): Konverterer feltets værdi til et heltal.

    • Eksempel: int('39.2') = 39
  • min(felt1, ..., feltx): Returnerer minimumsværdien blandt de oversendte felter.

    • Eksempel: min(${father_age}, ${mother_age}) returnerer alderen på enten moderen eller faderen, alt efter hvem der er yngst.
  • max(felt1, ..., feltx): Returnerer maksimumsværdien blandt de oversendte felter.

    • Eksempel: max(${father_age}, ${mother_age}) returnerer alderen på enten moderen eller faderen, alt efter hvem der er ældst.
  • format-number(felt): Formaterer værdien af et heltal- eller decimalfelt i henhold til brugerens lokaleindstillinger.

    • Eksempel: format-number(${income}) Dette udtryk kan formatere “120000” som “120.000”.
  • round(felt, cifre): Afrunder den numeriske feltværdi til det angivne antal cifre efter decimalpunktet.

    • Eksempel: round(${interest_rate}, 2)
  • abs(tal): Returnerer den absolutte værdi af et tal.

  • pow(base, eksponent): Returnerer værdien af den første parameter opløftet til potensen af den anden parameter.

  • log10(feltEllerVærdi): Returnerer titalslogaritmen af det oversendte felt eller den oversendte værdi.

  • sin(feltEllerVærdi): Returnerer sinus af det oversendte felt eller den oversendte værdi, udtrykt i radianer.

  • cos(feltEllerVærdi): Returnerer cosinus af det oversendte felt eller den oversendte værdi, udtrykt i radianer.

  • tan(feltEllerVærdi): Returnerer tangens af det oversendte felt eller den oversendte værdi, udtrykt i radianer.

  • asin(feltEllerVærdi): Returnerer arcussinus af det oversendte felt eller den oversendte værdi, udtrykt i radianer.

  • acos(feltEllerVærdi): Returnerer arcuscosinus af det oversendte felt eller den oversendte værdi, udtrykt i radianer.

  • atan(feltEllerVærdi): Returnerer arcustangens af det oversendte felt eller den oversendte værdi, udtrykt i radianer.

  • atan2(x, y): Returnerer vinklen i radianer dannet ved punktet med koordinaterne (x, y) og den positive x-akse. Resultatet er i intervallet -pi() til pi().

  • sqrt(feltEllerVærdi): Returnerer den ikke-negative kvadratrod af det oversendte felt eller den oversendte værdi.

  • exp(x): Returnerer værdien af e^x.

  • pi(): Returnerer værdien af pi.

Dato- og tidsfunktioner

  1. today(): Returnerer dags dato som en streng i formatet YYYY-MM-DD. Evalueres én gang, når formularen åbnes.

    • Eksempel: today()'2024-03-15'
    • Typisk brug: kolonnen default til at forudfylde dags dato, eller i relevant/constraint til at sammenligne med et datofelt.
  2. now(): Returnerer den aktuelle dato og tid som en ISO 8601-streng. Evalueres hver gang udtrykket beregnes.

    • Eksempel: now()'2024-03-15T14:32:00.000+03:00'
    • Typisk brug: Registrering af det præcise tidsstempel for en specifik hændelse under undersøgelsen.
  3. date(værdi): Konverterer en værdi (streng eller tal) til en datostreng. Nyttigt til at tvangsomdanne beregnede værdier til en datotype.

    • Eksempel: date('2024-03-15')'2024-03-15'
  4. date-time(værdi): Konverterer en værdi til en datetime-streng.

    • Eksempel: date-time(${event_timestamp})
  5. decimal-date-time(værdi): Konverterer en dato- eller datetime-streng til et decimaltal, der repræsenterer millisekunder siden Unix-epoken divideret med 86400000 (dvs. brøkdele af dage siden 1970-01-01). Brug dette til at udføre aritmetik på datoer.

    • Eksempel: Varighed i dage mellem to datoer: decimal-date-time(${end_date}) - decimal-date-time(${start_date})
    • Eksempel: Varighed i minutter mellem to datetimes: (decimal-date-time(${end_time}) - decimal-date-time(${start_time})) * 1440
  6. format-date(dato, format): Formaterer en datoværdi ved hjælp af en mønsterstreng.

    • Formattokens: %Y (4-cifret år), %y (2-cifret år), %m (måned 01–12), %d (dag 01–31), %a (forkortet ugedag), %b (forkortet månedsnavn)
    • Eksempel: format-date(today(), '%d/%m/%Y')'15/03/2024'
  7. format-date-time(datetime, format): Formaterer en datetime-værdi ved hjælp af en mønsterstreng. Accepterer alle format-date-tokens plus:

    • %H (time 00–23), %h (time 01–12), %M (minutter 00–59), %S (sekunder 00–59), %3 (millisekunder), %P (AM/PM)
    • Eksempel: format-date-time(now(), '%d/%m/%Y %H:%M')'15/03/2024 14:32'

Booleske funktioner

  1. boolean(værdi): Konverterer enhver værdi til et boolesk. Returnerer sand for ikke-tomme strenge, ikke-nul tal og sand; returnerer falsk for tomme strenge, 0 og falsk.

    • Eksempel: boolean(${name}) returnerer sand, hvis name ikke er tomt.
  2. boolean-from-string(streng): Returnerer sand, hvis strengen er '1' eller 'true' (ikke versalfølsom); returnerer falsk ellers.

    • Eksempel: boolean-from-string(${enabled_flag}) — nyttigt, når et felt gemmer 'true'/'false' som tekst.
  3. true(): Returnerer den booleske værdi sand.

    • Eksempel: I kolonnen required svarer true() til yes.
  4. false(): Returnerer den booleske værdi falsk.

    • Eksempel: if(${skip_section} = 'yes', false(), true()) — indstil dynamisk required.
  5. not(udtryk): Returnerer den logiske negation af udtrykket.

    • Eksempel: not(${consent} = 'yes') — vis en advarsel, når samtykke IKKE er givet.
    • Eksempel: not(selected(${issues}, 'none')) — kræv detaljer kun, hvis “ingen” ikke er valgt.

Yderligere strengfunktioner

  1. starts-with(streng, præfiks): Returnerer sand, hvis streng begynder med præfiks.

    • Eksempel: starts-with(${phone}, '+45') kontrollerer, om telefonnummeret begynder med den danske landekode.
  2. contains(streng, delstreng): Returnerer sand, hvis streng indeholder delstreng.

    • Eksempel: contains(${email}, '@') kontrollerer, at en e-mailadresse har et @-tegn.
  3. substring-before(streng, søgetekst): Returnerer den del af streng, der vises før den første forekomst af søgetekst.

    • Eksempel: substring-before(${full_name}, ' ') udtrækker det første ord (fornavn).
  4. substring-after(streng, søgetekst): Returnerer den del af streng, der vises efter den første forekomst af søgetekst.

    • Eksempel: substring-after(${email}, '@') udtrækker domænedelen af en e-mailadresse.
  5. normalize-space(streng): Fjerner foranstillede og efterstillede mellemrum og samler alle interne mellemrumssekvenser til ét mellemrum.

    • Eksempel: normalize-space(${name}) — renser et navn, der kan være skrevet med ekstra mellemrum.
  6. translate(streng, søgetegn, erstatningstegn): Erstatter hvert tegn i streng, der forekommer i søgetegn, med det tilsvarende tegn i erstatningstegn.

    • Eksempel: translate(${phone}, ' -()', '') fjerner mellemrum, bindestreger og parenteser fra et telefonnummer.

Yderligere matematiske funktioner

  1. floor(tal): Returnerer det største heltal, der er mindre end eller lig med tal (runder mod negativ uendelig).

    • Eksempel: floor(4.9) = 4, floor(-2.1) = -3
  2. ceiling(tal): Returnerer det mindste heltal, der er større end eller lig med tal (runder mod positiv uendelig).

    • Eksempel: ceiling(4.1) = 5, ceiling(-2.9) = -2
  3. random(): Returnerer et tilfældigt decimaltal mellem 0,0 (inklusiv) og 1,0 (eksklusiv). Bruges typisk i calculate-felter til at tildele tilfældige værdier eller randomisere spørgsmålsrækkefølgen.

    • Eksempel: int(random() * 6) + 1 → tilfældigt tal 1–6 (terningekast)
  4. coalesce(a, b): Returnerer a, hvis a er ikke-tom; ellers returneres b. Nyttigt som en fallback, når et felt kan være tomt.

    • Eksempel: coalesce(${preferred_name}, ${full_name}) — brug foretrukket navn hvis angivet, ellers brug fuldt navn.
  5. once(værdi): Evaluerer værdi og gemmer den, men kun hvis det aktuelle felt er tomt. Hvis feltet allerede har en værdi, returnerer once() den eksisterende værdi uændret. Dette forhindrer genberegning i at overskrive brugerinput.

    • Eksempel: once(today()) i kolonnen default indstiller dags dato én gang og opdateres ikke, hvis intervieweren genåbner formularen.
    • Eksempel: once(uuid()) genererer et UUID én gang og holder det stabilt på tværs af genredigeringer.

Geofunktioner

  1. area(geoshape_værdi): Beregner arealet i kvadratmeter omsluttet af en geoshape-værdi (polygon).

    • Eksempel: area(${field_boundary}) — beregn arealet af et undersøgt felt i m².
    • Eksempel: round(area(${field_boundary}) div 10000, 2) — konverter til hektar.
  2. distance(koordinater): Beregner den samlede stilængde i meter for en geotrace (linje), eller afstanden mellem to geopoints.

    • For en geotrace: distance(${route}) returnerer den samlede stistrejklængde i meter.
    • For to geopoints: distance(concat(${point_a}, ' ', ${point_b})) returnerer afstanden mellem dem.
    • Eksempel: round(distance(${road_trace}) div 1000, 3) — vejlængde i kilometer.

Valideringsfunktioner

  1. regex(værdi, mønster): Returnerer sand, hvis værdi matcher det regulære udtryk mønster. Bruges i kolonnen constraint til mønsterbaseret validering.

    • Eksempel: regex(., '^[0-9]{10}$') — valider et 10-cifret tal.
    • Eksempel: regex(., '^[A-Z]{2}[0-9]{6}$') — valider et pasportnummerformat (2 store bogstaver efterfulgt af 6 cifre).
    • Eksempel: regex(., '^[^@]+@[^@]+\.[^@]{2,}$') — grundlæggende e-mailformatkontrol.
  2. checklist(min, max, v1, v2, ...): Evaluerer en liste af booleske udtryk og returnerer sand, hvis antallet af sande værdier er mellem min og max (inklusiv). Send -1 for min eller max for at springe den grænse over.

    • Eksempel: checklist(2, 3, ${q1} = 'yes', ${q2} = 'yes', ${q3} = 'yes') — passerer, hvis præcis 2 eller 3 af de tre betingelser er sande.
  3. weighted-checklist(min, max, v1, w1, v2, w2, ...): Ligesom checklist(), men hver værdi har en vægt. Summen af vægte for sande værdier skal være mellem min og max.

    • Eksempel: weighted-checklist(10, -1, ${has_toilet}, 4, ${has_sink}, 3, ${has_shower}, 5) — summen af vægte for tilstedeværende faciliteter skal være mindst 10.

Hjælpefunktioner

  1. uuid(): Genererer et tilfældigt UUID (RFC 4122 v4-format) som en streng.

    • Typisk brugt med once() til at generere et stabilt unikt ID: once(uuid())
  2. version(): Returnerer værdien af formularens version-attribut som angivet i settings-regnearket.

    • Nyttigt i calculate-felter til at indlejre formularversionen i eksporterede data.
  3. position(): Når kaldt inden for en gentagelsesgruppe, returneres det 1-baserede indeks for den aktuelle gentagelsesinstans.

    • Se også: index() (alias), indexed-repeat() til at referere til gentagelsesværdier fra udenfor gruppen.
  4. thousandsep(længde, separator, værdi): Formaterer et tal med et tusindestalseparatortegn. længde er den minimale samlede strenglængde (udfyldt med mellemrum hvis kortere), separator er det tegn, der skal bruges (f.eks. ','), og værdi er det tal, der skal formateres.

    • Eksempel: thousandsep(0, ',', 1234567)'1.234.567'
  5. substr-jsonpath(værdi, jsonpath): Udtrækker en delstreng fra en JSON-streng ved hjælp af et JSONPath-udtryk.

    • Eksempel: substr-jsonpath(${api_response}, '$.data.name') — udtrækker name-feltet fra en JSON-streng gemt i api_response.
    • Bruges typisk ved siden af callapi() til at udtrække specifikke værdier fra API-svar.
Var denne side nyttig?