Het inspectiemodel bepaalt hoe de te gebruiken formulieren er uit zien. Andere applicaties spreken wel over een paspoort, Kaartserver noemt dit een inspectiemodel. Het inspectiemodel is gedefinieerd in XML.
Het model voor formulieren is opgebouwd uit 3 niveaus. Het eerste niveau is het 'inspectieModel'. In een 'inspectieModel' bevinden zich onder meer 'form'-elementen, de formulieren. Een 'form'-element is weer opgebouwd uit 'item'-elementen. In het 'inspectieModel' bevinden zich ook 'template'-elementen, een template bepaalt vormgeving en inhoud van een box-selectie en het formulier onder de knop 'i'. En een 'annotation'-element, de tekst of afbeelding die verschijnt als je op de kaart met de muis over een object beweegt.
Een inspectiemodel met annotatie, 1 formulier, 1 template en 2 items ziet er als volgt uit:
Inspectiemodel
Het eerste of root-element is <inspectieModel>, een inspectiemodel kent verplichte twee attributen. In oudere inspectiemodellen staan soms nog meer attributen, deze worden per voorkeur naar het <settings>-element verhuisd.
id | verplicht | Unieke identifier, wordt tevens als tekst gebruikt in meldingen om het object in enkelvoud te benoemen (bv. boom niet gevonden). |
name | verplicht | Verkorte omschrijving, wordt tevens als tekst gebruikt in meldingen om het object in meervoud te benoemen (bv. meerdere bomen geselecteerd). |
description | verplicht | Omschrijving. |
Settings
Het inspectieModel bevat een <settings>-element waarin de algemene instellingen zijn vastgelegd.
<mapfile> | verplicht | Naam van mapfile, de configuratie van mapserver. |
<hoofdtabel> | verplicht | Naam van de hoofdtabel. |
<inspectietabel> | verplicht | Naam van de tabel met inspectie items. |
<inspectietabel_key> | verplicht | Kolom in inspectie-tabel waarin id van de hoofdtabel staat. |
<geometrietype> | verplicht | Type geometrie: point, polyline of polygon/ |
<tolerantie> | optioneel | Tolerantie in meters waarmee na het klikken op de kaart een object wordt gevonden (default 4). |
<bgcolor> | optioneel | Achtergrondkleur in formaat 'rgb(200,200,200)'. |
<form_height> | optioneel | Een formulier opent standaard met een hoogte van 650px, met form_height kan een andere hoogte worden opgegeven. Waarde als getal opgeven zonder 'px'. |
<form_width> | optioneel | Een formulier opent standaard met een breedte van 480px, met form_width kan een andere breedte worden opgegeven. Waarde als getal opgeven zonder 'px'. |
<form_bgcolor> | Achtergrondkleur formulier in formaat 'rgb(200,200,200)', 'rgba(200,200,200,0.2) of andere css-notatie. | |
<presentquery> | optioneel | Een aangepaste data-query voor themalaag presentatie. |
<searchbox> | optioneel | Definieert de zoektekst onderin en bestaat uit een subelement dat een tekst of placeholder voor in het invoerveld vastlegt, bijv. : <searchbox><placeholder>Zoek straat</placeholder></searchbox> |
Annotation
Het inspectieModel bevat een <annotation>-element dat beschrijft hoe een annotation (tooltip als je met de muis over een object beweegt) er uit ziet. Het definiëren van een annotation is optioneel en bevat de volgende subelementen:
<query> | verplicht | Een query waarmee de tekst van een annotatie wordt gedefinieerd, of in geval als een tag '<form>' is gedefineerd de kolommen waarmee een tabel wordt gevuld. Deze kolommen zijn dan in '<form>' beschikbaar als resp. col00, col01, col02 etc. Optioneel kan hier ook 'template' staan. In dat geval zal de annotatie op basis van bij een themalaag behorende templates gemaakt worden, de annotatie werkt dan voor meerdere themalagen. |
<bgcolor> | optioneel | Achtergrondkleur, in een geldige CSS-notitie, bijvoorbeeld 'white', 'rgb(255,255,255)' of '#FFFFFF. Als achtergrond niet is gedefinieerd, dan is bgcolor lichtgeel. |
<bgcolordata> | toekomstig | Achtergrondkleur van de dataregels, in een geldige CSS-notitie, bijvoorbeeld 'Gray97', 'rgb(247,247,247)' of '#F7F7F7'. |
<width> | optioneel | Breedte van de annotatie in pixels, in een geldige CSS-notitie, bijvoorbeeld '300px'. |
<imgwidth> | optioneel | Als in een annotatie een foto gebruikt wordt kan met deze tag de breedte in pixels opgegeven worden. Als geen breedte opgegeven is krijgt een foto een standaardbreedte van 200. |
<form> | optioneel | Een formulier dat door middel van html-tags is gedefineerd. De kolomwaarden uit de query zijn beschikbaar als resp. col00, col01, col02 etc. Html-tags moeten in XML als CDATA opgenomen zijn. Voorbeeld tabel met in dit geval slechts één kolomwaarde: <![CDATA[ <table><tr><td>col00</td></tr></table> ]]> |
Templates
Het inspectieModel bevat een of meer <template>-elementen, zij definiëren hoe een overzicht (box- of polygoonselectie) er uit ziet. Het template wordt ook gebruikt voor het opvragen van gegevens voor een enkel object, in dat geval staan de kolommen niet naast maar onder elkaar.
In een <header> elemementen worden optioneel extra header-regels opgegeven die boven de standaard header van een tabel worden geplaatst. Een <header>-element bestaat uit een of meerdere <column>-tags met volgend inhoud. Een attribuut 'colspan' geeft aan over hoeveel kolommen de header verspreid moet worden (bv. <column colspan='6'>).
<name> | verplicht | Naam voor template. |
<object> | verplicht | Naam voor een object, bijvoorbeeld boom, plantsoenvak of wegvak. |
<objecten> | verplicht | Naam voor een object in meervoud, bijvoorbeeld bomen, plantsoenvakken of wegvakken. |
<display> | optioneel | Keuze uit visible of hidden, bepaalt of kolom getoond wordt (default visible). |
<columns> | verplicht | Opsomming van kolommen, gedefinieerd in subelementen <column>, zie hieronder. |
De kolommen van een tabel zijn beschreven in een <columns>-element met een of meerdere <column>-subelementen. <column>-elementen bestaan uit volgende subelementen:
<name> | verplicht | Tekst die boven de kolom wordt getoond. |
<width> | verplicht | Breedte van de kolom, waarde in 'px' of '%'. |
<field> | verplicht | Naam van de kolom uit database-query (zie map-file) tussen brackets. |
<sort> | optioneel | Bepaalt of kolom gesorteerd kan worden, false of true (default true). |
<type> | optioneel | Numeriek of alfanumeriek (default alfanumeriek) |
<display> | optioneel | Keuze uit visible of hidden, bepaalt of kolom getoond wordt (default visible). |
Formulieren
Het inspectieModel bevat <form>-elementen die de formulieren (tabs) beschrijven, een formulier kent volgende attributen:
id | verplicht | Unieke identifier voor een tabblad in een formulier. Het 'id' mag beslist niet nog voor een ander <form> gebruikt worden. |
name | verplicht | Verkorte omschrijving, wordt gebruikt om de tabbladen te benoemen. |
description | verplicht | Omschrijving. Tekst wordt bovenin het formulier zelf getoond. |
ctype |
Type inspectie item, verplicht voor een formulier met inspectie-items. Veelgebruikte letters:
C = controle-item
M = maatregel-item
O = nader onderzoek-item
Z = ziektes en aantastingen-item
Voor extra formulieren mag ook een andere letter gebruikt worden. Bij een uitgebreid inspectietype mag deze over meerdere tabbladen verspreid zijn, in dit geval geef je alle tabbladen eenzelfde ctype mee en zorg je dat de <submit> button steeds de zelfde tekst heeft. Kaartserver bewaart dan steeds alle bijbehorende tabbladen. Tabbladen van eenzelfde 'ctype' moeten elkaar opvolgen en mogen niet met een ander ctype onderbroken zijn.
|
|
queryafter |
Sql-query uit te voeren nadat alle queries van het formulier zijn uitgevoerd. Een query kan zowel op de hoofd- als de inspectietabel worden uitgevoerd. Een query kan bv. zijn 'update hoofdtabel set kolom1=kolom2'. Of voor een joined query bv. 'update inspectietabel set kolom=hoofdtabel.kolom from hoofdtabel'. De where-clausule wordt door het script zelf verzorgd (en mag dus ook niet worden meegegeven).
Voor inspecties kan een eindscore berekent worden door bij queryafter 'score' in te vullen. En moet dan wel ergens een item met field 'score' aangemaakt zijn en in de afzonderlijke inspectie-items moet steeds '<score>' ingesteld zijn. Een wijze van afronding wordt bepaald door 'score-ceil', 'score-floor' of 'score-round' in te vullen. Floor rondt af naar boven, ceil naar beneden en round volgt de normale rekenregels. Standaard is 'score-ceil'. |
|
submit | verplicht | Tekst in submit knop. |
display | optioneel | Keuze uit visible of hidden, bepaalt of form getoond wordt (default visible). |
filter | optioneel | Laat tab van het formulier alleen zien als aan een voorwaarde wordt voldaan. Deze voorwaarde wordt opgegeven als een sql where-statement, bv. filter="(groep='Betonstraatstenen')" |
deny | optioneel | Ontzeg toegang, waarde is een * voor iedereen of een komma gescheiden lijst met gebruikers. |
allow | optioneel | Verleen toegang, waarde is een * voor iedereen of een komma gescheiden lijst met gebruikers. |
xmlexport | optioneel | De xml-elementnaam waarbinnen de gegevens geplaatst worden. |
Items
Een formulier bestaat uit <item>-elementent die de inhoud van een formulier bepalen. Items kennen geen attributen maar bevatten wel subelementen die de eigenschappen van een item verder definiëren:
<name> | verplicht | Omschrijving van het item. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<table> | verplicht | Naam van hoofdtabel of inspectietabel in de database (zie settings). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<field> | verplicht | Naam van kolom in tabel, als deze in de tabel nog niet bestaat dan wordt hij automatisch aangemaakt. In een naam van een kolom mogen geen bijzondere leestekens (behalve '_') of spaties voorkomen. Gebruik geen hoofdletters. Cijfers zijn toegestaan. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<fieldtype> | verplicht |
Type van kolom, wordt gebruikt om in de tabel de kolommen aan te kunnen maken:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<default> | optioneel |
Vul vooraf in met een standaard waarde of een waarde uit een select query.
In een query kunnen volgende place holders gebruikt worden:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<preloadtype> | optioneel |
Vooraf invullen van een item in inspectie form:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<update> | optioneel |
Waarde maintable geeft aan dat voor een inspectie item de kolom met de zelfde naam in de hoofdtabel ook bij gewerkt moet worden.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<queryafter> | optioneel | Sql-query uit te voeren nadat veld met update-query is bijwerkt. Een query kan zowel op de hoofd- als de inspectietabel worden uitgevoerd. Een query kan bv. zijn 'update vta set veld1=veld2'. De where-clausule wordt door het script zelf verzorgd (en mag dus ook niet worden meegegeven). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<onchange> | optioneel | Javascript dat op een onchange-event van een item wordt uitgevoerd. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<type> | verplicht |
Type van invoerelement:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<list> | Afhankelijk van <type> een komma gescheiden lijst van waarden of de naam van de tabel waaruit de list wordt opgebouwd. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
<presentlistquery> | optioneel | Een alternatieve dropdown-list voor het formulier waarmee presentaties worden gemaakt. In plaatst van de standaard list kan dan voor alleen de waarden gekozen worden die daadwerkelijk in de tabel voorkomen. De waarde wordt als een SQL-query opgegeven, bijvoorbeeld 'select wijk from %hoofdtabel% where not deleted group by 1 order by 1'. In de query kunnen de placeholders '%hoofdtabel%', '%inspectietabel%' en '%user%' voor resp. de hoofdtabel, inspectietabel en gebruiker gebruikt worden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<option> | optioneel |
De mogelijke opties zijn:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<optionlists> | optioneel |
Met <optionlists> kan je op basis van een opgegeven waarde tijdens het invullen van het formulier de inhoud van een andere drop-down beïnvloeden. De syntax is als volgt:
<optionlists> <optionlist field='wijk'> value='Jordaan'>Bloemgracht,Elandsgracht,Lindegracht</optionlist>
<optionlist field='wijk'> value='Grachtengordel'>Felix merites,Leidsegracht,Spiegelbuurt</optionlist>
</optionlists>
Door voor meerdere 'fields' optionlists te definiëren is het mogelijk om van meerdere items de dropdown-lists te beïnvloeden.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
<width> | Breedte van het invoer-element. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
<height> | Hoogte van het invoer-element, wordt gebruikt bij <type> TextArea. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
<placeholder> | optioneel | Een placeholder verschijnt als aanwijzing in een leeg invoerveld van het type 'Search', 'Text' of 'TextArea'. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<filter> | optioneel | Een voorwaarde die gebruikt wordt om te bepalen of een item wel of niet getoond moet worden. De waarde wordt als where-statement opgegeven en werkt op de tabel die binnen het item in <table> is opgegeven. Bijvoorbeeld "wijk='Sterrenburg'" of "soort like 'Quercus%'". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<listfilter> | optioneel | Filter op bepaalde waarden in een list die uit een tabel wordt gehaald (where-statement in een query). Een filter kan ook basis van een ander veld worden gedefineerd als dit veld met '#' is gemarkeerd. Bijvoorbeeld '#wijk#', in dit geval wordt '#wijk#' vervangen met de waarde van veld 'wijk' in het formulier. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<order> | optioneel | Bepaald de volgorde in een list die uit een tabel wordt gehaald (order-statement in een query). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<show item=""> | optioneel | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
<hide item=""> | optioneel | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
<display> | optioneel | Keuze uit visible of hidden, bepaalt of item getoond wordt (default visible). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<template_width> | optioneel | Alleen te gebruiken bij toepassing 'Beeldbestek'. Geeft voor een overzicht opgevraagd met een box- of polygoon-selectie aan hoe breed een kolom in percentage dient te zijn. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<template_kwaliteit> | optioneel | Alleen te gebruiken bij toepassing 'Beeldbestek'. Geeft voor een overzicht opgevraagd met een box- of polygoon-selectie aan met welke kwaliteit gerekend wordt. Keuze tussen A+, A, B, C of D. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
<score> | optioneel | Berekent een score. De waarde van de score wordt opgegeven in een komma gescheiden lijst. De waarden in deze lijst lopen paralel met de waarden in <list>. Een score kan worden toepast in items van het type List, LookupList, ListRadio en LookupListRadio. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
xmlexport | optioneel | de naam van het element waarin gegevens worden geplaatst |
Tabelkolommen in de database
Verder zijn een aantal kolomnamen in Kaartserver voor het systeem gereserveerd. Je kan deze niet meer toevoegen, maar desgewenst wel als informatie gebruiken.
id | het unieke id van het object |
the_geom | de geometrie van het object in postgis formaat |
aantal | de hoeveelheid, bij vlakgeometrie het oppervlak, lijngeometrie de lengte en bij puntgeometrie altijd '1' |
xcoord | bevat voor puntgeometrie het x-coordinaat als tekst |
ycoord | bevat voor puntgeometrie het y-coordinaat als tekst |
create_date | datum waarop het object is gecreëerd |
create_user | inlognaam van de gebruiker |
create_host | hostname (server-adres) van de gebruiker |
update_date | datum waarop het object door een gebruiker voor het laatst is gewijzigd |
update_user | inlognaam van de gebruiker |
update_host | hostname (server-adres) van de gebruiker |
geo_date | datum waarop de geometrie van het object door een gebruiker voor het laatst is gewijzigd |
geo_user | inlognaam van de gebruiker |
geo_host | hostname (server-adres) van de gebruiker |
end_date | datum waarop het object door een gebruiker is verwijderd |
end_user | inlognaam van de gebruiker |
end_host | hostname (server-adres) van de gebruiker |
lokaalid | een unieke id van het object in de bgt |
tijdstipregistratie | tijdstip waarop het object in de bgt is aangemaakt |
lv_publicatiedatum | tijdstip waarop het object in de bgt voor het eerst is gepubliceerd |
imgeo_ontvdatum | datum waarop bij kaartserver voor het laatste een imgeo-bericht voor het object is ontvangen |
imgeo_zenddatum | datum waarop door kaartserver voor het laatste een imgeo-bericht voor het object is verstuurd |
imgeo_weigerdatum | datum waarop door een bgt-beheerder voor het laatste een imgeo-bericht voor het object is geweigerd |
imgeo_weigerreden | de reden van de weigering |
imgeo_toelichting | toelichtende tekst van een imgeo-bericht |
Gereserveerde tekens
> (groter dan) | > |
< (kleiner dan) | < |
& (ampersand) | & |
' (apostrof) | ' |
" (aanhalingsteken) | " |
- (zacht scheidingsteken) | ­ |
In XML kunnen niet toegestane tekens ook als zogenaamde CDATA met tag <![CDATA[...]]> opgenomen worden. Bijvoorbeeld:
<![CDATA[Door het gebruik van een CDATA-tag zijn tekens als '<', '>' en '&' toegestaan]]>