[Widget] dashboard.action.slider.timebutton

Bonjour,

reprise du sujet de l’ancien forum https://www.jeedom.com/forum/viewtopic.php?f=29&t=37451

j’ai repris ce widget que @Laco avait créé pour le rendre compatible avec Jeedom V3.2, V3.3 (disponible sur le market) et V4 (en bas de ce poste) et j’en ai profité pour faire quelques modifications pour mes besoins perso. j’ai essayé de faire à ce que mes changements ne perturbent pas le fonctionnement précédent du widget c’est à dire que si vous faite la mise à jour en ne changeant rien le widget devrait fonctionner comme avant.
Voici la liste des fonctionnalités que j’ai rajouté.

  • prise compte des valeurs min et max.
  • ajout d’un paramètre qui permet de modifier la valeur de l’incrément des minutes (de 1 à 59 minute)
  • Modification de style du widget si la valeur max est inférieur à 60min (suppression des boutons ± pour les heures)

voici l’aperçu du widget

Appercu%201 Appercu%202

voici comment le widget se configure :

  1. Configuration de l’équipement
    La configuration de l’équipement se fait comme celle d’un slider normale.
    Les valeurs Max permettent de borner les valeurs. Ces valeurs sont du type #time# (HHMM). Par défaut min est mise à 0 et Max à 100 ( 1 heure valeur max d’un slider dans Jeedom par défaut ). Si ces valeurs sont incorrectes elles sont automatiquement corrigées et il y a une entrée dans la console de debug.
    Si la valeur Max est inférieur 60 le format d’affichage change automatiquement de xhyy à yy min.

  2. Paramètres optionnels widget

il est possible d’ajouter un paramètre optionnel au widget afin de modifier la valeur de l’incrémentation/la décrémentation . Pour cela il faut rajouter le nom incrementdecrement avec la valeur que l’on souhaite.
Cette valeur est fixée à maximum 59.

16/05/2018 : je vais publier le widget en Beta ce jour
19/05/2018 : Passage de la beta en stable
20/05/2018 : bug fix suite aux remarques de @Fabrice
22/05/2019 : bug fix si valeur mini différente de 0

si jamais il y aurait un fonctionnement qui vous pause problème merci de me le remonté ici

Pour Jeedom V4 Version Desktop

<!-- WIDGET SPECIFIQUE adapté du widget standard "cmd.action.slider.button"
Widget créé par @Laco
Widget modifié et maintenu par @yogui

Mise à jour :
- Le 2016/11/11 : Création
- Le 2018/05/10 : Passage jeedom V3
- Le 2018/05/20 : bug fix si valeur seter par un autre virtueel
- Le 2019/10/22 : bug fix si valeur mini différente de 0
- Le 2019/10/23 : Passage jeedom V4
-->
 
