Barista: Filterfield 2 - Collecte des exigences

Créé le 6 mai 2020  ·  21Commentaires  ·  Source: dynatrace-oss/barista

Étant donné que l'implémentation actuelle du composant de champ de filtre manque de quelques fonctionnalités qui ont été demandées dans le passé, mais qui sont vraiment difficiles à intégrer dans l'état actuel, nous jouons avec l'idée de créer une deuxième version du champ de filtre. Lorsque nous avons commencé la première implémentation du champ de filtre, de nombreuses exigences ont été ajoutées après la mise en œuvre initiale, ce qui a rendu très difficile leur respect.
Avec cette version, nous voulons créer la liste des exigences tôt pour mieux répondre aux attentes du consommateur de bibliothèques.
Veuillez vous impliquer et ajouter à cette discussion car nous voulons être particulièrement minutieux pour éviter qu'un scénario similaire ne se reproduise.


La source de données

Possibilité d'ajouter/définir des filtres disponibles à la source de données du champ de filtre

Il devrait être facile de définir quels filtres sont disponibles, d'indiquer le type de filtre, ses enfants et les validateurs. Dans l'implémentation v1, cela se fait via un objet de configuration et la source de données .

Possibilité d'ajouter des filtres disponibles à la source de données de manière asynchrone

