Repository navigation
Conversation
… naviguer Sans historique dédié, le bouton Retour retombait sur la navigation du routeur et faisait défiler les vues Graphe/Data au lieu de fermer la popup d'édition ouverte. Une entrée d'historique factice est maintenant empilée à l'ouverture d'une popup, consommée par Retour (qui ferme alors la popup) ou par toute autre fermeture (Annuler, soumission, clic extérieur...).
Toutes les navigations entre les vues Graphe et Data (onglets du header, bascule nœuds/liens, "Afficher dans les données", "Ouvrir dans le graphe", localisation) utilisent maintenant un remplacement d'historique plutôt qu'un empilement. Basculer plusieurs fois entre les deux vues n'accumule donc plus d'entrées d'historique : le bouton Back ne peut plus les dépiler une à une jusqu'à sortir de l'application sans avoir sauvegardé.
…auvegardées Tant qu'il y a des modifications non sauvegardées, le navigateur affiche sa confirmation native "quitter le site ?" lorsqu'on quitte réellement le document (bouton Retour qui sort, fermeture d'onglet, rechargement). Aucune gêne pour la navigation interne entre les vues Graphe et Data, et aucune confirmation quand il n'y a rien à perdre.
…sauvegardé Le beforeunload ne suffit pas : sur mobile (ex. Firefox Android), le bouton Back ne le déclenche pas. On piège donc le Back via l'historique : une entrée "garde" est maintenue en haut de la pile, sur laquelle le Back retombe. Selon le contexte : - une popup ouverte est fermée (et la garde est ré-empilée) ; - s'il y a des modifications non sauvegardées, une confirmation est demandée avant de réellement quitter ; - sinon, on quitte normalement. Le beforeunload est conservé pour couvrir le rechargement et la fermeture d'onglet. Fusionne l'ancien effet "Back ferme la popup" et l'effet beforeunload en une seule logique de garde. Les nettoyages d'URL de l'initialisation passent en replaceState pour ne pas enterrer la garde.
…ement Recharger la page (ou créer un nouvel espace de travail) restaure l'état du graphe/apparence/filtres via de nouveaux objets, ce qui déclenchait à tort le marquage "modifié" (comparaison par référence), alors qu'aucune édition n'avait eu lieu. isDirty est maintenant explicitement remis à false après ces restaurations, comme c'était déjà le cas après l'ouverture d'un fichier.
Sur mobile, l'en-tête (Workspace/Graphe/Data) est ancré en bas de l'écran (flex-direction: column-reverse), donc un bandeau ancré en bas finissait par chevaucher les icônes de zoom/sélection du graphe. Le haut du graphe, lui, est toujours libre (mobile comme desktop).
1) À la création d'un nœud, une recherche floue (même index que la barre de recherche) compare le champ utilisé comme libellé (ou l'ID à défaut) aux nœuds existants, et affiche les correspondances : cliquer en annule la création et localise le nœud existant. 2) À la création d'un lien, si un lien relie déjà les deux nœuds sélectionnés (dans un sens ou l'autre), un avertissement apparaît ; cliquer dessus annule la création et sélectionne/localise le(s) lien(s) existant(s).
Ouvrir "Créer un nouveau nœud/lien" ou éditer un nœud/lien existant ne positionnait le focus sur aucun champ (ou de façon incohérente pour les liens), obligeant à cliquer avant de pouvoir taper. Le focus se porte maintenant sur le premier champ vide, dans l'ordre d'affichage (attributs, position, id pour les nœuds ; source, cible, attributs, id pour les liens), via un helper partagé getFirstEmptyValueIndex. Si tous les champs sont déjà remplis (édition d'un nœud/lien complet), aucun focus n'est forcé. Le champ couleur et le multi-édition en bénéficient aussi.
# Conflicts: # packages/gephi-lite/src/components/data/EditEdge.tsx # packages/gephi-lite/src/components/data/EditNode.tsx
…our lors de la saisie
Le calcul du nom recherché dépendait de la référence du tableau attributes
(watch("attributes")), qui peut être muté en place selon le contexte de
rendu (ex : modale ouverte depuis la page Graph) au lieu d'être remplacé.
React ne détectait alors aucun changement et l'avertissement ne se
mettait jamais à jour pendant la saisie. Le calcul dépend maintenant de
la valeur scalaire du champ label elle-même.
…é du graphe - Déplacer le type de graphe (ex : "Réseau mixte") au-dessus des compteurs de nœuds et de liens. - Sous chaque compteur, afficher l'item de ce type dont la date de mise à jour est la plus récente (nœud : pastille + label ; lien : source → cible via le composant Edge existant), cliquable pour le localiser dans le graphe. - Sous chaque item, indiquer sa date de mise à jour. Le calcul réutilise le champ système update_date déjà maintenu sur chaque item. Pour que la fonctionnalité marche quel que soit le mode de chargement, setGraphDataset garantit désormais les champs de dates système sur tout remplacement complet du dataset (idempotent pour les données déjà datées), alignant le chargement de fichier natif sur l'import graphology et la restauration de session.
Les deux blocs Nodes/Edges se retrouvaient empilés au lieu d'être côte à côte, car le panneau (largeur fixe 256px) était trop étroit pour deux colonnes de largeur minimale 8rem avec retour à la ligne. En passant chaque colonne en flex égal (au lieu d'une largeur minimale fixe), les deux colonnes tiennent désormais côte à côte. Le type de graphe (ex : "Réseau mixte") est déplacé de son emplacement au-dessus des compteurs vers la colonne Nodes, juste sous la date du nœud le plus récent : il se retrouve ainsi sur la même ligne que la cible du lien le plus récent dans la colonne Edges.
…de nœud/lien
Sur mobile, le clavier virtuel peut recouvrir le bouton de validation
situé en bas de la modale pendant la saisie d'un champ. Le composant
Modal partagé accepte désormais un prop submitLabel : quand il est
fourni, un bouton de soumission est affiché dans l'en-tête, à gauche de
la croix de fermeture, toujours visible au-dessus du clavier.
Pour l'édition de nœud et de lien, ce bouton (libellé "OK") remplace
celui du pied de la modale, qui reprenait jusqu'ici le texte du titre
("Edit existing node"/"Create new node", etc). Le panneau latéral de
création (Data page), qui réutilise le même formulaire hors modale,
garde inchangé son bouton de soumission en pied de panneau.
Chevron vers le haut quand la barre est dépliée (il la replie), vers le bas quand elle est repliée (il la rouvre), à la place du hamburger. Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…ier la seconde barre mobile Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…bile, menu Workspace toujours visible Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…r (dès 2 caractères) Le filtre ne réduit que la liste affichée : sélection, graphe et actions du volet restent inchangés. Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…liens sélectionnés
…filement, titre réduit ; textes du filtre ajoutés à la langue dev Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…volet Liens sélectionnés
…ur des nœuds) Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
… éléments non sélectionnés
…és un contour identique à leur surface Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…x de la branche de feature Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…qués avec eux Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…s nœuds extrémités (triés), saisie libre conservée Choisir un nœud ne garde que les liens qui le touchent ; le texte libre filtre comme avant. Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
… tactile, texte choisi toujours visible Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
…le, et un appui dans le champ rend le clavier Claude-Session: https://claude.ai/code/session_01JnTcfrRgqYuc9P2F4gZdVx
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull request type
Check the type of change your PR introduces:
Summary of changes (
d906a95→65d89a9)This range covers the full set of changes accumulated on this fork since the base commit, spanning many feature/fix branches merged into
developand periodically promoted tomain_jg.Save & session
getFile/getFileContent)Node & Edge editing
updateEdge, add a swap button in the edit form, and an "Invert arrow's direction" menu item [Add button to invert Source and Target of an Edge #321]Formula (scripted) columns & data columns
Selection panel & Graph view
Search
Data tables
Filters
Color palette
Mobile & navigation
mouseenterwith no matchingmouseleave), intercepting taps on the buttons underneathDefault labels
Label rendering
Pre-production banner & CI
develop; configure GitHub Pages for this fork; grantcontents:writepermission to the deploy workflowMisc / internal
fullGraphreference changesmerge --no-ff)