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.
| key | Må være definert for alle felter som lagres | |
| type | "service" | |
| required | Angir 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: |
| 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 |
| refresh | Angir 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.message | Melding under eksekvering av endepunktet. | |
| dialog.type | Angir 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.title | Tittel-linje i dialogboks hvis type="popup" | |
| error.message | Feilmelding som vises hvis tjenesten feiler. Hvis required=false vil det ignoreres hvis tjenesten feiler, og feilmelding er ikke nødvendig. | |
| config.method | Metode for ajax-kall. | Kun 'GET' støttet. |
| config.datatype | Spesifiserer datatype for respons. | Kun 'json' støttet. |
| config.payload | Ikke i bruk før config.method='PUT' er støttet. | |
| label | Viser label når tjenesten har hentet data. | |
| headerLevel | Angir at label skal vises som et header-element (f.eks <h2></h2>) | 2,3,4 |
| helpkpey | Se helpkey . | |
| summary.label | Angir evt annen label-tekst i sammendraget | |
| elements | Et array av elementer som vises fra returdata fra tjenesten. Viser en liste med ledetekst og verdi. | |
| elements.type | Alltid 'provided' | |
| elements.label | Ledetekst for elementet | |
| element.key | Navn i responsdata fra tjenesten. | Fra eksempelboks vist under mock: "personopplysninger.fornavn" |
| style | Altenativ css-klasse for listen av elementer. | Default "dl-horizontal floating text-left" |
| mock | Spesifiserer 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.active | Skrur av eller på bruk av mock | true/false |
| mock.delay | For å simulere en responstid til den faktiske tjenesten. Bør benyttes for å visualisere dialog.message ved utvikling | 1000 (millisekund) |
| mock.json | JSON-struktur på forventet respons. Responsens må redigeres direkte i JSON-visning av mal i sandkassen. | "response": { "personopplysninger": { "fornavn": "Tor", "etternavn": "Divel" }} |
| conditions | Se 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"
}
}
}