Inleiding

Swing Viewer beschikt over een module voor het maken van dynamische en vaste rapporten. Met deze rapportenmodule is het mogelijk om tabellen, grafische presentaties en teksten samen te voegen in een dynamisch gegenereerde (document) weergave. De gebruiker kan vervolgens door het opgeven van perioden en/of gebieden het gewenste rapport aanmaken. Beheerders van Swing kunnen deze dynamische rapporten opzetten in Swing Studio. Daarnaast is het mogelijk om vaste rapporten te maken. Dit kunnen html of pdf bestanden zijn en zijn verder niet aanpasbaar. Hoe het maken van rapporten in zijn werk gaat, staat in deze handleiding beschreven.

Het hoofdstuk ‘Opzetten dynamisch rapport’ legt uit hoe in enkele stappen een eenvoudig dynamisch rapport is op te zetten. Dit rapport is eventueel verder aan te vullen met dynamisch waarden en/of tekst. Het hoofdstuk ‘Opzetten vast rapport’ beschrijft hoe een vast rapport gemaakt kan worden. Het hoofdstuk ‘Geavanceerd rapport’ beschrijft de overige mogelijkheden en functies van de rapportenmodule voor het verder dynamiseren van het rapport.

Heeft u vragen en/of opmerkingen over de rapportenmodule van Swing Viewer, dan kunt u contact opnemen met de Swing Helpdesk op telefoonnummer 015 – 2799 399 of stuurt u een bericht naar helpdesk@swing.eu.

Opzetten dynamisch rapport

In de volgende paragrafen is in 6 stappen beschreven hoe een eenvoudig dynamisch rapport in Swing te maken is. Voor het maken van een rapport dient men te zijn ingelogd in Studio.

Rapport aanmaken in Studio

Ga in het menu via ‘Weergave’ naar ‘Rapporten’. De pagina ‘Rapporten’ opent zich in hetzelfde scherm.

1

Klik onderaan de pagina ‘Rapporten’ op de button ‘Item toevoegen’ om een nieuw rapport aan te maken. Een pop-up met de rapportinstellingen opent zich.

1

Hierin zijn de volgende kenmerken van het rapport in te stellen:

  • Rapportcode: unieke code die is opgebouwd uit uitsluitend letters, cijfers en/of een underscore (standaard staat hier een willekeurige code, die te wijzigen is)
  • Naam: de naam van het rapport is zichtbaar in de themaboom en bovenin het weergavescherm
  • Vast rapport: voor een vast rapport (bijvoorbeeld een pdf) moet deze optie zijn aangevinkt
  • Type: de meest gebruikte typen zijn pdf voor vaste rapporten en html (nodig voor dit rapport) voor dynamische rapporten
  • Bestandsnaam: bij een vast rapport wordt hier een bestand (pdf) gekoppeld, dat is opgenomen bij de rapportbestanden
  • WordTemplate: voor de download van het rapport in Word wordt hier een Wordsjabloon opgegeven, dat is opgenomen bij de rapportbestanden (optioneel)
  • PowerPointTemplate:voor de download van het rapport in Powerpoint wordt hier een Powerpointsjabloon opgegeven, dat is opgenomen bij de rapportbestanden (optioneel)
  • Beschrijving: mogelijkheid om een korte beschrijving voor bij het rapport op te geven (optioneel)
  • Meer informatie: mogelijkheid om link naar een informatiebestand of andere website op te geven (optioneel)
  • Openen in een nieuw venster: optie om het rapport te openen in een nieuw venster (standaard uit)
  • Pdf export toegestaan: optie om het rapport te kunnen downloaden in pdf (standaard aan)
  • Word export toegestaan: optie om het rapport te kunnen downloaden in Word (standaard aan)
  • Powerpoint export toegestaan: optie om het rapport te kunnen downloaden in Word (standaard aan)
  • UseUserLayout: indien deze optie is ingeschakeld dan wordt de opmaak gebruikt welke is gedefinieerd bij de gebruikersgroep
  • Zoektermen: vul hier algemene zoektermen in voor dit rapport, gebruik aanhalingsteken om zoektermen van elkaar te scheiden. De zoektermen worden door Swing gebruikt om het zoekresultaat te optimaliseren
  • Gebruik Base href: deze instelling zorgt ervoor dat er een base element toegevoegd wordt aan de pagina. Daarin staat een verwijzing naar de rapportbestanden map waar bijvoorbeeld stylesheets en scripts in staan. Als deze instelling uit staat moet ervoor gezorgd worden dat de link naar een stylesheet of script rechtstreeks gelinkt wordt dus met de hele url in de verwijzing. Het grote nadeel van het uitzetten van deze instelling is dat de links steeds moeten worden aangepast bij het wisselen tussen de live en studio omgeving.
  • Gebruik Scroll script: als "Gebruik Base href" aanstaat werken interne links niet meer goed, bijvoorbeeld bij een inhoudsopgave. Een oplossing hiervoor is het aanzetten van de instelling "Gebruik Scroll script", hiermee wordt javascript toegevoegd aan het rapport dat ervoor zorgt dat de links weer goed werken.

Klik na het invullen van de velden op ‘Ok’ om de kenmerken op te slaan en het rapport aan te maken. Het rapport is toegevoegd in een nieuwe regel.

1

Door te klikken op het veld ‘Inhoud’ opent zich een pop-up waarin het mogelijk is de inhoud van het rapport aan te passen. Standaard is het rapport voorzien van enkele noodzakelijke regels html, waaronder de ‘title’ en de verwijzing naar het stijlbestand (css). Vul de titel in tussen de elementen en en wijzig indien nodig de verwijzing naar het stijlbestand of de naam van het stijlbestand. Klik op ‘Ok’ om de wijzigingen op te slaan.

1

Presentaties maken in Viewer

Ga in het menu via ‘Versie’ naar ‘Testen’ om de testversie op te starten.

1

