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 s -> j:h:m:s

Réservé à l'utilisation et la création de widgets dans JEEDOM
Pinson99
Timide
Messages : 53
Inscription : 13 sept. 2018, 10:23
Localisation : Bruxelles

Widget s -> j:h:m:s

Message par Pinson99 » 10 juin 2019, 15:56

Bonjour à tous,

J'avais fait un widget fort utile qui permettait d'afficher une temps, rentré en secondes, en j:h:m:s.
Depuis le passage à Jeedom V3.2, il ne fonctionne plus.

J'ai essayé de comprendre ce que d'autres avaient fait pour adapter leur widgets et ai essayé d'y parvenir mais après quelques heures d'essais et surtout d'erreurs, je n'y arrive pas.

Une idée pour me dépanner sur ce "bête" widget ?

Code : Tout sélectionner

<div style="display: block" class="cmd #history# container-fluid tooltips cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" title="Valeur du #valueDate#, collectée le #collectDate#">
    <center>
        <span class='cmdName' style="font-weight: normal; font-size : 12px; #hideCmdName#; ">#name_display#</span>
        <span style="font-size: 12pix;font-weight: bold;" id="out#id#">--</span>
    </center>

  <script>
    jeedom.cmd.update['#id#'] =function(_options){
    	if (parseInt('#state#') >= 0) {
    		var jour;
        	var heure;
    		var minute;
        	var seconde;
    		var out;

    		jour = Math.floor(parseInt('#state#') / (24 * 3600));
	    	heure = Math.floor((parseInt('#state#') - jour * 24 * 3600) / 3600);
    		minute = Math.floor((parseInt('#state#') - jour * 24 * 3600 - heure * 3600) / 60);	
		seconde = Math.floor(parseInt('#state#') - jour * 24 * 3600 - heure * 3600 - minute * 60);

		if (seconde == 0) {out = "--";}
      		if (seconde > 0) {out = seconde + "s";}
        	if (minute > 0) {out = minute + "m " + seconde + "s";}
      		if (heure > 0) {out = heure + "h " + minute + "m " + seconde + "s";}
        	if (jour > 0) {out = jour + "j " + heure + "h " + minute + "m " + seconde + "s";}
          	$('#out#id#').text(out);
      	}
    }
	jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</div>

PS: y-aurait-il quelque part un vrai tuto complet qui explique comment coder les widgets pour la V3.2?
Pinson99

Avatar de l’utilisateur
cadavor
Actif
Messages : 1282
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Widget s -> j:h:m:s

Message par cadavor » 11 juin 2019, 13:34

Code : Tout sélectionner

<div style="display: block" class="cmd #history# container-fluid tooltips cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" title="Valeur du #valueDate#, collectée le #collectDate#">
    <center>
        <span class='cmdName' style="font-weight: normal; font-size : 12px; #hideCmdName#;">#name_display#</span>
        <span style="font-size: 12px;font-weight: bold;" id="out#id#">--</span>
    </center>

  <script>
    jeedom.cmd.update['#id#'] =function(_options){
    	var state = parseInt(_options.display_value);
    	if (state >= 0) {
    		var jour;
        	var heure;
    		var minute;
        	var seconde;
    		var out;

    		jour = Math.floor(state / (24 * 3600));
	    	heure = Math.floor((state - jour * 24 * 3600) / 3600);
    		minute = Math.floor((state - jour * 24 * 3600 - heure * 3600) / 60);	
		seconde = Math.floor(state - jour * 24 * 3600 - heure * 3600 - minute * 60);

		if (seconde == 0) {out = "--";}
      		if (seconde > 0) {out = seconde + "s";}
        	if (minute > 0) {out = minute + "m " + seconde + "s";}
      		if (heure > 0) {out = heure + "h " + minute + "m " + seconde + "s";}
        	if (jour > 0) {out = jour + "j " + heure + "h " + minute + "m " + seconde + "s";}
          	$('#out#id#').text(out);
          	
          	$(".cmd[data-cmd-id='#id#']").attr('title', "Valeur du " + _options.valueDate + ", collectée le " + _options.collectDate);
      	}
    }
	jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</div>
Ce devrait faire l'affaire...
Jeedom Stable 3.3
NUC Z83 + Aeotec Z-Stick Gen5
Z-Wave FGR + FGMS + FGDS + FGFS + FGK + FGWPE + ZW062 + ZW080
GH Mini + Orvibo AllOne + Playbulb + Miband2

Pinson99
Timide
Messages : 53
Inscription : 13 sept. 2018, 10:23
Localisation : Bruxelles

Re: Widget s -> j:h:m:s

Message par Pinson99 » 11 juin 2019, 19:13

Bonjour cavador,

Merci pour ton aide.
Dans mes multiples essais j'avais essayé ça aussi mais ça ne fonctionne pas (j'ai ajouté </script> avant le </div>).
La valeur du texte reste toujours "--", celle par défaut.
Est-ce que j'aurais fait une boulette dans la première partie du code (problème de classe)?
Avant la V3.2, ça fonctionnait pourtant bien.

Je retiens déjà qu'il ne faut plus utiliser parseInt(#state#) mais mettre parseInt(_options.display_value); dans une variable et encapsuler ce qu'il faut rafraîchir dans "jeedom.cmd.update['#id#'] =function(_options){ ...}".
Pinson99

Avatar de l’utilisateur
cadavor
Actif
Messages : 1282
Inscription : 21 juin 2015, 22:00
Localisation : 34

Re: Widget s -> j:h:m:s

Message par cadavor » 13 juin 2019, 16:19

Fait attention que le nouveau code du widget soit bien appliqué car avec les caches parfois il ne met pas à jour le code utilisé.

Après modification du code du widget dans le plugin Widget.
Va sur la configuration de la commande où tu utilises le widget (onglet "Affichage") :
sélectionne un widget core quelconque, sauvegarde, re-sélectionne ton widget et re-sauvegarde.

Ca devrait appliquer le nouveau code (vérifie dans la console du navigateur et faisant clic droit sur la tuile puis "Inspecter/Examiner le code")
Jeedom Stable 3.3
NUC Z83 + Aeotec Z-Stick Gen5
Z-Wave FGR + FGMS + FGDS + FGFS + FGK + FGWPE + ZW062 + ZW080
GH Mini + Orvibo AllOne + Playbulb + Miband2

Pinson99
Timide
Messages : 53
Inscription : 13 sept. 2018, 10:23
Localisation : Bruxelles

Re: Widget s -> j:h:m:s

Message par Pinson99 » 13 juin 2019, 21:37

J'ai appliqué ta procédure et ça a fini par fonctionner!

Pourtant, lorsque j'avais sauvegardé le widget, je l'appliquais systématiquement à toutes les commandes concernées et je vidais le cache de la page du dashboard (ctrl-F5).
Ça ne m'étonne pas que j'aie perdu des heures à tester ça sans succès.
Un peu bricolé comme procédure quand même...

Ça n'a probablement rien à voir mais, depuis deux jours, c'est le foutoir sur mon dashboard, les tuiles se chevauchent et j'en ai qui sortent de l'écran côté droit. Impossible de les ranger. J'ai fait la MAJ vers 3.3.25 sans que ça ne résolve le problème. Certains slider on-off se sont en même temps dédoublés.
Je vais relancer la box et scruter le forum pour voir si je suis le seul concerné.

Merci beaucoup pour ton aide précieuse.
Pinson99

Répondre

Revenir vers « [Plugin officiel] Widgets »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité