Rekenen en Vergelijkingen: verschil tussen versies
(→Keuze kenmerken) |
(→Keuze kenmerken) |
||
Regel 206: | Regel 206: | ||
Voorbeelden: | Voorbeelden: | ||
{| class="wikitable" style="text-align:center;" | {| class="wikitable" style="text-align:center;" | ||
− | ! | + | ! |
− | ! | + | !Kenmerktype |
− | ! | + | !Waarde (array) |
− | ! | + | !Waarde (string) |
− | ! | + | !Vergelijking |
− | ! | + | !Uitkomst |
+ | !Toelichting | ||
|- | |- | ||
+ | |Aanbevolen | ||
|Tekstveld | |Tekstveld | ||
| | | | ||
Regel 220: | Regel 222: | ||
| | | | ||
|- | |- | ||
+ | |Aanbevolen | ||
|Tekstveld | |Tekstveld | ||
| | | | ||
Regel 227: | Regel 230: | ||
| | | | ||
|- | |- | ||
+ | | | ||
|Tekstveld | |Tekstveld | ||
| | | | ||
Regel 234: | Regel 238: | ||
|De 'in'-operator kan niet gebruikt worden voor dit kenmerktype | |De 'in'-operator kan niet gebruikt worden voor dit kenmerktype | ||
|- | |- | ||
+ | |Aanbevolen | ||
|Enkelvoudige keuze | |Enkelvoudige keuze | ||
|[ "Appel" ] | |[ "Appel" ] | ||
Regel 241: | Regel 246: | ||
| | | | ||
|- | |- | ||
+ | |Aanbevolen | ||
|Enkelvoudige keuze | |Enkelvoudige keuze | ||
|[ "Appel" ] | |[ "Appel" ] | ||
Regel 248: | Regel 254: | ||
| | | | ||
|- | |- | ||
+ | | | ||
|Enkelvoudige keuze | |Enkelvoudige keuze | ||
|[ "Appel" ] | |[ "Appel" ] | ||
Regel 255: | Regel 262: | ||
| | | | ||
|- | |- | ||
+ | | | ||
|Meervoudige keuze | |Meervoudige keuze | ||
|[ "Appel", "Banaan", "Citroen" ] | |[ "Appel", "Banaan", "Citroen" ] | ||
Regel 262: | Regel 270: | ||
| | | | ||
|- | |- | ||
+ | |Aanbevolen | ||
|Meervoudige keuze | |Meervoudige keuze | ||
|[ "Appel", "Banaan", "Citroen" ] | |[ "Appel", "Banaan", "Citroen" ] | ||
Regel 269: | Regel 278: | ||
| | | | ||
|- | |- | ||
+ | | | ||
|Meervoudige keuze | |Meervoudige keuze | ||
|[ "Appel", "Banaan", "Citroen" ] | |[ "Appel", "Banaan", "Citroen" ] | ||
Regel 276: | Regel 286: | ||
| | | | ||
|- | |- | ||
+ | | | ||
|Meervoudige keuze | |Meervoudige keuze | ||
|[ "Appel", "Banaan", "Citroen" ] | |[ "Appel", "Banaan", "Citroen" ] | ||
Regel 283: | Regel 294: | ||
| | | | ||
|- | |- | ||
+ | |Aanbevolen | ||
|Meervoudige keuze | |Meervoudige keuze | ||
|[ "Appel", "Banaan", "Citroen" ] | |[ "Appel", "Banaan", "Citroen" ] | ||
Regel 290: | Regel 302: | ||
|"Appel" is gelijk aan één van de waarden. | |"Appel" is gelijk aan één van de waarden. | ||
|- | |- | ||
+ | | | ||
|Meervoudige keuze | |Meervoudige keuze | ||
|[ "Appel", "Banaan", "Citroen" ] | |[ "Appel", "Banaan", "Citroen" ] |
Versie van 1 dec 2015 om 18:01
Algemeen
Rekenen en vergelijkingen met waarden van Kenmerken kunnen op meerdere plekken in het systeem gebruikt worden, namelijk:
- Direct in magicstrings
- Regel: Vul waarde in met formule
- Variabele teksten in documentsjablonen
Constanten
De volgende constanten kunnen gebruikt worden bij het rekenen of vergelijken:
Simpele notatie | Complexe notatie | Waarde |
---|---|---|
:pi | constant("pi") | 3.141592653... |
Rekenen
Met formules kan de output aangepast worden door te rekenen met de kenmerkwaarde(n):
- Met elk type kenmerk kan gerekend worden, zolang de waarde een correct getal is
- Waardes die geen getal zijn worden als 0 geïnterpreteerd
- Delen door 0 geeft geen output
Rekentekens
De rekentekens die gebruikt kunnen worden zijn:
Naam | Teken | Voorbeeld | Output | Volgorde |
---|---|---|---|---|
haakjes | () | 6 * ( 2 + 2 ) | 24 | Als eerste |
keer/maal | * | 6 * 2 | 12 | Na haakjes Van links naar rechts |
gedeeld door | / | 6 / 2 | 3 | |
plus | + | 6 + 2 | 8 | Na keer/gedeeld door Van links naar rechts |
min | - | 6 - 2 | 4 |
Voorbeelden
Onderstaand drie voorbeelden voor rekenen; één voor elke locatie waarin het toegepast kan worden. De voorbeelden worden stap voor stap uitgewerkt, waarbij telkens het onderstreepte gedeelte aangeeft welk gedeelte van de formule in de bijbehorende stap verwerkt wordt.
Stap | Magicstrings | Vul waarde in met formule | zttscript |
---|---|---|---|
Stap 1 |
[[ voorbeeld_kenmerk + 6 / 3 * example_kenmerk ]] |
5 + 4 / (3 - attribute.voorbeeld_kenmerk) * attribute.example_kenmerk |
show_when { voorbeeld_kenmerk == 6 * (5 - example_kenmerk) } |
Afronding
De output wordt alsvolgt afgerond:
Formule | Magicstring | Vul waarde in met formule | zttscript | |
---|---|---|---|---|
Valutakenmerk | Overige kenmerken | |||
6 / 3 | 2 | 2,00 | 2.00 | 2 |
5 / 3 | 1.6666666667 | 1,67 | 1.67 | 1.6666666667 |
Tip: Gebruik eventueel Kenmerkformatting om de getallen af te ronden op gehele waarden.
Vergelijken
Met vergelijkingen kan gecontroleerd wordt of een waarde aan een bepaalde conditie voldoet. De output is dan "1" als de conditie waar is en "" als de conditie niet waar is. In deze vergelijkingen kunnen ook berekeningen opgenomen worden.
Operators
De operators die gebruikt kunnen worden zijn:
Naam | Teken | Voorbeeld | Antwoord | Kenmerktype |
---|---|---|---|---|
is gelijk aan | == | 2 + 2 == 4 | Waar | Alle |
is niet gelijk aan | != | 2 + 2 != 5 | Waar | Alle |
groter dan | > | 5 > 5 | Niet waar | Alle |
kleiner dan | < | 1 < 1.1 | Waar | Alle |
groter of gelijk aan | >= | 5 >= 5 | Waar | Alle |
kleiner of gelijk aan | <= | 1 <= 1.1 | Waar | Alle |
bevat tekst | ~= | "eks" in "tekst" | Waar | Alle |
komt voor in | in | 5 in [ 1, 2, 3, 4 ] 5 in array( 1, 2, 3, 4 ) |
Niet waar | Enkelvoudige keuze Meervoudige keuze |
Keuze kenmerken
De output van kenmerken van het type 'Enkelvoudige keuze', 'Meervoudige keuze' en 'Keuzelijst' zijn oorspronkelijk van het type Array. De 'in'-operator kan gebruikt worden om te zien of een specifieke waarde overeenkomt met één van de waarden die deze kenmerken bevatten. Omdat dit vrij omslachtig is voor de typen 'Enkelvoudige keuze' en 'Keuzelijst' die maar één waarde kunnen bevatten worden deze waarde omgezet naar het type String. Voor consistentie gebeurt dit ook met het kenmerktype 'Meervoudige keuze' waarbij waarden gescheiden worden door komma+spatie.
Voorbeelden:
Kenmerktype | Waarde (array) | Waarde (string) | Vergelijking | Uitkomst | Toelichting | |
---|---|---|---|---|---|---|
Aanbevolen | Tekstveld | "Appel" | show_when { tekstveld == "Appel" } | Waar | ||
Aanbevolen | Tekstveld | "Appel" | show_when { tekstveld ~= "ppe" } | Waar | ||
Tekstveld | "Appel" | show_when { "Appel" in tekstveld } | Niet waar | De 'in'-operator kan niet gebruikt worden voor dit kenmerktype | ||
Aanbevolen | Enkelvoudige keuze | [ "Appel" ] | "Appel" | show_when { enkelvoudige_keuze == "Appel" } | Waar | |
Aanbevolen | Enkelvoudige keuze | [ "Appel" ] | "Appel" | show_when { enkelvoudige_keuze ~= "ppe" } | Waar | |
Enkelvoudige keuze | [ "Appel" ] | "Appel" | show_when { "Appel" in enkelvoudige_keuze } | Waar | ||
Meervoudige keuze | [ "Appel", "Banaan", "Citroen" ] | "Appel, Banaan, Citroen" | show_when { meervoudige_keuze == "Appel" } | Niet waar | ||
Aanbevolen | Meervoudige keuze | [ "Appel", "Banaan", "Citroen" ] | "Appel, Banaan, Citroen" | show_when { meervoudige_keuze == "Appel, Banaan, Citroen" } | Waar | |
Meervoudige keuze | [ "Appel", "Banaan", "Citroen" ] | "Appel, Banaan, Citroen" | show_when { meervoudige_keuze ~= "Banaan, Citroen" } | Waar | ||
Meervoudige keuze | [ "Appel", "Banaan", "Citroen" ] | "Appel, Banaan, Citroen" | show_when { meervoudige_keuze ~= "el, Banaan, Ci" } | Waar | ||
Aanbevolen | Meervoudige keuze | [ "Appel", "Banaan", "Citroen" ] | "Appel, Banaan, Citroen" | show_when { "Appel" in meervoudige_keuze } | Waar | "Appel" is gelijk aan één van de waarden. |
Meervoudige keuze | [ "Appel", "Banaan", "Citroen" ] | "Appel, Banaan, Citroen" | show_when { "Appel, Banaan, Citroen" in meervoudige_keuze } | Niet waar | "Appel, Banaan, Citroen" is niet gelijk aan één van de waarden. |
Voorbeelden
Enkele voorbeelden ter inspiratie en om de werking toe te lichten.
Magicstring: Rekenen
Een zaaktype parkeervergunning, waarin vastgelegd wordt wat de prijs van het type vergunning is en het aantal bezoekersvergunningen dat additioneel aangeschaft wordt. In het sjabloon moet de prijs per onderdeel (parkeervergunning en bezoekersvergunning) uitgesplitst weergegeven worden, plus de totaalprijs. Voor deze implementatie kan het rekenen in magicstrings gebruikt worden, door de prijzentabel alsvolgt op te stellen:
|
Vul waarde in met formule: Rekenen
Bovenstaande is niet geheel realistisch, want het is uiteraard veel wenselijker om de prijzen van de onderdelen in de zaak zelf vast te leggen, alsmede de totaalprijs. Voor deze implementatie zijn kenmerken nodig om de prijs in op te slaan, en regels van het type 'Vul waarde in met formule' die de waarde er in plaatsen.
|
zttscript: Vergelijken
Een zaaktype parkeervergunning voor de volgende parkeergebieden: 'Centrum', 'Schil noord', 'Schil west', 'Schil zuid', 'Schil oost'. Voor de schilgebieden moet op het sjabloon een paragraaf voor waarden opgenomen worden. Voor deze implementatie kan het beste een "niet gelijk aan"-vergelijking gebruikt worden: show_when { parkeergebied != "Centrum" } "Toon wanneer het kenmerk 'Parkeergebied' niet gelijk aan 'Centrum' is." Let op: Voor dit voorbeeld geldt dat het veld ook getoond wordt wanneer het kenmerk 'Parkeergebied' geen waarde heeft (leeg is). |
zttscript: Rekenen
Een zaaktype 'Omgevingsvergunning' waarbij er geen administratiekosten gerekend worden wanneer de totale legeskosten boven de € 50,00 uitkomen.
show_when { prijs_bouwvergunning + prijs kapvergunning + prijs_printen > 50 } "Toon wanneer alle prijs_kenmerken samen een waarde van groter dan vijftig hebben." Let op: De auteur is zich bewust van het feit dat dit geen praktijkvoorbeeld is. |
zttscript: Vergelijken met de in-operator
Een zaaktype 'Melding openbare ruimte' waarbij er afhankelijk van de categorie verschillende 'meervoudige keuze'-kenmerken met acties getoond wordt.
Op het sjabloon moet dan een tekstveld getoond worden als in één van de actiekenmerken de waarde 'Schade verhaald' aangevinkt is. show_when { "Schade verhaald" in [ mor_acties_groen, mor_acties_verlichting, mor_acties_overlast ] } "Toon wanneer de waarde 'Schade verhaald' aanwezig is in mor_categorie_groen of mor_acties_verlichting of mor_acties_overlast." Let op: Als de waarde in slechts één 'meervoudige keuze'-kenmerk opgezocht hoeft te worden dan zijn de [haakjes] niet nodig. |