Comparaison entre MaxGraph.js et MxGraph.js

J’utilise depuis peu MaxGraph.js sous Next.js, pour créer des diagrammes techniques. MaxGraph.js est un Fork de la librairie MxGraph.js. Elle introduit des évolutions intéressantes.

Le développement de mxGraph à été stoppé le 09.11.2020.

J’ai utilisé la documentation, des exemples MxGraph.js pour comprendre la librairie, les fonctions et les objets.

Depuis peu, je suis en train de convertir des projets Draw2D , et mxGraph vers MaxGraph.


mxGraph 4.2.2

mxGraph is a JavaScript diagramming library that enables interactive graph and charting applications to be quickly created that run natively in any major browser that is supported by its vendor.

mxGraph est sous licence. Apache License 2.0.

La librairie à été crée en 2005.

La librairie a été utilisé pour créer Draw.IO . Une plateforme pour créer des diagrammes et des organigrammes

Le développement des sources mxGraph public à été stoppé le 09.11.2020.

mxGraph est une bibliothèque bien établie, mais son développement actif a été arrêté après son acquisition par JGraph Ltd. (créateurs de Diagrams.net).

( NOTE 09.11.2020 : Development on mxGraph has now stopped, this repo is effectively end of life.)

maxGraph V0.15.0

MaxGraph est un fork des sources MxGraph.

maxGraph est une bibliothèque TypeScript qui permet d’afficher et d’interagir avec des diagrammes vectoriels. À un niveau élevé, elle propose :

  • Des nœuds, également appelés sommets, qui sont généralement représentés par des formes comme des rectangles.
  • Des arêtes, qui peuvent être des lignes ou des flèches, reliant généralement un nœud à un autre.

Elle offre de nombreuses fonctionnalités de diagrammes que l’on pourrait attendre d’un logiciel de présentation comme Microsoft® PowerPoint™ ou LibreOffice® Impress, telles que la possibilité de redimensionner, déplacer ou faire pivoter des nœuds. Cependant, elle se concentre davantage sur les algorithmes de disposition automatique et les applications de la théorie des graphes. Elle est particulièrement adaptée aux logiciels nécessitant une personnalisation plus fine des fonctionnalités que les solutions prêtes à l’emploi.

La bibliothèque maxGraph n’utilise aucun logiciel tiers, ne nécessite aucun plugin et peut être intégrée à pratiquement n’importe quel framework (elle est en JavaScript natif).

maxGraph est le successeur de mxGraph, qui n’est plus maintenu. Initialement, elle propose les mêmes fonctionnalités que mxGraph, tout en ajoutant :

  • Le support de TypeScript.
  • Un package npm maintenu.
  • Une version moderne, modulaire et tree-shakable de mxGraph, afin de réduire la taille totale du package.

Points clés :

  1. maxGraph est une bibliothèque TypeScript moderne et légère.
  2. Elle est conçue pour des applications nécessitant une personnalisation avancée et des algorithmes de graphes.
  3. Elle est compatible avec tous les frameworks grâce à son utilisation de JavaScript natif.
  4. Elle succède à mxGraph en apportant des améliorations comme le support de TypeScript et une architecture modulaire.

Voici un tableau de comparaison entre maxGraph et mxGraph .

Je vais comparer mxGraph (la bibliothèque originale) avec maxGraph.

CritèremxGraphMaxGraph (hypothétique)
OrigineBibliothèque JavaScript open source pour la création de diagrammes.Évolution ou fork de mxGraph, ou une nouvelle bibliothèque inspirée par mxGraph.
LicenceApache 2.0 (open source)Dépend de l’évolution (peut être open source ou propriétaire).
PerformancePerformances solides pour des graphes de taille moyenne.Potentiellement optimisée pour des graphes plus grands ou des cas d’utilisation modernes.
CompatibilitéCompatible avec les anciens navigateurs et frameworks.Peut cibler des navigateurs modernes et des frameworks récents (React, Vue, etc.).
APIAPI riche mais parfois complexe.API potentiellement simplifiée ou modernisée.
IntégrationIntégration facile avec des frameworks comme Angular, React, etc.Peut offrir une meilleure intégration avec des frameworks modernes.
Fonctionnalités– Dessin de graphes
– Export/import (XML, JSON)
– Édition de graphes
Peut inclure des fonctionnalités supplémentaires comme le rendu WebGL ou des outils avancés.
CommunautéCommunauté active mais mxGraph n’est plus maintenu activement.Si MaxGraph est une évolution, la communauté pourrait être plus active et moderne.
DocumentationDocumentation complète mais parfois difficile à naviguer.Documentation potentiellement améliorée et mieux organisée.
Cas d’utilisationUtilisé dans des applications comme Draw.io (maintenant Diagrams.net).Peut cibler des cas d’utilisation plus modernes ou spécifiques.
ÉvolutivitéAdapté pour des graphes de taille moyenne.Peut être optimisé pour des graphes très grands ou des applications complexes.

