[TUTO] Popup dans un design

Je cherchais depuis quelques jours à masquer automatiquement le popup si personne ne clique dessus après x secondes.

Voilà la solution trouvée. Le popup se ferme automatiquement après 8 secondes après ouverture ou 8 secondes après le dernier clique effectué.

Voici les deux fonctions de personnalisation javascript que j’ai modifié:

function hide_equipements() {
       $('[data-plan_id="1073"]').hide();
       $('[data-plan_id="1074"]').hide();
       $("#page_clickable_tab").hide();
       clearTimeout(timeoutId);  //stop la fonction de fermeture auto
}

function show_equipement(id) {
       $('[data-plan_id="'+ id +'"]').show();
       $("#page_clickable_tab").show();
       timeoutId = setTimeout(() => {hide_equipements();},8000); //8000 [ms] = délai de fermeture du popup après son ouverture initial
}

Modifier l’élément texte/html qui permet de faire le mask (situé en haut à gauche de votre design normalement)

<div id="page_clickable_tab" onClick="hide_equipements();"></div>
<script>
  	var x = document.getElementById("mask_tab");
	window.onclick = resetTimeout;
  
	function resetTimeout() {
     	if (window.getComputedStyle(x).display === "block") {
          	if (typeof timeoutId !== 'undefined'){
            	clearTimeout(timeoutId); //reset di délai de fermeture en cas de click
            }
          	timeoutId = setTimeout(() => {hide_equipements();},8000); //8000 [ms] = délai de fermeture du popup après ée dernier click sur le dashboard
  		}
	}
</script>
3 « J'aime »

Si je comprends bien, tu souhaites que ton « arc en ciel » soit caché au départ (et donc apres un refresh), alors qu’il ne l’est pas (mais il l’est lorsque tu cliques sur ton background clicable).

Si c’est bien cela, je pense que tu as oublié de le mettre dans les éléments a masquer au départ
exemple du tuto dans le css:

([data-plan_id=« 1073 »],
[data-plan_id=« 1074 »]
{
display:none;
}

Personnellement ça ne marche pas avec une commande mais avec un équipement.

Même avec le

([data-plan_id=« 1073 »],
[data-plan_id=« 1074 »]
{
display:none;
}

Ca ne marche pas

Je viens de faire le test, pour une commande ça ne passe effectivement pas comme avec un équipement, par contre cela fonctionne en ajoutant le !important.

([data-plan_id=« 1073 »],
[data-plan_id=« 1074 »]
{
display:none !important;
}

1 « J'aime »

Salut à tous,

je souhaite déclencher un Show Equipment depuis un Scenario en plus de l’avoir au Click

j’ai fait diffèrent essais mais sans succès vous avez des pistes ?

ps: Dans mon cas ici j’affiche une icone mais transparente car je simule un clic sur un widget existant

Merci !

Merci pour ton code ! ca marche nickel ! par contre je me suis rendu compte que la partie code dans le mask situé en haut à gauche ne semble pas etre utile pour que cela fonctionne.
donc je tourne avec la partie javascript.

la partie code en haut me cause des erreur sur la page voir ci-desous

Merci pour le tuto, je ne sais pas si ça a été évoqué, mais pour le retour d’état de la commande popup j’ai affiché l’état de la lampe (ici) et superposé un bouton Blank.png qui est complêtement transparent.

Bonjour
Quand j’ouvre le design Les Popup sont ouverts pour pouvoir le fermer je suis obligé d’en activer 1 pour obtenir sa fermeture par un clic. Quand je navigue d’un design à l’autre = itou sur chaque design qui s’ouvre les Popup sont ouverts

Help !
Quid pour ne pas avoir les PopUp ouverts lors du passage d’un design à l’autre.

Merci encore a vous sans qui je n’en serai pas arrivé là en 2 mois.
J’ai bien apprécié les modifs avec le minuteur pour la fermeture automatique, qui quand j’ouvre un design ne fait pas son office.

Je poste une vidéo pour une meilleurs compréhension de mon problème. PopUp - YouTube

Cordialement à vous tous

Bonsoir

Encore merci à tous

J’ai résolu mon problème

J’ai fait les modifications suivantes.

Je n’ai rien inventé. Je suis incapable de programmer dans ces deux langages informatiques.

J’ai essayé de comprendre le fonctionnement et de redistribuer toutes ces lignes de codes.

Les numéros des « data-plan_id » sont spécifiques à chaque design. Un même widget ou virtuel aura un numéro différent dans chaque design. (Je suis nouveau. Donc je découvre. Fort de cette certitude j’ai redistribué les lignes de codes)

De la sorte je n’ai plus à ajouter des lignes de code dans le réglage système pour chaque évolution de ma domotique. Mais simplement tout jouer dans le design concerné.

//

Réglages ==> Système ==> Personnalisation avancée
Javascrip

function show_equipement(id) {
	$('[data-plan_id="'+ id +'"]').show();
	$("#page_clickable_tab").show();
    timeoutId = setTimeout(() => {hide_equipements();},10000); 
  	//10000 [ms] = 10s de délai pour une fermeture automatique du popup après son ouverture initial
}				

CSS

#page_clickable_tab {
  width:1830px;
  height:940px;
  background-color:rgba(26,26,26,0.85);
  display:none;
  cursor: pointer;
}		

//

Elément de mon design : Ajouter texte / html ==> Couleur de fond Transparent coché.

<style>
   [data-plan_id="192"], [data-plan_id="235"]
   {display:none;}
</style>

<script>
    function hide_equipements() {
      $('[data-plan_id="192"]').hide();

      $('[data-plan_id="235"]').hide();

      $("#page_clickable_tab").hide();
      clearTimeout(timeoutId);  //stop la fonction de fermeture auto
    }
</script>

<div id="page_clickable_tab" onClick="hide_equipements();"></div>

<script>
  	var x = document.getElementById("mask_tab");
	window.onclick = resetTimeout;

	function resetTimeout() {
     	if (window.getComputedStyle(x).display === "block") {
          	if (typeof timeoutId !== 'undefined'){
            	clearTimeout(timeoutId); //reset di délai de fermeture en cas de click
            }
          	timeoutId = setTimeout(() => {hide_equipements();},10000); 
            //10000 [ms] = 10s de délai avant fermeture automatique du popup après ée dernier click sur le dashboard
  		}
	}
</script>

Appel du widget caché

Elément de mon design : Ajouter texte / html ==> Couleur de fond Transparent coché. avec soit la ligne pour un icon, soit comme ici la ligne pour une image.

<div>
  <a onClick="show_equipement('192');">
    <!--<i id="light" class="fas fa-2x fa-lightbulb"></i>-->
    <img class="advanced_button_tab" src="data/img/Icones/Info2.png" />
  </a>
<div>
  

Merci à vous

Je vous mets un lien vers une nouvelle vidéo pour le résultat.

Donc, avant ==> PopUp - YouTube

Maintenant ==> PopUp 2 - YouTube

//

Je vous mets un lien vers une autre vidéo dans laquelle je montre comment j’ai apporté une solution au petit rectangle gris anthracite qui resté en permanence derrière mes icones dans les virtuels / widgets que je voulais transparents. Moins de blablas plus de démonstration ==> Icone transparent pour widget et virtuel - YouTube

Merci à vous :ok_hand:
Est-il possible d’introduire des lignes de codes pour pouvoir ouvrir ou non le PopUp selon l’état de l’équipement ? Si l’équipement est « Off » pas d’affiche (A quoi bon ! ) Mais affichage d’un message, exemple : « Equipement à l’arrêt »
Encore merci du boulot réalisé. Cela m’a super aidé!

Cool çà fonctionne super bien !!

juste un petit message d’erreur :

	TypeError: Window.getComputedStyle: Argument 1 is not an object.

Petit tips pour recuperer le dataplan-id il y a plus simple :
Configurer le design → composants.

Question : comment lancer le script « show_equipement(‹ xxx ›); » au changement de valeur d’un virtuel ?

Psst j’ai fait un truc super crade pour que ca declenche le popup sur modification d’un état.
Un widget standard et pour l’etat ou je veux que ca affiche la camera :

<script>show_equipement('230');<\/script><div style="font-weight: bold; font-size: 10px; color: #C0C0C0">#title#</div><img class='img-responsive' src='data/img/Basic_red_dot.png' width="10" height="10">

Bonjour,

je déterre le sujet pour vous demander si vous avez trouvez une solution car je suis exactement dans la même recherche.
Merci beaucoup

1 « J'aime »

Widget au survol perso et ça marche très bien. J’avais tenté le tuto lorsque j’ai fait ma migration sur le v4 mais j’avais des soucis sur les designs.


bonjour benj29, c’est en alerte le besoin

J’ai le même besoin. Le but est d’afficher une popup en cas d’alerte dans la maison avec un bouton pour masquer l’arlerte (pendant x minutes)
Exemple : la porte du frigo est ouverte depuis x minutes, j’affiche une alerte. Je clique sur OK pour masquer l’alerte quand elle est traitée.

j’ai joué avec, même si il y a plein de possibilités (bidouille)

tous comme afficher ou non une info de maniere global : avec l api PHP on joue avec (get/set) isvisible

l’api PHP plan fait le même taf de manière plus distinct (design)

devenu obselete suite MAJ jeedom

met une info (ex id283) sur ton design, va dans les param du design / list des équipement du design / config en bas tu as toutes les cmd (282,283,284) de l’équipement et tu peux cacher en cochant

pour une cmd ou info dans un scénario code plan::getid(id_ équipement_design)/setdisplay/cmdhide/283/1 pour cacher

le tuto via css (display:none) cache le data-plan l’api PHP le propose en natif sans css. c’est le scénario qui affiche. L’action du bouton ferai le contraire.

Je relance le sujet, parcequ’il m’a beaucoup aidé et je tourne avec cette solution depuis plusieurs mois. Mais je cherche à aller plus loin, sans y connaitre grand chose en programmation.

J’ai réussi à remplacer la couleur de fond par une image :

#page_clickable_tab {
  width:1200px;
  height:700px;
  /*background-color:rgba(0,0,0,1); */
  background-image: url("/data/img/Lumières.png");
  display:none;
  cursor: pointer;
}

Je cherche à afficher des images de fond différentes en fonction de la pop-up sur laquelle je clique.
L’idée, c’est de faire une sorte de menu (gestion des lumières, gestion des chauffages, gestion des paramètres, …) pour éviter le multi-pages avec ses temps de latence…

J’ai pas mal fouillé, essayé avec des « if » dans le code javascript, mais je suis un peu bloqué…

Quelqu’un a une solution ?

Merci :slight_smile: :slight_smile:

Bonsoir, j’ai essayé de créer un pop up mais ça ne fonctionne pas il me dit: ReferenceError: show_equipement is not defined

quand je clic sur le bouton pour afficher le popup.

le 1073 correspond a l’equipement que l’on souhaite ouvrir en popup ? mais le 1074 corrspond a quoi ?

merci d’avance

1 « J'aime »

Bonjour,

Excellent tuto, fonctionne parfaitement.
Cependant, serait-il possible d’afficher et de masquer un texte/html également (juste une histoire d’esthétisme).

Merci :wink:

Je me répond à moi-même:
La procédures est strictement identique « data-plan_id »

:joy:

Bonjour à tous.
J’utilise ce tuto pour mes popup depuis un certain temps, avec succès.
Je souhaite ajouter un nouveau popup, et, le temps de me replonger dans la marche à suivre, je galère à retrouver ce fameux « data-plan_id » Après avoir ajouté ma caméra sur le design, profondeur 3, je lance l’outil de développement et… pas moyen de trouver cet ID. C’est probablement une erreur tres tres bete de ma part, mais sans succès.
voici un screen de la balise div de la camera:

Merci par avance pour votre aide.
Joël