Gruppering av felter

Hvordan gruppere felter i skjema.

På denne siden:

Støtte for gruppering av felter er på plass i appene, men ikke i Altinn Studio. Oppsettet må gjøres manuelt inntil videre. Dokumentasjonen oppdateres når støtte for oppsett er på plass i Altinn Studio.

Oppsett

Felter i skjema kan settes opp til å bli del av en gruppe. Dette kan brukes til å f.eks. sette opp dynamikk på en enkelt gruppe av felter, i stedet for på hvert enkelt felt. I tillegg må felter kunnne grupperes for å støtte repeterende grupper i skjema.

En gruppe settes opp i FormLayout.json, sammen med de andre komponentene i skjemaet. Noen punkter å notere seg:

  • Gruppen må ligge før ev. komponenter som skal inngå i gruppen i FormLayout.json.
  • En gruppe ha type: "group" satt for at den skal registreres som en gruppe

Eksempel på en (repeterende) gruppe definert i FormLayout.json som inneholder 4 felter som kan repetere 3 ganger: En gruppe defineres på følgende måte i FormLayout.json:

{
  "id": "<unik-id>",
  "type": "group",
  "dataModelBindings": {
    "group": "<gruppen i datamodellen (kun repeterende grupper)>"
  },
  "maxCount": <Antall ganger gruppen kan repetere>,
  "children": [
    "<felt-id>",
    "<felt-id>",
    ...
  ],
  tableHeadings: [
    "<felt-id>
  ],
  "textResourceBindings: {
    add_button: "tekstressurs.felt"
  }
}
Parameter Påkrevd Beskrivelse
id Ja Unik ID, tilsvarer ID på andre komponenter. Må være unik i FormLayout.json-filen.
type Ja MÅ være “group”. Sier at dette er en gruppe.
dataModelBindings Nei MÅ være satt for repeterende grupper, med group-parameteren som i eksempelet over. Skal peke på den repeterende gruppen i datamodellen.
textResourceBindings Nei Kan være satt for repeterende grupper, med add_button-parameteren som i eksemepelt over. Denne bindingen til bli lagt til på knappen.
maxCount Ja Antall ganger en gruppe kan repetere. Settes til 1 om gruppen ikke er repeterende.
children Ja Liste over de feltene som skal inngå i gruppen. Her brukes felt-id fra FormLayout.json
tableHeadings Nei Liste over komponentener som skal inngå som en del av tabbel header feltene. Om ikke spesifisert så vises alle komponentene.

Repeterende grupper

Grupper i datamodellen inneholder ett eller flere felter. Grupper er definert som repeterende dersom de har maxOccurs > 1 i xsd’en. En gruppe som er repeterende i datamodellen må også settes opp som repeterende i skjemaet, ellers vil lagring av data feile.

Eksempel

Skjema med noen enkelt-felt, og en repeterende gruppe som:

  • inneholder 3 felter
  • kan repeteres opp til 3 ganger
  • har lagt til egen streng på “legg til” knappen
Skjema med repeterende gruppe

Skjema med repeterende gruppe

Oppsett i FormLayout.json fra eksempelet over:

 1{
 2  "data": {
 3    "layout": [
 4      {
 5        "id": "gruppe-1",
 6        "type": "Group",
 7        "children": [
 8          "ac555386-ac2b-47a0-bb1b-842f8612eddb",
 9          "5c079cd4-c80c-44ea-b8b8-18e323267a37"
10        ],
11        "maxCount": 3,
12        "dataModelBindings": {
13          "group": "spesifisering-grp-5836"
14        },
15        "textResourceBindings": {
16          "header": "person"
17        }
18      },
19      {
20        "id": "ac555386-ac2b-47a0-bb1b-842f8612eddb",
21        "type": "Checkboxes",
22        "componentType": 5,
23        "textResourceBindings": {
24          "title": "Avkrysningsboks"
25        },
26        "dataModelBindings": {
27          "simpleBinding": "klage-grp-5805.spesifisering-grp-5836.KlageSpesifisering-datadef-25457.value"
28        },
29        "options": [
30          {
31            "label": "25795.OppgavegiverNavnPreutfyltdatadef25795.Label",
32            "value": "Verdi1"
33          },
34          {
35            "label": "25796.OppgavegiverAdressePreutfyltdatadef25796.Label",
36            "value": "Verdi2"
37          }
38        ],
39        "required": true
40      },
41      {
42        "id": "5c079cd4-c80c-44ea-b8b8-18e323267a37",
43        "type": "AddressComponent",
44        "componentType": 11,
45        "textResourceBindings": {
46          "title": "Adresse" 
47        },
48        "dataModelBindings": {
49          "address": "klage-grp-5805.spesifisering-grp-5836.KlageSpesifiseringg-datadef-12345.value"
50        },
51        "simplified": true,
52        "readOnly": false,
53        "required": true
54      }
55    ]
56  }
57}