Sist endret: 19. mar. 2024

Repeterende grupper

Oppsett for repeterende grupper

    Grupper i datamodellen inneholder ett eller flere felter. Man lager en repeterende gruppe komponent ved å sette "type" til "RepeatingGroup" En gruppe som er repeterende i datamodellen må også settes opp som repeterende i skjemaet/layout-konfigurasjonen, ellers vil lagring av data feile. I JSON defineres en repeterende gruppe som en array/liste med objekter (hvor hvert objekt representerer en rad i en repeterende gruppe). I XML defineres en repetrende gruppe som en liste med elementer (hvor hvert element er en gruppe med egenskaper, gjengitt som en rad i en repeterende gruppe).

    Eksempel

    Under vises et skjema med en repeterende gruppe som:

    • Inneholder to komponenter (avkrysningsboks og adresse)
    • Kan repeteres opp til 3 ganger
    • Er knyttet til datamodellen gjennom GruppeListe

    Skjema med repeterende gruppe
    Skjema med repeterende gruppe

     1{
     2  "$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/layout/layout.schema.v1.json",
     3  "data": {
     4    "layout": [
     5      {
     6        "id": "gruppe",
     7        "type": "RepeatingGroup",
     8        "children": [
     9          "avkrysningsboks",
    10          "adresse"
    11        ],
    12        "maxCount": 3,
    13        "dataModelBindings": {
    14          "group": "GruppeListe"
    15        }
    16      },
    17      {
    18        "id": "avkrysningsboks",
    19        "type": "Checkboxes",
    20        "textResourceBindings": {
    21          "title": "Avkrysningsboks"
    22        },
    23        "dataModelBindings": {
    24          "simpleBinding": "GruppeListe.Avkrysning"
    25        },
    26        "options": [
    27          {
    28            "label": "Navn",
    29            "value": "Verdi1"
    30          },
    31          {
    32            "label": "Adresse",
    33            "value": "Verdi2"
    34          }
    35        ],
    36        "required": true
    37      },
    38      {
    39        "id": "adresse",
    40        "type": "Address",
    41        "dataModelBindings": {
    42          "address": "GruppeListe.Adresse",
    43          "zipCode": "GruppeListe.Postnr",
    44          "postPlace": "GruppeListe.Poststed"
    45        },
    46        "simplified": true,
    47        "readOnly": false,
    48        "required": true
    49      }
    50    ]
    51  }
    52}
    

    Parametre

    ParameterPåkrevdBeskrivelse
    idJaUnik ID, tilsvarer ID på andre komponenter. Må være unik i layout-filen, og bør være unik på tvers av sider.
    typeJaMå settes til Group
    dataModelBindingsNeiMå settes for repeterende grupper med skjemakomponenter under, og må peke mot den repeterende strukturen i datamodellen.
    textResourceBindingsNeiKan settes for grupper, se nærmere beskrivelse under.
    maxCountNeiAntall ganger en gruppe kan repetere.
    minCountNeiValidering. Setter et minimum antall rader som må eksistere før den repeterende gruppen er godkjennt og bruker kan bevege seg videre.
    childrenJaListe over komponent-IDer som inkluderes i gruppen.
    editNeiEgenskaper og alternativer for redigerings-/utfyllingsvisningen for en repeterende gruppe.
    tableHeadersNeiListe over komponenter som skal utgjøre kolonner i tabellvisningen for den repeterende gruppen. Om ingen er spesifisert, blir alle komponenter fra children vist.
    tableColumnsNeiObjekt som inneholder egenskaper for kolonnene som vises i tabellen.
    stickyHeadersNoDersom satt til true, gjøres tabell headerene sticky.

    textResourceBindings

    Det er mulig å legge til ulike nøkler i textResourceBindings for å overstyre standardtekster:

    • title - tittel som blir vist over den repeterende gruppen og over hver gruppe-rad i en Summary-komponent.
    • summaryTitle - dersom denne er satt, vil den overstyre title i Summary-komponenten.
    • description - beskrivelse som blir vist over den repeterende gruppen under tittelen.
    • add_button - blir lagt til på enden av “Legg til ny” teksten på knappen, og kan brukes til å f.eks ha tekst som sier “Legg til ny person”.
    • add_button_full - blir brukt som egendefinert tekst på “Legg til ny” knappen. Overstyrer add_button dersom begge er satt.
    • save_button - blir brukt som tekst i “Lagre”-knappen når brukeren fyller ut data.
    • save_and_next_button - blir brukt som tekst i “Lagre og åpne neste”-knappen dersom denne er aktivert.
    • edit_button_open - blir brukt som tekst i “Endre” knappen i tabellen når brukeren skal åpne et element.
    • edit_button_close - blir brukt som tekst i “Endre” knappen tabellen når brukeren skal lukke et element.

    Grupper i datamodellen inneholder ett eller flere felter. Grupper er definert som repeterende dersom de har maxCount > 1 i layout-konfigurasjonen. En gruppe som er repeterende i datamodellen må også settes opp som repeterende i skjemaet/layout-konfigurasjonen, ellers vil lagring av data feile. I JSON defineres en repeterende gruppe som en array/liste med objekter (hvor hvert objekt representerer en rad i en repeterende gruppe). I XML defineres en repetrende gruppe som en liste med elementer (hvor hvert element er en gruppe med egenskaper, gjengitt som en rad i en repeterende gruppe).

    Eksempel

    Under vises et skjema med en repeterende gruppe som:

    • Inneholder to komponenter (avkrysningsboks og adresse)
    • Kan repeteres opp til 3 ganger
    • Er knyttet til datamodellen gjennom GruppeListe

    Skjema med repeterende gruppe
    Skjema med repeterende gruppe

     1[
     2  {
     3    "id": "gruppe",
     4    "type": "Group",
     5    "children": [
     6      "avkrysningsboks",
     7      "adresse"
     8    ],
     9    "maxCount": 3,
    10    "dataModelBindings": {
    11      "group": "GruppeListe"
    12    }
    13  },
    14  {
    15    "id": "avkrysningsboks",
    16    "type": "Checkboxes",
    17    "textResourceBindings": {
    18      "title": "Avkrysningsboks"
    19    },
    20    "dataModelBindings": {
    21      "simpleBinding": "GruppeListe.Avkrysning"
    22    },
    23    "options": [
    24      {
    25        "label": "Navn",
    26        "value": "Verdi1"
    27      },
    28      {
    29        "label": "Adresse",
    30        "value": "Verdi2"
    31      }
    32    ],
    33    "required": true
    34  },
    35  {
    36    "id": "addresse",
    37    "type": "AddressComponent",
    38    "dataModelBindings": {
    39      "address": "GruppeListe.Adresse",
    40      "zipCode": "GruppeListe.Postnr",
    41      "postPlace": "GruppeListe.Poststed"
    42    },
    43    "simplified": true,
    44    "readOnly": false,
    45    "required": true
    46  }
    47]
    

    Parametre

    ParameterPåkrevdBeskrivelse
    idJaUnik ID, tilsvarer ID på andre komponenter. Må være unik i layout-filen, og bør være unik på tvers av sider.
    typeJaMå settes til Group
    dataModelBindingsNeiMå settes for repeterende grupper med skjemakomponenter under, og må peke mot den repeterende strukturen i datamodellen.
    textResourceBindingsNeiKan settes for grupper, se nærmere beskrivelse under.
    maxCountJaAntall ganger en gruppe kan repetere. Må settes til 1 eller mer for repeterende grupper.
    minCountNeiValidering. Setter et minimum antall rader som må eksistere før den repeterende gruppen er godkjennt og bruker kan bevege seg videre.
    childrenJaListe over komponent-IDer som inkluderes i gruppen.
    editNeiEgenskaper og alternativer for redigerings-/utfyllingsvisningen for en repeterende gruppe.
    tableHeadersNeiListe over komponenter som skal utgjøre kolonner i tabellvisningen for den repeterende gruppen. Om ingen er spesifisert, blir alle komponenter fra children vist.
    tableColumnsNeiObjekt som inneholder egenskaper for kolonnene som vises i tabellen.

    textResourceBindings

    Det er mulig å legge til ulike nøkler i textResourceBindings for å overstyre standardtekster:

    • title - tittel som blir vist over hver gruppe-rad i en Summary-komponent.
    • add_button - blir lagt til på enden av “Legg til ny” teksten på knappen, og kan brukes til å f.eks ha tekst som sier “Legg til ny person”.
    • add_button_full - blir brukt som egendefinert tekst på “Legg til ny” knappen. Overstyrer add_button dersom begge er satt.
    • save_button - blir brukt som tekst i “Lagre”-knappen når brukeren fyller ut data.
    • save_and_next_button - blir brukt som tekst i “Lagre og åpne neste”-knappen dersom denne er aktivert.
    • edit_button_open - blir brukt som tekst i “Endre” knappen i tabellen når brukeren skal åpne et element.
    • edit_button_close - blir brukt som tekst i “Endre” knappen tabellen når brukeren skal lukke et element.