Maak in de testversie de presentaties aan die in het rapport zullen worden weergegeven. Maak hiervoor gebruik van de tabbladen (klik op het plusje om een nieuw tabblad toe te voegen, zie de rode rechthoek in het onderstaande voorbeeld) om meerdere presentaties in één rapport weg te kunnen schrijven. Als alle presentaties gemaakt zijn open dan het menu linksboven door op 1te klikken. Kies onderin het menu voor ‘Toevoegen als rapport (studio)’ om de presentaties op te slaan als een nieuw rapport in Studio. Er verschijnt pop-up met de melding dat het rapport is opgeslagen.

1

SRL code toevoegen

Ga terug naar de pagina ‘Rapporten’ in Studio. Het zojuist aangemaakte rapport is hier opgeslagen. Als het rapport nog niet zichtbaar is, druk op F5 om de pagina te verversen. Hierna zou het rapport zichtbaar moeten zijn.

Klik bij het nieuwe rapport op ‘Inhoud’ om de inhoud van het rapport te bekijken. In de nieuw geopende pop-up is de code van het rapport zichtbaar. Voor het opvragen van de presentaties in het rapport is een speciale rapportcode gebruikt genaamd Swing Report Language (SRL). SRL begint en eindigt altijd met een hashtag (‘#’). Hieronder een korte uitleg van de SRL die gebruikt is om een presentatie te definiëren in een rapport:

1
  • #
    De SRL wordt geopend met een hashtag (‘#’).
  • pres_1 = Presentation {Hier wordt een presentatie gedefinieerd met als naam ‘pres_1’. De presentatie wordt geopend met een accolade (‘{’).
  • Selection {Dit is de selectie die wordt gebruikt in de presentatie. Hierin staan per regel de onderwerpen, perioden, gebieden en (eventueel) gebiedsvergelijkingen vermeld. Als er van een type meerdere items geselecteerd zijn, betreft het een lijst. Een lijst wordt gedefinieerd binnen blokhaken en de items worden gescheiden door een komma (‘,’). In het bovenstaande voorbeeld is dit zichtbaar in de regels met Ind., Per. en Compare. Elke regel wordt afgesloten met een puntkomma (‘;’).
  • [Ind.pbev0014, Ind.pbev1524, Ind.pbev2534, Ind.pbev3544];Dit zijn de onderwerpen. De onderwerpcodes worden voorafgegaan door ‘Ind.’ (van Indicator). Bij gebruik van kubusdata wordt de kubus opgenomen als onderwerp (‘Ind.’). De opvraag van kubusdata kan worden verfijnd door voor elke gewenste dimensie een extra regel op te nemen met de code van de dimensie of de codes van de dimensie-items. Om aan te geven dat het om een dimensie(-item) gaat wordt de code voorafgegaan door ‘Dim.’ (van Dimension), bijvoorbeeld ‘[Dim.leeftijd_0, Dim.leeftijd_1, Dim.leeftijd_2, Dim.leeftijd_3];’
  • [Per._2000, Per._2001, Per._2002, Per._2003];Dit zijn de gekozen perioden, die voorafgegaan worden gegaan door ‘Per.’ (van Period). Het liggende streepje (‘_’) geeft aan dat het een code is in plaats van een getal.
  • Geo.gemeente._503;Dit is het gekozen gebied. ‘Geo.’ geeft aan dat het over een gebied gaat, vervolgens geeft ‘gemeente’ aan dat het gebiedsniveau gemeente is en ‘_503’ is de gebiedscode, gescheiden van elkaar door een punt (‘.’). Het liggende streepje bij de gebiedscode geeft aan dat het om een code gaat in plaats van een getal.
  • Compare: [Geo.provincie._9, Geo.nederland._1]; (optioneel)Via ‘Compare’ worden de vergelijkingsgebieden gekozen, in dit geval provincie en Nederland. Deze codes zijn op dezelfde manier opgebouwd als hierboven beschreven bij ‘Geo.gemeente._503’.
  • };De selectie wordt afgesloten door een accolade (‘}’).
  • View: Table;Via ‘View’ wordt de presentatievorm gekozen, in dit voorbeeld een tabel (‘Table’).
  • }De presentatie wordt afgesloten met een accolade (‘}’).
  • #SRL wordt afgesloten met een hashtag (‘#’).

Met de codes 'Ind.', 'Per.' en 'Geo.' wordt dus aangegeven dat het om respectievelijk een onderwerp, periode of gebied gaat. Dit is van belang om eventuele conflicten in de Studio database te voorkomen. Indien bijvoorbeeld gelijknamige objecten (onderwerp-, bron-, eenheidscode etc.) in de database aanwezig zijn, kan dit voor problemen zorgen. Wordt bijvoorbeeld, in plaats van 'Geo.gemeente', de code 'gemeente' gebruikt terwijl er al een onderwerp met de code 'gemeente' in de database aanwezig is. Dan kan dit problemen opleveren in het rapport.

Kopieer alle SRL inclusief de hashtags (alles selecteren en vervolgens met Ctrl+c kopiëren) en sluit de pop-up door rechts onderin op ‘Annuleren’ te klikken. Open nu het in stap 1 aangemaakte rapport door op ‘Inhoud’ te klikken en plak (Ctrl+v) de gekopieerde SRL boven de html van het rapport. Klik rechts onderin op ‘Ok’ om de inhoud op te slaan.

1
Uitcommentariëren SRL

Desgewenst kan er commentaar worden toegevoegd binnen de SRL of bepaalde delen van SRL kunnen tijdelijk worden uitgezet. Dit kan op 2 manieren:

  • //De regel “Met de dubbele slash commentarieer je 1 regel uit” dient als commentaar. Door de ‘//’ negeert Swing hetgeen wat er op deze regel staat. Zo kan je je SRL van commentaar voorzien, of bepaalde stukken code tijdelijk uitschakelen. Let op: alleen hetgeen wat op dezelfde regel staat (in onderstaand voorbeeld is dat regel 22) wordt genegeerd.
  • /*…*/In onderstaand voorbeeld hebben we de ‘input_period’ uitgecommentarieerd. Swing zal deze input negeren en er verder niets meer mee doen. Alles wat binnen de /* en de */ staat wordt dus genegeerd. Hier is het niet zo dat hetgeen wat uitgecommentarieerd is, op 1 regel moet staan.
1

Presentaties weergeven in rapport

Nu de SRL van de presentaties is toegevoegd aan het rapport kan met de functie Show op elke gewenste plek binnen de body van de html een presentatie worden weergegeven. Dit wil dus zeggen dat de eerste presentatie in de SRL niet de eerste presentatie in het rapport hoeft te zijn. De SRL voor het weergeven van een presentatie (met de code ‘pres_1’) ziet er als volgt uit: #show(pres_1)#. Deze SRL kan tussen de html worden geplaatst, maar kan ook binnen een html-element (bijvoorbeeld het element ‘figure’) worden geplaatst. Dit ziet er dan als volgt uit:

1

Klik bij het rapport op ‘Inhoud’ en plaats de SRL om de presentaties weer te geven (zoals hierboven beschreven) op de gewenste plekken binnen de html. Klik vervolgens op ‘Ok’ om de wijzigingen op te slaan.

1

Bekijk het resultaat in Viewer door te klikken op ‘Aanpassen in Viewer’. Hiermee opent het rapport zich in de rapporteneditor. Hierin kan het rapport worden gewijzigd, waarna direct het resultaat van de wijzigingen zichtbaar is. Bij het eerste gebruik van de rapporteneditor kan het zijn dat de browser het openen van de editor in een nieuw scherm blokkeert. Door pop-ups van de betreffende Studioversie toe te laten, zal de editor wel openen. 1

Dynamiseren van presentaties

Het rapport toont de presentaties nu nog met de ingestelde periode(n) en gebied(en). Deze staan ‘hard’ in de SRL van de presentaties gecodeerd. Om de presentaties dynamisch te maken, moeten er één of meerdere inputs aan de SRL toegevoegd worden. Deze inputs geven de gebruiker de mogelijkheid om een of meerdere perioden, gebieden en/of vergelijkingsgebieden te selecteren. Aan de hand van de selectie van de gebruiker wijzigen de presentaties in het rapport zich. Hoe deze inputs eruit zien en hoe ze werken, staat hieronder beschreven.

Hierbij is het van belang dat met de codes 'Ind.', 'Per.' en 'Geo.' wordt aangegeven dat het om respectievelijk een onderwerp, periode of gebied gaat. Dit om eventuele conflicten in de Studio database te voorkomen. Indien bijvoorbeeld gelijknamige objecten (onderwerpcodes, broncodes, eenheidscode etc.) in de database aanwezig zijn, kan dit voor problemen zorgen. Wordt bijvoorbeeld, in plaats van 'Geo.gemeente', de code 'gemeente' gebruikt terwijl er al een onderwerp met de code 'gemeente' in de database aanwezig is. Dan kan dit problemen opleveren in het rapport.

Input_period: selectie van periode(n)
1

Met het opnemen van de input_period is het voor een gebruiker mogelijk om één of meerdere perioden te kiezen. De input_period bevat de volgende onderdelen:

  • Type: geef hier aan om welk type input het gaat, in dit geval ‘Period’
  • Caption: geef hier de titel op van het selectiescherm voor de perioden (alleen zichtbaar bij meerdere inputs)
  • Instruction: hier kan een instructie voor de gebruiker bij deze input worden opgegeven
  • Level: geef hier een periodeniveau (code) op (MONTH, QUARTER, HALFYEAR of YEAR)
  • Subset: geef hier de periode(n) (code) op die gekozen mag/mogen worden. Met de functie Range kan ook een bereik van perioden worden opgegeven door de eerste en de laatste periode van het bereik op te geven, bijvoorbeeld ‘Range(_2000, _2004)’.
  • Min: geef hier op hoeveel perioden er minimaal gekozen moeten worden
  • Max:; geef hier op hoeveel perioden er maximaal gekozen mogen worden
Input_geo: selectie van gebied(en)
1

Met het opnemen van de input_geo is het voor een gebruiker mogelijk om van een (gekozen) gebiedsniveau één of meerdere gebieden te kiezen. De input_geo bevat de volgende onderdelen:

  • Type: geef hier aan om welk type input het gaat, in dit geval ‘Geo’
  • Caption: geef hier de titel op van het selectiescherm voor de gebieden (alleen zichtbaar bij meerdere inputs)
  • Instruction: hier kan een instructie voor de gebruiker bij deze input worden opgegeven
  • Level: geef hier één of meerdere gebiedsniveaus (codes) op
  • Min: geef hier op hoeveel gebieden er minimaal gekozen moeten worden
  • Max:; geef hier op hoeveel gebieden er maximaal gekozen mogen worden
Input_compare: selectie van vergelijkingsgebied(en)
1

Met het opnemen van de input_compare is het voor een gebruiker mogelijk om één of meerdere vergelijkingsgebieden te kiezen. De input_compare bevat de volgende onderdelen:

  • Type: geef hier aan om welk type input het gaat, in dit geval ‘GeoItem’
  • Caption: geef hier de titel op van het selectiescherm voor de vergelijkingsgebieden (alleen zichtbaar bij meerdere inputs)
  • Instruction: hier kan een instructie voor de gebruiker bij deze input worden opgegeven
  • Subset:geef hier één of meerdere ouders op van het gekozen gebied bij de input_geo. Door gebruik te maken van de functie parent(s) is het mogelijk de oudergebieden van het gekozen gebied bij de input_geo als keuze te tonen. ‘Parent(input_geo, provincie)’ toont een specifiek oudergebied, in dit geval de betreffende provincie, en ‘Parents(input_geo)’ toont alle (beschikbare) oudergebiedsniveaus.
  • Min: geef hier op hoeveel vergelijkingsgebieden er minimaal gekozen moeten worden
  • Max:; geef hier op hoeveel vergelijkingsgebieden er maximaal gekozen mogen worden
Input verbergen

Desgewenst is het mogelijk om een input te verbergen door een regel met de code ‘Hidden: true;’ toe te voegen aan de input.

Toepassen van inputs

Met behulp van deze inputs is het mogelijk de presentaties dynamisch te maken. Vervang hiertoe in de SRL van de presenatie(s) de perioden door ‘input_period’, de gebieden door ‘input_geo’ en de vergelijkingsgebieden door ‘input_compare’. Bij het vervangen van de vergelijkingsgebieden blijft het stukje code ‘compare:’ staan! Alle regels worden nog steeds afgesloten door een puntkomma. In het volgende voorbeeld is door het toepassen van de inputs de statische presentatie dynamisch gemaakt.

Statische presentatie:
1
Dynamische presentatie:
1

Presentaties opmaken

Presentaties kunnen nog verder opgemaakt worden. Zoals lettertypes, kleuren, het wel of niet tonen van een legenda etc. De opmaakinstellingen die binnen Studio beschikbaar zijn (Weergave > Opmaakinstellingen) zijn ook toe te passen voor de rapporten. De opmaakinstellingen zijn toe te passen voor het rapport als geheel, dus voor alle presentaties binnen het rapport. Maar ze zijn ook per presentatie instelbaar, deze overrulen de algemene opmaakinstellingen.

1

Binnen de rapportentabel zijn via de kolom ‘Presentatie instellingen’ de opmaakinstellingen van rapporten te benaderen. De instellingen die hier worden aangepast worden op alle presentaties binnen een rapport toegepast. Om hiervan af te wijken kunnen zogenaamde opmaakprofielen worden toegevoegd, deze kunnen aan specifieke presentaties worden gekoppeld en overrulen de algemene opmaakinstellingen. Nadat de presentatie instellingen van een specifiek rapport zijn geopend kan via de button ‘Voeg opmaakprofiel toe’ een opmaakprofiel worden toegevoegd. Per opmaakprofiel moet een unieke naam worden opgegeven en kunnen de opmaakinstellingen worden bepaald. Deze opmaakprofielen zijn via het drop down menu te selecteren. Om vervolgens een opmaakprofiel de koppelen aan een presentatie zal de volgende regel moeten worden toegevoegd bij de betreffende presentatie binnen de SRL code van het rapport: LayoutClass: "[Naam opmaakprofiel]";

1

In onderstaand voorbeeld is het opmaakprofiel ‘pres_1’ toegevoegd:

1

Alle afwijkingen t.o.v. de standaard opmaakinstellingen binnen Studio worden weggeschreven als XML code en zijn voor de gevorderde gebruiker aanpasbaar binnen de rapporten editor middels de button 1.De lay-out classes worden gescheiden door het element binnen het element . Onder default staan de algemene opmaakinstellingen.

1

Tekst toevoegen

Het rapport bevat nu dynamische presentaties. Het is mogelijk om deze aan te vullen met tekst. Dit kan alleen ‘vaste’ tekst zijn, maar is ook te combineren met ‘dynamische’ tekst(delen), die wijzigen aan de hand van de selectie van de gebruiker. Daarbij geldt vaak dat hoe meer keuzemogelijkheden de gebruiker bij de selectie van het rapport heeft (de eerder beschreven inputs), des te complexer de code voor de dynamische tekst kan worden.

Html

Swingrapporten maken gebruik van html in combinatie met een stylesheet (css) voor de structuur en de stijl van het rapport. Dat betekent dus dat alle (tekst)onderdelen moeten zijn voorzien van html-elementen. In het gekoppelde stylesheet staat opgegeven welke stijl de (tekst)onderdelen tussen html-elementen moeten krijgen. Bekende html-elementen zijn: <h1>, <h2>, etc., om aan te geven dat het om een kop gaat en <p> om aan te geven dat het om standaard tekst gaat. Belangrijk is dat alle (tekst)onderdelen ingesloten zijn tussen een openend html-element zoals bijvoorbeeld <p> en een sluitend html-element, in dit voorbeeld </p>. Bij bewerking van een rapport in de rapporteneditor wordt bij het invoeren van een openend element dit automatisch aangevuld met het sluitende element. Hieronder is een voorbeeld te zien van de html van een rapport (links) en de uiteindelijke weergave van het rapport (rechts).

1

In de rapporteneditor zit een ingebouwde controle op de toegepaste HTML. Klik voor de controle van de HTML op de button 1 links in de werkbalk van het rapport. In een pop-up verschijnt een overzicht met het aantal geconstateerde fouten en waar deze in het rapport te vinden zijn. Meer informatie over html en css is te vinden op websites als http://www.w3schools.com.

1
Dynamische tekst

Met behulp van diverse functies (SRL) is het ook mogelijk om (delen van de) tekst dynamisch te maken. Zo is er een functie waarmee de namen van de (vergelijkings)gebieden) en perioden uit de inputs zijn op te vragen. En ook van specifieke presentaties zijn zowel de namen van de (vergelijkings)gebieden en perioden, als de namen van de variabelen en items van dimensieniveaus op te vragen. Hieronder staan enkele voorbeelden van de meest gebruikte functies voor het opvragen van (dynamische) tekst. Overige functies staan in het volgende hoofdstuk beschreven.

