Skip to content

Template

En template er en måde at styre den måde, data pæsenteres eller transformeres på. Data har nogle attributter, og man vil gerne sammenstille disse attributter på en bestemt måde. Dette kan gøres med en template. Indholdet fra templaten kan f.eks. indsættes i en tom gemmensigtig <div>, og man kan dermed selv bestemme farver med mere.

For at få fat i en attribut fra data, benyttes <%= attributnavn %>. Det kunne f.eks. benyttes på denne måde:

html
<%= fornavn %> <%= efternavn %>

Hvilket tager værdierne fra attributterne "fornavn" og "efternavn", og adskiller dem med et mellemrum - for eksempel "Peter Petersen".

Da templates benyttes til at danne HTML med, kan man med fordel benytte sig af HTML kode i sin template. Her er et eksempel:

html
<strong><%= fornavn %></strong> <%= efternavn %>

Hvilket giver "<strong>Peter</strong> Petersen".

Man kan altså indsætte lige den HTML, man har lyst til herunder <br/>, <div> osv.

I Septima Widget er der nogle standard CSS-klasser, som man kan benytte sig af. Det kan for eksempel bruges til at tilføje en overskrift. Her er et simpelt eksempel, der vil kunne bruges i langt de fleste tilfælde:

html
<div class='widget-hoverbox-title'><%= navn %></div>
<div class='widget-hoverbox-sub'>
  <div><%= adresse %>, <%= postnr %> <%= by %></div>
  <div><a target='blank' href='<%= link %>'>Hjemmeside</a></div>
</div>

Bemærk

Hvis din konfiguration er en JSON-fil, så skal du bruge ' i stedet for " omkring attributværdierne i din HTML

Ovenstående syntaks er fra underscore.js hvor der kan læses mere om templates.

Template fra fil

En template angives typisk direkte i konfigurationen til en Widget. Men det er også muligt at placere indholdet til en template i en fil. Det gøres ved at tilføje en følgende oplysninger i stedet for den tekst, som man ellers ville angive som sin template som f.eks. her:

json
"template_info": {
  "url": "https://widget.cdn.septima.dk/3.6.1/data/templates/info19.html"
},

Fordelen ved at have templaten i en fil er dels at den er nemmere at overskue, specielt når den bliver mere kompleks. Men det er samtidig også nemmere at genbruge på tværs af konfigurationer. Det eneste krav er at browseren kan indlæse filen når den skal bruges.

Se er fungerende eksemple her.

Foruddefinerede templates

For at gøre det nemmere at definere en template uden kendskab til HTML og CSS, findes der i Septima Widget en mulighed for at benytte nogle foruddefinerede templates (namedtemplate). Fælles for alle foruddefinerede templates, er at konfigurationen til dem kan være den samme. Man skal blot definere hvordan overskriften skal vises, semt hvilke felter, der ellers skal vises. Herunder ses et eksemple på det.

json
"template_info": {
  "namedtemplate": "#popup001",
  "title": "navn",
  "includeAttr": [
    "Adresse+', '+Postnr+' '+By",
    {
      "type": "link",
      "title": "Læs mere",
      "name": "SE_MERE"
    }
  ]
}

I eksempler herover angives navnet på den foruddefinerede template (der findes pt. kun den ene) #popup001, hvilken attribut, der indeholder title samt en liste med hvilke andre felter, der skal vises. Det kan angives som en streng som her: "Adresse+', '+Postnr+' '+By" hvilket gør det muligt at angive ledetekster, enheder mv. omkring teksten. Hvis man vil have et klikbart link, skal det angives som vist i ovenstående.

Fordeln ved de foruddefinerede templates er at det er nemt at overskie hvad der bliver vist. Ulempen er dog at det er begrænset hvad du kan.

Se er fungerende eksemple med en popup, der bruger en foruddefineret template her. Den samme template kan dog også bruges til listevisning, dog skal der tilføjes lidt CSS som det er gjort i eksemplet her.

Hjælpefunktioner

Når man benytter en template, kan alle globale JavaSript funktioner på ens side anvendes. Det kan f.eks. være replace på en tekst eller funktioner som 'window.location'. Derudover findes der enkete indbyggede hjælpefunktioner, der kan gøre genereringen af templates nemmere. Herunder kan du læse om de indbyggede funktioner.

_getRandomColor (opacity, key)

Denne funktion kan f.eks. bruges til at danne en style med tilfældige farver. Som her:

json
"fillcolor": "<%= _getRandomColor() %>"

Funktionen returnerer en RGBA farve på denne form: rgba(255,0,0,1).

opacity

  • Type: number
  • Default: 1

For at styre gennemsigtigheden på farven, er det muligt at angive en opacity, der kan have en værdi mellem 0 og 1. Resultatet bliver at opacity i RGBA farven ændres. Her er et eksempel:

json
"fillcolor": "<%= _getRandomColor(0.6) %>"

key

  • Type: string

Hvis man gerne vil bruge den samme tilfælge farve flere steder, f.eks. alle features med en bestemt egenskab. Det kunne f.eks. være at alle ejendomme med samme BFE nummer, skal have samme farve. Dette gøres ved at angive en hvilken attribut, der styrer om to features skal have den samme farve:

json
"fillcolor": "<%= _getRandomColor(1, bfe) %>"

Hvis to features har det samme BFE nummer, så vil de nu få den samme farve.

_formatJSON (data)

Hvis ens template bruges til at danne en JSON, som f.eks. ved features-template og data allerede indeholder noget af den JSON, som man ønsker at benytte, kan man bruge _formatJSON til at formatere data korrekt. I dette tilfælde er det geometrien, der ligger direkte på data:

json
"features_template": "{ 'type': 'Feature', 'properties': { 'source': 'cvr', 'type': 'produktionsenhed','id': '<%= pnummer %>', 'navn': '<%= navn %>'}, 'geometry': <%= _formatJSON(geometri) %>}",

data

  • Type: object

Data skal være et JSON object.