Page 1 sur 5

Mise à jour de widgets sans refresh

Publié : 22 déc. 2018, 09:14
par G0M
Bonjour à tous,

Je remarque que certains widgets dont l'état change se mettent à jour en temps réel sur le dashboard et sur le mode design alors que d'autres nécessitent un refresh de la page pour afficher leur nouvel état/valeur.

Quelle est la raison et y-a-t-il une astuce pour que les widgets fainéants se mettent à jour en temps réel?

Merci :)

Re: Mise à jour de widgets sans refresh

Publié : 22 déc. 2018, 11:00
par JAG
Salut
Le code des widgets a évolué
Beaucoup ne sont plus à jour, j’en ai refait qq que j’ai mis a dispo sur le market

Dis lequel ne marche pas et je regarderai si je peux les mettre à jour

Bonne journée


Envoyé de mon JAGiPhone en utilisant Tapatalk

Re: Mise à jour de widgets sans refresh

Publié : 06 mars 2019, 13:53
par celos
Bonjour,

J'ai un soucis de rafraichissement de widgets dans le design alors que dans le dashboard tout se passe bien.
Quelle est cette syntaxe à appliquer pour régler ce problème ?
J'ai adapté un widget à mon utilisation dont voici le code :

Code : Tout sélectionner

<div style="width:60px;min-height:30px;" class="cmd tooltips cmd-widget cursor" data-type="action" data-subtype="other" data-cmd_id="#id#">
    <center>
        
        <span style="font-size: 3em;font-weight: bold;margin-top: 5px;" class="action" id="iconCmd#id#"></span>
    </center>
 <script>
        if ('#displayName#' == 1 || '#displayName#' == '1')
            $('.cmd[data-cmd_id=#id#] .cmdName').show(); 
        else
            $('.cmd[data-cmd_id=#id#] .cmdName').hide();

        if ('#state#' == '1' || '#state#' == 1 || '#state#' == '99' || '#state#' == 99 || '#state#' == 'on') //off
            $('#iconCmd#id#').html("<img src='plugins/widget/core/template/dashboard/cmd.info.binary.Securite_Mouvement/mouv_off3.png'>");
         else 
            $('#iconCmd#id#').html("<img src='plugins/widget/core/template/dashboard/cmd.info.binary.Securite_Mouvement/mouv_on3.png'>");
        
        $('.cmd[data-cmd_id=#id#] .action').on('click', function () {
            jeedom.cmd.execute({id: '#id#'});
        });
   		
		jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
    </script>
</div>
Merci d'avance pour votre aide

Re: Mise à jour de widgets sans refresh

Publié : 06 mars 2019, 14:45
par Salvialf
Salut,

Le refresh devrait être identique sur le dashboard et sur le design selon moi... à part si tu utilises 2 navigateurs et/ou support différents (pc/tablette) auquel cas il faut s'intéresser au navigateur qui affiche le design à mon avis.

Il y a beaucoup de chose à revoir dans ton code notamment il manque la fonction d'update appelée au début du script:

Code : Tout sélectionner

jeedom.cmd.update['#id#'] = function(_options){
 XXXXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXX
 XXXXXXXXXXXXXX
 }
Tu devrais essayer de faire un nouveau widget action via l'assistant de création et t'en inspirer pour revoir ton code (parseInt, jeedom.cmd.normalizeName, _options.display_value, etc...)

Re: Mise à jour de widgets sans refresh

Publié : 06 mars 2019, 15:53
par celos
Merci pour ta réponse.
J'utilise le même navigateur pour visualiser le dashboard et le design (Safari sous mac) et dès qu'il y a une modification d'état ou de valeur le dashboard est mis à jour (même pour le widget avec le code ci-dessus) et pas le design
En ce qui concerne le code à revoir, l'assistant de création ne génère pas de code puisque c'est à moi de le saisir. Pourrais-je avoir un exemple de ce qu'il faut faire ?

Re: Mise à jour de widgets sans refresh

Publié : 06 mars 2019, 16:03
par Salvialf
Ce doit être parce que tu as les 2 onglets ouverts car les widgets réagissent de manière identique sur le design et sur le dashboard... Ou alors il y a quelque chose qui cloche sur ton design !

Je te confirme que l'assistant de création de widget intégré au plugin widgets génère bien du code en quelques secondes.

