Recherche texte global
Recherche texte sur un attribut
La recherche texte est celle par défaut pour une config qui n'a pas de spécification :
[
{
display: 'Artiste',
attribute: 'artiste',
}
]
Une fois validé, un nouveau bloc apparaît.
Recherche dans une liste
Valeurs prédéfinies en tant que tableau de strings :
[
{
display: 'Artiste',
attribute: 'artiste',
values: ['Picasso', 'Van Gogh'],
}
]
Valeurs prédéfinies en tant que tableau d'objets
[
{
display: 'Artiste',
attribute: 'artiste',
values: [{id: 1, name : 'Picasso'}, {id: 2, fullName : 'Van Gogh'}],
valuesDisplayFn = (item) => item.fullName ? item.fullName : item.name,
}
]
Valeurs prédéfinie, post-loadées :
[
{
display: 'Artiste',
attribute: 'artiste',
values: artistsDataSource,
valuesDisplayFn = (item) => item.fullName ? item.fullName : item.name,
}
]
Une DataSource reprend les principes de CDK / Material2. Elle dispose d'une fonction .connect() qui permet à natural-search de compléter les valeurs à afficher quand elles sont disponibles.
Valeurs prédéfinie auto-complétées :
[
{
display: 'Artiste',
attribute: 'artiste',
autocompleteValues: artistsAutocompleteDataSource,
valuesDisplayFn = (item) => item.fullName ? item.fullName : item.name,
}
]
Une AutocompleteDataSource étend une DataSource mais reçoit en plus un observable qui représente les variables de la query. Ainsi elle est autonome pour faire correspondre la recherche de l'utilisateur dans le natural-search et recevoir les résultats correspondant.
Recherche dans un champ numérique
Numéro simple :
[
{
display: 'Taille',
attribute: 'size',
type: 'numeric',
min : 0,
max : 100
}
]
Plage :
[
{
display: 'Taille',
attribute: 'size',
type: 'range',
min : 0,
max : 100,
minRequired : false,
maxRequired: true,
}
]
Tel que configuré ci-dessus, la plage autorise un maximum, mais pas un minimum ce qui signifie un numéro plus petit que 100 doit être entré pour valider le filtre.
Valeurs discrètes :
[
{
display: 'Taille',
attribute: 'size',
type: 'range', // si indéfini, n'acceptera qu'une valeur
values : [0, 3, 7, 11, 13, 17],
minRequired : false,
maxRequired: true,
}
]
Dans ce cas, si l'utilisateur saisie un numéro entre les valeurs fournies, il sera remplacé par le plus proche.
Mais encore ...
D'autres types pourront venir enrichir cette liste non exhaustive, p.ex un slider pourrait être l'une des prochaines étapes pour les valeurs numériques. Le slider d'okpilot, bien que trop complet a été conçu dans la lignée des composants et pourrait assez facilement être porté ici.