Evolution #4537
ouvertAides à la saisie dépendantes
0%
Description
Il y a des cas où le client demande des aides à la saisie dépendantes, en cascade la plupart du temps.
Par exemple,
- Continent
- Pays
- Ville
avec les règles suivantes:
- si l'utilisateur choisit un continent avant un pays, la liste des pays est restreinte aux pays de ce continent
- si l'utilisateur n'a pas choisi de continent avant le pays, alors le continent est rempli lors de la sélection du pays
- et ainsi de suite avec la ville.
Pour implémenter ce fonctionnement, les aides à la saisie sont définies de cette manière:
- continent():continent
- pays(continent):pays,continent
- ville(pays,continent):ville,pays,continent
Cela répond au besoin pour la saisie, mais pas pour l'effacement. En effet
- lorsque ville est effacé, cela efface également pays et continent
- lorsque pays est effacé, cela efface également continent, mais pas ville
- lorsque continent est effacé, cela n'efface ni pays, ni ville
alors que l'utilisateur s'attend à l'inverse:
- lorsque ville est effacé, continent et pays ne sont pas effacés
- lorsque pays est effacé, ville est effacé, mais pas continent
- lorsque continent est effacé, pays et ville sont effacés
Une solution serait de suivre la logique suivante:
lors de l'effacement d'une aide à la saisie, cele efface également les attributs dont l'aide à la saisie possède l'attribut en cours d'effacement dans ses paramètres (les aides à la saisie qui en dépendent), mais n'efface plus les les attributs dont l'aide à la saisie possède l'attribut en cours d'effacement dans ses cibles
puisque cela peut changer le fonctionnement actuel, il est possible de mettre cette fonctionnalité derrière un paramètre applicatif, ou une option d'attribut.
Attention, le comportement actuel reste souhaitable dans le cas de cibles qui ne sont pas des aides à la saisie, et il faut surement retravailler la règle proposée.
Mis à jour par Marc Claverie il y a environ 12 ans
- Statut changé de Nouveau à À analyser
- Assigné à mis à Éric Brison
Mis à jour par Emmanuel ESCOLA il y a environ 12 ans
À noter également que le comportement décrit pour des aides à la saisie dépendantes n'est pas le même lors d'une aide à la saisie portant sur un attribut docid multiple.
En se basant sur le même exemple, si on avait :
- Continent (docid simple)
- Pays (docid multiple)
Avec comme règles :
- Si l'utilisateur choisit un continent avant un pays, la liste des pays est restreinte aux pays de ce continent
- Si l'utilisateur n'a pas choisi de continent avant le pays, alors le continent est rempli lors de la sélection du pays
Ce qui est identique :
- Lorsque continent est effacé, aucun pays n'est effacé
- Lorsqu'un continent est sélectionné, la liste des pays est restreinte
- Lorsqu'un pays est selectionné, le continent est mis à jour
Ce qui est diffère :
- Si on choisit plusieurs Pays, puis qu'on les supprime un par un, lors de la suppression du dernier pays le continent n'est pas effacé.
Mis à jour par Charles Bonnissent il y a environ 12 ans
Pour ce problème, on pourrait envisager la solution suivante : enrichir le format de définition d'aide à la saisie sous la forme d'un objet qui prendrait :
pour la source de données :
- le nom du fichier et le nom de la fonction
- un fully qualified path vers une fonction statique
- une url d'accès
- une référence vers une fonction JS (accessible dans window) => qui reçoit les valeurs d'attributs, l'attribut en cours, l'id en cours,
pour les données à transmettre :
- des noms d'attribut,
- une fonction JS (accessible dans window) => qui reçoit l'attribut en cours, l'id en cours et renvoie une liste de valeurs
pour le traitement des données après sélection :
- des noms d'attribut (qui sont valués),
- une fonction JS (accessible dans window) qui reçoit les valeurs sélectionnées
pour le traitement des données lorsqu'on efface :
- des noms d'attribut (qui sont vidés),
- une fonction JS (accessible dans window)
Mis à jour par Marc Claverie il y a environ 12 ans
Effectivement, le fonctionnement n'est pas homogène entre les aides à la saisie simple ou multiple. Le fonctionnement ne peut pas être changé en version 3.2 : les modalités d'utilisation des interfaces utilisateur.
Emmanuel ESCOLA a écrit :
À noter également que le comportement décrit pour des aides à la saisie dépendantes n'est pas le même lors d'une aide à la saisie portant sur un attribut docid multiple.
En se basant sur le même exemple, si on avait :
- Continent (docid simple)
- Pays (docid multiple)
Avec comme règles :
- Si l'utilisateur choisit un continent avant un pays, la liste des pays est restreinte aux pays de ce continent
- Si l'utilisateur n'a pas choisi de continent avant le pays, alors le continent est rempli lors de la sélection du pays
Ce qui est identique :
- Lorsque continent est effacé, aucun pays n'est effacé
- Lorsqu'un continent est sélectionné, la liste des pays est restreinte
- Lorsqu'un pays est selectionné, le continent est mis à jour
Ce qui est diffère :
- Si on choisit plusieurs Pays, puis qu'on les supprime un par un, lors de la suppression du dernier pays le continent n'est pas effacé.
Mis à jour par Marc Claverie il y a environ 12 ans
Spec à compléter pour la 4 :)
Charles Bonnissent a écrit :
Pour ce problème, on pourrait envisager la solution suivante : enrichir le format de définition d'aide à la saisie sous la forme d'un objet qui prendrait :
pour la source de données :
- le nom du fichier et le nom de la fonction
- un fully qualified path vers une fonction statique
- une url d'accès
- une référence vers une fonction JS (accessible dans window) => qui reçoit les valeurs d'attributs, l'attribut en cours, l'id en cours,
pour les données à transmettre :
- des noms d'attribut,
- une fonction JS (accessible dans window) => qui reçoit l'attribut en cours, l'id en cours et renvoie une liste de valeurs
pour le traitement des données après sélection :
- des noms d'attribut (qui sont valués),
- une fonction JS (accessible dans window) qui reçoit les valeurs sélectionnées
pour le traitement des données lorsqu'on efface :
- des noms d'attribut (qui sont vidés),
- une fonction JS (accessible dans window)
Mis à jour par Marc Claverie il y a environ 12 ans
Il est possible de faire en sorte que l'effacement du 'continent' efface le pays et la ville via l'aide à la saisie : continent():contient,pays,ville (elle retourne " " pour pays et ville).
Lorsqu'on saisit explicitement le continent puis le pays puis la ville, l'utilisateur peut être perturbé si l'effacement de la ville entraîne celui du pays et du continent.
Ce mécanisme particulier peut être mis en place par injection de JS en édition qui pourrait être facilité par http://dev.dynacase.org/issues/4537#note-3
Mis à jour par Marc Claverie il y a environ 12 ans
- Version cible changé de 3.3.0 à 3.3#Input