É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.
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 .
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)
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.
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.
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)
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).
Il devrait être possible pour l'utilisateur de revenir dans un filtre déjà défini et de modifier sa valeur.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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) :
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
.
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.
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.
ç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 :
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
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 :
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.
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
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.
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_