├── .github └── workflows │ ├── cd.yml │ └── ci.yml ├── .gitignore ├── .npmignore ├── CODE_OF_CONDUCT.md ├── ChangeLog ├── LICENSE ├── README.md ├── SECURITY.md ├── build.js ├── eslint.config.mjs ├── etc └── build │ └── Gruntfile.js ├── index.html ├── package.json ├── src ├── css │ ├── common.css │ └── explorer.css ├── images │ ├── button.gif │ ├── close.gif │ ├── collapsed.gif │ ├── error.gif │ ├── expanded.gif │ ├── maximize.gif │ ├── minimize.gif │ ├── normalize.gif │ ├── point.gif │ ├── resize.gif │ ├── separator.gif │ ├── submenu.gif │ ├── transparent.gif │ ├── warning.gif │ ├── warning.png │ ├── window-title.gif │ └── window.gif ├── js │ ├── azdata │ │ ├── azdataQueryPlan.js │ │ └── view │ │ │ └── azDataGraph.js │ ├── editor │ │ ├── mxDefaultKeyHandler.js │ │ ├── mxDefaultPopupMenu.js │ │ ├── mxDefaultToolbar.js │ │ └── mxEditor.js │ ├── handler │ │ ├── mxCellHighlight.js │ │ ├── mxCellMarker.js │ │ ├── mxCellTracker.js │ │ ├── mxConnectionHandler.js │ │ ├── mxConstraintHandler.js │ │ ├── mxEdgeHandler.js │ │ ├── mxEdgeSegmentHandler.js │ │ ├── mxElbowEdgeHandler.js │ │ ├── mxGraphHandler.js │ │ ├── mxHandle.js │ │ ├── mxKeyHandler.js │ │ ├── mxPanningHandler.js │ │ ├── mxPopupMenuHandler.js │ │ ├── mxRubberband.js │ │ ├── mxSelectionCellsHandler.js │ │ ├── mxTooltipHandler.js │ │ └── mxVertexHandler.js │ ├── index.txt │ ├── io │ │ ├── mxCellCodec.js │ │ ├── mxChildChangeCodec.js │ │ ├── mxCodec.js │ │ ├── mxCodecRegistry.js │ │ ├── mxDefaultKeyHandlerCodec.js │ │ ├── mxDefaultPopupMenuCodec.js │ │ ├── mxDefaultToolbarCodec.js │ │ ├── mxEditorCodec.js │ │ ├── mxGenericChangeCodec.js │ │ ├── mxGraphCodec.js │ │ ├── mxGraphViewCodec.js │ │ ├── mxModelCodec.js │ │ ├── mxObjectCodec.js │ │ ├── mxRootChangeCodec.js │ │ ├── mxStylesheetCodec.js │ │ └── mxTerminalChangeCodec.js │ ├── layout │ │ ├── hierarchical │ │ │ ├── model │ │ │ │ ├── mxGraphAbstractHierarchyCell.js │ │ │ │ ├── mxGraphHierarchyEdge.js │ │ │ │ ├── mxGraphHierarchyModel.js │ │ │ │ ├── mxGraphHierarchyNode.js │ │ │ │ └── mxSwimlaneModel.js │ │ │ ├── mxHierarchicalLayout.js │ │ │ ├── mxSwimlaneLayout.js │ │ │ └── stage │ │ │ │ ├── mxCoordinateAssignment.js │ │ │ │ ├── mxHierarchicalLayoutStage.js │ │ │ │ ├── mxMedianHybridCrossingReduction.js │ │ │ │ ├── mxMinimumCycleRemover.js │ │ │ │ └── mxSwimlaneOrdering.js │ │ ├── mxCircleLayout.js │ │ ├── mxCompactTreeLayout.js │ │ ├── mxCompositeLayout.js │ │ ├── mxEdgeLabelLayout.js │ │ ├── mxFastOrganicLayout.js │ │ ├── mxGraphLayout.js │ │ ├── mxParallelEdgeLayout.js │ │ ├── mxPartitionLayout.js │ │ ├── mxRadialTreeLayout.js │ │ └── mxStackLayout.js │ ├── model │ │ ├── mxCell.js │ │ ├── mxCellPath.js │ │ ├── mxGeometry.js │ │ └── mxGraphModel.js │ ├── mxClient.js │ ├── shape │ │ ├── mxActor.js │ │ ├── mxArrow.js │ │ ├── mxArrowConnector.js │ │ ├── mxCloud.js │ │ ├── mxConnector.js │ │ ├── mxCylinder.js │ │ ├── mxDoubleEllipse.js │ │ ├── mxEllipse.js │ │ ├── mxHexagon.js │ │ ├── mxImageShape.js │ │ ├── mxLabel.js │ │ ├── mxLine.js │ │ ├── mxMarker.js │ │ ├── mxPolygon.js │ │ ├── mxPolyline.js │ │ ├── mxRectangleShape.js │ │ ├── mxRhombus.js │ │ ├── mxShape.js │ │ ├── mxStencil.js │ │ ├── mxStencilRegistry.js │ │ ├── mxSwimlane.js │ │ ├── mxText.js │ │ └── mxTriangle.js │ ├── util │ │ ├── mxAbstractCanvas2D.js │ │ ├── mxAnimation.js │ │ ├── mxAutoSaveManager.js │ │ ├── mxClipboard.js │ │ ├── mxConstants.js │ │ ├── mxDictionary.js │ │ ├── mxDivResizer.js │ │ ├── mxDragSource.js │ │ ├── mxEffects.js │ │ ├── mxEvent.js │ │ ├── mxEventObject.js │ │ ├── mxEventSource.js │ │ ├── mxForm.js │ │ ├── mxGuide.js │ │ ├── mxImage.js │ │ ├── mxImageBundle.js │ │ ├── mxImageExport.js │ │ ├── mxLog.js │ │ ├── mxMorphing.js │ │ ├── mxMouseEvent.js │ │ ├── mxObjectIdentity.js │ │ ├── mxPanningManager.js │ │ ├── mxPoint.js │ │ ├── mxPopupMenu.js │ │ ├── mxRectangle.js │ │ ├── mxResources.js │ │ ├── mxSvgCanvas2D.js │ │ ├── mxToolbar.js │ │ ├── mxUndoManager.js │ │ ├── mxUndoableEdit.js │ │ ├── mxUrlConverter.js │ │ ├── mxUtils.js │ │ ├── mxVmlCanvas2D.js │ │ ├── mxWindow.js │ │ ├── mxXmlCanvas2D.js │ │ └── mxXmlRequest.js │ └── view │ │ ├── mxCellEditor.js │ │ ├── mxCellOverlay.js │ │ ├── mxCellRenderer.js │ │ ├── mxCellState.js │ │ ├── mxCellStatePreview.js │ │ ├── mxConnectionConstraint.js │ │ ├── mxEdgeStyle.js │ │ ├── mxGraph.js │ │ ├── mxGraphSelectionModel.js │ │ ├── mxGraphView.js │ │ ├── mxLayoutManager.js │ │ ├── mxMultiplicity.js │ │ ├── mxOutline.js │ │ ├── mxPerimeter.js │ │ ├── mxPrintPreview.js │ │ ├── mxStyleRegistry.js │ │ ├── mxStylesheet.js │ │ ├── mxSwimlaneManager.js │ │ └── mxTemporaryCellStates.js ├── resources │ ├── editor.txt │ ├── editor_de.txt │ ├── editor_zh.txt │ ├── graph.txt │ ├── graph_de.txt │ └── graph_zh.txt └── ts │ ├── index.ts │ ├── mx.ts │ ├── mxtypings │ ├── index.d.ts │ └── lib │ │ ├── editor │ │ ├── index.d.ts │ │ ├── mxDefaultKeyHandler.d.ts │ │ ├── mxDefaultPopupMenu.d.ts │ │ ├── mxDefaultToolbar.d.ts │ │ └── mxEditor.d.ts │ │ ├── handler │ │ ├── index.d.ts │ │ ├── mxCellHighlight.d.ts │ │ ├── mxCellMarker.d.ts │ │ ├── mxCellTracker.d.ts │ │ ├── mxConnectionHandler.d.ts │ │ ├── mxConstraintHandler.d.ts │ │ ├── mxEdgeHandler.d.ts │ │ ├── mxEdgeSegmentHandler.d.ts │ │ ├── mxElbowEdgeHandler.d.ts │ │ ├── mxGraphHandler.d.ts │ │ ├── mxHandle.d.ts │ │ ├── mxKeyHandler.d.ts │ │ ├── mxPanningHandler.d.ts │ │ ├── mxPopupMenuHandler.d.ts │ │ ├── mxRubberband.d.ts │ │ ├── mxSelectionCellsHandler.d.ts │ │ ├── mxTooltipHandler.d.ts │ │ └── mxVertexHandler.d.ts │ │ ├── io │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── mxCodec.d.ts │ │ ├── mxCodecRegistry.d.ts │ │ ├── mxGenericChangeCodec.d.ts │ │ └── mxObjectCodec.d.ts │ │ ├── layout │ │ ├── hierarchical │ │ │ ├── index.d.ts │ │ │ ├── model │ │ │ │ ├── index.d.ts │ │ │ │ ├── mxGraphAbstractHierarchyCell.d.ts │ │ │ │ ├── mxGraphHierarchyEdge.d.ts │ │ │ │ ├── mxGraphHierarchyModel.d.ts │ │ │ │ ├── mxGraphHierarchyNode.d.ts │ │ │ │ └── mxSwimlaneModel.d.ts │ │ │ ├── mxHierarchicalLayout.d.ts │ │ │ ├── mxSwimlaneLayout.d.ts │ │ │ └── stage │ │ │ │ ├── index.d.ts │ │ │ │ ├── mxCoordinateAssignment.d.ts │ │ │ │ ├── mxHierarchicalLayoutStage.d.ts │ │ │ │ ├── mxMedianHybridCrossingReduction.d.ts │ │ │ │ ├── mxMinimumCycleRemover.d.ts │ │ │ │ └── mxSwimlaneOrdering.d.ts │ │ ├── index.d.ts │ │ ├── mxCircleLayout.d.ts │ │ ├── mxCompactTreeLayout.d.ts │ │ ├── mxCompositeLayout.d.ts │ │ ├── mxEdgeLabelLayout.d.ts │ │ ├── mxFastOrganicLayout.d.ts │ │ ├── mxGraphLayout.d.ts │ │ ├── mxParallelEdgeLayout.d.ts │ │ ├── mxPartitionLayout.d.ts │ │ ├── mxRadialTreeLayout.d.ts │ │ └── mxStackLayout.d.ts │ │ ├── model │ │ ├── index.d.ts │ │ ├── mxCell.d.ts │ │ ├── mxCellPath.d.ts │ │ ├── mxGeometry.d.ts │ │ └── mxGraphModel.d.ts │ │ ├── mxClient.d.ts │ │ ├── shape │ │ ├── index.d.ts │ │ ├── mxActor.d.ts │ │ ├── mxArrow.d.ts │ │ ├── mxArrowConnector.d.ts │ │ ├── mxCloud.d.ts │ │ ├── mxConnector.d.ts │ │ ├── mxCylinder.d.ts │ │ ├── mxDoubleEllipse.d.ts │ │ ├── mxEllipse.d.ts │ │ ├── mxHexagon.d.ts │ │ ├── mxImageShape.d.ts │ │ ├── mxLabel.d.ts │ │ ├── mxLine.d.ts │ │ ├── mxMarker.d.ts │ │ ├── mxPolyline.d.ts │ │ ├── mxRectangleShape.d.ts │ │ ├── mxRhombus.d.ts │ │ ├── mxShape.d.ts │ │ ├── mxStencil.d.ts │ │ ├── mxStencilRegistry.d.ts │ │ ├── mxSwimlane.d.ts │ │ ├── mxText.d.ts │ │ └── mxTriangle.d.ts │ │ ├── util │ │ ├── index.d.ts │ │ ├── mxAbstractCanvas2D.d.ts │ │ ├── mxAnimation.d.ts │ │ ├── mxAutoSaveManager.d.ts │ │ ├── mxClipboard.d.ts │ │ ├── mxConstants.d.ts │ │ ├── mxDictionary.d.ts │ │ ├── mxDivResizer.d.ts │ │ ├── mxDragSource.d.ts │ │ ├── mxEffects.d.ts │ │ ├── mxEvent.d.ts │ │ ├── mxEventObject.d.ts │ │ ├── mxEventSource.d.ts │ │ ├── mxForm.d.ts │ │ ├── mxGuide.d.ts │ │ ├── mxImage.d.ts │ │ ├── mxImageBundle.d.ts │ │ ├── mxImageExport.d.ts │ │ ├── mxLog.d.ts │ │ ├── mxMorphing.d.ts │ │ ├── mxMouseEvent.d.ts │ │ ├── mxObjectIdentity.d.ts │ │ ├── mxPanningManager.d.ts │ │ ├── mxPoint.d.ts │ │ ├── mxPopupMenu.d.ts │ │ ├── mxRectangle.d.ts │ │ ├── mxResources.d.ts │ │ ├── mxSvgCanvas2D.d.ts │ │ ├── mxToolbar.d.ts │ │ ├── mxUndoManager.d.ts │ │ ├── mxUndoableEdit.d.ts │ │ ├── mxUrlConverter.d.ts │ │ ├── mxUtils.d.ts │ │ ├── mxVmlCanvas2D.d.ts │ │ ├── mxWindow.d.ts │ │ ├── mxXmlCanvas2D.d.ts │ │ └── mxXmlRequest.d.ts │ │ └── view │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── mxCellEditor.d.ts │ │ ├── mxCellOverlay.d.ts │ │ ├── mxCellRenderer.d.ts │ │ ├── mxCellState.d.ts │ │ ├── mxCellStatePreview.d.ts │ │ ├── mxConnectionConstraint.d.ts │ │ ├── mxEdgeStyle.d.ts │ │ ├── mxGraph.d.ts │ │ ├── mxGraphSelectionModel.d.ts │ │ ├── mxGraphView.d.ts │ │ ├── mxLayoutManager.d.ts │ │ ├── mxMultiplicity.d.ts │ │ ├── mxOutline.d.ts │ │ ├── mxPerimeter.d.ts │ │ ├── mxPrintPreview.d.ts │ │ ├── mxStyleRegistry.d.ts │ │ ├── mxStylesheet.d.ts │ │ ├── mxSwimlaneManager.d.ts │ │ └── mxTemporaryCellStates.d.ts │ └── schemaDesigner │ ├── schemaDesigner.css │ ├── schemaDesigner.ts │ ├── schemaDesignerEntity.ts │ ├── schemaDesignerInterfaces.ts │ ├── schemaDesignerLayout.ts │ ├── schemaDesignerToolbar.ts │ └── utils.ts ├── test └── queryplan │ ├── comparePlanModeWithFolding.html │ ├── comparePlanModeWithNoFolding.html │ ├── icons │ ├── adaptive_join.png │ ├── aggregate.png │ ├── apply.png │ ├── arithmetic_expression.png │ ├── assert.png │ ├── assign.png │ ├── batch_hash_table_build.png │ ├── bitmap.png │ ├── bookmark_lookup.png │ ├── broadcast.png │ ├── clustered_index_delete.png │ ├── clustered_index_insert.png │ ├── clustered_index_merge.png │ ├── clustered_index_scan.png │ ├── clustered_index_seek.png │ ├── clustered_index_update.png │ ├── clustered_update.png │ ├── collapse.png │ ├── collapse.svg │ ├── columnstore_index_delete.png │ ├── columnstore_index_insert.png │ ├── columnstore_index_merge.png │ ├── columnstore_index_scan.png │ ├── columnstore_index_update.png │ ├── compute_scalar.png │ ├── compute_to_control_node.png │ ├── concatenation.png │ ├── const_table_get.png │ ├── constant_scan.png │ ├── control_to_compute_nodes.png │ ├── convert.png │ ├── cursor_catch_all.png │ ├── declare.png │ ├── delete.png │ ├── deleted_scan.png │ ├── dynamic.png │ ├── expand.svg │ ├── external_broadcast.png │ ├── external_export.png │ ├── external_local_streaming.png │ ├── external_round_robin.png │ ├── external_shuffle.png │ ├── fetch_query.png │ ├── filter.png │ ├── foreign_key_references_check.png │ ├── get.png │ ├── group_by_aggregate.png │ ├── hash_match.png │ ├── hash_match_root.png │ ├── hash_match_team.png │ ├── if.png │ ├── index_delete.png │ ├── index_insert.png │ ├── index_scan.png │ ├── index_seek.png │ ├── index_spool.png │ ├── index_update.png │ ├── insert.png │ ├── inserted_scan.png │ ├── intrinsic.png │ ├── iterator_catch_all.png │ ├── join.png │ ├── keyset.png │ ├── language_construct_catch_all.png │ ├── locate.png │ ├── log_row_scan.png │ ├── merge_interval.png │ ├── merge_join.png │ ├── nested_loops.png │ ├── overlay-parallelism.svg │ ├── overlay-warning.svg │ ├── parallelism.png │ ├── parameter_table_scan.png │ ├── population_query.png │ ├── predict.png │ ├── print.png │ ├── project.png │ ├── rank.png │ ├── refresh_query.png │ ├── remote_delete.png │ ├── remote_index_scan.png │ ├── remote_index_seek.png │ ├── remote_insert.png │ ├── remote_query.png │ ├── remote_scan.png │ ├── remote_update.png │ ├── result.png │ ├── rid_lookup.png │ ├── row_count_spool.png │ ├── segment.png │ ├── sequence.png │ ├── sequence_project.png │ ├── set_function.png │ ├── shuffle.png │ ├── single_source_round_robin.png │ ├── single_source_shuffle.png │ ├── snapshot.png │ ├── sort.png │ ├── split.png │ ├── spool.png │ ├── sql.png │ ├── stream_aggregate.png │ ├── switch.png │ ├── table_delete.png │ ├── table_insert.png │ ├── table_merge.png │ ├── table_scan.png │ ├── table_spool.png │ ├── table_update.png │ ├── table_valued_function.png │ ├── top.png │ ├── trim.png │ ├── udx.png │ ├── union.png │ ├── union_all.png │ ├── update.png │ └── window_aggregate.png │ ├── queryPlanColors.html │ ├── queryPlanExpensiveOperatorHighlighting.html │ ├── queryPlanListener.html │ ├── queryPlanZoom.html │ ├── queryplan.html │ ├── queryplan2.html │ ├── queryplanParentVisibility.html │ ├── queryplanPolygon.html │ ├── queryplanPolygonZoom.html │ └── src │ └── js │ ├── graph.js │ ├── graph2.js │ ├── graph3.js │ └── queryPlanSetup.js ├── ts-examples ├── adventureWorks.html ├── ecommerceDemoSchema.html ├── helloWorld.html ├── resources │ ├── addTable.svg │ ├── arrange.svg │ ├── connector.svg │ ├── delete.svg │ ├── export.svg │ ├── redo.svg │ ├── schemaDesigner.css │ ├── table.svg │ ├── tableNode.svg │ ├── text.svg │ ├── undo.svg │ ├── zoomFit.svg │ ├── zoomIn.svg │ └── zoomOut.svg ├── schemas │ ├── schema_adventure_works.js │ ├── schema_designer_config.js │ ├── schema_ecommerce_demo.js │ └── schema_world_wide_importers.js ├── smallSchema.html └── worldWideImporters.html ├── tsconfig.json ├── tsconfig.tsbuildinfo └── yarn.lock /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: PR checks 2 | on: 3 | pull_request: 4 | branches: 5 | - main 6 | 7 | permissions: 8 | contents: read 9 | pull-requests: write 10 | 11 | jobs: 12 | checks: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Checkout Repository 17 | uses: actions/checkout@v4 18 | with: 19 | fetch-depth: 0 20 | 21 | - name: Set up Node.js 22 | uses: actions/setup-node@v4 23 | with: 24 | node-version: "22" 25 | 26 | - name: Install yarn 27 | run: npm install -g yarn 28 | 29 | - name: Install Dependencies 30 | run: yarn 31 | 32 | - name: Run build 33 | run: yarn build 34 | 35 | - name: Run lint 36 | run: yarn lint 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .jshintrc 4 | examples/**/dist 5 | .idea/ 6 | *.tgz 7 | .DS_Store -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .idea/ 3 | .jshintrc 4 | .project 5 | .settings 6 | .vs 7 | *.sln 8 | bin 9 | build.sh 10 | classes 11 | docs/ 12 | dotnet/ 13 | index.html 14 | java/ 15 | debug/ 16 | devel/ 17 | examples/ 18 | index.html 19 | mxgraph-dotnet.*suo 20 | php/ 21 | pom.xml 22 | target 23 | *.tgz 24 | .github/ 25 | test/ 26 | ts-examples/ -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 10-OCT-2021: 0.0.1 2 | 3 | - Initial version forked from mxgraph 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | azdataGraph 2 | ======= 3 | 4 | azdataGraph is a derivative of mxGraph, which is a fully client side JavaScript diagramming library that uses SVG and HTML for rendering. 5 | 6 | This is a graph diagraming component developed for use in Azure Data Studio. 7 | 8 | For more information on mxGraph please see [mxgraph](https://github.com/jgraph/mxgraph) 9 | 10 | Typings for the mxGraph library are included in this package. The typings are forked from [typed-mxgraph](https://github.com/typed-mxgraph/typed-mxgraph) 11 | 12 | ## How to publish a new version of azdataGraph 13 | 14 | 1. Clone the azdataGraph repository 15 | 2. Make your changes 16 | 3. Update the version number in the `package.json` file 17 | 4. Create a PR to the `main` branch with your changes 18 | 5. Once the PR is approved and merged, a new release will be created and published automatically. 19 | 20 | ## To manually publish a new version of azdataGraph 21 | 1. Clone the azdataGraph repository 22 | 1. Make your changes 23 | 1. Update the version number in the `package.json` file 24 | 1. Run `yarn` to install the dependencies 25 | 1. Run `yarn build` to build the package 26 | 1. Run `yarn pack` to create a tarball of the package 27 | 1. Push the contents of the tarball to the release branch 28 | 1. Create a new release in the Github UI 29 | 1. Create a new tag with the version number and set the release branch as the target 30 | 1. Publish the release 31 | 32 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import licenseHeader from "eslint-plugin-license-header"; 2 | import tseslint from 'typescript-eslint'; 3 | 4 | export default [ 5 | { 6 | files: ['src/ts/**/*.ts'], 7 | ignores: ['src/ts/mxtypings/**/*.d.ts', 'dist/**/*.js'], 8 | languageOptions: { 9 | parser: tseslint.parser, 10 | }, 11 | plugins: { 12 | 'license-header': licenseHeader, 13 | }, 14 | rules: { 15 | "no-var": "error", 16 | "prefer-const": "error", 17 | "eqeqeq": "error", 18 | } 19 | } 20 | ]; -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Examples 5 | 6 | 7 |

Examples

8 | 15 | 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azdataGraph", 3 | "description": "azdataGraph is a derivative of mxGraph, which is a fully client side JavaScript diagramming library that uses SVG and HTML for rendering.", 4 | "version": "0.0.137", 5 | "homepage": "https://github.com/microsoft/azdataGraph", 6 | "author": "Microsoft", 7 | "license": "Apache-2.0", 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/microsoft/azdataGraph.git" 11 | }, 12 | "bugs": { 13 | "url": "https://github.com/microsoft/azdataGraph/issues" 14 | }, 15 | "main": "./dist/index.js", 16 | "types": "./dist/src/ts/index.d.ts", 17 | "scripts": { 18 | "compile-mxgraph": "grunt build --base ./ --gruntfile etc/build/Gruntfile.js", 19 | "build": "yarn compile-mxgraph && npx tsc && node build.js", 20 | "watch": "yarn compile-mxgraph && node build.js --watch", 21 | "examples": "http-server -p 4000", 22 | "lint": "eslint" 23 | }, 24 | "devDependencies": { 25 | "@jgoz/esbuild-plugin-typecheck": "^4.0.2", 26 | "@types/node": "^22.10.5", 27 | "@types/react": "^19.0.3", 28 | "@types/react-dom": "^19.0.2", 29 | "@vitejs/plugin-react": "^4.3.4", 30 | "esbuild": "^0.24.0", 31 | "eslint": "^9.17.0", 32 | "eslint-plugin-license-header": "^0.6.1", 33 | "grunt": "^1.6.1", 34 | "grunt-contrib-concat": "^2.1.0", 35 | "grunt-contrib-copy": "^1.0.0", 36 | "http-server": "^14.1.1", 37 | "load-grunt-tasks": "^3.5.2", 38 | "react": "^19.0.0", 39 | "react-dom": "^19.0.0", 40 | "react-router-dom": "^7.1.1", 41 | "typescript": "^5.7.2", 42 | "typescript-eslint": "^8.18.0" 43 | }, 44 | "dependencies": { 45 | "@dagrejs/dagre": "^1.1.4", 46 | "create-color": "^2.0.6", 47 | "html-to-image": "^1.11.13", 48 | "uuid": "^11.0.5" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/css/explorer.css: -------------------------------------------------------------------------------- 1 | div.mxTooltip { 2 | filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=4, OffY=4, 3 | Color='#A2A2A2', Positive='true'); 4 | } 5 | div.mxPopupMenu { 6 | filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=4, OffY=4, 7 | Color='#C0C0C0', Positive='true'); 8 | } 9 | div.mxWindow { 10 | _filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=4, OffY=4, 11 | Color='#C0C0C0', Positive='true'); 12 | } 13 | td.mxWindowTitle { 14 | _height: 23px; 15 | } 16 | .mxDisabled { 17 | filter:alpha(opacity=20) !important; 18 | } 19 | -------------------------------------------------------------------------------- /src/images/button.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/button.gif -------------------------------------------------------------------------------- /src/images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/close.gif -------------------------------------------------------------------------------- /src/images/collapsed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/collapsed.gif -------------------------------------------------------------------------------- /src/images/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/error.gif -------------------------------------------------------------------------------- /src/images/expanded.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/expanded.gif -------------------------------------------------------------------------------- /src/images/maximize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/maximize.gif -------------------------------------------------------------------------------- /src/images/minimize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/minimize.gif -------------------------------------------------------------------------------- /src/images/normalize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/normalize.gif -------------------------------------------------------------------------------- /src/images/point.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/point.gif -------------------------------------------------------------------------------- /src/images/resize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/resize.gif -------------------------------------------------------------------------------- /src/images/separator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/separator.gif -------------------------------------------------------------------------------- /src/images/submenu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/submenu.gif -------------------------------------------------------------------------------- /src/images/transparent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/transparent.gif -------------------------------------------------------------------------------- /src/images/warning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/warning.gif -------------------------------------------------------------------------------- /src/images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/warning.png -------------------------------------------------------------------------------- /src/images/window-title.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/window-title.gif -------------------------------------------------------------------------------- /src/images/window.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/images/window.gif -------------------------------------------------------------------------------- /src/js/index.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/src/js/index.txt -------------------------------------------------------------------------------- /src/js/io/mxDefaultKeyHandlerCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | mxCodecRegistry.register(function() 6 | { 7 | /** 8 | * Class: mxDefaultKeyHandlerCodec 9 | * 10 | * Custom codec for configuring s. This class is created 11 | * and registered dynamically at load time and used implicitly via 12 | * and the . This codec only reads configuration 13 | * data for existing key handlers, it does not encode or create key handlers. 14 | */ 15 | var codec = new mxObjectCodec(new mxDefaultKeyHandler()); 16 | 17 | /** 18 | * Function: encode 19 | * 20 | * Returns null. 21 | */ 22 | codec.encode = function(enc, obj) 23 | { 24 | return null; 25 | }; 26 | 27 | /** 28 | * Function: decode 29 | * 30 | * Reads a sequence of the following child nodes 31 | * and attributes: 32 | * 33 | * Child Nodes: 34 | * 35 | * add - Binds a keystroke to an actionname. 36 | * 37 | * Attributes: 38 | * 39 | * as - Keycode. 40 | * action - Actionname to execute in editor. 41 | * control - Optional boolean indicating if 42 | * the control key must be pressed. 43 | * 44 | * Example: 45 | * 46 | * (code) 47 | * 48 | * 49 | * 50 | * 51 | * 52 | * (end) 53 | * 54 | * The keycodes are for the x, c and v keys. 55 | * 56 | * See also: , 57 | * http://www.js-examples.com/page/tutorials__key_codes.html 58 | */ 59 | codec.decode = function(dec, node, into) 60 | { 61 | if (into != null) 62 | { 63 | var editor = into.editor; 64 | node = node.firstChild; 65 | 66 | while (node != null) 67 | { 68 | if (!this.processInclude(dec, node, into) && 69 | node.nodeName == 'add') 70 | { 71 | var as = node.getAttribute('as'); 72 | var action = node.getAttribute('action'); 73 | var control = node.getAttribute('control'); 74 | 75 | into.bindAction(as, action, control); 76 | } 77 | 78 | node = node.nextSibling; 79 | } 80 | } 81 | 82 | return into; 83 | }; 84 | 85 | // Returns the codec into the registry 86 | return codec; 87 | 88 | }()); 89 | -------------------------------------------------------------------------------- /src/js/io/mxDefaultPopupMenuCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | mxCodecRegistry.register(function() 6 | { 7 | /** 8 | * Class: mxDefaultPopupMenuCodec 9 | * 10 | * Custom codec for configuring s. This class is created 11 | * and registered dynamically at load time and used implicitly via 12 | * and the . This codec only reads configuration 13 | * data for existing popup menus, it does not encode or create menus. Note 14 | * that this codec only passes the configuration node to the popup menu, 15 | * which uses the config to dynamically create menus. See 16 | * . 17 | */ 18 | var codec = new mxObjectCodec(new mxDefaultPopupMenu()); 19 | 20 | /** 21 | * Function: encode 22 | * 23 | * Returns null. 24 | */ 25 | codec.encode = function(enc, obj) 26 | { 27 | return null; 28 | }; 29 | 30 | /** 31 | * Function: decode 32 | * 33 | * Uses the given node as the config for . 34 | */ 35 | codec.decode = function(dec, node, into) 36 | { 37 | var inc = node.getElementsByTagName('include')[0]; 38 | 39 | if (inc != null) 40 | { 41 | this.processInclude(dec, inc, into); 42 | } 43 | else if (into != null) 44 | { 45 | into.config = node; 46 | } 47 | 48 | return into; 49 | }; 50 | 51 | // Returns the codec into the registry 52 | return codec; 53 | 54 | }()); 55 | -------------------------------------------------------------------------------- /src/js/io/mxGenericChangeCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxGenericChangeCodec 7 | * 8 | * Codec for s, s, s, 9 | * s and s. This class is created 10 | * and registered dynamically at load time and used implicitly 11 | * via and the . 12 | * 13 | * Transient Fields: 14 | * 15 | * - model 16 | * - previous 17 | * 18 | * Reference Fields: 19 | * 20 | * - cell 21 | * 22 | * Constructor: mxGenericChangeCodec 23 | * 24 | * Factory function that creates a for 25 | * the specified change and fieldname. 26 | * 27 | * Parameters: 28 | * 29 | * obj - An instance of the change object. 30 | * variable - The fieldname for the change data. 31 | */ 32 | var mxGenericChangeCodec = function(obj, variable) 33 | { 34 | var codec = new mxObjectCodec(obj, ['model', 'previous'], ['cell']); 35 | 36 | /** 37 | * Function: afterDecode 38 | * 39 | * Restores the state by assigning the previous value. 40 | */ 41 | codec.afterDecode = function(dec, node, obj) 42 | { 43 | // Allows forward references in sessions. This is a workaround 44 | // for the sequence of edits in mxGraph.moveCells and cellsAdded. 45 | if (mxUtils.isNode(obj.cell)) 46 | { 47 | obj.cell = dec.decodeCell(obj.cell, false); 48 | } 49 | 50 | obj.previous = obj[variable]; 51 | 52 | return obj; 53 | }; 54 | 55 | return codec; 56 | }; 57 | 58 | // Registers the codecs 59 | mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange(), 'value')); 60 | mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange(), 'style')); 61 | mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange(), 'geometry')); 62 | mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange(), 'collapsed')); 63 | mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange(), 'visible')); 64 | mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange(), 'value')); 65 | -------------------------------------------------------------------------------- /src/js/io/mxGraphCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | mxCodecRegistry.register(function() 6 | { 7 | /** 8 | * Class: mxGraphCodec 9 | * 10 | * Codec for s. This class is created and registered 11 | * dynamically at load time and used implicitly via 12 | * and the . 13 | * 14 | * Transient Fields: 15 | * 16 | * - graphListeners 17 | * - eventListeners 18 | * - view 19 | * - container 20 | * - cellRenderer 21 | * - editor 22 | * - selection 23 | */ 24 | return new mxObjectCodec(new mxGraph(), 25 | ['graphListeners', 'eventListeners', 'view', 'container', 26 | 'cellRenderer', 'editor', 'selection']); 27 | 28 | }()); 29 | -------------------------------------------------------------------------------- /src/js/io/mxModelCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | mxCodecRegistry.register(function() 6 | { 7 | /** 8 | * Class: mxModelCodec 9 | * 10 | * Codec for s. This class is created and registered 11 | * dynamically at load time and used implicitly via 12 | * and the . 13 | */ 14 | var codec = new mxObjectCodec(new mxGraphModel()); 15 | 16 | /** 17 | * Function: encodeObject 18 | * 19 | * Encodes the given by writing a (flat) XML sequence of 20 | * cell nodes as produced by the . The sequence is 21 | * wrapped-up in a node with the name root. 22 | */ 23 | codec.encodeObject = function(enc, obj, node) 24 | { 25 | var rootNode = enc.document.createElement('root'); 26 | enc.encodeCell(obj.getRoot(), rootNode); 27 | node.appendChild(rootNode); 28 | }; 29 | 30 | /** 31 | * Function: decodeChild 32 | * 33 | * Overrides decode child to handle special child nodes. 34 | */ 35 | codec.decodeChild = function(dec, child, obj) 36 | { 37 | if (child.nodeName == 'root') 38 | { 39 | this.decodeRoot(dec, child, obj); 40 | } 41 | else 42 | { 43 | mxObjectCodec.prototype.decodeChild.apply(this, arguments); 44 | } 45 | }; 46 | 47 | /** 48 | * Function: decodeRoot 49 | * 50 | * Reads the cells into the graph model. All cells 51 | * are children of the root element in the node. 52 | */ 53 | codec.decodeRoot = function(dec, root, model) 54 | { 55 | var rootCell = null; 56 | var tmp = root.firstChild; 57 | 58 | while (tmp != null) 59 | { 60 | var cell = dec.decodeCell(tmp); 61 | 62 | if (cell != null && cell.getParent() == null) 63 | { 64 | rootCell = cell; 65 | } 66 | 67 | tmp = tmp.nextSibling; 68 | } 69 | 70 | // Sets the root on the model if one has been decoded 71 | if (rootCell != null) 72 | { 73 | model.setRoot(rootCell); 74 | } 75 | }; 76 | 77 | // Returns the codec into the registry 78 | return codec; 79 | 80 | }()); 81 | -------------------------------------------------------------------------------- /src/js/io/mxRootChangeCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | mxCodecRegistry.register(function() 6 | { 7 | /** 8 | * Class: mxRootChangeCodec 9 | * 10 | * Codec for s. This class is created and registered 11 | * dynamically at load time and used implicitly via and 12 | * the . 13 | * 14 | * Transient Fields: 15 | * 16 | * - model 17 | * - previous 18 | * - root 19 | */ 20 | var codec = new mxObjectCodec(new mxRootChange(), 21 | ['model', 'previous', 'root']); 22 | 23 | /** 24 | * Function: onEncode 25 | * 26 | * Encodes the child recursively. 27 | */ 28 | codec.afterEncode = function(enc, obj, node) 29 | { 30 | enc.encodeCell(obj.root, node); 31 | 32 | return node; 33 | }; 34 | 35 | /** 36 | * Function: beforeDecode 37 | * 38 | * Decodes the optional children as cells 39 | * using the respective decoder. 40 | */ 41 | codec.beforeDecode = function(dec, node, obj) 42 | { 43 | if (node.firstChild != null && 44 | node.firstChild.nodeType == mxConstants.NODETYPE_ELEMENT) 45 | { 46 | // Makes sure the original node isn't modified 47 | node = node.cloneNode(true); 48 | 49 | var tmp = node.firstChild; 50 | obj.root = dec.decodeCell(tmp, false); 51 | 52 | var tmp2 = tmp.nextSibling; 53 | tmp.parentNode.removeChild(tmp); 54 | tmp = tmp2; 55 | 56 | while (tmp != null) 57 | { 58 | tmp2 = tmp.nextSibling; 59 | dec.decodeCell(tmp); 60 | tmp.parentNode.removeChild(tmp); 61 | tmp = tmp2; 62 | } 63 | } 64 | 65 | return node; 66 | }; 67 | 68 | /** 69 | * Function: afterDecode 70 | * 71 | * Restores the state by assigning the previous value. 72 | */ 73 | codec.afterDecode = function(dec, node, obj) 74 | { 75 | obj.previous = obj.root; 76 | 77 | return obj; 78 | }; 79 | 80 | // Returns the codec into the registry 81 | return codec; 82 | 83 | }()); 84 | -------------------------------------------------------------------------------- /src/js/io/mxTerminalChangeCodec.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | mxCodecRegistry.register(function() 6 | { 7 | /** 8 | * Class: mxTerminalChangeCodec 9 | * 10 | * Codec for s. This class is created and registered 11 | * dynamically at load time and used implicitly via and 12 | * the . 13 | * 14 | * Transient Fields: 15 | * 16 | * - model 17 | * - previous 18 | * 19 | * Reference Fields: 20 | * 21 | * - cell 22 | * - terminal 23 | */ 24 | var codec = new mxObjectCodec(new mxTerminalChange(), 25 | ['model', 'previous'], ['cell', 'terminal']); 26 | 27 | /** 28 | * Function: afterDecode 29 | * 30 | * Restores the state by assigning the previous value. 31 | */ 32 | codec.afterDecode = function(dec, node, obj) 33 | { 34 | obj.previous = obj.terminal; 35 | 36 | return obj; 37 | }; 38 | 39 | // Returns the codec into the registry 40 | return codec; 41 | 42 | }()); 43 | -------------------------------------------------------------------------------- /src/js/layout/hierarchical/stage/mxHierarchicalLayoutStage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxHierarchicalLayoutStage 7 | * 8 | * The specific layout interface for hierarchical layouts. It adds a 9 | * run method with a parameter for the hierarchical layout model 10 | * that is shared between the layout stages. 11 | * 12 | * Constructor: mxHierarchicalLayoutStage 13 | * 14 | * Constructs a new hierarchical layout stage. 15 | */ 16 | function mxHierarchicalLayoutStage() { }; 17 | 18 | /** 19 | * Function: execute 20 | * 21 | * Takes the graph detail and configuration information within the facade 22 | * and creates the resulting laid out graph within that facade for further 23 | * use. 24 | */ 25 | mxHierarchicalLayoutStage.prototype.execute = function(parent) { }; 26 | -------------------------------------------------------------------------------- /src/js/shape/mxActor.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxActor 7 | * 8 | * Extends to implement an actor shape. If a custom shape with one 9 | * filled area is needed, then this shape's should be overridden. 10 | * 11 | * Example: 12 | * 13 | * (code) 14 | * function SampleShape() { } 15 | * 16 | * SampleShape.prototype = new mxActor(); 17 | * SampleShape.prototype.constructor = vsAseShape; 18 | * 19 | * mxCellRenderer.registerShape('sample', SampleShape); 20 | * SampleShape.prototype.redrawPath = function(path, x, y, w, h) 21 | * { 22 | * path.moveTo(0, 0); 23 | * path.lineTo(w, h); 24 | * // ... 25 | * path.close(); 26 | * } 27 | * (end) 28 | * 29 | * This shape is registered under in 30 | * . 31 | * 32 | * Constructor: mxActor 33 | * 34 | * Constructs a new actor shape. 35 | * 36 | * Parameters: 37 | * 38 | * bounds - that defines the bounds. This is stored in 39 | * . 40 | * fill - String that defines the fill color. This is stored in . 41 | * stroke - String that defines the stroke color. This is stored in . 42 | * strokewidth - Optional integer that defines the stroke width. Default is 43 | * 1. This is stored in . 44 | */ 45 | function mxActor(bounds, fill, stroke, strokewidth) 46 | { 47 | mxShape.call(this); 48 | this.bounds = bounds; 49 | this.fill = fill; 50 | this.stroke = stroke; 51 | this.strokewidth = (strokewidth != null) ? strokewidth : 1; 52 | }; 53 | 54 | /** 55 | * Extends mxShape. 56 | */ 57 | mxUtils.extend(mxActor, mxShape); 58 | 59 | /** 60 | * Function: paintVertexShape 61 | * 62 | * Redirects to redrawPath for subclasses to work. 63 | */ 64 | mxActor.prototype.paintVertexShape = function(c, x, y, w, h) 65 | { 66 | c.translate(x, y); 67 | c.begin(); 68 | this.redrawPath(c, x, y, w, h); 69 | c.fillAndStroke(); 70 | }; 71 | 72 | /** 73 | * Function: redrawPath 74 | * 75 | * Draws the path for this shape. 76 | */ 77 | mxActor.prototype.redrawPath = function(c, x, y, w, h) 78 | { 79 | var width = w/3; 80 | c.moveTo(0, h); 81 | c.curveTo(0, 3 * h / 5, 0, 2 * h / 5, w / 2, 2 * h / 5); 82 | c.curveTo(w / 2 - width, 2 * h / 5, w / 2 - width, 0, w / 2, 0); 83 | c.curveTo(w / 2 + width, 0, w / 2 + width, 2 * h / 5, w / 2, 2 * h / 5); 84 | c.curveTo(w, 2 * h / 5, w, 3 * h / 5, w, h); 85 | c.close(); 86 | }; 87 | -------------------------------------------------------------------------------- /src/js/shape/mxCloud.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxCloud 7 | * 8 | * Extends to implement a cloud shape. 9 | * 10 | * This shape is registered under in 11 | * . 12 | * 13 | * Constructor: mxCloud 14 | * 15 | * Constructs a new cloud shape. 16 | * 17 | * Parameters: 18 | * 19 | * bounds - that defines the bounds. This is stored in 20 | * . 21 | * fill - String that defines the fill color. This is stored in . 22 | * stroke - String that defines the stroke color. This is stored in . 23 | * strokewidth - Optional integer that defines the stroke width. Default is 24 | * 1. This is stored in . 25 | */ 26 | function mxCloud(bounds, fill, stroke, strokewidth) 27 | { 28 | mxActor.call(this); 29 | this.bounds = bounds; 30 | this.fill = fill; 31 | this.stroke = stroke; 32 | this.strokewidth = (strokewidth != null) ? strokewidth : 1; 33 | }; 34 | 35 | /** 36 | * Extends mxActor. 37 | */ 38 | mxUtils.extend(mxCloud, mxActor); 39 | 40 | /** 41 | * Function: redrawPath 42 | * 43 | * Draws the path for this shape. 44 | */ 45 | mxCloud.prototype.redrawPath = function(c, x, y, w, h) 46 | { 47 | c.moveTo(0.25 * w, 0.25 * h); 48 | c.curveTo(0.05 * w, 0.25 * h, 0, 0.5 * h, 0.16 * w, 0.55 * h); 49 | c.curveTo(0, 0.66 * h, 0.18 * w, 0.9 * h, 0.31 * w, 0.8 * h); 50 | c.curveTo(0.4 * w, h, 0.7 * w, h, 0.8 * w, 0.8 * h); 51 | c.curveTo(w, 0.8 * h, w, 0.6 * h, 0.875 * w, 0.5 * h); 52 | c.curveTo(w, 0.3 * h, 0.8 * w, 0.1 * h, 0.625 * w, 0.2 * h); 53 | c.curveTo(0.5 * w, 0.05 * h, 0.3 * w, 0.05 * h, 0.25 * w, 0.25 * h); 54 | c.close(); 55 | }; 56 | -------------------------------------------------------------------------------- /src/js/shape/mxEllipse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxEllipse 7 | * 8 | * Extends to implement an ellipse shape. 9 | * This shape is registered under 10 | * in . 11 | * 12 | * Constructor: mxEllipse 13 | * 14 | * Constructs a new ellipse shape. 15 | * 16 | * Parameters: 17 | * 18 | * bounds - that defines the bounds. This is stored in 19 | * . 20 | * fill - String that defines the fill color. This is stored in . 21 | * stroke - String that defines the stroke color. This is stored in . 22 | * strokewidth - Optional integer that defines the stroke width. Default is 23 | * 1. This is stored in . 24 | */ 25 | function mxEllipse(bounds, fill, stroke, strokewidth) 26 | { 27 | mxShape.call(this); 28 | this.bounds = bounds; 29 | this.fill = fill; 30 | this.stroke = stroke; 31 | this.strokewidth = (strokewidth != null) ? strokewidth : 1; 32 | }; 33 | 34 | /** 35 | * Extends mxShape. 36 | */ 37 | mxUtils.extend(mxEllipse, mxShape); 38 | 39 | /** 40 | * Function: paintVertexShape 41 | * 42 | * Paints the ellipse shape. 43 | */ 44 | mxEllipse.prototype.paintVertexShape = function(c, x, y, w, h) 45 | { 46 | c.ellipse(x, y, w, h); 47 | c.fillAndStroke(); 48 | }; 49 | -------------------------------------------------------------------------------- /src/js/shape/mxHexagon.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxHexagon 7 | * 8 | * Implementation of the hexagon shape. 9 | * 10 | * Constructor: mxHexagon 11 | * 12 | * Constructs a new hexagon shape. 13 | */ 14 | function mxHexagon() 15 | { 16 | mxActor.call(this); 17 | }; 18 | 19 | /** 20 | * Extends mxActor. 21 | */ 22 | mxUtils.extend(mxHexagon, mxActor); 23 | 24 | /** 25 | * Function: redrawPath 26 | * 27 | * Draws the path for this shape. 28 | */ 29 | mxHexagon.prototype.redrawPath = function(c, x, y, w, h) 30 | { 31 | var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; 32 | this.addPoints(c, [new mxPoint(0.25 * w, 0), new mxPoint(0.75 * w, 0), new mxPoint(w, 0.5 * h), new mxPoint(0.75 * w, h), 33 | new mxPoint(0.25 * w, h), new mxPoint(0, 0.5 * h)], this.isRounded, arcSize, true); 34 | }; 35 | -------------------------------------------------------------------------------- /src/js/shape/mxLine.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxLine 7 | * 8 | * Extends to implement a horizontal line shape. 9 | * This shape is registered under in 10 | * . 11 | * 12 | * Constructor: mxLine 13 | * 14 | * Constructs a new line shape. 15 | * 16 | * Parameters: 17 | * 18 | * bounds - that defines the bounds. This is stored in 19 | * . 20 | * stroke - String that defines the stroke color. Default is 'black'. This is 21 | * stored in . 22 | * strokewidth - Optional integer that defines the stroke width. Default is 23 | * 1. This is stored in . 24 | */ 25 | function mxLine(bounds, stroke, strokewidth, vertical) 26 | { 27 | mxShape.call(this); 28 | this.bounds = bounds; 29 | this.stroke = stroke; 30 | this.strokewidth = (strokewidth != null) ? strokewidth : 1; 31 | this.vertical = (vertical != null) ? vertical : this.vertical; 32 | }; 33 | 34 | /** 35 | * Extends mxShape. 36 | */ 37 | mxUtils.extend(mxLine, mxShape); 38 | 39 | /** 40 | * Function: vertical 41 | * 42 | * Whether to paint a vertical line. 43 | */ 44 | mxLine.prototype.vertical = false; 45 | 46 | /** 47 | * Function: paintVertexShape 48 | * 49 | * Redirects to redrawPath for subclasses to work. 50 | */ 51 | mxLine.prototype.paintVertexShape = function(c, x, y, w, h) 52 | { 53 | c.begin(); 54 | 55 | if (this.vertical) 56 | { 57 | var mid = x + w / 2; 58 | c.moveTo(mid, y); 59 | c.lineTo(mid, y + h); 60 | } 61 | else 62 | { 63 | var mid = y + h / 2; 64 | c.moveTo(x, mid); 65 | c.lineTo(x + w, mid); 66 | } 67 | 68 | c.stroke(); 69 | }; 70 | -------------------------------------------------------------------------------- /src/js/shape/mxPolygon.js: -------------------------------------------------------------------------------- 1 | function mxPolygon(points, fill, stroke, strokewidth) { 2 | mxPolyline.call(this); 3 | this.points = points; 4 | this.stroke = stroke; 5 | this.fill = fill; 6 | this.strokewidth = (strokewidth != null) ? strokewidth : 1; 7 | }; 8 | 9 | /** 10 | * Extends mxPolyline. 11 | */ 12 | mxUtils.extend(mxPolygon, mxPolyline); 13 | 14 | /** 15 | * Function: paintLine: overriding paintline function of polyline to paint the entire shape instead of just the line 16 | * 17 | * Paints the polygon 18 | */ 19 | mxPolygon.prototype.paintLine = function (c, pts, rounded) { 20 | var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; 21 | c.begin(); 22 | this.addPoints(c, pts, rounded, arcSize, true); 23 | c.fillAndStroke(); 24 | }; 25 | -------------------------------------------------------------------------------- /src/js/shape/mxRhombus.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxRhombus 7 | * 8 | * Extends to implement a rhombus (aka diamond) shape. 9 | * This shape is registered under 10 | * in . 11 | * 12 | * Constructor: mxRhombus 13 | * 14 | * Constructs a new rhombus shape. 15 | * 16 | * Parameters: 17 | * 18 | * bounds - that defines the bounds. This is stored in 19 | * . 20 | * fill - String that defines the fill color. This is stored in . 21 | * stroke - String that defines the stroke color. This is stored in . 22 | * strokewidth - Optional integer that defines the stroke width. Default is 23 | * 1. This is stored in . 24 | */ 25 | function mxRhombus(bounds, fill, stroke, strokewidth) 26 | { 27 | mxShape.call(this); 28 | this.bounds = bounds; 29 | this.fill = fill; 30 | this.stroke = stroke; 31 | this.strokewidth = (strokewidth != null) ? strokewidth : 1; 32 | }; 33 | 34 | /** 35 | * Extends mxShape. 36 | */ 37 | mxUtils.extend(mxRhombus, mxShape); 38 | 39 | /** 40 | * Function: isRoundable 41 | * 42 | * Adds roundable support. 43 | */ 44 | mxRhombus.prototype.isRoundable = function() 45 | { 46 | return true; 47 | }; 48 | 49 | /** 50 | * Function: paintVertexShape 51 | * 52 | * Generic painting implementation. 53 | */ 54 | mxRhombus.prototype.paintVertexShape = function(c, x, y, w, h) 55 | { 56 | var hw = w / 2; 57 | var hh = h / 2; 58 | 59 | var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; 60 | c.begin(); 61 | this.addPoints(c, [new mxPoint(x + hw, y), new mxPoint(x + w, y + hh), new mxPoint(x + hw, y + h), 62 | new mxPoint(x, y + hh)], this.isRounded, arcSize, true); 63 | c.fillAndStroke(); 64 | }; 65 | -------------------------------------------------------------------------------- /src/js/shape/mxStencilRegistry.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | * 5 | * Code to add stencils. 6 | * 7 | * (code) 8 | * var req = mxUtils.load('test/stencils.xml'); 9 | * var root = req.getDocumentElement(); 10 | * var shape = root.firstChild; 11 | * 12 | * while (shape != null) 13 | * { 14 | * if (shape.nodeType == mxConstants.NODETYPE_ELEMENT) 15 | * { 16 | * mxStencilRegistry.addStencil(shape.getAttribute('name'), new mxStencil(shape)); 17 | * } 18 | * 19 | * shape = shape.nextSibling; 20 | * } 21 | * (end) 22 | */ 23 | var mxStencilRegistry = 24 | { 25 | /** 26 | * Class: mxStencilRegistry 27 | * 28 | * A singleton class that provides a registry for stencils and the methods 29 | * for painting those stencils onto a canvas or into a DOM. 30 | */ 31 | stencils: {}, 32 | 33 | /** 34 | * Function: addStencil 35 | * 36 | * Adds the given . 37 | */ 38 | addStencil: function(name, stencil) 39 | { 40 | mxStencilRegistry.stencils[name] = stencil; 41 | }, 42 | 43 | /** 44 | * Function: getStencil 45 | * 46 | * Returns the for the given name. 47 | */ 48 | getStencil: function(name) 49 | { 50 | return mxStencilRegistry.stencils[name]; 51 | } 52 | 53 | }; 54 | -------------------------------------------------------------------------------- /src/js/shape/mxTriangle.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxTriangle 7 | * 8 | * Implementation of the triangle shape. 9 | * 10 | * Constructor: mxTriangle 11 | * 12 | * Constructs a new triangle shape. 13 | */ 14 | function mxTriangle() 15 | { 16 | mxActor.call(this); 17 | }; 18 | 19 | /** 20 | * Extends mxActor. 21 | */ 22 | mxUtils.extend(mxTriangle, mxActor); 23 | 24 | /** 25 | * Function: isRoundable 26 | * 27 | * Adds roundable support. 28 | */ 29 | mxTriangle.prototype.isRoundable = function() 30 | { 31 | return true; 32 | }; 33 | 34 | /** 35 | * Function: redrawPath 36 | * 37 | * Draws the path for this shape. 38 | */ 39 | mxTriangle.prototype.redrawPath = function(c, x, y, w, h) 40 | { 41 | var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; 42 | this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0.5 * h), new mxPoint(0, h)], this.isRounded, arcSize, true); 43 | }; 44 | -------------------------------------------------------------------------------- /src/js/util/mxAnimation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * 7 | * Class: mxAnimation 8 | * 9 | * Implements a basic animation in JavaScript. 10 | * 11 | * Constructor: mxAnimation 12 | * 13 | * Constructs an animation. 14 | * 15 | * Parameters: 16 | * 17 | * graph - Reference to the enclosing . 18 | */ 19 | function mxAnimation(delay) 20 | { 21 | this.delay = (delay != null) ? delay : 20; 22 | }; 23 | 24 | /** 25 | * Extends mxEventSource. 26 | */ 27 | mxAnimation.prototype = new mxEventSource(); 28 | mxAnimation.prototype.constructor = mxAnimation; 29 | 30 | /** 31 | * Variable: delay 32 | * 33 | * Specifies the delay between the animation steps. Defaul is 30ms. 34 | */ 35 | mxAnimation.prototype.delay = null; 36 | 37 | /** 38 | * Variable: thread 39 | * 40 | * Reference to the thread while the animation is running. 41 | */ 42 | mxAnimation.prototype.thread = null; 43 | 44 | /** 45 | * Function: isRunning 46 | * 47 | * Returns true if the animation is running. 48 | */ 49 | mxAnimation.prototype.isRunning = function() 50 | { 51 | return this.thread != null; 52 | }; 53 | 54 | /** 55 | * Function: startAnimation 56 | * 57 | * Starts the animation by repeatedly invoking updateAnimation. 58 | */ 59 | mxAnimation.prototype.startAnimation = function() 60 | { 61 | if (this.thread == null) 62 | { 63 | this.thread = window.setInterval(mxUtils.bind(this, this.updateAnimation), this.delay); 64 | } 65 | }; 66 | 67 | /** 68 | * Function: updateAnimation 69 | * 70 | * Hook for subclassers to implement the animation. Invoke stopAnimation 71 | * when finished, startAnimation to resume. This is called whenever the 72 | * timer fires and fires an mxEvent.EXECUTE event with no properties. 73 | */ 74 | mxAnimation.prototype.updateAnimation = function() 75 | { 76 | this.fireEvent(new mxEventObject(mxEvent.EXECUTE)); 77 | }; 78 | 79 | /** 80 | * Function: stopAnimation 81 | * 82 | * Stops the animation by deleting the timer and fires an . 83 | */ 84 | mxAnimation.prototype.stopAnimation = function() 85 | { 86 | if (this.thread != null) 87 | { 88 | window.clearInterval(this.thread); 89 | this.thread = null; 90 | this.fireEvent(new mxEventObject(mxEvent.DONE)); 91 | } 92 | }; 93 | -------------------------------------------------------------------------------- /src/js/util/mxEventObject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxEventObject 7 | * 8 | * The mxEventObject is a wrapper for all properties of a single event. 9 | * Additionally, it also offers functions to consume the event and check if it 10 | * was consumed as follows: 11 | * 12 | * (code) 13 | * evt.consume(); 14 | * INV: evt.isConsumed() == true 15 | * (end) 16 | * 17 | * Constructor: mxEventObject 18 | * 19 | * Constructs a new event object with the specified name. An optional 20 | * sequence of key, value pairs can be appended to define properties. 21 | * 22 | * Example: 23 | * 24 | * (code) 25 | * new mxEventObject("eventName", key1, val1, .., keyN, valN) 26 | * (end) 27 | */ 28 | function mxEventObject(name) 29 | { 30 | this.name = name; 31 | this.properties = []; 32 | 33 | for (var i = 1; i < arguments.length; i += 2) 34 | { 35 | if (arguments[i + 1] != null) 36 | { 37 | this.properties[arguments[i]] = arguments[i + 1]; 38 | } 39 | } 40 | }; 41 | 42 | /** 43 | * Variable: name 44 | * 45 | * Holds the name. 46 | */ 47 | mxEventObject.prototype.name = null; 48 | 49 | /** 50 | * Variable: properties 51 | * 52 | * Holds the properties as an associative array. 53 | */ 54 | mxEventObject.prototype.properties = null; 55 | 56 | /** 57 | * Variable: consumed 58 | * 59 | * Holds the consumed state. Default is false. 60 | */ 61 | mxEventObject.prototype.consumed = false; 62 | 63 | /** 64 | * Function: getName 65 | * 66 | * Returns . 67 | */ 68 | mxEventObject.prototype.getName = function() 69 | { 70 | return this.name; 71 | }; 72 | 73 | /** 74 | * Function: getProperties 75 | * 76 | * Returns . 77 | */ 78 | mxEventObject.prototype.getProperties = function() 79 | { 80 | return this.properties; 81 | }; 82 | 83 | /** 84 | * Function: getProperty 85 | * 86 | * Returns the property for the given key. 87 | */ 88 | mxEventObject.prototype.getProperty = function(key) 89 | { 90 | return this.properties[key]; 91 | }; 92 | 93 | /** 94 | * Function: isConsumed 95 | * 96 | * Returns true if the event has been consumed. 97 | */ 98 | mxEventObject.prototype.isConsumed = function() 99 | { 100 | return this.consumed; 101 | }; 102 | 103 | /** 104 | * Function: consume 105 | * 106 | * Consumes the event. 107 | */ 108 | mxEventObject.prototype.consume = function() 109 | { 110 | this.consumed = true; 111 | }; 112 | -------------------------------------------------------------------------------- /src/js/util/mxImage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxImage 7 | * 8 | * Encapsulates the URL, width and height of an image. 9 | * 10 | * Constructor: mxImage 11 | * 12 | * Constructs a new image. 13 | */ 14 | function mxImage(src, width, height) 15 | { 16 | this.src = src; 17 | this.width = width; 18 | this.height = height; 19 | }; 20 | 21 | /** 22 | * Variable: src 23 | * 24 | * String that specifies the URL of the image. 25 | */ 26 | mxImage.prototype.src = null; 27 | 28 | /** 29 | * Variable: width 30 | * 31 | * Integer that specifies the width of the image. 32 | */ 33 | mxImage.prototype.width = null; 34 | 35 | /** 36 | * Variable: height 37 | * 38 | * Integer that specifies the height of the image. 39 | */ 40 | mxImage.prototype.height = null; 41 | -------------------------------------------------------------------------------- /src/js/util/mxObjectIdentity.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | var mxObjectIdentity = 6 | { 7 | /** 8 | * Class: mxObjectIdentity 9 | * 10 | * Identity for JavaScript objects and functions. This is implemented using 11 | * a simple incrementing counter which is stored in each object under 12 | * . 13 | * 14 | * The identity for an object does not change during its lifecycle. 15 | * 16 | * Variable: FIELD_NAME 17 | * 18 | * Name of the field to be used to store the object ID. Default is 19 | * mxObjectId. 20 | */ 21 | FIELD_NAME: 'mxObjectId', 22 | 23 | /** 24 | * Variable: counter 25 | * 26 | * Current counter. 27 | */ 28 | counter: 0, 29 | 30 | /** 31 | * Function: get 32 | * 33 | * Returns the ID for the given object or function or null if no object 34 | * is specified. 35 | */ 36 | get: function(obj) 37 | { 38 | if (obj != null) 39 | { 40 | if (obj[mxObjectIdentity.FIELD_NAME] == null) 41 | { 42 | if (typeof obj === 'object') 43 | { 44 | var ctor = mxUtils.getFunctionName(obj.constructor); 45 | obj[mxObjectIdentity.FIELD_NAME] = ctor + '#' + mxObjectIdentity.counter++; 46 | } 47 | else if (typeof obj === 'function') 48 | { 49 | obj[mxObjectIdentity.FIELD_NAME] = 'Function#' + mxObjectIdentity.counter++; 50 | } 51 | } 52 | 53 | return obj[mxObjectIdentity.FIELD_NAME]; 54 | } 55 | 56 | return null; 57 | }, 58 | 59 | /** 60 | * Function: clear 61 | * 62 | * Deletes the ID from the given object or function. 63 | */ 64 | clear: function(obj) 65 | { 66 | if (typeof(obj) === 'object' || typeof obj === 'function') 67 | { 68 | delete obj[mxObjectIdentity.FIELD_NAME]; 69 | } 70 | } 71 | 72 | }; 73 | -------------------------------------------------------------------------------- /src/js/util/mxPoint.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxPoint 7 | * 8 | * Implements a 2-dimensional vector with double precision coordinates. 9 | * 10 | * Constructor: mxPoint 11 | * 12 | * Constructs a new point for the optional x and y coordinates. If no 13 | * coordinates are given, then the default values for and are used. 14 | */ 15 | function mxPoint(x, y) 16 | { 17 | this.x = (x != null) ? x : 0; 18 | this.y = (y != null) ? y : 0; 19 | }; 20 | 21 | /** 22 | * Variable: x 23 | * 24 | * Holds the x-coordinate of the point. Default is 0. 25 | */ 26 | mxPoint.prototype.x = null; 27 | 28 | /** 29 | * Variable: y 30 | * 31 | * Holds the y-coordinate of the point. Default is 0. 32 | */ 33 | mxPoint.prototype.y = null; 34 | 35 | /** 36 | * Function: equals 37 | * 38 | * Returns true if the given object equals this point. 39 | */ 40 | mxPoint.prototype.equals = function(obj) 41 | { 42 | return obj != null && obj.x == this.x && obj.y == this.y; 43 | }; 44 | 45 | /** 46 | * Function: clone 47 | * 48 | * Returns a clone of this . 49 | */ 50 | mxPoint.prototype.clone = function() 51 | { 52 | // Handles subclasses as well 53 | return mxUtils.clone(this); 54 | }; 55 | -------------------------------------------------------------------------------- /src/js/view/mxConnectionConstraint.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | /** 6 | * Class: mxConnectionConstraint 7 | * 8 | * Defines an object that contains the constraints about how to connect one 9 | * side of an edge to its terminal. 10 | * 11 | * Constructor: mxConnectionConstraint 12 | * 13 | * Constructs a new connection constraint for the given point and boolean 14 | * arguments. 15 | * 16 | * Parameters: 17 | * 18 | * point - Optional that specifies the fixed location of the point 19 | * in relative coordinates. Default is null. 20 | * perimeter - Optional boolean that specifies if the fixed point should be 21 | * projected onto the perimeter of the terminal. Default is true. 22 | */ 23 | function mxConnectionConstraint(point, perimeter, name, dx, dy) 24 | { 25 | this.point = point; 26 | this.perimeter = (perimeter != null) ? perimeter : true; 27 | this.name = name; 28 | this.dx = dx? dx : 0; 29 | this.dy = dy? dy : 0; 30 | }; 31 | 32 | /** 33 | * Variable: point 34 | * 35 | * that specifies the fixed location of the connection point. 36 | */ 37 | mxConnectionConstraint.prototype.point = null; 38 | 39 | /** 40 | * Variable: perimeter 41 | * 42 | * Boolean that specifies if the point should be projected onto the perimeter 43 | * of the terminal. 44 | */ 45 | mxConnectionConstraint.prototype.perimeter = null; 46 | 47 | /** 48 | * Variable: name 49 | * 50 | * Optional string that specifies the name of the constraint. 51 | */ 52 | mxConnectionConstraint.prototype.name = null; 53 | 54 | /** 55 | * Variable: dx 56 | * 57 | * Optional float that specifies the horizontal offset of the constraint. 58 | */ 59 | mxConnectionConstraint.prototype.dx = null; 60 | 61 | /** 62 | * Variable: dy 63 | * 64 | * Optional float that specifies the vertical offset of the constraint. 65 | */ 66 | mxConnectionConstraint.prototype.dy = null; 67 | 68 | -------------------------------------------------------------------------------- /src/js/view/mxStyleRegistry.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2006-2015, JGraph Ltd 3 | * Copyright (c) 2006-2015, Gaudenz Alder 4 | */ 5 | var mxStyleRegistry = 6 | { 7 | /** 8 | * Class: mxStyleRegistry 9 | * 10 | * Singleton class that acts as a global converter from string to object values 11 | * in a style. This is currently only used to perimeters and edge styles. 12 | * 13 | * Variable: values 14 | * 15 | * Maps from strings to objects. 16 | */ 17 | values: [], 18 | 19 | /** 20 | * Function: putValue 21 | * 22 | * Puts the given object into the registry under the given name. 23 | */ 24 | putValue: function(name, obj) 25 | { 26 | mxStyleRegistry.values[name] = obj; 27 | }, 28 | 29 | /** 30 | * Function: getValue 31 | * 32 | * Returns the value associated with the given name. 33 | */ 34 | getValue: function(name) 35 | { 36 | return mxStyleRegistry.values[name]; 37 | }, 38 | 39 | /** 40 | * Function: getName 41 | * 42 | * Returns the name for the given value. 43 | */ 44 | getName: function(value) 45 | { 46 | for (var key in mxStyleRegistry.values) 47 | { 48 | if (mxStyleRegistry.values[key] == value) 49 | { 50 | return key; 51 | } 52 | } 53 | 54 | return null; 55 | } 56 | 57 | }; 58 | 59 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW, mxEdgeStyle.ElbowConnector); 60 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION, mxEdgeStyle.EntityRelation); 61 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP, mxEdgeStyle.Loop); 62 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE, mxEdgeStyle.SideToSide); 63 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM, mxEdgeStyle.TopToBottom); 64 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL, mxEdgeStyle.OrthConnector); 65 | mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT, mxEdgeStyle.SegmentConnector); 66 | 67 | mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE, mxPerimeter.EllipsePerimeter); 68 | mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE, mxPerimeter.RectanglePerimeter); 69 | mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS, mxPerimeter.RhombusPerimeter); 70 | mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE, mxPerimeter.TrianglePerimeter); 71 | mxStyleRegistry.putValue(mxConstants.PERIMETER_HEXAGON, mxPerimeter.HexagonPerimeter); 72 | -------------------------------------------------------------------------------- /src/resources/editor.txt: -------------------------------------------------------------------------------- 1 | askZoom=Enter zoom (%) 2 | properties=Properties 3 | outline=Outline 4 | tasks=Tasks 5 | help=Help 6 | -------------------------------------------------------------------------------- /src/resources/editor_de.txt: -------------------------------------------------------------------------------- 1 | askZoom=Zoom eingeben (%) 2 | properties=Eigenschaften 3 | outline=Uebersicht 4 | tasks=Aufgaben 5 | help=Hilfe 6 | -------------------------------------------------------------------------------- /src/resources/editor_zh.txt: -------------------------------------------------------------------------------- 1 | askZoom=进入缩放(%25) 2 | properties=属性 3 | outline=轮廓 4 | tasks=任务 5 | help=帮助 -------------------------------------------------------------------------------- /src/resources/graph.txt: -------------------------------------------------------------------------------- 1 | alreadyConnected=Nodes already connected 2 | containsValidationErrors=Contains validation errors 3 | updatingDocument=Updating Document. Please wait... 4 | updatingSelection=Updating Selection. Please wait... 5 | collapse-expand=Collapse/Expand 6 | doubleClickOrientation=Doubleclick to change orientation 7 | close=Close 8 | error=Error 9 | done=Done 10 | cancel=Cancel 11 | ok=OK 12 | -------------------------------------------------------------------------------- /src/resources/graph_de.txt: -------------------------------------------------------------------------------- 1 | alreadyConnected=Knoten schon verbunden 2 | containsValidationErrors=Enthält Validierungsfehler 3 | updatingDocument=Aktualisiere Dokument. Bitte warten... 4 | updatingSelection=Aktualisiere Markierung. Bitte warten... 5 | collapse-expand=Einklappen/Ausklappen 6 | doubleClickOrientation=Doppelklicken um Orientierung zu ändern 7 | close=Schliessen 8 | error=Fehler 9 | done=Fertig 10 | cancel=Abbrechen 11 | ok=OK 12 | -------------------------------------------------------------------------------- /src/resources/graph_zh.txt: -------------------------------------------------------------------------------- 1 | alreadyConnected=节点已经连接 2 | containsValidationErrors=包含效验错误 3 | updatingDocument=更新文档。请等候...... 4 | updatingSelection=更新所选项。请等候...... 5 | collapse-expand=折叠/展开 6 | doubleClickOrientation=双击以改变方向 7 | close=关闭 8 | error=错误 9 | done=完成 10 | cancel=取消 11 | ok=确定 -------------------------------------------------------------------------------- /src/ts/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import mx from 'mxgraph'; 3 | import { mxGraphFactory } from './mx'; 4 | export * from 'mxgraph'; 5 | export * from './schemaDesigner/schemaDesigner'; 6 | export * from './schemaDesigner/schemaDesignerInterfaces'; 7 | export * from './schemaDesigner/schemaDesignerEntity'; 8 | export * from './schemaDesigner/schemaDesignerToolbar'; 9 | export { mx }; 10 | export { mxGraphFactory }; -------------------------------------------------------------------------------- /src/ts/mx.ts: -------------------------------------------------------------------------------- 1 | import factory, { mxGraphExportObject } from 'mxgraph'; 2 | 3 | declare global { 4 | interface Window { 5 | mxBasePath: string; 6 | mxLoadResources: boolean; 7 | mxForceIncludes: boolean; 8 | mxLoadStylesheets: boolean; 9 | mxResourceExtension: string; 10 | } 11 | } 12 | 13 | //window.mxBasePath = '../node_modules/mxgraph/javascript/src'; 14 | window.mxLoadResources = false; 15 | window.mxForceIncludes = false; 16 | window.mxLoadStylesheets = false; 17 | window.mxResourceExtension = '.txt'; 18 | 19 | export const mxGraphFactory: mxGraphExportObject = factory({ 20 | }) -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/editor/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/editor/mxDefaultKeyHandler.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Binds keycodes to actionnames in an editor. This aggregates an internal {@link handler} and extends the implementation of {@link mxKeyHandler.escape} to not only cancel the editing, but also hide the properties dialog and fire an event via {@link editor}. An instance of this class is created by {@link mxEditor} and stored in {@link mxEditor.keyHandler}. 4 | * 5 | * @Example 6 | * Bind the delete key to the delete action in an existing editor. 7 | * ```javascript 8 | * var keyHandler = new mxDefaultKeyHandler(editor); 9 | * keyHandler.bindAction(46, 'delete'); 10 | * ``` 11 | * 12 | * @Codec 13 | * This class uses the {@link mxDefaultKeyHandlerCodec} to read configuration data into an existing instance. See {@link mxDefaultKeyHandlerCodec} for a description of the configuration format. 14 | * 15 | * @Keycodes 16 | * See {@link mxKeyHandler}. 17 | * An {@link mxEvent.ESCAPE} event is fired via the editor if the escape key is pressed. 18 | */ 19 | class mxDefaultKeyHandler { 20 | /** 21 | * Constructs a new default key handler for the {@link mxEditor.graph} in the given {@link mxEditor}. (The editor may be null if a prototypical instance for a {@link mxDefaultKeyHandlerCodec} is created.) 22 | * 23 | * @param editor 24 | */ 25 | constructor(editor: mxEditor); 26 | 27 | /** 28 | * Reference to the enclosing {@link mxEditor}. 29 | */ 30 | editor: mxEditor; 31 | 32 | /** 33 | * Holds the {@link mxKeyHandler} for key event handling. 34 | */ 35 | handler: mxKeyHandler; 36 | 37 | /** 38 | * Binds the specified keycode to the given action in {@link editor}. The optional control flag specifies if the control key must be pressed to trigger the action. 39 | * 40 | * @param code Integer that specifies the keycode. 41 | * @param action Name of the action to execute in {@link editor}. 42 | * @param control Optional boolean that specifies if control must be pressed. Default is false. 43 | */ 44 | bindAction(code: number, action: string, control?: boolean): void; 45 | 46 | /** 47 | * Destroys the {@link handler} associated with this object. This does normally not need to be called, the {@link handler} is destroyed automatically when the window unloads (in IE) by {@link mxEditor}. 48 | */ 49 | destroy(): void; 50 | 51 | [key: string]: any; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/handler/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | /// 10 | /// 11 | /// 12 | /// 13 | /// 14 | /// 15 | /// 16 | /// 17 | /// 18 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/handler/mxEdgeSegmentHandler.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | export class mxEdgeSegmentHandler extends mxEdgeHandler { 3 | constructor(state: mxCellState); 4 | 5 | /** 6 | * Function: getCurrentPoints 7 | * 8 | * Returns the current absolute points. 9 | */ 10 | getCurrentPoints(): mxPoint[]; 11 | 12 | /** 13 | * Function: getPreviewPoints 14 | * 15 | * Updates the given preview state taking into account the state of the constraint handler. 16 | */ 17 | getPreviewPoints(point: mxPoint): mxPoint[]; 18 | 19 | /** 20 | * Function: updatePreviewState 21 | * 22 | * Overridden to perform optimization of the edge style result. 23 | */ 24 | updatePreviewState(edge: mxCell, point: mxPoint, terminalState: mxCellState, me: mxMouseEvent): void; 25 | 26 | /** 27 | * Overriden to merge edge segments. 28 | */ 29 | connect(edge: mxCell, terminal: mxCell, isSource: boolean, isClone: boolean, me: mxMouseEvent): mxCell; 30 | 31 | /** 32 | * Function: getTooltipForNode 33 | * 34 | * Returns no tooltips. 35 | */ 36 | getTooltipForNode(node: any): string; 37 | 38 | /** 39 | * Function: createBends 40 | * 41 | * Adds custom bends for the center of each segment. 42 | */ 43 | start(x: number, y: number, index: number): void; 44 | 45 | /** 46 | * Function: createBends 47 | * 48 | * Adds custom bends for the center of each segment. 49 | */ 50 | // createBends(): mxShape[]; 51 | /** 52 | * Function: redraw 53 | * 54 | * Overridden to invoke before the redraw. 55 | */ 56 | redraw(): void; 57 | 58 | /** 59 | * Function: redrawInnerBends 60 | * 61 | * Updates the position of the custom bends. 62 | */ 63 | redrawInnerBends(p0: mxPoint, pe: mxPoint): void; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/handler/mxElbowEdgeHandler.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | export class mxElbowEdgeHandler extends mxEdgeHandler { 3 | constructor(state: mxCellState); 4 | 5 | /** 6 | * Specifies if a double click on the middle handle should call 7 | * . Default is true. 8 | */ 9 | flipEnabled: boolean; 10 | 11 | /** 12 | * Variable: doubleClickOrientationResource 13 | * 14 | * Specifies the resource key for the tooltip to be displayed on the single 15 | * control point for routed edges. If the resource for this key does not 16 | * exist then the value is used as the error message. Default is 17 | * 'doubleClickOrientation'. 18 | */ 19 | doubleClickOrientationResource: string; 20 | 21 | /** 22 | * Function: createBends 23 | * 24 | * Overrides to create custom bends. 25 | */ 26 | // createBends(): mxShape[]; 27 | 28 | /** 29 | * Function: createVirtualBend 30 | * 31 | * Creates a virtual bend that supports double clicking and calls 32 | * . 33 | */ 34 | createVirtualBend(dblClickHandler: (evt: Event) => void): mxRectangleShape; 35 | 36 | /** 37 | * Function: getCursorForBend 38 | * 39 | * Returns the cursor to be used for the bend. 40 | */ 41 | getCursorForBend(): string; 42 | 43 | /** 44 | * Function: getTooltipForNode 45 | * 46 | * Returns the tooltip for the given node. 47 | */ 48 | getTooltipForNode(node: Element): string; 49 | 50 | /** 51 | * Function: convertPoint 52 | * 53 | * Converts the given point in-place from screen to unscaled, untranslated 54 | * graph coordinates and applies the grid. 55 | * 56 | * Parameters: 57 | * 58 | * point - to be converted. 59 | * gridEnabled - Boolean that specifies if the grid should be applied. 60 | */ 61 | convertPoint(point: mxPoint, gridEnabled: boolean): mxPoint; 62 | 63 | /** 64 | * Function: redrawInnerBends 65 | * 66 | * Updates and redraws the inner bends. 67 | * 68 | * Parameters: 69 | * 70 | * p0 - that represents the location of the first point. 71 | * pe - that represents the location of the last point. 72 | */ 73 | redrawInnerBends(p0: mxPoint, pe: mxPoint): void; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/handler/mxRubberband.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Event handler that selects rectangular regions. 4 | * This is not built-into [mxGraph]. 5 | * To enable rubberband selection in a graph, use the following code. 6 | */ 7 | export class mxRubberband { 8 | graph: mxGraph; 9 | 10 | /** 11 | * Optional fade out effect. Default is false. 12 | */ 13 | fadeOut: boolean; 14 | 15 | /** 16 | * Specifies the default opacity to be used for the rubberband div. Default is 20. 17 | */ 18 | defaultOpacity: number; 19 | 20 | /** 21 | * Constructs an event handler that selects rectangular regions in the graph using rubberband selection. 22 | */ 23 | constructor(graph: mxGraph); 24 | 25 | /** 26 | * Creates the rubberband selection shape. 27 | */ 28 | createShape(): HTMLElement; 29 | 30 | isEnabled(): boolean; 31 | 32 | start(x: number, y: number): void; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/io/README.md: -------------------------------------------------------------------------------- 1 | The following files do not contain open API 2 | 3 | - mxCellCodec.js 4 | - mxChildChangeCodec.js 5 | - mxDefaultKeyHandlerCodec.js 6 | - mxDefaultPopupMenuCodec.js 7 | - mxDefaultToolbarCodec.js 8 | - mxEditorCodec.js 9 | - mxGraphCodec.js 10 | - mxGraphViewCodec.js 11 | - mxModelCodec.js 12 | - mxRootChangeCodec.js 13 | - mxStylesheetCodec.js 14 | - mxTerminalChangeCodec.js 15 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/io/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/io/mxCodecRegistry.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Singleton class that acts as a global registry for codecs. 4 | * 5 | * ### Adding an : 6 | * 7 | * 1. Define a default codec with a new instance of the object to be handled. 8 | * 9 | * ```javascript 10 | * var codec = new mxObjectCodec(new mxGraphModel()); 11 | * ``` 12 | * 13 | * 2. Define the functions required for encoding and decoding objects. 14 | * 15 | * ```javascript 16 | * codec.encode = function(enc, obj) { ... } 17 | * codec.decode = function(dec, node, into) { ... } 18 | * ``` 19 | * 20 | * 3. Register the codec in the . 21 | * 22 | * ```javascript 23 | * mxCodecRegistry.register(codec); 24 | * ``` 25 | * 26 | * {@link mxObjectCodec.decode} may be used to either create a new 27 | * instance of an object or to configure an existing instance, 28 | * in which case the into argument points to the existing 29 | * object. In this case, we say the codec "configures" the 30 | * object. 31 | * 32 | * @class mxCodecRegistry 33 | */ 34 | class mxCodecRegistry { 35 | /** 36 | * Maps from constructor names to codecs. 37 | * @static 38 | */ 39 | static codecs: { [key: string]: mxObjectCodec }; 40 | 41 | /** 42 | * Maps from classnames to codecnames. 43 | * @static 44 | */ 45 | static aliases: { [key: string]: any }; 46 | 47 | /** 48 | * Registers a new codec and associates the name of the template 49 | * constructor in the codec with the codec object. 50 | * 51 | * @static 52 | * 53 | * @param codec - {@link mxObjectCodec} to be registered. 54 | */ 55 | static register(codec: mxObjectCodec): mxObjectCodec; 56 | 57 | /** 58 | * Adds an alias for mapping a classname to a codecname. 59 | * @static 60 | */ 61 | static addAlias(classname: string, codecname: string): void; 62 | 63 | /** 64 | * Returns a codec that handles objects that are constructed 65 | * using the given constructor. 66 | * 67 | * @static 68 | * 69 | * @param ctor - JavaScript constructor function. 70 | */ 71 | static getCodec(ctor: any): mxObjectCodec; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/io/mxGenericChangeCodec.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Codec for {@link mxValueChange}s, {@link mxStyleChange}s, {@link mxGeometryChange}s, 4 | * {@link mxCollapseChange}s and {@link mxVisibleChange}s. This class is created 5 | * and registered dynamically at load time and used implicitely 6 | * via {@link mxCodec} and the {@link mxCodecRegistry}. 7 | * 8 | * ### Transient Fields: 9 | * 10 | * - model 11 | * - previous 12 | * 13 | * ### Reference Fields: 14 | * 15 | * - cell 16 | * 17 | * ---- 18 | * 19 | * Factory function that creates a {@link mxObjectCodec} for 20 | * the specified change and fieldname. 21 | * 22 | * @param obj - An instance of the change object. 23 | * @param variable - The fieldname for the change data. 24 | * 25 | */ 26 | export function mxGenericChangeCodec(obj: any, variable: string): mxObjectCodec; 27 | } 28 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/model/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/model/mxGraphHierarchyEdge.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * An abstraction of a hierarchical edge for the hierarchy layout 4 | * 5 | * @class mxGraphHierarchyEdge 6 | * @extends mxGraphAbstractHierarchyCell 7 | */ 8 | class mxGraphHierarchyEdge extends mxGraphAbstractHierarchyCell { 9 | /** 10 | * Constructs a hierarchy edge 11 | * @param {Array} edges a list of real graph edges this abstraction represents 12 | */ 13 | constructor(edges: Array); 14 | 15 | /** 16 | * The graph edge(s) this object represents. Parallel edges are all grouped 17 | * together within one hierarchy edge. 18 | */ 19 | edges: Array; 20 | 21 | /** 22 | * The object identities of the wrapped cells 23 | */ 24 | ids: Array; 25 | 26 | /** 27 | * The node this edge is sourced at 28 | */ 29 | source: mxCell; 30 | 31 | /** 32 | * The node this edge targets 33 | */ 34 | target: mxCell; 35 | 36 | /** 37 | * Whether or not the direction of this edge has been reversed 38 | * internally to create a DAG for the hierarchical layout 39 | */ 40 | isReversed: boolean; 41 | 42 | /** 43 | * Inverts the direction of this internal edge(s) 44 | */ 45 | invert(layer: number): void; 46 | 47 | /** 48 | * Returns the cells this cell connects to on the next layer up 49 | */ 50 | getNextLayerConnectedCells(layer: number): mxCell; 51 | 52 | /** 53 | * Returns the cells this cell connects to on the next layer down 54 | */ 55 | getPreviousLayerConnectedCells(layer: number): mxCell; 56 | 57 | /** 58 | * Returns true. 59 | */ 60 | isEdge(): boolean; 61 | 62 | /** 63 | * Gets the value of temp for the specified layer 64 | */ 65 | getGeneralPurposeVariable(layer: number): any; 66 | 67 | /** 68 | * Set the value of temp for the specified layer 69 | */ 70 | setGeneralPurposeVariable(layer: number, value: any): void; 71 | 72 | /** 73 | * Gets the first core edge associated with this wrapper 74 | */ 75 | getCoreCell(): mxCell; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/model/mxGraphHierarchyNode.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * An abstraction of a hierarchical edge for the hierarchy layout 4 | * 5 | * @class mxGraphHierarchyNode 6 | */ 7 | class mxGraphHierarchyNode extends mxGraphAbstractHierarchyCell { 8 | /** 9 | * Constructs an internal node to represent the specified real graph cell 10 | * 11 | * @param {mxCell} cell the real graph cell this node represents 12 | */ 13 | constructor(cell: mxCell); 14 | 15 | /** 16 | * The graph cell this object represents. 17 | */ 18 | cell: mxCell; 19 | 20 | /** 21 | * The object identity of the wrapped cell 22 | */ 23 | id: string; 24 | 25 | /** 26 | * Collection of hierarchy edges that have this node as a target 27 | */ 28 | connectsAsTarget: any; 29 | 30 | /** 31 | * Collection of hierarchy edges that have this node as a source 32 | */ 33 | connectsAsSource: any; 34 | 35 | /** 36 | * Assigns a unique hashcode for each node. Used by the model dfs instead 37 | * of copying HashSets 38 | */ 39 | hashCode: boolean; 40 | 41 | /** 42 | * Returns the integer value of the layer that this node resides in 43 | */ 44 | getRankValue(layer: number): number; 45 | 46 | /** 47 | * Returns the cells this cell connects to on the next layer up 48 | */ 49 | getNextLayerConnectedCells(layer: number): mxCell; 50 | 51 | /** 52 | * Returns the cells this cell connects to on the next layer down 53 | */ 54 | getPreviousLayerConnectedCells(layer: number): mxCell; 55 | 56 | /** 57 | * Returns true. 58 | */ 59 | isVertex(): boolean; 60 | 61 | /** 62 | * Gets the value of temp for the specified layer 63 | */ 64 | getGeneralPurposeVariable(layer: number): any; 65 | 66 | /** 67 | * Set the value of temp for the specified layer 68 | */ 69 | setGeneralPurposeVariable(layer: number, value: any): void; 70 | 71 | /**/ 72 | isAncestor(otherNode: any): boolean; 73 | 74 | /** 75 | * Gets the core vertex associated with this wrapper 76 | */ 77 | getCoreCell(): mxCell; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/stage/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/stage/mxHierarchicalLayoutStage.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * The specific layout interface for hierarchical layouts. It adds a 4 | * `run` method with a parameter for the hierarchical layout model 5 | * that is shared between the layout stages. 6 | */ 7 | class mxHierarchicalLayoutStage { 8 | /** 9 | * Constructs a new hierarchical layout stage. 10 | */ 11 | constructor(); 12 | 13 | /** 14 | * Takes the graph detail and configuration information within the facade 15 | * and creates the resulting laid out graph within that facade for further 16 | * use. 17 | */ 18 | execute(parent: mxCell): void; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/stage/mxMinimumCycleRemover.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * An implementation of the first stage of the Sugiyama layout. Straightforward 4 | * longest path calculation of layer assignment 5 | */ 6 | class mxMinimumCycleRemover extends mxHierarchicalLayoutStage { 7 | /** 8 | * Creates a cycle remover for the given internal model. 9 | */ 10 | constructor(layout: mxHierarchicalLayout); 11 | 12 | /** 13 | * Reference to the enclosing {@link mxHierarchicalLayout}. 14 | */ 15 | layout: mxHierarchicalLayout; 16 | 17 | /** 18 | * Function: execute 19 | * 20 | * Takes the graph detail and configuration information within the facade 21 | * and creates the resulting laid out graph within that facade for further 22 | * use. 23 | */ 24 | execute(parent: mxCell): void; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/hierarchical/stage/mxSwimlaneOrdering.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * An implementation of the first stage of the Sugiyama layout. Straightforward 4 | * longest path calculation of layer assignment 5 | */ 6 | class mxSwimlaneOrdering extends mxHierarchicalLayoutStage { 7 | /** 8 | * Creates a cycle remover for the given internal model. 9 | */ 10 | constructor(layout: mxHierarchicalLayout); 11 | 12 | /** 13 | * Reference to the enclosing {@link mxHierarchicalLayout}. 14 | */ 15 | layout: mxHierarchicalLayout; 16 | 17 | /** 18 | * Takes the graph detail and configuration information within the facade 19 | * and creates the resulting laid out graph within that facade for further 20 | * use. 21 | */ 22 | execute(parent: mxCell): any; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | /// 10 | /// 11 | /// 12 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/mxCircleLayout.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxCircleLayout { 3 | x0: number; 4 | y0: number; 5 | radius: number; 6 | moveCircle: boolean; 7 | disableEdgeStyle: boolean; 8 | 9 | constructor(graph: mxGraph, radius?: number); 10 | 11 | execute(parent: mxCell): void; 12 | 13 | getRadius(count: number, max: number): number; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/mxCompositeLayout.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxCompositeLayout extends mxGraphLayout { 3 | constructor(graph: mxGraph, layouts: Array, master: mxGraphLayout); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/mxEdgeLabelLayout.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends to implement an edge label layout. This layout 4 | * makes use of cell states, which means the graph must be validated in 5 | * a graph view (so that the label bounds are available) before this layout 6 | * can be executed. 7 | * 8 | * @example 9 | * ```javascript 10 | * var layout = new mxEdgeLabelLayout(graph); 11 | * layout.execute(graph.getDefaultParent()); 12 | * ``` 13 | */ 14 | class mxEdgeLabelLayout extends mxGraphLayout { 15 | /** 16 | * Constructs a new edge label layout. 17 | * 18 | * @param graph {@link mxGraph} that contains the cells. 19 | */ 20 | // TODO radius is declared in mxgraph-js 4.1.1 but is not used 21 | constructor(graph: mxGraph, radius?: number); 22 | 23 | /** 24 | * Implements {@link mxGraphLayout.execute} 25 | */ 26 | execute(parent: mxCell): void; 27 | 28 | /** 29 | * Places the labels of the given edges. 30 | * 31 | * @param v vertexes 32 | * @param e edges 33 | */ 34 | placeLabels(v: Array, e: Array): void; 35 | 36 | /** 37 | * Places the labels of the given edges. 38 | */ 39 | avoid(edge: mxCell, vertex: mxCell): void; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/mxFastOrganicLayout.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxFastOrganicLayout extends mxGraphLayout { 3 | /** 4 | * Specifies if the top left corner of the input cells should be the origin of the layout result. Default is true. 5 | */ 6 | useInputOrigin: boolean; 7 | 8 | /** 9 | * Specifies if all edge points of traversed edges should be removed. Default is true. 10 | */ 11 | resetEdges: boolean; 12 | 13 | /** 14 | * Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result. Default is true. 15 | */ 16 | disableEdgeStyle: boolean; 17 | 18 | /** 19 | * The force constant by which the attractive forces are divided and the replusive forces are multiple by the square of. The value equates to the average radius there is of free space around each node. Default is 50. 20 | */ 21 | forceConstant: number; 22 | 23 | /** 24 | * Cache of ^2 for performance. 25 | */ 26 | forceConstantSquared: any; 27 | 28 | /** 29 | * Minimal distance limit. Default is 2. Prevents of dividing by zero. 30 | */ 31 | minDistanceLimit: number; 32 | 33 | /** 34 | * Cached version of minDistanceLimit squared. 35 | */ 36 | minDistanceLimitSquared: number; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/mxParallelEdgeLayout.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxParallelEdgeLayout extends mxGraphLayout {} 3 | } 4 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/layout/mxPartitionLayout.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends for partitioning the parent cell vertically or 4 | * horizontally by filling the complete area with the child cells. A horizontal 5 | * layout partitions the height of the given parent whereas a a non-horizontal 6 | * layout partitions the width. If the parent is a layer (that is, a child of 7 | * the root node), then the current graph size is partitioned. The children do 8 | * not need to be connected for this layout to work. 9 | * 10 | * Example: 11 | * 12 | * @example 13 | * ```javascript 14 | * var layout = new mxPartitionLayout(graph, true, 10, 20); 15 | * layout.execute(graph.getDefaultParent()); 16 | * ``` 17 | * @class 18 | */ 19 | class mxPartitionLayout extends mxGraphLayout { 20 | /** 21 | * Constructs a new stack layout layout for the specified graph, 22 | * spacing, orientation and offset. 23 | * @param {mxGraph} graph 24 | * @param {boolean} [horizontal] 25 | * @param {number} [spacing] 26 | * @param {number} [border] 27 | * @memberof mxPartitionLayout 28 | */ 29 | constructor(graph: mxGraph, horizontal?: boolean, spacing?: number, border?: number); 30 | 31 | /** 32 | * Boolean indicating the direction in which the space is partitioned. 33 | * Default is true. 34 | */ 35 | horizontal: boolean; 36 | 37 | /** 38 | * Integer that specifies the absolute spacing in pixels between the 39 | * children. Default is 0. 40 | */ 41 | spacing: number; 42 | 43 | /** 44 | * Integer that specifies the absolute inset in pixels for the parent that 45 | * contains the children. Default is 0. 46 | */ 47 | border: number; 48 | 49 | /** 50 | * Boolean that specifies if vertices should be resized. Default is true. 51 | */ 52 | resizeVertices: boolean; 53 | 54 | /** 55 | * Returns . 56 | */ 57 | isHorizontal(): boolean; 58 | 59 | /** 60 | * Implements {@link mxGraphLayout.moveCell}. 61 | * 62 | * @param {mxCell} cell 63 | * @param {number} x 64 | * @param {number} y 65 | * @memberof mxPartitionLayout 66 | */ 67 | moveCell(cell: mxCell, x: number, y: number): void; 68 | 69 | /** 70 | * Implements . All children where 71 | * returns false and returns true are modified. 72 | */ 73 | execute(parent: mxCell): void; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/model/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/model/mxCellPath.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Implements a mechanism for temporary cell Ids. 4 | * @class mxCellPath 5 | */ 6 | class mxCellPath { 7 | /** 8 | * Defines the separator between the path components. Default is ".". 9 | */ 10 | static PATH_SEPARATOR: string; 11 | 12 | /** 13 | * Creates the cell path for the given cell. The cell path is a 14 | * concatenation of the indices of all ancestors on the (finite) path to 15 | * the root, eg. "0.0.0.1". 16 | * 17 | * Parameters: 18 | * 19 | * cell - Cell whose path should be returned. 20 | */ 21 | static create(cell: mxCell): string; 22 | 23 | /** 24 | * Returns the path for the parent of the cell represented by the given 25 | * path. Returns null if the given path has no parent. 26 | * 27 | * Parameters: 28 | * 29 | * path - Path whose parent path should be returned. 30 | */ 31 | static getParentPath(path: string): string; 32 | 33 | /** 34 | * Returns the cell for the specified cell path using the given root as the 35 | * root of the path. 36 | * 37 | * Parameters: 38 | * 39 | * root - Root cell of the path to be resolved. 40 | * path - String that defines the path. 41 | */ 42 | static resolve(root: string, path: string): string; 43 | 44 | /** 45 | * Compares the given cell paths and returns -1 if p1 is smaller, 0 if 46 | * p1 is equal and 1 if p1 is greater than p2. 47 | */ 48 | static compare(p1: string, p2: string): number; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | /// 10 | /// 11 | /// 12 | /// 13 | /// 14 | /// 15 | /// 16 | /// 17 | /// 18 | /// 19 | /// 20 | /// 21 | /// 22 | /// 23 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxActor.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement an actor shape. If a custom shape with one 4 | * filled area is needed, then this shape's {@link redrawPath} method should be overridden. 5 | * 6 | * This shape is registered under {@link mxConstants.SHAPE_ACTOR} in {@link mxCellRenderer}. 7 | * 8 | * @example 9 | * ```javascript 10 | * function SampleShape() { } 11 | * 12 | * SampleShape.prototype = new mxActor(); 13 | * SampleShape.prototype.constructor = vsAseShape; 14 | * 15 | * mxCellRenderer.registerShape('sample', SampleShape); 16 | * SampleShape.prototype.redrawPath = function(path, x, y, w, h) 17 | * { 18 | * path.moveTo(0, 0); 19 | * path.lineTo(w, h); 20 | * // ... 21 | * path.close(); 22 | * } 23 | * ``` 24 | */ 25 | class mxActor extends mxShape { 26 | /** 27 | * Constructs a new actor shape. 28 | * 29 | * @param bounds {@link mxRectangle} that defines the bounds. This is stored in {@link mxShape.bounds}. 30 | * @param fill String that defines the fill color. This is stored in {@link mxShape.fill}. 31 | * @param stroke String that defines the stroke color. This is stored in {@link mxShape.stroke}. 32 | * @param strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in {@link mxShape.strokewidth}. 33 | */ 34 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 35 | 36 | /** 37 | * Redirects to redrawPath for subclasses to work. 38 | */ 39 | paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 40 | 41 | /** 42 | * Draws the path for this shape. 43 | */ 44 | redrawPath(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxArrow.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement an arrow shape. The shape is used to represent edges, not vertices. 4 | * 5 | * This shape is registered under {@link mxConstants.SHAPE_ARROW} in {@link mxCellRenderer}. 6 | */ 7 | class mxArrow extends mxShape { 8 | /** 9 | * Constructs a new arrow shape. 10 | * 11 | * @param points Array of {@link mxPoint} that define the points. This is stored in {@link mxShape.points}. 12 | * @param fill String that defines the fill color. This is stored in {@link mxShape.fill}. 13 | * @param stroke String that defines the stroke color. This is stored in {@link mxShape.stroke}. 14 | * @param strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in {@link mxShape.strokewidth}. 15 | * @param arrowWidth Optional integer that defines the arrow width. Default is {@link mxConstants.ARROW_WIDTH}. This is stored in {@link mxShape.arrowWidth}. 16 | * @param spacing Optional integer that defines the spacing between the arrow shape and its endpoints. Default is {@link mxConstants.ARROW_SPACING}. This is stored in {@link mxShape.spacing}. 17 | * @param endSize Optional integer that defines the size of the arrowhead. Default is {@link mxConstants.ARROW_SIZE}. This is stored in {@link mxShape.endSize}. 18 | */ 19 | constructor( 20 | points: mxPoint[], 21 | fill: string, 22 | stroke: string, 23 | strokewidth?: number, 24 | arrowWidth?: number, 25 | spacing?: number, 26 | endSize?: number 27 | ); 28 | 29 | /** 30 | * Augments the bounding box with the edge width and markers. 31 | */ 32 | augmentBoundingBox(bbox: mxRectangle): void; 33 | 34 | /** 35 | * Paints the line shape. 36 | */ 37 | paintEdgeShape(c: mxAbstractCanvas2D, pts: mxPoint[]): void; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxCloud.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxActor} to implement a cloud shape. 4 | * 5 | * This shape is registered under {@link mxConstants.SHAPE_CLOUD} in {@link mxCellRenderer}. 6 | */ 7 | class mxCloud extends mxActor { 8 | /** 9 | * Constructs a new actor shape. 10 | * 11 | * @param bounds {@link mxRectangle} that defines the bounds. This is stored in {@link mxShape.bounds}. 12 | * @param fill String that defines the fill color. This is stored in {@link mxShape.fill}. 13 | * @param stroke String that defines the stroke color. This is stored in {@link mxShape.stroke}. 14 | * @param strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in {@link mxShape.strokewidth}. 15 | */ 16 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 17 | 18 | /** 19 | * Draws the path for this shape. 20 | */ 21 | redrawPath(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxConnector.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement a connector shape. 4 | * The connector shape allows for arrow heads on either side. 5 | * This shape is registered under {@link mxConstants.SHAPE_CONNECTOR} in {@link mxCellRenderer}. 6 | * 7 | * @class mxConnector 8 | * @extends {mxPolyline} 9 | */ 10 | class mxConnector extends mxPolyline { 11 | /** 12 | * Constructs a new connector shape. 13 | * 14 | * @param {mxPoint[]} points - Array of {@link mxPoints} that define the points. This is stored in {@link mxShape.points}. 15 | * @param {string} stroke - String that defines the stroke color. This is stored in . Default is ‘black’. 16 | * @param {number} [strokewidth] - Optional integer that defines the stroke width. Default is 1. This is stored in . 17 | */ 18 | constructor(points: mxPoint[], stroke: string, strokewidth?: number); 19 | 20 | /** 21 | * Updates the for this shape using 22 | * and augmentBoundingBox and stores the result in . 23 | */ 24 | updateBoundingBox(): void; 25 | 26 | /** 27 | * Paints the line shape. 28 | */ 29 | paintEdgeShape(c: mxAbstractCanvas2D, pts: mxPoint[]): void; 30 | 31 | /** 32 | * Prepares the marker by adding offsets in pts and returning a function to paint the marker. 33 | */ 34 | createMarker(c: mxAbstractCanvas2D, pts: mxPoint[], source: boolean): () => void; 35 | 36 | /** 37 | * Augments the bounding box with the strokewidth and shadow offsets. 38 | */ 39 | augmentBoundingBox(bbox: mxRectangle): void; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxCylinder.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement an cylinder shape. If a custom shape with one filled area and an overlay path is 4 | * needed, then this shape's {@link redrawPath} should be overridden. 5 | * 6 | * This shape is registered under {@link mxConstants.SHAPE_CYLINDER} in {@link mxCellRenderer}. 7 | */ 8 | class mxCylinder extends mxShape { 9 | /** 10 | * Constructs a new cylinder shape. 11 | * 12 | * @param bounds {@link mxRectangle} that defines the bounds. This is stored in {@link mxShape.bounds}. 13 | * @param fill String that defines the fill color. This is stored in {@link mxShape.fill}. 14 | * @param stroke String that defines the stroke color. This is stored in {@link mxShape.stroke}. 15 | * @param strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in {@link mxShape.strokewidth}. 16 | */ 17 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 18 | 19 | /** 20 | * Defines the maximum height of the top and bottom part of the cylinder shape. 21 | */ 22 | maxHeight: number; 23 | 24 | /** 25 | * Sets stroke tolerance to 0 for SVG. 26 | */ 27 | svgStrokeTolerance: number; 28 | 29 | /** 30 | * Redirects to redrawPath for subclasses to work. 31 | */ 32 | paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 33 | 34 | getCylinderSize(x: number, y: number, w: number, h: number): number; 35 | 36 | /** 37 | * Draws the path for this shape. 38 | */ 39 | redrawPath(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number, isForeground: boolean): void; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxDoubleEllipse.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement a double ellipse shape. 4 | * 5 | * This shape is registered under {@link mxConstants.SHAPE_DOUBLE_ELLIPSE} in {@link mxCellRenderer}. 6 | * 7 | * Use the following override to only fill the inner ellipse in this shape: 8 | * @example 9 | * ```javascript 10 | * mxDoubleEllipse.prototype.paintVertexShape = function(c, x, y, w, h) 11 | * { 12 | * c.ellipse(x, y, w, h); 13 | * c.stroke(); 14 | * 15 | * var inset = mxUtils.getValue(this.style, mxConstants.STYLE_MARGIN, Math.min(3 + this.strokewidth, Math.min(w / 5, h / 5))); 16 | * x += inset; 17 | * y += inset; 18 | * w -= 2 * inset; 19 | * h -= 2 * inset; 20 | * 21 | * if (w > 0 && h > 0) 22 | * { 23 | * c.ellipse(x, y, w, h); 24 | * } 25 | * 26 | * c.fillAndStroke(); 27 | * }; 28 | * ``` 29 | */ 30 | class mxDoubleEllipse extends mxShape { 31 | /** 32 | * Constructs a new ellipse shape. 33 | * 34 | * @param bounds {@link mxRectangle} that defines the bounds. This is stored in {@link mxShape.bounds}. 35 | * @param fill String that defines the fill color. This is stored in {@link mxShape.fill}. 36 | * @param stroke String that defines the stroke color. This is stored in {@link mxShape.stroke}. 37 | * @param strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in {@link mxShape.strokewidth}. 38 | */ 39 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 40 | 41 | /** 42 | * Scale for improving the precision of VML rendering. 43 | * @default `10` 44 | */ 45 | mxDoubleEllipse: number; 46 | 47 | /** 48 | * Paints the background. 49 | */ 50 | paintBackground(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 51 | 52 | /** 53 | * Paints the foreground. 54 | */ 55 | paintForeground(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 56 | 57 | /** 58 | * @returns the bounds for the label. 59 | */ 60 | getLabelBounds(rect: mxRectangle): mxRectangle; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxEllipse.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends mxShape to implement an ellipse shape. 4 | * This shape is registered under mxConstants.SHAPE_ELLIPSE in mxCellRenderer. 5 | */ 6 | class mxEllipse extends mxShape { 7 | /** 8 | * 9 | * @param bounds mxRectangle that defines the bounds. This is stored in mxShape.bounds. 10 | * @param fill String that defines the fill color. This is stored in . 11 | * @param stroke String that defines the stroke color. This is stored in . 12 | * @param strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in . 13 | */ 14 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 15 | 16 | /** 17 | * Paints the ellipse shape. 18 | */ 19 | paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxHexagon.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Implementation of the hexagon shape. 4 | * @class mxHexagon 5 | * @extends {mxActor} 6 | */ 7 | class mxHexagon extends mxActor { 8 | /** 9 | * Constructs a new hexagon shape. 10 | */ 11 | constructor(); 12 | 13 | /** 14 | * Draws the path for this shape. 15 | * @param {mxAbstractCanvas2D} c 16 | * @param {number} x 17 | * @param {number} y 18 | * @param {number} w 19 | * @param {number} h 20 | */ 21 | redrawPath(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxLine.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement a horizontal line shape. 4 | * This shape is registered under {@link mxConstants.SHAPE_LINE} in {@link mxCellRenderer}. 5 | * @class mxLine 6 | * @extends {mxShape} 7 | */ 8 | class mxLine extends mxShape { 9 | /** 10 | * Constructs a new line shape. 11 | * @param {mxRectangle} bounds {@link mxRectangle} that defines the bounds. This is stored in {@link mxShape.bounds}. 12 | * @param {string} stroke String that defines the stroke color. Default is ‘black’. This is stored in . 13 | * @param {number} strokewidth Optional integer that defines the stroke width. Default is 1. This is stored in . 14 | */ 15 | constructor(bounds: mxRectangle, stroke: string, strokewidth: number); 16 | 17 | /** 18 | * Redirects to redrawPath for subclasses to work. 19 | * @param {mxAbstractCanvas2D} c 20 | * @param {number} x 21 | * @param {number} y 22 | * @param {number} w 23 | * @param {number} h 24 | */ 25 | paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxMarker.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * A static class that implements all markers for VML and SVG using a registry. 4 | * NOTE: The signatures in this class will change. 5 | * @class mxMarker 6 | */ 7 | class mxMarker { 8 | /** 9 | * Maps from markers names to functions to paint the markers. 10 | * 11 | * Mapping: the attribute name on the object is the marker type, the associated value is the function to paint the marker 12 | */ 13 | static markers: object; 14 | 15 | /** 16 | * Adds a factory method that updates a given endpoint and returns a 17 | * function to paint the marker onto the given canvas. 18 | */ 19 | static addMarker( 20 | type: string, 21 | funct: ( 22 | canvas: mxAbstractCanvas2D, 23 | shape: any, 24 | type: string, 25 | pe: mxPoint, 26 | unitX: number, 27 | unitY: number, 28 | size: number, 29 | source: any, 30 | sw: number, 31 | filled: boolean 32 | ) => () => void 33 | ): void; 34 | 35 | /** 36 | * Returns a function to paint the given marker. 37 | */ 38 | static createMarker( 39 | canvas: mxAbstractCanvas2D, 40 | shape: any, 41 | type: string, 42 | pe: mxPoint, 43 | unitX: number, 44 | unitY: number, 45 | size: number, 46 | source: any, 47 | sw: number, 48 | filled: boolean 49 | ): () => void; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxPolyline.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxPolyline extends mxShape { 3 | /** 4 | * Constructs a new polyline shape. 5 | * @param {Array} points Array of mxPoints that define the points. This is stored in mxShape.points. 6 | * @param {string} stroke String that defines the stroke color. Default is ‘black’. This is stored in . 7 | * @param {number} [strokewidth] Optional integer that defines the stroke width. Default is 1. This is stored in . 8 | */ 9 | constructor(points: Array, stroke: string, strokewidth?: number); 10 | 11 | /** 12 | * Returns 0. 13 | */ 14 | getRotation(): number; 15 | 16 | /** 17 | * Returns 0. 18 | */ 19 | getShapeRotation(): number; 20 | 21 | /** 22 | * Returns false. 23 | */ 24 | isPaintBoundsInverted(): boolean; 25 | 26 | /** 27 | * Paints the line shape. 28 | */ 29 | paintEdgeShape(c: mxAbstractCanvas2D, pts: Array): void; 30 | 31 | /** 32 | * Paints the line shape. 33 | */ 34 | paintLine(c: mxAbstractCanvas2D, pts: Array, rounded?: boolean): void; 35 | 36 | /** 37 | * Paints the line shape. 38 | */ 39 | paintCurvedLine(c: mxAbstractCanvas2D, pts: Array): void; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxRectangleShape.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement a rectangle shape. 4 | * This shape is registered under {@link mxConstants.SHAPE_RECTANGLE} in {@link mxCellRenderer}. 5 | * @class mxRectangleShape 6 | * @extends {mxShape} 7 | */ 8 | class mxRectangleShape extends mxShape { 9 | /** 10 | * @param {mxRectangle} bounds 11 | * @param {string} fill 12 | * @param {string} stroke 13 | * @param {number} [strokewidth] 14 | */ 15 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 16 | 17 | /** 18 | * Returns true for non-rounded, non-rotated shapes with no glass gradient. 19 | */ 20 | isHtmlAllowed(): boolean; 21 | 22 | /** 23 | * Generic background painting implementation. 24 | */ 25 | paintBackground(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 26 | 27 | /** 28 | * Adds roundable support. 29 | */ 30 | isRoundable(): boolean; 31 | isRoundable(c?: mxAbstractCanvas2D, x?: number, y?: number, w?: number, h?: number): boolean; 32 | 33 | /** 34 | * Generic background painting implementation. 35 | */ 36 | paintForeground(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxRhombus.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Extends {@link mxShape} to implement a rhombus (aka diamond) shape. 4 | * This shape is registered under {@link mxConstants.SHAPE_RHOMBUS} in {@link mxCellRenderer}. 5 | * @class mxRhombus 6 | * @extends {mxShape} 7 | */ 8 | class mxRhombus extends mxShape { 9 | /** 10 | * @param {mxRectangle} bounds 11 | * @param {string} fill 12 | * @param {string} stroke 13 | * @param {number} [strokewidth] 14 | */ 15 | constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number); 16 | 17 | /** 18 | * Adds roundable support. 19 | */ 20 | isRoundable(): boolean; 21 | 22 | /** 23 | * Generic painting implementation. 24 | * @param {mxAbstractCanvas2D} c 25 | * @param {number} x 26 | * @param {number} y 27 | * @param {number} w 28 | * @param {number} h 29 | */ 30 | paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxStencilRegistry.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * A singleton class that provides a registry for stencils and the methods 4 | * for painting those stencils onto a canvas or into a DOM. 5 | * 6 | * @class mxStencilRegistry 7 | */ 8 | class mxStencilRegistry { 9 | static stencils: { [key: string]: mxStencil }; 10 | 11 | /** 12 | * Adds the given . 13 | * @static 14 | * @param {string} name 15 | * @param {mxStencil} stencil 16 | */ 17 | static addStencil(name: string, stencil: mxStencil): void; 18 | 19 | /** 20 | * Returns the for the given name. 21 | * @static 22 | * @param {string} name 23 | * @returns {mxStencil} 24 | */ 25 | static getStencil(name: string): mxStencil; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/shape/mxTriangle.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Implementation of the triangle shape. 4 | * @class mxTriangle 5 | * @extends {mxActor} 6 | */ 7 | class mxTriangle extends mxActor { 8 | constructor(); 9 | 10 | /** 11 | * Adds roundable support. 12 | * @returns {boolean} 13 | */ 14 | isRoundable(): boolean; 15 | 16 | /** 17 | * Draws the path for this shape. 18 | * @param {mxAbstractCanvas2D} c 19 | * @param {number} x 20 | * @param {number} y 21 | * @param {number} w 22 | * @param {number} h 23 | */ 24 | redrawPath(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | /// 10 | /// 11 | /// 12 | /// 13 | /// 14 | /// 15 | /// 16 | /// 17 | /// 18 | /// 19 | /// 20 | /// 21 | /// 22 | /// 23 | /// 24 | /// 25 | /// 26 | /// 27 | /// 28 | /// 29 | /// 30 | /// 31 | /// 32 | /// 33 | /// 34 | /// 35 | /// 36 | /// 37 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxAnimation.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Implements a basic animation in JavaScript. 4 | * 5 | * @class mxAnimation 6 | * @extends {mxEventSource} 7 | */ 8 | class mxAnimation extends mxEventSource { 9 | /** 10 | * Creates an instance of mxAnimation. 11 | * @param {number} delay 12 | * @memberof mxAnimation 13 | */ 14 | constructor(delay: number); 15 | 16 | /** 17 | * Specifies the delay between the animation steps. Defaul is 30ms. 18 | */ 19 | delay: number; 20 | 21 | /** 22 | * Reference to the thread while the animation is running. 23 | */ 24 | thread: number; 25 | 26 | /** 27 | * Returns true if the animation is running. 28 | */ 29 | isRunning(): boolean; 30 | 31 | /** 32 | * Starts the animation by repeatedly invoking updateAnimation. 33 | */ 34 | startAnimation(): void; 35 | 36 | /** 37 | * Hook for subclassers to implement the animation. Invoke stopAnimation 38 | * when finished, startAnimation to resume. This is called whenever the 39 | * timer fires and fires an mxEvent.EXECUTE event with no properties. 40 | */ 41 | updateAnimation(): void; 42 | 43 | /** 44 | * Stops the animation by deleting the timer and fires an . 45 | */ 46 | stopAnimation(): void; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxDictionary.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxDictionary { 3 | constructor(); 4 | 5 | /** 6 | * Stores the (key, value) pairs in this dictionary. 7 | */ 8 | // the key is always a string 9 | // https://github.com/jgraph/mxgraph/blob/v4.2.2/javascript/src/js/util/mxDictionary.js#L44: call mxObjectIdentity.get(key) 10 | // https://github.com/jgraph/mxgraph/blob/v4.2.2/javascript/src/js/util/mxObjectIdentity.js#L36: always returns a string 11 | map: { [key: string]: T }; 12 | 13 | /** 14 | * Clears the dictionary. 15 | */ 16 | clear(): void; 17 | 18 | /** 19 | * Returns the value for the given key. 20 | */ 21 | get(key: any): T; 22 | 23 | /** 24 | * Stores the value under the given key and returns the previous 25 | * value for that key. 26 | */ 27 | put(key: any, value: T): T; 28 | 29 | /** 30 | * Removes the value for the given key and returns the value that 31 | * has been removed. 32 | */ 33 | remove(key: any): T; 34 | 35 | /** 36 | * Returns all keys as an array. 37 | */ 38 | getKeys(): any[]; 39 | 40 | /** 41 | * Returns all values as an array. 42 | */ 43 | getValues(): T[]; 44 | 45 | /** 46 | * Visits all entries in the dictionary using the given function with the 47 | * following signature: function(key, value) where key is a string and 48 | * value is an object. 49 | * 50 | * @param visitor A function that takes the key and value as arguments. 51 | */ 52 | visit(visitor: (key: string, value: T) => void): void; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxDivResizer.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Maintains the size of a div element in Internet Explorer. This is a 4 | * workaround for the right and bottom style being ignored in IE. 5 | * 6 | * If you need a div to cover the scrollwidth and -height of a document, 7 | * then you can use this class as follows: 8 | * 9 | * @example 10 | * ```javascript 11 | * var resizer = new mxDivResizer(background); 12 | * resizer.getDocumentHeight() 13 | * { 14 | * return document.body.scrollHeight; 15 | * } 16 | * resizer.getDocumentWidth() 17 | * { 18 | * return document.body.scrollWidth; 19 | * } 20 | * resizer.resize(); 21 | * ``` 22 | * 23 | * @class mxDivResizer 24 | */ 25 | class mxDivResizer { 26 | /** 27 | * 28 | * Constructs an object that maintains the size of a div 29 | * element when the window is being resized. This is only 30 | * required for Internet Explorer as it ignores the respective 31 | * stylesheet information for DIV elements. 32 | * 33 | * @param div - Reference to the DOM node whose size should be maintained. 34 | * @param container - Optional Container that contains the div. Default is the 35 | * window. 36 | */ 37 | constructor(div: HTMLElement, container?: HTMLElement | Window); 38 | 39 | /** 40 | * Boolean specifying if the width should be updated. 41 | */ 42 | resizeWidth: boolean; 43 | 44 | /** 45 | * Boolean specifying if the height should be updated. 46 | */ 47 | resizeHeight: boolean; 48 | 49 | /** 50 | * Boolean specifying if the width should be updated. 51 | */ 52 | handlingResize: boolean; 53 | 54 | /** 55 | * Updates the style of the DIV after the window has been resized. 56 | */ 57 | resize(): void; 58 | 59 | /** 60 | * Hook for subclassers to return the width of the document (without 61 | * scrollbars). 62 | */ 63 | getDocumentWidth(): number; 64 | 65 | /** 66 | * Hook for subclassers to return the height of the document (without 67 | * scrollbars). 68 | */ 69 | getDocumentHeight(): number; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxEffects.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Provides animation effects. 4 | * 5 | * @class mxEffects 6 | */ 7 | class mxEffects { 8 | /** 9 | * Asynchronous animated move operation. See also: . 10 | * 11 | * @example 12 | * ```javascript 13 | * graph.model.addListener(mxEvent.CHANGE, function(sender, evt) 14 | * { 15 | * var changes = evt.getProperty('edit').changes; 16 | * 17 | * if (changes.length < 10) 18 | * { 19 | * mxEffects.animateChanges(graph, changes); 20 | * } 21 | * }); 22 | * ``` 23 | * 24 | * @param graph - that received the changes. 25 | * @param changes - Array of changes to be animated. 26 | * @param done - Optional function argument that is invoked after the 27 | * last step of the animation. 28 | */ 29 | static animateChanges(graph: mxGraph, changes: Array, done?: Function): void; 30 | 31 | /** 32 | * Sets the opacity on the given cell and its descendants. 33 | * 34 | * @param graph - that contains the cells. 35 | * @param cell - to set the opacity for. 36 | * @param opacity - New value for the opacity in %. 37 | */ 38 | static cascadeOpacity(graph: mxGraph, cell: mxCell, opacity: number): void; 39 | 40 | /** 41 | * Asynchronous fade-out operation. 42 | */ 43 | static fadeOut( 44 | node: HTMLElement, 45 | from?: number, 46 | remove?: boolean, 47 | step?: number, 48 | delay?: number, 49 | isEnabled?: boolean 50 | ): void; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxEventObject.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxEventObject { 3 | constructor(name: string, ...args: any[]); 4 | 5 | /** 6 | * Variable: name 7 | * 8 | * Holds the name. 9 | */ 10 | name: string; 11 | 12 | /** 13 | * Variable: properties 14 | * 15 | * Holds the properties as an associative array. 16 | */ 17 | properties: any[]; 18 | 19 | /** 20 | * Variable: consumed 21 | * 22 | * Holds the consumed state. Default is false. 23 | */ 24 | consumed: boolean; 25 | 26 | /** 27 | * Function: getName 28 | * 29 | * Returns . 30 | */ 31 | getName(): string; 32 | 33 | /** 34 | * Function: getProperties 35 | * 36 | * Returns . 37 | */ 38 | getProperties(): any[]; 39 | 40 | /** 41 | * Function: getProperty 42 | * 43 | * Returns the property for the given key. 44 | */ 45 | getProperty(key: string): any; 46 | 47 | /** 48 | * Function: isConsumed 49 | * 50 | * Returns true if the event has been consumed. 51 | */ 52 | isConsumed(): boolean; 53 | 54 | /** 55 | * Function: consume 56 | * 57 | * Consumes the event. 58 | */ 59 | consume(): void; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxForm.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | type FormFieldType = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement; 3 | /** 4 | * A simple class for creating HTML forms. 5 | * 6 | * @class mxForm 7 | */ 8 | class mxForm { 9 | /** 10 | * Creates a HTML table using the specified classname. 11 | * @constructor 12 | */ 13 | constructor(className: string); 14 | 15 | /** 16 | * Holds the DOM node that represents the table. 17 | */ 18 | table: HTMLTableElement; 19 | 20 | /** 21 | * Holds the DOM node that represents the tbody (table body). New rows 22 | * can be added to this object using DOM API. 23 | */ 24 | body: boolean; 25 | 26 | /** 27 | * Returns the table that contains this form. 28 | */ 29 | getTable(): HTMLTableElement; 30 | 31 | /** 32 | * Helper method to add an OK and Cancel button using the respective 33 | * functions. 34 | */ 35 | addButtons(okFunct: Function, cancelFunct: Function): void; 36 | 37 | /** 38 | * Adds an input for the given name, type and value and returns it. 39 | */ 40 | addText(name: string, value: any, type: string): HTMLInputElement; 41 | 42 | /** 43 | * Adds a checkbox for the given name and value and returns the textfield. 44 | */ 45 | addCheckbox(name: string, value: boolean): HTMLInputElement; 46 | 47 | /** 48 | * Adds a textarea for the given name and value and returns the textarea. 49 | */ 50 | addTextarea(name: string, value: string, rows: number): HTMLTextAreaElement; 51 | 52 | /** 53 | * Adds a combo for the given name and returns the combo. 54 | */ 55 | addCombo(name: string, isMultiSelect: boolean, size?: number): HTMLSelectElement; 56 | 57 | /** 58 | * Adds an option for the given label to the specified combo. 59 | */ 60 | addOption(combo: HTMLElement, label: string, value: any, isSelected?: boolean): void; 61 | 62 | /** 63 | * Adds a new row with the name and the input field in two columns and 64 | * returns the given input. 65 | */ 66 | addField(name: string, input: FormFieldType): FormFieldType; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxImage.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxImage { 3 | constructor(src: string, width: number, height: number); 4 | 5 | /** 6 | * Variable: src 7 | * 8 | * String that specifies the URL of the image. 9 | */ 10 | src: string; 11 | 12 | /** 13 | * Variable: width 14 | * 15 | * Integer that specifies the width of the image. 16 | */ 17 | width: number; 18 | 19 | /** 20 | * Variable: height 21 | * 22 | * Integer that specifies the height of the image. 23 | */ 24 | height: number; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxImageBundle.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxImageBundle { 3 | constructor(alt: boolean); 4 | 5 | /** 6 | * Variable: images 7 | * 8 | * Maps from keys to images. 9 | */ 10 | images: { [key: string]: { value: string; fallback: Function } }; 11 | 12 | /** 13 | * Variable: alt 14 | * 15 | * Specifies if the fallback representation should be returned. 16 | */ 17 | alt: boolean; 18 | 19 | /** 20 | * Function: putImage 21 | * 22 | * Adds the specified entry to the map. The entry is an object with a value and 23 | * fallback property as specified in the arguments. 24 | */ 25 | putImage(key: string, value: string, fallback: Function): void; 26 | 27 | /** 28 | * Function: getImage 29 | * 30 | * Returns the value for the given key. This returns the value 31 | * or fallback, depending on . The fallback is returned if 32 | * is true, the value is returned otherwise. 33 | */ 34 | getImage(key: string): string; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxLog.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | export class mxLog { 3 | /** 4 | * Specifies the name of the console window. 5 | */ 6 | consoleName: 'Console'; 7 | 8 | /** 9 | * Specified if the output for enter and leave should be visible in the console. 10 | */ 11 | TRACE: boolean; 12 | /** 13 | * Specifies if the output for debug should be visible in the console. 14 | */ 15 | DEBUG: boolean; 16 | 17 | /** 18 | * Specifies if the output for warn should be visible in the console. 19 | */ 20 | WARN: boolean; 21 | 22 | /** 23 | * Buffer for pre-initialized content. 24 | */ 25 | buffer: string; 26 | 27 | /** 28 | * Initializes the DOM node for the console. 29 | * This requires document.body to point to a non-null value. 30 | * This is called from within setVisible if the log has not yet been initialized. 31 | */ 32 | static init(): void; 33 | 34 | /** 35 | * Writes the current navigator information to the console. 36 | */ 37 | static info(): void; 38 | 39 | /** 40 | * Adds a button to the console using the given label and function. 41 | */ 42 | static addButton(lab: string, funct: Function): void; 43 | 44 | /** 45 | * Returns true if the console is visible. 46 | */ 47 | static isVisible(): boolean; 48 | 49 | /** 50 | * Shows the console. 51 | */ 52 | static show(): void; 53 | 54 | /** 55 | * Shows or hides the console. 56 | */ 57 | static setVisible(visible: boolean): void; 58 | 59 | /** 60 | * Writes the specified string to the console if TRACE is true and returns the current time in milliseconds. 61 | */ 62 | static enter(string: string): number; 63 | 64 | /** 65 | * Adds all arguments to the console if DEBUG is enabled. 66 | */ 67 | static debug(message: string): void; 68 | 69 | /** 70 | * Adds all arguments to the console if WARN is enabled. 71 | */ 72 | static warn(message: string): void; 73 | 74 | /** 75 | * Adds the specified strings to the console. 76 | */ 77 | static write(message: string): void; 78 | 79 | /** 80 | * Adds the specified strings to the console, appending a linefeed at the end of each string. 81 | */ 82 | static writeln(message: string): void; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxMorphing.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxMorphing extends mxEventSource { 3 | steps: number; 4 | step: number; 5 | ease: number; 6 | delay: number; 7 | 8 | constructor(graph: mxGraph, steps?: number, ease?: number, delay?: number); 9 | 10 | startAnimation(): void; 11 | updateAnimation(): void; 12 | show(move: any): void; 13 | animateCell(cell: mxCell, move: any, recurse: any): void; 14 | stopRecursion(state: any, delta: any): boolean; 15 | getDelta(state: any): any; 16 | getOriginForCell(cell: mxCell): any; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxObjectIdentity.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * @class 4 | * 5 | * Identity for JavaScript objects and functions. This is implemented using 6 | * a simple incrementing counter which is stored in each object under 7 | * {@link FIELD_NAME}. 8 | * 9 | * The identity for an object does not change during its lifecycle. 10 | */ 11 | class mxObjectIdentity { 12 | /** 13 | * Name of the field to be used to store the object ID. Default is 14 | * mxObjectId. 15 | */ 16 | static FIELD_NAME: string; 17 | 18 | /** 19 | * Current counter. 20 | */ 21 | static counter: number; 22 | 23 | /** 24 | * Returns the ID for the given object or function or null if no object 25 | * is specified. 26 | */ 27 | static get(obj: any): any; 28 | 29 | /** 30 | * Deletes the ID from the given object or function. 31 | */ 32 | static clear(obj: any): void; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxPanningManager.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxPanningManager { 3 | constructor(graph: mxGraph); 4 | private thread: (handler: TimerHandler, timeout?: number, ...arguments: any[]) => number; 5 | private active: boolean; 6 | private tdx: number; 7 | private tdy: number; 8 | private t0x: number; 9 | private t0y: number; 10 | private dx: number; 11 | private dy: number; 12 | private scrollbars: boolean; 13 | private scrollLeft: number; 14 | private scrollTop: number; 15 | 16 | private mouseListener: { 17 | mouseDown: (sender: any, me: mxMouseEvent) => void; 18 | mouseMove: (sender: any, me: mxMouseEvent) => void; 19 | mouseUp: (sender: any, me: mxMouseEvent) => void; 20 | }; 21 | 22 | private mouseUpListener: () => void; 23 | 24 | private isActive(): boolean; 25 | 26 | private getDx(): number; 27 | 28 | private getDy(): number; 29 | 30 | private start(): void; 31 | 32 | private panTo(x: number, y: number, w: number, h: number): void; 33 | 34 | private stop(): void; 35 | 36 | /** 37 | * Variable: damper 38 | * 39 | * Damper value for the panning. Default is 1/6. 40 | */ 41 | damper: number; 42 | 43 | /** 44 | * Variable: delay 45 | * 46 | * Delay in milliseconds for the panning. Default is 10. 47 | */ 48 | delay: number; 49 | 50 | /** 51 | * Variable: handleMouseOut 52 | * 53 | * Specifies if mouse events outside of the component should be handled. Default is true. 54 | */ 55 | handleMouseOut: boolean; 56 | 57 | /** 58 | * Variable: border 59 | * 60 | * Border to handle automatic panning inside the component. Default is 0 (disabled). 61 | */ 62 | border: number; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxPoint.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxPoint { 3 | constructor(x?: number, y?: number); 4 | 5 | /** 6 | * Variable: x 7 | * 8 | * Holds the x-coordinate of the point. Default is 0. 9 | */ 10 | x: number; 11 | 12 | /** 13 | * Variable: y 14 | * 15 | * Holds the y-coordinate of the point. Default is 0. 16 | */ 17 | y: number; 18 | 19 | /** 20 | * Function: equals 21 | * 22 | * Returns true if the given object equals this point. 23 | */ 24 | equals(obj: mxPoint): boolean; 25 | 26 | /** 27 | * Function: clone 28 | * 29 | * Returns a clone of this . 30 | */ 31 | clone(): mxPoint; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxRectangle.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxRectangle extends mxPoint { 3 | constructor(x: number, y: number, width: number, height: number); 4 | 5 | /** 6 | * Variable: width 7 | * 8 | * Holds the width of the rectangle. Default is 0. 9 | */ 10 | width: number; 11 | 12 | /** 13 | * Variable: height 14 | * 15 | * Holds the height of the rectangle. Default is 0. 16 | */ 17 | height: number; 18 | 19 | /** 20 | * Function: setRect 21 | * 22 | * Sets this rectangle to the specified values 23 | */ 24 | setRect(x: number, y: number, w: number, h: number): void; 25 | 26 | /** 27 | * Function: getCenterX 28 | * 29 | * Returns the x-coordinate of the center point. 30 | */ 31 | getCenterX(): number; 32 | 33 | /** 34 | * Function: getCenterY 35 | * 36 | * Returns the y-coordinate of the center point. 37 | */ 38 | getCenterY(): number; 39 | 40 | /** 41 | * Function: add 42 | * 43 | * Adds the given rectangle to this rectangle. 44 | */ 45 | add(rect: mxRectangle): void; 46 | 47 | /** 48 | * Function: intersect 49 | * 50 | * Changes this rectangle to where it overlaps with the given rectangle. 51 | */ 52 | intersect(rect: mxRectangle): void; 53 | 54 | /** 55 | * Function: grow 56 | * 57 | * Grows the rectangle by the given amount, that is, this method subtracts 58 | * the given amount from the x- and y-coordinates and adds twice the amount 59 | * to the width and height. 60 | */ 61 | grow(amount: number): void; 62 | 63 | /** 64 | * Function: getPoint 65 | * 66 | * Returns the top, left corner as a new . 67 | */ 68 | getPoint(): mxPoint; 69 | 70 | /** 71 | * Function: rotate90 72 | * 73 | * Rotates this rectangle by 90 degree around its center point. 74 | */ 75 | rotate90(): void; 76 | 77 | /** 78 | * Function: equals 79 | * 80 | * Returns true if the given object equals this rectangle. 81 | */ 82 | equals(obj: mxRectangle): boolean; 83 | 84 | /** 85 | * Function: fromRectangle 86 | * 87 | * Returns a new which is a copy of the given rectangle. 88 | */ 89 | fromRectangle(rect: mxRectangle): mxRectangle; 90 | 91 | clone(): mxRectangle; 92 | 93 | static fromRectangle(rect: mxRectangle): mxRectangle; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/util/mxUrlConverter.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | class mxUrlConverter { 3 | constructor(); 4 | 5 | /** 6 | * Variable: enabled 7 | * 8 | * Specifies if the converter is enabled. Default is true. 9 | */ 10 | enabled: boolean; 11 | 12 | /** 13 | * Variable: baseUrl 14 | * 15 | * Specifies the base URL to be used as a prefix for relative URLs. 16 | */ 17 | baseUrl: string; 18 | 19 | /** 20 | * Variable: baseDomain 21 | * 22 | * Specifies the base domain to be used as a prefix for absolute URLs. 23 | */ 24 | baseDomain: string; 25 | 26 | /** 27 | * Function: updateBaseUrl 28 | * 29 | * Private helper function to update the base URL. 30 | */ 31 | updateBaseUrl(): void; 32 | 33 | /** 34 | * Function: isEnabled 35 | * 36 | * Returns . 37 | */ 38 | isEnabled(): boolean; 39 | 40 | /** 41 | * Function: setEnabled 42 | * 43 | * Sets . 44 | */ 45 | setEnabled(value: boolean): void; 46 | 47 | /** 48 | * Function: getBaseUrl 49 | * 50 | * Returns . 51 | */ 52 | getBaseUrl(): string; 53 | 54 | /** 55 | * Function: setBaseUrl 56 | * 57 | * Sets . 58 | */ 59 | setBaseUrl(value: string): void; 60 | 61 | /** 62 | * Function: getBaseDomain 63 | * 64 | * Returns . 65 | */ 66 | getBaseDomain(): string; 67 | 68 | /** 69 | * Function: setBaseDomain 70 | * 71 | * Sets . 72 | */ 73 | setBaseDomain(value: string): void; 74 | 75 | /** 76 | * Function: isRelativeUrl 77 | * 78 | * Returns true if the given URL is relative. 79 | */ 80 | isRelativeUrl(url: string): boolean; 81 | 82 | /** 83 | * Function: convert 84 | * 85 | * Converts the given URL to an absolute URL with protol and domain. 86 | * Relative URLs are first converted to absolute URLs. 87 | */ 88 | convert(url: string): string; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/view/README.md: -------------------------------------------------------------------------------- 1 | View 2 | ==== 3 | 4 | | File | Progress | 5 | |:----------------------------|:-----------:| 6 | | mxCellEditor.d.ts | | 7 | | mxCellOverlay.d.ts | | 8 | | mxCellRenderer.d.ts | | 9 | | mxCellState.d.ts | | 10 | | mxConnectionConstraint.d.ts | | 11 | | mxEdgeStyle.d.ts | | 12 | | mxGraph.d.ts | | 13 | | mxGraphSelectionModel.d.ts | | 14 | | mxGraphView.d.ts | | 15 | | mxLayoutManager.d.ts | | 16 | | mxMultiplicity.d.ts | | 17 | | mxOutline.d.ts | | 18 | | mxPerimeter.d.ts | | 19 | | mxPrintPreview.d.ts | | 20 | | mxStyleRegistry.d.ts | | 21 | | mxStylesheet.d.ts | | 22 | | mxSwimlaneManager.d.ts | | 23 | | mxTemporaryCellStates.d.ts | | 24 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/view/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | /// 5 | /// 6 | /// 7 | /// 8 | /// 9 | /// 10 | /// 11 | /// 12 | /// 13 | /// 14 | /// 15 | /// 16 | /// 17 | /// 18 | /// 19 | /// 20 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/view/mxCellStatePreview.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * 4 | * @class mxCellStatePreview 5 | * 6 | * Implements a live preview for moving cells. 7 | */ 8 | class mxCellStatePreview { 9 | /** 10 | * Constructs a move preview for the given graph. 11 | * 12 | * @param {mxGraph} graph Reference to the enclosing . 13 | * @constructor 14 | * @memberof mxCellStatePreview 15 | */ 16 | constructor(graph: mxGraph); 17 | 18 | /** 19 | * Reference to the enclosing . 20 | */ 21 | graph: mxGraph; 22 | 23 | /** 24 | * Reference to the enclosing . 25 | */ 26 | deltas: mxDictionary; 27 | 28 | /** 29 | * Contains the number of entries in the map. 30 | */ 31 | count: number; 32 | 33 | /** 34 | * Returns true if this contains no entries. 35 | */ 36 | isEmpty(): boolean; 37 | 38 | /** 39 | * 40 | * 41 | * @param {mxCellState} state 42 | * @param {number} dx 43 | * @param {number} dy 44 | * @param {boolean} add 45 | * @param {boolean} includeEdges 46 | * @return {*} {mxPoint} 47 | * @memberof mxCellStatePreview 48 | */ 49 | moveState(state: mxCellState, dx: number, dy: number, add: boolean, includeEdges: boolean): mxPoint; 50 | 51 | /** 52 | * 53 | * 54 | * @param {Function} visitor 55 | * @memberof mxCellStatePreview 56 | */ 57 | show(visitor: Function): void; 58 | 59 | /** 60 | * 61 | * 62 | * @param {mxCellState} state 63 | * @param {number} dx 64 | * @param {number} dy 65 | * @memberof mxCellStatePreview 66 | */ 67 | translateState(state: mxCellState, dx: number, dy: number): void; 68 | 69 | /** 70 | * 71 | * 72 | * @param {mxCellState} state 73 | * @param {number} dx 74 | * @param {number} dy 75 | * @param {Function} visitor 76 | * @memberof mxCellStatePreview 77 | */ 78 | revalidateState(state: mxCellState, dx: number, dy: number, visitor: Function): void; 79 | 80 | /** 81 | * 82 | * 83 | * @param {mxCellState} state 84 | * @memberof mxCellStatePreview 85 | */ 86 | addEdges(state: mxCellState): void; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/view/mxConnectionConstraint.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * Defines an object that contains the constraints about how to connect one side of an edge to its terminal. 4 | * @class mxConnectionConstraint 5 | */ 6 | class mxConnectionConstraint { 7 | /** 8 | * Constructs a new connection constraint for the given point and boolean arguments. 9 | * @param point Optional mxPoint that specifies the fixed location of the point in relative coordinates. Default is null. 10 | * @param perimeter Optional boolean that specifies if the fixed point should be projected onto the perimeter of the terminal. Default is true. 11 | * @param name 12 | * @param dx 13 | * @param dy 14 | */ 15 | constructor(point?: mxPoint, perimeter?: boolean, name?: string, dx?: number, dy?: number); 16 | 17 | /** 18 | * Variable: point 19 | * 20 | * that specifies the fixed location of the connection point. 21 | */ 22 | point: mxPoint; 23 | 24 | /** 25 | * Variable: perimeter 26 | * 27 | * Boolean that specifies if the point should be projected onto the perimeter 28 | * of the terminal. 29 | */ 30 | perimeter: boolean; 31 | 32 | /** 33 | * Variable: name 34 | * 35 | * Optional string that specifies the name of the constraint. 36 | */ 37 | name: string; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/view/mxStyleRegistry.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * @class mxStyleRegistry 4 | * 5 | * Singleton class that acts as a global converter from string to object values 6 | * in a style. This is currently only used to perimeters and edge styles. 7 | */ 8 | class mxStyleRegistry { 9 | /** 10 | * Maps from strings to objects. 11 | */ 12 | values: { [key: string]: any }; 13 | 14 | /** 15 | * Puts the given object into the registry under the given name. 16 | */ 17 | putValue(name: string, obj: any): void; 18 | 19 | /** 20 | * Returns the value associated with the given name. 21 | */ 22 | getValue(name: string): any; 23 | 24 | /** 25 | * Returns the name for the given value. 26 | */ 27 | getName(value: any): string; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/ts/mxtypings/lib/view/mxTemporaryCellStates.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'mxgraph' { 2 | /** 3 | * @class mxTemporaryCellStates 4 | * 5 | * Creates a temporary set of cell states. 6 | */ 7 | class mxTemporaryCellStates { 8 | constructor( 9 | view: mxGraphView, 10 | scale: number, 11 | cells: Array, 12 | isCellVisibleFn: boolean, 13 | getLinkForCellState: Function 14 | ); 15 | 16 | /** 17 | * Holds the width of the rectangle. 18 | * @default 0 19 | */ 20 | view: number; 21 | 22 | /** 23 | * Holds the height of the rectangle. 24 | * @default 0 25 | */ 26 | oldStates: number; 27 | 28 | /** 29 | * Holds the height of the rectangle. 30 | * @default 0 31 | */ 32 | oldBounds: number; 33 | 34 | /** 35 | * Holds the height of the rectangle. 36 | * @default 0 37 | */ 38 | oldScale: number; 39 | 40 | destroy(): void; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/ts/schemaDesigner/schemaDesignerToolbar.ts: -------------------------------------------------------------------------------- 1 | import { mxCellState, mxGraph } from "mxgraph"; 2 | import {mxGraphFactory as mx} from '../mx'; 3 | import { SchemaDesignerConfig } from "./schemaDesignerInterfaces"; 4 | 5 | export class SchemaDesignerToolbar { 6 | private _toolbarDiv: HTMLElement; 7 | 8 | public buttons: Map = new Map(); 9 | 10 | constructor(private _container: HTMLElement, private _graph: mxGraph, private _config: SchemaDesignerConfig) { 11 | this._toolbarDiv = document.createElement("div"); 12 | this._container.appendChild(this._toolbarDiv); 13 | this._toolbarDiv.classList.add("sd-toolbar"); 14 | this._toolbarDiv.style.color = this._config.colors.toolbarForeground; 15 | } 16 | 17 | public addButton( 18 | icon: string, 19 | title: string, 20 | callback: () => void, 21 | onDragEndCallback?: (graph: mxGraph, evt: MouseEvent, cell: mxCellState) => void) { 22 | const button = document.createElement("div"); 23 | this._toolbarDiv.appendChild(button); 24 | button.classList.add("sd-toolbar-button"); 25 | button.innerHTML = icon; 26 | button.onclick = () => { 27 | if (!this.isButtonDisabled(title)) { 28 | callback(); 29 | } 30 | } 31 | button.title = title; 32 | if (onDragEndCallback) { 33 | const dragImage = button.cloneNode(true) as HTMLElement; 34 | dragImage.style.backgroundColor = this._config.colors.toolbarBackground; 35 | const ds = mx.mxUtils.makeDraggable( 36 | button, 37 | this._graph, 38 | onDragEndCallback, 39 | dragImage 40 | ); 41 | ds.highlightDropTargets = true; 42 | } 43 | this.buttons.set(title, button); 44 | } 45 | 46 | public disableButton(title: string) { 47 | this.buttons.get(title)?.classList.add("sd-toolbar-button-disabled"); 48 | } 49 | 50 | public enableButton(title: string) { 51 | this.buttons.get(title)?.classList.remove("sd-toolbar-button-disabled"); 52 | } 53 | 54 | public isButtonDisabled(title: string) { 55 | return this.buttons.get(title)?.classList.contains("sd-toolbar-button-disabled"); 56 | } 57 | 58 | public addDivider() { 59 | const divider = document.createElement("div"); 60 | this._toolbarDiv.appendChild(divider); 61 | divider.classList.add("sd-toolbar-divider"); 62 | } 63 | } -------------------------------------------------------------------------------- /src/ts/schemaDesigner/utils.ts: -------------------------------------------------------------------------------- 1 | import { mxCellState } from "mxgraph"; 2 | 3 | /** 4 | * This function should return the vertical center of the column in an entity 5 | * @param state cell containing the entity of the column. 6 | * @param column column element. 7 | * @returns the vertical center of the column. 8 | */ 9 | export function getRowY(state: mxCellState, column: HTMLElement): number { 10 | const s = state.view.scale; 11 | if (!column) { 12 | return state.y; 13 | } 14 | const div = column.parentNode as HTMLElement; 15 | let y = state.y + (column.offsetTop - div.scrollTop + column.offsetHeight / 2) * s; // 5 is the magic number to make the line completely centered to the row. 16 | if (div.scrollTop > column.offsetTop) { // If the column is above the visible area of the entity container div then we should use the top of the column container. 17 | y = state.y + (div.offsetTop - 15) * s; 18 | } 19 | if (y > state.y + div.offsetTop * s + div.clientHeight * s) { // If the column is below the visible area of the entity container div then we should use the bottom of the column container. 20 | y = state.y + (div.offsetTop + div.clientHeight - 5) * s; 21 | } 22 | return y; 23 | } -------------------------------------------------------------------------------- /test/queryplan/comparePlanModeWithFolding.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | Query Plan test 11 | 15 | 16 | 17 | 18 | 62 | 74 | 75 | 76 | 77 |
78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /test/queryplan/comparePlanModeWithNoFolding.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | Query Plan test 11 | 15 | 16 | 17 | 18 | 63 | 75 | 76 | 77 | 78 |
79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /test/queryplan/icons/adaptive_join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/adaptive_join.png -------------------------------------------------------------------------------- /test/queryplan/icons/aggregate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/aggregate.png -------------------------------------------------------------------------------- /test/queryplan/icons/apply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/apply.png -------------------------------------------------------------------------------- /test/queryplan/icons/arithmetic_expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/arithmetic_expression.png -------------------------------------------------------------------------------- /test/queryplan/icons/assert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/assert.png -------------------------------------------------------------------------------- /test/queryplan/icons/assign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/assign.png -------------------------------------------------------------------------------- /test/queryplan/icons/batch_hash_table_build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/batch_hash_table_build.png -------------------------------------------------------------------------------- /test/queryplan/icons/bitmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/bitmap.png -------------------------------------------------------------------------------- /test/queryplan/icons/bookmark_lookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/bookmark_lookup.png -------------------------------------------------------------------------------- /test/queryplan/icons/broadcast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/broadcast.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_index_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_index_delete.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_index_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_index_insert.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_index_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_index_merge.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_index_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_index_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_index_seek.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_index_seek.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_index_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_index_update.png -------------------------------------------------------------------------------- /test/queryplan/icons/clustered_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/clustered_update.png -------------------------------------------------------------------------------- /test/queryplan/icons/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/collapse.png -------------------------------------------------------------------------------- /test/queryplan/icons/collapse.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/queryplan/icons/columnstore_index_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/columnstore_index_delete.png -------------------------------------------------------------------------------- /test/queryplan/icons/columnstore_index_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/columnstore_index_insert.png -------------------------------------------------------------------------------- /test/queryplan/icons/columnstore_index_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/columnstore_index_merge.png -------------------------------------------------------------------------------- /test/queryplan/icons/columnstore_index_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/columnstore_index_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/columnstore_index_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/columnstore_index_update.png -------------------------------------------------------------------------------- /test/queryplan/icons/compute_scalar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/compute_scalar.png -------------------------------------------------------------------------------- /test/queryplan/icons/compute_to_control_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/compute_to_control_node.png -------------------------------------------------------------------------------- /test/queryplan/icons/concatenation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/concatenation.png -------------------------------------------------------------------------------- /test/queryplan/icons/const_table_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/const_table_get.png -------------------------------------------------------------------------------- /test/queryplan/icons/constant_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/constant_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/control_to_compute_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/control_to_compute_nodes.png -------------------------------------------------------------------------------- /test/queryplan/icons/convert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/convert.png -------------------------------------------------------------------------------- /test/queryplan/icons/cursor_catch_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/cursor_catch_all.png -------------------------------------------------------------------------------- /test/queryplan/icons/declare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/declare.png -------------------------------------------------------------------------------- /test/queryplan/icons/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/delete.png -------------------------------------------------------------------------------- /test/queryplan/icons/deleted_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/deleted_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/dynamic.png -------------------------------------------------------------------------------- /test/queryplan/icons/expand.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/queryplan/icons/external_broadcast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/external_broadcast.png -------------------------------------------------------------------------------- /test/queryplan/icons/external_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/external_export.png -------------------------------------------------------------------------------- /test/queryplan/icons/external_local_streaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/external_local_streaming.png -------------------------------------------------------------------------------- /test/queryplan/icons/external_round_robin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/external_round_robin.png -------------------------------------------------------------------------------- /test/queryplan/icons/external_shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/external_shuffle.png -------------------------------------------------------------------------------- /test/queryplan/icons/fetch_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/fetch_query.png -------------------------------------------------------------------------------- /test/queryplan/icons/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/filter.png -------------------------------------------------------------------------------- /test/queryplan/icons/foreign_key_references_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/foreign_key_references_check.png -------------------------------------------------------------------------------- /test/queryplan/icons/get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/get.png -------------------------------------------------------------------------------- /test/queryplan/icons/group_by_aggregate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/group_by_aggregate.png -------------------------------------------------------------------------------- /test/queryplan/icons/hash_match.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/hash_match.png -------------------------------------------------------------------------------- /test/queryplan/icons/hash_match_root.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/hash_match_root.png -------------------------------------------------------------------------------- /test/queryplan/icons/hash_match_team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/hash_match_team.png -------------------------------------------------------------------------------- /test/queryplan/icons/if.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/if.png -------------------------------------------------------------------------------- /test/queryplan/icons/index_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/index_delete.png -------------------------------------------------------------------------------- /test/queryplan/icons/index_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/index_insert.png -------------------------------------------------------------------------------- /test/queryplan/icons/index_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/index_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/index_seek.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/index_seek.png -------------------------------------------------------------------------------- /test/queryplan/icons/index_spool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/index_spool.png -------------------------------------------------------------------------------- /test/queryplan/icons/index_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/index_update.png -------------------------------------------------------------------------------- /test/queryplan/icons/insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/insert.png -------------------------------------------------------------------------------- /test/queryplan/icons/inserted_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/inserted_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/intrinsic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/intrinsic.png -------------------------------------------------------------------------------- /test/queryplan/icons/iterator_catch_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/iterator_catch_all.png -------------------------------------------------------------------------------- /test/queryplan/icons/join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/join.png -------------------------------------------------------------------------------- /test/queryplan/icons/keyset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/keyset.png -------------------------------------------------------------------------------- /test/queryplan/icons/language_construct_catch_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/language_construct_catch_all.png -------------------------------------------------------------------------------- /test/queryplan/icons/locate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/locate.png -------------------------------------------------------------------------------- /test/queryplan/icons/log_row_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/log_row_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/merge_interval.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/merge_interval.png -------------------------------------------------------------------------------- /test/queryplan/icons/merge_join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/merge_join.png -------------------------------------------------------------------------------- /test/queryplan/icons/nested_loops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/nested_loops.png -------------------------------------------------------------------------------- /test/queryplan/icons/overlay-parallelism.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/queryplan/icons/overlay-warning.svg: -------------------------------------------------------------------------------- 1 | StatusWarning_16x -------------------------------------------------------------------------------- /test/queryplan/icons/parallelism.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/parallelism.png -------------------------------------------------------------------------------- /test/queryplan/icons/parameter_table_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/parameter_table_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/population_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/population_query.png -------------------------------------------------------------------------------- /test/queryplan/icons/predict.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/predict.png -------------------------------------------------------------------------------- /test/queryplan/icons/print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/print.png -------------------------------------------------------------------------------- /test/queryplan/icons/project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/project.png -------------------------------------------------------------------------------- /test/queryplan/icons/rank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/rank.png -------------------------------------------------------------------------------- /test/queryplan/icons/refresh_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/refresh_query.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_delete.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_index_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_index_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_index_seek.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_index_seek.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_insert.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_query.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/remote_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/remote_update.png -------------------------------------------------------------------------------- /test/queryplan/icons/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/result.png -------------------------------------------------------------------------------- /test/queryplan/icons/rid_lookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/rid_lookup.png -------------------------------------------------------------------------------- /test/queryplan/icons/row_count_spool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/row_count_spool.png -------------------------------------------------------------------------------- /test/queryplan/icons/segment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/segment.png -------------------------------------------------------------------------------- /test/queryplan/icons/sequence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/sequence.png -------------------------------------------------------------------------------- /test/queryplan/icons/sequence_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/sequence_project.png -------------------------------------------------------------------------------- /test/queryplan/icons/set_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/set_function.png -------------------------------------------------------------------------------- /test/queryplan/icons/shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/shuffle.png -------------------------------------------------------------------------------- /test/queryplan/icons/single_source_round_robin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/single_source_round_robin.png -------------------------------------------------------------------------------- /test/queryplan/icons/single_source_shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/single_source_shuffle.png -------------------------------------------------------------------------------- /test/queryplan/icons/snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/snapshot.png -------------------------------------------------------------------------------- /test/queryplan/icons/sort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/sort.png -------------------------------------------------------------------------------- /test/queryplan/icons/split.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/split.png -------------------------------------------------------------------------------- /test/queryplan/icons/spool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/spool.png -------------------------------------------------------------------------------- /test/queryplan/icons/sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/sql.png -------------------------------------------------------------------------------- /test/queryplan/icons/stream_aggregate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/stream_aggregate.png -------------------------------------------------------------------------------- /test/queryplan/icons/switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/switch.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_delete.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_insert.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_merge.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_scan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_scan.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_spool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_spool.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_update.png -------------------------------------------------------------------------------- /test/queryplan/icons/table_valued_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/table_valued_function.png -------------------------------------------------------------------------------- /test/queryplan/icons/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/top.png -------------------------------------------------------------------------------- /test/queryplan/icons/trim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/trim.png -------------------------------------------------------------------------------- /test/queryplan/icons/udx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/udx.png -------------------------------------------------------------------------------- /test/queryplan/icons/union.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/union.png -------------------------------------------------------------------------------- /test/queryplan/icons/union_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/union_all.png -------------------------------------------------------------------------------- /test/queryplan/icons/update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/update.png -------------------------------------------------------------------------------- /test/queryplan/icons/window_aggregate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/azdataGraph/3647e88dcd62162ff38f016f88f09d4df10e69fd/test/queryplan/icons/window_aggregate.png -------------------------------------------------------------------------------- /test/queryplan/queryPlanColors.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Query Plan Cell Color test 8 | 12 | 13 | 14 | 15 | 43 | 44 | 45 | 46 |
47 | 48 | 49 | -------------------------------------------------------------------------------- /test/queryplan/queryPlanListener.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Query Plan Listener test 8 | 12 | 13 | 14 | 15 | 49 | 50 | 51 | 52 |
53 | 54 | 55 | -------------------------------------------------------------------------------- /test/queryplan/queryplan.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Query Plan test 8 | 12 | 13 | 14 | 15 | 37 | 49 | 50 | 51 | 52 |
53 | 54 | 55 | -------------------------------------------------------------------------------- /test/queryplan/queryplan2.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | Query Plan test 11 | 15 | 16 | 17 | 18 | 62 | 74 | 75 | 76 | 77 |
78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /test/queryplan/queryplanParentVisibility.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Query Plan test 8 | 12 | 13 | 14 | 15 | 42 | 54 | 55 | 56 | 57 |
58 | 59 | 60 | -------------------------------------------------------------------------------- /test/queryplan/queryplanPolygon.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Query Plan test 8 | 12 | 13 | 14 | 15 | 43 | 55 | 56 | 57 | 58 |
59 | 60 | 61 | -------------------------------------------------------------------------------- /ts-examples/adventureWorks.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Medium Schema Designer 7 | 8 | 23 | 59 | 60 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /ts-examples/helloWorld.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hello World 5 | 14 | 52 | 53 | 54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /ts-examples/resources/addTable.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/arrange.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/connector.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ts-examples/resources/delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/export.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/redo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/schemaDesigner.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --graph-font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; 3 | --color-toolbar-bg: #2c2c2c; 4 | --color-toolbar-text: #fff; 5 | --color-toolbar-button-hover: #383838; 6 | --color-toolbar-divider: #444444; 7 | --color-border: #c3c3c3; 8 | --color-outline-color: #0c8ce9; 9 | --color-graph-gridLines: #c3c3c3; 10 | --color-graph-outline-background: #fff; 11 | --color-graph-cell-highlight: #0c8ce9; 12 | --color-graph-outline-tableCell: #1e272e; 13 | --color-graph-outline-columnCell: #bdc3c7; 14 | --color-graph-background: #ffffff; 15 | --color-graph-table-indicator: #00a2ad; 16 | --color-graph-column-indicator: #f0f0f0; 17 | --color-graph-node-hover: #f0f0f0; 18 | } 19 | .background { 20 | margin: 0; 21 | padding: 0; 22 | width: 100%; 23 | height: 100%; 24 | padding: 10px; 25 | } 26 | #graphContainer { 27 | position: relative; 28 | overflow: hidden; 29 | width: 100%; 30 | height: calc(100vh - 20px); 31 | user-select: none; 32 | } -------------------------------------------------------------------------------- /ts-examples/resources/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/tableNode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ts-examples/resources/text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Layer 1 5 | 6 | 7 | -------------------------------------------------------------------------------- /ts-examples/resources/undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/zoomFit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/zoomIn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/resources/zoomOut.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ts-examples/worldWideImporters.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Big Schema Designer 7 | 8 | 23 | 52 | 53 | 54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "jsx": "react", 4 | "target": "es2016", 5 | "module": "commonjs", 6 | "declaration": true, 7 | "outDir": "./dist", 8 | "esModuleInterop": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "skipLibCheck": true, 11 | "strict": true, 12 | "noUnusedLocals": true, 13 | "noUnusedParameters": true, 14 | "noFallthroughCasesInSwitch": true, 15 | "composite": true, 16 | "allowSyntheticDefaultImports": true, 17 | "noImplicitOverride": true, 18 | "paths": { 19 | "mxgraph": ["./dist/build.js"] 20 | }, 21 | "moduleResolution": "node", 22 | }, 23 | "include": ["index.d.ts", "src/ts/**/*.ts", "src/ts/**/*.d.ts", "src/ts/examples/**/*.tsx"] 24 | } 25 | --------------------------------------------------------------------------------