Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Compte à rebours

Réservé à l'utilisation et la création de widgets dans JEEDOM
odemg
Timide
Messages : 17
Inscription : 01 déc. 2018, 01:06

Re: Compte à rebours

Message par odemg » 15 avr. 2019, 16:14

Bonjour,

J'essaye de faire un compte à rebours sur un design en utilisant un virtuel et le code du widget qui a été donné plus haut :

Code : Tout sélectionner

<!-- WIDGET SPECIFIQUE adapté du widget standard "countdown"
Modifications : 
- Remplacement de style="display: block;" par style="min-width:90px;min-height:62px;margin-right: 5px;margin-left: 5px;padding:0px !important;"
- Remplacement de title="#collectDate#" par title="Valeur du #valueDate#, collectée le #collectDate#"
- Mutualisation de #countdown_#id#_#state#_h, #countdown_#id#_#state#_m, et #countdown_#id#_#state#_s en #countdown_#id#_#state#_decompte
- Suppression de class='label label-default'
- Ajout calcul de #countdown_#id#_#state#_decompte affichant si nécessaire les heures
- Remplacement de la valeur par défaut par --
Mise à jour :
- Le 2016/11/19 : Correction d'une erreur d'écriture
- Le 2016/04/11 : Création
-->
<div style="min-width:90px;min-height:62px;margin-right: 5px;margin-left: 5px;padding:0px !important;" class="tooltips cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="Valeur du #valueDate#, collectée le #collectDate#">
	<center> 
      <span style="font-weight: bold;font-size : 12px;" class="cmdName">#name_display#</span><br/>
      <span style="font-size: 2em;font-weight: bold;" id="countdown_#id#_#state#_decompte">--</span>
    </center>
	<script>
		if ('#background-color#' !== '#'+'background-color'+'#') {
			$('#cmd#id# .label').css({'background-color':'#background-color#'});
		}

		$(function () {
			if ('#state#' > 0) {
				var intervalId = setInterval(function () {
					var now = (new Date()).getTime(); // On déclare la date d'aujourd'hui.
					var tps_restant = '#state#'*1000 - now; // Temps restant en millisecondes

					// console.log("interval("+intervalId+")");

					if (!$('#countdown_#id#_#state#_decompte').length || '#state#' < 0 || tps_restant < 0) {
						// console.log("clearInterval("+intervalId+")");
						clearInterval(intervalId);
						$('#countdown_#id#_#state#_decompte').text('--');
					} else {
					  //============ CONVERSIONS
					  var s_restantes = tps_restant / 1000; // Secondes restantes
					  var i_restantes = s_restantes / 60; // Minutes restantes
					  var H_restantes = i_restantes / 60; // Heures restantes
					  
					  s_restantes = Math.floor(s_restantes % 60); // Secondes restantes
					  i_restantes = Math.floor(i_restantes % 60); // Minutes restantes
					  H_restantes = Math.floor(H_restantes); // Heures restantes
					  //==================

					  //============ FORMATTAGE
					  s_restantes = s_restantes < 10 ? "0"+ s_restantes : s_restantes;
					  i_restantes = i_restantes < 10 ? "0"+ i_restantes : i_restantes;
					  H_restantes = H_restantes < 10 ? "0"+ H_restantes : H_restantes;
					  //==================

					  if (H_restantes > 0) {
                        $('#countdown_#id#_#state#_decompte').text(H_restantes + ":" + i_restantes + ":" +s_restantes);
                      } else {
                        $('#countdown_#id#_#state#_decompte').text(i_restantes + ":" +s_restantes);
                      }  
					}
				}, 1000);
			}
		});
	</script>
</div>

Néanmoins quand je lance mon scénario pour initialiser la variable de début du widget avec #timestamp# +100 ça ne rafraîchit pas le virtuel ni sur le dashboard ni sur le design. il faut que je fasse F5.

Je me dis que cela provient peut être de l’incompatibilité de certain widget avec la nouvelle version de jeedom mais je n'y connais pas grand chose ... ( je ne fais que recopier du code et le modifier pour avoir ce que je souhaite )

Est ce que quelqu'un a aussi le problème ?

Une solution ?

Merci d'avance,

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Compte à rebours

Message par winhex » 16 avr. 2019, 02:39

