# Guide de Démarrage Rapide - Graph View & Search Assistant ## 🚀 Lancement ```bash # Installation des dépendances (si nécessaire) npm install # Démarrage du serveur de développement npm start # L'application sera accessible sur http://localhost:4000 ``` ## 📍 Accès aux Fonctionnalités ### 1. Assistant de Recherche (3 emplacements) #### A. Barre Latérale (Vue Mobile/Desktop) 1. Cliquer sur l'icône de recherche dans la navigation 2. Le champ de recherche avec assistant apparaît 3. Focus → popover s'ouvre automatiquement #### B. Header Central (Vue Desktop) 1. Barre de recherche toujours visible en haut 2. Focus → popover s'ouvre avec suggestions #### C. Graph Settings → Filters 1. Ouvrir Graph View (icône graphe) 2. Panel "Graph settings" à droite 3. Section "Filters" → champ "Search files..." ### 2. Graph View avec Filtres **Accès:** 1. Cliquer sur l'icône Graph View (4ème icône navigation) 2. Panel "Graph settings" s'ouvre à droite **Filtres disponibles:** - ☑️ **Tags**: Afficher les nœuds de tags (#code, #todo, etc.) - ☑️ **Attachments**: Afficher fichiers PDF, PNG, etc. - ☑️ **Existing files only**: Masquer les liens non résolus - ☑️ **Orphans**: Afficher les nœuds sans connexions **Recherche avancée:** - Taper dans "Search files..." pour filtrer par requête Obsidian ### 3. Groups (Colorisation) **Créer un groupe:** 1. Graph View → Section "Groups" 2. Cliquer "New group" 3. Éditer la requête (ex: `tag:#code`, `file:test`, `path:folder/`) 4. Le groupe colore automatiquement les nœuds matchant **Gérer les groupes:** - **Modifier**: Éditer directement la requête dans l'input - **Supprimer**: Cliquer l'icône ❌ - **Réorganiser**: L'ordre détermine la priorité (haut = prioritaire) ## 🔍 Syntaxe de Recherche Obsidian ### Préfixes Supportés | Préfixe | Description | Exemple | |---------|-------------|---------| | `path:` | Chemin du fichier | `path:folder/subfolder/` | | `file:` | Nom du fichier | `file:readme` | | `tag:` | Tag Obsidian | `tag:#todo` ou `tag:#code` | | `line:` | Mots sur la même ligne | `line:important deadline` | | `section:` | Sous le même heading | `section:Introduction` | | `[property]` | Propriété YAML | `[title:test]` ou `[author]` | ### Opérateurs | Opérateur | Description | Exemple | |-----------|-------------|---------| | `OR` | Union (l'un OU l'autre) | `tag:#todo OR tag:#urgent` | | `AND` | Intersection (implicite) | `tag:#code file:test` | | `-` | Exclusion (NOT) | `-tag:#done` | | `"..."` | Phrase exacte | `"exact phrase"` | | `*` | Wildcard | `test*` ou `*ing` | | `()` | Groupes | `(tag:#a OR tag:#b) file:test` | ### Exemples de Requêtes ``` # Fichiers avec tag #code tag:#code # Fichiers dans le dossier "docs" path:docs/ # Fichiers contenant "TODO" mais pas "DONE" TODO -DONE # Tags #todo OU #urgent dans le dossier "projects" (tag:#todo OR tag:#urgent) path:projects/ # Fichiers avec propriété YAML "author: John" [author:John] # Phrase exacte "fonction principale" # Wildcard sur nom de fichier file:test* ``` ## 📚 Utilisation de l'Assistant ### Options de Recherche (Cliquables) Au focus dans un champ de recherche, le popover affiche: ``` ┌─────────────────────────────────────┐ │ Search options ⓘ Help │ ├─────────────────────────────────────┤ │ path: match path of the file │ │ file: match file name │ │ tag: search for tags │ │ line: search keywords on line │ │ section: search under same heading │ │ [property] match property │ └─────────────────────────────────────┘ ``` **Cliquer une option** → insère le préfixe dans l'input ### Suggestions Dynamiques **Taper `path:`** → Liste des dossiers: ``` ┌─────────────────────────┐ │ attachments │ │ folder │ │ deep │ │ deep/path │ │ tata/briana │ └─────────────────────────┘ ``` **Taper `tag:`** → Liste des tags: ``` ┌─────────────────────────┐ │ #code │ │ #todo │ │ #markdown │ │ #test │ └─────────────────────────┘ ``` **Taper `file:`** → Liste des fichiers: ``` ┌─────────────────────────┐ │ README.md │ │ test.md │ │ welcome.md │ └─────────────────────────┘ ``` ### Historique Après avoir soumis des requêtes, l'historique apparaît: ``` ┌─────────────────────────────────────┐ │ History Clear history │ ├─────────────────────────────────────┤ │ tag:#code OR tag:#test │ │ path:docs/ │ │ file:readme │ │ [description:page] │ └─────────────────────────────────────┘ ``` - **Cliquer un item** → applique la requête - **Clear history** → vide l'historique (localStorage) - **Maximum**: 10 requêtes récentes ### Navigation Clavier - **↓** : Sélectionner suggestion suivante - **↑** : Sélectionner suggestion précédente - **Enter** : Appliquer suggestion sélectionnée - **Esc** : Fermer le popover ## 🎨 Colorisation avec Groups ### Exemple: Colorer tous les fichiers de test en rose 1. Graph View → "Groups" → "New group" 2. Query: `file:test` 3. Le groupe applique automatiquement la couleur rose aux fichiers contenant "test" ### Exemple: Colorer par tags ``` Groupe 1 (violet): tag:#code Groupe 2 (bleu): tag:#documentation Groupe 3 (vert): tag:#todo ``` **Priorité**: Si un fichier a `#code` ET `#todo`, il sera violet (groupe 1 prioritaire) ### Exemple: Colorer par dossier ``` Groupe 1 (rouge): path:important/ Groupe 2 (jaune): path:drafts/ Groupe 3 (gris): path:archive/ ``` ## 🔧 Configuration Persistée ### Fichier `.obsidian/graph.json` Tous les réglages sont sauvegardés automatiquement: ```json { "search": "tag:#code", "showTags": true, "showAttachments": true, "hideUnresolved": true, "showOrphans": true, "colorGroups": [ { "query": "file:test", "color": { "a": 1, "rgb": 14701188 } } ], "showArrow": true, "textFadeMultiplier": -1.7, "nodeSizeMultiplier": 1, "lineSizeMultiplier": 1, "centerStrength": 0.518713248970312, "repelStrength": 10, "linkStrength": 0.690311418685121, "linkDistance": 102 } ``` - **Debounce**: 250ms après modification - **Polling**: Détection changements externes toutes les 2s - **Atomic writes**: .tmp + rename pour éviter corruption ### localStorage Historiques de recherche stockés par contexte: ``` obsidian-search-history-vault-sidebar → Sidebar mobile obsidian-search-history-vault-header → Header desktop obsidian-search-history-graph → Graph filters ``` ## 🐛 Dépannage ### Le popover ne s'ouvre pas - Vérifier que le focus est bien dans l'input - Console browser → chercher erreurs JavaScript ### Les suggestions sont vides - Vérifier que le vault contient des fichiers/tags - L'index se rebuild au chargement des notes - Console → vérifier `GraphIndexService.rebuildIndex` appelé ### Les filtres ne s'appliquent pas - Vérifier `.obsidian/graph.json` existe et est valide JSON - Recharger la page pour forcer rechargement config - Tester avec config minimale ### Les couleurs de groupe ne s'appliquent pas - Vérifier syntaxe de la requête (utiliser l'assistant) - Tester requête dans "Search files..." d'abord - Vérifier ordre des groupes (priorité haut → bas) ## 📊 Vérification de Parité ### Checklist Image 1 vs ObsiViewer - [ ] Même nombre de nœuds visibles - [ ] Tags affichés comme nœuds (#code, #markdown, etc.) - [ ] Attachments visibles (PDF, PNG) - [ ] Liens vers fichiers non résolus masqués (si "Existing files only") - [ ] Orphans affichés/masqués selon toggle - [ ] Groupe rose appliqué aux fichiers matchant `file:test` - [ ] Flèches sur les arêtes (si "Arrows" activé) ## 🎯 Cas d'Usage Courants ### 1. Trouver tous les TODOs urgents ``` tag:#todo tag:#urgent -tag:#done ``` ### 2. Documentation projet spécifique ``` path:docs/project-x/ file:*.md ``` ### 3. Fichiers récents avec keyword ``` "important meeting" [date:2024-10] ``` ### 4. Code non testé ``` path:src/ -file:*test* -file:*spec* ``` ### 5. Groupe de couleurs par statut ``` Groupe 1 (vert): tag:#done Groupe 2 (jaune): tag:#in-progress Groupe 3 (rouge): tag:#blocked ``` ## 📖 Ressources - **Documentation complète**: `GRAPH_VIEW_SEARCH_IMPLEMENTATION.md` - **Tests**: `src/core/search/search-parser.spec.ts` - **Obsidian Search Docs**: https://help.obsidian.md/Plugins/Search --- **Bon usage! 🎉**