Page 1 sur 1
Unified - Script JS - Changement de couleur de bouton
Posté : 28 juin 2024, 12:21
par valerypetit
Bonjour,
J'aimerais écrire un script pour modifier la couleur d'un bouton en fonction de deux variables (je n'ai pas compris l'utilisation de la "couleur alternative" qui a peut-être déjà cette fonction.....
J'ai deux variables
- In_Onglet_State qui me permet de savoir lequel de met onglet est sélectionné (variable interne à l'écran)
- DB_Data_HMI_General_AFF_BOUTON_AL qui me permet d'animer l'onglet en fonction de la présence d'un défaut ou d'une alarme.
Je n'ai pas d'expérience en JS encore moi en Unified du coup je vois avoue que je ne sais pas trop où ça cloche ni comment le diagnostiquer
Code : Tout sélectionner
export async function Onglet_Defaut_BackColor_Trigger(item) {
// Vérification de la valeur de In_Onglet_State
if (In_Onglet_State = 6) {
Screen.Items('Onglet_Defaut').BackColor = 0, 161, 209;
}
// Vérification de la valeur de DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL
if (DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL === 1) {
Screen.Items('Onglet_Defaut').BackColor = 255, 102, 0;
} else if (DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL === 2 ||
DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL === 3) {
Screen.Items('Onglet_Defaut').BackColor = 255, 0, 0;
}
}
merci à vous pour vos retour!
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 28 juin 2024, 12:43
par djé
Salut,
tu peux déjà regarder l'animation via les couleurs background du bouton sans passer par un script.
Ça me paraît plus simple.
Sinon dans les scripts, sauf erreur de ma part, tu ne peux pas lire la valeur d'une variable directement.
Du doit passer par l'objet TAGS, référencer la variable et utiliser la fonction, méthode Read.
ex :
let varInterneScript = Tags(VarIhm). Read() ;
Attention à la casse des instructions et des noms de variables.
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 28 juin 2024, 13:41
par valerypetit
Merci djé pour ta réponse,
J'ai fais le choix du script par ce que je dois prendre en compte deux variables différentes pour mon animation.
je vais essayer avec les tags.
Merci
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 28 juin 2024, 16:08
par valerypetit
Du coup j'en arrive à ça....
Mais ça ne fonctionne toujours pas
une idée?
Code : Tout sélectionner
export async function Onglet_Defaut_BackColor_Trigger(item) {
// lire les variables
let var_Onglet_Defaut = Tags(AFF_BOUTON_AL). Read() ;
let var_Onglet_State = Tags(In_Onglet_State). Read() ;
// Vérification de la valeur de In_Onglet_State
if (var_Onglet_State = 6) {
Screen.Items('Onglet_Defaut').BackColor = 0, 161, 209;
}
// Vérification de la valeur de DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL
if (var_Onglet_Defaut === 1) {
Screen.Items('Onglet_Defaut').BackColor = 255, 102, 0;
} else if (var_Onglet_Defaut === 2 ||
var_Onglet_Defaut === 3) {
Screen.Items('Onglet_Defaut').BackColor = 255, 0, 0;
}
}
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 28 juin 2024, 18:46
par djé
Déjà
if (var_Onglet_State = 6) {
Affectation et non comparaison !
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 01 juil. 2024, 10:11
par valerypetit
Hello,
Haha Bah oui, faut que je soit plus attentif....
mais pas suffisant.....
J'ai utilisé le TraceViewer, Outil que je découvre
Il me retourne les messages suivant
Code : Tout sélectionner
session: 0001, trace: Engine ExecuteScript Result is empty and error is:
Function: [/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js].[Onglet_Defaut_BackColor_Trigger]
Error: /screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:25: Uncaught ReferenceError: AFF_BOUTON_AL is not defined
let var_Onglet_Defaut = Tags(AFF_BOUTON_AL). Read() ;
^
ReferenceError: AFF_BOUTON_AL is not defined
at Object.Onglet_Defaut_BackColor_Trigger (/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:25:30)
Code : Tout sélectionner
session: 0001, trace: Engine ExecuteScript Result is empty and error is:
Function: [/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js].[Onglet_Defaut_1_BackColor_Trigger]
Error: /screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:47: Uncaught ReferenceError: In_Onglet_State is not defined
let var_Onglet_State = Tags(In_Onglet_State). Read() ;
^
ReferenceError: In_Onglet_State is not defined
at Object.Onglet_Defaut_1_BackColor_Trigger (/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:47:29)
Les deux variables In_Onglet_State et AFF_BOUTON_AL ont pourtant été déclarées en amont.
- AFF_Bouton_ALL est une variable automate qui a été déclarée dans les variables IHM
- In_Onglet_State est une variable IHM qui utilisée pour animer des voyants dans l'IHM et est tout à fait fonctionnel....
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 01 juil. 2024, 14:08
par valerypetit
Voici le code qui va bien.
Tout est une question de syntaxe
Code : Tout sélectionner
export function Onglet_Defaut_BackColor_Trigger(item) {
// lire les variables
let var_Onglet_Defaut = Tags("AFF_BOUTON_AL"). Read() ;
let var_Onglet_State = Tags("In_Onglet_State"). Read() ;
// Vérification de la valeur de In_Onglet_State
if (var_Onglet_State === 6) {
// Screen.Items("Onglet_Defaut").BackColor = 0x00A1D1;
Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(0, 161, 209);
}
// Vérification de la valeur de DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL
if (var_Onglet_Defaut === 1) {
Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(255, 102, 0);
} else {
if (var_Onglet_Defaut === (2 || 3)) {
Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(255, 0, 0);
}}
// Couleur par défaut
if ((var_Onglet_State < 6) && (var_Onglet_Defaut === 0)) {
Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(181, 190, 197);
}
// var value = "Onglet_Defaut";
// return value;
}
Re: Unified - Script JS - Changement de couleur de bouton
Posté : 01 juil. 2024, 14:38
par djé
C'est clair que les scripts en JS sont hypers sensibles à la casse, les fragiles.
pour être sûr de la syntaxe tu peux utiliser le raccourci "CTRL + J" quand tu es dans Tags. Il te propose ensuite la liste des variables.