la solution viendra (je suis dessus)
le comptabiliseur (contraire d'un compte à rebours) c'est fait. je mettrais tous en même temps

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Compte à rebours

Message par winhex » 16 avr. 2019, 11:03

temps restant et Compte à rebours :
pour mise en place et afin de l'adapter à son besoin

1 création de virtuel
rendu1.png
rendu1.png (12.26 Kio) Consulté 1201 fois
config1.png
config1.png (104.02 Kio) Consulté 1201 fois

2 assignation des times
configuration avancé d'etat (id 3008)
config2.png
config2.png (72.34 Kio) Consulté 1201 fois
soit
action slider "areste"
id = 3011
valeur = #[countdown][Depuis][etat]#==1?#timestamp#:0

et
action slider "adepuis"
id = 3013
valeur = #[countdown][Depuis][etat]#==1?#timestamp#+300:0


...

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Compte à rebours

Message par winhex » 16 avr. 2019, 11:06

rendu2.png
rendu2.png (15.98 Kio) Consulté 1198 fois
une fois validé le comportement

3 on applique les widgets

pour depuis

Code : Tout sélectionner

<!-- WIDGET SPECIFIQUE  widget "tps_depuis"

Modifications : 
- update, _options.display_value, et stop fonction
Mise à jour :
- Le 2019/4/16 : conforme jeedom v3.3.20

-->
<div style="min-width:90px;min-height:62px;margin-right: 5px;margin-left: 5px;padding:0px !important;" class="tooltips cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="Valeur du #valueDate#, collectée le #collectDate#">
	<center> 
      <span style="font-weight: bold;font-size : 12px;" class="cmdName">#name_display#</span><br/>
      <span style="font-size: 1.5em;font-weight: bold;" id="countdown_#id#_decompte">--</span>
    </center>
	<script>
        		jeedom.cmd.update['#id#'] = function(_options){
        

var timestamp = parseFloat(_options.display_value);

		$(function (e) {
			if (timestamp > 0) {

				  interval#id# = setInterval( function(){
                        
					var now = (new Date()).getTime();
					var tps_depuis = now - timestamp*1000;

					if (!$('#countdown_#id#_decompte').length || timestamp < 0 || tps_depuis < 0) {
						clearInterval(interval#id#);                
						$('#countdown_#id#_decompte').text('--');
					} else {
                     
					  //============ CONVERSIONS
					  var s_restantes = tps_depuis / 1000; // Secondes restantes
					  var i_restantes = s_restantes / 60; // Minutes restantes
					  var H_restantes = i_restantes / 60; // Heures restantes
					  
					  s_restantes = Math.floor(s_restantes % 60); // Secondes restantes
					  i_restantes = Math.floor(i_restantes % 60); // Minutes restantes
					  H_restantes = Math.floor(H_restantes); // Heures restantes
					  //==================

					  //============ FORMATTAGE
					  s_restantes = s_restantes < 10 ? "0"+ s_restantes : s_restantes;
					  i_restantes = i_restantes < 10 ? "0"+ i_restantes : i_restantes;
					  H_restantes = H_restantes < 10 ? "0"+ H_restantes : H_restantes;
					  //==================

					  if (H_restantes > 0) {
                        $('#countdown_#id#_decompte').text(H_restantes + ":" + i_restantes + ":" +s_restantes);
                      } else {
                        $('#countdown_#id#_decompte').text(i_restantes + ":" +s_restantes);
                      }  
					}
					}
          , 1000);
			} else {
              						
						clearInterval(interval#id#);
                     
						$('#countdown_#id#_decompte').text('--');
              e.stopPropagation();
            }
		}
         );
                }
		jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});

	</script>
</div>
pour reste

Code : Tout sélectionner

<!-- WIDGET SPECIFIQUE  widget "tps_restant"

Modifications : 
- update, _options.display_value, et stop fonction
Mise à jour :
- Le 2019/4/16 : conforme jeedom v3.3.20

-->
<div style="min-width:90px;min-height:62px;margin-right: 5px;margin-left: 5px;padding:0px !important;" class="tooltips cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="Valeur du #valueDate#, collectée le #collectDate#">
	<center> 
      <span style="font-weight: bold;font-size : 12px;" class="cmdName">#name_display#</span><br/>
      <span style="font-size: 1.5em;font-weight: bold;" id="countdown_#id#_decompte">--</span>
    </center>
	<script>
        jeedom.cmd.update['#id#'] = function(_options){
var timestamp = parseFloat(_options.display_value);
		$(function (e) {
			if (timestamp > 0) {
				 interval#id# = setInterval(function () {
					var now = (new Date()).getTime(); // On déclare la date d'aujourd'hui.
					var tps_restant =timestamp*1000 - now; // Temps restant en millisecondes

					// console.log("interval("+intervalId+")");

					if (!$('#countdown_#id#_decompte').length || timestamp < 0 || tps_restant < 0) {
						// console.log("clearInterval("+intervalId+")");
						clearInterval(interval#id#);
						$('#countdown_#id#_decompte').text('--');
					} else {
					  //============ CONVERSIONS
					  var s_restantes = tps_restant / 1000; // Secondes restantes
					  var i_restantes = s_restantes / 60; // Minutes restantes
					  var H_restantes = i_restantes / 60; // Heures restantes
					  
					  s_restantes = Math.floor(s_restantes % 60); // Secondes restantes
					  i_restantes = Math.floor(i_restantes % 60); // Minutes restantes
					  H_restantes = Math.floor(H_restantes); // Heures restantes
					  //==================

					  //============ FORMATTAGE
					  s_restantes = s_restantes < 10 ? "0"+ s_restantes : s_restantes;
					  i_restantes = i_restantes < 10 ? "0"+ i_restantes : i_restantes;
					  H_restantes = H_restantes < 10 ? "0"+ H_restantes : H_restantes;
					  //==================

					  if (H_restantes > 0) {
                        $('#countdown_#id#_decompte').text(H_restantes + ":" + i_restantes + ":" +s_restantes);
                      } else {
                        $('#countdown_#id#_decompte').text(i_restantes + ":" +s_restantes);
                      }  
					}
				}, 1000);
			}else {
              						
						clearInterval(interval#id#);
                     
						$('#countdown_#id#_decompte').text('--');
              e.stopPropagation();
            }
		});
        }
  jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});

	</script>
