Projet

Général

Profil

Actions

Evolution #4537

ouvert

Aides à la saisie dépendantes

Ajouté par Matthieu Codron il y a environ 12 ans. Mis à jour il y a environ 12 ans.

Statut:
À analyser
Priorité:
Normal
Assigné à:
Version cible:
Début:
21/02/2014
Echéance:
% réalisé:

0%

Temps estimé:
Version source:
Solution proposée:
Principaux fichiers impactés:
Wiki Détail:
Contrôle:
Thème:
Document:IHM

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.


Demandes liées 1 (1 ouverte0 fermée)

Lié à Core - Amélioration #4554: [Document/Aide à la saisie] Une aide à la saisie peut-être définie par une référence vers une fonctionNouveau28/02/2014

Actions

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 mis à 3.3.0

Mis à jour par Marc Claverie il y a environ 12 ans

  • Version cible changé de 3.3.0 à 3.3#Input

Mis à jour par Charles Bonnissent il y a environ 12 ans

  • Thème Document:IHM ajouté
Actions

Formats disponibles : Atom PDF