UNPKG

ngx-diagrams

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.

102 lines 8.79 kB
/** * @fileoverview added by tsickle * Generated from: lib/services/dagre-engine.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { PointModel } from '../models'; import * as dagre from 'dagre'; /** * @record */ export function DagreEngineOptions() { } if (false) { /** @type {?|undefined} */ DagreEngineOptions.prototype.graph; /** @type {?|undefined} */ DagreEngineOptions.prototype.layout; /** * Will also layout links * @type {?|undefined} */ DagreEngineOptions.prototype.includeLinks; } export class DagreEngine { constructor() { } /** * @param {?} model * @param {?=} options * @return {?} */ redistribute(model, options = {}) { /** @type {?} */ const g = new dagre.graphlib.Graph({ multigraph: true }); g.setGraph(options.graph || {}); g.setDefaultEdgeLabel((/** * @return {?} */ () => { return {}; })); /** @type {?} */ const processedlinks = {}; // set nodes Object.values(model.getNodes()).forEach((/** * @param {?} node * @return {?} */ node => { g.setNode(node.id, { width: node.getWidth(), height: node.getHeight() }); })); Object.values(model.getLinks()).forEach((/** * @param {?} link * @return {?} */ link => { // set edges if (link.getSourcePort() && link.getTargetPort()) { processedlinks[link.id] = true; g.setEdge({ v: link.getSourcePort().getNode().id, w: link.getTargetPort().getNode().id, name: link.id }); } })); // layout the graph dagre.layout(g, options.layout); g.nodes().forEach((/** * @param {?} v * @return {?} */ v => { const { x, y } = g.node(v); model.getNode(v).setCoords({ x, y }); })); // also include links? if (options.includeLinks) { g.edges().forEach((/** * @param {?} e * @return {?} */ e => { /** @type {?} */ const edge = g.edge(e); /** @type {?} */ const link = model.getLink(e.name); /** @type {?} */ const points = [link.getFirstPoint()]; for (let i = 1; i < edge.points.length - 2; i++) { points.push(new PointModel(link, { x: edge.points[i].x, y: edge.points[i].y })); } link.setPoints(points.concat(link.getLastPoint())); })); } } } DagreEngine.decorators = [ { type: Injectable } ]; /** @nocollapse */ DagreEngine.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFncmUtZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZGlhZ3JhbXMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZGFncmUtZW5naW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7O0FBRy9CLHdDQU9DOzs7SUFOQSxtQ0FBbUI7O0lBQ25CLG9DQUE4Qzs7Ozs7SUFJOUMsMENBQXVCOztBQUl4QixNQUFNLE9BQU8sV0FBVztJQUN2QixnQkFBZSxDQUFDOzs7Ozs7SUFFaEIsWUFBWSxDQUFDLEtBQW1CLEVBQUUsVUFBOEIsRUFBRTs7Y0FDM0QsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFeEQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLENBQUMsQ0FBQyxtQkFBbUI7OztRQUFDLEdBQUcsRUFBRTtZQUMxQixPQUFPLEVBQUUsQ0FBQztRQUNYLENBQUMsRUFBQyxDQUFDOztjQUVHLGNBQWMsR0FBOEIsRUFBRTtRQUVwRCxZQUFZO1FBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPOzs7O1FBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDLEVBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTzs7OztRQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlDLFlBQVk7WUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pELGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixDQUFDLENBQUMsT0FBTyxDQUFDO29CQUNULENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDcEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7aUJBQ2IsQ0FBQyxDQUFDO2FBQ0g7UUFDRixDQUFDLEVBQUMsQ0FBQztRQUVILG1CQUFtQjtRQUNuQixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLENBQUMsRUFBRTtrQkFDZixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsRUFBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTzs7OztZQUFDLENBQUMsQ0FBQyxFQUFFOztzQkFDZixJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7O3NCQUNoQixJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOztzQkFFNUIsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ2hGO2dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELENBQUMsRUFBQyxDQUFDO1NBQ0g7SUFDRixDQUFDOzs7WUFyREQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWdyYW1Nb2RlbCwgUG9pbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgKiBhcyBkYWdyZSBmcm9tICdkYWdyZSc7XG5pbXBvcnQgeyBHcmFwaExhYmVsLCBOb2RlQ29uZmlnLCBFZGdlQ29uZmlnIH0gZnJvbSAnZGFncmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhZ3JlRW5naW5lT3B0aW9ucyB7XG5cdGdyYXBoPzogR3JhcGhMYWJlbDtcblx0bGF5b3V0PzogR3JhcGhMYWJlbCAmIE5vZGVDb25maWcgJiBFZGdlQ29uZmlnO1xuXHQvKipcblx0ICogV2lsbCBhbHNvIGxheW91dCBsaW5rc1xuXHQgKi9cblx0aW5jbHVkZUxpbmtzPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhZ3JlRW5naW5lIHtcblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdHJlZGlzdHJpYnV0ZShtb2RlbDogRGlhZ3JhbU1vZGVsLCBvcHRpb25zOiBEYWdyZUVuZ2luZU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuXHRcdGNvbnN0IGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoeyBtdWx0aWdyYXBoOiB0cnVlIH0pO1xuXG5cdFx0Zy5zZXRHcmFwaChvcHRpb25zLmdyYXBoIHx8IHt9KTtcblxuXHRcdGcuc2V0RGVmYXVsdEVkZ2VMYWJlbCgoKSA9PiB7XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fSk7XG5cblx0XHRjb25zdCBwcm9jZXNzZWRsaW5rczogeyBbaWQ6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuXG5cdFx0Ly8gc2V0IG5vZGVzXG5cdFx0T2JqZWN0LnZhbHVlcyhtb2RlbC5nZXROb2RlcygpKS5mb3JFYWNoKG5vZGUgPT4ge1xuXHRcdFx0Zy5zZXROb2RlKG5vZGUuaWQsIHsgd2lkdGg6IG5vZGUuZ2V0V2lkdGgoKSwgaGVpZ2h0OiBub2RlLmdldEhlaWdodCgpIH0pO1xuXHRcdH0pO1xuXG5cdFx0T2JqZWN0LnZhbHVlcyhtb2RlbC5nZXRMaW5rcygpKS5mb3JFYWNoKGxpbmsgPT4ge1xuXHRcdFx0Ly8gc2V0IGVkZ2VzXG5cdFx0XHRpZiAobGluay5nZXRTb3VyY2VQb3J0KCkgJiYgbGluay5nZXRUYXJnZXRQb3J0KCkpIHtcblx0XHRcdFx0cHJvY2Vzc2VkbGlua3NbbGluay5pZF0gPSB0cnVlO1xuXHRcdFx0XHRnLnNldEVkZ2Uoe1xuXHRcdFx0XHRcdHY6IGxpbmsuZ2V0U291cmNlUG9ydCgpLmdldE5vZGUoKS5pZCxcblx0XHRcdFx0XHR3OiBsaW5rLmdldFRhcmdldFBvcnQoKS5nZXROb2RlKCkuaWQsXG5cdFx0XHRcdFx0bmFtZTogbGluay5pZFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdC8vIGxheW91dCB0aGUgZ3JhcGhcblx0XHRkYWdyZS5sYXlvdXQoZywgb3B0aW9ucy5sYXlvdXQpO1xuXG5cdFx0Zy5ub2RlcygpLmZvckVhY2godiA9PiB7XG5cdFx0XHRjb25zdCB7IHgsIHkgfSA9IGcubm9kZSh2KTtcblx0XHRcdG1vZGVsLmdldE5vZGUodikuc2V0Q29vcmRzKHsgeCwgeSB9KTtcblx0XHR9KTtcblxuXHRcdC8vIGFsc28gaW5jbHVkZSBsaW5rcz9cblx0XHRpZiAob3B0aW9ucy5pbmNsdWRlTGlua3MpIHtcblx0XHRcdGcuZWRnZXMoKS5mb3JFYWNoKGUgPT4ge1xuXHRcdFx0XHRjb25zdCBlZGdlID0gZy5lZGdlKGUpO1xuXHRcdFx0XHRjb25zdCBsaW5rID0gbW9kZWwuZ2V0TGluayhlLm5hbWUpO1xuXG5cdFx0XHRcdGNvbnN0IHBvaW50cyA9IFtsaW5rLmdldEZpcnN0UG9pbnQoKV07XG5cdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgZWRnZS5wb2ludHMubGVuZ3RoIC0gMjsgaSsrKSB7XG5cdFx0XHRcdFx0cG9pbnRzLnB1c2gobmV3IFBvaW50TW9kZWwobGluaywgeyB4OiBlZGdlLnBvaW50c1tpXS54LCB5OiBlZGdlLnBvaW50c1tpXS55IH0pKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaW5rLnNldFBvaW50cyhwb2ludHMuY29uY2F0KGxpbmsuZ2V0TGFzdFBvaW50KCkpKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuIl19