Recherche et navigation
Retrouver un contenu et comprendre pourquoi il apparaît.
Rechercher dans le bon contexte
La recherche retrouve les objets autorisés et leur contexte. Un résultat doit permettre d’identifier l’objet, son Workspace et le contenu utile avant de l’ouvrir. Dans une collection, les contrôles de recherche s’appliquent au périmètre déclaré par sa Query.
| Contrôle | Valeur attendue | Effet |
|---|---|---|
| Recherche | Texte saisi par l’usager | Restreindre les objets du périmètre |
| Filtre | Valeur admise pour le Field ou paramètre | Limiter la collection |
| Tri | Colonne autorisée et direction | Organiser les résultats |
| Pagination | Page ou continuation disponible | Accéder aux résultats suivants |
Exemple
Dans Soumissions, recherchez Atelier Nord et filtrez sur À approuver. Le résultat doit conserver le lien vers le client et permettre d’ouvrir chaque proposition. Dans le sélecteur Client d’une nouvelle soumission, recherchez le même nom : vous sélectionnez cette fois une identité cible plutôt qu’une soumission.
Résultats vides ou incomplets
Vérifiez le Workspace courant, les filtres et les droits avant de conclure qu’un objet n’existe pas. Une absence d’accès ne doit pas être contournée par une autre vue. Un chargement incomplet ne doit pas être présenté comme une collection vide.
Pour définir une recherche dans votre app, consultez les Queries; pour rechercher cette documentation, utilisez le bouton en haut de la page ou Ctrl/⌘ K.
Exemples appliqués : Rechercher et filtrer les soumissions
Le contrôle État fournit un paramètre déclaré; la Query conserve ses limites et les droits.
Configuration
Fragment à placer dans queries[].controls. Propriétés et valeurs admises.
{
"contract": "WorkspaceQueryControls@1",
"filters": [
{
"parameterKey": "status",
"label": "État",
"input": "choice",
"options": [
{
"value": "draft",
"label": "Brouillon"
},
{
"value": "approved",
"label": "Approuvée"
}
]
}
],
"sort": null
}
Variante et raccordement
Fragment à placer dans queries[]. Propriétés et valeurs admises.
{
"contract": "WorkspaceQuery@1",
"key": "client-quotes",
"label": "Soumissions du client",
"spaceKeys": [
"quotes"
],
"definitionPaths": [
"workspace/quotes/surface/quote"
],
"parameters": [
{
"key": "clientId",
"type": "node-id",
"required": true
},
{
"key": "status",
"type": "text",
"required": false
}
],
"predicates": [
{
"fieldKey": "status",
"operator": "eq",
"parameterKey": "status",
"value": null
}
],
"relations": [
{
"linkTypePath": "application/client",
"direction": "outgoing",
"parameterKey": "clientId",
"distinct": true
}
],
"orderBy": [
{
"fieldKey": "updatedAt",
"direction": "descending"
}
],
"aggregate": "none",
"pageSize": 25,
"maximumDepth": 1
}
Exemple de disposition UI
La disposition illustrative ci-dessous situe cette configuration dans l’app Clients/Soumissions. Chaque fragment s’insère à l’emplacement indiqué; ses références aux Fields, Queries et Actions correspondent aux déclarations du Model.
- Numéro
- État
- Montant
- Dernière mise à jour
| Numéro | État | Montant | Ouvrir |
|---|---|---|---|
| S-1042 | Brouillon | 12 500 | ↗ |
| S-1041 | Approuvée | 8 200 | ↗ |
| S-1040 | Envoyée | 4 750 | ↗ |