<div style="min-width:90px;min-height:62px;margin-right: 5px;margin-left: 5px;padding:0px !important;" class="cmd #history# #minValue# #maxValue# tooltips cmd-widget" data-type="action" data-subtype="slider" data-cmd_id="#id#" data-cmd_uid="#uid#">
	<center>
		<input id="stateTime#id#" type="text" class="value form-control input-sm" value="#state#" style="display:none"/>
        <div class="title #hide_name#"> 
			<span class="cmdName" style="font-weight: bold;font-size : 12px;">#name_display#</span><br/>
		</div><br/>
        <div class="affichage">
        	<span class="affichagechaineComplete"  style="font-size: 2em;font-weight: bold;" id="chaineComplete#id#"></span><br/>
		</div><br/>
        <div class="btn-group">
			<a class="btn-sm bt_minusH" style="font-size: 1.1em;" ><i class="fa fa-minus-circle"></i></a>
			<a class="btn-sm bt_plusH" style="font-size: 1.1em;" ><i class="fa fa-plus-circle"></i></a>
			<a class="btn-sm bt_minusM" style="font-size: 1.1em;" ><i class="fa fa-minus-circle"></i></a>
			<a class="btn-sm bt_plusM" style="font-size: 1.1em;" ><i class="fa fa-plus-circle"></i></a>
		</div>
	</center>
    <script>

    /******************************************************************************************************************************************************/
    /******************************************* Options de personnalisation Valeur par defaut ************************************************************/
    /******************************************************************************************************************************************************/
    /**** Increment decrement **/ var incrementdecrement = ("#incrementdecrement#" != '#'+'incrementdecrement#') ? parseInt("#incrementdecrement#") : 1 ; //
    /******************************************************************************************************************************************************/
    /******************************************************************************************************************************************************/
    /******************************************************************************************************************************************************/

        var heure;
    	var minute;
    	var chaineHeure;
    	var chaineMinute;
		var chaineComplete;
      	var Min;
    	var Max;

        // Lit les valeurs min et max 
		Min =('#minValue#' == '') ? 0 : '#minValue#';
        Max =('#maxValue#' == '') ? 2359: '#maxValue#';
        
		// Assure que les valeurs increment min et max sont dans la bonne plage
		if (incrementdecrement > 59 || incrementdecrement < 0 ){
      		console.log("Valeur incrementdecrement incorrecte ", incrementdecrement);  	
      		incrementdecrement =1;	
		}
		if (incrementdecrement > Max ){
      		console.log("Valeur incrementdecrement incorrecte ", incrementdecrement);  	
      		incrementdecrement =1;	
		}		
		
    	var Min_Heure  =Math.floor(parseInt(Min) / 100);  	      	
    	var Min_Minute =parseInt(Min) - Min_Heure*100;

      	if ( Min < 0 || Min > Max || Min > 2359){  
      		console.log("Valeur Min incorrecte ", Min);  
      		Min =0;
        }
		if ( Min_Minute > 59){
      		console.log("Valeur Min incorrecte ", Min);  
      		Min =Min_Heure*100 + 59;
		}
      	
    	var Max_Heure  =Math.floor(parseInt(Max) / 100);
    	var Max_Minute =parseInt(Max) - Max_Heure*100;
      	
      	if (Max>2359){
     		console.log("Valeur Max incorrecte ", Max);
          	Max = 2359;
        }	
		if ( Max_Minute > 59){
      		console.log("Valeur Max incorrecte ", Max);  
      		Max =Max_Heure*100 + 59;
		}
		
		//sauvegarde les valeurs
		$('head').prepend('<meta name="Max_#id#" content=' +Max+ '>');   
        $('head').prepend('<meta name="Min_#id#" content=' +Min+ '>');     
        $('head').prepend('<meta name="incrementdecrement_#id#" content=' +incrementdecrement+ '>');     
        
        //masque les boutons + et - pour les heures si max <60
   		if (Max < 60){
        	$('.cmd[data-cmd_id=#id#] .bt_minusH').hide();
        	$('.cmd[data-cmd_id=#id#] .bt_plusH').hide();
        }
	
        //Application de la valeur Min
        if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) < Min){  
          $('.cmd[data-cmd_uid=#uid#] .value').val((parseInt(Min )));  
          $('.cmd[data-cmd_uid=#uid#] .value').trigger('change');        
        }	
		
      	// Identification des valeurs Heure et Minute avant modification
      	if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) >= 0) {	
            heure = (Max < 60)? 0 : Math.floor(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) / 100);
      		minute = parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - heure*100;
        }
		//sauvegarde Heures et minutes
        $('head').prepend('<meta name="heure_#id#" content=' +heure+ '>');   
        $('head').prepend('<meta name="minute_#id#" content=' +minute+ '>');     
      
      	// Modification des heures
      	$('.cmd[data-cmd_uid=#uid#] .bt_minusH').on('click', function () {
			//relie les valeurs min et max
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));
          
        	if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) >= Min+100) {    
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - 100)});
				$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
            }
        });
      	$('.cmd[data-cmd_uid=#uid#] .bt_plusH').on('click', function () {
			//re1lie les valeurs min et max
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));

			if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) <= Max-100) {
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) + 100)});
				$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
        	}
        });      	
        
      	// Modification des minutes
      	$('.cmd[data-cmd_uid=#uid#] .bt_minusM').on('click', function () {
			//relie les valeurs min max heure minute seconde incrementdecrement 	
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));
			heure = parseInt($('meta[name="heure_#id#"]').attr('content'));
			minute = parseInt($('meta[name="minute_#id#"]').attr('content'));
			incrementdecrement = parseInt($('meta[name="incrementdecrement_#id#"]').attr('content'));	           

            if (  minute>=incrementdecrement && (heure*100)+ minute > Min ) {
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - incrementdecrement)});
            	$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');              
            }
            else if (  heure >=1 && (heure*100)+ minute > Min) {
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - 40 - incrementdecrement)});
            	$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');             
            }          
        });
        $('.cmd[data-cmd_uid=#uid#] .bt_plusM').on('click', function () {
          	//relie les valeurs min max heure minute seconde incrementdecrement
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));
			heure = parseInt($('meta[name="heure_#id#"]').attr('content'));
			minute = parseInt($('meta[name="minute_#id#"]').attr('content'));
			incrementdecrement = parseInt($('meta[name="incrementdecrement_#id#"]').attr('content'));	  

			if ( (minute < (60-incrementdecrement)) && (heure*100)+ minute < Max) {                   
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) + incrementdecrement)});
            	$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
            }
            else if( (heure*100)+ minute < Max ) {
              jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) + 40 + incrementdecrement)});
           	  $('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
            }
        });       

        //  Commande execute 
        $('.cmd[data-cmd_uid=#uid#] .value').on('change', function () {
           if (typeof timerHandle !== 'undefined') {
             clearTimeout(timerHandle);
             timerHandle = setTimeout(function() {
                jeedom.cmd.execute({id: '#id#', value: {slider: $('.cmd[data-cmd_uid=#uid#] .value').val()}});
            }, 1000)
           } else {
            timerHandle = setTimeout(function() {
                jeedom.cmd.execute({id: '#id#', value: {slider: $('.cmd[data-cmd_uid=#uid#] .value').val()}});
            }, 1000)          
          
           }
        });

	 	//Fonction update		
        jeedom.cmd.update['#id#'] = function(_options){	
        	// Affichage des heures et des minutes sous forme de chaine de caractères
			
			if (_options.display_value>= 0) {
        	   	// Mise à jour de la valeur
               	$('.cmd[data-cmd_uid=#uid#] .value').val(_options.display_value);
              
               	// Formatage de la chaine de caractères heure
				heure = Math.floor(parseInt(_options.display_value) / 100);
                chaineHeure = heure;

				// Calcul valeur minute
				minute = parseInt( _options.display_value) - heure*100;
                        
				// Formatage de la chaine de caractères minute
				if (minute >= 10) {
					chaineMinute =  minute;
				}
				else {
					chaineMinute =  "0" + minute;
				}
				//Affichage au format Heure-minutes ou juste minutes 
				if (Max < 60){
					chaineComplete = chaineMinute + " min";
				}
				else{
					// Calcul de la chaine complète
					chaineComplete = chaineHeure + "h" +chaineMinute;  
				}
				//mise a jour de la valeure
				$('#chaineComplete#id#').text(chaineComplete);
			}
			
            //Sauvegarde des valeures heure et minutes
            $('head').prepend('<meta name="heure_#id#" content=' +heure+ '>');   
			$('head').prepend('<meta name="minute_#id#" content=' +minute+ '>');     

		}
        
		jeedom.cmd.update['#id#']({display_value:'#state#'});
        
    </script>
