Paramétrage des widgets

Fonctionnement général de l'interface d'accueil


Contrairement au reste de l'ERP, ce n'est pas le serveur qui reste maître et le client qui est attente.
Dans l'interface d'accueil, c'est le serveur qui répond aux demandes du client.
Il y a deux types de demandes :

  1. Les actions utilisateur (demande de la liste des activités, lancement d'un choix, ...).

  2. La mise à jour automatique des widgets.


La communication entre le client et le serveur étant synchrone, il n'y a qu'une seule demande en cours de traitement à la fois.
L'interface d'accueil gère donc une file d'attente des demandes avec une notion de priorité :

  • Lorsqu'une demande (action utilisateur ou mise à jour de widget) nécessite d'accéder au serveur et que celui-ci est disponible, elle lui est envoyée et l'interface d'accueil attend sa réponse  .

  • Si une ou plusieurs autres demandes sont faites alors que le serveur n'a pas terminé le traitement et envoyé la réponse à la demande courante, les nouvelles demandes sont mises en file d'attente.

  • Les éléments de la file sont ensuite traités séquentiellement, au fur et à mesure de la disponibilité du serveur.

  • Les demandes de mise à jour de widget sont toujours mises en queue de file. Les actions de l'utilisateur, mises en tête de file, sont ainsi prioritaires.


Attention :
Le fait que les demandes soient traitées de manière synchrone implique que l'interface d'accueil reste en attente tout le temps qu'un widget passe à calculer sa valeur. En pratique, rien ne se passe à l'écran, toutes les autres demandes (y compris les actions de l'utilisateur) étant mises en file d'attente. Il est donc fortement recommandé de ne pas créer de widgets nécessitant un temps de calcul plus que raisonnable.

Widget Feu et Jauge


Ces deux types de widgets partagent les mêmes informations.
Les balises HMP sont :

Balise

Nom de l’alias en SQL

Commentaire

Type

MinValue

MINVAL

Valeur minimale

Numérique

MaxValue

MAXVAL

Valeur maximale

Numérique

CurrentValue

CURVAL

Valeur courante

Numérique

State

STATE

Etat (couleur)

Numérique

Spread (Facultatif)

SPREAD

Ecart par rapport à l'objectif

Alpha

Current (Facultatif)

CURVALTXT

Valeur courante formatée

Alpha

Text (Facultatif)

TEXT

Titre du widget

Alpha

Error (Facultatif)

ERROR

Texte d'erreur

Alpha


La balise <Text> permet de changer le libellé affiché du widget. Par défaut, c'est le titre du widget qui est affiché.
La balise <Error> permet d'afficher une erreur par dessus le widget.
Si la balise <Current> est présente, c'est le contenu de cette balise qui est affichée. Cela permet d'afficher une valeur mise en forme.
Remarque : Ces balises sont les mêmes pour le widget Feu et Jauge. Un même module de calcul peut donc être utilisé pour les deux types.

Couleur de l'indicateur
4 constantes sont définis dans l'include zdiva.dhsp :

  • TRAFFIC_STATE_NEUTRAL (bleu)

  • TRAFFIC_STATE_GREEN (vert)

  • TRAFFIC_STATE_ORANGE (orange)

  • TRAFFIC_STATE_RED (rouge)


Exemple :
1 compteur X = 0
Function String InitFeu(&Widget)
record a5dd.dhsd MWidget Widget
beginf
FReturn "<MinValue>0<MaxValue>100"
endf
Function String UpdateFeu (&Widget)
record a5dd.dhsd MWidget Widget
1 valeur X
1 resultat S
beginf
valeur = Modulo(compteur++, 4)
resultat = "<CurrentValue>" & ToString(valeur) && "<State>" & ToString (valeur) && "<Spread>Ecart : " & toString(100 - compteur) & "<Current>"
Switch2 (valeur)
Case TRAFFIC_STATE_NEUTRAL
resultat &= "NaN"
Case TRAFFIC_STATE_GREEN
resultat &= "Excellent"
Case TRAFFIC_STATE_ORANGE
resultat &= "Moyen"
Case TRAFFIC_STATE_RED
resultat &= "Médiocre"
EndSwitch
FReturn resultat
endf

Si ce widget Feu est configuré pour être rafraîchi toutes les secondes, on obtient à l'affichage :
puis
puis
puis


Si on choisit le type Jauge, on obtient :
puis
puis
puis



Widget Liste et Tableau


Les balises HMP sont :

Balise

Commentaire

Type

ListElement

Balise de départ



DivaId

Identifiant permettant de retrouver l'élément dans la fonction d'action

Alpha

Title

Texte à afficher

Alpha

Text

Titre du widget

Alpha

Priority (Facultatif)

Priorité de l'élément

Numérique

Error

Texte d'erreur

Alpha


La balise <Text> permet de changer le libellé affiché du widget. Par défaut, c'est le titre du widget qui est affiché.
La balise <Priority> permet de donner une priorité à l'élément. Les valeurs possibles sont décrites dans l'include zdiva.dhsp (TASK_PRIORITY_XXXX).
La balise <Error> permet d'afficher une erreur par dessus le widget.
La balise <DivaId> permet de renseigner un identifiant unique permettant de retrouver l'élément cliqué par l'utilisateur. La valeur de cet attribut sera passé en paramètre à la fonction d'action.

Présentation sous forme de grille
Pour ce faire, les balises HMP sont :

Balise

Commentaire

Type

HeaderColumn

Balise de départ



Title

Texte de l'entête de colonne

Alpha

Alignment

Alignement de la colonne :

  • 0 : aligné à gauche (par défaut)

  • 1 : centré

  • 2 : aligné à droite

Alpha


La construction des informations de l'entête peut se faire soit dans la fonction d'initialisation, soit dans la fonction de mise à jour.
Pour les informations de chaque lignes, la balise "<TITLE>" n'existe plus. Elle est remplacée par la balise "<COLUMN>". Il faut une balise "<COLUMN>" par colonne déclarée dans l'entête.

Fonction d'action
Dans la fonction d'action, on peut connaître le type de clic que l'utilisateur a effectué ainsi que l'état des touches Ctrl, Maj et Alt. Toutes les informations sont stockées dans Harmony.SourisBout, Harmony.SourisClav et Harmony.SourisClic.
Il est également possible de relancer une demande de mise à jour du widget à partir de cette fonction. Pour faire cette demande, il faut écrire : PingLocal("IA_UpdateWidget", TRUE). Au retour de la fonction d'action, le widget sera automatiquement remis à jour.

Exemple :
Function String InitListe (&Widget)
record a5dd.dhsd MWidget Widget
beginf
freturn ""
endf
Function string UpdateListe(&Widget)
record a5dd.dhsd MWidget Widget
1 res S
beginf
res = "<ListElement><DivaId>1<Title>Widget Liste"
res &= "<ListElement><DivaId>2<Title>Il possède une fonction d'initialisation<Priority>" & ToString(TASK_PRIORITY_HIGH)
res &= "<ListElement><DivaId>3<Title>Une fonction de mise à jour"
res &= "<ListElement><DivaId>4<Title>Et une fonction d'action"
res &= "<ListElement><DivaId>5<Title>Lors du double-clic sur un élement"
res &= "<ListElement><DivaId>6<Title>L'attribut DivaId est envoyé en paramètre"
res &= "<ListElement><DivaId>7<Title>A la fonction d'action"
res &= "<Text>Widget de type Liste"
freturn res
endf
Procedure ActionListe(&Widget, DivaId)
record a5dd.dhsd MWidget Widget
1 DivaId A
beginp
Messagebox("Action utilisateur - DivaId : " & DivaId, "Widget Liste")
endp

A l'affichage, on obtient :


Exemple avec une mise en forme en grille :
Function String InitListe (&Widget)
record a5dd.dhsd MWidget Widget
1 res S
beginf
res = "<HEADERCOLUMN><TITLE>Référence<ALIGNMENT>0"
res &= "<HEADERCOLUMN><TITLE>Désignation<ALIGNMENT>0"
res &= "<HEADERCOLUMN><TITLE>Prix<ALIGNMENT>2"
freturn res
endf
Function string UpdateListe(&Widget)
record a5dd.dhsd MWidget Widget
1 res S
beginf
res = ""
res &= "<ListElement><DivaId>1<Column>ALB0001<Column>Album petit louvre<Column>18.84"
res &= "<ListElement><DivaId>1<Column>BLO0001<Column>Blouse de peintre<Column>41.25"
res &= "<ListElement><DivaId>1<Column>CAC0005<Column>Bouton tiroir<Column>0.0"
res &= "<Text>Widget de type Liste Grille"
freturn res
endf
A l'affichage, on obtient :

On remarquera que les prix sont bien alignés sur la droite.

Widget BI


Le widget BI est très simple : il ne demande que l'url du rapport à afficher.
La fonction d'initialisation doit renvoyer le lien du rapport avec la balise <URL>.


Par exemple, si l'adresse est renseignée dans les paramètres du widget, la fonction d'initialisation ressemble à :
Function String InitBi (&Widget)
record a5dd.dhsd MWidget Widget
beginf
freturn "<URL>" & left(Widget.MSG)
endf

Widget Flux RSS


Les balises HMP sont :

Balise

Commentaire

Type

Url

URL du flux à afficher



Locked

Indique si l'utilisateur à le droit de modifier le flux (valeurs : 0/1)

Numérique

Error

Texte d'erreur

Alpha


La balise <Error> permet d'afficher une erreur par dessus le widget.
Il n'y a pas de programmation à effectuer, la fonction d'initialisation étant intégré à Ia.dhop.
Pour modifier le flux, si l'utilisateur en a le droit, il faut cliquer sur le logo RSS en haut à droite du widget et entrer la nouvelle adresse.
Un double clic sur un élément de la liste ouvre le navigateur internet et charge l'information complète.



Annuaire de source RSS 



A l'affichage, on obtient par exemple :





Widget Graphique (courbe, histogramme, circulaire)


Ces trois types de widgets partagent les mêmes informations.
Les balises HMP sont :

Balise

Commentaire

Type

Type

Type de graphique

  • Bar (Histogramme)

  • Line (Courbe)

  • Pie (Camembert)

Alpha

HorizontalAxisTitle

Titre de l'axe horizontal

Alpha

VerticalAxisTitle

Titre de l'axe vertical

Alpha

Orientation

Orientation du graphique de type Bar (histogramme)

  • Horizontal

  • Vertical

Alpha

Palette

Palette de couleur à utiliser

Alpha

ShowLegend

Pour afficher ou non la légende (1/0)

Numérique

HideLabels

Pour masquer (1) ou non (0) les libellés des points

Numérique

Serie

Nom de la série

Alpha

Value

Valeur

Numérique

PointLabel

Libellé du point (facultatif, par défaut, la valeur est utilisée comme libellé)

Alpha

Name

Nom/abscisse du point

Alpha


La balise <Text> permet de changer le libellé affiché du widget. Par défaut, c'est le titre du widget qui est affiché.
La balise <Error> permet d'afficher une erreur par dessus le widget.
Remarque :

  • Ces balises sont les mêmes pour les différents type de graphique. Un même module de calcul peut donc être utilisé pour les trois affichages.

  • Pour les types Bar et Line, il est possible d'afficher plusieurs séries de valeurs


Couleurs des graphiques
15 palettes de couleurs sont disponibles. Par défaut, c'est la palette Windows8 qui est utilisée.


Exemple :
Function String InitChart (&Widget)
record a5dd.dhsd MWidget Widget
1 res S
BeginF
res = "<Type>Bar"
res &= "<HorizontalAxisTitle>Abscisse"
res &= "<VerticalAxisTitle>Ordonnée"
res &= "<Serie>Série 1"
res &= "<Value>10<Name>Jan" & \
"<Value>32<Name>Fév" & \
"<Value>42<Name>Mar" & \
"<Value>50<Name>Avr" & \
"<Value>62<Name>Mai" & \
"<Value>40<Name>Juin" & \
"<Value>80<Name>Juil" & \
"<Value>90<Name>Aou" & \
"<Value>40<Name>Sep" & \
"<Value>50<Name>Oct" & \
"<Value>70<Name>Nov" & \
"<Value>20<Name>Dec"
res &= "<Serie>Série 2"
res &= "<Value>14<Name>Jan" & \
"<Value>26<Name>Fév" & \
"<Value>64<Name>Mar" & \
"<Value>45<Name>Avr" & \
"<Value>32<Name>Mai" & \
"<Value>20<Name>Juin" & \
"<Value>70<Name>Juil" & \
"<Value>40<Name>Aou" & \
"<Value>80<Name>Sep" & \
"<Value>60<Name>Oct" & \
"<Value>70<Name>Nov" & \
"<Value>10<Name>Dec"
res &= "<Orientation>Horizontal"
res &= "<Palette>Windows8"
res &= "<ShowLegend>1"
freturn res
Endf

Visuels