De functie Name geeft de naam van een object weer. De SRL ziet er als volgt uit: #Name(object)#. Voorbeelden van objecten zijn een gebied, een periode, een variabele, maar ook een input. Dit zijn enkele voorbeelden waarbij de functie Name is gebruikt:

SRL Resultaat
#Name(input_geo)# de naam van het gekozen gebied (uit de input_geo)
#Name(input_period)# de naam van de gekozen periode (uit de input_period)
#Name(input_compare)# de naam van het gekozen vergelijkingsgebied (uit de input_compare)

Bovenstaande voorbeelden werken alleen als er bij een input maximaal één item selecteerbaar is. Als er meer dan één item te kiezen is, dan is het nodig om met de functie Item en een opgegeven index specifiek te verwijzen naar één van de gekozen items. De SRL ziet er als volgt uit: #Item(object, 0)# (de index ‘0’ verwijst naar het eerste item).

De volgende voorbeelden laten zien hoe de functies Name en Item gecombineerd te gebruiken zijn:

SRL Resultaat
#Name(Item(input_geo,0))# de naam van het eerst gekozen gebied (uit de input_geo)
#Name(Item(input_period,0))# de naam van de eerst gekozen periode (uit de input_period)
#Name(Item(input_compare,0))# de naam van het eerst gekozen vergelijkingsgebied (uit de input_compare)

