Données dynamiques globales
Bien souvent dans les dashboards, on souhaite personnaliser les titres des
tuiles avec des données dynamiques. Chaque dashboard effectue un appel à
la tâche UNI16 à chaque ouverture afin de récupérer une grille de donnée.
La grille de donnée est définie dans le paramétrage de chaque dashboard par
l’attribut gridId
.
<dashboard id="RESPONSABLE_SECTEUR" label="Responsables secteurs" width="24" gridId="CRM_FETCH_CHILDREN_STATES">
...
</dashboard>
Par défaut cette propriété est définie à UNI16_N1
. La tâche UNI16 est une
tâche de saisie simple ce qui permet de définir des valeurs par défaut par société
facilement. L’override du getGridData permet de retourner dynamique des valeurs
en fonction du contexte utilisateur.
La grille de retour est traitée de deux façon
Traitement de base de la grille de retour du UNI16
La grille de retour de UNI16 est traitée de deux façon
Prenons un exemple de grille envoyée au serveur :
<GridView ID="MSP_INFOS" Label="informations sur les MSP">
<Column ID="KEY" DataFieldID="ADRDOS.ID_PK" Width="10" />
<Column ID="LABEL" DataFieldID="ADRDOS.DLABEL" Width="Auto" />
</GridView>
Un retour possible de cette grille est :
<GridView ID="MSP_INFOS" Label="informations sur les MSP">
<Column ID="KEY" DataFieldID="ADRDOS.ID_PK" Width="10" />
<Column ID="LABEL" DataFieldID="ADRDOS.DLABEL" Width="Auto" />
25[C]John Smith[L]EX[C]Anne Onyme
</GridView>
Le système va faire un mapping entre la première colonne visible et la deuxième colonne visible.
25 -> John Smith
EX -> Anne Onyme
Ces mappings sont transformées en variables disponible dans les contextes sous la forme habituelle
${25}
et ${EX}
Traitement de la grille de retour du SYS26
Un autre traitement est appliqué aux grilles plus complexes.
Prenons un exemple de grille envoyée au serveur :
<GridView ID="MSP_INFOS" Label="informations sur les MSP">
<Column ID="KEY" DataFieldID="ADRDOS.ID_PK" Width="Auto" />
<Column ID="LABEL" DataFieldID="ADRDOS.DLABEL" Width="Auto" />
<Column ID="BIRTH" DataFieldID="ADRDOS.BIRTHDAY" Width="Auto" />
</GridView>
Un retour possible de cette grille est :
<GridView ID="MSP_INFOS" Label="informations sur les MSP">
<Column ID="KEY" DataFieldID="ADRDOS.ID_PK" Width="Auto" />
<Column ID="LABEL" DataFieldID="ADRDOS.DLABEL" Width="Auto" />
<Column ID="BIRTH" DataFieldID="ADRDOS.BIRTHDAY" Width="Auto" />
25[C]John Smith[C]17/03/1990[L]36[C]Anne Onyme[C]25/06/1982
</GridView>
Le système va faire un mapping entre la clé de la grille et les données. On obtient donc dans ce cas
25 -> { KEY : "25", "LABEL" : "John Smith", "BIRTH": "17/03/1990" }
36 -> { KEY : "36", "LABEL" : "Anne Onyme", "BIRTH": "25/06/1982" }
Ces mappings sont transformées en variables disponible dans les contextes sous la forme
${<KeyId>}[<ColumnId>]
Par exemple lorsqu’on clique sur une ligne et qu’on veut faire une notification custom. On a alors accès aux autres valeurs des colonnes pour cette clé.
Autre exemple, la grille suivante :
<GridView ID="SECTEUR_STATUS" Label="informations sur le secteur">
<Column ID="PERIOD" DataFieldID="CRM_PERIOD"/>
<Column ID="COUNT" DataFieldID="PERIOD_COUNT"/>
</GridView>
retourne la grille donnant le mapping suivant
MORNING -> { PERIOD : "MORNING", "COUNT" : "10" }
AFTERNOON -> { PERIOD : "AFTERNOON", "COUNT" : "12" }
DAY -> { PERIOD : "DAY", "COUNT" : "13" }
Ces informations pourront facilement être affichées dans des tuiles dynamiquement car dans ce cas on connait les valeurs des clés pour le mapping
On sait à l’avancer que l’on a accès à
${MORNING}[COUNT]
, ${AFTERNOON}[COUNT]
et ${DAY}[COUNT]
Variables des filtres dans les notifications
Prenons l’exemple d’une tuile de filtre A qui filtre une autre tuile B. La configuration de la tuile B est par exemple la suivante :
...
<config>
...
<filteredBy>
<tileid>ASSURE_FILTER</tileid>
<filterValue><![CDATA[GTPEVT.STATEDOS : $ADRDOS.ID_PK]]></filterValue>
<visibleOnFilter>VisibleOnSingleValue</visibleOnFilter>
</filteredBy>
...
</config>
...
Lorsqu’on clique sur la tuile, l’action peut dans les notifications accéder aux variables venant des filtres appliqués
Ainsi, il est possible de définir une action comme suit :
...
<action type="Notification">
<notification>SOME_ID</notification>
<notificationSource>Remote</notificationSource>
<notificationTask>ADR02</notificationTask>
<notificationArguments>keys=${ASSURE_FILTER.ADRDOS.ID_PK},labels=${ASSURE_FILTER.ADRDOS.DLABEL}</notificationArguments>
</action>
...
La variable ${ASSURE_FILTER.ADRDOS.ID_PK}
vaudra par exemple “”, “R720” ou “R720 OR R42”