Sélectionner un nœud du graphe et afficher la fiche de l’entité #65
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sélectionner un nœud du graphe et afficher la fiche de l’entité
Contexte
La vue graphique permet désormais :
Ctrl+ défilement ;Shift+ glisser ;Les nœuds sont visibles et manipulables, mais il n’est pas encore possible de sélectionner une entité ni de consulter ses informations depuis le graphe.
Objectif
Permettre à l’utilisateur de sélectionner un nœud par un clic simple et d’afficher les informations principales de l’entité correspondante.
La sélection doit rester entièrement en lecture seule dans ce ticket.
Interaction attendue
Un clic ne doit être considéré comme une sélection que lorsqu’aucun déplacement significatif n’a été détecté.
Architecture attendue
InvestigationGraphView
InvestigationGraphViewdoit :EntityRecord.Workspace
Workspacedoit :Application et MainWindow
Applicationreste propriétaire du graphe.MainWindowpeut continuer à jouer un rôle de relais si nécessaire, mais aucune logique métier ne doit y être ajoutée.API publique proposée
Ajouter dans
investigation_graph_view.h:Le callback reçoit un pointeur emprunté au graphe.
Il doit recevoir
NULLlors d’une désélection.État privé proposé
La vue peut conserver :
selected_nodeest emprunté à la disposition privée de la vue.Il doit être remis à
NULLlors :investigation_graph_view_clear();investigation_graph_view_reset_layout()si la disposition est reconstruite ;Détection du clic
Le geste de glisser actuel peut être complété par un
GtkGestureClickou par une détection fiable entre début et fin du geste.Le comportement doit distinguer :
Une petite tolérance de mouvement peut être utilisée afin d’éviter qu’un tremblement du pointeur transforme un clic en déplacement.
Priorité des gestes
L’ordre de priorité attendu est :
Shift+ glisser : déplacement du canvas ;Un glisser terminé sur un nœud ne doit pas déclencher une sélection accidentelle en fin de geste.
Rendu de la sélection
Le nœud sélectionné doit rester lisible et être clairement identifiable.
Une différence visuelle légère suffit, par exemple :
Les couleurs ne doivent pas être codées en fonction du type métier dans ce ticket.
Le nœud sélectionné doit être dessiné au premier plan lorsque plusieurs nœuds se chevauchent.
Fiche de l’entité
La fiche doit afficher au minimum :
Les champs facultatifs absents doivent afficher un texte de remplacement clair.
Le niveau de confiance doit être affiché sous une forme lisible, par exemple :
Le statut doit être converti en texte utilisateur :
Intégration dans Workspace
La fiche ne doit pas remplacer définitivement le canvas.
Disposition recommandée :
GtkPanedhorizontal ;Le panneau de détails peut utiliser un
GtkScrolledWindowafin de rester utilisable dans une petite fenêtre.Le comportement existant des pages de chargement et d’erreur doit être conservé.
Gestion de la mémoire
Applicationpossède leInvestigationGraphModel.InvestigationGraphViewemprunte le graphe et lesEntityRecord.Workspacene possède pas l’entité sélectionnée.user_datasont empruntés.investigation_graph_view_free()doit détacher le callback.Gestion des erreurs
Une entité invalide ou absente ne doit jamais provoquer de crash.
En cas de sélection incohérente :
Hors périmètre
Ce ticket n’inclut pas :
Ces fonctions feront l’objet de tickets séparés.
Critères d’acceptation
Shift+ glisser continue de déplacer le canvas.investigation_graph_view_clear()supprime la sélection.EntityRecord.make clean && makeréussit avec-Werror -Wpedantic.make testréussit.git diff --checkne signale aucune erreur.Plan d’implémentation conseillé
InvestigationGraphView.Workspace.Validation manuelle