Bouton caché/affiché en fonction d'une info

J’ai fait la modification mais cela ne change rien à l’affichage, le bouton apparaît toujours quelque soit le statut du contact erreur

Cela fonctionne très bien, l’action est bel et bien lancée.

Hello,
perso j’utilise pas mal de widget qui s’affiche si état ON sur différents design et j’utilise un virtuel qui récupère l’état :


et je lui applique un widget perso dans la conf:

et le widget info juste sur le ON


et voila si je l’applique sur le off pour démo

image

image

Oui, c’est ce que je proposais de faire mais j’ai mal expliqué apparemment :slight_smile:

@Droopy Et est-ce que la commande etat à la bonne valeur?

Il faut peut-être essayer avec un autre widget type BinaryDefault. Le widget par défaut ne cache rien. Et si ça marche pas, changer le nom off par on pour si c’est pas inversé.

Oui je pense , avec quelque screen ça aide a mieux comprendre :slightly_smiling_face: j’en ai tellement des widgets qui s’affiche que je sais plus ou ils se cache sur les design

Yes, cela fonctionne avec BinaryDefault :slight_smile: :slight_smile: :slight_smile:

image
image

Voilà le résultat avec le widget personnalisé
image
image

Merciiiiiiiiiiiiiiiii

Bonjour Bison,
Merci pour cette commande, qui me resservira sans aucun doute (et que je ne connaissais pas…)
Mais je viens de l’essayer et…
Elle fonctionne effectivement sur le Dashboard, mais pas sur un Design ! (je viens d’essayer sur une commande de type Information que j’aurais aimer cacher dans certain cas)

Je me permet de reprendre la question de base, car elle me parait très intéressante.

  1. Effectivement, il y a une astuce en passant par un Widget (que j’utilise déjas) mais…
  2. Dans l’immense majorité des programmes / sur-couche permettant de programmer facilement des écran (comme ici les Design) ils y a souvent une « case » : « Variable d’affichage », qui permet d’afficher ou non, une ligne, image, information, commande, etc.

Ainsi:
a. Dans une prochaine version de Jeedom : Serait-il facile ou difficile d’ajouter, dans les paramètres d’une action ou d’une information cette fameuse case « Afficher » ?? Qui permet de gérer très facilement un affichage en fonction du résultat d’un test booléen (Info X = 1 / Info X > Y / etc…)
(ici en bref :


)

b. Existe-t-il déja une manière de faire (moins accessible) via un bloc code (dans un scénario), ou… autres chose ?

Salut,

Je tenterai de trouver un moyen pour que ce soit possible sur un design, je ne savais pas que ça n’était pas pris en compte.

Sinon je suis bien d’accord cette gestion dynamique manque et je n’ai pas la réponse à tes questions mais je vais essayer de creuser ce sujet.

Je suis intéressé aussi

bonjour
tu as en php le setisvisible qui marche « scénario code défini plus haut » mais pour le fun une méthode (b) une methode js
avec le plug htmldisplay qui va définir tous les ‹ #id ›
La lampes affiche ou cache le bouton 2 de la Vmc

tu as via dashboard et design bouton présent ou non
Sans-titre5

