d3-org-chart-jc
Version:
Highly customizable org chart, created with d3
350 lines (349 loc) • 13.3 kB
TypeScript
export class OrgChart {
getChartState: () => {
id: string;
firstDraw: boolean;
svgWidth: number;
svgHeight: number;
scaleExtent: number[];
container: string;
defaultTextFill: string;
defaultFont: string;
ctx: CanvasRenderingContext2D;
data: any;
duration: number;
setActiveNodeCentered: boolean;
expandLevel: number;
compact: boolean;
rootMargin: number;
nodeDefaultBackground: string;
connections: any[];
lastTransform: {
x: number;
y: number;
k: number;
};
nodeId: (d: any) => any;
parentNodeId: (d: any) => any;
backgroundColor: string;
zoomBehavior: any;
defs: (state: any, visibleConnections: any) => string;
connectionsUpdate: (d: any, i: any, arr: any) => void;
linkUpdate: (d: any, i: any, arr: any) => void;
nodeUpdate: (d: any, i: any, arr: any) => void;
nodeWidth: (d3Node: any) => number;
nodeHeight: (d: any) => number;
siblingsMargin: (d3Node: any) => number;
childrenMargin: (d: any) => number;
neightbourMargin: (n1: any, n2: any) => number;
compactMarginPair: (d: any) => number;
compactMarginBetween: (d3Node: any) => number;
onNodeClick: (d: any) => any;
linkGroupArc: any;
nodeContent: (d: any) => string;
layout: string;
buttonContent: ({ node, state }: {
node: any;
state: any;
}) => string;
layoutBindings: {
left: {
nodeLeftX: (node: any) => number;
nodeRightX: (node: any) => any;
nodeTopY: (node: any) => number;
nodeBottomY: (node: any) => number;
nodeJoinX: (node: any) => any;
nodeJoinY: (node: any) => number;
linkJoinX: (node: any) => any;
linkJoinY: (node: any) => any;
linkX: (node: any) => any;
linkY: (node: any) => any;
linkCompactXStart: (node: any) => any;
linkCompactYStart: (node: any) => any;
compactLinkMidX: (node: any, state: any) => any;
compactLinkMidY: (node: any, state: any) => any;
linkParentX: (node: any) => any;
linkParentY: (node: any) => any;
buttonX: (node: any) => any;
buttonY: (node: any) => number;
centerTransform: ({ root, rootMargin, centerY, scale, centerX }: {
root: any;
rootMargin: any;
centerY: any;
scale: any;
centerX: any;
}) => string;
compactDimension: {
sizeColumn: (node: any) => any;
sizeRow: (node: any) => any;
reverse: (arr: any) => any;
};
nodeFlexSize: ({ height, width, siblingsMargin, childrenMargin, state, node }: {
height: any;
width: any;
siblingsMargin: any;
childrenMargin: any;
state: any;
node: any;
}) => any[];
zoomTransform: ({ centerY, scale }: {
centerY: any;
scale: any;
}) => string;
diagonal: any;
swap: (d: any) => void;
nodeUpdateTransform: ({ x, y, width, height }: {
x: any;
y: any;
width: any;
height: any;
}) => string;
};
top: {
nodeLeftX: (node: any) => number;
nodeRightX: (node: any) => number;
nodeTopY: (node: any) => number;
nodeBottomY: (node: any) => any;
nodeJoinX: (node: any) => number;
nodeJoinY: (node: any) => any;
linkJoinX: (node: any) => any;
linkJoinY: (node: any) => any;
linkCompactXStart: (node: any) => any;
linkCompactYStart: (node: any) => any;
compactLinkMidX: (node: any, state: any) => any;
compactLinkMidY: (node: any) => any;
compactDimension: {
sizeColumn: (node: any) => any;
sizeRow: (node: any) => any;
reverse: (arr: any) => any;
};
linkX: (node: any) => any;
linkY: (node: any) => any;
linkParentX: (node: any) => any;
linkParentY: (node: any) => any;
buttonX: (node: any) => number;
buttonY: (node: any) => any;
centerTransform: ({ root, rootMargin, centerY, scale, centerX }: {
root: any;
rootMargin: any;
centerY: any;
scale: any;
centerX: any;
}) => string;
nodeFlexSize: ({ height, width, siblingsMargin, childrenMargin, state, node, compactViewIndex }: {
height: any;
width: any;
siblingsMargin: any;
childrenMargin: any;
state: any;
node: any;
compactViewIndex: any;
}) => any[];
zoomTransform: ({ centerX, scale }: {
centerX: any;
scale: any;
}) => string;
diagonal: any;
swap: (d: any) => void;
nodeUpdateTransform: ({ x, y, width, height }: {
x: any;
y: any;
width: any;
height: any;
}) => string;
};
bottom: {
nodeLeftX: (node: any) => number;
nodeRightX: (node: any) => number;
nodeTopY: (node: any) => number;
nodeBottomY: (node: any) => number;
nodeJoinX: (node: any) => number;
nodeJoinY: (node: any) => number;
linkJoinX: (node: any) => any;
linkJoinY: (node: any) => number;
linkCompactXStart: (node: any) => any;
linkCompactYStart: (node: any) => number;
compactLinkMidX: (node: any, state: any) => any;
compactLinkMidY: (node: any) => any;
linkX: (node: any) => any;
linkY: (node: any) => any;
compactDimension: {
sizeColumn: (node: any) => any;
sizeRow: (node: any) => any;
reverse: (arr: any) => any;
};
linkParentX: (node: any) => any;
linkParentY: (node: any) => number;
buttonX: (node: any) => number;
buttonY: (node: any) => number;
centerTransform: ({ root, rootMargin, centerY, scale, centerX, chartHeight }: {
root: any;
rootMargin: any;
centerY: any;
scale: any;
centerX: any;
chartHeight: any;
}) => string;
nodeFlexSize: ({ height, width, siblingsMargin, childrenMargin, state, node }: {
height: any;
width: any;
siblingsMargin: any;
childrenMargin: any;
state: any;
node: any;
}) => any[];
zoomTransform: ({ centerX, scale }: {
centerX: any;
scale: any;
}) => string;
diagonal: any;
swap: (d: any) => void;
nodeUpdateTransform: ({ x, y, width, height }: {
x: any;
y: any;
width: any;
height: any;
}) => string;
};
right: {
nodeLeftX: (node: any) => number;
nodeRightX: (node: any) => number;
nodeTopY: (node: any) => number;
nodeBottomY: (node: any) => number;
nodeJoinX: (node: any) => number;
nodeJoinY: (node: any) => number;
linkJoinX: (node: any) => number;
linkJoinY: (node: any) => any;
linkX: (node: any) => any;
linkY: (node: any) => any;
linkParentX: (node: any) => number;
linkParentY: (node: any) => any;
buttonX: (node: any) => number;
buttonY: (node: any) => number;
linkCompactXStart: (node: any) => number;
linkCompactYStart: (node: any) => any;
compactLinkMidX: (node: any, state: any) => any;
compactLinkMidY: (node: any, state: any) => any;
centerTransform: ({ root, rootMargin, centerY, scale, centerX, chartWidth }: {
root: any;
rootMargin: any;
centerY: any;
scale: any;
centerX: any;
chartWidth: any;
}) => string;
nodeFlexSize: ({ height, width, siblingsMargin, childrenMargin, state, node }: {
height: any;
width: any;
siblingsMargin: any;
childrenMargin: any;
state: any;
node: any;
}) => any[];
compactDimension: {
sizeColumn: (node: any) => any;
sizeRow: (node: any) => any;
reverse: (arr: any) => any;
};
zoomTransform: ({ centerY, scale }: {
centerY: any;
scale: any;
}) => string;
diagonal: any;
swap: (d: any) => void;
nodeUpdateTransform: ({ x, y, width, height }: {
x: any;
y: any;
width: any;
height: any;
}) => string;
};
};
};
actions(actions: any): OrgChart;
initializeEnterExitUpdatePattern(): void;
getNodeChildren({ data, children, _children }: {
data: any;
children: any;
_children: any;
}, nodeStore: any): any;
initialZoom(zoomLevel: any): OrgChart;
render(): OrgChart;
addNode(obj: any): OrgChart;
removeNode(nodeId: any): OrgChart;
groupBy(array: any, accessor: any, aggegator: any): any;
calculateCompactFlexDimensions(root: any): void;
calculateCompactFlexPositions(root: any): void;
update({ x0, y0, x, y, width, height }: {
x0: any;
y0: any;
x?: number;
y?: number;
width: any;
height: any;
}): void;
isEdge(): any;
hdiagonal(s: any, t: any, m: any): string;
diagonal(s: any, t: any, m: any): string;
restyleForeignObjectElements(): void;
onButtonClick(event: any, d: any): void;
setExpansionFlagToChildren({ data, children, _children }: {
data: any;
children: any;
_children: any;
}, flag: any): void;
expandSomeNodes(d: any): void;
updateNodesState(): void;
setLayouts({ expandNodesFirst }: {
expandNodesFirst?: boolean;
}): void;
collapse(d: any): void;
expand(d: any): void;
zoomed(event: any, d: any): void;
zoomTreeBounds({ x0, x1, y0, y1, params }: {
x0: any;
x1: any;
y0: any;
y1: any;
params?: {
animate: boolean;
scale: boolean;
};
}): void;
fit({ animate, nodes, scale }?: {
animate?: boolean;
nodes: any;
scale?: boolean;
}): OrgChart;
setExpanded(id: any, expandedFlag?: boolean): OrgChart;
setCentered(nodeId: any): OrgChart;
setHighlighted(nodeId: any): OrgChart;
setUpToTheRootHighlighted(nodeId: any): OrgChart;
clearHighlighting(): void;
fullscreen(elem: any): void;
zoomIn(): void;
zoomOut(): void;
toDataURL(url: any, callback: any): void;
exportImg({ full, scale, onLoad, save }?: {
full?: boolean;
scale?: number;
onLoad?: (d: any) => any;
save?: boolean;
}): void;
exportSvg(): OrgChart;
expandAll(): OrgChart;
collapseAll(): OrgChart;
downloadImage({ node, scale, isSvg, save, onAlreadySerialized, onLoad }: {
node: any;
scale?: number;
isSvg?: boolean;
save?: boolean;
onAlreadySerialized?: (d: any) => void;
onLoad?: (d: any) => void;
}): void;
getTextWidth(text: any, { fontSize, fontWeight, defaultFont, ctx }?: {
fontSize?: number;
fontWeight?: number;
defaultFont?: string;
ctx: any;
}): any;
}