Les évolutions d’un point de vue technique

J’ai vu des évolutions sur le nommage des composants, dans les fonctions.


Tableau 1 : Évolutions des noms de composants

Composant mxGraphÉvolution possible (MaxGraph)Description du changement
mxGraphMaxGraph ou GraphSimplification du nom de la classe principale.
mxCellCell ou NodeTerme plus générique pour représenter un nœud ou une cellule dans le graphe.
mxEdgeEdge ou ConnectionSimplification du nom pour représenter une arête ou une connexion.
mxGeometryGeometry ou ShapeGeometryNom plus court et plus intuitif pour la géométrie des éléments.
mxGraphModelGraphModel ou DataModelSimplification du nom du modèle de données du graphe.
mxEditorEditor ou GraphEditorNom plus court pour l’éditeur de graphes.
mxToolbarToolbar ou GraphToolbarSimplification du nom pour la barre d’outils.
mxWindowWindow ou PopupTerme plus générique pour une fenêtre ou une popup.

Tableau 2 : Évolutions des noms de fonctions

Fonction mxGraphÉvolution possible (MaxGraph)Description du changement
mxGraph.insertVertex()graph.addNode()Terme plus intuitif pour ajouter un nœud.
mxGraph.insertEdge()graph.addEdge()Terme plus intuitif pour ajouter une arête.
mxGraph.getModel()graph.getDataModel()Clarification du rôle du modèle de données.
mxGraph.getSelectionCells()graph.getSelectedItems()Terme plus générique pour les éléments sélectionnés.
mxGraph.removeCells()graph.deleteItems()Simplification du nom pour supprimer des éléments.
mxGraph.getDefaultParent()graph.getRootLayer()Clarification du rôle du parent par défaut (souvent une couche racine).
mxGraph.setCellStyle()graph.setItemStyle()Terme plus générique pour appliquer un style à un élément.
mxGraph.getCellAt()graph.getItemAt()Terme plus générique pour récupérer un élément à une position donnée.

Tableau 3 : Évolutions des noms d’événements

Événement mxGraphÉvolution possible (MaxGraph)Description du changement
mxEvent.CHANGEEventType.DATA_CHANGEClarification du type d’événement (changement de données).
mxEvent.ADD_CELLSEventType.ITEMS_ADDEDTerme plus générique pour l’ajout d’éléments.
mxEvent.REMOVE_CELLSEventType.ITEMS_REMOVEDTerme plus générique pour la suppression d’éléments.
mxEvent.CONNECT_CELLEventType.CONNECTION_CREATEDClarification de l’événement de création de connexion.
mxEvent.DOUBLE_CLICKEventType.ITEM_DOUBLE_CLICKClarification de l’événement de double-clic sur un élément.

Tableau 4 : Évolutions des noms de styles et de propriétés

Propriété mxGraphÉvolution possible (MaxGraph)Description du changement
mxConstants.STYLE_SHAPEShapeStyle.SHAPE_TYPESimplification et clarification du nom de la propriété.
mxConstants.STYLE_FILLCOLORShapeStyle.FILL_COLORNom plus explicite pour la couleur de remplissage.
mxConstants.STYLE_STROKECOLORShapeStyle.STROKE_COLORNom plus explicite pour la couleur de contour.
mxConstants.STYLE_FONTCOLORTextStyle.FONT_COLORClarification du style de texte.
mxConstants.STYLE_EDGEEdgeStyle.LINE_TYPEClarification du style des arêtes.

Remarques :

  1. Ces évolutions sont basées sur des tendances courantes en matière de refactoring et de modernisation d’API.
  2. Les évolutions visent souvent à simplifier les noms, à les rendre plus intuitifs et à les aligner sur les conventions modernes de développement.

Vous trouverez aussi d’autres informations sur la migration de MxGraph vers MaxGraph .

maxGraph APIs are not fully compatible with mxGraph APIs. The concepts are the same, so experienced mxGraph users should be able to switch from mxGraph to maxGraph without issues.

For a complete guide, see the dedicated migration page.

Avatar de Inconnu

About Duarte TERENCIO

Architecte Solutions
Cet article a été publié dans Cloud computing. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.