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
JavaScript
/**
* @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=