Om het tweede gekozen (vergelijkings)gebied of periode te tonen dient de 0 vervangen te worden door 1, etc.

Het is ook mogelijk om alle gekozen items van een input weer te geven (kommagescheiden):

SRL Resultaat
#Write(input_geo)# de namen van de gekozen gebieden (uit de input_geo)
#Write(input_period)# de namen van de gekozen perioden (uit de input_period)
#Write(input_compare)# de namen van de gekozen vergelijkingsgebieden (uit de input_compare)

Het opvragen van namen van objecten uit een presentatie gebeurt ook met behulp van een combinatie van de functies Name en Item. De functie Item verwijst in dit geval naar een item van een van de dimensies van een presentaties. Een presentatie bevat in ieder geval de volgende dimensies: ‘dim_geo’ (gebieden), ‘dim_period’ (perioden), dim_variable (onderwerpen). Als er sprake is van een gebiedsvergelijking, dan zijn alle gebieden opgenomen in de dimensie ‘dim_geocompare’. Bij presentaties met kubusdata is ook mogelijk de namen van items van geselecteerde kubusdimensies op te vragen door de betreffende dimensie te vermelden in de code. De SRL ziet er als volgt uit: #Name(Item(code van presentatie, dimensieniveau, index))#.

De volgende voorbeelden geven per dimensie aan hoe de code er uitziet (voor presentatie een fictieve ‘pres_1’):

