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 !

Réaliser un bouton en info qui change d'état (icone)

Pour parler de tout, et surtout de rien !
benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 07 mars 2018, 19:56

Bonsoir,

Je souhaiterai réaliser un widget de type info (basé sur l'état d'un capteur) ouvert/fermé dont l'icône change en fonction de l'état. Mais sous la forme d'un bouton !

Pourquoi car je souhaite mettre une zone par dessus dans mon design qui lancera une action par dessus, donc j'aimerai qu'il conserve l'aspect bouton.

Comment faire cela ?

Je suis parti d'un widget info, oui, mais il a tout sauf l'aspect voulu...

Code : Tout sélectionner

<div style="background-color:rgba(0,0,0,0.1) !important;border-color : transparent !important;width:65px;min-height:65px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="binary" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
  <center>
    <div style="font-weight: bold;font-size : 12px;#hideCmdName#">#name_display#</div>
     <span style="font-size: 2.5em;font-weight: bold;position:relative;top:6px" class="iconCmd"></span>
  </center>
  <script>
    jeedom.cmd.update['#id#'] =function(_options){
      $('.cmd[data-cmd_id=#id#]').attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate)
      if (_options.display_value == '1') {
       $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="icon jeedom-garage-ouvert" style="font-size:50px;color:red;"</i>');
     }else {
      $('.cmd[data-cmd_id=#id#] .iconCmd').empty().append('<i class="icon jeedom-garage-ferme" style="font-size:50px;color:white;"</i>');
    }
  }
  jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Me donne :

Image

Sauf que je n'arrive pas à avoir le vrai aspect bouton que j'ai normalement via des boutons de type action.
Qu'est ce que je loupe ? (pourtant j'ai bien la classe cmd ...).

Image

Qui eux sont basés sur :

Code : Tout sélectionner

<span class="cmd reportModeHidden cmd-widget" style="display: inline !important;margin-right: 2px;" data-type="action" data-subtype="other" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
    <a class="btn btn-sm btn-default action cmdName tooltips" title="#name#" style="background-color:rgba(0,0,0,0.1) !important;border-color : transparent !important;margin-top: 2px;">#name_display#</a>
    <script>
        $('.cmd[data-cmd_uid=#uid#]:last .action').off('click').on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
        if ($('.cmd[data-cmd_uid=#uid#]:last').prev().data('subtype') != undefined && $('.cmd[data-cmd_id=#id#]:last').prev().data('subtype') != 'other'
                && $('.cmd[data-cmd_uid=#uid#]:last').prev().css('display') != 'block') {
            $('.cmd[data-cmd_uid=#uid#]:last').prepend('<br/>');
        }
    </script>
</span>
De même dans l'idéal, j'aimerai changer non pas la couleur de l'icône mais la couleur du fond du bouton suivant l'état.

Comment puis-je faire cela ?

Et enfin j'aimerai réaliser un bouton de même aspect mais non pas avec une icone mais avec une image stockée sur mon Jeedom. Pas réussi...

Merci !

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 08 mars 2018, 21:44

Hello,

J'ai bien essayé d'avancer, mais pour l'heure je reste bloqué à la solution définir une zone avec une action et garder l'état du widget derrière... pas glop !

Bref, je suis preneur d'aide !

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

Re: Réaliser un bouton en info qui change d'état (icone)

Message par winhex » 08 mars 2018, 22:04

voici mon coup de pouce

class="btn btn-sm btn-default

btn-default = couleur
btn-sm = taille
https://www.w3schools.com/bootstrap/boo ... uttons.asp

tous le sujet te sera instructif

Code : Tout sélectionner

if ("#state#" == '#name#') {
         $('#cmdButton#id#').removeClass("btn-default");
                  $('#cmdButton#id#').css('background-color', 'rgba(255,0,0,1)!important'); 
viewtopic.php?f=29&t=21295&hilit=widget ... 00#p432379

Bosquetia
Actif
Messages : 6783
Inscription : 10 mai 2016, 07:54

Re: Réaliser un bouton en info qui change d'état (icone)

Message par Bosquetia » 08 mars 2018, 22:21

Merci winhex pour ton aide sur tous ces soucis...
La dessus je n'interviens jamais car je ne sais pas faire et pire j'arrive pas à m'y intéresser.

Mais ton aide est précieuse ;-)

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 08 mars 2018, 23:26

