Modèle:PDR

De Semantic MediaWiki - Sandbox

This is a modified part of the template webpage I am trying to create (not everything is here, but it allows us to recreate the issue I am facing with).
You can see an example here: ZZ999. In this example, here's what the user will specify:
Not clear enough? Please feel free to ask for any precision! :)

{{PDR
 |Nombre_Points=
 |Point1=PAF1
 |Point2=PAF2
 |Point3=PAF3
 |Nombre_Troncons=
 |Troncon1_Secteur=
 |Troncon1_Debut=
 |Troncon1_Fin=
}}

Step 1

First, I begin a while loop (using "i", the loop itself is not represented in here to enlight the code).
In this loop, "i" goes from 1 to Nombre_Points specified by the user in the template, and one variable is created for each Point specified by the user.
Each variable takes what the user gives to the template, and says that this given data is a Point property (which has Text type).
For instance, with ZZ999, "i" will go from 1 to 3 (the user specifies 3 different Point within the template), and in the loop for each value of "i" you will have:

{{ #vardefine: Point{{ #var: i }}| [[Point::{{{ Point{{ #var: i }}| }}} ]] }}
{{ #vardefine: i| {{ #expr: {{ #var: i }} + 1 }} }}


Step 2

Then, another while loop is created, not included in the first one (let's use "j" so we make the difference between the two of them).
"j" goes from 1 to Nombre_Troncons the user has specified within the template.
Nombre_Troncons is not related to Nombre_Points.
I decide then to define a few useful var which will help me to enlight the code (so I don't manipulate too many etc).
Another variable Troncon_Temp is also created inside this loop (it's a local variable), and will be completed in another loop, included in the "j" loop (here Troncon_Temp is only initiated).
Debut and Fin are numbers specified by the user, they tell which Point starts a Troncon (it means Section in French FYI, I will translate everything later if it can help of course) and which Point ends it. For instance, if Point2 begin a Troncon, user will have to write Troncon1_Debut=2:

{{ #vardefine: Debut | {{{ Troncon{{ #var: j }}_Debut| }}} }}
{{ #vardefine: Fin | {{{ Troncon{{ #var: j }}_Fin| }}} }}
{{ #vardefine: Secteur | {{{ Troncon{{ #var: j }}_Secteur| }}} }}
{{ #vardefine: Troncon_Temp | {{ #var: Point{{ #var: Debut}} }} }}



Step 3

I begin another while loop (using "j_bis"), included in the first "j" loop.
"j_bis" goes from Debut to Fin.
Troncon_Temp is here being updated in this second loop whenever "j_bis" is incremented (another Point is being added to Troncon_Temp):

{{ #vardefine: Troncon_Temp | {{ #var: Troncon_Temp }} – {{ #var_final: Point{{ #var: j_bis }} }} }}



Step 4

Then, this is where it does not work: SMW doesn't understand when I am telling it to set a global variable, which value is the data within Troncon_Temp:

{{ #set: Troncon_{{ #var: Secteur }} = {{ #var: Troncon_Temp }} }}


RMK : Troncon_S has been defined as being of Text Type, see here: Troncon_S.


Step 5

Because of the step before, I can't see the result of course.

{{ #show: {{PAGENAME}} | ?Troncon_{{ #var: Secteur }} }}



Useful stuff to print on any page calling the template

Point1: {{ #var_final: Point1 }}
Point2: {{ #var: Point2 }}
Point3: {{ #var: Point3 }}
Nombre_Troncons: {{ #var: Nombre_Troncons }}
Troncon1_Secteur: {{ #var: Troncon1_Secteur }}
Troncon1_Debut: {{ #var: Troncon1_Debut }}
Troncon1_Fin: {{ #var: Troncon1_Fin }}


Les cookies nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de cookies.