SRL Resultaat
#Name(Item(pres_1, dim_geo, 0))# de naam van het eerste gebied uit de presentatie (‘pres_1’)
#Name(Item(pres_1, dim_period, 0))# de naam van de eerste periode uit de presentatie (‘pres_1’)
#Name(Item(pres_1, dim_geocompare, 0))# de naam van het eerste gebied uit de presentatie (‘pres_1’) als er ook een vergelijkingsgebied in de selectie is opgenomen (alle gebieden samen vormen één lijst)
#Name(Item(pres_1, dim_variable, 0))# de naam van het eerste onderwerp uit de presentatie (‘pres_1’)
#Name(Item(pres_1, dim_lft_kl_5, 0))# de naam van het eerste (geselecteerde) item van de kubusdimensie met code ‘dim_lft_kl_5’ uit de presentatie (‘pres_1’)
Dynamische waarden

Naast dynamische tekst is het ook mogelijk om dynamische waarden op te vragen aan de hand van de selectie uit de input(s). Waarden zijn zowel vanuit tabelpresentaties in het rapport, als direct uit de database op te vragen.

Vanuit tabellen zijn waarden op te vragen met de functie Data. In deze functie wordt de code van de betreffende presentatie (tabel) opgegeven en met indexen wordt verwezen naar een cel van de tabel. Let op: een index begint bij 0. Tabellen kunnen 2, 3 of meer dimensies bevatten en voor iedere dimensie wordt een index in de functie opgenomen.

Bij een tabel (met code ‘pres_1’) met 2 dimensies ziet de SRL er als volgt uit:

#Data (pres_1, index van dimensie 1, index van dimensie 2)#

Dimensie 2, item 1 Dimensie 2, item 2 Dimensie 2, item 3
Dimensie 1, item 1 Data(0,0) Data(0,1) Data(0,2)
Dimensie 1, item 2 Data(1,0) Data(1,1) Data(1,2)
Dimensie 1, item 3 Data(2,0) Data(2,1) Data(2,2)
Dimensie 1, item 4 Data(3,0) Data(3,1) Data(3,2)

Bij een tabel met 3 dimensies ziet de SRL er als volgt uit:

#data (pres_1, (index van dimensie 1, index van dimensie 2, index van dimensie 3)#

Dimensie 2, item 1 Dimensie 2, item 2
Dimensie 3, item 1 Dimensie 3, item 2 Dimensie 3, item 3 Dimensie 3, item 1 Dimensie 3, item 2 Dimensie 3, item 3
Dimensie 1, item 1 Data(0,0,0) Data(0,0,1) Data(0,0,2) Data(0,1,0) Data(0,1,1) Data(0,1,2)
Dimensie 1, item 2 Data(1,0,0) Data(1,0,1) Data(1,0,2) Data(1,1,0) Data(1,1,1) Data(1,1,2)
Dimensie 1, item 3 Data(2,0,0) Data(2,0,1) Data(2,0,2) Data(2,1,0) Data(2,1,1) Data(2,1,2)
Dimensie 1, item 4 Data(3,0,0) Data(3,0,1) Data(3,0,2) Data(3,1,0) Data(3,1,1) Data(3,1,2)
Dimensie 1, item 5 Data(4,0,0) Data(4,0,1) Data(4,0,2) Data(4,1,0) Data(4,1,1) Data(4,1,2)

Met dezelfde functie Data is het ook mogelijk om een waarde direct uit de database op te vragen, hiervoor zijn er twee mogelijkheden. Ten eerste kan eerst een nieuwe variabele worden gedefinieerd om deze vervolgens in het rapport weer te geven. Ten tweede kan de waarde direct in het rapport worden opgevraagd en getoond. Voor beide mogelijkheden is hieronder een voorbeeld van de SRL opgenomen.

Opvragen via een variabele:

unieke code = Data { onderwerpcode; periodecode; gebiedscode; }

bijvoorbeeld: #data_inw = Data { Ind.inw3112; Item(input_period,0); Item(input_geo,0); }#

De variabele is op te vragen in de inhoud van rapport met functie Show: #Show(data_inw)#

Direct Opvragen:

Bovengenoemde SRL van de variabele kan ook worden samengevoegd met de functie Show om zo de waarde direct op te vragen.

Show (Data { onderwerpcode; periodecode; gebiedscode; })

bijvoorbeeld: #Show(data{Ind.inw3112;Item(input_period,0);item(input_geo,0);})#

Bij het opvragen van een waarde uit een kubus met de functie Data kan de selectie (tussen accolades) worden uitgebreid met items van een of meer dimensieniveaus.

