Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Widget dédoublé en 3.2.3

Réservé à l'utilisation et la création de widgets dans JEEDOM
drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Widget dédoublé en 3.2.3

Message par drs » 24 avr. 2018, 18:44

Bonjour

Suite à la mise à jour en 3.2.3, j'ai un souci sur plein de widgets (vu qu'ils ont tous la même base, cela est normal). Il s'agit d'un widget action, qui permet de faire on/off en cliquant dessus. Le problème ne se produit que sur les virtuels avec deux commandes.
Mais lorsque je clique, l'action se fait bien, mais le widget est dédoublé, et necessite le rafraichissement de la page. Je pense qu'il y a juste une petite correction à faire, mais j'ignore laquelle...

Voici le code:

Code : Tout sélectionner

<div style="width:80px;min-height:80px;" class="cmd tooltips cmd-widget cursor" data-type="info" data-subtype="numeric" data-cmd_id="#id#">
    <center>
<!--     	<span class='cmdName' style="font-weight: bold;font-size : 10px;#hideCmdName#;" title="#name#">#name_display#</span>-->
        <span style="font-size: 1.5em;font-weight: normal;margin-top: 3px;" class="action" id="iconCmd#id#"></span>
    </center>
    <script>
        if ('#state#' == '1' || '#state#' == 1) {
            $('#iconCmd#id#').append('<img style="height:80px;width:80px" src="plugins/widget/core/template/dashboard/cmd.action.other.CAM-V3-OK/cam-sal-img_on.png" />');
            if (jeedom.cmd.normalizeName('#name#') == 'on') {
                $('.cmd[data-cmd_id=#id#]').hide();
            }
        } else {
            $('#iconCmd#id#').append('<img style="height:80px;width:80px" src="plugins/widget/core/template/dashboard/cmd.action.other.CAM-V3-OK/cam-sal-img_off.png" />');
            if (jeedom.cmd.normalizeName('#name#') == 'off') {
                $('.cmd[data-cmd_id=#id#]').hide();
            }
        }
        $('.cmd[data-cmd_id=#id#] .action').off();
        $('.cmd[data-cmd_id=#id#] .action').on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
    </script>
</div>
Est-il possible de modifier ce comportement sans modifier tout le code?

Pour info, voici le virtuel associé (le widget est appliqué sur les deux commandes):

Image

Merci d'avance de votre aide...

Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3925
Inscription : 23 mai 2015, 08:14

Re: Widget dédoublé en 3.2.3

Message par Antoinekl1 » 24 avr. 2018, 19:01

J'avais déjà eu ce phénomène avec la version actuelle et c'était revenu tout seul avec une seule icone
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Re: Widget dédoublé en 3.2.3

Message par drs » 24 avr. 2018, 19:09

Là, vraisemblablement, ça revient pas tout seul...

Avatar de l’utilisateur
Sabato
Timide
Messages : 291
Inscription : 23 janv. 2017, 11:25

Re: Widget dédoublé en 3.2.3

Message par Sabato » 24 avr. 2018, 19:29

Pareil pour moi :
widget double.png
widget double.png (11.52 Kio) Consulté 2619 fois
voici le code de ce widget mais ca le fait aussi sur plein d'autre qui ont un code différent :

Code : Tout sélectionner

<div style="width:90px;min-height:80px;" class="cmd tooltips cmd-widget cursor" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#">
    <center>
        <span style="font-size: 3em;font-weight: bold;margin-top: 5px;" class="action iconCmd#uid#"></span>
    </center>
    <script>
        $('.iconCmd#uid#').empty();
        if ('#state#' == '1' || '#state#' == '99' || '#state#' == 'on') {
            $('.iconCmd#uid#').append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/on.png" />');
            if (jeedom.cmd.normalizeName('#name#') == 'on') {
                $('.cmd[data-cmd_uid=#uid#]').hide();
            }
        } else {
            $('.iconCmd#uid#').append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/off.png" />');
            if (jeedom.cmd.normalizeName('#name#') == 'off') {
                $('.cmd[data-cmd_uid=#uid#]').hide();
            }
        }
        $('.cmd[data-cmd_uid=#uid#] .action').off();
        $('.cmd[data-cmd_uid=#uid#] .action').on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
    </script>
</div>
Jeedom SMART zwave avec :
- 3xFibaro FGR222, 1xFGK-101, 1xFGMS-001-ZW5, 1xFGS-213
- Broadlink RM PRO
- Nest
- 4xDash button
- Gateway Xiaomi 3 sondes de T°,1 capteur d'ouverture
- 3xBandeau led yeelight xiaomi
- 2xNut Find3
- 1xGH et 3xmini

Avatar de l’utilisateur
loic
Administrateur
Messages : 14865
Inscription : 01 févr. 2014, 16:21

Re: Widget dédoublé en 3.2.3

Message par loic » 24 avr. 2018, 19:35

Bonjour,
Le sujet est traité dans le sujet sur la 3.2.2 il y a aussi la cause j'ai aussi donné une piste de résolution (c'est dans les pages 2 ou 3 de mémoire.
Aide nous à t'aider : mets des logs, détaille ton soucis... Vous n'aurez aucune réponse de ma part si votre demande n'est pas détaillée (log, capture d'écran lisible...) ou si vous ne postez pas dans la bonne section

drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Re: Widget dédoublé en 3.2.3

Message par drs » 24 avr. 2018, 19:44

Merci loic

Tu as dit:  « C'est donc que le widget est pas passé sur le nouveau systeme de mise à jour des valeurs existant depuis la 3.0.... « 

J’ai posé la question sur un nouveau sujet, car je comprends ce que tu dis, mais je ne sais pas comment faire :)

Et je ne voulais pas polluer l’autre sujet. Et vu que tu es très occupé avec cette maj...

Avatar de l’utilisateur
loic
Administrateur
Messages : 14865
Inscription : 01 févr. 2014, 16:21

Re: Widget dédoublé en 3.2.3

Message par loic » 24 avr. 2018, 20:32

J'ai mis un exemple de plugin qui marche ya pas de correction magique faut reprendre tout le processus de mise à jour du widget.
Aide nous à t'aider : mets des logs, détaille ton soucis... Vous n'aurez aucune réponse de ma part si votre demande n'est pas détaillée (log, capture d'écran lisible...) ou si vous ne postez pas dans la bonne section

drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Re: Widget dédoublé en 3.2.3

Message par drs » 24 avr. 2018, 21:31

Il me semble que le plugin que tu as mis est un widget info, et il s’agit là d’un action.

Mais malheureusement, ce qui semble évident pour toi ne l’est pas pour moi, et je ne sais pas comment faire pour mettre en oeuvre ce dont tu parles :)

Pour l’instant, rien de méchant, je reste en 3.1.7 et je continuerais à tester sur ma vm.

Networks514
Actif
Messages : 578
Inscription : 02 sept. 2016, 22:22

Re: Widget dédoublé en 3.2.3

Message par Networks514 » 24 avr. 2018, 21:35

Sur le lien mis par Loïc, tu remontes d'un niveau, et tu as le code pour d'autres widgets, dont action. Je regarde quand la petite est couchée pour adapter, mais je suis une quiche ... À suivre
Networks514
Jeedom / Synology DS411j / Synology DS916+8G / Rpi3 / Zibase
Zwave / Enocean / Rflink / Xiaomi / Bluetooth

Networks514
Actif
Messages : 578
Inscription : 02 sept. 2016, 22:22

Re: Widget dédoublé en 3.2.3

Message par Networks514 » 24 avr. 2018, 22:12

Sabato a écrit :
24 avr. 2018, 19:29
Pareil pour moi :
widget double.png

voici le code de ce widget mais ca le fait aussi sur plein d'autre qui ont un code différent :

Code : Tout sélectionner