C'est clair

Je vais regarder et avancer. Merci.

Envoyé de mon Moto G (5S) Plus en utilisant Tapatalk


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

Re: Réaliser un bouton en info qui change d'état (icone)

Message par winhex » 11 mars 2018, 13:22

Bosquetia a écrit :
08 mars 2018, 22:21
Merci winhex pour ton aide sur tous ces soucis...
La dessus je n'interviens jamais car je ne sais pas faire et pire j'arrive pas à m'y intéresser.

Mais ton aide est précieuse ;-)
aidant mais aussi apprenti
parfois cela m'aide m'inspire aussi

ça prend du temps mais y'a un résultat pour les obstiné de l'impossible.
j'ai fini la mise en place du contenant
que 2 design et css/js (3semaines à mon rythme )
https://youtu.be/i99mP2FI4aU
Dernière édition par winhex le 11 mars 2018, 14:36, édité 1 fois.

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Réaliser un bouton en info qui change d'état (icone)

Message par Seki » 11 mars 2018, 14:22

winhex a écrit :
11 mars 2018, 13:22
Bosquetia a écrit :
08 mars 2018, 22:21
Merci winhex pour ton aide sur tous ces soucis...
La dessus je n'interviens jamais car je ne sais pas faire et pire j'arrive pas à m'y intéresser.

Mais ton aide est précieuse ;-)
aidant mais aussi apprenti
parfois cela m'aide m'inspire aussi

ça prend du temps mais y'a un résultat pour les obstiné de l'impossible.
j'ai fini la mise en place du contenant
que du design et css/js (3semaines à mon rythme )
https://youtu.be/i99mP2FI4aU
Cool ton interface winhex! ;)
Tout est intégré dans une seule page au niveau design?

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

Re: Réaliser un bouton en info qui change d'état (icone)

Message par winhex » 11 mars 2018, 14:43

c'est en cours et c'est le souhait

1 design menu
avec un design (arlequin)

là 2 mais autant qu'on veux (exemple lien forum)
ou le 2ème sans fin

le dernier truc un équipement qui disparaît
pour en avoir plusieurs au même endroit pour gagné encore plus de place

yaura un tuto/sujet avec vidéo d'accompagnement
(j'envoie tous à celui qui veux le faire)

mais c'est pour bidouilleur car se qui marche chez moi n'est pas forcément pour tout le monde "chrome" (il y a plusieurs défi là)

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Réaliser un bouton en info qui change d'état (icone)

Message par Seki » 12 mars 2018, 14:59

Hâte de voir ça. :)

Envoyé de mon GT-I9100 en utilisant Tapatalk


benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 12 mars 2018, 21:55

Bonsoir,

Manque de temps pour avancer, mais je garde les indications de winhex notamment :).

Gros merci !

Avatar de l’utilisateur
PrFalKeN
Actif
Messages : 936
Inscription : 27 nov. 2017, 18:51

Re: Réaliser un bouton en info qui change d'état (icone)

Message par PrFalKeN » 13 mars 2018, 13:07

winhex a écrit :
11 mars 2018, 14:43
c'est en cours et c'est le souhait

1 design menu
avec un design (arlequin)

là 2 mais autant qu'on veux (exemple lien forum)
ou le 2ème sans fin

le dernier truc un équipement qui disparaît
pour en avoir plusieurs au même endroit pour gagné encore plus de place

yaura un tuto/sujet avec vidéo d'accompagnement
(j'envoie tous à celui qui veux le faire)

mais c'est pour bidouilleur car se qui marche chez moi n'est pas forcément pour tout le monde "chrome" (il y a plusieurs défi là)
Bonjour,

Vraiment excellent.
J'ai hâte de voir le tuto et essayer cela !
Bravo pour la réalisation en tout cas et merci pour le partage

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

Re: Réaliser un bouton en info qui change d'état (icone)

Message par winhex » 15 mars 2018, 22:52

demain normalement
j'y travail encore mais bon faut se donner un ultimatum sinon c'est jamais

exemple
pour avoir le passage d'un design ancre C à un autre design ancre B
car avant si on reprend la vidéo du lien forum à ancre D c'etait l'ancre A qui apparaisait
la solution
https://www.developpez.net/forums/d1332 ... ost7235672
m'a pris une heure
le dernier truc un équipement qui disparaît
pour en avoir plusieurs au même endroit pour gagné encore plus de place
pour la prochaine avec fullscreen

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 18 mars 2018, 07:52

Bonjour,

Après quelques heures d'essai, j'ai finalement réussi à prenant des idées de tous les posts.

Pour le portail (en attendant la pose d'une fin de course pour savoir si le portail est ouvert).

Virtuel dédié avec remise à zéro d'une information au bout d'une minute (cycle d'ouverture fermeture)

Image

Action sur le ZK1PA du portail (en attendant le branchement du doorbird dans le futur, filaire ethernet et contact sec).

Image

Et création du widget dédié :

Code : Tout sélectionner

<div id="portailEntree#id#" style="background-color:#3498db !important;border-color : transparent !important;width:75px;min-height:75px;" class="btn btn-sm btn-default action cmdName cmd tooltips cmd-widget cursor" data-type="action" data-subtype="other" data-cmd_id="#id#">
  <center>
         <span style="font-size: 3.5em;font-weight: bold;" class="action" id="iconPortailCmd#id#"></span>
  </center>
   <script>
       var cmdNom = '#name#'.toLowerCase();
      
         if('#state#' == '0' || '#state#' == 0){
             $('#iconPortailCmd#id#').append('<i class="icon jeedom-portail_ferme" style="font-size:30px;color:white;"</i>');   
             
           	if (cmdNom.indexOf('off') == 0 || cmdNom.indexOf('fermer') == 0) {
                $('#portailEntree#id#').hide();  
            }
        }else{
             $('#iconPortailCmd#id#').append('<i class="icon jeedom-portail_ouvert" style="font-size:30px;color:red;"</i>');   
             
           	if (cmdNom.indexOf('on') == 0 || cmdNom.indexOf('ouvrir') == 0 ) {
                $('#portailEntree#id#').hide();
            }
        }

          $('#iconPortailCmd#id#').on('click', function(){
              jeedom.cmd.execute({id: '#id#'});
         });
   </script>
</div>
Me donne ça :

Image
Et quand je lance le portail :
Image
qui revient au repos 1 min après.

Par contre pour la porte de garage, j'ai un capteur xiaomi pour l'état de la porte.
Donc j'ai logiquement changé mon virtuel et après avoir compris, j'ai bien indiqué que l'action valait par défaut la commande Garage. Sinon il suffisait que je clique de nouveau pour arrêter le garage à une position et la porte passait de rouge (ouvert) à fermé alors que le garage était réellement ouvert.

Code : Tout sélectionner

<div id="portailEntree#id#" style="background-color:#3498db !important;border-color : transparent !important;width:75px;min-height:75px;" class="btn btn-sm btn-default action cmdName cmd tooltips cmd-widget cursor" data-type="action" data-subtype="other" data-cmd_id="#id#">
  <center>
         <span style="font-size: 3.5em;font-weight: bold;position:relative;top:6px" class="action" id="iconPortailCmd#id#"></span>
  </center>
   <script>
       var cmdNom = '#name#'.toLowerCase();
      
         if('#state#' == '0' || '#state#' == 0){
             $('#iconPortailCmd#id#').append('<i class="icon jeedom-garage-ferme" style="font-size:50px;color:white;"</i>');   
             
           	if (cmdNom.indexOf('off') == 0 || cmdNom.indexOf('fermer') == 0) {
                $('#portailEntree#id#').hide();  
            }
        }else{
             $('#iconPortailCmd#id#').append('<i class="jeedom-garage-ouvert" style="font-size:50px;color:red;"</i>');   
             
           	if (cmdNom.indexOf('on') == 0 || cmdNom.indexOf('ouvrir') == 0 ) {
                $('#portailEntree#id#').hide();
            }
        }

          $('#iconPortailCmd#id#').on('click', function(){
              jeedom.cmd.execute({id: '#id#'});
         });
   </script>
</div>
me donne alors si porte ouverte/fermée :
Image

et ça si ouvert :
Image

Et au final sur mon design téléphone :

Image

Et sur le design tablette :
Image

Merci !

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 21 avr. 2018, 21:08

Bon, le travail fait avec l'aide de winhex était basé sur un portail qui utilisait une information qui redescendait à 0 après 1 min en passant à 1 par l'action en question "porte". Pas une vraie information d'un capteur.

Maintenant que j'ai un capteur pour le portail ou le garage qui me renseigne de l'état réel, je ne vois pas comment l'implémenter.

En fait, le fait de passer par une action pour le bouton fait qu'on est obligé d'actionner une information sauf erreur de ma part.
Sauf qu'ici, j'aimerai que l'information soit récupérée d'un capteur.

Donc mise à part mettre deux informations, je ne vois pas comment faire ? Mais du coup, si je fais ça, aucun intérêt car l'état récupéré sur l'icone du bouton sera faussé...

Conclusion : je ne vois pas comment faire une action qui ne touche pas une information.
Je suis obligé de mettre quelque chose dans l'information pilotée depuis l'action.

Image

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

Re: Réaliser un bouton en info qui change d'état (icone)

Message par winhex » 21 avr. 2018, 21:25

sauf erreur de compréhension
c'est exactement se que fait jeedom en natif
les actions (lampes à allumé) quand on voit la lampes éteintes
l'info est caché

ton action étend normalement un bouton poussoir
donc l'affichage ouverture et fermeture de l'action auront la même action

un peu de lecture pour aider
viewtopic.php?f=29&t=34742&p=599429&hilit=tuto#p599429

en suivant le lien suivant
tu verras une commande info état
et 2 action identique (38 low pulse) pour ouvrir et fermé

imagine que tu veux ouvrir
iu verras icône/image de l'action fermé/ commande À
imagine que tu veux fermé
iu verras icône/image de l'action ouvert/ commande À
imagine qu'il y a eu une défaillance
l'icône ne change pas ou seulement quand l'action inverse sera réellement effectué

mon portail (ILS)
si il est ouvert il faudra 20s avant que l'icone/image change après que j'ai cliquer sur le portail ouvert

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 02 sept. 2018, 17:29

Je reviens sur ce sujet car j'avoue que je bloque... alors que j'avais fait plus dur.

Je souhaite juste faire un bouton mais ne pas mettre des icones de base... et ajouter d'autres icones.

J'ai voulu utiliser l'assistant ou regarder le code généré par défaut ... mais j'avoue que je ne vois à aucun moment l'appel de l'icone.

Si l'assistant, le meilleur code est un on/off ; aucun intérêt ici car je veux juste un bouton simple.

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#">
	<center>
		<span class="cmdName" style="font-weight: bold;font-size : 12px;display: none;">#valueName#</span><br>
		<span style="font-size: 2.5em; font-weight: bold; margin-top: 5px;" class="iconCmd"></span>
	</center>
<!-- Ne Pas Supprimer -->
	<script class="createWidgetInfo" type="text/javascript">//<![CDATA[{"type":"0","version":"1","size":"2.5","icon1":"<i class='icon animal-pig4'></i>","icon2":"<i class='icon divers-table29'></i>"}]]></script>
<!-- Ne Pas Supprimer -->
	<script>
	if(jeedom.cmd.normalizeName('#name#') == 'on'){
		$('.cmd[data-cmd_uid=#uid#] .iconCmd').append('<i class="icon divers-table29"></i>');
	}else{
		$('.cmd[data-cmd_uid=#uid#] .iconCmd').append('<i class="icon animal-pig4"></i>');
	}
	  
	jeedom.cmd.update['#id#'] = function(_options){
		if(jeedom.cmd.normalizeName('#name#') == 'on'){	
		  if(parseInt(_options.display_value) >= 1 ) {
			  $('.cmd[data-cmd_uid=#uid#]').hide();
		  }else{
			  $('.cmd[data-cmd_uid=#uid#]').show();
		  }
		}else{
		  if(parseInt(_options.display_value) <= 0 ) {
				$('.cmd[data-cmd_uid=#uid#]').hide();
			}else{
				$('.cmd[data-cmd_uid=#uid#]').show();
			}
		}
	}
	jeedom.cmd.update['#id#']({display_value:'#state#'});
	
	$('.cmd[data-cmd_uid=#uid#] .iconCmd').on('click', function () {
		jeedom.cmd.execute({id: '#id#'});
	});
	</script>
</div>
Et si j'utilise le code d'origine d'une commande (binaire) : par exemple, ici, j'ai un micro. Mais j'aimerai pouvoir modifier le code du widget pour faire appel à d'autres bibliothèques d'icones.

Image

Je ne vois aucun appel à une icone...

Code : Tout sélectionner

<span class="cmd reportModeHidden cmd-widget" style="display: inline !important;margin-right: 2px;" data-type="action" data-subtype="other" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
    <a class="btn btn-sm btn-default action cmdName tooltips" title="#name#" style="background-color:#cmdColor# !important;border-color : transparent !important;margin-top: 2px;">#name_display#</a>
    <script>
        $('.cmd[data-cmd_uid=#uid#]:last .action').off('click').on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
        if ($('.cmd[data-cmd_uid=#uid#]:last').prev().data('subtype') != undefined && $('.cmd[data-cmd_id=#id#]:last').prev().data('subtype') != 'other'
                && $('.cmd[data-cmd_uid=#uid#]:last').prev().css('display') != 'block') {
            $('.cmd[data-cmd_uid=#uid#]:last').prepend('<br/>');
        }
    </script>
</span>
Par exemple, j'aimerai utiliser :

https://material.io/tools/icons/

EDIT : il serait peut être intéressant d'inclure ce pack d'icones dans les icones de base disponibles dans le menu d'une commande.

Merci !

Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Réaliser un bouton en info qui change d'état (icone)

Message par Sartog » 02 sept. 2018, 18:38

@benj29,

Ton icone de micro correspond, dans le code html, à #name_display#
Cette balise affiche soit l'icône de la commande, soit le nom de la commande (si il n'y a pas d'icone).

L'ajout de la font Material est possible mais ça sautera à chaque MAJ du core.
Tu peux ajouter l'appel à la font Material en début de widget et faire appel à l'icône que tu souhaite via un tag personnalisé passé par "Paramètres optionnels du widget".

Tu aura un exemple ici, à adapter aux différentes MAJ du core : viewtopic.php?t=20597
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

benj29
Actif
Messages : 3983
Inscription : 26 mars 2017, 09:57
Contact :

Re: Réaliser un bouton en info qui change d'état (icone)

Message par benj29 » 02 sept. 2018, 18:42

Hurmf. Merci. Pas très pratique si changement à chaque update de core. Mais merci !

Envoyé de mon Moto G (5S) Plus en utilisant Tapatalk


Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: Réaliser un bouton en info qui change d'état (icone)

Message par Sartog » 02 sept. 2018, 18:43

benj29 a écrit :
02 sept. 2018, 18:42
Hurmf. Merci. Pas très pratique si changement à chaque update de core. Mais merci !

Envoyé de mon Moto G (5S) Plus en utilisant Tapatalk
Si tu fais ton appel à la font dans ton widget, ça ne sautera pas lors de la MAJ du core (me suis mal exprimé).
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

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

Re: Réaliser un bouton en info qui change d'état (icone)

Message par winhex » 02 sept. 2018, 20:46

sinon
pour l'instant les icones y sont toujours
via cette méthode avec video
viewtopic.php?p=601518#p601518
pourtant je crois avoir fait des maj
enfin j'ai oublié de l'avoir refait mais au cas j'ai un dossier perso ou y sont mes doubles

voir le plug aussi et là ?
Dernière édition par winhex le 02 sept. 2018, 21:11, édité 1 fois.

Répondre

Revenir vers « Discussions Générales »

Qui est en ligne ?

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