Design en 4.4 depuis la 4.3

J’ai déjà fait le CTRL+F5.
Avant les boutons sur la copie d’écran précédente était tous sur la même ligne. Là on voit bien qu’ils se mettent en ligne.

Je te remercie, mais en fait, je pense que j’ai plein de widgets qui sont en rade… quand on regarde.

Le DOT (multi LED à couleur) est KO aussi.
image

<div style="margin:0px; padding:0px; width:40px; height: 28px;" class="cmd #history# container-fluid tooltips cmd-widget netatmodisplay" data-type="info" data-version="#version#" data-eqLogic_id="#eqLogic_id#" data-subtype="other" data-cmd_id="#id#"   data-cmd_uid="#uid#">

<!--
https://github.com/Desaydrone/jeedom_v4_widget/blob/master/dashboard/tarlak_dot_binary_state.html
Maj: 28 04 2020 14:13:13
Tarlak :
Version  0.1 :
Avec l'aide de Domotech pour l'amélioration css, grand merci a lui : http://youtube.com/domotech
** Paramètres option du widget
blink : si valeur à 1 alors la pastille rouge ne clignotera plus
-->

  <div class="led#id#">

  </div>

<style>
  :root {
    --couleuractualisee#id#: #838383;
    --rouge: #da3037;
    --vert: #30b455;
    --gris: #838383;
    --noir: #000000;
    --blanc: #ffffff;
    --offset: -8px;
    --element-size: 8px;

  }

  @keyframes glowing {
    0% {
      box-shadow: 0 0 -10px var(--blanc);
    }

    40% {
      box-shadow: 0 0 20px var(--blanc);
    }

    60% {
      box-shadow: 0 0 20px var(--blanc);
    }

    100% {
      box-shadow: 0 0 -10px var(--blanc);
    }
  }

  @-webkit-keyframes blinker {
    from {
      opacity: 1.0;
    }

    to {
      opacity: 0.0;
    }
  }

  .led#id# {
    position: relative;
    margin: 1em;
    width: var(--element-size);
    height: var(--element-size);
    border-radius: 50%;
    color: #fff;
    background: var(--couleuractualisee#id#);
    line-height: var(--element-size);
    border: 3px solid var(--couleuractualisee#id#);
    text-align: center;
  }

  .led#id#:after {
    content: '';
    position: absolute;
    top: var(--offset);
    bottom: var(--offset);
    left: var(--offset);
    right: var(--offset);
    border-radius: 50%;
    border: 2px solid var(--couleuractualisee#id#);
  }

</style>
<script>
  jeedom.cmd.update['#id#'] = function(_options) {
    var cmd = $('.cmd[data-cmd_id=#id#]');
    var blink#id# = ('#blink#'   !='#'+'blink#') ?   parseInt("#blink#")  :0;

    // Récupération des valeurs
    var valeur = _options.display_value;

    if (valeur == 0) {
      document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--rouge');
      if (blink#id#==0)
      {
        cmd.find('.led#id#').css('animation', 'blinker 0.8s linear infinite');
      }
    } else if (valeur == 1) {
      document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--vert');
      cmd.find('.led#id#').css('animation', 'none');
    }
    $('.cmd[data-cmd_id=#id#]').attr('title', 'Valeur du ' + _options.valueDate + ', collectée le ' + _options.collectDate);
  }
  jeedom.cmd.update['#id#']({
    display_value: '#state#',
    valueDate: '#valueDate#',
    collectDate: '#collectDate#',
    alertLevel: '#alertLevel#'
  });
</script>
</div>

Je vais voir déjà si j’arrive à jouer du colspan - ce dernier n’était pas compatible avec ce widget à l’époque (salviaf avait regardé).

Toujours les mêmes classes du core (cmd-widget et container-fluid) ) qui imposent un largeur mini ou des marges G D importantes.
Je ne suis pas non plus fan de la modification d’attributs à la racine du document.

Utilisez les widgets du core. ( S’ils existent :thinking:)

Vous les avez mis dans la même cellule ?
image
Ou dans des cellules différentes:
image

Bon, après quelques modifications :
image

Par contre, je continue à utiliser ce code pour la colorisation en fonction des niveaux. Je vais voir pour passer sur un widget propre du core mais je me rappelle qu’il y avait un souci.

Oui, dans la même cellule. Il faut tout reprendre avec colspan et rowspan. C’est peut être mieux comme cela. Mais je vais surtout passer sur des widgets du core car sincèrement ça sera la dernière fois que je fais ce type de correction donc je veux que ce soit pérenne.

J’utilise ce widget à plusieurs sauces et pour le coup, il est vraiment plus compliqué à mettre en place en widget core… lol.

Un exemple :

<div class="cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-template="line" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
	<div class="content-xs">
		<span class="cmdNameColor#id# cmdName #hide_name#">#name_display# </span><span class="valueColor#id# value">#state#</span><span class="uniteColor#id# unite"> #unite#</span>
	</div>	
  <style>
    .cmdNameColor#id# {
      font-size: 12px;
    }
    .valueColor#id# {
      font-size: 12px;
    }
    .uniteColor#id# {
      font-size: 12px;
    }
</style>
	
	<script>
		jeedom.cmd.update['#id#'] = function(_options) {
			var cmd = $('.cmd[data-cmd_id=#id#]')
			
			//Définition des paramètres et couleurs par défaut et définition des limites par défaut
            //Sinon à passer en paramètres !
            
            var saison = is_numeric('#saison#') ? parseFloat('#saison#'):0;
            
			var color1 = ('#color1#' != '#' + 'color1#') ? "#color1#" : "#5078aa";
			var color2 = ('#color1#' != '#' + 'color1#') ? "#color2#" : "#acacac";
			var color3 = ('#color1#' != '#' + 'color1#') ? "#color3#" : "#ff8c00";
			
            var AppliedColor = ('#AppliedColor#' != '#' + 'AppliedColor#') ? "#AppliedColor#" : "#FFFFFF";
            
			var limit = is_numeric('#limit#') ? parseFloat('#limit#'):15;
            var range1 = is_numeric('#range1#') ? parseFloat('#range1#'):1;
            var range2 = is_numeric('#range2#') ? parseFloat('#range2#'):2;
            var valeur = Math.round(parseFloat(_options.display_value));
          	
          

          	//Fonctionne sur un range +/-1 ; +/-2 ; à défaut hors range
          	//Chauffage = 0 on regarde si inférieur uniquement
          
            if (saison == 0) {
                var limit1 = limit-range1;
            	var limit2 = limit-range2;
               	if (valeur >= limit1) {
            	   	AppliedColor = color1;          
         	   	} 
               	else if ((valeur >= limit2) && (valeur < limit1)) {
                   	AppliedColor = color2;            
               	} 
               	else {
                   	AppliedColor = color3;            
               	} 
        	}
          	//Arrêt = 1 on regarde si inférieur et supérieur
          	else if (saison == 1) {
                var limit1i = limit-range1;
            	var limit2i = limit-range2;
				var limit1s = limit+range1;
            	var limit2s = limit+range2;
			   	if ((limit1i <= valeur) && (valeur <= limit1s)) {
                	AppliedColor = color1;          
            	} else if ((limit2i <= valeur) && (valeur <= limit2s)) {
                	AppliedColor = color2;            
            	} else {
                	AppliedColor = color3;            
            	}       
      		}
            //Clim = 2 on regarde si supérieur uniquement
            else if (saison == 2) {
                var limit1 = limit+range1;
            	var limit2 = limit+range2;
               	if (valeur <= limit1) {
            	   	AppliedColor = color1;          
         	   	} 
               	else if ((valeur > limit1) && (valeur <= limit2)) {
                   	AppliedColor = color2;            
               	} 
               	else {
                   	AppliedColor = color3;            
               	} 
        	}
            //Debug au cas où on fixe une couleur bien lisible !
            else {
                   	AppliedColor = "#2B140E";            
                 }      
          
            
			cmd.find('.cmdNameColor#id#').attr('style', 'color: ' + AppliedColor + ';');
			cmd.find('.valueColor#id#').attr('style', 'color: ' + AppliedColor + ';');
			cmd.find('.uniteColor#id#').attr('style', 'color: ' + AppliedColor + ';');
            
			cmd.attr('title','Date de valeur : '+_options.valueDate+'<br/>Date de collecte : '+_options.collectDate)
			//cmd.find('.state').empty().append(_options.display_value);
          	cmd.find('.value').empty().append(valeur);
			if(_options.alertLevel){
				if(_options.alertLevel == 'warning'){
					cmd.find('.content-xs').addClass('label label-warning')
					cmd.attr('data-alertlevel','warning');
				}else if(_options.alertLevel == 'danger'){
					cmd.find('.content-xs').addClass('label label-danger')
					cmd.attr('data-alertlevel','danger');
				}else{
					cmd.find('.content-xs').removeClass('label label-warning label-danger')
					cmd.attr('data-alertlevel','none');
				}
			}
		}
		jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'})
	</script>
</div>

Il serait possible de le corriger ?

En l’état, je n’ai pas de souci à l’affichage, mais je préfère demander au cas où.

Ce n’était pas le cas, il y a quelques heures:
image
Le widget que j’ai corrigé a toujours occupé toute la largeur de la cellule. Un 2ème widget provoque un saut de ligne.

Rien d’urgent si le widget line avec couleur et range fonctionne.
Il utilise jQuery. Il sera à reprendre lorsque Jeedom décidera de supprimer son chargement par le core…

Cela dépend des tableaux que j’ai fait. Certains étaient dans la même cellule, d’autres pas.
Merci pour ton aide.
Je vais reprendre peu à peu, mais c’est un travail de dingue :frowning: pas glop du tout…

Par contre, j’ai un souci sur « binary switch » du core.
Il prend une place de dingue.

Presque le double d’avant.

Si je le remplace par un Toggle, beaucoup moins joli, le tableau prend bien une taille minimale.
J’ai cherché sur le forum et personne n’a rencontré cela, après c’est vrai que la tendance est de faire des images avec des interr pour designer ce qu’on utilise, mais je trouve ce widget simple et efficace.

image

Oui, il est très large.
133px:
image

C’est des impositions du core:
image
C’est pas du xs, c’est du 2xl.

1 « J'aime »

Il ne l’était pas à ce point avant. Cf mon design en 4.x
Il faudrait mettre quel code en personnalisation pour le réduire ?

C’est pour écrire le nom à gauche. Toujours dans les 133px.
image

1 « J'aime »

Je ne trouve pas la propriété à modifier pour réduire la largeur pour le CSS avancé.

J’aurai cru que c’était .content-xs mais j’ai beau mettre width à une valeur basse, il me modifie tout.
On ne peut pas forcer la propriété uniquement pour le bouton ?

Une idée ?

div.cmd-widget .content-xs {
 min-width: 5px;
  width: 50px;
}

Comme écrit plus haut, je déteste les perso avancées.
Je vous propose un widget à placer dans data/customTemplates/dashboard
Ca aurait pu être fait par un paramètre optionnel du widget binarySwitch du core.

Son nom est cmd.action.other.binarySwitchLabelOnTop.html à affecter aux commandes en remplacement du binarySwitch trop large.

Le code de binarySwitchLabelOnTop
<div class="cmd cmd-widget cursor" data-type="action" data-subtype="other" data-template="binarySwitchLabelOnTop" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <div class="binarySwitchLabelOnTop">
    <span class="cmdName #hide_name#">#valueName#<br></span>
    <label  style="margin-top:3px;" class="binarySwitch tooltips" title="#name#">
      <input type="checkbox" class="binarySwitch">
      <span class="binarySwitch execute">
        <span class="binarySwitchHandle"></span>
      </span>
    </label>
  </div>
  <div class="timeCmd label label-default #value_history#" data-type="info" data-cmd_id="#value_id#"></div>
  <template>
    <div>color : rgb(20,20,20) ({{couleur d'arrière plan}})</div>
    <div>color_switch : rgb(230,230,230) ({{couleur de la pastille}})</div>
    <div>time : duration|date ({{Affiche durée ou date de la valeur}})</div>
  </template>
  <script>
    document.querySelector('.cmd[data-cmd_uid=#uid#] .execute').addEventListener('click', function(event) {
      jeedom.cmd.execute({ id: '#id#' })
      event.preventDefault()
      event.stopPropagation()
    })

    jeedom.cmd.addUpdateFunction('#id#', function(_options) {
      if (is_object(cmd = document.querySelector('.cmd[data-cmd_uid="#uid#"]'))) {
        if ('#time#' == 'duration' || '#time#' == 'date') {
          jeedom.cmd.displayDuration(_options.valueDate, cmd.querySelector('.timeCmd'), '#time#')
        }

        if (_options.display_value >= 1 || _options.display_value == 'on') {
          if (jeedom.cmd.normalizeName('#name#') == 'on') {
            cmd.unseen()
          } else {
            cmd.seen()
            cmd.querySelector('input.binarySwitch').checked = true
          }
        } else {
          if (jeedom.cmd.normalizeName('#name#') == 'off') {
            cmd.unseen()
          } else {
            cmd.seen()
            cmd.querySelector('input.binarySwitch').checked = false
          }
        }

        if (cmd.querySelector('.cmdName').hasClass('hidden')) {
          cmd.querySelector('.binarySwitchLabelOnTop').style.justifyContent = 'center'
        }
      }
    })

    jeedom.cmd.refreshValue([{ cmd_id: '#id#', display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#', unit: '#unite#' }])

    if (domUtils.issetWidgetOptParam('#color#', 'color')) {
      document.querySelector('.cmd[data-cmd_uid="#uid#"] span.binarySwitch').style.backgroundColor = '#color#'
    }
    if (domUtils.issetWidgetOptParam('#color_switch#', 'color_switch')) {
      document.querySelector('.cmd[data-cmd_uid="#uid#"] span.binarySwitchHandle').style.setProperty('background-color', '#color_switch#', 'important')
    }
  </script>
</div>

Ca donne ça:
BinarySwitch

Largeur 80px

1 « J'aime »

Merci je l’ai intégré et modifié pas mal de trucs pour en arriver là.
Grâce à toi.

image

J’essaie de limiter l’appel à des widgets ou de passer par ceux du core dans l’idéal ; mais il y en a qui me fait cruellement défaut…

Si une âme charitable veut bien le reprendre, il prend beaucoup de place en largeur et n’est plus forcément compatible avec la 4.4.

image

La LED est colorisable, et il clignote (on peut faire blanc, rouge, vert etc). Très pratique.

<div style="margin:0px; padding:0px; width:85px; height: 40px;" class="cmd #history# container-fluid tooltips cmd-widget netatmodisplay" data-type="info" data-version="#version#" data-eqLogic_id="#eqLogic_id#" data-subtype="other" data-cmd_id="#id#"   data-cmd_uid="#uid#">

<!--
https://github.com/Desaydrone/jeedom_v4_widget/blob/master/dashboard/tarlak_dot_binary_state.html
Maj: 28 04 2020 14:13:13
Tarlak :
Version  0.1 :
Avec l'aide de Domotech pour l'amélioration css, grand merci a lui : http://youtube.com/domotech
** Paramètres option du widget
blink : si valeur à 1 alors la pastille rouge ne clignotera plus
-->

  <div class="led#id#">

  </div>
<div class="NomCmd #hide_name#">#name_display#</div>


<style>
  :root {
    --couleuractualisee#id#: #838383;
    --rouge: #da3037;
    --vert: #30b455;
    --gris: #838383;
    --noir: #000000;
    --blanc: #ffffff;
    --offset: -8px;
    --element-size: 8px;

  }

  @keyframes glowing {
    0% {
      box-shadow: 0 0 -10px var(--blanc);
    }

    40% {
      box-shadow: 0 0 20px var(--blanc);
    }

    60% {
      box-shadow: 0 0 20px var(--blanc);
    }

    100% {
      box-shadow: 0 0 -10px var(--blanc);
    }
  }

  @-webkit-keyframes blinker {
    from {
      opacity: 1.0;
    }

    to {
      opacity: 0.0;
    }
  }

  .led#id# {
    position: relative;
    margin: 1em;
    width: var(--element-size);
    height: var(--element-size);
    border-radius: 50%;
    color: #fff;
    background: var(--couleuractualisee#id#);
    line-height: var(--element-size);
    border: 3px solid var(--couleuractualisee#id#);
    text-align: center;
  }

  .led#id#:after {
    content: '';
    position: absolute;
    top: var(--offset);
    bottom: var(--offset);
    left: var(--offset);
    right: var(--offset);
    border-radius: 50%;
    border: 2px solid var(--couleuractualisee#id#);
  }

  div.NomCmd {
    font-size: 1em;
    font-weight: bold;
    position: absolute;
    vertical-align: bottom;
    top: 65%;
    left: 0%;
    z-index: 2;
    padding: 0px;
    margin: 0px;
    width: 85px;
    height: 25px;
  }
</style>
<script>
  jeedom.cmd.update['#id#'] = function(_options) {
    var cmd = $('.cmd[data-cmd_id=#id#]');
    var blink#id# = ('#blink#'   !='#'+'blink#') ?   parseInt("#blink#")  :0;

    // Récupération des valeurs
    var valeur = _options.display_value;

    if (valeur == 0) {
      document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--rouge');
      if (blink#id#==0)
      {
        cmd.find('.led#id#').css('animation', 'blinker 0.8s linear infinite');
      }
    } else if (valeur == 1) {
      document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--vert');
      cmd.find('.led#id#').css('animation', 'none');
    }
    $('.cmd[data-cmd_id=#id#]').attr('title', 'Valeur du ' + _options.valueDate + ', collectée le ' + _options.collectDate);
  }
  jeedom.cmd.update['#id#']({
    display_value: '#state#',
    valueDate: '#valueDate#',
    collectDate: '#collectDate#',
    alertLevel: '#alertLevel#'
  });
</script>
</div>

Bonjour,
Celui là a résisté un peu plus. Il utilise encore jQuery.

Code du widget cmd.info. ( numeric ou binary? ).sonNomAdefinir.html
Code supprimé. Evolution en cours. Utilisait jQuery.
Si besoin, il est récupérable dans l'historique de ce post.

Largeur mini 80px

Led

Il ne fait que vert fixe et rouge clignotant. Je ne vois pas le code qui changerait la couleur.
Comment la changez-vous?
Il faut aussi mettre le paramètre blink à 1 pour arrêter le clignotement :thinking:
C’est un numeric ou un binary ?
Vous êtes certain d’avoir fourni le code du bon widget ?

1 « J'aime »

Merci, top ;).
image

J’avais modifié le code pour changer la couleur directement (pour le givre) et ensuite j’avais fait un numeric pour l’alerte météo.
Je vais me débrouiller, tu as déjà bien bossé.

les couleurs sont définies là :

--rouge: #da3037;
--vert: #30b455;
--gris: #838383;
--noir: #000000;
--blanc: #ffffff;  

Il me suffisait de les changer sur la partie if et d’ajouter le bleu #5078aa

J’en ai d’autres que j’avais construit à l’époque plus simple sur la base d’icones.

  • climatisation, chauffage, rien (quand clim c’est bleu avec snow)
    image
  • indice UV avec couleur et soleil
    image
  • et le multiline que j’utilisais beaucoup pour coloriser en fonction de plusieurs valeurs
    image
  • un pourcentage avec colorisation pour évaluer deux valeurs (si production ou consommation ça s’inverse)
    image

Grâce à ton travail, je rajoute deux widgets au cas où pour quelqu’un qui fait une pierre deux coups. Givre (1) et alerte météo (2 à 4)

  • cette même LED qui clignote en fonction du niveau d’alerte météo.
    0 = vert
    1 = bleu clignotement
    2 = jaune fixe
    3 = orange clignotement
    4 = rouge clignotement

cmd.info.numeric.Info dot meteo

Code du widget
<div style="margin:0px; padding:0px; width:40px; height: 28px;" class="cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-template="line" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">

<!--
https://github.com/Desaydrone/jeedom_v4_widget/blob/master/dashboard/tarlak_dot_binary_state.html
Maj: 28 04 2020 14:13:13
Tarlak :
Version  0.1 :
Avec l'aide de Domotech pour l'amélioration css, grand merci a lui : http://youtube.com/domotech
** Paramètres option du widget
blink : si valeur à 1 alors la pastille rouge ne clignotera plus*
Maj: 25 01 2025 Passage à Jeedom 4.4
-->

  <div class="led#id#">

  </div>

<style>
  :root {
    --couleuractualisee#id#: #838383;
	--orange: #FFB82B;
    --rouge: #da3037;
	--jaune: #FFF600;
    --vert: #30b455;
    --gris: #838383;
    --noir: #000000;
    --blanc: #ffffff;
	--bleu: #5078AA;
    --offset: -8px;
    --element-size: 8px;

  }

  @keyframes glowing {
    0% {
      box-shadow: 0 0 -10px var(--blanc);
    }

    40% {
      box-shadow: 0 0 20px var(--blanc);
    }

    60% {
      box-shadow: 0 0 20px var(--blanc);
    }

    100% {
      box-shadow: 0 0 -10px var(--blanc);
    }
  }

  @-webkit-keyframes blinker {
    from {
      opacity: 1.0;
    }

    to {
      opacity: 0.0;
    }
  }

  .led#id# {
    position: relative;
    margin: 1em;
    width: var(--element-size);
    height: var(--element-size);
    border-radius: 50%;
    color: #fff;
    background: var(--couleuractualisee#id#);
    line-height: var(--element-size);
    border: 3px solid var(--couleuractualisee#id#);
    text-align: center;
  }

  .led#id#:after {
    content: '';
    position: absolute;
    top: var(--offset);
    bottom: var(--offset);
    left: var(--offset);
    right: var(--offset);
    border-radius: 50%;
    border: 2px solid var(--couleuractualisee#id#);
  }

</style>
<script>
  jeedom.cmd.update['#id#'] = function(_options) {
    var cmd = $('.cmd[data-cmd_id=#id#]');
    var blink#id# = ('#blink#'   !='#'+'blink#') ?   parseInt("#blink#")  :0;

    // Récupération des valeurs
    var valeur = _options.display_value;

	if (valeur == 0) {
				// pas de clignotement, affichage d'une LED vert !
				document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--vert');
				cmd.find('.led#id#').css('animation', 'none');
		  }
    else if (valeur == 1) {
				// clignotement, affichage d'une LED bleu !
				document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--bleu');
				if (blink#id#==0)
				{
				cmd.find('.led#id#').css('animation', 'blinker 0.8s linear infinite');
				}
		  }
	else if (valeur == 2) {
				// pas de clignotement, affichage d'une LED jaune !
				document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--jaune');
				cmd.find('.led#id#').css('animation', 'none');
		  }
	else if (valeur == 3) {
				document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--orange');
				if (blink#id#==0)
				{
				cmd.find('.led#id#').css('animation', 'blinker 0.8s linear infinite');
				}
		  }
	else if (valeur == 4) {
				document.documentElement.style.setProperty('--couleuractualisee#id#', 'var(--rouge');
				if (blink#id#==0)
				{
				cmd.find('.led#id#').css('animation', 'blinker 0.8s linear infinite');
				}
		  }	 
    $('.cmd[data-cmd_id=#id#]').attr('title', 'Valeur du ' + _options.valueDate + ', collectée le ' + _options.collectDate);
  }
  jeedom.cmd.update['#id#']({
    display_value: '#state#',
    valueDate: '#valueDate#',
    collectDate: '#collectDate#',
    alertLevel: '#alertLevel#'
  });
</script>
</div>

Il faudra juste un scénario pour « capter » et traduire votre alerte météo avec le bon nombre.
Par exemple :


Pour les alertes météo j’utilise ce que j’ai fait dans Météo France ou le widget que j’ai ajouté dans la dernière version de plugin-weatherforecast
image

Pour ma part, je mets la LED en fonction de l’alerte et si je clique dessus, ça ouvre le widget en question.

Il y a quand même des trucs que je ne m’explique pas.
Je suis passé au rowspan et colspan car avant mes widgets quand je mettais deux infos prenaient deux lignes.
Je n’ai pourtant rien changé et les tableaux prennent beaucoup plus de place.

image

Il faudrait presque faire sauter 2 lignes pour avoir la même occupation que l’ancien qui aurait deux lignes de plus. Sachant que j’ai réduit la hauteur de ton widget car sinon il prenait vraiment beaucoup.

Pouvez-vous montrer ce vous faites avec rowspan et colspan en mettant dans le style des cellules du tableau border: 1px dotted white;
image

Sur une capture d’écran, impossible de voir les fusions de cellule faites sans afficher les bordures.