<div style="width:90px;min-height:80px;" class="cmd tooltips cmd-widget cursor" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#">
    <center>
        <span style="font-size: 3em;font-weight: bold;margin-top: 5px;" class="action iconCmd#uid#"></span>
    </center>
    <script>
        $('.iconCmd#uid#').empty();
        if ('#state#' == '1' || '#state#' == '99' || '#state#' == 'on') {
            $('.iconCmd#uid#').append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/on.png" />');
            if (jeedom.cmd.normalizeName('#name#') == 'on') {
                $('.cmd[data-cmd_uid=#uid#]').hide();
            }
        } else {
            $('.iconCmd#uid#').append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/off.png" />');
            if (jeedom.cmd.normalizeName('#name#') == 'off') {
                $('.cmd[data-cmd_uid=#uid#]').hide();
            }
        }
        $('.cmd[data-cmd_uid=#uid#] .action').off();
        $('.cmd[data-cmd_uid=#uid#] .action').on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
    </script>
</div>
Tu peux remplacer le code par celui-ci

Code : Tout sélectionner

<div style="width:90px;min-height:80px;" class="cmd tooltips cmd-widget cursor" data-type="action" data-subtype="other" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
    <center>
        <div style="font-weight: bold;font-size : 12px;#hideCmdName#">#valueName#</div>
        <span style="font-size: 2.5em;font-weight: bold;margin-top: 5px;" class="iconCmd"></span>
    </center>
    <script>
        jeedom.cmd.update['#id#'] = function(_options){
            if (_options.display_value == '1' || _options.display_value == 1 || _options.display_value == '99' || _options.display_value == 99 || _options.display_value == 'on') {
                if (jeedom.cmd.normalizeName('#name#') == 'on') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                    $('.cmd[data-cmd_id=#id#]').show();
                    $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/on.png" />');
                }
            } else {
                if (jeedom.cmd.normalizeName('#name#') == 'off') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                    $('.cmd[data-cmd_id=#id#]').show();
                    $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/off.png" />');
                }
            }
        }
        jeedom.cmd.update['#id#']({display_value:'#state#'});
        $('.cmd[data-cmd_uid=#uid#] .iconCmd').off().on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
    </script>
</div>
Dupliques avant ton widget pour garder trace de l'ancien code au cas où
A+
Networks514
Jeedom / Synology DS411j / Synology DS916+8G / Rpi3 / Zibase
Zwave / Enocean / Rflink / Xiaomi / Bluetooth

Networks514
Actif
Messages : 578
Inscription : 02 sept. 2016, 22:22

Re: Widget dédoublé en 3.2.3

Message par Networks514 » 24 avr. 2018, 22:14

@Drs,

Tu peux reprendre le code que j'ai mis juste avant en l'adaptant avec le chemin de tes images, ça devrait être bon.
A+
Networks514
Jeedom / Synology DS411j / Synology DS916+8G / Rpi3 / Zibase
Zwave / Enocean / Rflink / Xiaomi / Bluetooth

drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Re: Widget dédoublé en 3.2.3

Message par drs » 25 avr. 2018, 08:39

Networks514 a écrit :
24 avr. 2018, 22:14
@Drs,
Tu peux reprendre le code que j'ai mis juste avant en l'adaptant avec le chemin de tes images, ça devrait être bon.
A+
Un grand merci à toi, ça à l'air de fonctionner impec. Y'a plus qu'à tous les refaire :)

Avatar de l’utilisateur
Sabato
Timide
Messages : 291
Inscription : 23 janv. 2017, 11:25

Re: Widget dédoublé en 3.2.3

Message par Sabato » 25 avr. 2018, 09:37

Merci @Loic et @Networks514 ça fonctionne ! ;)
Jeedom SMART zwave avec :
- 3xFibaro FGR222, 1xFGK-101, 1xFGMS-001-ZW5, 1xFGS-213
- Broadlink RM PRO
- Nest
- 4xDash button
- Gateway Xiaomi 3 sondes de T°,1 capteur d'ouverture
- 3xBandeau led yeelight xiaomi
- 2xNut Find3
- 1xGH et 3xmini

drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Re: Widget dédoublé en 3.2.3

Message par drs » 25 avr. 2018, 14:04

Après migration de tous mes widgets, je suis passé en 3.2.3 et tout fonctionne impec :)

Un grand merci

Avatar de l’utilisateur
Theduck38
Helper
Messages : 2703
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: Widget dédoublé en 3.2.3

Message par Theduck38 » 25 avr. 2018, 17:27

