| ... |
... |
@@ -6,78 +6,110 @@ Ce document décrit comment écrire un rapport. |
|
6
|
6
|
|
|
7
|
7
|
Comme écrit dans la page de présentation des rapports, ceux-ci sont décrits dans un fichier de type *properties*.
|
|
8
|
8
|
|
|
9
|
|
-La syntaxe a été uniformisée en version 9.
|
|
|
9
|
+La syntaxe a été uniformisée en version 9 et depuis la 9.3.0 chaque rapport est décrit dans un fichier séparé.
|
|
10
|
10
|
|
|
11
|
11
|
### Identifiant d'un rapport
|
|
12
|
12
|
|
|
13
|
|
-Chaque rapport possède un identifiant unique; celui-ci est utilisé pour identifier toute sa description dans le fichier
|
|
14
|
|
-global.
|
|
|
13
|
+Chaque rapport possède un identifiant unique; le nom du fichier correspondant est **id.report**.
|
|
15
|
14
|
|
|
16
|
15
|
Voici un premier exemple de rapport pour mieux comprendre comment cela s'organise :
|
|
17
|
16
|
|
|
18
|
17
|
```properties
|
|
19
|
|
-report.llCommonTripGearUseFeatures.modelType=LL
|
|
20
|
|
-report.llCommonTripGearUseFeatures.name=Liste des équipements
|
|
21
|
|
-report.llCommonTripGearUseFeatures.description=Afficher les équipements
|
|
22
|
|
-report.llCommonTripGearUseFeatures.columns=Equipement,Nombre,Utilisé dans la marée,Mesures
|
|
23
|
|
-report.llCommonTripGearUseFeatures.repeatVariable.1.name=gearUseFeaturesId
|
|
24
|
|
-report.llCommonTripGearUseFeatures.repeatVariable.1.type=java.lang.String
|
|
25
|
|
-report.llCommonTripGearUseFeatures.repeatVariable.1.request=Select g.id \
|
|
|
18
|
+modelType=LL
|
|
|
19
|
+name=Liste des équipements
|
|
|
20
|
+name.en=Gears uses features
|
|
|
21
|
+name.es=
|
|
|
22
|
+description=Afficher les équipements
|
|
|
23
|
+description.en=Display gear uses features
|
|
|
24
|
+description.es=
|
|
|
25
|
+columns=Equipement,Nombre,Utilisé dans la marée,Mesures
|
|
|
26
|
+columns.en=Gear,Number,Used in trip?,Measures
|
|
|
27
|
+columns.es=
|
|
|
28
|
+repeatVariable.1.name=gearUseFeaturesId
|
|
|
29
|
+repeatVariable.1.type=java.lang.String
|
|
|
30
|
+repeatVariable.1.request=Select g.id \
|
|
26
|
31
|
From fr.ird.observe.entities.data.ll.common.TripImpl m \
|
|
27
|
32
|
Join m.gearUseFeatures g \
|
|
28
|
33
|
Where \
|
|
29
|
34
|
m.id In :tripId \
|
|
30
|
35
|
and g in elements (m.gearUseFeatures) \
|
|
31
|
|
-Order By g.gear.label2
|
|
32
|
|
-report.llCommonTripGearUseFeatures.request.1.location=0,0
|
|
33
|
|
-report.llCommonTripGearUseFeatures.request.1.layout=row
|
|
34
|
|
-report.llCommonTripGearUseFeatures.request.1.request=Select \
|
|
35
|
|
-concat(CASE When g.gear.code IS NULL Then 'Aucun code' Else g.gear.code End, ' - ', g.gear.label2), \
|
|
|
36
|
+Order By g.gear.@i18nColumnName@
|
|
|
37
|
+request.1.location=0,0
|
|
|
38
|
+request.1.layout=row
|
|
|
39
|
+request.1.request=Select \
|
|
|
40
|
+concat(CASE When g.gear.code IS NULL Then '@noCode@' Else g.gear.code End, ' - ', g.gear.@i18nColumnName@), \
|
|
36
|
41
|
g.number, \
|
|
37
|
|
-( CASE g.usedInTrip When true Then 'Oui' Else Case g.usedInTrip When false Then 'Non' Else 'Indéterminé' End End )\
|
|
|
42
|
+( CASE g.usedInTrip When true Then '@yes@' Else Case g.usedInTrip When false Then '@no@' Else '@Null@' End End )\
|
|
38
|
43
|
From fr.ird.observe.entities.data.ll.common.GearUseFeaturesImpl g \
|
|
39
|
44
|
Where g.id = :gearUseFeaturesId
|
|
40
|
|
-report.llCommonTripGearUseFeatures.request.1.repeat.name=gearUseFeaturesId
|
|
41
|
|
-report.llCommonTripGearUseFeatures.request.1.repeat.layout=column
|
|
42
|
|
-report.llCommonTripGearUseFeatures.operations.1.type=ComputeMeasurementsLongline
|
|
|
45
|
+request.1.repeat.name=gearUseFeaturesId
|
|
|
46
|
+request.1.repeat.layout=column
|
|
|
47
|
+operations.1.type=ComputeMeasurementsLongline
|
|
|
48
|
+i18n.Null=Indéterminé
|
|
|
49
|
+i18n.Null.en=Undefined
|
|
|
50
|
+i18n.Null.es=Indeterminado
|
|
|
51
|
+i18n.noCode=Aucun code
|
|
|
52
|
+i18n.noCode.en=No code
|
|
|
53
|
+i18n.noCode.es=
|
|
43
|
54
|
```
|
|
44
|
55
|
|
|
45
|
56
|
Ici l'identifiant du rapport est ```llCommonTripGearUseFeatures```.
|
|
46
|
57
|
|
|
47
|
58
|
Par convention, on utilise le domaine métier **ll**, suivi du sous-domaine métier **Common**, puis enfin un suffixe qui
|
|
48
|
59
|
exprime ce que le rapport doit produire **TripGearUseFeatures**.
|
|
49
|
|
-
|
|
50
|
|
-Dans le fichier global, toutes les entrées commençants par **report.llCommonTripGearUseFeatures** permettent alors de
|
|
51
|
|
-décrire le rapport.
|
|
52
|
|
-
|
|
|
60
|
+
|
|
53
|
61
|
### Méta-données d'un rapport
|
|
54
|
62
|
|
|
55
|
63
|
Il existe cinq méta-données pour un rapport (dont trois sont obligatoires) :
|
|
56
|
64
|
|
|
57
|
65
|
```properties
|
|
58
|
|
-report.xxx.modelType=PS ou LL
|
|
59
|
|
-report.xxx.name=Nom du rapport
|
|
60
|
|
-report.xxx.description=Description du rapport
|
|
61
|
|
-report.xxx.columns=En-têtes des colonnes du rapport (séparées par des virgules) [Optionnel]
|
|
62
|
|
-report.xxx.rows=En-têtes des lignes du rapport (séparées par des virgules) [Optionnel]
|
|
|
66
|
+modelType=PS ou LL
|
|
|
67
|
+name=Nom du rapport
|
|
|
68
|
+name.en=Nom du rapport (Anglais)
|
|
|
69
|
+name.es=Nom du rapport (Espagnol)
|
|
|
70
|
+description=Description du rapport
|
|
|
71
|
+description.en=Description du rapport (Anglais)
|
|
|
72
|
+description.es=Description du rapport (Espagnol)
|
|
|
73
|
+columns=En-têtes des colonnes du rapport (séparées par des virgules) [Optionnel]
|
|
|
74
|
+columns.en=En-têtes des colonnes du rapport (séparées par des virgules) (Anglais) [Optionnel]
|
|
|
75
|
+columns.es=En-têtes des colonnes du rapport (séparées par des virgules) (Espagnol) [Optionnel]
|
|
|
76
|
+rows=En-têtes des lignes du rapport (séparées par des virgules) [Optionnel]
|
|
|
77
|
+rows.en=En-têtes des lignes du rapport (séparées par des virgules) (Anglais) [Optionnel]
|
|
|
78
|
+rows.es=En-têtes des lignes du rapport (séparées par des virgules) (Espagnol) [Optionnel]
|
|
63
|
79
|
```
|
|
64
|
80
|
|
|
65
|
|
-```report.xxx.modelType``` permet de définir le domaine métier sur lequel porte le rapport, valeurs possibles :
|
|
|
81
|
+```modelType``` permet de définir le domaine métier sur lequel porte le rapport, valeurs possibles :
|
|
66
|
82
|
|
|
67
|
83
|
* **PS** pour le domaine *Senne*
|
|
68
|
84
|
* **LL** pour le domaine *Palangre*.
|
|
69
|
85
|
|
|
70
|
86
|
En *V10*, on ajoutera certainement **COMMON** pour le domaine métier des marées agnostiques.
|
|
71
|
87
|
|
|
72
|
|
-```report.xxx.name``` permet de définir le nom du rapport, ce texte est celui affiché dans la liste déroulante des
|
|
|
88
|
+```name``` permet de définir le nom du rapport en français, ce texte est celui affiché dans la liste déroulante des
|
|
73
|
89
|
rapports à sélectionner dans l'assistant.
|
|
74
|
90
|
|
|
75
|
|
-```report.xxx.description``` permet de définir une description longue d'un rapport, ce texte est celui affiché
|
|
|
91
|
+```name.en``` permet de définir le nom du rapport en anglais, si vide le texte français est utilisé.
|
|
|
92
|
+
|
|
|
93
|
+```name.es``` permet de définir le nom du rapport en espagnol, si vide le texte français est utilisé.
|
|
|
94
|
+
|
|
|
95
|
+```description``` permet de définir une description longue d'un rapport, ce texte est celui affiché
|
|
76
|
96
|
comme description lorsqu'un rapport est sélectionné dans l'assistant.
|
|
77
|
97
|
|
|
78
|
|
-```report.xxx.colomns``` **[Optionnel]** permet de définir les en-têtes de colonnes de manière fixe.
|
|
|
98
|
+```description.en``` version anglaise, si vide le texte français est utilisé.
|
|
|
99
|
+
|
|
|
100
|
+```description.es``` version espagnole, si vide le texte français est utilisé.
|
|
79
|
101
|
|
|
80
|
|
-```report.xxx.rows``` **[Optionnel]** permet de définir les en-têtes de lignes de manière fixe.
|
|
|
102
|
+```colomns``` **[Optionnel]** permet de définir les en-têtes de colonnes de manière fixe.
|
|
|
103
|
+
|
|
|
104
|
+```colomns.en``` version anglaise, si vide le texte français est utilisé.
|
|
|
105
|
+
|
|
|
106
|
+```colomns.es``` version espagnole, si vide le texte français est utilisé.
|
|
|
107
|
+
|
|
|
108
|
+```rows``` **[Optionnel]** permet de définir les en-têtes de lignes de manière fixe.
|
|
|
109
|
+
|
|
|
110
|
+```rows.en``` version anglaise, si vide le texte français est utilisé.
|
|
|
111
|
+
|
|
|
112
|
+```rows.es``` version espagnole, si vide le texte français est utilisé.
|
|
81
|
113
|
|
|
82
|
114
|
Il est possible de ne pas les indiquer si le rapport n'a pas d'en-têtes de colonnes ou de lignes fixes; Ces en-têtes
|
|
83
|
115
|
seront alors définies via les requêtes du rapport.
|
| ... |
... |
@@ -100,9 +132,9 @@ variable attend que la seconde soit remplie...** |
|
100
|
132
|
Pour décrire une variable trois lignes sont nécessaires, comme on peut le voir dans l'exemple suivant :
|
|
101
|
133
|
|
|
102
|
134
|
```properties
|
|
103
|
|
-report.xxx.variable.1.name=speciesGroup
|
|
104
|
|
-report.xxx.variable.1.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
|
|
105
|
|
-report.xxx.variable.1.request=Select distinct sg \
|
|
|
135
|
+variable.1.name=speciesGroup
|
|
|
136
|
+variable.1.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
|
|
|
137
|
+variable.1.request=Select distinct sg \
|
|
106
|
138
|
From TripImpl t \
|
|
107
|
139
|
Join t.routeObs r \
|
|
108
|
140
|
Join r.activity a \
|
| ... |
... |
@@ -114,11 +146,11 @@ Where t.id In :tripId \ |
|
114
|
146
|
Order By sg.code
|
|
115
|
147
|
```
|
|
116
|
148
|
|
|
117
|
|
-```report.xxx.variable.1.name``` définit l'*alias* de la variable que l'on pourra ensuite utiliser dans le
|
|
|
149
|
+```variable.1.name``` définit l'*alias* de la variable que l'on pourra ensuite utiliser dans le
|
|
118
|
150
|
reste de la définition du rapport (par exemple dans d'autres variables, variables de répétition, requêtes ou
|
|
119
|
151
|
opérations).
|
|
120
|
152
|
|
|
121
|
|
-```report.xxx.variable.1.type``` définit le type de la variable. Ce type doit être un type de *dto* ou une
|
|
|
153
|
+```variable.1.type``` définit le type de la variable. Ce type doit être un type de *dto* ou une
|
|
122
|
154
|
*référence de dto*. On ne peut pas ici utiliser un type d'*entité*, puisque l'interface graphique (selon le principe de
|
|
123
|
155
|
séparation des couches) n'a pas connaissance du modèle des entités.
|
|
124
|
156
|
|
| ... |
... |
@@ -133,13 +165,13 @@ l'arbre de navigation; la notion de *dto* étant utilisée au niveau d'un formul |
|
133
|
165
|
* comment décorer la donnée
|
|
134
|
166
|
* comment transformer l'entité
|
|
135
|
167
|
|
|
136
|
|
-```report.xxx.variable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de
|
|
|
168
|
+```variable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de
|
|
137
|
169
|
la variable.
|
|
138
|
170
|
|
|
139
|
171
|
Il est possible de documenter cette variable en utilise une quatrième ligne optionnelle :
|
|
140
|
172
|
|
|
141
|
173
|
```properties
|
|
142
|
|
-report.xxx.variable.1.comment=Un commentaire optionnel pour documenter la variable
|
|
|
174
|
+variable.1.comment=Un commentaire optionnel pour documenter la variable
|
|
143
|
175
|
```
|
|
144
|
176
|
|
|
145
|
177
|
**À noter que l'utilisation d'une variable dans le reste du rapport se fait toujours via son identifiant technique
|
| ... |
... |
@@ -151,9 +183,9 @@ sélection des marées sur lequel on veut appliquer le rapport**. |
|
151
|
183
|
Voici un second exemple de deux variables dont la seconde utilise la première :
|
|
152
|
184
|
|
|
153
|
185
|
```properties
|
|
154
|
|
-report.xxx.variable.1.name=discardMode
|
|
155
|
|
-report.xxx.variable.1.type=fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto
|
|
156
|
|
-report.xxx.variable.1.request=Select distinct new fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto(sf.discard) \
|
|
|
186
|
+variable.1.name=discardMode
|
|
|
187
|
+variable.1.type=fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto
|
|
|
188
|
+variable.1.request=Select distinct new fr.ird.observe.dto.data.ps.observation.SpeciesFateDiscardModeDto(sf.discard) \
|
|
157
|
189
|
From TripImpl t \
|
|
158
|
190
|
Join t.routeObs r \
|
|
159
|
191
|
Join r.activity a \
|
| ... |
... |
@@ -162,9 +194,9 @@ Join c.catches ca with ca.totalCount Is Not Null \ |
|
162
|
194
|
Join ca.speciesFate sf \
|
|
163
|
195
|
Where t.id In :tripId \
|
|
164
|
196
|
Order By sf.discard
|
|
165
|
|
-report.xxx.variable.2.name=speciesGroup
|
|
166
|
|
-report.xxx.variable.2.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
|
|
167
|
|
-report.xxx.variable.2.request=Select distinct sg \
|
|
|
197
|
+variable.2.name=speciesGroup
|
|
|
198
|
+variable.2.type=fr.ird.observe.dto.referential.common.SpeciesGroupReference
|
|
|
199
|
+variable.2.request=Select distinct sg \
|
|
168
|
200
|
From TripImpl t \
|
|
169
|
201
|
Join t.routeObs r \
|
|
170
|
202
|
Join r.activity a \
|
| ... |
... |
@@ -194,9 +226,9 @@ Comme indiqué plus haut, la syntaxe d'une variable de répétition est identiqu |
|
194
|
226
|
Pour décrire une variable de répétition, trois lignes sont nécessaires, comme on peut le voir dans l'exemple suivant :
|
|
195
|
227
|
|
|
196
|
228
|
```properties
|
|
197
|
|
-report.xxx.repeatVariable.1.name=gearUseFeaturesId
|
|
198
|
|
-report.xxx.repeatVariable.1.type=java.lang.String
|
|
199
|
|
-report.xxx.repeatVariable.1.request=Select g.id \
|
|
|
229
|
+repeatVariable.1.name=gearUseFeaturesId
|
|
|
230
|
+repeatVariable.1.type=java.lang.String
|
|
|
231
|
+repeatVariable.1.request=Select g.id \
|
|
200
|
232
|
From fr.ird.observe.entities.data.ll.common.TripImpl m \
|
|
201
|
233
|
Join m.gearUseFeatures g \
|
|
202
|
234
|
Where \
|
| ... |
... |
@@ -205,10 +237,10 @@ and g in elements (m.gearUseFeatures) \ |
|
205
|
237
|
Order By g.gear.label2
|
|
206
|
238
|
```
|
|
207
|
239
|
|
|
208
|
|
-```report.xxx.repeatVariable.1.name``` définit l'*alias* de la variable de répétition à utiliser dans une requête, autre
|
|
|
240
|
+```repeatVariable.1.name``` définit l'*alias* de la variable de répétition à utiliser dans une requête, autre
|
|
209
|
241
|
variable de répétition ou opération
|
|
210
|
242
|
|
|
211
|
|
-```report.xxx.repeatVariable.1.type``` définit le type de la variable de répétition. Contrairement aux variables, les
|
|
|
243
|
+```repeatVariable.1.type``` définit le type de la variable de répétition. Contrairement aux variables, les
|
|
212
|
244
|
variables de répétition sont utilisées en interne pour exécuter le rapport, on peut donc utiliser directement des types
|
|
213
|
245
|
d'*entité*,
|
|
214
|
246
|
ou bien des types *simples* qui correspondent aux types d'une colonne en base (**java.lang.String**, **java.lang.Float
|
| ... |
... |
@@ -219,7 +251,7 @@ requêtes : |
|
219
|
251
|
si on définit une variable de type *entité*, c'est bien l'entité qui sera injectée dans la requête *hql*, et non pas
|
|
220
|
252
|
juste son identifiant technique.**
|
|
221
|
253
|
|
|
222
|
|
-```report.xxx.repeatVariable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de la variable
|
|
|
254
|
+```repeatVariable.1.request``` définit la requête **hql** pour récupérer l'univers des valeurs de la variable
|
|
223
|
255
|
de répétition
|
|
224
|
256
|
|
|
225
|
257
|
Il est possible d'utiliser dans une requête de variable de répétition, un alias sur toute variable du rapport (dont la
|
| ... |
... |
@@ -235,13 +267,13 @@ l'univers de cette variable de répétion, ce qui peut etre utilise (et nous nou |
|
235
|
267
|
pas décrire via la requete *hql.
|
|
236
|
268
|
|
|
237
|
269
|
```properties
|
|
238
|
|
-report.xxx.repeatVariable.1.addNull=true
|
|
|
270
|
+repeatVariable.1.addNull=true
|
|
239
|
271
|
```
|
|
240
|
272
|
|
|
241
|
273
|
Il est possible de documenter cette variable de répétition en utilisant une ligne optionnelle :
|
|
242
|
274
|
|
|
243
|
275
|
```properties
|
|
244
|
|
-report.xxx.repeatVariable.1.comment=Un commentaire optionnel pour documenter la variable de répétition
|
|
|
276
|
+repeatVariable.1.comment=Un commentaire optionnel pour documenter la variable de répétition
|
|
245
|
277
|
```
|
|
246
|
278
|
|
|
247
|
279
|
### requêtes d'un rapport
|
| ... |
... |
@@ -255,9 +287,9 @@ On distingue deux types de requêtes : |
|
255
|
287
|
Les deux types de requêtes nécessitent les trois lignes, comme décrit dans l'exemple suivant :
|
|
256
|
288
|
|
|
257
|
289
|
```properties
|
|
258
|
|
-report.xxx.request.1.location=0,0
|
|
259
|
|
-report.xxx.request.1.layout=row
|
|
260
|
|
-report.xxx.request.1.request=Select \
|
|
|
290
|
+request.1.location=0,0
|
|
|
291
|
+request.1.layout=row
|
|
|
292
|
+request.1.request=Select \
|
|
261
|
293
|
concat(CASE When g.gear.code IS NULL Then 'Aucun code' Else g.gear.code End, ' - ', g.gear.label2), \
|
|
262
|
294
|
g.number, \
|
|
263
|
295
|
( CASE g.usedInTrip When true Then 'Oui' Else Case g.usedInTrip When false Then 'Non' Else 'Indéterminé' End End )\
|
| ... |
... |
@@ -265,10 +297,10 @@ From fr.ird.observe.entities.data.ll.common.GearUseFeaturesImpl g \ |
|
265
|
297
|
Where g.id = :gearUseFeaturesId
|
|
266
|
298
|
```
|
|
267
|
299
|
|
|
268
|
|
-```report.xxx.request.1.location``` définit la position dans le résultat final où positionner le résultat de cette
|
|
|
300
|
+```request.1.location``` définit la position dans le résultat final où positionner le résultat de cette
|
|
269
|
301
|
requête.
|
|
270
|
302
|
|
|
271
|
|
-```report.xxx.request.1.layout``` définit la disposition à utiliser pour placer le résultat de cette requête dans le
|
|
|
303
|
+```request.1.layout``` définit la disposition à utiliser pour placer le résultat de cette requête dans le
|
|
272
|
304
|
résultat final. Deux valeurs sont possibles :
|
|
273
|
305
|
|
|
274
|
306
|
* **row** pour signifier que le résultat de la requête sera positionné en ligne à partir de la position précedemment
|
| ... |
... |
@@ -277,24 +309,24 @@ résultat final. Deux valeurs sont possibles : |
|
277
|
309
|
précedemment définie. Ce mode est une transposition du résultat de la requête : une ligne du résultat de la requête
|
|
278
|
310
|
sera une colonne dans le résultat final
|
|
279
|
311
|
|
|
280
|
|
-```report.xxx.request.1.request``` définit le code **hql** qui permet de construire le résultat à placer ensuite dans le
|
|
|
312
|
+```request.1.request``` définit le code **hql** qui permet de construire le résultat à placer ensuite dans le
|
|
281
|
313
|
résultat final du rapport
|
|
282
|
314
|
|
|
283
|
315
|
Pour une requête avec variable de répétition, il faut alors ajouter les deux lignes suivantes :
|
|
284
|
316
|
|
|
285
|
317
|
```properties
|
|
286
|
|
-report.xxx.request.1.repeat.name=gearUseFeaturesId
|
|
287
|
|
-report.xxx.request.1.repeat.layout=column
|
|
|
318
|
+request.1.repeat.name=gearUseFeaturesId
|
|
|
319
|
+request.1.repeat.layout=column
|
|
288
|
320
|
```
|
|
289
|
321
|
|
|
290
|
|
-```report.xxx.request.1.repeat.name``` définit l'*alias* de la variable de répétition à utiliser. La requête sera
|
|
|
322
|
+```request.1.repeat.name``` définit l'*alias* de la variable de répétition à utiliser. La requête sera
|
|
291
|
323
|
exécutée
|
|
292
|
324
|
autant de fois qu'il y a de valeurs dans l'univers calculé de la variable de répétition.
|
|
293
|
325
|
|
|
294
|
326
|
**À noter qu'il faut alors que le corps de cette requête doit utiliser l'alias de cette variable de répétition, même si
|
|
295
|
327
|
dans les faits, rien ne l'oblige, mais le résultat sera alors toujours le même...**
|
|
296
|
328
|
|
|
297
|
|
-```report.xxx.request.1.repeat.layout``` définit la disposition à utiliser pour constuire le résultat final de la
|
|
|
329
|
+```request.1.repeat.layout``` définit la disposition à utiliser pour constuire le résultat final de la
|
|
298
|
330
|
requête appliqué à chaque valeur de la variable de répétition. Deux valeurs sont possibles :
|
|
299
|
331
|
|
|
300
|
332
|
* **row** pour signifier que pour chaque valeur de l'univers de la variable de répétition, le résultat de la requête
|
| ... |
... |
@@ -309,7 +341,7 @@ sont pas compatibles.** |
|
309
|
341
|
Il est possible de documenter cette requête en utilisant une ligne optionnelle :
|
|
310
|
342
|
|
|
311
|
343
|
```properties
|
|
312
|
|
-report.xxx.request.1.comment=Un commentaire optionnel pour documenter la requête
|
|
|
344
|
+request.1.comment=Un commentaire optionnel pour documenter la requête
|
|
313
|
345
|
```
|
|
314
|
346
|
|
|
315
|
347
|
### Opérations d'un rapport
|
| ... |
... |
@@ -323,23 +355,23 @@ Les deux types d'opération nécessitent une première ligne pour déclarer le t |
|
323
|
355
|
dans l'exemple suivant :
|
|
324
|
356
|
|
|
325
|
357
|
```properties
|
|
326
|
|
-report.xxx.operations.1.type=SumIntRow
|
|
|
358
|
+operations.1.type=SumIntRow
|
|
327
|
359
|
```
|
|
328
|
360
|
|
|
329
|
|
-```report.xxx.operations.1.type``` définit le type d'opération à réaliser.
|
|
|
361
|
+```operations.1.type``` définit le type d'opération à réaliser.
|
|
330
|
362
|
|
|
331
|
363
|
Dans le cas où l'opération est paramétrable, on doit alors ajouter une autre ligne avec le paramétrage de l'opération :
|
|
332
|
364
|
|
|
333
|
365
|
```properties
|
|
334
|
|
-report.xxx.operations.1.parameters=0|1
|
|
|
366
|
+operations.1.parameters=0|1
|
|
335
|
367
|
```
|
|
336
|
368
|
|
|
337
|
|
-```report.xxx.operations.1.parameters``` définit le paramétrage à utiliser pour exécuter l'opération.
|
|
|
369
|
+```operations.1.parameters``` définit le paramétrage à utiliser pour exécuter l'opération.
|
|
338
|
370
|
|
|
339
|
371
|
Il est possible de documenter cette opération en utilisant une ligne optionnelle :
|
|
340
|
372
|
|
|
341
|
373
|
```properties
|
|
342
|
|
-report.xxx.operations.1.comment=Un commentaire optionnel pour documenter l'opération
|
|
|
374
|
+operations.1.comment=Un commentaire optionnel pour documenter l'opération
|
|
343
|
375
|
```
|
|
344
|
376
|
|
|
345
|
377
|
Les opérations disponibles et leur documentation sont décrites dans le document [suivant](./embedded-operations.html).
|
| ... |
... |
@@ -355,14 +387,18 @@ Un rendu est défini par deux lignes : |
|
355
|
387
|
2. Une pour paramétrer ce rendu
|
|
356
|
388
|
|
|
357
|
389
|
```properties
|
|
358
|
|
-report.xxx.columnRenderers.1.type=HighlightIfAbsoluteDeltaIsPositive
|
|
359
|
|
-report.ccc.columnRenderers.1.parameters=10|11|0.0001|0.5
|
|
|
390
|
+columnRenderers.1.type=HighlightIfAbsoluteDeltaIsPositive
|
|
|
391
|
+columnRenderers.1.parameters=10|11|0.0001|0.5
|
|
360
|
392
|
```
|
|
361
|
393
|
|
|
362
|
394
|
Il est possible d'ajouter plusieurs rendus sur un même rapport.
|
|
363
|
395
|
|
|
364
|
396
|
Les rendus disponibles et leur documentation sont décrits dans le document [suivant](./embedded-column-renderers.html).
|
|
365
|
397
|
|
|
|
398
|
+### Traductions
|
|
|
399
|
+
|
|
|
400
|
+**TODO**
|
|
|
401
|
+
|
|
366
|
402
|
## Pour aller plus loin
|
|
367
|
403
|
|
|
368
|
404
|
Vous pouvez aussi consulter la [documentation des rapports embarqués par l'application](./embedded-reports.html). |