Il s'agit d'une fonctionnalité clé pour charger plus de données en fonction de l'entrée des utilisateurs. Il peut s'agir d'un mot spécial filtré dans une situation de saisie semi-automatique ou du chemin d'accès à un filtre spécial. Il devrait être possible d'étendre les filtres actuellement disponibles ainsi que de charger l'étape de filtre suivante. (Se réfère à #868)

Filtres sélectionnés (tags)

Un filtre sélectionné se compose d'une clé, d'une valeur et éventuellement de métadonnées qui refléteront l'état des balises.

Les affichages de clé et de valeur de balise doivent être personnalisables

Comme indiqué dans #1113, il est nécessaire de personnaliser les propriétés key affichées et les propriétés value affichées à l'intérieur de chaque balise individuelle.

Les filtres sélectionnés doivent être faciles à définir par programmation

Dans l'implémentation v1, les filtres ne peuvent être définis que par référence aux éléments passés en haut de la source de données, ce qui semble assez fastidieux. (Se réfère à #473)

https://github.com/dynatrace-oss/barista/blob/fa98ac150b6d324f5c3eaed990c6d6c5f155f318/libs/examples/src/filter-field/filter-field-programmatic-filters-example/filter-field-programmatic-filters-example.ts# L67 -L77

Il devrait être facile de modifier l'état d'une balise par programmation

Il devrait être facile de changer l'état des filtres actuellement définis en editable / disabled / read-only . L'implémentation actuelle nécessite actuellement que le consommateur obtienne les filtres actuellement définis et trouve l'instance qu'il souhaite manipuler et y ajouter les modifications (se réfère à # 848).

Les balises peuvent être modifiables

Il devrait être possible pour l'utilisateur de revenir dans un filtre déjà défini et de modifier sa valeur.

Connecteurs logiques entre balises

Une demande récurrente consiste à ajouter des connecteurs logiques, c'est-à-dire NOT , AND et OR à la liste des balises.
Merci @subarroca d'avoir mentionné cela.

Regroupements logiques

En tant qu'extension des connecteurs logiques entre les balises, @petrabrunner a également mentionné que les balises logiquement connectées devraient pouvoir être regroupées entre parenthèses.

Unicité

Certains filtres doivent être supprimés de la liste des filtres disponibles, si le filtre est déjà sélectionné une fois par l'utilisateur.

Types de filtres et extensions

Imbrication de filtres

Les filtres doivent être imbriqués, pour donner à l'utilisateur un chemin simple pour filtrer jusqu'à la paire clé-valeur réelle. Cela se reflète assez bien dans le comportement de la v1.

Sélectionner à partir d'un ensemble (saisie semi-automatique)

Cela permettra à l'utilisateur de sélectionner une seule valeur parmi les filtres fournis. Cela peut être imbriqué jusqu'à ce que le dernier filtre soit sélectionné, c'est-à-dire que le choix d'une ville donne à l'utilisateur les options de filtre suivantes : Pays > État > Région > Ville
Ces ensembles peuvent avoir une option distincte, ce qui signifie que si l'un des ensembles distincts est choisi, il n'est pas possible d'en sélectionner un autre dans le même ensemble. L'ensemble ne devrait donc plus être présenté en option.

Texte libre avec suggestions

Certains filtres doivent _juste_ pouvoir contenir un texte libre, défini par l'utilisateur. L'implémentation actuelle donne la possibilité de fournir un texte. Il n'y a aucune indication de ce qui se passe comment le texte est filtré. Il pourrait être judicieux d'ajouter quelques modes à ce type de filtre, c'est-à-dire startWith , contains , exactMatch . Cela pourrait donner au consommateur un peu plus de contrôle sur le filtrage.

Varier

Dans l'implémentation v1, la plage permet à l'utilisateur de choisir une ou deux valeurs et l'un de ces opérateurs : greater than , less than , equals ou range (filtré valeur doit être comprise entre la première et la deuxième valeur fournie).
Il devrait être possible de donner des valeurs par défaut pour chaque champ, qui est rempli dans la plage.
Il y a déjà eu des demandes d'extension de la plage pour autoriser également les opérateurs Supérieur à égal et Inférieur à égal. De plus, dans un mode opérateur Range, il devrait également y avoir le choix pour chaque valeur d'avoir greater/less ou greater/less than .
La gamme pourrait également être considérée comme une extension.

Sélection multiple

Il devrait être possible pour un consommateur d'ajouter une sélection multiple (similaire à la section _select from a tag_), mais sans avoir une seule sélection, mais une configuration à sélection multiple. Comme @danielkaneider l'a mentionné, cela a été dans les simulations initiales du champ de filtre et ressemble assez à une liste de cases à cocher dans une superposition. (Référence numéro #1206)
À mon avis, ce serait quelque chose qui pourrait également être considéré comme une extension.

Plages avec une signification sémantique personnalisée

Ceci est également fortement considéré comme construit comme une extension. Certains cas d'utilisation couvrent des sélections de plages, qui ne suivent pas la logique de plage numérique (c'est-à-dire, les plages de numéros de version soulevées dans # 78 par @bmrozinski)

Extension aux filtres

Il devrait être possible pour le consommateur de fournir facilement sa propre version d'un filtre et de personnaliser la superposition selon ses besoins. Les choses à considérer sont de créer une interface entre le champ de filtre et l'extension, afin qu'une communication solide entre l'extension et le champ de filtre puisse se produire.
Cela ouvrirait de nombreuses possibilités aux consommateurs pour améliorer le champ de filtrage et l'adapter à leurs besoins.

Actuellement considéré comme étant effectué via une extension (première ou tierce partie) :

  • Varier
  • Plages avec signification sémantique
  • Sélection multiple
  • Sélecteur de date

Validation

Chaque filtre soumis doit pouvoir être validé par rapport aux fonctions de validateur passées. Dans l'implémentation v1, cela n'était possible que pour le type free-text .

Filtrage d'entrée

Lorsque l'utilisateur est en train de remplir ou de sélectionner un filtre, les filtres disponibles doivent être affichés et filtrés en fonction de l'entrée de l'utilisateur. L'implémentation v1 contient déjà ce comportement et nous aimerions le conserver.

Prise en charge de l'intégration des formes angulaires

Sur la base de https://github.com/dynatrace-oss/barista/issues/951#issuecomment -631519841, il convient de déterminer si une intégration avec Angular Forms sera réalisable (les valeurs des champs de filtre peuvent être assez complexes). Mais c'est certainement quelque chose à examiner.

filter-field needs discussion

Commentaire le plus utile

Salut!

Nous avons reçu des commentaires sur un autre aspect qui pourrait être amélioré, à savoir la façon dont le filtre traite la saisie de texte moyen/long.

Actuellement, le widget présente une "fenêtre" de saisie d'environ 24-25 caractères qui rend un peu difficile la révision du texte que l'on saisit ou copie-colle.
Le widget, par exemple, pourrait se développer et utiliser l'espace libre sur son côté droit, en particulier sur les grands écrans.

Screenshot 2020-10-23 at 09 29 30

La case bleue met en évidence la taille de la zone de saisie, l'exemple de texte est : _ceci est un texte modérément long_

Tous les 21 commentaires

ça a l'air super les gars. nous avions déjà quelques exigences à venir pour lesquelles nous voulions vous contacter. Je vois qu'ils sont déjà couverts ici

On nous a demandé d'inclure AND, OR et NOT.
États également désactivés, que vous envisagez déjà

Les premières simulations avaient une multi-sélection visualisée. Au lieu de simplement obtenir une liste de suggestions et d'en sélectionner une, vous obtiendriez celles avec des cases à cocher devant; vous pouvez donc en sélectionner plusieurs. C'est une version plus simple du filtre ET, et plus agréable que d'entrer plusieurs fois dans le même filtre (par exemple, le pays)

On nous a demandé d'inclure AND, OR et NOT.

Merci @subarroca d'avoir soulevé cette question, j'ai ajouté ceci à la liste originale des exigences.

Les premières simulations avaient une multi-sélection visualisée. Au lieu de simplement obtenir une liste de suggestions et d'en sélectionner une, vous obtiendriez celles avec des cases à cocher devant;

Merci @danielkaneider d'avoir soulevé cette question. J'ai ajouté ceci à la liste initiale des exigences.

Pour certains filtres, il peut y avoir une énorme quantité de suggestions, par exemple des balises. Ce serait bien de les limiter à N suggestions et d'afficher "Commencez à taper pour en voir plus" qui serait récupéré de manière asynchrone lorsque l'utilisateur tape - une sorte de recherche côté serveur.

Peut-être que ça vaudrait la peine d'ajouter #78 aux exigences.

Je compte également sur l'implémentation #78 dans Filterfield v2. Les filtres de plage seraient parfaits pour les cas d'utilisation concernant le filtrage du numéro de version (par exemple, 1.194.0).

Je compte également sur l'implémentation #78 dans Filterfield v2.

Absolument. Je l'ai ajouté à la liste. Bien que je considère que beaucoup d'entre eux sont en fait construits comme une extension (c'est-à-dire non fournis par la bibliothèque barista elle-même), il est bon d'avoir également tous ces cas d'utilisation pour les extensions présents, pour nous de définir l'interface entre le filtre- champ v2 et une extension personnalisée mieux.

Nous avons exactement le cas d'utilisation décrit par @Argeath , avec de nombreuses balises pour le filtrage dans la nouvelle vue des problèmes. Nous souhaitons uniquement renvoyer un sous-ensemble de balises du serveur, correspondant à la requête que l'utilisateur a saisie dans le champ de filtre. Et nous pourrions même devoir limiter ces résultats correspondants car il pourrait y en avoir trop. Donc, un moyen d'indiquer les résultats "tronqués" serait également bien.

Salut, super de voir que tu prévois de donner une cure de jouvence au filtre ;)

le cas d'utilisation que nous avons est un peu complexe, et je ne sais pas si les suggestions ci-dessus le couvrent déjà complètement. Nous aimerions pouvoir enchaîner les termes de filtrage avec des connecteurs logiques (ET, OU, ...)

fe :
afficher tout pour (créateur=utilisateurx ET gravité=élevé) OU (créateur=utilisateur ET gravité=faible)

nous l'appelons toujours "la façon dont jira vous permet de filtrer les problèmes".
J'ai déjà vu les "sélections multiples pour un type de filtre" et les instructions AND/OR - mais sera-t-il possible de définir des termes de filtre avec des crochets (ou de toute autre manière) et de les combiner avec des opérateurs logiques ?

@petrabrunner Malheureusement, je ne pense pas que ce soit un cas d'utilisation pour le champ de filtre en particulier, car cela ressemble de plus en plus à un modèle de langage de requête. Il existe certainement des cas d'utilisation pour votre type de requêtes, mais j'essaierais de ne pas mélanger la fonctionnalité de langage de requête avec le champ de filtre.
L'exemple que vous avez donné peut sembler fonctionner dans un contexte de champ de filtre, mais si vous vous référez à _la façon dont jira vous permet de filtrer les problèmes_, cela peut devenir plus complexe très rapidement.
TBH, même les opérateurs logiques dans le champ de filtre sont probablement exagérés. Actuellement, j'essaie de comprendre ce que les gens pourraient attendre du filtre, si tout ici sera construit ou même réalisable, c'est probablement une discussion pour plus tard.

Je vais ajouter un regroupement logique à la liste ci-dessus, mais sachez que cela pourrait être très loin dans la liste des priorités.

@tomheller merci pour la réponse - tbh. Je m'y attendais déjà - car la logique serait assez étendue - mais je me suis dit que si je ne vous parlais pas de notre cas d'utilisation, vous ne le saviez pas ;)

Nous aurions également besoin de la fonctionnalité de chargement des données pour les saisies semi-automatiques en tant que partiels. Par exemple, chargez les 100 premières options et lors de la recherche d'une option, chargez celles filtrées à partir du serveur.

Le PR pour l'implémentation actuelle peut être vu ici : https://github.com/dynatrace-oss/barista/pull/1021

Bonjour à tous, nous avons également quelques pétitions, triées du plus au moins prioritaire :

  • La possibilité de définir des valeurs numériques minimales et maximales par défaut pour les types de filtres de plage.
  • Un nouveau type de filtre : le sélecteur de date.

Merci!

Ce serait vraiment cool de prendre en charge les formes angulaires dans les champs de filtre ;), donc c'est plus facile à gérer du point de vue du consommateur. Peut-être que l'exposition d'un FilterFormControl pour cela aiderait

  interface FilterFormControl {
    field: string;
    value: FilterValue // any basically
    operator?: 'AND' | 'OR' | 'NOT'
    ...
  }  

```html
formControlName="filter"
label="Filtrer par"
aria-label="Filtrer par contrôle de formulaire"
clearAllLabel="Tout effacer"

```ts
// comes from a saved config
initFilters = [{
  field: 'foo',
  value: 'bar'
}];
form: FormGroup({
  filter: new FormControl(initFilters)
});

Salut,
Ce serait bien d'avoir cette fonctionnalité aussi:

Catégorie par défaut : lorsque l'utilisateur commence à donner un pourboire, cette touche est sélectionnée. Ce faisant, l'utilisateur peut ignorer l'étape consistant à sélectionner la clé. Dans les images suivantes, vous pouvez en voir un exemple, étant "Nom" la catégorie par défaut pour filtrer :

  1. Filtre non ciblé :
    image
  2. Filtre ciblé (l'utilisateur a cliqué dessus) :
    image
  3. Pourboire d'utilisateur :
    image
  4. L'utilisateur termine le pourboire :
    image
  5. L'utilisateur appuie sur la touche Entrée :
    image

Bonjour l'équipe! J'ai aussi une autre pétition, ce serait la définition:

getTagsForFilterKey(clé : chaîne) | DtFilterFieldTag[] | Renvoie un tableau de DtFilterFieldTag avec toutes les correspondances où la clé du DtFilterFieldTag contient le paramètre key
-- | -- | --

TL;DR : Une nouvelle version de la fonction actuelle getTagForFilter , pour mieux répondre à nos besoins.

Comme discuté avec Markus Heimbach, il a proposé d'ajouter la possibilité que si vous tapez initialement et que toutes les options sont filtrées, vous pouvez toujours soumettre ce texte en tant que saisie de texte libre.
En d'autres termes, un texte libre en plus de l'autocomplétion pour le niveau racine.

Comme discuté avec Markus Heimbach, il a proposé d'ajouter la possibilité que si vous tapez initialement et que toutes les options sont filtrées, vous pouvez toujours soumettre ce texte en tant que saisie de texte libre.
En d'autres termes, un texte libre en plus de l'autocomplétion pour le niveau racine.

Mais je pense que c'est essentiellement ce que @SaraDavilaMendez a déjà mentionné avec https://github.com/dynatrace-oss/barista/issues/951#issuecomment -686365435

Comme discuté avec Markus Heimbach, il a proposé d'ajouter la possibilité que si vous tapez initialement et que toutes les options sont filtrées, vous pouvez toujours soumettre ce texte en tant que saisie de texte libre.
En d'autres termes, un texte libre en plus de l'autocomplétion pour le niveau racine.

Mais je pense que c'est essentiellement ce que @SaraDavilaMendez a déjà mentionné avec # 951 (commentaire)

Merci. J'ai raté ce commentaire.

Salut!

Nous avons reçu des commentaires sur un autre aspect qui pourrait être amélioré, à savoir la façon dont le filtre traite la saisie de texte moyen/long.

Actuellement, le widget présente une "fenêtre" de saisie d'environ 24-25 caractères qui rend un peu difficile la révision du texte que l'on saisit ou copie-colle.
Le widget, par exemple, pourrait se développer et utiliser l'espace libre sur son côté droit, en particulier sur les grands écrans.

Screenshot 2020-10-23 at 09 29 30

La case bleue met en évidence la taille de la zone de saisie, l'exemple de texte est : _ceci est un texte modérément long_

Déplacé vers APM-266067

Cette page vous a été utile?
0 / 5 - 0 notes