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

equalTo()

Er lik

sivilstand.equalTo(Sivilstand.GIFT)

notEqualTo()

Er ikke lik

status.notEqualTo(Status.AVSLUTTET)

greaterThan()

Større enn

uforegrad.greaterThan(50)

lessThan()

Mindre enn

alder.lessThan(67)

greaterThanOrEqual()

Større enn eller lik

beloep.greaterThanOrEqual(minsteBeloep)

lessThanOrEqual()

Mindre enn eller lik

antall.lessThanOrEqual(5)

isOneOf()

Er én av flere enum-verdier

sivilstand.isOneOf(Sivilstand.GIFT, Sivilstand.SAMBOER)

Eksempler

// Sjekk uføregrad
showIf(uforegrad.greaterThan(50)) {
    text(bokmal { +"Du har høy uføregrad." })
}

// Sjekk sivilstand
showIf(sivilstand.equalTo(Sivilstand.GIFT)) {
    text(bokmal { +"Du er gift." })
}

Logiske operatorer

Operator Betydning Eksempel

and

Begge må være sanne

harBarn and borINorge

or

Minst én må være sann

erPensjonist or erUfoer

not()

Motsatt verdi

not(harSamboer)

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

notNull()

Returnerer true hvis verdien ikke er null

isNull()

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

isEmpty()

Returnerer true hvis samlingen er tom

isNotEmpty()

Returnerer true hvis samlingen har elementer

size()

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.