Many enhancements: node/edge editing, formula columns, selection panel, Github check before save, mobile UX & pre-production CI... - #332
Open
JeanGarf wants to merge 302 commits into
Open
Many enhancements: node/edge editing, formula columns, selection panel, Github check before save, mobile UX & pre-production CI...#332JeanGarf wants to merge 302 commits into
JeanGarf wants to merge 302 commits into
Conversation
À la création, la valeur de weight saisie était écrasée par 1 : allAttributes fusionnait les attributs du formulaire puis "...pick(data, 'label','color','weight')", où data.weight valait toujours 1 (défaut du nouvel edge, jamais modifié car ce n'est pas un champ enregistré du formulaire). Suppression du défaut weight:1 et de l'override pick : la valeur saisie via le tableau d'attributs devient l'unique source de vérité. Un weight non renseigné reste traité comme 1 par les algorithmes (getEdgeWeight par défaut).
# Conflicts: # packages/gephi-lite/src/components/data/EditEdge.tsx
Depuis le volet Selected Nodes, un clic sur "+" préremplissait déjà la source. Désormais, si exactement deux nœuds sont sélectionnés, la cible est préremplie avec l'autre nœud et le focus se place sur le premier champ de saisie suivant target (le premier attribut). Avec un seul nœud, comportement inchangé (target vide, focus sur target).
Ajout d'un champ defaultValue au FieldModel (SDK), éditable via le formulaire créer/modifier un attribut (EditFieldModel) avec l'éditeur typé EditItemAttribute. Les formulaires de création de node et edge initialisent chaque champ avec la valeur par défaut de l'attribut. Uniquement à la création, pas de rétro-remplissage des items existants.
Chaque node et edge reçoit désormais deux attributs système en lecture seule (type date, format yyyy-MM-dd HH:mm:ss), toujours affichés en dernières colonnes du tableau de données, dans l'ordre Update Date puis Creation Date : - Creation Date est fixée à la création (ou à l'import) et ne change plus. - Update Date est rafraîchie à chaque modification des attributs ou des extrémités d'un edge (pas lors d'un simple déplacement de node). Ces champs sont exclus des formulaires de création/édition manuelle et de l'édition inline du tableau, et les nouveaux attributs créés par l'utilisateur s'insèrent toujours avant eux.
Les colonnes de dates n'étaient ajoutées qu'à la création/modification d'un node/edge ou à l'import d'un fichier. Un graphe déjà présent dans le stockage local du navigateur (rechargement de session) contournait ce mécanisme et n'affichait jamais ces colonnes. Au chargement d'un dataset depuis la session, les champs manquants sont désormais complétés avec la date du jour.
Les attributs scriptés deviennent des colonnes "formule" dont le script est stocké dans le FieldModel (donc persisté avec le dataset) et dont les valeurs sont recalculées à la volée par le pipeline des attributs dynamiques. - SDK : ajout de FieldModel.script (FieldScriptFunction), sérialisé automatiquement grâce au support des fonctions dans gephiLiteStringify. - dynamicItemDataAtom évalue aussi les champs script du modèle : recalcul au chargement, à l'édition d'un nœud/arête, au changement de topologie ou de script. Une erreur de script laisse la cellule vide sans tout interrompre. - Le menu "scripted attribute" stocke désormais le script au lieu de figer les valeurs, avec un mode édition pour re-modifier le script. - Table de données : colonnes formule en lecture seule, le menu de colonne "modifier" rouvre l'éditeur de script. - Les champs script sont exclus des formulaires de création/édition de nœud/arête et d'édition multiple (ils sont calculés).
# Conflicts: # packages/gephi-lite/src/components/data/EditEdge.tsx # packages/gephi-lite/src/components/data/EditMultipleItems.tsx # packages/gephi-lite/src/components/data/EditNode.tsx # packages/gephi-lite/src/core/graph/index.ts # packages/gephi-lite/src/views/dataPage/dataTable/useDataTableColumns.tsx # packages/sdk/src/graph/types.ts
À l'export GEXF, les valeurs calculées des champs "formule" (script) sont désormais écrites comme attributs statiques sur le graphe exporté, afin d'apparaître dans le fichier GEXF. Cette matérialisation ne modifie que le graphe d'export construit à la volée par dataGraphToFullGraph : le dataset, les définitions de formule et la sauvegarde native .gephi-lite restent inchangés.
Sur mobile (< 576px), sélectionner un item déploie un panneau qui prend 50% de la hauteur ; la zone graphe (.filler) rétrécit via une transition CSS. Comme le bouton "Localiser" fait select() puis focus() de façon synchrone, le cadrage était calculé sur la bande pleine hauteur (avant déploiement du panneau), puis le panneau recouvrait la moitié basse. focusCameraOnEdges attend désormais que la zone graphe se stabilise avant de cadrer, pour tenir compte du panneau. Sur desktop rien ne change (la bande est déjà stable, le cadrage est immédiat). Correctif candidat à valider sur un vrai appareil Android.
Les navigateurs mobiles (Android, iOS) n'affichent pas les spin buttons natifs de <input type="number">, laissant les champs numériques sans moyen visible d'incrémenter/décrémenter. Ajout d'un composant NumberInput ([−] champ [+]) utilisé par l'éditeur numérique (table de données, formulaires de création/édition, valeur par défaut…). Les spin buttons natifs sont masqués en CSS pour éviter les doublons sur desktop : le stepper est ainsi identique sur toutes les plateformes.
Nouvelle chaîne d'intégration continue (deploy-app-preprod.yml) déclenchée à chaque push sur develop : build de l'app puis déploiement dans la branche gh-pages sous le sous-chemin /preprod/, à côté de la production (déployée depuis main_jg à la racine). La prod n'est jamais touchée (clean: false, écriture sous preprod/ uniquement) ; analytics Matomo désactivé sur la préprod. URLs : - prod : https://jeangarf.github.io/gephi-lite/ (main_jg) - préprod : https://jeangarf.github.io/gephi-lite/preprod/ (develop) Ajout d'un bandeau "PRÉ-PRODUCTION" (PreproductionBanner) affiché uniquement quand l'app est buildée avec VITE_PREPRODUCTION (défini par ce workflow), pour distinguer visuellement l'instance de préprod de la prod.
…t tapé s'il n'existe pas, avec confirmation
Créer un node à la volée depuis le formulaire d'edge
…r mobile Sur Android, le bouton affichait le code de la langue en texte (ex. "dev"), ce qui prenait trop de place et poussait l'icône de signalement de bug hors de l'écran sur les petits viewports.
datatable.save_and_update_column and graph.remote_changed.message are only reached through variables (saveAndRunI18nKey, messageKey), so the static AST checker can't see the t() call site and flags them as unused. Ignore them the same way datatable.save_and_create_column (same pattern, same file) already is.
Sur mobile, remplacer le libellé texte de la langue par une icône
…sur PC Remplace les 3 icônes séparées du menu burger mobile (Home, Signaler, Signaler auto) par le même bouton + menu déroulant que sur desktop, ce qui supprime l'icône "Signaler auto" isolée.
Sur mobile, l'icône bug ouvre un menu Signaler / Signaler auto comme sur PC
…f5-b4bc-c49e4c4c6de0 Fix: popup de création/édition Node/Edge/attribut trop large sur mobile
…node à la volée), fix popups/tooltips mobile, sélecteur de langue mobile
…mpteur Nodes/Edges Evite que le clavier virtuel Android ne cache la liste de resultats du champ fuzzy.
Remonter le champ de recherche fuzzy entre le titre et le compteur Nodes/Edges
Renommer le bouton de report en "Report an issue using feedback-service"
…nien (feedback-service reste non traduit)
Traduit le libellé 'Report an issue using feedback-service'
… dernière spatialisation utilisée
…p de la derniere spatialisation
Icône play/stop sous Réseau mixte pour la dernière spatialisation
Déplace l'icône play/stop de la dernière spatialisation à côté du bouton Data
… spatialisation à côté du bouton Data
On small viewports (Android), the deployed side panel covers most of the screen height, but the floating sigma controls (zoom, selection mode...) are pinned to the viewport bottom-right and end up rendered above it, overlapping the panel footer buttons (e.g. layout Play/Stop).
…026-822a-f3252d375bbc Fix: bouton + de zoom masqué par le bouton Play/Stop sur mobile
Déplace l'icône Play/Stop à gauche du bouton de thème
…e Réseau/Données)
Conserve Graph/Data en anglais en mode français
…n volet est déployé sur mobile, icône Play/Stop à gauche du bouton de thème, termes Graph et Data conservés en anglais en mode français
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→627860e)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
Fix GitHub file being overwritten after creating a new workspace (Critical Bug)
Add a save icon next to "Workspace", greyed out until there are unsaved changes
Persist session settings (layout & metrics parameters) together with the graph
Warn before editing a GitHub file that has become stale, checked as soon as the create/edit popup opens
Re-arm the freshness check every ~1 minute (down from 5) and re-check before every save
Fix a save deadlock and add an "Overwrite" button to the conflict popup
Save-conflict popup: all 3 buttons visible on mobile, "Keep" selected by default
Fix a reload loop (the internal reference date wasn't refreshed after Reload)
Disable the HTTP cache on gist reads (
getFile/getFileContent)Fix a freshness false positive: memorize the open date from the same detail endpoint used by the periodic checks, instead of the list endpoint; add a 1s tolerance to absorb transient GitHub timestamp inconsistencies
Stop flagging a remote change that isn't one (real content comparison, not date alone)
Fix the two remaining root causes of false "modified on GitHub" alerts: fingerprint mismatch between sent and remote-returned bytes, and an un-persisted "keep my changes" acknowledgment causing repeated re-warnings
Open from GitHub: the last opened file is now really preselected (not just visually), so "Open" works immediately
Node & Edge editing
Avoid Gephi Lite to crash when deleting an Edge [Deleting Edge makes Gephi lite to crash #318] (critical bug)
Prevent creation of duplicate nodes/edges
Support changing edge extremities (source/target) via
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 ]Pre-fill default attribute values on node/edge creation [Default value for attributes #326 ]
Auto-focus the first empty field in node/edge modals
Numeric attributes: cross-platform +/− stepper
Add a validation button in the modal header and duplicate the OK button in the modal footer (espacially for Android)
Fix edge weight resetting to 1 on creation [weight field is reseted to 1 #322 ]
Move ID field to the end of node/edge create/edit forms and data columns; move x/y position fields to the end of the edit form
Fix Escape not closing the node/edge create/edit popups
Confirm before losing unsaved input when closing the editor (Back button, Escape, click-outside, and both close crosses all go through the same confirmation)
Formula (scripted) columns & data columns
Scripted columns: persisted script, live recompute, editable label, and a "Freeze values" action to materialize computed values into a static attribute
Add automatic "Update Date" / "Creation Date" columns, with backfill for graphs already loaded in session
GEXF export now materializes formula column values
Rename "Delete attribute" → "Delete column"; rename "Identifier" → "ID"
Fix the Label caption for scripted attributes: back to a plain fixed "Label" instead of computing it from the current display label (Appearance)
Selection panel & Graph view
Search
Data tables
Filters
Color palette
Mobile & navigation
Default labels
Pre-production banner & CI
develop; configure GitHub Pages for this fork; grantcontents:writepermission to the deploy workflowMisc / internal
fullGraphreference changesmerge --no-ff)