@linkurious/ogma-linkurious-parser 4.1.7 → 4.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.mjs +4099 -0
- package/dist/index.mjs.map +1 -0
- package/dist/ogma/features/nodeGrouping.d.ts +15 -1
- package/dist/styles/styleRules.d.ts +8 -0
- package/dist/tools/ogmaTool.d.ts +3 -1
- package/package.json +23 -21
- package/dist/captions/captions.js +0 -115
- package/dist/captions/captions.js.map +0 -1
- package/dist/filters/filters.js +0 -167
- package/dist/filters/filters.js.map +0 -1
- package/dist/index.js +0 -56
- package/dist/index.js.map +0 -1
- package/dist/ogma/features/OgmaStore.js +0 -37
- package/dist/ogma/features/OgmaStore.js.map +0 -1
- package/dist/ogma/features/captions.js +0 -117
- package/dist/ogma/features/captions.js.map +0 -1
- package/dist/ogma/features/nodeGrouping.js +0 -283
- package/dist/ogma/features/nodeGrouping.js.map +0 -1
- package/dist/ogma/features/reactive.js +0 -132
- package/dist/ogma/features/reactive.js.map +0 -1
- package/dist/ogma/features/selectors.js +0 -97
- package/dist/ogma/features/selectors.js.map +0 -1
- package/dist/ogma/features/styles.js +0 -689
- package/dist/ogma/features/styles.js.map +0 -1
- package/dist/ogma/features/transformations.js +0 -86
- package/dist/ogma/features/transformations.js.map +0 -1
- package/dist/ogma/index.js +0 -326
- package/dist/ogma/index.js.map +0 -1
- package/dist/styles/edgeAttributes.js +0 -115
- package/dist/styles/edgeAttributes.js.map +0 -1
- package/dist/styles/itemAttributes.js +0 -133
- package/dist/styles/itemAttributes.js.map +0 -1
- package/dist/styles/nodeAttributes.js +0 -228
- package/dist/styles/nodeAttributes.js.map +0 -1
- package/dist/styles/styleRule.js +0 -194
- package/dist/styles/styleRule.js.map +0 -1
- package/dist/styles/styleRules.js +0 -292
- package/dist/styles/styleRules.js.map +0 -1
- package/dist/tools/colorPalette.js +0 -145
- package/dist/tools/colorPalette.js.map +0 -1
- package/dist/tools/ogmaTool.js +0 -86
- package/dist/tools/ogmaTool.js.map +0 -1
- package/dist/tools/tools.js +0 -409
- package/dist/tools/tools.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ogma/features/styles.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport * as o from '@linkurious/ogma';\nimport {\n Badge,\n Edge,\n EdgeAttributesValue,\n Node,\n NodeAttributesValue,\n StyleClass,\n StyleRule\n} from '@linkurious/ogma';\nimport {\n GenericObject,\n IEdgeStyle,\n INodeStyle,\n IStyleIcon,\n IStyleRule,\n LkEdgeData,\n LkNodeData,\n OgmaEdgeShape,\n OgmaNodeShape,\n TextOptions\n} from '@linkurious/rest-client';\n\nimport {\n BASE_GREY,\n EdgeAttributes,\n LKOgma,\n NodeAttributes,\n OgmaTools,\n StyleRule as LKStyleRule,\n StyleRules,\n StyleType\n} from '../..';\nimport {Tools} from '../../tools/tools';\nimport {OgmaImage} from '../../styles/nodeAttributes';\n\nexport interface StylesConfig {\n nodeColorStyleRules: Array<LKStyleRule>;\n nodeIconStyleRules: Array<LKStyleRule>;\n nodeSizeStyleRules: Array<LKStyleRule>;\n nodeShapeStyleRules?: Array<LKStyleRule>;\n edgeColorStyleRules: Array<LKStyleRule>;\n edgeWidthStyleRules: Array<LKStyleRule>;\n edgeShapeStyleRules?: Array<LKStyleRule>;\n}\n\nconst HOVERED_SELECTED_NODE_STYLE: NodeAttributesValue<LkNodeData, LkEdgeData> = {\n text: {\n style: 'bold',\n backgroundColor: '#fff',\n minVisibleSize: 0\n },\n outerStroke: {width: 2},\n outline: false\n};\n\nconst HOVERED_SELECTED_EDGE_STYLE: EdgeAttributesValue<LkEdgeData, LkNodeData> = {\n text: {\n style: 'bold',\n backgroundColor: '#fff',\n minVisibleSize: 0\n },\n outline: false\n};\n\nconst NODE_HALO_CONFIGURATION = {\n color: '#FFF',\n width: 7,\n scalingMethod: 'scaled',\n strokeWidth: 0,\n hideNonAdjacentEdges: false\n} as {\n color: '#FFF';\n width: 7;\n strokeWidth: 0;\n};\n\nconst EDGE_HALO_CONFIGURATION = {\n color: '#FFF',\n scalingMethod: 'scaled',\n width: 4\n} as {\n color: '#FFF';\n width: 4;\n};\n\nconst DEFAULT_OGMA_FONT = \"'roboto', sans-serif\";\nconst DARK_FONT_COLOR = '#000';\nconst CLEAR_FONT_COLOR = '#FFF';\nconst ITEM_DEFAULT_COLOR = '#7f7f7f';\nexport const FILTER_OPACITY = 0.2;\n\nexport class StylesViz {\n private _ogma: LKOgma;\n private _exportClass!: StyleClass;\n private _nodeDefaultStylesRules!: StyleRule<LkNodeData, LkEdgeData>;\n // @ts-ignore\n private _nodeDefaultHaloRules!: StyleRule<LkNodeData, LkEdgeData>;\n private _edgeDefaultStylesRules!: StyleRule<LkNodeData, LkEdgeData>;\n // @ts-ignore\n private _edgeDefaultHaloRules!: StyleRule<LkNodeData, LkEdgeData>;\n\n private _nodeAttributes: NodeAttributes = new NodeAttributes({});\n private _edgeAttributes: EdgeAttributes = new EdgeAttributes({});\n\n private _ogmaNodeColor!: StyleRule;\n private _ogmaNodeIcon!: StyleRule;\n private _ogmaNodeSize!: StyleRule;\n private _ogmaNodeShape!: StyleRule;\n private _ogmaEdgeColor!: StyleRule;\n private _ogmaEdgeWidth!: StyleRule;\n private _ogmaEdgeShape!: StyleRule;\n private _defaultConfiguration: {\n node: {\n nodeRadius?: number;\n shape?: OgmaNodeShape;\n text?: TextOptions & {\n nodePosition?: 'right' | 'left' | 'top' | 'bottom' | 'center';\n };\n };\n edge: {\n edgeWidth?: number;\n shape?: OgmaEdgeShape;\n text?: TextOptions;\n };\n };\n\n constructor(\n ogma: LKOgma,\n configuration: {\n node: {\n nodeRadius?: number;\n shape?: OgmaNodeShape;\n text?: TextOptions & {\n nodePosition?: 'right' | 'left' | 'top' | 'bottom' | 'center';\n };\n };\n edge: {\n edgeWidth?: number;\n shape?: OgmaEdgeShape;\n text?: TextOptions;\n };\n baseUrl?: string;\n }\n ) {\n this._ogma = ogma;\n this._defaultConfiguration = configuration;\n this._nodeAttributes.setBaseUrl(configuration.baseUrl);\n }\n\n /**\n * Set nodes default styles based on the configuration\n */\n public setNodesDefaultStyles(): void {\n // setting selection and hover attributes\n this._ogma.styles.setHoveredNodeAttributes(HOVERED_SELECTED_NODE_STYLE);\n this._ogma.styles.setSelectedNodeAttributes(HOVERED_SELECTED_NODE_STYLE);\n // setting default styles\n this._nodeDefaultStylesRules = this._ogma.styles.addRule({\n nodeAttributes: {\n text: {\n padding: 5,\n minVisibleSize:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.minVisibleSize\n ? this._defaultConfiguration.node.text.minVisibleSize\n : 12,\n maxLineLength:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.maxLineLength !== undefined\n ? this._defaultConfiguration.node.text.maxLineLength\n : 30,\n position:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.nodePosition !== undefined\n ? this._defaultConfiguration.node.text.nodePosition\n : 'bottom',\n backgroundColor:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.backgroundColor !== undefined\n ? this._defaultConfiguration.node.text.backgroundColor\n : undefined,\n font:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.font !== undefined\n ? this._defaultConfiguration.node.text.font\n : \"'roboto', sans-serif\",\n color:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.color !== undefined\n ? this._defaultConfiguration.node.text.color\n : 'black',\n size:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.size !== undefined\n ? this._defaultConfiguration.node.text.size\n : 14,\n margin: 5\n },\n radius: this.defaultNodeRadius(this._defaultConfiguration.node),\n icon: {\n minVisibleSize: 15\n },\n color: ITEM_DEFAULT_COLOR,\n shape:\n this._defaultConfiguration.node.shape !== undefined\n ? this._defaultConfiguration.node.shape\n : ('circle' as OgmaNodeShape),\n innerStroke: {\n width: 3\n },\n outline: false\n }\n });\n }\n\n /**\n * Set edges default styles based on the configuration\n */\n public setEdgesDefaultStyles(): void {\n // setting selection and hover attributes\n this._ogma.styles.setHoveredEdgeAttributes(HOVERED_SELECTED_EDGE_STYLE);\n this._ogma.styles.setSelectedEdgeAttributes(HOVERED_SELECTED_EDGE_STYLE);\n // setting default styles\n this._edgeDefaultStylesRules = this._ogma.styles.addRule({\n edgeAttributes: {\n text: {\n minVisibleSize:\n this._defaultConfiguration.edge.text !== undefined &&\n this._defaultConfiguration.edge.text.minVisibleSize\n ? this._defaultConfiguration.edge.text.minVisibleSize\n : 3,\n maxLineLength:\n this._defaultConfiguration.edge.text !== undefined &&\n this._defaultConfiguration.edge.text.maxLineLength !== undefined\n ? this._defaultConfiguration.edge.text.maxLineLength\n : 30,\n backgroundColor:\n this._defaultConfiguration.edge.text !== undefined &&\n this._defaultConfiguration.edge.text.backgroundColor !== undefined\n ? this._defaultConfiguration.edge.text.backgroundColor\n : undefined,\n font:\n this._defaultConfiguration.edge.text !== undefined &&\n this._defaultConfiguration.edge.text.font !== undefined\n ? this._defaultConfiguration.edge.text.font\n : \"'roboto', sans-serif\",\n color:\n this._defaultConfiguration.edge?.text !== undefined &&\n this._defaultConfiguration.edge.text.color !== undefined\n ? this._defaultConfiguration.edge.text.color\n : 'black',\n size:\n this._defaultConfiguration.edge.text !== undefined &&\n this._defaultConfiguration.edge.text.size !== undefined\n ? this._defaultConfiguration.edge.text.size\n : 14\n },\n width: this.defaultEdgeWidth(this._defaultConfiguration.edge),\n shape:\n this._defaultConfiguration.edge.shape !== undefined\n ? this._defaultConfiguration.edge.shape\n : 'arrow',\n color: ITEM_DEFAULT_COLOR\n }\n });\n }\n\n /**\n * Set nodes default styles based on the configuration\n */\n public setNodesDefaultHalo(): void {\n // setting default halo style\n this._nodeDefaultHaloRules = this._ogma.styles.addRule({\n nodeSelector: (node) => node && !node.hasClass('filtered'),\n nodeAttributes: {\n halo: (node) => {\n if (\n node !== undefined &&\n !node.hasClass('filtered') &&\n (node.isSelected() ||\n node.getAdjacentNodes({}).isSelected().includes(true) ||\n node.getAdjacentEdges().isSelected().includes(true))\n ) {\n return {\n ...NODE_HALO_CONFIGURATION,\n scalingMethod: this._ogma.geo.enabled() ? 'fixed' : 'scaled'\n };\n }\n return null;\n }\n },\n // recalculate the rule *only* when itself or adjacent\n // elements change their selection status\n nodeDependencies: {\n self: {\n selection: true\n },\n adjacentNodes: {\n selection: true\n },\n adjacentEdges: {\n selection: true\n }\n }\n });\n }\n\n /**\n * Set edges default styles based on the configuration\n */\n public setEdgesDefaultHalo(): void {\n // setting default halo styles\n this._edgeDefaultHaloRules = this._ogma.styles.addRule({\n edgeSelector: (edge: Edge) =>\n edge && edge.getSource() && edge.getTarget() && !edge.hasClass('filtered'),\n edgeAttributes: {\n halo: (edge) => {\n if (\n edge &&\n !edge.hasClass('filtered') &&\n (edge.isSelected() || edge.getSource().isSelected() || edge.getTarget().isSelected())\n ) {\n return {\n ...EDGE_HALO_CONFIGURATION,\n scalingMethod: this._ogma.geo.enabled() ? 'fixed' : 'scaled'\n };\n }\n return null;\n }\n },\n // this rule will only be invoked when the selection status\n // of the edge or it's extremities is changed\n edgeDependencies: {\n self: {\n selection: true\n },\n extremities: {\n selection: true\n }\n }\n });\n }\n\n /**\n * Return the default node radius set in configuration or 5\n *\n * @returns {number}\n */\n private defaultNodeRadius(styles: any): number {\n return this.defaultStylesHas(styles, ['nodeRadius']) ? styles.nodeRadius : 5;\n }\n\n /**\n * Return the default edge width set in configuration or 1\n *\n * @returns {number}\n */\n private defaultEdgeWidth(styles: any): number {\n return this.defaultStylesHas(styles, ['edgeWidth']) ? styles.edgeWidth : 1;\n }\n\n /**\n * Check if a style property exists in the default styles object\n */\n private defaultStylesHas(styles: GenericObject<unknown>, propertyPath: Array<string>): boolean {\n if (!Tools.isDefined(styles)) {\n return false;\n }\n return Tools.getIn(styles, propertyPath) !== undefined;\n }\n\n /**\n * Set styles for the class \"filtered\"\n */\n public setFilterClass(): void {\n this._ogma.styles.createClass({\n name: 'filtered',\n nodeAttributes: {\n opacity: FILTER_OPACITY,\n layer: (node): number => {\n // if the node is part of a virtual node, it should be on top\n if (node.getMetaNode() !== null) {\n return 1;\n }\n return -1;\n },\n detectable: false,\n badges: {\n topRight: {\n text: null\n },\n bottomRight: {\n text: null\n }\n },\n text: null,\n color: 'rgb(240, 240, 240)',\n innerStroke: {\n width: 1,\n color: BASE_GREY,\n minVisibleSize: 1\n },\n shape: 'circle',\n image: null,\n icon: null,\n radius: '50%'\n },\n edgeAttributes: {\n opacity: FILTER_OPACITY,\n layer: (edge): number => {\n const isEdgeInsideNodeGroup = edge\n .getExtremities()\n .getMetaNode()\n .some((node) => node !== null);\n // if the edge is part of a virtual node, it should be on top\n if (!edge.isVirtual() && isEdgeInsideNodeGroup) {\n return 1;\n }\n return -1;\n },\n detectable: false,\n text: null,\n color: BASE_GREY,\n shape: 'line',\n width: 0.2\n }\n });\n }\n\n /**\n * Set the class for exported nodes and edges\n */\n public setExportClass(textWrappingLength?: boolean): void {\n if (!this._exportClass) {\n this._exportClass = this._ogma.styles.createClass({\n name: 'exported',\n nodeAttributes: {\n text: {\n minVisibleSize: 0,\n size: 12,\n maxLineLength: textWrappingLength ? 30 : 0\n },\n halo: null\n },\n edgeAttributes: {\n text: {\n minVisibleSize: 0,\n size: 12\n },\n halo: null\n }\n });\n } else {\n this._exportClass.update({\n nodeAttributes: {\n text: {\n maxLineLength: textWrappingLength ? 30 : 0\n },\n halo: null\n }\n });\n }\n }\n\n /**\n * Set the rule to display badges\n */\n public setBadgeRule() {\n this._ogma.styles.createClass({\n name: 'degreeIndicator',\n nodeAttributes: {\n badges: {\n topRight: (node) => {\n if (node !== undefined) {\n const degree = Tools.getHiddenNeighbors(node.toList());\n const badgeContent = Tools.formatNumber(degree);\n if (degree > 0) {\n const nodeColor = Array.isArray(node.getAttribute('color'))\n ? node.getAttribute('color')![0]\n : node.getAttribute('color');\n const textColor = OgmaTools.isBright(nodeColor as o.Color)\n ? DARK_FONT_COLOR\n : CLEAR_FONT_COLOR;\n const isSupernode = node.getData(['statistics', 'supernode']);\n let content = null;\n if (+badgeContent !== 0) {\n content = isSupernode ? badgeContent + '+' : badgeContent;\n }\n return {\n color: 'inherit',\n minVisibleSize: 20,\n stroke: {\n width: 0,\n color: null\n },\n text: {\n font:\n this._defaultConfiguration.node.text !== undefined &&\n this._defaultConfiguration.node.text.font !== undefined\n ? this._defaultConfiguration.node.text.font\n : DEFAULT_OGMA_FONT,\n scale: 0.4,\n color: textColor,\n content: content\n }\n };\n }\n }\n }\n }\n }\n });\n this._ogma.styles.createClass({\n name: 'pinnedIndicator',\n nodeAttributes: {\n badges: {\n bottomRight: (node): Badge | undefined => {\n if (node !== undefined && !node.getAttribute('layoutable')) {\n return {\n color: this._findPinBadgeBackgroundColor(node),\n minVisibleSize: 20,\n scale: this._findPinBadgeScale(node),\n stroke: {\n width: 0,\n color: null\n },\n text: {\n font: 'FontAwesome',\n scale: 0.4,\n color: this._findPinBadgeTextColor(node),\n content: node.getAttribute('layoutable') ? null : '\\uf08d'\n }\n };\n }\n }\n }\n },\n nodeDependencies: {\n self: {attributes: ['layoutable']}\n }\n });\n this._ogma.events.on('addNodes', (nodesEvent) => nodesEvent.nodes.addClass('degreeIndicator'));\n this._ogma.events.on('addNodes', (nodesEvent) => nodesEvent.nodes.addClass('pinnedIndicator'));\n }\n\n /**\n * Delete the rule to display badges\n */\n public deleteBadgeRule() {\n this._ogma.getNodes().removeClasses(['degreeIndicator', 'pinnedIndicator'], 0);\n }\n\n /**\n * set text overlap to true or false\n *\n * @param {boolean} overlap\n */\n public toggleTextOverlap(overlap?: boolean): void {\n this._ogma.setOptions({texts: {preventOverlap: overlap}});\n }\n\n /**\n * refresh nodes and edge rules\n *\n */\n public refreshRules(): void {\n this._nodeDefaultStylesRules.refresh();\n this._edgeDefaultStylesRules.refresh();\n }\n\n /**\n * Create / refresh an ogma rule for node colors\n */\n public refreshNodeColors(colorStyleRules: Array<LKStyleRule<INodeStyle>>): void {\n if (!Tools.isDefined(this._ogmaNodeColor)) {\n this._nodeAttributes.refresh({color: colorStyleRules});\n this._ogmaNodeColor = this._ogma.styles.addRule({\n nodeAttributes: {\n color: (node: o.Node | undefined) => {\n if (node !== undefined) {\n return this._nodeAttributes.color(node.getData());\n }\n }\n },\n nodeDependencies: {self: {data: true}}\n });\n } else {\n this._nodeAttributes.refresh({color: colorStyleRules});\n this._ogmaNodeColor.refresh();\n // TODO refresh node icons when moving the code from LKE\n // this.refreshIconsColor();\n }\n }\n\n /**\n * Return an array of StyleRules with only the style that need to be applied\n */\n public getStyleRule(\n state: Array<IStyleRule<INodeStyle | IEdgeStyle>>,\n styleType: StyleType\n ): LKStyleRule[] {\n return new StyleRules(state)[styleType];\n }\n\n public initNodeColors(nodeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>): void {\n const nodeColorRules = this.getStyleRule(\n nodeRules,\n StyleType.COLOR\n ) as LKStyleRule<INodeStyle>[];\n this.refreshNodeColors(nodeColorRules);\n }\n\n public initNodesIcons(nodeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>) {\n const nodeIconsRules = this.getStyleRule(\n nodeRules,\n StyleType.ICON\n ) as LKStyleRule<INodeStyle>[];\n this.refreshNodeIcons(nodeIconsRules);\n }\n\n public initNodesSizes(nodeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>): void {\n const nodeSizeRules = this.getStyleRule(nodeRules, StyleType.SIZE) as LKStyleRule<INodeStyle>[];\n this.refreshNodeSize(nodeSizeRules);\n }\n\n public initNodesShapes(nodeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>) {\n const nodeShapesRules = this.getStyleRule(\n nodeRules,\n StyleType.SHAPE\n ) as LKStyleRule<INodeStyle>[];\n this.refreshNodeShape(nodeShapesRules);\n }\n\n public initEdgesWidth(edgeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>) {\n const edgesWidthRules = this.getStyleRule(\n edgeRules,\n StyleType.WIDTH\n ) as LKStyleRule<IEdgeStyle>[];\n this.refreshEdgeWidth(edgesWidthRules);\n }\n\n public initEdgesShape(edgeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>) {\n const edgesShapeRules = this.getStyleRule(\n edgeRules,\n StyleType.SHAPE\n ) as LKStyleRule<IEdgeStyle>[];\n this.refreshEdgeShape(edgesShapeRules);\n }\n\n public initEdgesColor(edgeRules: Array<IStyleRule<INodeStyle | IEdgeStyle>>): void {\n const edgesColorRules = this.getStyleRule(\n edgeRules,\n StyleType.COLOR\n ) as LKStyleRule<IEdgeStyle>[];\n this.refreshEdgeColors(edgesColorRules);\n }\n\n /**\n * Create / refresh an ogma rule for node icons\n *\n * @param {Array<any>} iconStyleRules\n */\n public refreshNodeIcons(iconStyleRules: Array<LKStyleRule<INodeStyle>>): void {\n if (!Tools.isDefined(this._ogmaNodeIcon)) {\n this._nodeAttributes.refresh({icon: iconStyleRules});\n this._ogmaNodeIcon = this._ogma.styles.addRule({\n nodeAttributes: {\n icon: (node: o.Node | undefined): IStyleIcon | undefined => {\n if (node !== undefined) {\n return this._nodeAttributes.icon(node.getData()).icon;\n }\n },\n image: (node: o.Node | undefined): OgmaImage | null | undefined => {\n if (node !== undefined && !node.isVirtual()) {\n return this._nodeAttributes.icon(node.getData()).image;\n }\n }\n },\n nodeDependencies: {self: {data: true}}\n });\n } else {\n this._nodeAttributes.refresh({icon: iconStyleRules});\n void this._ogmaNodeIcon.refresh();\n }\n }\n\n /**\n * Create / refresh an ogma rule for node sizes\n *\n * @param {Array<any>} sizeStyleRules\n */\n public refreshNodeSize(sizeStyleRules: Array<LKStyleRule<INodeStyle>>): void {\n if (!Tools.isDefined(this._ogmaNodeSize)) {\n this._nodeAttributes.refresh({size: sizeStyleRules});\n this._ogmaNodeSize = this._ogma.styles.addRule({\n nodeAttributes: {\n radius: (node: o.Node | undefined) => {\n if (node !== undefined) {\n return this._nodeAttributes.size(node.getData());\n }\n }\n },\n nodeDependencies: {self: {data: true}}\n });\n } else {\n this._nodeAttributes.refresh({size: sizeStyleRules});\n this._ogmaNodeSize.refresh();\n }\n }\n\n /**\n * Create / refresh an ogma rule for node images\n *\n * @param {Array<any>} shapeStyleRules\n */\n public refreshNodeShape(shapeStyleRules: Array<LKStyleRule<INodeStyle>>): void {\n if (!Tools.isDefined(this._ogmaNodeShape)) {\n this._nodeAttributes.refresh({shape: shapeStyleRules});\n this._ogmaNodeShape = this._ogma.styles.addRule({\n nodeAttributes: {\n shape: (node: o.Node | undefined) => {\n if (node !== undefined) {\n return this._nodeAttributes.shape(node.getData());\n }\n }\n },\n nodeSelector: (node: o.Node | undefined) => node !== undefined && !node.isVirtual(),\n nodeDependencies: {self: {data: true}}\n });\n } else {\n this._nodeAttributes.refresh({shape: shapeStyleRules});\n this._ogmaNodeShape.refresh();\n }\n }\n\n /**\n * Create / refresh an ogma rule for edge colors\n */\n public refreshEdgeColors(colorStyleRules: Array<LKStyleRule<IEdgeStyle>>): void {\n if (!Tools.isDefined(this._ogmaEdgeColor)) {\n this._edgeAttributes.refresh({color: colorStyleRules});\n this._ogmaEdgeColor = this._ogma.styles.addRule({\n edgeAttributes: {\n color: (edge: o.Edge | undefined) => {\n if (edge !== undefined) {\n return this._edgeAttributes.color(edge.getData());\n }\n }\n },\n edgeDependencies: {self: {data: true}}\n });\n } else {\n this._edgeAttributes.refresh({color: colorStyleRules});\n this._ogmaEdgeColor.refresh();\n }\n }\n\n /**\n * Create / refresh an ogma rule for edge width\n *\n * @param {Array<LKStyleRule>} widthStyleRules\n */\n public refreshEdgeWidth(widthStyleRules: Array<LKStyleRule<IEdgeStyle>>): void {\n if (!Tools.isDefined(this._ogmaEdgeWidth)) {\n this._edgeAttributes.refresh({width: widthStyleRules});\n this._ogmaEdgeWidth = this._ogma.styles.addRule({\n edgeAttributes: {\n width: (edge: o.Edge | undefined) => {\n if (edge !== undefined) {\n return this._edgeAttributes.width(edge.getData());\n }\n }\n },\n edgeDependencies: {\n self: {data: true}\n }\n });\n } else {\n this._edgeAttributes.refresh({width: widthStyleRules});\n this._ogmaEdgeWidth.refresh();\n }\n }\n\n /**\n * Create / refresh an ogma rule for edge width\n *\n * @param {Array<LKStyleRule>} shapeStyleRules\n */\n public refreshEdgeShape(shapeStyleRules: Array<LKStyleRule<IEdgeStyle>>): void {\n if (!Tools.isDefined(this._ogmaEdgeShape)) {\n this._edgeAttributes.refresh({shape: shapeStyleRules});\n this._ogmaEdgeShape = this._ogma.styles.addRule({\n edgeAttributes: {\n shape: (edge: o.Edge | undefined) => {\n if (edge !== undefined) {\n return this._edgeAttributes.shape(edge.getData());\n }\n }\n },\n edgeDependencies: {self: {data: true}}\n });\n } else {\n this._edgeAttributes.refresh({shape: shapeStyleRules});\n this._ogmaEdgeShape.refresh();\n }\n }\n\n /**\n * Get node radius\n * This is a workaround for an ogma issue where the radius of virtual nodes is always set to 5\n * TODO: check if this is still needed after ogma release the new improvement for transformation v5.X\n */\n private _getNodeRadius(node: Node<LkNodeData, LkEdgeData>): number {\n if (!node.isVirtual()) {\n return node.getAttribute('radius') as number;\n } else {\n // get the width and height of the box that contains the nodes inside the virtual node\n const {width, height} = node.getSubNodes()?.getBoundingBox()!;\n return Math.max(width, height);\n }\n }\n\n /**\n * Calculate the scale of the pin badge related to the node radius\n * This is useful when dealing wih huge nodes, and we don't want the badge to be big\n * If the node is small enough, the badge will be 0.46 of the node radius\n * Else it will be 5 / radius\n */\n private _findPinBadgeScale(node: Node<LkNodeData, LkEdgeData>): number {\n // the maximum radius for the badge\n const MAX = 5;\n const defaultRatio = 0.46;\n const bigNodeRatio = 0.17;\n const radius = this._getNodeRadius(node);\n return radius * defaultRatio > MAX ? bigNodeRatio : defaultRatio;\n }\n\n /**\n * Find the color of the pin badge text\n */\n private _findPinBadgeTextColor(node: Node<LkNodeData, LkEdgeData>): string {\n if (node.isVirtual()) {\n return CLEAR_FONT_COLOR;\n }\n const nodeColor = Array.isArray(node.getAttribute('color'))\n ? node.getAttribute('color')![0]\n : node.getAttribute('color');\n return OgmaTools.isBright(nodeColor as o.Color) ? DARK_FONT_COLOR : CLEAR_FONT_COLOR;\n }\n\n /**\n * Find the color of the pin badge background\n */\n private _findPinBadgeBackgroundColor(node: Node<LkNodeData, LkEdgeData>): string {\n return node.isVirtual() ? BASE_GREY : 'inherit';\n }\n}\n"]}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.TransformationsViz = void 0;
|
|
13
|
-
const nodeGrouping_1 = require("./nodeGrouping");
|
|
14
|
-
const DEFAULT_EDGE_GROUP_STYLE = {
|
|
15
|
-
color: '#000000',
|
|
16
|
-
shape: {
|
|
17
|
-
style: 'dashed',
|
|
18
|
-
head: 'arrow'
|
|
19
|
-
},
|
|
20
|
-
width: 1.5
|
|
21
|
-
};
|
|
22
|
-
class TransformationsViz {
|
|
23
|
-
constructor(ogma) {
|
|
24
|
-
this._ogma = ogma;
|
|
25
|
-
this.groupedEdges = {};
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* create an edge grouping transformation by edge type
|
|
29
|
-
*/
|
|
30
|
-
initTransformation() {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
if (this.transformation === undefined) {
|
|
33
|
-
this.transformation = this._ogma.transformations.addEdgeGrouping({
|
|
34
|
-
separateEdgesByDirection: true,
|
|
35
|
-
selector: (edge) => {
|
|
36
|
-
return this.groupedEdges[edge.getData('type')];
|
|
37
|
-
},
|
|
38
|
-
groupIdFunction: (edge) => edge.getData('type'),
|
|
39
|
-
generator: (edges) => {
|
|
40
|
-
return {
|
|
41
|
-
data: {
|
|
42
|
-
properties: {
|
|
43
|
-
originalType: edges.getData('type')[0]
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
yield this.transformation.refresh();
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* init edge grouping style
|
|
57
|
-
*/
|
|
58
|
-
initEdgeGroupingStyle() {
|
|
59
|
-
this.edgeGroupingStyleRule = this._ogma.styles.addRule({
|
|
60
|
-
edgeAttributes: Object.assign(Object.assign(Object.assign({}, DEFAULT_EDGE_GROUP_STYLE), this.edgeGroupStyle), { text: {
|
|
61
|
-
content: (edge) => {
|
|
62
|
-
// check it the edge is virtual and was not created by node grouping
|
|
63
|
-
if (edge !== undefined &&
|
|
64
|
-
edge.getSubEdges() !== null &&
|
|
65
|
-
edge.getData('type') !== nodeGrouping_1.LKE_NODE_GROUPING_EDGE) {
|
|
66
|
-
const size = edge.getSubEdges().filter((e) => !e.hasClass('filtered')).size;
|
|
67
|
-
return `${edge.getData(['properties', 'originalType'])} (${size})`;
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
style: 'bold'
|
|
71
|
-
} }),
|
|
72
|
-
edgeSelector: (edge) => edge.isVirtual() &&
|
|
73
|
-
edge.getSubEdges() &&
|
|
74
|
-
edge.getSubEdges().filter((e) => !e.hasClass('filtered')).size > 0 &&
|
|
75
|
-
edge.getData('type') !== nodeGrouping_1.LKE_NODE_GROUPING_EDGE,
|
|
76
|
-
edgeDependencies: { self: { data: true } }
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
refreshEdgeGroupingStyle() {
|
|
80
|
-
if (this.edgeGroupingStyleRule !== undefined) {
|
|
81
|
-
this.edgeGroupingStyleRule.refresh();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
exports.TransformationsViz = TransformationsViz;
|
|
86
|
-
//# sourceMappingURL=transformations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../../src/ogma/features/transformations.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport {GenericObject, IEdgeGroupStyle, LkEdgeData, LkNodeData} from '@linkurious/rest-client';\nimport {\n Edge,\n EdgeAttributesValue,\n EdgeExtremity,\n EdgeStyle,\n EdgeType,\n PixelSize,\n StyleRule,\n Transformation\n} from '@linkurious/ogma';\n\nimport {LKOgma} from '../index';\n\nimport {LKE_NODE_GROUPING_EDGE} from './nodeGrouping';\n\nconst DEFAULT_EDGE_GROUP_STYLE: {\n color: string;\n shape: {\n body?: EdgeType;\n head?: EdgeExtremity;\n tail?: EdgeExtremity;\n style?: EdgeStyle;\n };\n width: PixelSize;\n} = {\n color: '#000000',\n shape: {\n style: 'dashed',\n head: 'arrow'\n },\n width: 1.5\n};\n\nexport class TransformationsViz {\n private _ogma: LKOgma;\n public groupedEdges: GenericObject<boolean>;\n public edgeGroupStyle!: IEdgeGroupStyle;\n public transformation!: Transformation<LkNodeData, LkEdgeData>;\n public edgeGroupingStyleRule!: StyleRule<LkNodeData, LkEdgeData>;\n\n constructor(ogma: LKOgma) {\n this._ogma = ogma;\n this.groupedEdges = {};\n }\n\n /**\n * create an edge grouping transformation by edge type\n */\n public async initTransformation(): Promise<void> {\n if (this.transformation === undefined) {\n this.transformation = this._ogma.transformations.addEdgeGrouping({\n separateEdgesByDirection: true,\n selector: (edge) => {\n return this.groupedEdges[edge.getData('type')];\n },\n groupIdFunction: (edge) => edge.getData('type'),\n generator: (edges) => {\n return {\n data: {\n properties: {\n originalType: edges.getData('type')[0]\n }\n }\n };\n }\n });\n } else {\n await this.transformation.refresh();\n }\n }\n\n /**\n * init edge grouping style\n */\n public initEdgeGroupingStyle(): void {\n this.edgeGroupingStyleRule = this._ogma.styles.addRule({\n edgeAttributes: {\n ...DEFAULT_EDGE_GROUP_STYLE,\n ...(this.edgeGroupStyle as EdgeAttributesValue<LkEdgeData, LkNodeData>),\n text: {\n content: (edge: Edge<LkEdgeData> | undefined): string | undefined => {\n // check it the edge is virtual and was not created by node grouping\n if (\n edge !== undefined &&\n edge.getSubEdges() !== null &&\n edge.getData('type') !== LKE_NODE_GROUPING_EDGE\n ) {\n const size = edge.getSubEdges()!.filter((e) => !e.hasClass('filtered')).size;\n return `${edge.getData(['properties', 'originalType'])} (${size})`;\n }\n },\n style: 'bold'\n }\n },\n edgeSelector: (edge) =>\n edge.isVirtual() &&\n edge.getSubEdges() &&\n edge.getSubEdges()!.filter((e) => !e.hasClass('filtered')).size > 0 &&\n edge.getData('type') !== LKE_NODE_GROUPING_EDGE,\n edgeDependencies: {self: {data: true}}\n });\n }\n\n public refreshEdgeGroupingStyle(): void {\n if (this.edgeGroupingStyleRule !== undefined) {\n this.edgeGroupingStyleRule.refresh();\n }\n }\n}\n"]}
|
package/dist/ogma/index.js
DELETED
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.LKOgma = exports.FORCE_LAYOUT_CONFIG = exports.ANIMATION_DURATION = exports.Ogma = void 0;
|
|
16
|
-
const rest_client_1 = require("@linkurious/rest-client");
|
|
17
|
-
const ogma_1 = __importDefault(require("@linkurious/ogma"));
|
|
18
|
-
const __1 = require("..");
|
|
19
|
-
const tools_1 = require("../tools/tools");
|
|
20
|
-
const styles_1 = require("./features/styles");
|
|
21
|
-
const transformations_1 = require("./features/transformations");
|
|
22
|
-
const captions_1 = require("./features/captions");
|
|
23
|
-
const reactive_1 = require("./features/reactive");
|
|
24
|
-
const nodeGrouping_1 = require("./features/nodeGrouping");
|
|
25
|
-
var ogma_2 = require("@linkurious/ogma");
|
|
26
|
-
Object.defineProperty(exports, "Ogma", { enumerable: true, get: function () { return __importDefault(ogma_2).default; } });
|
|
27
|
-
exports.ANIMATION_DURATION = 750;
|
|
28
|
-
exports.FORCE_LAYOUT_CONFIG = {
|
|
29
|
-
steps: 40,
|
|
30
|
-
alignSiblings: true,
|
|
31
|
-
charge: 5,
|
|
32
|
-
theta: 0.34,
|
|
33
|
-
duration: exports.ANIMATION_DURATION
|
|
34
|
-
};
|
|
35
|
-
class LKOgma extends ogma_1.default {
|
|
36
|
-
constructor(_configuration, _baseUrl) {
|
|
37
|
-
// set Ogma global configuration
|
|
38
|
-
super(_configuration);
|
|
39
|
-
this._configuration = _configuration;
|
|
40
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
41
|
-
this.initOgmaLinkuriousParser(true, _baseUrl);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Initialize the Ogma instance with the configuration and the base url
|
|
45
|
-
* @param init used to know if the instance is initialized for the first time (used in setConfigOgma)
|
|
46
|
-
* @param baseUrl base url used for relative image urls
|
|
47
|
-
* @private
|
|
48
|
-
*/
|
|
49
|
-
initOgmaLinkuriousParser(init, baseUrl) {
|
|
50
|
-
this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({
|
|
51
|
-
path: 'categories',
|
|
52
|
-
unwindArrays: true,
|
|
53
|
-
filter: 'all'
|
|
54
|
-
});
|
|
55
|
-
this.edgeTypeWatcher = this.schema.watchEdgeNonObjectProperty({
|
|
56
|
-
path: 'type',
|
|
57
|
-
filter: 'all'
|
|
58
|
-
});
|
|
59
|
-
// set ogma max zoom value and selection with mouse option (false?)
|
|
60
|
-
this.setOptions({
|
|
61
|
-
interactions: {
|
|
62
|
-
zoom: {
|
|
63
|
-
maxValue: (params) => {
|
|
64
|
-
return 128 / params.smallestNodeSize;
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
selection: {
|
|
68
|
-
enabled: false
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
// only instantiate the store once when app is starting
|
|
73
|
-
if (this._reactive === undefined) {
|
|
74
|
-
this._reactive = new reactive_1.RxViz(this);
|
|
75
|
-
this.store = this._reactive.store;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// if store already exist, but ogma was reset, create new ogma event listener
|
|
79
|
-
this._reactive.listenToSelectionEvents();
|
|
80
|
-
}
|
|
81
|
-
this.initSelection();
|
|
82
|
-
this.setConfigOgma(this._configuration, init, baseUrl);
|
|
83
|
-
this.LKTransformation = new transformations_1.TransformationsViz(this);
|
|
84
|
-
this.LkNodeGroupingTransformation = new nodeGrouping_1.NodeGroupingTransformation(this);
|
|
85
|
-
this.LKStyles.setNodesDefaultHalo();
|
|
86
|
-
this.LKStyles.setEdgesDefaultHalo();
|
|
87
|
-
this.LKStyles.setBadgeRule();
|
|
88
|
-
this.LKStyles.setFilterClass();
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Initialize selection behavior
|
|
92
|
-
*/
|
|
93
|
-
initSelection() {
|
|
94
|
-
this.events.onClick((e) => {
|
|
95
|
-
if (e !== undefined && e.button === 'left') {
|
|
96
|
-
if (e.target !== null) {
|
|
97
|
-
const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';
|
|
98
|
-
if (this.keyboard.isKeyPressed(multiSelectionKey)) {
|
|
99
|
-
if (e.target.isNode && this.getSelectedEdges().size > 0) {
|
|
100
|
-
this.getSelectedEdges().setSelected(false);
|
|
101
|
-
}
|
|
102
|
-
if (!e.target.isNode && this.getSelectedNodes().size > 0) {
|
|
103
|
-
this.getSelectedNodes().setSelected(false);
|
|
104
|
-
}
|
|
105
|
-
if (e.target.isSelected()) {
|
|
106
|
-
e.target.setSelected(false);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
e.target.setSelected(true);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
this.getSelectedNodes().setSelected(false);
|
|
114
|
-
this.getSelectedEdges().setSelected(false);
|
|
115
|
-
e.target.setSelected(true);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
this.getSelectedNodes().setSelected(false);
|
|
120
|
-
this.getSelectedEdges().setSelected(false);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
setStyles(configuration, baseUrl) {
|
|
126
|
-
var _a, _b, _c, _d;
|
|
127
|
-
this.LKStyles = new styles_1.StylesViz(this, {
|
|
128
|
-
node: ((_b = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b.node) || {},
|
|
129
|
-
edge: ((_d = (_c = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _c === void 0 ? void 0 : _c.styles) === null || _d === void 0 ? void 0 : _d.edge) || {},
|
|
130
|
-
baseUrl: baseUrl
|
|
131
|
-
});
|
|
132
|
-
this.LKStyles.setNodesDefaultStyles();
|
|
133
|
-
this.LKStyles.setEdgesDefaultStyles();
|
|
134
|
-
}
|
|
135
|
-
setCaptions(configuration) {
|
|
136
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
137
|
-
const nodeMaxTextLength = (_d = (_c = (_b = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b.node) === null || _c === void 0 ? void 0 : _c.text) === null || _d === void 0 ? void 0 : _d.maxTextLength;
|
|
138
|
-
const edgeMaxTextLength = (_h = (_g = (_f = (_e = configuration === null || configuration === void 0 ? void 0 : configuration.options) === null || _e === void 0 ? void 0 : _e.styles) === null || _f === void 0 ? void 0 : _f.edge) === null || _g === void 0 ? void 0 : _g.text) === null || _h === void 0 ? void 0 : _h.maxTextLength;
|
|
139
|
-
this.LKCaptions = new captions_1.CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Returns Ogma Layout parameters according to visualization layout settings
|
|
143
|
-
* */
|
|
144
|
-
getForceLayoutParams(mode, duration = 0) {
|
|
145
|
-
let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;
|
|
146
|
-
if (dynamicSteps < 40) {
|
|
147
|
-
dynamicSteps = 40;
|
|
148
|
-
}
|
|
149
|
-
return {
|
|
150
|
-
steps: mode === rest_client_1.ForceLayoutMode.FAST ? dynamicSteps : 300,
|
|
151
|
-
alignSiblings: this.getNodes().size > 3,
|
|
152
|
-
duration: duration,
|
|
153
|
-
charge: 20,
|
|
154
|
-
gravity: 0.08,
|
|
155
|
-
theta: this.getNodes().size > 100 ? 0.8 : 0.34
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
getRadialLayoutParams(rootNode, duration = 0) {
|
|
159
|
-
return {
|
|
160
|
-
centralNode: rootNode,
|
|
161
|
-
radiusDelta: 1,
|
|
162
|
-
nodeGap: 10,
|
|
163
|
-
repulsion: this.getNodes().size > 80 ? 1 : 6,
|
|
164
|
-
duration: duration
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
getHierarchicalLayoutParams(mode, rootNode, duration = 0) {
|
|
168
|
-
return {
|
|
169
|
-
direction: mode,
|
|
170
|
-
roots: [rootNode],
|
|
171
|
-
duration: duration
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Initialize graph.
|
|
176
|
-
* add nodes and edges to the viz and init the selection.
|
|
177
|
-
*/
|
|
178
|
-
init(visualization) {
|
|
179
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
-
this.clearGraph();
|
|
181
|
-
let selectedEntityType = undefined;
|
|
182
|
-
let selectedElements = [];
|
|
183
|
-
// need to remove selected in every items before adding them to Ogma
|
|
184
|
-
const fixedNodes = visualization.nodes.map((node) => {
|
|
185
|
-
if (node.attributes.selected) {
|
|
186
|
-
selectedEntityType = rest_client_1.EntityType.NODE;
|
|
187
|
-
selectedElements.push(node.id);
|
|
188
|
-
}
|
|
189
|
-
delete node.attributes.selected;
|
|
190
|
-
return node;
|
|
191
|
-
});
|
|
192
|
-
const fixedEdges = visualization.edges.map((edge) => {
|
|
193
|
-
if (edge.attributes !== undefined) {
|
|
194
|
-
if (edge.attributes.selected) {
|
|
195
|
-
if (selectedEntityType === undefined || selectedEntityType === rest_client_1.EntityType.NODE) {
|
|
196
|
-
selectedEntityType = rest_client_1.EntityType.EDGE;
|
|
197
|
-
selectedElements = [];
|
|
198
|
-
}
|
|
199
|
-
selectedElements.push(edge.id);
|
|
200
|
-
}
|
|
201
|
-
delete edge.attributes.selected;
|
|
202
|
-
}
|
|
203
|
-
return edge;
|
|
204
|
-
});
|
|
205
|
-
yield this.addGraphAfterValidation({
|
|
206
|
-
nodes: fixedNodes,
|
|
207
|
-
edges: fixedEdges
|
|
208
|
-
});
|
|
209
|
-
if (selectedEntityType === rest_client_1.EntityType.NODE) {
|
|
210
|
-
this.getNodes(selectedElements).setSelected(true);
|
|
211
|
-
}
|
|
212
|
-
else if (selectedEntityType === rest_client_1.EntityType.EDGE) {
|
|
213
|
-
this.getEdges(selectedElements).setSelected(true);
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
initVisualization(visualization) {
|
|
218
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
-
yield this.init(visualization);
|
|
220
|
-
const styles = __1.StyleRules.sanitizeStylesIndex(visualization.design.styles);
|
|
221
|
-
this.LKStyles.initNodeColors(styles.node);
|
|
222
|
-
this.LKStyles.initNodesIcons(styles.node);
|
|
223
|
-
this.LKStyles.initNodesSizes(styles.node);
|
|
224
|
-
this.LKStyles.initNodesShapes(styles.node);
|
|
225
|
-
this.LKStyles.initEdgesWidth(styles.edge);
|
|
226
|
-
this.LKStyles.initEdgesShape(styles.edge);
|
|
227
|
-
this.LKStyles.initEdgesColor(styles.edge);
|
|
228
|
-
yield this.LKCaptions.initVizCaptions({
|
|
229
|
-
node: visualization.nodeFields.captions || {},
|
|
230
|
-
edge: visualization.edgeFields.captions || {}
|
|
231
|
-
});
|
|
232
|
-
this.LKTransformation.groupedEdges = visualization.edgeGrouping;
|
|
233
|
-
yield this.LKTransformation.initTransformation();
|
|
234
|
-
this.LKTransformation.initEdgeGroupingStyle();
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Adding nodes then adding edges to the graph
|
|
239
|
-
*/
|
|
240
|
-
addGraphAfterValidation(graph) {
|
|
241
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
242
|
-
const addedNodes = yield this.addNodes(graph.nodes);
|
|
243
|
-
const addedEdges = yield this.addEdges(graph.edges);
|
|
244
|
-
return {
|
|
245
|
-
nodes: addedNodes,
|
|
246
|
-
edges: addedEdges
|
|
247
|
-
};
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Adding edges to the graph after filtering disconnected ones
|
|
252
|
-
*/
|
|
253
|
-
addEdges(edges, options) {
|
|
254
|
-
return super.addEdges(edges, Object.assign(Object.assign({}, options), { ignoreInvalid: true }));
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Return the list of non filtered nodes
|
|
258
|
-
*/
|
|
259
|
-
getNonFilteredNodes(items) {
|
|
260
|
-
return tools_1.Tools.isDefined(items)
|
|
261
|
-
? this.getNodes(items).filter((i) => !i.hasClass('filtered'))
|
|
262
|
-
: // take only none virtual nodes
|
|
263
|
-
this.getNodes('raw').filter((i) => !i.hasClass('filtered'));
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Return the list of filtered nodes
|
|
267
|
-
* @param items items to check if they are filtered
|
|
268
|
-
* @param filter type of nodes to check if they are filtered ( nodes that are visible, raw nodes (none virtual) or all nodes)
|
|
269
|
-
*/
|
|
270
|
-
getFilteredNodes(items, filter = 'raw') {
|
|
271
|
-
return tools_1.Tools.isDefined(items)
|
|
272
|
-
? this.getNodes(items).filter((i) => i.hasClass('filtered'))
|
|
273
|
-
: this.getNodes(filter).filter((i) => i.hasClass('filtered'));
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Return the list of non filtered edges
|
|
277
|
-
*/
|
|
278
|
-
getNonFilteredEdges(items) {
|
|
279
|
-
return tools_1.Tools.isDefined(items)
|
|
280
|
-
? this.getEdges(items).filter((i) => !i.hasClass('filtered'))
|
|
281
|
-
: this.getEdges('raw').filter((i) => !i.hasClass('filtered'));
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Return the list of filtered edges
|
|
285
|
-
*/
|
|
286
|
-
getFilteredEdges(items, filter = 'raw') {
|
|
287
|
-
return tools_1.Tools.isDefined(items)
|
|
288
|
-
? this.getEdges(items).filter((i) => i.hasClass('filtered'))
|
|
289
|
-
: this.getEdges(filter).filter((i) => i.hasClass('filtered'));
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Do a full reset on ogma and streams of ogma
|
|
293
|
-
*/
|
|
294
|
-
shutDown() {
|
|
295
|
-
this.destroy();
|
|
296
|
-
if (this.store) {
|
|
297
|
-
this.store.clear();
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Reset the Ogma instance so that it can be used fresh in the next visulization
|
|
302
|
-
*/
|
|
303
|
-
clearOgmaState() {
|
|
304
|
-
this.reset();
|
|
305
|
-
if (this.store) {
|
|
306
|
-
this.store.clear();
|
|
307
|
-
}
|
|
308
|
-
this.initOgmaLinkuriousParser();
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()
|
|
312
|
-
*/
|
|
313
|
-
setConfigOgma(configuration, init, baseUrl) {
|
|
314
|
-
if (configuration) {
|
|
315
|
-
// here we make sure that the internal config object is updated and we have the correct one when resetting
|
|
316
|
-
this._configuration = configuration;
|
|
317
|
-
}
|
|
318
|
-
if (!init) {
|
|
319
|
-
this.setOptions(Object.assign(Object.assign({}, this._configuration.options), { renderer: this._configuration.renderer }));
|
|
320
|
-
}
|
|
321
|
-
this.setStyles(this._configuration, baseUrl);
|
|
322
|
-
this.setCaptions(this._configuration);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
exports.LKOgma = LKOgma;
|
|
326
|
-
//# sourceMappingURL=index.js.map
|
package/dist/ogma/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ogma/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EntityType,\n ForceLayoutMode,\n HierarchicalLayoutMode,\n IOgmaConfig,\n LkEdgeData,\n LkNodeData,\n PopulatedVisualization,\n VizEdge,\n VizNode\n} from '@linkurious/rest-client';\nimport Ogma, {\n EdgeList,\n ForceLayoutOptions,\n HierarchicalLayoutOptions,\n NodeId,\n NodeList,\n NonObjectPropertyWatcher,\n RadialLayoutOptions,\n RawEdge,\n RawGraph,\n RawNode\n} from '@linkurious/ogma';\n\nimport {StyleRules} from '..';\nimport {Tools} from '../tools/tools';\n\nimport {StylesViz} from './features/styles';\nimport {TransformationsViz} from './features/transformations';\nimport {CaptionsViz} from './features/captions';\nimport {RxViz} from './features/reactive';\nimport {OgmaStore} from './features/OgmaStore';\nimport {NodeGroupingTransformation} from './features/nodeGrouping';\n\nexport {default as Ogma} from '@linkurious/ogma';\nexport const ANIMATION_DURATION = 750;\n\ninterface AddItemOptions {\n batchSize?: number;\n virtual?: boolean;\n}\n\nexport const FORCE_LAYOUT_CONFIG = {\n steps: 40,\n alignSiblings: true,\n charge: 5,\n theta: 0.34,\n duration: ANIMATION_DURATION\n};\n\nexport class LKOgma extends Ogma<LkNodeData, LkEdgeData> {\n public LKStyles!: StylesViz;\n public LKCaptions!: CaptionsViz;\n public LKTransformation!: TransformationsViz;\n // Trigger an event with node category changes\n public nodeCategoriesWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n // Trigger an event with edge type changes\n public edgeTypeWatcher!: NonObjectPropertyWatcher<LkNodeData, LkEdgeData>;\n public store!: OgmaStore;\n // Node Grouping transformation instance\n public LkNodeGroupingTransformation!: NodeGroupingTransformation;\n private _reactive!: RxViz;\n\n constructor(private _configuration: IOgmaConfig, _baseUrl?: string) {\n // set Ogma global configuration\n super(_configuration);\n Object.setPrototypeOf(this, new.target.prototype);\n this.initOgmaLinkuriousParser(true, _baseUrl);\n }\n\n /**\n * Initialize the Ogma instance with the configuration and the base url\n * @param init used to know if the instance is initialized for the first time (used in setConfigOgma)\n * @param baseUrl base url used for relative image urls\n * @private\n */\n private initOgmaLinkuriousParser(init?: boolean, baseUrl?: string): void {\n this.nodeCategoriesWatcher = this.schema.watchNodeNonObjectProperty({\n path: 'categories',\n unwindArrays: true,\n filter: 'all'\n });\n this.edgeTypeWatcher = this.schema.watchEdgeNonObjectProperty({\n path: 'type',\n filter: 'all'\n });\n // set ogma max zoom value and selection with mouse option (false?)\n this.setOptions({\n interactions: {\n zoom: {\n maxValue: (params: any) => {\n return 128 / params.smallestNodeSize;\n }\n },\n selection: {\n enabled: false\n }\n }\n });\n\n // only instantiate the store once when app is starting\n if (this._reactive === undefined) {\n this._reactive = new RxViz(this);\n this.store = this._reactive.store;\n } else {\n // if store already exist, but ogma was reset, create new ogma event listener\n this._reactive.listenToSelectionEvents();\n }\n this.initSelection();\n this.setConfigOgma(this._configuration, init, baseUrl);\n this.LKTransformation = new TransformationsViz(this);\n this.LkNodeGroupingTransformation = new NodeGroupingTransformation(this);\n\n this.LKStyles.setNodesDefaultHalo();\n this.LKStyles.setEdgesDefaultHalo();\n this.LKStyles.setBadgeRule();\n this.LKStyles.setFilterClass();\n }\n\n /**\n * Initialize selection behavior\n */\n public initSelection(): void {\n this.events.onClick((e) => {\n if (e !== undefined && e.button === 'left') {\n if (e.target !== null) {\n const multiSelectionKey = navigator.platform === 'MacIntel' ? 'cmd' : 'ctrl';\n if (this.keyboard.isKeyPressed(multiSelectionKey)) {\n if (e.target.isNode && this.getSelectedEdges().size > 0) {\n this.getSelectedEdges().setSelected(false);\n }\n if (!e.target.isNode && this.getSelectedNodes().size > 0) {\n this.getSelectedNodes().setSelected(false);\n }\n if (e.target.isSelected()) {\n e.target.setSelected(false);\n } else {\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n e.target.setSelected(true);\n }\n } else {\n this.getSelectedNodes().setSelected(false);\n this.getSelectedEdges().setSelected(false);\n }\n }\n });\n }\n\n private setStyles(configuration: IOgmaConfig, baseUrl?: string): void {\n this.LKStyles = new StylesViz(this, {\n node: configuration?.options?.styles?.node || {},\n edge: configuration?.options?.styles?.edge || {},\n baseUrl: baseUrl\n });\n this.LKStyles.setNodesDefaultStyles();\n this.LKStyles.setEdgesDefaultStyles();\n }\n\n private setCaptions(configuration: IOgmaConfig): void {\n const nodeMaxTextLength = configuration?.options?.styles?.node?.text?.maxTextLength;\n const edgeMaxTextLength = configuration?.options?.styles?.edge?.text?.maxTextLength;\n this.LKCaptions = new CaptionsViz(this, nodeMaxTextLength, edgeMaxTextLength);\n }\n\n /**\n * Returns Ogma Layout parameters according to visualization layout settings\n * */\n public getForceLayoutParams(mode: ForceLayoutMode, duration = 0): ForceLayoutOptions {\n let dynamicSteps = 300 - ((300 - 40) / 5000) * this.getNodes().size;\n if (dynamicSteps < 40) {\n dynamicSteps = 40;\n }\n return {\n steps: mode === ForceLayoutMode.FAST ? dynamicSteps : 300,\n alignSiblings: this.getNodes().size > 3,\n duration: duration,\n charge: 20,\n gravity: 0.08,\n theta: this.getNodes().size > 100 ? 0.8 : 0.34\n };\n }\n\n public getRadialLayoutParams(\n rootNode: string,\n duration = 0\n ): RadialLayoutOptions<unknown, unknown> {\n return {\n centralNode: rootNode,\n radiusDelta: 1,\n nodeGap: 10,\n repulsion: this.getNodes().size > 80 ? 1 : 6,\n duration: duration\n };\n }\n\n public getHierarchicalLayoutParams(\n mode: HierarchicalLayoutMode,\n rootNode: string,\n duration = 0\n ): HierarchicalLayoutOptions {\n return {\n direction: mode,\n roots: [rootNode],\n duration: duration\n };\n }\n\n /**\n * Initialize graph.\n * add nodes and edges to the viz and init the selection.\n */\n public async init(visualization: {nodes: Array<VizNode>; edges: Array<VizEdge>}): Promise<void> {\n this.clearGraph();\n let selectedEntityType: EntityType | undefined = undefined;\n let selectedElements: Array<string> = [];\n // need to remove selected in every items before adding them to Ogma\n const fixedNodes = visualization.nodes.map((node) => {\n if (node.attributes.selected) {\n selectedEntityType = EntityType.NODE;\n selectedElements.push(node.id);\n }\n delete node.attributes.selected;\n return node;\n });\n const fixedEdges = visualization.edges.map((edge) => {\n if (edge.attributes !== undefined) {\n if (edge.attributes.selected) {\n if (selectedEntityType === undefined || selectedEntityType === EntityType.NODE) {\n selectedEntityType = EntityType.EDGE;\n selectedElements = [];\n }\n selectedElements.push(edge.id);\n }\n delete edge.attributes.selected;\n }\n return edge;\n });\n await this.addGraphAfterValidation({\n nodes: fixedNodes as Array<RawNode<LkNodeData>>,\n edges: fixedEdges as Array<RawEdge<LkEdgeData>>\n });\n if (selectedEntityType === EntityType.NODE) {\n this.getNodes(selectedElements).setSelected(true);\n } else if (selectedEntityType === EntityType.EDGE) {\n this.getEdges(selectedElements).setSelected(true);\n }\n }\n\n public async initVisualization(visualization: PopulatedVisualization): Promise<void> {\n await this.init(visualization);\n const styles = StyleRules.sanitizeStylesIndex(visualization.design.styles);\n this.LKStyles.initNodeColors(styles.node);\n this.LKStyles.initNodesIcons(styles.node);\n this.LKStyles.initNodesSizes(styles.node);\n this.LKStyles.initNodesShapes(styles.node);\n this.LKStyles.initEdgesWidth(styles.edge);\n this.LKStyles.initEdgesShape(styles.edge);\n this.LKStyles.initEdgesColor(styles.edge);\n await this.LKCaptions.initVizCaptions({\n node: visualization.nodeFields.captions || {},\n edge: visualization.edgeFields.captions || {}\n });\n this.LKTransformation.groupedEdges = visualization.edgeGrouping;\n await this.LKTransformation.initTransformation();\n this.LKTransformation.initEdgeGroupingStyle();\n }\n\n /**\n * Adding nodes then adding edges to the graph\n */\n public async addGraphAfterValidation(\n graph: RawGraph<LkNodeData, LkEdgeData>\n ): Promise<{\n nodes: NodeList<LkNodeData>;\n edges: EdgeList<LkEdgeData>;\n }> {\n const addedNodes = await this.addNodes(graph.nodes);\n const addedEdges = await this.addEdges(graph.edges);\n return {\n nodes: addedNodes,\n edges: addedEdges\n };\n }\n\n /**\n * Adding edges to the graph after filtering disconnected ones\n */\n public addEdges(edges: Array<RawEdge<LkEdgeData>>, options?: AddItemOptions): Promise<EdgeList> {\n return super.addEdges(edges, {...options, ignoreInvalid: true});\n }\n\n /**\n * Return the list of non filtered nodes\n */\n public getNonFilteredNodes(items?: Array<NodeId>): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => !i.hasClass('filtered'))\n : // take only none virtual nodes\n this.getNodes('raw').filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered nodes\n * @param items items to check if they are filtered\n * @param filter type of nodes to check if they are filtered ( nodes that are visible, raw nodes (none virtual) or all nodes)\n */\n public getFilteredNodes(\n items?: Array<NodeId>,\n filter: 'visible' | 'raw' | 'all' = 'raw'\n ): NodeList<LkNodeData, LkEdgeData> {\n return Tools.isDefined(items)\n ? this.getNodes(items).filter((i) => i.hasClass('filtered'))\n : this.getNodes(filter).filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Return the list of non filtered edges\n */\n public getNonFilteredEdges(items?: Array<any>): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => !i.hasClass('filtered'))\n : this.getEdges('raw').filter((i) => !i.hasClass('filtered'));\n }\n\n /**\n * Return the list of filtered edges\n */\n public getFilteredEdges(\n items?: Array<any>,\n filter: 'visible' | 'raw' | 'all' = 'raw'\n ): EdgeList<LkEdgeData, LkNodeData> {\n return Tools.isDefined(items)\n ? this.getEdges(items).filter((i) => i.hasClass('filtered'))\n : this.getEdges(filter).filter((i) => i.hasClass('filtered'));\n }\n\n /**\n * Do a full reset on ogma and streams of ogma\n */\n public shutDown(): void {\n this.destroy();\n if (this.store) {\n this.store.clear();\n }\n }\n\n /**\n * Reset the Ogma instance so that it can be used fresh in the next visulization\n */\n public clearOgmaState(): void {\n this.reset();\n if (this.store) {\n this.store.clear();\n }\n this.initOgmaLinkuriousParser();\n }\n\n /**\n * Updates the Ogma config when config changes in LKE. If init, options were already set by the Ogma.reset()\n */\n public setConfigOgma(configuration?: IOgmaConfig, init?: boolean, baseUrl?: string): void {\n if (configuration) {\n // here we make sure that the internal config object is updated and we have the correct one when resetting\n this._configuration = configuration;\n }\n if (!init) {\n this.setOptions({\n ...this._configuration.options,\n renderer: this._configuration.renderer\n });\n }\n this.setStyles(this._configuration, baseUrl);\n this.setCaptions(this._configuration);\n }\n}\n"]}
|