Design en 4.4 depuis la 4.3

Bonjour,

Je dois être parmi les derniers, mais j’ai fait ma mise à jour du 4.3 vers la dernière version en 4.4.19 et tous les plugins qui bloquaient sur la version non 4.4.

Bon, sans surprise, tous mes designs sont en l’air. Mais il est agréable de voir que Jeedom a gagné en rapidité ! Belle avancée, bravo.

Je vais reprendre tous mes designs, objets progressivement et j’aimerai me servir de ce topic pour mes questions.

Premier constat, un tableau classique.
Je n’arrive pas à réduire les colonnes :

J’ai tenté en ajoutant width:20px; par exemple (sur une case ou toute la colonne), rien n’y fait, la colonne reste fixe. Comment faire ?

J’ai vérifié dans le widget que j’utilise pour coloriser les températures, etc, il n’y a pas de notion de taille de widget. Le widget date un peu. Y a t’il une meilleure méthode que celle que j’utilisais à l’époque ?

<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>

Pareil pour le widget button qui me permet d’afficher un bouton clickable, y a t’il mieux ?

<!--
  Widget name : multi_icon_switch_mmi
  Author : geqr
  Website : www.ma-maison-intelligente.fr
  Tutorial : http://ma-maison-intelligente.fr/2020/04/widget-multi-icone-pour-votre-design-jeedom/
  Last Update : 20200426 - update to remove root properties when parameters are passed
 -->

 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">

 <div id='button-#id#'
      class="cursor cmd tooltips cmd-widget container-fluid"
      onClick="jeedom.cmd.execute({id: '#id#'});"
      data-type="action" data-cmd_id="#id#" data-cmd_uid="#uid#">

   <div class="button">
     <i id="icon-#id#" class="fa fa-lock"></i>
   </div>
 </div>

 <style type="text/css">

   --root: {
     --button_width: 60px;
     --border_size: 3px;
     --button_color: grey;
     --icon_size:30px;
   }

   .button i.fa, .button i.fas, .button i.fab {
     line-height:calc(var(--button_width) - var(--border_size) - var(--border_size));
     color: var(--button_color);
   }

   .button {
     box-sizing: border-box;
     border: var(--border_size) solid var(--button_color);
     border-radius: var(--button_width);
     color: var(--button_color);
     width: var(--button_width);
     height: var(--button_width);
     display: block;
     text-align: center;
     cursor: pointer;
     font-size: var(--icon_size);
     margin: 0;
     font-weight:400;
   }
 </style>

 <script type="text/javascript">

   $(function() {
     var buttonSize = is_numeric('#taille#') ? parseFloat('#taille#'):60;
     var borderSize = is_numeric('#taille_bordure#') ? parseFloat('#taille_bordure#'):3;
     var iconSize = is_numeric('#taille_icone#') ? parseFloat('#taille_icone#'):30;
     var color = ('#couleur#' !='#'+'couleur#') ? "#couleur#":"white";

     $("#button-#id# .button").css("border", borderSize+"px solid "+color);
     $("#button-#id# .button").css("border-radius", buttonSize+"px");
     $("#button-#id# .button").css("color", color);
     $("#button-#id# .button").css("width", buttonSize+"px");
     $("#button-#id# .button").css("height", buttonSize+"px");
     $("#button-#id# .button").css("font-size", iconSize+"px");

     var lineheight = buttonSize - borderSize - borderSize;
     $("#button-#id# .button i.fa, #button-#id# .button i.fas, #button-#id# .button i.fab").css("line-height",lineheight+"px");
     $("#button-#id# .button i.fa, #button-#id# .button i.fas, #button-#id# .button i.fab").css("color",color);

     var type = ('#type#' !='#'+'type#') ? "#type#":"fa";
     var icon = ('#icone#'!='#'+'icone#') ? "#icone#" : "fa-lock";
     $("#icon-#id#").removeClass().addClass(type+" "+icon);
   });

   // Touch start
   $("#button-#id#").on("mousedown", function() {
     return $(this).css({
       "transform": "scale(.9)"
     });
   });

   // Touch end
   $("#button-#id#").on("mouseup", function() {
     return $(this).css({
       "transform": "scale(1)"
     });
   });

 </script>

Le redimensionnement semble fonctionner, mais je suis limité à une colonne de 100 dans ce premier cas par exemple. Je ne comprends pas pourquoi.

J’ai tenté avec un autre tableau plus simple, et là encore, je n’arrive pas à la réduire à sa largeur minimale.
Quand je change de widget (binary switch vers binary default), cela se réduit mais pas assez.


vers
image

Bref, il doit y avoir une méthode pour avoir un tableau de largeur minimale non ?
Quelqu’un aurait-il une idée ?

Bon je progresse à force de chercher dans le forum et la doc :

Avec ce code « magique » :

/* Depuis Jeedom 4.4.2 pour pouvoir redimensionner les tableaux */
div.cmd-widget .content,
div.cmd-widget .content-sm,
div.cmd-widget .content-lg,
div.cmd-widget .content-xs {
  min-width: unset !important;
  min-height: unset !important;
}/* Depuis Jeedom 4.4.2 pour pouvoir redimensionner les tableaux */
div.eqLogic-widget div.cmd-widget {
 min-width: 20px;
}
div.cmd-widget .content-xs {
 min-width: 20px;
}

Mais pour autant, les tableaux ne descendent pas à leur taille minimale…
Une idée pour les forcer ?

le tableau d’origine rentrait là dedans :
image

quand la taille actuelle est 30% plus large :
image

Bonsoir,

Essai avec des unset !important; ou descend le nombre à la place de 20px, style 5px

1 « J'aime »

salut, je ne suis pas sûr de comprendre.
j’ai déjà intégré dans personnalisation avancée ça :

/* Depuis Jeedom 4.4.2 pour pouvoir redimensionner les tableaux */
div.cmd-widget .content,
div.cmd-widget .content-sm,
div.cmd-widget .content-lg,
div.cmd-widget .content-xs {
  min-width: unset !important;
  min-height: unset !important;
}/* Depuis Jeedom 4.4.2 pour pouvoir redimensionner les tableaux */
div.eqLogic-widget div.cmd-widget {
 min-width: 20px;
}
div.cmd-widget .content-xs {
 min-width: 20px;
}

Il faudrait le mettre ailleurs ? J’ai essayé dans le style du tableau aussi, ça ne bouge pas.

J’ai tenté aussi de ne garder que le unset et pas de min-width quand je rentre une valeur de largeur, on voit bien le tableau prendre les bonnes largeurs puis il s’agrandit tout seul…
Le 30 de la seconde colonne est bien loin de la réalité, plutôt du 50 automatique (70 pour la première et ça marche).

Même en descendant la valeur à 5 ou 0… rien ne change le tableau reste dans une taille qui est loin d’être la minimale qu’il peut faire :frowning:

J’ai testé aussi la solution proposée par kiboost :

Idem, ça ne change rien.
Pourtant en inspectant, la classe est la bonne.

Bref, je sèche totalement.

Bonjour,

Pas sûr que la solution de 2019 de Kiboost s’applique encore.
Avec juste :


ca fonctionne en 4.4.19 pour moi.
Les largeurs demandées arrivent bien dans l’élément:

Elles arrivent mais en dessous d’une certaine valeur.
Si je fixe la première colonne, voir la copie d’écran au dessus à 70 ça marche.
Quand je prends la seconde et que je veux le minimum la colonne est plus grande que la première.
Je vais voir en mettant le unset dans le tableau comme tu proposes.

Je n’ai pas proposé de unset. :wink:
Les tds ont la largeur demandée dans Jeedom sur la 1ère ligne de la table.
Peut-être un &nbsp; dans les cellules de la 1ère ligne qui n’ont pas de contenu :thinking:

Je voulais dire mettre le unset dans la propriété du tableau.
Je vais essayer.
Sinon quel gâchis de place :sob:

Je parlais de mettre ça :

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

Donc dans la partie de personnalisation avancée que tu as utilisé mais en remplacement 30 par 5

Je te confirme que cela ne change rien…

1 « J'aime »

Ils font quelle taille les icônes/images de la 2ème ligne?
On peut avoir un échantillon ?

Vous avez quel pas dans la configuration de Jeedom?

@jpty, si tu parles des icones utilisées, c’est un widget (voir premier post).