Data { onderwerpcode; dimensiecode_itemcode; periodecode; gebiedscode; })

Onderstaand voorbeeld (in combinatie met functie Show) toont het aantal vrouwen tussen 40 en 45 jaar in een geselecteerde gemeente voor een geselecteerde periode:

#Show(data{Ind.bevolking; Dim.lft_kl_5_9; Dim.geslacht_V; Item(input_period,0);item(input_geo,0);})#

Opzetten vast rapport

Naast het maken van een dynamisch rapport is het ook mogelijk om een vast rapport te maken. Dit rapport is verder niet aan te passen en is niet dynamisch. Het kunnen bijvoorbeeld pdf bestanden zijn die binnen de Swing Viewer geopend kunnen worden.

Zowel pdf bestanden als (statische) html bestanden kunnen als vast rapport worden opgenomen. Deze bestanden moeten eerst in de rapporten map van Studio geplaatst worden, waarna deze bestanden als vast rapport kunnen worden opgenomen. Dit kan middels de button ‘Rapport bestanden’ links onder binnen het rapporten menu (Weergave > Rapporten):

1

Vervolgens opent het menu waar de bestanden in de rapportenmap geplaatst kunnen worden. Door met de rechtermuisknop op de map ‘Rapporten’ te klikken en vervolgens te kiezen voor ‘Bestand toevoegen’ kan het gewenste pdf of html bestand toegevoegd worden.

1

Nu de bestanden toegevoegd zijn, kunnen ze als vast rapport worden opgenomen. In het vorige hoofdstuk is beschreven hoe een rapport aangemaakt kan worden. Om een vast rapport aan te maken is het hierbij van belang om dit bij de rapportinstellingen aan te geven middels het aanvinken van de optie ‘Vast rapport’. Als type dient pdf of html geselecteerd te worden. Via de setting ‘Bestandnaam’ dient dit bestand via het drop down menu geselecteerd te worden. Nadat het rapport is aangemaakt kan deze aan de themaboom worden toegevoegd.

1

Geavanceerd rapport

Naast het feit dat we presentaties en teksten kunnen dynamiseren aan de hand van de selectie van de gebruiker, kunnen we het rapport nog op andere manieren dynamisch maken. Dit kan met behulp van conditionele statements. Deze statements kunnen gebaseerd zijn op waardes uit presentaties, maar ook uit andere gedefinieerde variabelen.

De basis van een conditionele statement is ‘if’. Een eenvoudig statement kan zijn:

If onderwerpcode > waarde then Write(“tekst1”) else Write(“tekst2”) end if

Bijvoorbeeld: #if data_inw > 100000 then Write(“veel”) else Write(“weinig”) end if#

Bovenstaand statement zorgt ervoor dat het woord “veel” wordt geschreven als het betreffende gebied meer dan 100.000 inwoners heeft en dat er “weinig” wordt geschreven indien het er 100.000 of minder zijn. Met behulp van dit type statement zijn dus woorden en zinnen aan te passen aan de selectie van de gebruiker.

Condities

Condities op basis van waarden

Er zijn meerdere en andere condities mogelijk bij het samenstelen van een if statement. Met de 3 onderstaande condities wordt het aantal mogelijkheden sterk vergroot:

And:

If onderwerpcode > waarde and onderwerpcode2 > waarde2 then Write (“tekst”) else Write (“tekst2”) end if

Bijvoorbeeld: #if data_inw > 100000 and data_opp > 100 then Write(“relatief groot”) else Write(“vrij klein”) end if#

Bovenstaand statement zorgt ervoor dat de woorden “relatief groot” worden geschreven als het betreffende gebied zowel meer dan 100.000 inwoners als een oppervlakte groter dan 100 km² heeft, en dat er “vrij klein” wordt geschreven indien 1 of beide condities minder zijn. Dit statement kan rekening houden met een groot aantal condities.

Or:

If onderwerpcode > waarde or onderwerpcode2 > waarde2 then Write (“tekst”) else Write (“tekst2”) end if

Bijvoorbeeld: #if data_inw > 100000 or data_opp > 100 then Write(“relatief groot”) else Write(“vrij klein”) end if#

Bovenstaand statement zorgt ervoor dat de woorden “relatief groot” worden geschreven als het betreffende gebied óf meer dan 100.000 inwoners óf een oppervlakte groter dan 100 km² heeft en dat er “vrij klein” wordt geschreven indien een van de twee minder is. Dit statement kan rekening houden met een groot aantal condities.

Equal:

If equal (onderwerpcode, “waarde”) then Write (“tekst”) else Write (“tekst2”) end if

Bijvoorbeeld: #if equal(data_inw, “-99998”) then Write(“n.v.t.”) end if#

Bovenstaand statement zorgt ervoor dat de tekst “n.v.t.” verschijnt als de data van de variabele onbekend (-99998) is.

Andere toepassingen:

If statements hoeven niet alleen afhankelijk te zijn van de waarden van opgegeven data. Ook op basis van de gebieds- of periodekeuze is het mogelijk om de tekst te bepalen.

Gebied:

If equal(code(inp_geo, “gebiedsniveaucode_gebiedscode”) then Write (“tekst”) end if

Bijvoorbeeld: #if Equal(code(inp_geo), "gemeente_363") then Write(“hoofdstad”) end if#

Bovenstaand statement bepaalt dat er “hoofdstad” wordt geschreven indien Amsterdam (gemeentecode=363) wordt geselecteerd door de gebruiker.

Periode:

If equal(code(inp_period, “jaartal”) then Write(“tekst”) end if

Bijvoorbeeld: #if Equal(code(inp_period), "2016") then Write("In 2016") end if#

Bovenstaand statement toont de tekst “In 2016” mits de gebruiker het jaar 2016 als input geselecteerd heeft.

We hebben nu steeds aan de hand van een conditie bepaalt dat er al dan niet iets geschreven moet worden. Echter, niet alleen tekst kan afhankelijk gemaakt worden. Het tonen van elk onderdeel van een rapport kan afhankelijk gemaakt worden van een if statement. Hieronder twee voorbeelden:

Presentaties:

Bijvoorbeeld: #if data_inw > 100000 or data_opp > 100 then#

#show(pres_1)#

#end if#

Met behulp van bovenstaand if statement wordt Presentatie 1 alleen getoond als het inwoneraantal van een gebied hoger is dan 100.000 of de oppervlakte meer dan 100 km². Indien er niet voldaan wordt aan een van deze condities zal Presentatie 1 niet getoond worden.

Tekst (Html):

Bijvoorbeeld: #if equal(data_inw, “-99998”) then#

<p>De data van deze gemeente is niet beschikbaar.</p>

#else#

<h2>Inwoners</h2>

<figure%gt#show(pres_1)#</figure%gt

<p>Bovenstaande tabel toont het aantal inwoners in de gekozen gemeente.</p>

#end if#

In bovenstaand if statement is het tonen van de html code inclusief presentatie en tekst afhankelijk van de data van het onderwerp data_inw. Indien dit een onbekende is, wordt verteld dat de data niet beschikbaar is. Indien data_inw geen -99998 is, zal de html inclusief presentatie en tekst gewoon getoond worden.

Functies

Onderstaande opsomming dient als overzicht van alle functies binnen rapporten in Swing 5. We leggen voor elke functie uit waar deze toe dient en vervolgens wordt er een voorbeeld van een toepassing van de functie gearceerd weergegeven. Let er op dat we in het voorbeeld slechts één enkele toepassing tonen. Dit doen we meestal met behulp van de functie #Show#. Vaak heeft een functie meerdere toepassingen en is het mogelijk om een beschreven functie met bijvoorbeeld een “if statement” combineren. De functies zijn ingedeeld in diverse categorieën, namelijk algemeen, onderwerpen, tabellen, perioden, gebieden, Javascript en tenslotte opmaak en overige.

Algemeen
Show
Show(context) Elk type content dat met srl bovenaan het rapport gedefinieerd is kan worden getoond met Show.
#Show(pres_1)# Presentatie 1 wordt getoond.
Item
Item(context,dim_period/dim_variable/dim_geo, x) Het opvragen van het x-ste element (periode, onderwerp of gebied) van een presentatie of onderwerp.
#Show(Item(pres_1, dim_variable, 3))# Het 4e onderwerp waaruit pres_1 bestaat wordt getoond.
Shortname
Shortname(Item(context, dim_period|dim_geo,x)) Het opvragen van de korte naam van een periode of gebied.
#Shortname(Item(pres_1, dim_period, 0))# De korte naam van de 1e periode uit de presentatie wordt getoond.
Code
Code(context) Onderliggende code(s) van verschillende type variabelen.
#Code(input_geo)# De code(s) van de gekozen input(s) wordt getoond.
SubCode
SubCode(context) Deel van onderliggende code van verschillende type variabelen.
#SubCode(input_geo)# Deel van de code van de gekozen input wordt getoond (alleen het gebiedsnummer).
Date
Date(context) Datum.
#Date(input_geo)# Datum en tijd worden weergegeven. Als er tussen de haakjes niets wordt ingevuld, wordt alleen de datum weergegeven, exclusief de tijd.
ListCount
ListCount(Items(presentatie, dim_period/dim_geo/dim_variable)) Tellen van het aantal periodes/gebieden/onderwerpen binnen een presentatie.
#Write(ListCount(Items(pres_1, dim_geo)))# Het aantal gebieden waarop de presentatie gebaseerd is wordt getoond.
Onderwerpen
Abs(onderwerpcode) Absolute waarde van een onderwerp.
#Write(Abs(inw3112))# De absolute waarde van onderwerp ‘inw3112’ wordt getoond.
Description
Description(Ind.onderwerpcode) De beschrijving van een onderwerp.
#Description(Ind. inw3112)# De beschrijving van het onderwerp met code ‘inw3112’ wordt getoond.
DataSource
DataSource(Ind.onderwerpcode) De bron van een onderwerp.
#DataSource(Ind.inw3112)# De bron van het onderwerp met code ‘inw3112’ wordt getoond.
IsEmpty
IsEmpty(Tekstonderwerp) De functie geeft terug of de opgegeven tekstvariabele leeg is. De functie is alleen te gebruiken in een ‘if statement’.
#if IsEmpty(opena6_) then write(“Niet ingevuld”) end if# Het rapport toont de tekst “Niet ingevuld” op het moment dat de tekstvariabele leeg is.
Tabellen
Data
Data(presentatie, index van dimensie 1, index van dimensie 2) Data uit een cel van een tabel.
#Data(pres_1, 5, 4)# De celwaarde van de 6e rij en de 5e kolom van de desbetreffende tabel wordt opgeroepen.
CellColor
CellColor(presentatie, index van dimensie 1, index van dimensie 2) Kleurcode van de opgeroepen cel uit een kleurentabel.
#CellColor(pres_1, 1, 2)# De kleurcode van de cel van de 2e rij en 3e kolom van de desbetreffende kleurentabel wordt opgeroepen.
CellCountValue
CellCountValue(presentatie) Opvragen van het aantal cellen met een waarde binnen een presentatie. Alle -99998 en -99999 worden niet meegeteld.
#Show(CellCountValue(pres_1))# Het aantal bekende waarden in de presentatie wordt getoond.
Minimum
Min(presentatie,kolomindex) Opvragen van het minimum uit een geselecteerde tabelkolom.
#Show(Min(pres_1,2))# Het getal uit de cel met de laagste waarde wordt getoond.
Maximum
Max(presentatie,kolomindex) Opvragen van het maximum uit een geselecteerde tabelkolom.
#Show(Max(pres_1,2))# Het getal uit de cel met de hoogste waarde wordt getoond.
Som
Sum(presentatie,kolomindex) Opvragen van de som uit een geselecteerde tabelkolom.
#Show(Sum(pres_1,2))# De som van de opgegeven kolom wordt getoond.
Gemiddelde
Mean(presentatie,kolomindex) Opvragen van het gemiddelde uit een geselecteerde tabelkolom.
#Show(Mean(pres_1,2))# Het gemiddelde van de opgegeven kolom wordt getoond.
Standaarddeviatie
Stddev(presentatie,kolomindex) Opvragen van de standaarddeviatie uit een geselecteerde tabelkolom.
#Show(Mean(pres_1,2))# De standaarddeviatie van de opgegeven kolom wordt getoond.
Mediaan
Median(presentatie,kolomindex) Opvragen van de mediaan uit een geselecteerde tabelkolom.
#Show(Median(pres_1,2))# De mediaan van de opgegeven kolom wordt getoond.
Perioden
Period
Period(presentatie, x) Een periode uit een presentatie.
#Show(Period(pres_1, 0))# De 1e periode waaruit presentatie 1 is opgebouwd wordt getoond.
MostRecentPeriods
MostRecentPeriods(onderwerpcode, periodetype,x),y Toont een y aantal van de x meest recente gebieden van een onderwerp.
#Write(MostRecentPeriods(inw3112,year,6),5)# 2015, 2014, 2013, 2012, 2011.
First
First(Periods(context), aantal) Toont de eerste x aantal periodes waarop voor een onderwerp of preselectie data is ingelezen.
#Show(First(Periods(inw3112), 3))# 2000, 2001, 2002.
Last
Last(Periods(context), aantal) Toont de laatste x aantal periodes waarop voor een onderwerp of preselectie data is ingelezen. Eventuele prognosedata wordt hierin ook meegenomen, in tegenstelling tot bij MostRecentPeriods.
#Show(Last(Periods(pres_1), 2))# 2016, 2015.
Range
Range(_jaartal1, _jaartal2) Alle periodes tussen de opgegeven periodes.
#Show(Range(_2004, _2010))# 2004, 2005, …, 2010.
Previous
Previous(input_period) De periode x-1.
#Write(Previous(input_period))# Als het gekozen jaartal 2015 is, zal 2014 getoond worden.
Next
Next(input_period) De periode x+1.
#Write(Next(input_period))# Als het gekozen jaartal 2015 is, zal 2016 getoond worden.
Gebieden
GeoItem
GeoItem(presentatie, x) Een gebied uit een presentatie.
#Show(GeoItem(pres_1, 2))# Het 3e gebied waaruit presentatie 1 is opgebouwd wordt getoond.
Parent
Parent(input_geo, gebiedsniveau) Oudergebied van gekozen gebied.
#Show(Parent(input_geo, provincie))# Het oudergebied van het gekozen gebied wordt getoond. In het geval dat gemeente Aa en Hunze wordt gekozen, wordt ‘Drenthe’ getoond.
Descendants
Descendants(input_geo, gebiedsniveau) Kindergebieden van gekozen gebied.
#Show(Descendants(input_geo, wijk15))# De kindergebieden van het gekozen gebied worden getoond. In het geval dat gemeente Aa en Hunze wordt gekozen, worden alle wijken binnen Aa en Hunze getoond.
Siblings
Siblings(input_geo) Alle gebieden van hetzelfde gebiedsniveau als het gekozen gebied.
#Show(Siblings(input_geo))# Alle gebieden van hetzelfde gebiedsniveau als het gekozen gebied worden getoond. In het geval dat gemeente Aa en Hunze wordt gekozen, worden alle andere gemeenten getoond.
ListJoin
ListJoin(Gebiedsniveau x, Gebiedsniveau y) Het combineren van gebieden van 2 verschillende gebiedsniveaus in 1 lijst.
# Input_compare = input {Type: Geoitem; Caption: “Kies 3 vergelijkingsgebieden”; Subset: ListJoin(Parents(input_geo), Siblings(input_geo)); Min: 1; Max: 3;} # Het combineren van gebieden kan toegepast worden op een input voor de keuze van een vergelijkingsgebied (input_compare). Op deze manier worden zowel de hogere gebiedsniveaus van de input_geo en de gebieden binnen het gebiedsniveau van de input_geo selecteerbaar.
ParentsOnLevel
ParentsOnLevel(input_geo, gebiedsniveau) Oudergebied van gekozen gebieden (als input_geo uit meerdere gekozen gebieden bestaat).
#Show(ParentsOnLevel(input_geo, provincie))# De oudergebieden van meerdere gekozen gebieden worden getoond. In het geval dat Aa en Hunze en Alkmaar worden gekozen, worden Drenthe en Noord-Holland getoond.
LevelAndName
LevelAndName(input_geo) Naam van gebiedsniveau en gebied.
#LevelAndName(input_geo)# Gemeente Aa en Hunze.
Plural name
Pluralname(level(item(input_geo,0))) Naam (meervoud) van gebiedsniveau.
#Write(pluralname(level(item(input_geo,0))))# Provincies.
Javascript
ToJson
WriteJsonScript(pres_1) Toont de presentatie in de vorm van een binnen het rapport gedefinieerde Json script.
#WriteJsonScript(pres_1)# Toont de presentatie in de vorm van een binnen het rapport gedefinieerde Json script.
Opmaak en overige
Grootte van het figuur
(presentatie, pixels breedte, pixels hoogte) Past de standaard breedte en hoogte van het getoonde figuur aan.
#show(pres_1,900,500)# Presentatie 1 wordt niet in de standaardgrootte gepresenteerd maar met 900 pixels breed en 500 pixels hoog.
SetPDFMargins
SetPDFMargins(Boven, Onder, Links, Rechts) Past de marges aan van de randen van het rapport bij export naar PDF. Alle 4 de waarden moeten worden ingevuld en zijn uitgedrukt in cm.
#SetPDFMargins(0.95, 0.95, 1, 1)# De marges van het rapport in PDF zijn hiermee aangepast.
SetEditButtonText
SetEditButtonText(“tekst”) Past de tekst aan van de 1-knop linksboven in het scherm.
#SetEditButtonText(“Kies regio”)# 1
HideEditButton
HideEditButton() Schakelt de 1-knop linksboven in het scherm uit.
#HideEditButton()# De 1-knop is niet meer zichtbaar.
SetNoPrinting
SetNoPrinting() Schakelt de 1 -knop rechtsboven in het scherm uit.
# SetNoPrinting()# De 1-knop is niet meer zichtbaar.