</div>

Pour Jeedom V4 version Mobile

<!-- WIDGET SPECIFIQUE adapté du widget standard "cmd.action.slider.button"
Widget créé par @Laco
Widget modifié et maintenu par @yogui

Mise à jour :
- Le 2016/11/11 : Création
- Le 2018/05/10 : Passage jeedom V3
- Le 2018/05/20 : bug fix si valeur seter par un autre virtuel
- Le 2018/05/22 : augmentation de la taille des bouttons et de l'espace entre eux
- Le 2019/10/22 : bug fix si valeur mini différente de 0
- Le 2019/10/23 : Passage jeedom V4
-->
 
<div style="min-width:90px;min-height:62px;margin-right: 5px;margin-left: 5px;padding:0px !important;" class="cmd #history# #minValue# #maxValue# tooltips cmd-widget" data-type="action" data-subtype="slider" data-cmd_id="#id#" data-cmd_uid="#uid#">
	<center>
		<input id="stateTime#id#" type="text" class="value form-control input-sm" value="#state#" style="display:none"/>
        <div class="title #hide_name#"> 
			<span class="cmdName" style="font-weight: bold;font-size : 12px;">#name_display#</span><br/>
		</div><br/>
        <div class="affichage">
        	<span class="affichagechaineComplete"  style="font-size: 2em;font-weight: bold;" id="chaineComplete#id#"></span><br/>
		</div><br/>		
      
      
        <div class="btn-group">
			<a class="btn-sm bt_minusH" style="font-size: 1.6em;" ><i class="fa fa-minus-circle"></i></a>
			<a class="btn-sm bt_plusH" style="font-size: 1.6em ;margin-left: 10px ;" ><i class="fa fa-plus-circle"></i></a>
			<a class="btn-sm bt_minusM" style="font-size: 1.6em;;margin-left: 10px" ><i class="fa fa-minus-circle"></i></a>
			<a class="btn-sm bt_plusM" style="font-size: 1.6em;margin-left: 10px ;" ><i class="fa fa-plus-circle"></i></a>
		</div>
	</center>
    <script>

    /******************************************************************************************************************************************************/
    /******************************************* Options de personnalisation Valeur par defaut ************************************************************/
    /******************************************************************************************************************************************************/
    /**** Increment decrement **/ var incrementdecrement = ("#incrementdecrement#" != '#'+'incrementdecrement#') ? parseInt("#incrementdecrement#") : 1 ; //
    /******************************************************************************************************************************************************/
    /******************************************************************************************************************************************************/
    /******************************************************************************************************************************************************/

        var heure;
    	var minute;
    	var chaineHeure;
    	var chaineMinute;
		var chaineComplete;
      	var Min;
    	var Max;

        // Lit les valeurs min et max 
		Min =('#minValue#' == '') ? 0 : '#minValue#';
        Max =('#maxValue#' == '') ? 2359: '#maxValue#';
        
		// Assure que les valeurs increment min et max sont dans la bonne plage
		if (incrementdecrement > 59 || incrementdecrement < 0 ){
      		console.log("Valeur incrementdecrement incorrecte ", incrementdecrement);  	
      		incrementdecrement =1;	
		}
		if (incrementdecrement > Max ){
      		console.log("Valeur incrementdecrement incorrecte ", incrementdecrement);  	
      		incrementdecrement =1;	
		}		
		
    	var Min_Heure  =Math.floor(parseInt(Min) / 100);  	      	
    	var Min_Minute =parseInt(Min) - Min_Heure*100;

      	if ( Min < 0 || Min > Max || Min > 2359){  
      		console.log("Valeur Min incorrecte ", Min);  
      		Min =0;
        }
		if ( Min_Minute > 59){
      		console.log("Valeur Min incorrecte ", Min);  
      		Min =Min_Heure*100 + 59;
		}
      	
    	var Max_Heure  =Math.floor(parseInt(Max) / 100);
    	var Max_Minute =parseInt(Max) - Max_Heure*100;
      	
      	if (Max>2359){
     		console.log("Valeur Max incorrecte ", Max);
          	Max = 2359;
        }	
		if ( Max_Minute > 59){
      		console.log("Valeur Max incorrecte ", Max);  
      		Max =Max_Heure*100 + 59;
		}
		
		//sauvegarde les valeurs
		$('head').prepend('<meta name="Max_#id#" content=' +Max+ '>');   
        $('head').prepend('<meta name="Min_#id#" content=' +Min+ '>');     
        $('head').prepend('<meta name="incrementdecrement_#id#" content=' +incrementdecrement+ '>');     
        
        //masque les boutons + et - pour les heures si max <60
   		if (Max < 60){
        	$('.cmd[data-cmd_id=#id#] .bt_minusH').hide();
        	$('.cmd[data-cmd_id=#id#] .bt_plusH').hide();
        }
	
        //Application de la valeur Min
        if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) < Min){  
          $('.cmd[data-cmd_uid=#uid#] .value').val((parseInt(Min )));  
          $('.cmd[data-cmd_uid=#uid#] .value').trigger('change');        
        }	
		
      	// Identification des valeurs Heure et Minute avant modification
      	if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) >= 0) {	
            heure = (Max < 60)? 0 : Math.floor(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) / 100);
      		minute = parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - heure*100;
        }
		//sauvegarde Heures et minutes
        $('head').prepend('<meta name="heure_#id#" content=' +heure+ '>');   
        $('head').prepend('<meta name="minute_#id#" content=' +minute+ '>');     
      
      	// Modification des heures
      	$('.cmd[data-cmd_uid=#uid#] .bt_minusH').on('click', function () {
			//relie les valeurs min et max
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));
          
        	if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) >= Min+100) {    
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - 100)});
				$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
            }
        });
      	$('.cmd[data-cmd_uid=#uid#] .bt_plusH').on('click', function () {
			//relie les valeurs min et max
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));

			if (parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) <= Max-100) {
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) + 100)});
				$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
        	}
        });      	
        
      	// Modification des minutes
      	$('.cmd[data-cmd_uid=#uid#] .bt_minusM').on('click', function () {
			//relie les valeurs min max heure minute seconde incrementdecrement 	
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));
			heure = parseInt($('meta[name="heure_#id#"]').attr('content'));
			minute = parseInt($('meta[name="minute_#id#"]').attr('content'));
			incrementdecrement = parseInt($('meta[name="incrementdecrement_#id#"]').attr('content'));	           

            if (  minute>=incrementdecrement && (heure*100)+ minute > Min ) {
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - incrementdecrement)});
            	$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');              
            }
            else if (  heure >=1 && (heure*100)+ minute > Min ) {
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) - 40 - incrementdecrement)});
            	$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');             
            }          
        });
        $('.cmd[data-cmd_uid=#uid#] .bt_plusM').on('click', function () {
          	//relie les valeurs min max heure minute seconde incrementdecrement
			Max = parseInt($('meta[name="Max_#id#"]').attr('content'));
			Min = parseInt($('meta[name="Min_#id#"]').attr('content'));
			heure = parseInt($('meta[name="heure_#id#"]').attr('content'));
			minute = parseInt($('meta[name="minute_#id#"]').attr('content'));
			incrementdecrement = parseInt($('meta[name="incrementdecrement_#id#"]').attr('content'));	  

			if ( (minute < (60-incrementdecrement)) && (heure*100)+ minute < Max) {                   
                jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) + incrementdecrement)});
            	$('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
            }
            else if( (heure*100)+ minute < Max ) {
              jeedom.cmd.update['#id#']({display_value:(parseInt($('.cmd[data-cmd_uid=#uid#] .value').val()) + 40 + incrementdecrement)});
           	  $('.cmd[data-cmd_uid=#uid#] .value').trigger('change');
            }
        });       

        //  Commande execute 
        $('.cmd[data-cmd_uid=#uid#] .value').on('change', function () {
           if (typeof timerHandle !== 'undefined') {
             clearTimeout(timerHandle);
             timerHandle = setTimeout(function() {
                jeedom.cmd.execute({id: '#id#', value: {slider: $('.cmd[data-cmd_uid=#uid#] .value').val()}});
            }, 1000)
           } else {
            timerHandle = setTimeout(function() {
                jeedom.cmd.execute({id: '#id#', value: {slider: $('.cmd[data-cmd_uid=#uid#] .value').val()}});
            }, 1000)          
          
           }
        });

	 	//Fonction update		
        jeedom.cmd.update['#id#'] = function(_options){	
        	// Affichage des heures et des minutes sous forme de chaine de caractères
			
			if (_options.display_value>= 0) {
        	   	// Mise à jour de la valeur
               	$('.cmd[data-cmd_uid=#uid#] .value').val(_options.display_value);
              
               	// Formatage de la chaine de caractères heure
				heure = Math.floor(parseInt(_options.display_value) / 100);
                chaineHeure = heure;

				// Calcul valeur minute
				minute = parseInt( _options.display_value) - heure*100;
                        
				// Formatage de la chaine de caractères minute
				if (minute >= 10) {
					chaineMinute =  minute;
				}
				else {
					chaineMinute =  "0" + minute;
				}
				//Affichage au format Heure-minutes ou juste minutes 
				if (Max < 60){
					chaineComplete = chaineMinute + " min";
				}
				else{
					// Calcul de la chaine complète
					chaineComplete = chaineHeure + "h" +chaineMinute;  
				}
				//mise a jour de la valeure
				$('#chaineComplete#id#').text(chaineComplete);
			}
			
            //Sauvegarde des valeures heure et minutes
            $('head').prepend('<meta name="heure_#id#" content=' +heure+ '>');   
			$('head').prepend('<meta name="minute_#id#" content=' +minute+ '>');     

		}
        
		jeedom.cmd.update['#id#']({display_value:'#state#'});
        
    </script>