<span id="pipo">observe lampes</span>
<div id="report#id#">
</div>
<script>
let id_surveil#id# = 76;
let id_hide#id# = 85;  
  
  // la fonction à effectuer
  
 function maFonction#id#(la_valeur)
 {
   
              if (la_valeur == 1 ) {
               $('.cmd[data-cmd_id="'+id_hide#id#+'"]').css("visibility", "hidden");                   
       } else {
               $('.cmd[data-cmd_id="'+id_hide#id#+'"]').css("visibility", "visible");                   

       }   
 }
  
//vérification si l'id surveillance est visible sur l'écran
      if ($("div[data-cmd_id="+id_surveil#id#+"]").length == 1){
// oui donc on surveille son update
var elem#id# = '.cmd[data-cmd_id="'+id_surveil#id#+'"]';
var targetNode#id# = document.querySelector(elem#id#);

// Options de l'observateur (quelles sont les mutations à observer)
var config#id# = { attributes: true, childList: true };

var execute#id# = function() {
jeedom.cmd.execute({ id: id_surveil#id#, success:  function(valeur_courante) {
  $('#report#id#').text(valeur_courante); 

   maFonction#id#(valeur_courante); 

       }
				})
};  
// Créé une instance de l'observateur lié à la fonction de callback
var observer#id# = new MutationObserver(execute#id#);

// Commence à observer le noeud cible pour les mutations précédemment configurées
observer#id#.observe(targetNode#id#, config#id#);
  

    } else { // non donc on utilise l'api
     
  jeedom.cmd.update[id_surveil#id#] = function(_options){
			jeedom.cmd.execute({ id: id_surveil#id#, success:  function(valeur_courante) {
  $('#report#id#').text(valeur_courante); 

   maFonction#id#(valeur_courante);
                   
				}})   
   }; 
      jeedom.cmd.update[id_surveil#id#](); 

      
   }; 

</script>

@Henri,

Je viens d’essayer, pourtant ça fonctionne chez moi sur le dashboard et sur mon design le setIsVisible.
La commande est bien caché immédiatement.

Je n’ai fait que poser un nouvel équipement sur mon design, il y a peut-être quelque chose vient contrarier l’affichage … ?

Bonjour à tous
@Bison : merci pour la recherche et la réponse.

  1. Je m’excuse de ne pas être au taqué, mais peu dispo en ce moment.
  2. Cela fait des années que je me dis que je vais faire une demande d’amélioration pour 2 idées toutes bêtes dans les Design:
  • avoir une case « condition d’affichage »
  • Avoir un nouvel objet tres bête mais fort utile « Ajouter un ligne » :sweat_smile:
    Bref, dés la semaine prochaine je ferai une demande d’amélioration. Peut être que dans quelques versions ; la fonction arrivera…!!
  1. apres avoir lu ton message j’ai ré-essayé, et pas mieux (ça marche coté Dash. mais pas design)…
    Le but était de cacher une information texte (qui donne la dernière détection de présence par une caméra) quand les caméras sont éteintes…
    Voici le virtuel en question:

    Voici le virtuel sur le design, le board, et le scénario avec le code que tu m’a indiqué:

La même apres avoir lancer le code « cacher » :

Puis en relançant le code avec « monter » :

Dit moi si j’ai loupé un truc que tu vois gros comme une maison.
Sinon, pas grave, on en reparlera un de ces 4…

@ajja17orange
Merci pour cette proposition, mais je suis pas fortiche, je ne connais pas le plug htmldisplay, et mettre en place ta solution me parait aujourd’hui délicat.
De plus, je pense qu’avoir un « disparaitre » uniquement sur le design en question, et uniquement celui-ci est un point important. Car si on a besoin de l’info, sur une autres vue / design / le dash, par exemple, on est eu, sauf à créer un autre virtuel « jumeau » mais ça va resté super lourd…
bref… garde ta solution dans un coin de ma tête, et te remercie de l’avoir envoyé !

Bonne journée à tous.

Salut @Henri,

@Droopy désolé de polluer ton post, si ça gêne Henri pourra re-créer un sujet.

Donc j’ai refait pour voir une commande Autre :

J’ai ajouté tout un équipement virtuel (contenant cette commande) sur mon dashboard et sur mon design :
Dashboard
image

Design
image

Je fais tourner le code suivant dans un scénario bloc : cmd::byId(31909)->setIsVisible(0)->save();

Et les 2 disparaissent bien :
Dashboard
image

Design
image

Il doit y avoir une subtilité du coup pour que ça ne fonctionne pas à chaque fois.

Tu l’as ajouté comment toi au design cette info autre ?

Pas d’inquiétude, cela m’apprend aussi pas mal de choses

De plus, je pense qu’avoir un « disparaitre » uniquement sur le design en question, et uniquement celui-ci est un point important

Tu peux définir un unique design avec du js
Avec du PHP ça va être plus complexe !
Invisible te ne le permet pas !
C’est sur tous (design, dashboard,…)

Jeedom c’est une caisse a outils, certains vont prendre une pince multiprise pour un boulon d’autre une clef numéro, clef à molette,cliquet,a griffe :
Widget,scénario,…

Encore faut il connaître les outils leur utilisation, spécificite et contraintes.

Et comme tu le dit utilise a propo l’outils que tu maîtrises
(pour mon exemple se n’est que du visu, sans histo « état lampe suffit », log,…) Qui ne demande aucune ressource et qui est générique (j’ai précisé affiche ou cache, mais ça peut être un fond d’écran ou toutes autres chose « ex lance un scénario »)

Le code est un dérivé de cette réponse

Au lieu du plug HTML display un HTML dans design mais si je te propose le plug c’est si tu fais une erreur tu te retrouves a devoir supprimé le design dans la bdd.

Sans entrée dans la polémique jeedom V3 te proposer plus de possibilités et elles ont été enlevés pour simplification et suivie donc je doute qu’ils repartent dans la complexité.

1 « J'aime »

Bonjour A tous.
Bison
C’était bien cela !!!
Ça fonctionne quand on affiche un « Équipement », mais pas une « Commande »
Ci dessous un petit test :
A gauche l’équipement, à droite la commande
Capture d’écran 2022-08-18 à 11.59.15
Visible
Caché

Je me souviens pas que cela existait en V3 ? Si ??
Mais il est vrai que je l’ai pas longtemps utilisé :smile:.
Et si une case est prévu « Condition d’affichage » : Test booléen (par défaut avec un « 1 » dedans)
C’est ultra simple pour l’utilisateur.
Par contre, c’est peut-être très compliqué de gérer le rafraichissement en temps réel / de tester très régulièrement la formule booléenne …???

Merci Droopy. il va vite se refermé tout seul.

Mais :
je peux toujours faire la demande :slight_smile:
Je vais regardé attentivement les propositions.
Peut-être que Bison nous trouvera une super astuce entre temps…
Et j’ouvrirai un sujet, un de ces 4 pour faire un « Point parcours » comme on dit… :slight_smile:

Bonne journée à tous…

Good ! OK merci c’était donc ça.

Je vais tenter de développer un début de quelque chose pour voir si on peut avancer de façon simple mais je ne promet rien car je cherche et je suis un peu jeune dev sur Jeedom :wink:

élue meilleur blague de ma soirée.
Et pourtant, en ce moment…
…elles sont chargées !!

Je t’assure, tu dois confondre avec quelqu’un d’autre, je n’ai pas encore (j’essaie) publié de plugin :expressionless:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.