basicprimitives
Version:
Basic Primitives Diagrams for JavaScript - data visualization components library that implements organizational chart and multi-parent dependency diagrams, contains implementations of JavaScript Controls and PDF rendering plugins.
45 lines (40 loc) • 2.17 kB
JavaScript
import BaseConnectorBundle from './BaseConnectorBundle';
import Polyline from '../graphics/structs/Polyline';
import MoveSegment from '../graphics/structs/MoveSegment';
import LineSegment from '../graphics/structs/LineSegment';
import { Visibility } from '../enums';
export default function HorizontalConnectorBundle(fromItem, toItem) {
this.fromItem = fromItem;
this.toItem = toItem;
};
HorizontalConnectorBundle.prototype = new BaseConnectorBundle();
HorizontalConnectorBundle.prototype.trace = function (data, params, options) {
var fromItemId = this.fromItem,
toItemId = this.toItem,
fromItemPosition = params.treeItemsPositions[fromItemId],
toItemPosition = params.treeItemsPositions[toItemId],
polyline = new Polyline();
if (fromItemPosition.actualPosition.x < toItemPosition.actualPosition.x) {
params.transform.transformPoints(fromItemPosition.actualPosition.right(), fromItemPosition.horizontalConnectorsShift,
toItemPosition.actualPosition.x, toItemPosition.horizontalConnectorsShift, true, this, function (fromX, fromY, toX, toY) {
polyline.addSegment(new MoveSegment(fromX, fromY));
polyline.addSegment(new LineSegment(toX, toY));
});//ignore jslint
} else {
params.transform.transformPoints(fromItemPosition.actualPosition.x, fromItemPosition.horizontalConnectorsShift,
toItemPosition.actualPosition.right(), fromItemPosition.horizontalConnectorsShift, true, this, function (fromX, fromY, toX, toY) {
polyline.addSegment(new MoveSegment(fromX, fromY));
polyline.addSegment(new LineSegment(toX, toY));
});//ignore jslint
}
var toItemIsVisible = toItemPosition.actualVisibility !== Visibility.Invisible;
var fromItemIsVisible = fromItemPosition.actualVisibility !== Visibility.Invisible;
data.graph.addEdge(fromItemId, toItemId, new this.ConnectorEdge(fromItemId, toItemId, polyline,
toItemIsVisible ? toItemId : null,
fromItemIsVisible ? fromItemId : null,
null,
(toItemIsVisible || fromItemIsVisible) ? this.NORMAL_ITEM_WEIGHT : this.LINE_ITEM_WEIGHT,
null, null, null,
true)
);
};