Afficher le nombre de mise à jour sur mon design

Bonjour à tous,

Cela fait un petit moment que je travail sur mon design et j’ai réussi à me débrouiller jusque la avec le forum et des tutos sur internet. Mais la, je bug.

Voila, j’aimerais afficher le nombre de mise à jours sur mon design, afin de savoir si une MAJ plugins ou core est disponible;
Capture

J’imagine que c’est possible (Jeedom est capable de tout - c’est assez impressionnant d’ailleurs).

Merci pour votre aide,
Bonne journée à tous,

Hello
dans la doc du core il y a la class update avec la méthode nbNeedUpdate()

$nbNeedUpdate = update::nbNeedUpdate();
message::add('Scénario ’ . $scenario->getHumanName(), $nbNeedUpdate);

j’ai fait avec un scénario test, ça me renvoi 0 donc je suppose que c’est bon

1 « J'aime »

Salut ddelec24,

Je suis encore un peu débutant. ^^ Tu pourrais me faire un print de ton scénario pour voir comment tu l’as effectué ?

Merci par avance,

@Patafoind je t’ai mis mon scénario en entier, cétait juste un test d’appel pour vérifier ce qui était dans la doc.

Plus simple pour toi, mais je ne sais pas si c’est la meilleure méthode car j’ai pas vraiment codé dans jeedom:

Sur ton design en édition tu fais « ajouter texte/html », click droit sur l’objet et paramètres d’affichage
tout en bas dans le champs tu mets ce code:

<span id="design_nbUpdates"></span>
<script> 
jeedom.update.number({
        success : function (_number) {
                $('#design_nbUpdates').html(_number);
        }
    });
</script>

c’est plus simple à personnaliser du coup. je n’ai pas fait de gestion d’erreur.
Dit moi si ça fonctionne comme tu souhaites :wink:

Bonjour,

Vraiment sympa ton petit code :+1:
Juste deux petites questions, pense tu qu’il soit possible que l’information soit invisible ou en transparent quand il n’y a pas de mise à jour et est il possible de faire la même chose avec les notifications?

Merci d’avance pour ta réponse.

1 « J'aime »

Prenez juste le code qui se trouve sur le dashboard :wink:
C’est d’ailleurs celui-là ou inspiré vu le code :relaxed:

1 « J'aime »

Bonjour Mpis,

Il y a un truc qui m’échappe Mips, comment je le récupère le code le code car j’ai beau chercher je trouve pas. Merci d’avance

c’est ça, jai pas trop vu la doc pour le javascript donc jai cherché sur github

@iPapy j’ai trouvé dans core/js/utils.js, j’ai d’ailleurs remis le code entier, gestion pour cacher si 0 et affichage de l’erreur si il y a

<span id="design_nbUpdates"></span> <br />
<span id="design_nbNotifs"></span>

<script> 
  jeedom.update.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#design_nbUpdates').hide();
      } else {
        $('#design_nbUpdates').html(_number).show();
      }
    }
  });
  
jeedom.message.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#design_nbNotifs').hide();
      } else {
        $('#design_nbNotifs').html(_number);
        $('#design_nbNotifs').show();
      }
    }
  });
</script>
2 « J'aime »

Merci à toi et à @Mips c’est nickel super les gars :+1: :+1: :+1:

1 « J'aime »

Salut,

Merci pour le code @ddelec24 ça m’a donné des idées j’en ai fait un widget :wink:

UpdatesWidget

Fait en speed il ne se met pas à jour automatiquement sans avoir à rafraîchir la page (pour le moment !) par contre le clic sur le bouton orange des messages ouvre la modale des messages et le clic sur le bouton rouge envoie vars la page des mises à jour.

Si ça vous dit de tester, il faut coller le code ci-dessous dans un widget code Info/Numérique et créer un commande virtuelle Info/Numérique sur laquelle appliquer le widget :

<div class="cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <div class="title #hide_name#">
    <div  class="cmdName">#name_display#</div>
  </div>
  <div class="content-md" style="padding:5px;">
	<a id="messageModal" style="padding:5px;">
	<span class="btn" id="messageWarning" title="Nombre de messages"></span>
	</a>
	<a href="index.php?v=d&p=update" style="padding:5px;">
	<span class="btn" id="updateDanger"  title="Nombre de mises à jour"></span>
    </a>
  </div>
<script> 
  jeedom.update.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#updateDanger').hide();
      } else {
        $('#updateDanger').html(_number).show();
      }
    }
  });
  
  jeedom.message.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#messageWarning').hide();
      } else {
        $('#messageWarning').html(_number);
        $('#messageWarning').show();
        $('#messageModal').on('click',function(){
  		$('#md_modal').dialog({title: "Message Jeedom"});
  		$('#md_modal').load('index.php?v=d&p=message&ajax=1').dialog('open');
		});
      }
    }
  });
</script>
<style>
#messageWarning {
  font-size:14px!important;
  background-color: rgb(195, 125, 40) !important;
  }
