Avanserte funksjoner

Vises dersom med uttrykk

Uttrykk og funksjoner

Syntaksen støtter en rekke operatorer og funksjoner direkte fra det eksterne kode-biblioteket. Noen av disse er

min(x,y)
max(x,y)
if(uttrykk, verdiSå, verdiEllers)
roundTo(x,n)
random(n)

NB! Syntaksen er case-sensitiv, så "AND" vil f.eks gi syntaksfeil da det kun er skrivemåten med små bokstaver som godtas for denne operatoren.

I tillegg er det mulig å bruke følgende egne funksjoner:

anyOf

Elementet har et av valgene i oppgitt liste.

Fungerer for radioknapper, avkrysningslister og nedtrekkslister

  • anyOf(radioValg, "1,2,3")

sann hvis radiovalg er 1 eller 2 eller 3

allOf

Elementet har kun disse valgene i oppgitt liste.

Fungerer kun for avkrysningslister.

F.eks avkrysningsliste med valgene 3 og 4 krysset av:

  • allOf(checkboxListe, "3,4")

Vil da feile hvis også 1 eller 2 valgt.

currentYear

Henter ut nåværende årstall.

Fungerer for tekstsvar.

  • "formula": "currentYear()" → '2019'
    "formula": "currentYear() - 1" → '2018'
    "formula": "currentYear() + 2" → '2021'
dateDiff

Gir ut antall dager mellom to datoer. Kan brukes mot dagens dato
eller to oppgitte datoer.

Fungerer for dato- og tidfelter.

  • "expression": "dateDiff(datoFelt) < -2"
  • Sjekker key datoFelt er mer enn to dager før dagens dato.
  • "expression":"dateDiff(datoFelt1, datoFelt2) > 5"
  • Sjekker at datoFelt1 er mer enn fem dager før datoFelt2.
firstValue

Velger verdien til det første elementen i rekken som har en verdi.
Kan f.eks brukes til et skjult inputfelt som velger riktig navn hvis
det vises ulike inputfelt for dette basert på conditions.

Fungerer for tekstsvar.

  • firstValue(avsender1.navn, avsender2.navn, avsender3.navn)
isEmpty

Sjekker om et element er undefined, null eller tom streng.

Fungerer for alle elementer som kan ha verdi.

  • isEmpty(kulturminner)
regexp

Tillatter et regulært uttrykk på en streng. Et kraftig verktøy som
gjør at vi kan se etter f.eks et ord eller tall i en hel streng.

Fungerer for tekstsvar, "Hent data" og tjenesteelementer.

  • regexp(kulturminner, "\"verneverdig\":\"Nei\"")
  • Ser etter teksten i responsstreng.

NB! Hvis uttrykket ikke kompilerer (dvs det er feil i syntaksen), vil alltid betingelsen gi negativ respons.

Tjenesteelementet (service)

Tillater uthenting av informasjon fra eksterne tjenester. Endepunktet må være tilgjengelig i brukers nettleser. Dersom endepunktet krever autentisering, transformering av data eller andre tilpasninger, anbefales en proxy i en av våre egne api'er (datadrevet-api, bolig-api etc). Tjenesten kan settes opp med mock-data, slik at det er enkelt å utvikle veileder i forhåndsvisning, samt å teste før et evt endepunkt er klart.

En tjeneste kan være "usynlig", ved at den ikke viser spørsmålstekst, hjelpetekst eller elementer i retur fra tjenesten. Da kan man typisk bruke returdata til å forhåndsutfylle standardverdier i andre elementer.

En service definerers i to kategorier:

  • prefetch
  • condition

Dersom tjenesteelementet ikke har Vises dersom-betingelser, vil disse samles opp og kjøres ved oppstart av veileder (og evt oppdatering/åpning av utkast hvis refresh:true).

Dersom tjenesteelement har Vises dersom-betingelser vil tjenesten kalles hver gang betingelsen inntreffer.

keyMå være definert for alle felter som lagres 
type"service" 
requiredAngir om det er påkrevet at tjenesten returnerer data. Hvis man f.eks kun skal hente for preutfylling til åpne felter, kan denne settes false.true/false. Hvis false så gir komponenten ikke feilmelding om endepunktet feiler.
url

Endepunk til tjenesten. Argumenter til tjeneseten kan flettes inn fra queryParams eller andre elementer.