Attention au 'normalizeName' qui donne des résultats étranges lorsque le nom de la commande contient 'on'.
Par exemple : "Salon Off" => ne fonctionne pas à cause du 'on' de salon...
-- TD38 --
Helper Officiel Jeedom
Zimeteo sur Jeedom : http://www.meteo.lecoin.info
Jeedom Stable sur serveur custom
Le risque électrique - Afficheur leds RGB - Tablette Murale - Thermostat connecté

Avatar de l’utilisateur
Theduck38
Helper
Messages : 2703
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: Widget dédoublé en 3.2.3

Message par Theduck38 » 25 avr. 2018, 19:04

J'ai une question ; j'utilise de la customisation dans mes widgets.
Par exemple, une taille et une couleur custom, que je passe avec un paramètre dans les options d'affichage.

Mais avec la nouvelle façon de récupérer les infos, cela ne semble pas toujours marcher (ça fonctionne pour le texte, mais pas pour les valeurs semble-t-il).

Voilà mon widget 'en l'état' :

Code : Tout sélectionner

<div style="width:90px;min-height:100px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" title="#collectDate#">
    <center>
        <span class='cmdName' style="font-weight: bold;font-size : 14px;">#name#</span>
        <span style="font-size: 3em;font-weight: bold;margin-top: 5px;" class="iconCmd"></span>
    </center>
    <script>
      	var couleur= ('#color#'!='#'+'color#') ? "#color#" : "vert";
      	var image="FibaroOeil" + couleur;
      	var taille = (is_numeric('#size#')) ? parseFloat('#size#') : 60;  
 
      	// rouge, vert, bleu, jaune
        jeedom.cmd.update['#id#'] =function(_options){
			if (_options.display_value == '1') {
				$('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.info.binary.FibaroOeil/FibaroOeilnoirNew.png" style="height:' + taille + 'px;width:' + taille + 'px; "/>');
			}else {
				$('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.info.binary.FibaroOeil/' + image + 'New.png" style="height:' + taille + 'px;width:' + taille + 'px;"/>');
			}
		}
		jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
    </script>
</div>
La partie ou je force la taille ne fonctionne pas. De plus, j'ai bien des couleurs par défaut, mais il prend du violet à chaque fois. Vu que je construis le nom, je ne comprends pas comment c'est possible d'afficher l'image "FibaroOeilvioletNew" à chaque fois alors que visiblement la façon de récupérer l'info ne fonctionne pas... je précise qu'il n'existe pas de "FibaroOeilNew" qui serait violet ;)
Vu que je ne suis pas très fort dans ce domaine, si quelqu'un pouvait m'aiguiller SVP.
-- TD38 --
Helper Officiel Jeedom
Zimeteo sur Jeedom : http://www.meteo.lecoin.info
Jeedom Stable sur serveur custom
Le risque électrique - Afficheur leds RGB - Tablette Murale - Thermostat connecté

Avatar de l’utilisateur
loic
Administrateur
Messages : 14865
Inscription : 01 févr. 2014, 16:21

Re: Widget dédoublé en 3.2.3

Message par loic » 25 avr. 2018, 19:08

Bonjour,
Le soucis vient de la comprehension du contexte javascript quand tu arrives la dedans jeedom.cmd.update['#id#'] =function(_options){} tes variables :
var couleur= ('#color#'!='#'+'color#') ? "#color#" : "vert";
var image="FibaroOeil" + couleur;
var taille = (is_numeric('#size#')) ? parseFloat('#size#') : 60;

Existe mais prenne la valeur du dernier widget qui les utilise car elle sont global il faut les mettre dans la fonction.
Aide nous à t'aider : mets des logs, détaille ton soucis... Vous n'aurez aucune réponse de ma part si votre demande n'est pas détaillée (log, capture d'écran lisible...) ou si vous ne postez pas dans la bonne section

Avatar de l’utilisateur
Theduck38
Helper
Messages : 2703
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: Widget dédoublé en 3.2.3

Message par Theduck38 » 25 avr. 2018, 20:17

Merciiiiiiii !

Le code qui marche (avec les images qui vont bien au bon endroit, bien sûr) :

Code : Tout sélectionner

