Modul 1
Opprette app og lage enkelt skjema
I denne modulen skal du opprette selve applikasjonen, legge til datamodell og sette opp et enkelt skjema basert på kravene fra Sogndal kommune.
Du må utføre de to første oppgavene, opprette applikasjon og legge til datamodell, i Altinn Studios grafiske brukergrensesnitt, Altinn Studio Designer (Designer). Dersom du skal utvikle appen lokalt kan du følge instruksjonene for klargjøre for lokal utvikling og testing etter at du har gjort disse oppgavene.
Du kan utføre alle stegene i denne modulen i Designer. Det krever imidlertid lokal utvikling å gjennomføre de øvrige modulene og for å få en fullt fungerende applikasjon.
Temaer som dekkes i denne modulen:
- Opprette ny applikasjon
- Legge til datamodell
- Legge til skjemakomponenter og koble dem til datamodell
- Redigering av tekst
Oppgaver
Applikasjoner opprettes fra Altinn Studio Dashboard.
Krav fra kommunen
Applikasjonen må ha et beskrivende navn (ID) som gjør det enkelt å finne den igjen blant det store antallet applikasjoner Sogndal kommune har i Altinn Studio.
Oppgaver
Nyttig dokumentasjon
Datamodellen definerer type og format for data som kan sendes inn via en app.
Med Altinn Studios verktøy for datamodellering kan du legge til en datamodell ved å laste opp en xsd-fil eller lage en ny datamodell fra bunnen av. Du kan også ta utgangspunkt i en eksisterende datamodell og redigere den i et tekstredigeringsprogram eller direkte i Altinn Studio. I denne oppgaven skal du kun laste opp en ferdig datamodell.
Krav fra kommunen
Sogndal kommune har opprettet en datamodell som representerer type data de ønsker å samle inn fra fremtidige innbyggere.
Oppgaver
- Last ned xsd-filen. Hvis filen åpnes i nettleseren kan du opprette en ny tekstfil og kopiere over innholdet. Lagre filen som
datamodel.xsd
. Alternativt kan du kopiere URLen til filen og kjøre kommandoencurl <fil-URL> > datamodel.xsd
fra kommandolinjen. Åpne filen i et tekstredigeringsprogram og ta en nærmere titt på innholdet. - Last opp datamodellen i Altinn Studio
- Klikk “Last opp dine endringer” og følg instruksjonene for å lagre endringene.
- Åpne repository til appen fra Altinn Studio Dashboard og ta en nærmere titt på filene i mappen
App/models
.
Nyttig dokumentasjon
- Altinn Studio Datamodellering
- Beskrivelse av indikatorer i XSD
- Installere curl for Windows
- Altinn Studio Repository
Forståelsessjekk
De nevnte filene er alle generert ut ifra xsd-beskrivelsen av datamodellen. De beskriver all dataen og datafeltenes egenskaper. Alle egenskaper er ikke nødvendigvis overført i alle filene, men summen av dem skal opprettholde det som er beskrevet i xsd-filen.
- C#-modellen benyttes av app backend til å deserialisere data og gjøre den tilgjengelig for prosessering og validering.
.metadata.json
benyttes i Altinn Studio for å enkelt kunne koble komponenter og dynamikk til datafeltene..schema.json
-filen benyttes av altinn-app-frontend for skjemavalidering på klientsiden.
Tekster i Altinn Studio lagres i en egne språkfiler (også kalt tekstressurser) og kan knyttes til skjema-komponenter via en tekstnøkkel. Tekstene kan opprettes og redigeres i Altinn Studio Designer eller direkte i filen.
App/config/applicationmetadata.json
og i språkfilene.Krav fra kommunen
For at tjenesten skal være brukervennlig og mulig å benytte for de som sitter med synshemninger er det viktig at alle komponenter har gode og beskrivende overskrifter (labels).
Oppgaver
- Opprett tekstressurser for komponentene til det første skjemaet. Tekstene skal beskrive hva som skal fylles inn og vil vises over feltene. Ta en titt på neste oppgave for å se hvilke komponenter du trenger tekst til.
- Endre visningsnavn for applikasjonen. Det er viktig at applikasjonens visningsnavn klinger godt og er beskrivende for tjenesten.
- Legg til oversettelse(r) for tekstene. Applikasjonen må være tilgjengelig både på bokmål, nynorsk og engelsk. I en første versjon er det tilstrekkelig at kun ett av disse språkene støttes.
Husk å laste opp endringer når du jobber i Designer så de reflekteres i repoet. I neste steg skal du opprette komponenter og knytte tekstene du har opprettet til disse.
Nyttig dokumentasjon
Forståelsessjekk
I Altinn i dag støtter vi tre skriftspråk: bokmål, nynorsk og engelsk.
For å manuelt legge til støtte for engelsk i en applikasjon må du opprette filen resources.en.json
i mappen App/config/texts
:
App/config/texts/resources.en.json
{
"$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/text-resources/text-resources.schema.v1.json",
"language": "en",
"resources": []
}
Merk at language
-egenskapen øverst i filen må settes til en
.
Du kan konfigurere komponentene i en applikasjon i det grafiske brukergrensesnittet Altinn Studio Designer.
Alternativt kan du gjøre det manuelt ved å redigere filen <page>.json
som beskriver strukturen til en skjemaside. Du finner filen i App/ui/layouts
.
Krav fra kommunen
Første skjemaside innhenter personlig informasjon om tilflytteren og skal ha følgende komponenter:
- Navn
- Fornavn
- Mellomnavn (valgfritt)
- Etternavn
- Alder
- Adresse
- Gateadresse
- Postnummer
- Poststed
- Kontaktinformasjon
- Epost
- Telefon
Feltene skal være obligatoriske med mindre noe annet er indikert.
Oppgaver
- Sett opp den første skjemasiden med komponenter basert på kravene fra kommunen.
- Koble tekst til hver av komponentene.
Husk å laste opp endringer når du jobber i Designer så de reflekteres i repoet.
Nyttig dokumentasjon
- Hvordan bygge et enkelt skjema i Altinn Studio
- Tilgjengelige komponenter i Altinn Studio
- Retningslinjer for bruk av komponenter
Forståelsessjekk
I applikasjonsrepoet ditt finner du <page>.json
i mappen App/ui/layouts
. JSON-filen beskriver skjemasiden du har satt opp i Altinn Studio
gitt at du har lastet opp endringene (<page>
erstattes av navnet til siden, for eksempel data.json
).
For å finne komponenten som er koblet til epost-feltet kan du søke etter ’epost’.
Navnet på feltet som komponenten er koblet til finner du under dataModelBindings.simpleBinding
(markert).
App/ui/layouts/{page}.json
{
...
"id": "epost",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Kontaktinformasjon.Epost"
},
"required": true,
"readOnly": false,
"textResourceBindings": {
"title": "innflytter.epost"
}
}
Løsningen er å endre type
-feltet fra Input
til TextArea
(markert).
App/ui/layouts/{page}.json
{
"id": "mellomnavn",
"type": "TextArea",
"textResourceBindings": {
"title": "innflytter.mellomnavn"
},
"dataModelBindings": {
"simpleBinding": "Innflytter.Mellomnavn"
},
"required": true,
"readOnly": false
}
Oppsummering
I denne modulen har du opprettet en applikasjon i Altinn Studio, lagt til en datamodell og satt opp en skjemaside som kobler komponenter til noen av feltene i datamodellen.
Dersom du har klargjort for lokal utvikling har du i tillegg klonet applikasjonen for å kunne videreutvikle den i ditt lokale utviklingsmiljø. Applikasjonen skal kunne kjøres på din lokale maskin med LocalTest og du skal kunne fylle inn feltene.
Løsningsforslag
resources.nb.json
filen i repoet.Tekster i Altinn Studio
Tekster i repository
App/config/texts/resource.nb.json
{
"language": "nb",
"resources": [
{
"id": "appName",
"value": "Flyttemelding Sogndal"
},
{
"id": "firstName",
"value": "Fornavn"
},
{
"id": "middleName",
"value": "Mellomnavn"
},
{
"id": "lastName",
"value": "Etternavn"
},
{
"id": "age",
"value": "Alder"
},
{
"id": "streetName",
"value": "Gatenavn"
},
{
"id": "postalCode",
"value": "Postnummer"
},
{
"id": "postalLocation",
"value": "Sted"
},
{
"id": "email",
"value": "E-post"
},
{
"id": "phone",
"value": "Telefonnummer"
}
]
}
Nedenfor kan du se hvordan den første skjemasiden ser ut og hvilke komponenter vi har brukt.
Komponenter
Komponentinnhold
Under kan du se innholdet til “Mellomnavn”-komponenten.
Her har vi satt komponent-ID, feltet i datamodellen komponenten er knyttet til og angitt nøkkelen til tekstressursen som vi definerte i forrige steg.
Innstillinger - “Påkrevd”
Huk av for ‘Det skal være påkrevd for brukeren å svare’ for felt som er obligatoriske for brukeren (alle felt med unntak av “Mellomnavn”):
Skjemaside
Under finner du koden for den første skjemasiden som ligger i repoet under App/ui/layouts/
.
App/ui/layouts/innflytterPersonalia.json
{
"$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4//schemas/json/layout/layout.schema.v1.json",
"data": {
"layout": [
{
"id": "firstName",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Fornavn"
},
"required": true,
"readOnly": false,
"textResourceBindings": {
"title": "firstName"
}
},
{
"id": "middleName",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Mellomnavn"
},
"required": false,
"readOnly": false,
"textResourceBindings": {
"title": "middleName"
}
},
{
"id": "lastName",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Etternavn"
},
"required": true,
"readOnly": false,
"textResourceBindings": {
"title": "lastName"
}
},
{
"id": "age",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Alder"
},
"required": true,
"readOnly": false,
"textResourceBindings": {
"title": "age"
}
},
{
"id": "address",
"type": "Address",
"dataModelBindings": {
"address": "Innflytter.Adresse.Gateadresse",
"zipCode": "Innflytter.Adresse.Postnr",
"postPlace": "Innflytter.Adresse.Poststed"
},
"simplified": true,
"readOnly": false,
"required": true
},
{
"id": "email",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Kontaktinformasjon.Epost"
},
"required": true,
"readOnly": false,
"textResourceBindings": {
"title": "email"
}
},
{
"id": "phoneNumber",
"type": "Input",
"dataModelBindings": {
"simpleBinding": "Innflytter.Kontaktinformasjon.Telefonnummer"
},
"required": true,
"readOnly": false,
"textResourceBindings": {
"title": "phone"
}
},
{
"id": "NavigationButtons-yxdxMR",
"type": "NavigationButtons",
"showBackButton": true
}
]
}
}