NB! Hvis endepunktet som skal kalles er absolutt (dvs https://blabla), vil ikke skjemarammeverket hensynta kjøremiljø automatisk. I slike tilfeller skal "url"-attributtet inneholde endepunktet for bruk i prodmiljø og "testUrl"-attributtet skal inneholde endepunktet for bruk i testmiljøene.

Relativ URL:
 /ekstern/byggesak/api/eiendom/maajegsokeinnendors?gnr={{elements.hvaGjelderPaEiendommen.eiendom.}}&bnr={{elements.hvaGjelderPaEiendommen.eiendom.bruksnr}}gardsnr

Absolutt URL:
https://konfigkatalog-systest.api-test.oslo.kommune.no/konfig/hentGyldig/{{elements.bydel}}-D281-bydelsinfo/innhold

testUrl

Endepunk til tjenesten. Argumenter til tjeneseten kan flettes inn fra queryParams eller andre elementer.

NB! Det er viktig at testendepunkt angis for service-url'er som er absolutte (dvs https://blabla) da absolutte endepunkter ikke hensyntar kjøremiljø automatisk.

Relativ URL:
 /ekstern/byggesak/api/eiendom/maajegsokeinnendors?gnr={{elements.hvaGjelderPaEiendommen.eiendom.}}&bnr={{elements.hvaGjelderPaEiendommen.eiendom.bruksnr}}gardsnr

Absolutt URL:
https://konfigkatalog-systest.api-test.oslo.kommune.no/konfig/hentGyldig/{{elements.bydel}}-D281-bydelsinfo/innhold
refreshAngir om tjenesten skal "låse" ned resultatet. Spesielt for prefetch-service, hvor man ikke har behov for oppdatering etter opprettelse av utkastet.true/false
dialog.messageMelding under eksekvering av endepunktet. 
dialog.typeAngir hvordan melding ved eksekvering skal vises.

 "inline" - Melding vises direkte i skjema, mellom tekst til andre element.

"popup" - Melding vises i en popup-boks som blokkerer veileder. Kan med fordel brukes hvis man kaller en tjeneste som har forventet lang responstid.

dialog.titleTittel-linje i dialogboks hvis type="popup" 
error.messageFeilmelding som vises hvis tjenesten feiler. Hvis required=false vil det ignoreres hvis tjenesten feiler, og feilmelding er ikke nødvendig. 
config.methodMetode for ajax-kall.Kun 'GET' støttet.
config.datatypeSpesifiserer datatype for respons.Kun 'json' støttet.
config.payloadIkke i bruk før config.method='PUT' er støttet. 
labelViser label når tjenesten har hentet data. 
headerLevelAngir at label skal vises som et header-element (f.eks <h2></h2>)2,3,4
helpkpeySe helpkey . 
summary.labelAngir evt annen label-tekst i sammendraget 
elements

Et array av elementer som vises fra returdata fra tjenesten. Viser en liste med ledetekst og verdi. 
Spesifiserer felt med key fra returdata, se struktur over og eksempel under.

 
elements.typeAlltid 'provided' 
elements.labelLedetekst for elementet 
element.keyNavn i responsdata fra tjenesten.Fra eksempelboks vist under mock: "personopplysninger.fornavn"
styleAltenativ css-klasse for listen av elementer.Default "dl-horizontal floating text-left"
mockSpesifiserer en mock som kan brukes i sandkassen, samt evt i test/systest under utikling av en veileder. Bør fjernes for mal som legges i prod. 
(behold gjerne kopi i en egen .json-fil på Confluence)
 
mock.activeSkrur av eller på bruk av mocktrue/false
mock.delayFor å simulere en responstid til den faktiske tjenesten. Bør benyttes for å visualisere dialog.message ved utvikling1000 (millisekund)
mock.jsonJSON-struktur på forventet respons. Responsens må redigeres direkte i JSON-visning av mal i sandkassen.
"response": {    "personopplysninger": {        "fornavn": "Tor",        "etternavn": "Divel"    }}
conditionsSe conditions 

 

Eksempel:


  {
    "key": "kulturminner",
    "type": "service",
    "required": true,
    "refresh": true,
    "url": "/ekstern/byggesak/api/eiendom/maajegsokeinnendors?gnr={{elements.hvaGjelderPaEiendommen.eiendom.gardsnr}}&bnr={{elements.hvaGjelderPaEiendommen.eiendom.bruksnr}}&vei={{elements.hvaGjelderPaEiendommen.eiendom.valgtAdresseObjekt.gate}}&nummer={{elements.hvaGjelderPaEiendommen.eiendom.valgtAdresseObjekt.husnr}}&bokstav={{elements.hvaGjelderPaEiendommen.eiendom.valgtAdresseObjekt.bokstav}}",
    "error": {
        "message": "Finner ikke informasjon om kulturminner på angitt eiendom. Prøv igjen senere."
    },
    "dialog": {
        "message": "Henter informasjon om kulturminner",
        "type": "inline"
    },
    "mock": {
        "active": true,
        "delay": 2000,
        "response": {
            "verneverdig": "Ja"
        }
    }
  }