</div>
4 « J'aime »

Salut @Yogui

Merci pour ce super widget.
J’ai un comportement etrange du widget en V3 et V4.
Lorsque que je mets un temps de consigne >1h, j’ai bien les boutons des heures et des minutes .
Lorsque que je mets un temps de consigne <1h, j’ai toujours les boutons des heures, ils ne se masquent pas.

Ai je pas bien compris le fonctionnement du widget ou est ce un bug ? et l’as tu deja rencontré.

Merci

Bonjour
C’est le fonctionnement normal c’est juste en changeant la valeur max (<60) que les boutons disparaissent.

Ok la valeur max.
Je croyais que c’était quand le compteur passait au dela de 60 que les boutons apparaissaient/disparaissaient.
En fait c’est la valeur max qui défini le format

Merci

Bonjour j’ai rajouté au premier poste le code pour jeedom V4 le widget étant encore sur le market pour jeedom V3.3. les fonction sont identique pour les deux versions de jeedom

@Alexandre ca serait cool de pouvoir ajouter des fichiers html ( et zip mais c’est pour un autre sujet )en plus des fichiers images déjà disponibles. Un bouton pour copier les blocs code en une fois serait top également.
Un tag widget serait également top et répondrait à beaucoup de questions

Bonjour,

Merci pour le partage, widget sympa.