</div>
rendu3.png
rendu3.png (15.21 Kio) Consulté 1194 fois

odemg
Timide
Messages : 17
Inscription : 01 déc. 2018, 01:06

Re: Compte à rebours

Message par odemg » 17 avr. 2019, 10:25

Merci beaucoup, ça fonctionne bien !!

Avatar de l’utilisateur
propositionjoe
Timide
Messages : 302
Inscription : 17 févr. 2016, 21:39
Contact :

Re: Compte à rebours

Message par propositionjoe » 18 avr. 2019, 08:07

winhex a écrit :
16 avr. 2019, 11:06

Salut,

En fait tu as réécris le widget, et la proposition decompte de 2016 n'est donc plus utilisable?
Je demande cela parce que j'ai pas mal de virtuel qui se base sur lui, si c'est le cas j'ai du boulot à tout réécrire.

Image
Proxmox avec VM jeedom
Zigbee2mqtt, Broadlink, Zwave, Blea, Tasmotta, EspEasy
Mon blog: https://carmagnole.ovh

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Compte à rebours

Message par winhex » 18 avr. 2019, 10:23

non c'est le même
j,'ai enlevé le vieux début du script pour la gestion couleur apparu en v1.2
le reste est identique hormis 2,3 bricoles pour la compatibilité v3.3 :
2 fois jeedom update
remplacer #state# par _options.display_value mis dans une variable
et stop fonction(e) (lié à l'update)
$(function (e) {.... avant $(function () {...

Code : Tout sélectionner

else {
clearInterval(interval#id#);
$('#countdown_#id#_decompte').text('--');
e.stopPropagation();
            }
mon conseil
mais si tu es entierement satisfait de ton jeedom actuel laisse n'y touche pas,
voir install une vm ou autre avec un jeedom à jour pour suivre. Je ne sais pas comment ça va évolué et si on pourra en plus toujours appliqué se genre de widget. (on est à la limite de mes compétences)
chaque evo amené son lot de + et petit - (qui sont en faite de gros - pour un vielle utilisateur)
soit on se passe du petit - soit on se passe du +
a toi le choix
sympas le screen, ya du taf
donc quand ça marche, et on en bave pour (touche pas petit con :D )

Avatar de l’utilisateur
propositionjoe
Timide
Messages : 302
Inscription : 17 févr. 2016, 21:39
Contact :

Re: Compte à rebours

Message par propositionjoe » 18 avr. 2019, 11:04

+1
Merci pour ta réponse.
Proxmox avec VM jeedom
Zigbee2mqtt, Broadlink, Zwave, Blea, Tasmotta, EspEasy
Mon blog: https://carmagnole.ovh

gaston78
Timide
Messages : 14
Inscription : 09 mars 2015, 22:20

Re: Compte à rebours

Message par gaston78 » 12 mai 2019, 14:35

Bonjour,

J'ai appliqué les modifications au code du widget décompte et j'ai appliqué le nouveau widget à l'extinction automatique de la TV du salon.

J'ai bien le rafraichissement du décompte sans rechargement de la page (F5), par contre je vois maintenant plusieurs décomptes apparaitre. A chaque fois que le décompte se relance (sur mouvement dans la piece), il vient s'ajouter aux autres décomptes au lieu de les remplacer.

Lorsque je fais F5, les décomtpes "fantomes" disparaissent....

J'ai essayé sous chrome et IE, et le résultat est le même. Avez vous une idée de l'origine du pb ?

D'avance merci.

Répondre

Revenir vers « [Plugin officiel] Widgets »

Qui est en ligne ?

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