Predikater og sammenligninger
Predikater brukes for å lage betingelser som styrer visning av innhold.
Disse returnerer Expression<Boolean> som kan brukes i showIf og andre kontrollstrukturer.
Sammenligningsoperatorer
| Funksjon | Betydning | Eksempel |
|---|---|---|
|
Er lik |
|
|
Er ikke lik |
|
|
Større enn |
|
|
Mindre enn |
|
|
Større enn eller lik |
|
|
Mindre enn eller lik |
|
|
Er én av flere enum-verdier |
|
Logiske operatorer
| Operator | Betydning | Eksempel |
|---|---|---|
|
Begge må være sanne |
|
|
Minst én må være sann |
|
|
Motsatt verdi |
|
Eksempler
// Kombinere betingelser
showIf(harBarnetillegg and harFellesBarn) {
text(bokmal { +"Du får barnetillegg for felles barn." })
}
// Eller-betingelse
showIf(erPensjonist or erUfoer) {
text(bokmal { +"Du mottar ytelse fra NAV." })
}
// Motsatt verdi
showIf(not(harSamboer)) {
text(bokmal { +"Du er enslig." })
}
// Kompleks kombinasjon
showIf((harBarn and borINorge) or harSaerligTillegg) {
text(bokmal { +"Du kan ha rett til tillegg." })
}
Null-sjekker
| Funksjon | Beskrivelse |
|---|---|
|
Returnerer true hvis verdien ikke er null |
|
Returnerer true hvis verdien er null |
showIf(ektefelle.notNull()) {
text(bokmal { +"Du har registrert ektefelle." })
}
showIf(barnetillegg.isNull()) {
text(bokmal { +"Du har ikke barnetillegg." })
}
| For å bruke verdien hvis den finnes, bruk ifNotNull i stedet. |
Enum-operasjoner
isOneOf
Sjekk om en enum-verdi er én av flere verdier:
showIf(sivilstand.isOneOf(Sivilstand.GIFT, Sivilstand.REGISTRERT_PARTNER)) {
text(bokmal { +"Du er gift eller har registrert partner." })
}
showIf(ytelse.isOneOf(YtelseType.UFORETRYGD, YtelseType.ALDERSPENSJON)) {
text(bokmal { +"Du mottar pensjon eller uføretrygd." })
}
Samlingsoperasjoner
| Funksjon | Beskrivelse |
|---|---|
|
Returnerer true hvis samlingen er tom |
|
Returnerer true hvis samlingen har elementer |
|
Returnerer antall elementer |
showIf(barn.isNotEmpty()) {
text(bokmal { +"Vi har registrert at du har barn:" })
list {
forEach(barn) { enkeltBarn ->
item { text(bokmal { +enkeltBarn.navn }) }
}
}
}
showIf(perioder.size().greaterThan(1)) {
text(bokmal { +"Du har flere perioder." })
}
Navngi betingelser
For lesbarhet kan du navngi komplekse betingelser:
// ✅ Tydelig hva betingelsen sjekker
val harRettTilBarnetillegg = harBarn and borINorge and not(harSaerkullavtale)
val skalRedusereYtelse = harInntekt and inntekt.greaterThan(fribeloep)
showIf(harRettTilBarnetillegg) {
includePhrase(BarnetilleggInfo)
}
showIf(skalRedusereYtelse) {
includePhrase(InntektsavkortingInfo)
}
| Vurder om logikken kan flyttes ut av malen, eller om antall felter kan minimeres. |