Une idée d’évolution: lorsqu’on arrive au max (au min) et qu’on augmente (ou diminue) cela pourrait revenir au min (ou au max) défini.
Exemple si on à configuré un min/max à 400 et 630, lorsqu’on est sur 6h30 et qu’on augmente, au lieu de bloquer comme actuellement, on reviendrait à 4h00

Bonjour,
effectivement ca peu etre intéressant je regarde dès que j’ai en peu de temps pour faire la modif .
ce que je peux deja dire c’est que ce sera sous forme d’option (comme le pas d’incrémentation) afin de ne pas changer le comportement pour les gens qui utilise deja le widget et pour lesquels le fonctionnement convient

1 « J'aime »

Hello,

Je ne suis pas sûr d’avoir tout ce qu’il faut pour la V4.
Il suffit de créer un fichier cmd.action.slider.button.html dans data\customTemplates\dashboard et avec le contenu posté ?

Pas de .js ou autre image ?

Bonjour,

Oui, il suffit de faire ce que tu as décris, tu peux aussi copier le code directement dans un widget code. Il n’y a pas d’autre fichier. Puis il suffit de l’appliquer sur une commande action/slider avec sa commande info. associée pour récupérer l’info. et de la bornée de 0 à 2359 maximum selon tes besoins.
Je m’en sers tous les jours en V4 sans soucis.