<div style="width:90px;min-height:100px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" title="#collectDate#">
    <center>
        <span class='cmdName' style="font-weight: bold;font-size : 14px;">#name#</span>
        <span style="font-size: 3em;font-weight: bold;margin-top: 5px;" class="iconCmd"></span>
    </center>
    <script>

      	// rouge, vert, bleu, jaune
        jeedom.cmd.update['#id#'] =function(_options){
        	var couleur= ('#color#'!='#'+'color#') ? "#color#" : "vert";
      		var image="FibaroOeil" + couleur;
      		var taille = (is_numeric('#size#')) ? parseFloat('#size#') : 60;  
 
			if (_options.display_value == '1') {
				$('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.info.binary.FibaroOeil/FibaroOeilnoirNew.png" style="height:' + taille + 'px;width:' + taille + 'px; "/>');
			}else {
				$('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.info.binary.FibaroOeil/' + image + 'New.png" style="height:' + taille + 'px;width:' + taille + 'px;"/>');
			}
		}
		jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
    </script>

</div>
-- TD38 --
Helper Officiel Jeedom
Zimeteo sur Jeedom : http://www.meteo.lecoin.info
Jeedom Stable sur serveur custom
Le risque électrique - Afficheur leds RGB - Tablette Murale - Thermostat connecté

Avatar de l’utilisateur
Theking31
Actif
Messages : 1182
Inscription : 21 sept. 2017, 11:13
Localisation : Toulouse - Le Vernet

Re: Widget dédoublé en 3.2.3

Message par Theking31 » 27 avr. 2018, 17:54

Networks514 a écrit :
24 avr. 2018, 22:12


Tu peux remplacer le code par celui-ci

Code : Tout sélectionner

<div style="width:90px;min-height:80px;" class="cmd tooltips cmd-widget cursor" data-type="action" data-subtype="other" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
    <center>
        <div style="font-weight: bold;font-size : 12px;#hideCmdName#">#valueName#</div>
        <span style="font-size: 2.5em;font-weight: bold;margin-top: 5px;" class="iconCmd"></span>
    </center>
    <script>
        jeedom.cmd.update['#id#'] = function(_options){
            if (_options.display_value == '1' || _options.display_value == 1 || _options.display_value == '99' || _options.display_value == 99 || _options.display_value == 'on') {
                if (jeedom.cmd.normalizeName('#name#') == 'on') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                    $('.cmd[data-cmd_id=#id#]').show();
                    $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/on.png" />');
                }
            } else {
                if (jeedom.cmd.normalizeName('#name#') == 'off') {
                    $('.cmd[data-cmd_id=#id#]').hide();
                }else{
                    $('.cmd[data-cmd_id=#id#]').show();
                    $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<img src="plugins/widget/core/template/dashboard/cmd.action.other.lightIMG/off.png" />');
                }
            }
        }
        jeedom.cmd.update['#id#']({display_value:'#state#'});
        $('.cmd[data-cmd_uid=#uid#] .iconCmd').off().on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
    </script>
</div>
Dupliques avant ton widget pour garder trace de l'ancien code au cas où
A+
Merci marche nickel :D

En revanche j'ai "Etat" indiqué en haut alors que non configuré dans l'affichage...
Quelle ligne il faut supprimer dans le code widget ?
1.png
1.png (22.69 Kio) Consulté 2249 fois
2.png
2.png (39.36 Kio) Consulté 2249 fois
Jeedom 4.0.23 sur Intel NUC 6CAYH | Linux 4.9.0-11-amd64 | Debian 9.11
Rfxcom | Z-Wave Plus Z-Stick GEN5 | Conbee 2 | => sur hub alimenté
Blea| Brodlink | Xiaomi |ESPeasy | Wifilightv2

drs
Actif
Messages : 1532
Inscription : 04 nov. 2016, 10:44

Re: Widget dédoublé en 3.2.3

Message par drs » 27 avr. 2018, 17:58

Salut

Je crois qu'il faut supprimer cette ligne là:

Code : Tout sélectionner

<div style="font-weight: bold;font-size : 12px;#hideCmdName#">#valueName#</div>

Répondre

Revenir vers « [Plugin officiel] Widgets »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités