Enregistrement et partage des préférences d'une liste

Tags: #<Tag:0x00007fe29a2535f8>

Bonjour,

Nous souhaitons mettre en place une fonction de génération de rapports standardisés à partir des listes d’objets Simplicité.

L’idée serait la suivante :

  • un administrateur accède à une liste (par exemple la liste des commandes) et personnalise le choix et l’ordre des colonnes via le menu “Préférences” --> fonctionnement standard
  • lorsque sa personnalisation est terminée, il sauvegarde sa configuration en lui donnant un nom (ex : “état hebdomadaire des commandes”)
  • un utilisateur non administrateur peut alors, dans la liste des commandes, choisir une “configuration prédéfinie” sauvegardée par l’administrateur pour appliquer directement les préférences d’affichage puis exporter le résultat

La mise en place de ce fonctionnement est-elle envisageable ?
Sinon, avez-vous des alternatives à nous proposer ?

Merci d’avance, cordialement.

Bonjour Paul,

Il y a pas mal choses actuellement sur les listes, mais rien qui couvre exactement ce besoin :

  1. la préférence de l’utilisateur
  • il choisit l’ordre des colonnes visibles ou pas (sauf la clé fonctionnelle qui doit toujours être visible)
  • stockée dans ses préférences et non habilitable/partageable (ce n’est pas un objet Simplicité, juste une propriété persistante par user)
  • pas de préférences pré-définies ou multiples par liste
  1. les recherches prédéfinies
  • sauvegardent un ensemble de filtres et de tris sur les colonnes, c’est un objet simplicité
  • peuvent être publiques (livrée par un designer) ou privées (pour moi-même, un admin peut les rendre publique une fois créées par lui-même s’il a les droits)
  1. des publications
  • créées par un designer (ou par un admin métier avec un minimum de formation designer) pour faire un traitement particulier
  • habitabilités ensuite = action de type “Print” à l’écran

Pour préciser votre besoin :

  • Est-ce que votre besoin est également de prédéfinir, en plus des colonnes visibles dans un certain ordre, un tri et des filtres sur les records ?
  • Est ce que votre export peut contenir des agrégats ou des données hors liste ?
  • Pour quand est ce demandé par votre client ?

Il serait alors peut-être plus simple de faire évoluer les “recherches prédéfinies” plutôt que les préférences :

Quand on saisie des filtres + des tris depuis le dialogue de recherche d’une liste, on peut déjà l’enregistrer avec un nom. Il faudrait juste ajouter une case à cocher “Avec l’ordre de colonnes visibles actuelle” pour mémoriser l’info en plus des filtres dans la Recherche prédéfinie. Lorsque l’utilisateur sélectionne ensuite cette recherche, il faudra alors modifier la préférence courante en plus du filtre/tri sur l’objet de session.

Je ne vois pas d’alternative sauf à tout développer via une action de liste qui irait chercher le paramétrage dans un objet métier “maison” administrable qui gère ce besoin. Mais ce n’est pas l’idée si on peut déjà faire qq évolutions sur ce qui existe déjà.

Bonjour François,

Merci pour ces infos, je précise un peu le besoin :

  • a minima, le choix et l’ordre des colonnes seraient prédéfinis
  • l’ordre de tri n’est pas indispensable, les données pourront être retravaillées dans excel
  • la sélection des données resterait à la charge de l’utilisateur (export des records affichés dans l’écran)
  • l’attendu est un export excel “brut” des résultats sans agrégats ni mise en forme, mais avec des données liées (par exemple, avec la liste des commandes je veux ramener des informations du dossier client, de la fiche produit, …) --> pas de problème là dessus, nous décrirons un objet “restitutionCommande” avec tous les liens et attributs possibles
  • nos développements se terminent début juillet donc nous devons faire un choix rapidement.

La solution d’enrichir les recherches prédéfinies avec la mémorisation des colonnes est une piste intéressante, l’idée étant bien de minimiser les développements spécifiques.
L’autre option sera effectivement de développer un objet métier “maison” comme celui que tu nous as aidé à mettre en place pour le paramétrage des formulaires personnalisables.

Nous allons en rediscuter avec notre client sur la base de ces éléments.

Ok merci pour ces infos, donc il ne faut pas traîner si c’est pour dans 2 semaines !

  • Il sera facile de faire évoluer le compostant de recherche pré-définie pour appliquer une préférence de colonnes.

  • A voir aussi si l’ergonomie actuelle pour enregistrer (admin) et appliquer (utilisateur) une recherche prédéfinie leur convient, on peut par exemple imaginer pouvoir appliquer celles-ci depuis la liste directement depuis un “dropdown” pour éviter pas mal de clicks si l’opération se fait très régulièrement.

  • Il faudra aussi prévoir une recherche prédéfinie ou une action de “reset” pour remettre la liste dans son état d’origine.
    .

1 Like
  • Un accès direct aux recherches prédéfinies depuis la liste serait effectivement l’idéal, avec une possibilité de retour à l’affichage par défaut
  • De manière spécifique, nous aurions aussi besoin de pouvoir filtrer les recherches prédéfinies par utilisateur : chaque administrateur d’un centre de gestion enregistre ses recherches prédéfinies --> un utilisateur d’un centre de gestion ne voit que les recherches prédéfinies enregistrées par l’administrateur de son centre de gestion

.

La user storiy se complexifient.

Actuellement les recherches prédéfinies sont :

  • soit publiques : tous les utilisateurs habilités en lecture à l’objet, en général on s’en sert pour des recherche dans des vues / bannettes (par statut, par date…)
  • ou privée : les miennes (je liste mes dossiers triés par statut…)

Il n’y a pas de notion de “centre de gestion”, est ce un groupe de droits ? auquel cas on peut imaginer créer une table d’habilitation (comme les habilitations des raccourcis), si cette recherche est publique, il filtrera sur les groupes déclarés. Il faut aussi prévoir que celui qui crée la recherche peut spécifier public / privé / ou cocher parmi ses groupes de droits…

Sinon pour simplifier, on peut juste prévoir un hook pour vous permettre de filtrer les recherches accessibles à un utilisateur, à vous de modéliser le lien entre une recherche Simplicité et votre modèle métier pour dire “qui peut utiliser quoi quand”. Côté administrateur, quand il va créer sa recherche depuis la liste, il faudra également qu’il puisse avoir accès à ce lien d’affectation des recherches = il aura nécessairement un accès en design à certaines recherches.

  • La user story la plus complexe est donc celle de l’admin car il crée et administre des recherches prédéfinies habilitées parmi des centres également restreints (peut-il créer une recherche pour un autre centre, la même pour plusieurs, etc)
  • Pour l’usage, appliquer une recherche c’est plus simple, il faudra juste faciliter l’accès UI.

on en reparle en call demain.

Forcément, on en veut toujours plus ;-)

La notion de centre de gestion est complètement spécifique à notre application : un utilisateur est rattaché à un et un seul centre de gestion.

Je pensais donc effectivement plutôt à un hook pour filtrer les recherches :

  • l’administrateur rattaché au centre de gestion enregistre les recherches prédéfinies
  • l’utilisateur peut appliquer les recherches prédéfinies enregistrées par un administrateur du même centre de gestion que le sien.

L’évolution va être livrée en V5 et backportée en V4.

Les recherches prédéfinies seront désormais accessibles depuis la liste :

image

Il faudra utiliser les hooks suivants pour couvrir votre besoin

  • création d’une table d’habilitation N,N entre l’objet Research de simplicité et votre unité de gestion U
  • Filtrage des recherches visibles par l’utilisateur s’il appartenant à U
public void postSavePredefinedSearch(PredefinedSearch ps) {
	// recherche de l'habilitation N,N
	String rowId = ps.getId(); // search row_id
	if (/* not exists */) {
		// ...create N,N
	}
}
public List<PredefinedSearch> getPredefinedSearches() {
	// les recherches possibles dans l'unité du user
	List<String[]> granted = /* query */;
	// Toutes les recherches publiques + privées de l'objet
	List<PredefinedSearch> list = getGrant().getPredefinedSearch("MyObject");
	for (int i=0; list!=null && i<list.size(); i++) {
		PredefinedSearch ps = list.get(i);
		// retire les recherches publiques qui ne sont pas dans l'unité du User
		if (!ps.isPrivate() && /* user is not in granted */) {
			list.remove(i);
			i--;
		}
	}
	return list;
}

Bonjour Paul,

Avez vous pu regarder l’implémentation avec votre modèle métier dans votre sprint ?
J’aimerai savoir s’il y a encore des choses à finaliser rapidement.

@Plentz

Bonjour François,

Merci pour ta réactivité sur le sujet, l’équipe de développement va récupérer l’évolution, nous te faisons un retour rapidement.