Ah OK. Bon pour le moment ce widget personnalisé n’est pas proposé dans la liste au niveau de l’affichage de l’action slider. Il faut faire quelque chose pour forcer le refresh ?

Crtl + F5?

Pas mieux. J’ai aussi essayé de le faire sur une tablette avec un autre navigateur pour éviter ce problème de cache.

J’ai tenté de créer le répertoire cmd.action.slider.button (vide) mais ça change rien.

J’ai bien le Kontrol2 de Salvialf dans CustomTemp par contre

Bizzard, il est bien dans ce dossier? :



Edit : pas besoin de créer un répertoire normalement…

Ah je l’avais pas nommé de la bonne façon. C’est TimeButton et non button. Merci :sweat_smile:

Le nom ne change rien, normalement même si tu créés un fichier HTML vide, il devrait apparaître dans le bon type/sous type :



L’essentiel est que ça fonctionne. :wink:

Ah c’est curieux alors… Peut-être que la copie dans le répertoire n’a pas fait le job et comme j’ai renommé depuis JeeXplorer ça a fixé le soucis.

Bravo pour ce widget @Yogui, c’est le top :ok_hand:.
Merci pour tout!
Cordialement.
Louis :mask:

Bonsoir,

J’ai créer un planificateur de chauffe serviette utilisant le widget, voir image:

Comme vous pouvez le voir, je planifie une heure de départ et une durée.

Je rencontre un problème avec la durée qui si elle est supérieure à 59 minutes est renvoyé sous la forme HHMM, ce qui n’est pas correctement interprété par le bloc « Dans » qui ne prend en compte que des minutes et pas le format HHMM :face_with_raised_eyebrow:

Avez-vous rencontré le problème? Auriez-vous un astuce pour le contourner? Serait-il possible de faire évoluer le widget afin de définir par paramètre le format horaire souhaité?

Encore merci pour le widget.

Bonne soirée
Louis

Bonjour @Louis_Reymond

merci pour le retour,
je n’ai pas rencontré le problème car je ne l’ai pas utilisé dans des blocs dans avec des valeurs supérieures à 59 min. une modification engendrait pas mal de modifs. il est cependant possible de contourner le problème à l’aide d’une opération ternaire dans le bloc a :
voici un exemple (attention j’ai recopié le texte donc pas a l’abri d’une faute de frappe sur le nom de ton équipement) :

(#[Salle de bain parents][Planification sèche-serviette parents][Minutes]#<100? #[Salle de bain parents][Planification sèche-serviette parents][Minutes]#:((floor(#[Salle de bain parents][Planification sèche-serviette parents][Minutes]#/100) *60) + (#[Salle de bain parents][Planification sèche-serviette parents][Minutes]#-(floor(#[Salle de bain parents][Planification sèche-serviette parents][Minutes]#/100)*100))))

sur le principe c’est juste une conversion en minute de la valeur si ta valeur d’origine est supérieur a 1 heure

1 « J'aime »

Bonjour @Yogui,

Merci beaucoup, ça marche parfaitement! :ok_hand:

Cordialement.

Louis