image

Par exemple pour le thermostat :
image

Si je réduis à 5, la colonne prend bien la taille, bonne nouvelle donc.
Sauf que du coup, l’icone est illisible. Je n’avais pas ce comportement avant l’icone ne prenait pas autant de place.

Dans le widget, c’est buttonSize qui récupère taille (ici 28) et qui donne le width du bouton.

  $(function() {
     var buttonSize = is_numeric('#taille#') ? parseFloat('#taille#'):60;
     var borderSize = is_numeric('#taille_bordure#') ? parseFloat('#taille_bordure#'):3;
     var iconSize = is_numeric('#taille_icone#') ? parseFloat('#taille_icone#'):30;
     var color = ('#couleur#' !='#'+'couleur#') ? "#couleur#":"white";

     $("#button-#id# .button").css("border", borderSize+"px solid "+color);
     $("#button-#id# .button").css("border-radius", buttonSize+"px");
     $("#button-#id# .button").css("color", color);
     $("#button-#id# .button").css("width", buttonSize+"px");
     $("#button-#id# .button").css("height", buttonSize+"px");
     $("#button-#id# .button").css("font-size", iconSize+"px");

Première solution :
Bon j’ai tenté de modifier le width dans le widget mais cela « casse » totalement l’icone. Mais la largeur de colonne est bonne.
Si quelqu’un sait modifier ce widget pour qu’il ne prenne pas autant de place ?
Car dans mon cas j’ai beaucoup de tableaux construits avec…

Seconde solution :
Je me dis autant utiliser ce que propose le core, je n’avais pas ces possibilités à l’époque.
Alors oui, les colonnes reviennent bien, mais c’est pas folichon…
image
j’ai tenté de modifier la propriété font-size à 20 pour récupérer une taille plus grande d’icone, mais je n’arrive pas à mettre la modification pour le widget en question.

image

Forcément c’est mieux lol si j’y arrive mais je n’arrive pas à l’intégrer dans Personnalisation Avancée.
image

/* Panel confort */
div.eqLogic-widget[data-eqlogic_id="1890"] form-control.btn {
        font-size: 20px !important;}

Bon, j’ai fait différents essais et je vais essayer de rester au plus près du core car les mises à jour depuis Jeedom 2 m’ont appris qu’il faut mieux éviter les widgets malheureusement … c’est encore le cas !

image

Au final, en prenant des widgets simples et en jouant sur les couleurs et icones ça le fait.
Je vais utiliser des toggles pour le pilotage des ouvrants et des prises.
Et puis on verra si j’ai d’autres soucis, j’ouvrirai un sujet dédié.

Merci à tous les deux pour le coup de pouce en tout cas.

J’étais encore en train de corriger le widget.

  • Suppression de l’appel externe de la police qui n’est plus autorisé <link rel="stylesheet" href="https://maxcdn.boot ...
  • Suppression des classes du core qui impose une largeur mini de 80px ou des marges droite et gauche de 15px
  • Ajout des attributs nécessaires pour centrer l’icone et largeur mini 30px;
  • Ajout de la description des paramètres optionnels lors du paramètrage de la commande.
  • Changement du nom de la classe (button) en button#id# sinon l’utilisationn du widget change les autres boutons de l’interface.
Code du widget
Si besoin à récupérer dans l'historique de ce post. 

Résultat:
image

image

1 « J'aime »

Alors là, j’en demandais pas tant !!!
Maintenant que le colspan etc marche bien c’est tentant de passer sur un truc plus près du core je trouve.
Je vais voir et je te dirai. Merci en tout cas.

Je ne sais pas si vous l’utilisez encore, mais je trouve dommage de passer par la personnalisation avancée lorsque l’on a un widget où l’on peut faire ce que l’on a envie.

1 « J'aime »

j’ai fait un essai mais apparemment, il y a un retour à la ligne après chaque widget.

tu aurais la possibilité de la supprimer ?

Je ne devine pas de retour à la ligne. Où sont-t’ils ?
Au besoin utilisez f12 pour vérifier ou plutôt clic droit sur l’endroit où il y aurait le retour et Inspecter

Et comme il y a changement du code du widget, faire Ctrl-f5 pour le recharger.