Changer état case "Afficher" d'une commande info plugin Virtuel par un scénario / code

Dans un Virtuel, j’ai deux commandes infos dont les widgets sont dans la même cellule du tableau (présentation que j’ai choisi). Mais jamais les deux ne doivent être présents à la fois. Donc si je le fais manuellement, que je coche l’un « Afficher » l’autre ne devra pas l’être.

Comme résultat, c’est parfait, c’est exactement ce que je veux!

Mais passer par un scénario pour faire utiliser une condition c’est l’enfer. Je me suis fait aider par l’AI pour générer du code PHP. Mais je me suis rendu compte aujourd’hui que ce dernier joue systématiquement sur le concept de « visibitité » donc en jouant sur le css. Ce qui n’a pas du tout le même résultat :frowning:

J’ai essayé de le recentrer sur la case à cocher de la commande mais je n’obtiens rien qui fonctionne. À tout hasard je vous mets le dernier généré. Si quelqu’on peut m’aider …

// Récupérer les commandes des widgets
$widget_a = cmd::byId(3619);
$widget_b = cmd::byId(3620);

// Définir l’état d’affichage souhaité
$display_widget_a = true; // Ou false pour masquer le widget A
$display_widget_b = false; // Ou true pour afficher le widget B

// Mettre à jour la configuration des widgets
$widget_a->setConfiguration(‹ widget_a_visible ›, $display_widget_a);
$widget_b->setConfiguration(‹ widget_b_visible ›, $display_widget_b);

// Sauvegarder les changements
$widget_a->save();
$widget_b->save();

Ai je besoin de préciser que je copie aussi ce code dans le SINON de mon scénario mais en intervertissant les ID ?


Informations Jeedom

Core : 4.4.5 (V4-stable)
DNS Jeedom : non

Informations complémentaires
OS: raspbian 10 on RPI 3 B+ ; PHP: 7.3.31-1~deb10u5 ; Python: 3.7.3

Voila ce que j’utilise pour rendre invisible deux commandes dans un virtuel

// Rend invisible les commandes du virtuel Filtre
cmd::byId('667')->setIsVisible(0)->save();
cmd::byId('669')->setIsVisible(0)->save();

Et pour les rendre visible

// Rend visible les commandes du virtuel Filtre
cmd::byId('667')->setIsVisible(1)->save();
cmd::byId('669')->setIsVisible(1)->save();
2 « J'aime »

Ah bin merde alors!!! (désolé c’est spontané et vient du fond du coeur!)

J’ai fait plusieurs dizaine de tentatives sans succès avant cela … et voilà tes 2 lignes simples et efficaces. Pfiouuuuuuu

Merci :slight_smile:

Voilà donc adapté chez moi:
cmd::byId(3620’)->setIsVisible(0)->save();
cmd::byId(‹ 3619 ›)->setIsVisible(1)->save();

Et l’inverse dans le sinon du scénario

Bonjour

Je ne suis pas réveillé ou les deux instructions sont les mêmes ?

Sinon où faut-il les mentionner pour les exécuter ? Dans une action commande de virtuel ?
Dans un bloc code PHP d’un scénario ?

Est-ce possible d’avoir une copie d’écran ?

D’avance merci

Les deux lignes sont identiques car je rends deux commandes visibles ou invisibles en même temps.

Ces lignes se mettent dans un bloc code d’un scenario.

Ok merci
Il n’empêche que les 2 lignes initiales étaient identiques avec setIsVisible(0), alors que maintenant il y a les 2 états setIsVisible(0) et setIsVisible(1) d’où mon mal à interprêter à la première lecture.

Ce sont les ID des widgets qui font la différence entre les lignes de code.

@henribi synchronise dans le même état des widgets. D’où ces lignes avec (1) (1) Sinon (0) (0)

Moi c’est le contraire, C’est l’un OU l’autre. Jamais les deux. D’où (1) (0) Sinon (0) (1)

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