Templating de liste

Version

V7+

Description

Bonjour,

Pour un outil sur lequel les listes vont être très utilisées, j’ai essayé de faire un peu de mise en page.

Je n’ai pas pu utiliser le template de liste car j’ai besoin que ma mise en page fonctionne aussi en Edit list et je me suis heurtée à un certain nombre de limites

  • je n’ai pas trouvé comment prolonger les bordures d’Areas en CSS donc j’ai également utilisé le getStyle
  • le getStyle s’applique sur <td> en lecture mais sur la <div> en edit list
  • les Area imbriquées s’affichent à la suite les unes des autres, je n’ai pas trouvé de solution simple pour les afficher avec des colspan

Il serait utile d’avoir un moyen de faire ceci de façon centralisée (CSS, paramétrage ou code).
Je n’ai pas d’idée précise de solution, je poste ce ticket en guise de brainstorming.

Mes bricolages ci-dessous

	@Override
	public String getStyle(ObjectField field, String[] row) {

	    
	    FieldArea area = field.getFieldArea();
	    List<ObjectField> areaFlds = area.getFields();

	    if (areaFlds.get(0).getName().equals(field.getName()))
	    	return "firstCell";

/*	    if (areaFlds.get(areaFlds.size() - 1).getName().equals(field.getName()))
	    	return "lastCell";*/
	    
	    return super.getStyle(field, row);
	}
.table {
						
		tr:not(.col-area) {
			
			border-right: solid .05rem !important;
			border-top: solid .05rem !important;
			border-bottom: solid .05rem !important;
			
			.head { 
				border-left: solid .05rem !important;
			}
		}
		
		tr.head, .search {
			
			th:not(th[data-name$="Na"]):not(.col-action) {
				border-left: solid .05rem !important;
			}
		}
		
		td[role="cell"]:not(.col-action):not(.firstCell) {
			border-left: solid .1rem #E8E8E8;
		}
		
		td.firstCell, td:has(div.firstCell) {
			border-left: solid .05rem !important;
			padding-left: .5rem !important;
		}
		
	
		tbody > tr > * {
		    background-color: #ffffff;
		    color: #303030
		}
	}

Bonjour,

Le CSS est nécessairement spécifique au thème. Il y aura des changements en V7 avec l’arrivée des variables CSS pour remplacer les constantes LESS, mais rien n’est prévu pour modéliser les styles spécifiques autrement que par CSS3 déjà très riche.

Voici les évolutions à réaliser si possible en V7 (et V6 si simple à backporter) :

Pour simplifier ton code, il faudrait effectivement avoir un selector plus simple pour identifier un “changement” de zone d’attributs via la première/dernière colonne : il faut ajouter les classes td.area-first-col et td.area-last-col.

On va voir si on peut déplacer la classe retournée par le getStyle au niveau du <td> en edit-list, on définit généralement uniquement une classe générique (ton exemple .firstCell) sans préciser les entités (div, td…), mais dans ton cas ça ne doit pas être possible.

A date, une liste peut afficher les zones sur un seul niveau dans une ligne
thead > tr.col-area.

Le besoin serait d’avoir plusieurs niveaux pour présenter des zones de zones.
Show areas on list = passer d’un boolean à un ENUM

  • No
  • Single row : avec les rowspan actuels pour compat ascendante
  • Multiple rows : areas hierarchy = colspan + rowspan