UNPKG

ngx-diagrams

Version:

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

111 lines 9.13 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; } var DagreEngine = /** @class */ (function () { function DagreEngine() { } /** * @param {?} model * @param {?=} options * @return {?} */ DagreEngine.prototype.redistribute = /** * @param {?} model * @param {?=} options * @return {?} */ function (model, options) { if (options === void 0) { options = {}; } /** @type {?} */ var g = new dagre.graphlib.Graph({ multigraph: true }); g.setGraph(options.graph || {}); g.setDefaultEdgeLabel((/** * @return {?} */ function () { return {}; })); /** @type {?} */ var processedlinks = {}; // set nodes Object.values(model.getNodes()).forEach((/** * @param {?} node * @return {?} */ function (node) { g.setNode(node.id, { width: node.getWidth(), height: node.getHeight() }); })); Object.values(model.getLinks()).forEach((/** * @param {?} link * @return {?} */ function (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 {?} */ function (v) { var _a = g.node(v), x = _a.x, y = _a.y; model.getNode(v).setCoords({ x: x, y: y }); })); // also include links? if (options.includeLinks) { g.edges().forEach((/** * @param {?} e * @return {?} */ function (e) { /** @type {?} */ var edge = g.edge(e); /** @type {?} */ var link = model.getLink(e.name); /** @type {?} */ var points = [link.getFirstPoint()]; for (var 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 = function () { return []; }; return DagreEngine; }()); export { DagreEngine }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFncmUtZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZGlhZ3JhbXMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZGFncmUtZW5naW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7O0FBRy9CLHdDQU9DOzs7SUFOQSxtQ0FBbUI7O0lBQ25CLG9DQUE4Qzs7Ozs7SUFJOUMsMENBQXVCOztBQUd4QjtJQUVDO0lBQWUsQ0FBQzs7Ozs7O0lBRWhCLGtDQUFZOzs7OztJQUFaLFVBQWEsS0FBbUIsRUFBRSxPQUFnQztRQUFoQyx3QkFBQSxFQUFBLFlBQWdDOztZQUMzRCxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV4RCxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFFaEMsQ0FBQyxDQUFDLG1CQUFtQjs7O1FBQUM7WUFDckIsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDLEVBQUMsQ0FBQzs7WUFFRyxjQUFjLEdBQThCLEVBQUU7UUFFcEQsWUFBWTtRQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsSUFBSTtZQUMzQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUMsRUFBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxJQUFJO1lBQzNDLFlBQVk7WUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pELGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixDQUFDLENBQUMsT0FBTyxDQUFDO29CQUNULENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDcEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7aUJBQ2IsQ0FBQyxDQUFDO2FBQ0g7UUFDRixDQUFDLEVBQUMsQ0FBQztRQUVILG1CQUFtQjtRQUNuQixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLENBQUM7WUFDWixJQUFBLGNBQW9CLEVBQWxCLFFBQUMsRUFBRSxRQUFlO1lBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFBLEVBQUUsQ0FBQyxHQUFBLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsRUFBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTzs7OztZQUFDLFVBQUEsQ0FBQzs7b0JBQ1osSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOztvQkFDaEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7b0JBRTVCLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNoRjtnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDLEVBQUMsQ0FBQztTQUNIO0lBQ0YsQ0FBQzs7Z0JBckRELFVBQVU7Ozs7SUFzRFgsa0JBQUM7Q0FBQSxBQXRERCxJQXNEQztTQXJEWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhZ3JhbU1vZGVsLCBQb2ludE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCAqIGFzIGRhZ3JlIGZyb20gJ2RhZ3JlJztcbmltcG9ydCB7IEdyYXBoTGFiZWwsIE5vZGVDb25maWcsIEVkZ2VDb25maWcgfSBmcm9tICdkYWdyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFncmVFbmdpbmVPcHRpb25zIHtcblx0Z3JhcGg/OiBHcmFwaExhYmVsO1xuXHRsYXlvdXQ/OiBHcmFwaExhYmVsICYgTm9kZUNvbmZpZyAmIEVkZ2VDb25maWc7XG5cdC8qKlxuXHQgKiBXaWxsIGFsc28gbGF5b3V0IGxpbmtzXG5cdCAqL1xuXHRpbmNsdWRlTGlua3M/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGFncmVFbmdpbmUge1xuXHRjb25zdHJ1Y3RvcigpIHt9XG5cblx0cmVkaXN0cmlidXRlKG1vZGVsOiBEaWFncmFtTW9kZWwsIG9wdGlvbnM6IERhZ3JlRW5naW5lT3B0aW9ucyA9IHt9KTogdm9pZCB7XG5cdFx0Y29uc3QgZyA9IG5ldyBkYWdyZS5ncmFwaGxpYi5HcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUgfSk7XG5cblx0XHRnLnNldEdyYXBoKG9wdGlvbnMuZ3JhcGggfHwge30pO1xuXG5cdFx0Zy5zZXREZWZhdWx0RWRnZUxhYmVsKCgpID0+IHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IHByb2Nlc3NlZGxpbmtzOiB7IFtpZDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cblx0XHQvLyBzZXQgbm9kZXNcblx0XHRPYmplY3QudmFsdWVzKG1vZGVsLmdldE5vZGVzKCkpLmZvckVhY2gobm9kZSA9PiB7XG5cdFx0XHRnLnNldE5vZGUobm9kZS5pZCwgeyB3aWR0aDogbm9kZS5nZXRXaWR0aCgpLCBoZWlnaHQ6IG5vZGUuZ2V0SGVpZ2h0KCkgfSk7XG5cdFx0fSk7XG5cblx0XHRPYmplY3QudmFsdWVzKG1vZGVsLmdldExpbmtzKCkpLmZvckVhY2gobGluayA9PiB7XG5cdFx0XHQvLyBzZXQgZWRnZXNcblx0XHRcdGlmIChsaW5rLmdldFNvdXJjZVBvcnQoKSAmJiBsaW5rLmdldFRhcmdldFBvcnQoKSkge1xuXHRcdFx0XHRwcm9jZXNzZWRsaW5rc1tsaW5rLmlkXSA9IHRydWU7XG5cdFx0XHRcdGcuc2V0RWRnZSh7XG5cdFx0XHRcdFx0djogbGluay5nZXRTb3VyY2VQb3J0KCkuZ2V0Tm9kZSgpLmlkLFxuXHRcdFx0XHRcdHc6IGxpbmsuZ2V0VGFyZ2V0UG9ydCgpLmdldE5vZGUoKS5pZCxcblx0XHRcdFx0XHRuYW1lOiBsaW5rLmlkXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gbGF5b3V0IHRoZSBncmFwaFxuXHRcdGRhZ3JlLmxheW91dChnLCBvcHRpb25zLmxheW91dCk7XG5cblx0XHRnLm5vZGVzKCkuZm9yRWFjaCh2ID0+IHtcblx0XHRcdGNvbnN0IHsgeCwgeSB9ID0gZy5ub2RlKHYpO1xuXHRcdFx0bW9kZWwuZ2V0Tm9kZSh2KS5zZXRDb29yZHMoeyB4LCB5IH0pO1xuXHRcdH0pO1xuXG5cdFx0Ly8gYWxzbyBpbmNsdWRlIGxpbmtzP1xuXHRcdGlmIChvcHRpb25zLmluY2x1ZGVMaW5rcykge1xuXHRcdFx0Zy5lZGdlcygpLmZvckVhY2goZSA9PiB7XG5cdFx0XHRcdGNvbnN0IGVkZ2UgPSBnLmVkZ2UoZSk7XG5cdFx0XHRcdGNvbnN0IGxpbmsgPSBtb2RlbC5nZXRMaW5rKGUubmFtZSk7XG5cblx0XHRcdFx0Y29uc3QgcG9pbnRzID0gW2xpbmsuZ2V0Rmlyc3RQb2ludCgpXTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBlZGdlLnBvaW50cy5sZW5ndGggLSAyOyBpKyspIHtcblx0XHRcdFx0XHRwb2ludHMucHVzaChuZXcgUG9pbnRNb2RlbChsaW5rLCB7IHg6IGVkZ2UucG9pbnRzW2ldLngsIHk6IGVkZ2UucG9pbnRzW2ldLnkgfSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxpbmsuc2V0UG9pbnRzKHBvaW50cy5jb25jYXQobGluay5nZXRMYXN0UG9pbnQoKSkpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=