Widgets->Création Facile->WidgetOn-Off->Sélection 2 icônes et tada:
créationWidget.jpg
créationWidget.jpg (457.67 Kio) Consulté 1668 fois

C'est une bonne base pour comprendre le fonctionnement des widgets...

Re: Mise à jour de widgets sans refresh

Publié : 06 mars 2019, 17:33
par celos
Merci je vais essayer ça

Re: Mise à jour de widgets sans refresh

Publié : 13 mars 2019, 23:58
par dvb
Salut à tous,

Depuis Jeedom 3.3.x, j'ai des soucis de refresh avec ce widget volet roulant :
dashboard.info.numeric.StoresimpleIMG

Il ne se rafraichit plus tout seul, je suis obligé de faire un F5 :(

Ce widget ayant un look sympa, est-ce que quelqu'un pourrait corriger le code ?

Merci.
A+

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 13:41
par rootard
Hello @JAG
J'ai constaté que le widget du plugin officiel Agenda ne se met pas a jour automatiquement quand on ajoute ou on enleve une occurence:
[Objet][Equipement][Ajouter une date]
[Objet][Equipement][Retirer une date]

Il faut faire un refresh de la page

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 13:43
par JAG
Hello

Alors la je ne peux te répondre
Il faut voir avec l équipe jeedom si c’est un widget officiel




Envoyé de mon iPhone en utilisant Tapatalk

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 14:50
par Naboleo
dvb a écrit :
13 mars 2019, 23:58

Depuis Jeedom 3.3.x, j'ai des soucis de refresh avec ce widget volet roulant :
dashboard.info.numeric.StoresimpleIMG

Il ne se rafraichit plus tout seul, je suis obligé de faire un F5 :(
Salut,

Si tu utilise la version de "jayce", voilà le code "corrigé". Il marchotte bizarrement par contre

Code : Tout sélectionner

<div style="width:98px;min-height:90px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="#collectDate#">
    <center>
        <span style="font-size: 3.5em;" id="iconCmd#id#"></span>
    </center>
    <script>
    jeedom.cmd.update['#id#'] = function(_options){
        var state 	= parseFloat(_options.display_value);
        var niveau 	= 0;
        if(state == 0) {
            niveau = 0;
        } else if(state > 0 && state <= 35 ) {
            niveau = 10;
        } else if(state > 35 && state <= 45 ) {
            niveau = 20;
        } else if(state > 45 && state <= 55 ) {
            niveau = 30;
        } else if(state > 55 && state <= 63 ) {
            niveau = 40;   
        } else if(state > 63 && state <= 73 ) {
            niveau = 50;
        } else if(state > 73 && state <= 84 ) {
            niveau = 60;
        } else if(state > 84 && state <= 92 ) {
            niveau = 70;
        } else if(state > 92 && state <= 95 ) {
            niveau = 80;
        } else if(state > 95) {
            niveau = 99;
        }
        $('#iconCmd#id#').append('<img src="plugins/widget/core/template/dashboard/cmd.info.numeric.StoreIMG/Store-'+niveau+'.png" />');
    }
  </script>
</div>

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 14:52
par JAG
Ok
Merci pour le retour
Je le corrige dans l’am.




Envoyé de mon iPhone en utilisant Tapatalk

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 15:22
par rootard
ok j'ouvre un incident
JAG a écrit :
17 mars 2019, 13:43
Hello

Alors la je ne peux te répondre
Il faut voir avec l équipe jeedom si c’est un widget officiel




Envoyé de mon iPhone en utilisant Tapatalk

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 16:33
par dvb
@Naboleo et JAG,

Merci. Je viens de tester, il y a un petit bug.
A chaque rafraichissement, j'ai un nouvel icone qui s'ajoute au-dessous du précédent...
Image

Vous arrivez à reproduire ?

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 16:52
par JAG
Salut

A mon avis, c'est le code qui n'est pas à jour. Je viens rapidement de faire rapidement le code.

Le widget doit s'appeler "StoreIMG" (type= info, sous-type=numérique)

Merci de ton retour

Code : Tout sélectionner

<div style="padding:0;min-width:98px;min-height:90px;" class="cmd tooltips cmd-widget cursor container-fluid #history# " data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-eqLogic_id="#eqLogic_id#" data-eqLogic_id="#eqLogic_id#" title="#collectDate#">
 	<!-- Info Widget
		Basé sur les widget de 	: jayce
		Mise à jour				: JAG 20190317 : Création
	-->
	<center>
	<div class="row">
		<div class="cmdName" id="cmdName#id#" style="font-weight: bold;font-size : 10px; #hideCmdName#;">#name_display# </div>
		<div style="font-size: 2.5em;margin-top:5px;" class="iconCmd"></div>
      	<div style="vertical-align: middle; text-align: center; margin-top: 0px; font-size: 12px; height: 18px;">#state##unite#</div>
      	<!-- Historique -->
      		<div style="#displayHistory# font-size : 10px;margin-top:0px;">
      			<span title="Min" class="tooltips">#minHistoryValue##unite#</span>|<span title="Max" class="tooltips">#maxHistoryValue##unite#</span> <i class="#tendance#"></i>
      		</div>
	</div>
	</center>
   	<script>
		// Options de personnalisation avec valeur par defaut
          // Paramètre "sizehw" : à déclarer en pixels - 80 maxi
              	var srcImgHeight 	= (is_numeric('#sizeh#')) 	? parseFloat('#sizeh#') 	: 90;
              	var srcImgWidth		= (is_numeric('#sizew#')) 	? parseFloat('#sizew#') 	: 90;
        // Paramétrage des images
              	var srcImgURL 		= 'plugins/widget/core/template/dashboard/cmd.info.numeric.StoreIMG/';
      			var srcImglogo		= ('#logo#'!='#'+'logo#') ? "#logo#" : "Store-";
      // Update
			var iconUpdate = function (state){
                $('.cmd[data-cmd_uid=#uid#] .iconCmd').empty();
                if (state == 0 ) {
                    level 		= 0;
                } else if (state > 0  && state <= 35 ) {
                    level 		= 10;
                } else if (state > 35 && state <= 45) {
                    level 		= 20;
                } else if (state > 45 && state <= 55) {
                    level 		= 30;
                } else if (state > 55 && state <= 63) {
                  	level 		= 40;
                } else if (state > 63 && state <= 73 ) {
                  	level 		= 50;
                } else if (state > 73 && state <= 84) {
                  	level 		= 60;
                } else if (state > 84 && state <= 92) {
                  	level 		= 70;
                } else if (state > 92 && state <= 95) {
                  	level 		= 80;
                } else if (state > 95 ) {
                  	level 		= 99;
                } else {
                  	level 		= 0;
                }
              	// Update Value or img
                   $('.cmd[data-cmd_uid=#uid#] .iconCmd').html('<img src="'+srcImgURL + srcImglogo +level+ '.png" style="height:' + srcImgHeight +'px;width:' + srcImgWidth +'px;">'); 

			$('.cmd[data-cmd_uid=#uid#] .state').text(state);
			};
	jeedom.cmd.update['#id#'] = function(_options){
		$('.cmd[data-cmd_uid=#uid#]').attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate)
		iconUpdate(_options.display_value);
	}
	jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
	</script>
</div>

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 17:00
par dvb
J'essaie de faire le ménage avant, car je vois des doublons :
Image

J'ai viré un widget à la main mais je n'aurais pas du. A chaque fois que je tente une désinstallation via le market, j'ai ces erreurs ?
Image
Image

Une idée de comment nettoyer proprement ?
Juste après, je reteste le nouveau code ...

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 17:01
par dvb
PS : voilà tout ce que j'ai :
Image

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 17:08
par JAG
Essaye de rafraichir ton navigateur, car le "dashboard.info.numeric.StoresimpleIMG" je viens de le telecharger afin de te faire une maj.

Tu peux regarder dans le "centre de mise à jour" et dans l'onglet "Autres", regarde si tu vois les widgets en question, si oui supprime avec le BP

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 17:13
par Naboleo
Il doit y a voir un délai de propagation, moi aussi pour l'instant je ne vois rien

Re: Mise à jour de widgets sans refresh

Publié : 17 mars 2019, 17:18
par JAG
Juste pour info, je n'ai pas fait une mise à jour du widget "dashboard.info.numeric.StoresimpleIMG" sur le market car il ne m'appartient pas. je vous ai juste proposé un code pour le corrigé