#updateDanger {
  font-size:14px!important;
  background-color: rgb(185, 58, 62) !important;
  }
</style>
</div>
5 « J'aime »

Tester chez moi Salvialf :slight_smile: manque plus que le rafraichissement :wink: Bravo

@iPapy & @ddelec24,

En y réfléchissant cette nuit je me suis dit qu’il était possible de mettre un cron sur le virtuel pour le rafraichissement ?!?

Qu’en pensez-vous ?

@Salvialf et un setInterval() dans le widget ?

Non ne faite pas ca, il y a déjà un système d’event dans jeedom, c’est comme ca qu’est géré l’info-bulle actuelle,
il suffit d’accrocher le même event le widget sera mis à jour, comme pour une commande info d’un équipement

Merci @Mips,

Dans la théorie c’est l’idée que j’en ai: utiliser le même suivi d’événement mais je n’y connais encore rien faut que je creuse. Ça se passe en ajax ?

Tu crois que tu peux me diriger vers un fichier jeedom où ça se passe que je puisse étudier la question?

Les 2 fonction js sont dans desktop\js\utils.js

function refreshMessageNumber() {
  jeedom.message.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      MESSAGE_NUMBER = _number;
      if (_number == 0 || _number == '0') {
        $('#span_nbMessage').hide();
      } else {
        $('#span_nbMessage').html(_number);
        $('#span_nbMessage').show();
      }
    }
  });
}

function refreshUpdateNumber() {
  jeedom.update.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      UPDATE_NUMBER = _number;
      if (_number == 0 || _number == '0') {
        $('#span_nbUpdate').hide();
      } else {
        $('#span_nbUpdate').html(_number);
        $('#span_nbUpdate').show();
      }
    }
  });
}

Et dans core\js\jeedom.class.js il y a l’event

  $('body').on('message::refreshMessageNumber', function (_event,_options) {
    refreshMessageNumber();
  });
  $('body').on('update::refreshUpdateNumber', function (_event,_options) {
    refreshUpdateNumber();
  });

Donc il devrait être possible d’avoir un widget ou tu accroches le même event mais qui lance une autre fonction « refresh » du widget

1 « J'aime »

Super merci @Mips je vais étudier ça !

Ah ben, après recherche, j’etais justement en train de vérifier la possibilité d’inclure ce code :slightly_smiling_face:

A voir ce qui est possible.

Encore merci @Mips ça fonctionne impec’ :+1:t4: !!! Moi qui était un peu faignant aujourd’hui, tu m’as bien rendu service en évitant de fouiller :grin:

Plus qu’à étudier la gestion des événements plus en détail maintenant :nerd_face:

@Patafoind, @iPapy, @ddelec24 :

Si ça vous dit de tester la version avec rafraîchissement automatique:

<div class="cmd cmd-widget" data-type="info" data-subtype="string" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <div class="title #hide_name#">
    <div  class="cmdName">#name_display#</div>
  </div>
  <div class="content-md" style="padding:5px;">
	<a id="messageModal" style="padding:5px;">
	<span class="btn" id="messageWarning" title="Nombre de messages"></span>
	</a>
	<a href="index.php?v=d&p=update" style="padding:5px;">
	<span class="btn" id="updateDanger"  title="Nombre de mises à jour"></span>
    </a>
  </div>
<script>
  /* Nombre de Messages */
  jeedom.message.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#messageWarning').hide();
      } else {
        $('#messageWarning').html(_number).show();
        $('#messageModal').on('click',function(){
  		$('#md_modal').dialog({title: "{{Centre de Messages}}"}).load('index.php?v=d&p=message&ajax=1').dialog('open');
		});
      }
    }
   });
    $('body').on('message::refreshMessageNumber', function (_event,_options) {
    jeedom.message.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#messageWarning').hide();
      } else {
        $('#messageWarning').html(_number).show();
      }
    }
   });
   });
  
  /* Nombre de Mises à jour */
  jeedom.update.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#updateDanger').hide();
      } else {
        $('#updateDanger').html(_number).show();
      }
    }
  });
  $('body').on('update::refreshUpdateNumber', function (_event,_options) {
    jeedom.update.number({
    error: function (error) {
      $('#div_alert').showAlert({message: error.message, level: 'danger'});
    },
    success : function (_number) {
      if (_number == 0 || _number == '0') {
        $('#updateDanger').hide();
      } else {
        $('#updateDanger').html(_number).show();
      }
    }
  });
  });
</script>
<style>
#messageWarning {
  font-size:14px!important;
  background-color: rgb(195, 125, 40) !important;
  }
#updateDanger {
  font-size:14px!important;
  background-color: rgb(185, 58, 62) !important;
  }
</style>
</div>

Ce serait sympa d’avoir vos retours mais de toute fa_çon je compte l’utiliser donc je lui ferait sûrement un post dédié si tout fonctionne comme voulu ce qui semble être le cas.
Pour info je l’ai passé en Info/String qui me paraissait plus judicieux que Info/Numérique mais on peut choisir ce qu’on veut.

3 « J'aime »