@amcharts/amcharts5
Version:
amCharts 5
164 lines • 6.04 kB
TypeScript
import type { DataItem } from "../../core/render/Component";
import type { Bullet } from "../../core/render/Bullet";
import type { Root } from "../../core/Root";
import type { IPoint } from "../../core/util/IPoint";
import type * as d3hierarchy from "d3-hierarchy";
import { Hierarchy, IHierarchySettings, IHierarchyDataItem, IHierarchyPrivate, IHierarchyEvents } from "./Hierarchy";
import { Container } from "../../core/render/Container";
import { LinkedHierarchyNode } from "./LinkedHierarchyNode";
import { HierarchyLink } from "./HierarchyLink";
import { Circle } from "../../core/render/Circle";
import { ListTemplate } from "../../core/util/List";
import { List } from "../../core/util/List";
/**
* @ignore
*/
export interface ILinkedHierarchyDataObject {
name?: string;
value?: number;
children?: ILinkedHierarchyDataObject[];
dataItem?: DataItem<ILinkedHierarchyDataItem>;
}
export interface ILinkedHierarchyDataItem extends IHierarchyDataItem {
/**
* An array of child data items.
*/
children: Array<DataItem<ILinkedHierarchyDataItem>>;
/**
* A data item of a parent node.
*/
parent: DataItem<ILinkedHierarchyDataItem>;
/**
* A related node.
*/
node: LinkedHierarchyNode;
/**
* [[Circle]] element of the related node.
*/
circle: Circle;
/**
* [[Circle]] element of the related node, representing outer circle.
*/
outerCircle: Circle;
/**
* A [[HierarchyLink]] leading to parent node.
*/
parentLink: HierarchyLink;
/**
* An [[HierarchyLink]] leading to parent node.
*/
links: Array<HierarchyLink>;
/**
* An array of [[HierarchyLink]] objects leading to child nodes.
*/
childLinks: Array<HierarchyLink>;
/**
* An array of IDs of directly linked nodes.
*/
linkWith: Array<string>;
/**
* @ignore
*/
d3HierarchyNode: d3hierarchy.HierarchyPointNode<ILinkedHierarchyDataObject>;
}
export interface ILinkedHierarchySettings extends IHierarchySettings {
/**
* A field in data which holds IDs of nodes to link with.
*/
linkWithField?: string;
}
export interface ILinkedHierarchyPrivate extends IHierarchyPrivate {
}
export interface ILinkedHierarchyEvents extends IHierarchyEvents {
}
/**
* A base class for linked hierarchy series.
*/
export declare abstract class LinkedHierarchy extends Hierarchy {
static className: string;
static classNames: Array<string>;
_settings: ILinkedHierarchySettings;
_privateSettings: ILinkedHierarchyPrivate;
_dataItemSettings: ILinkedHierarchyDataItem;
_events: ILinkedHierarchyEvents;
linkBullets: List<(<D extends DataItem<IHierarchyDataItem>>(root: Root, source: D, target: D) => Bullet | undefined)>;
protected _afterNew(): void;
/**
* A list of nodes in a [[LinkedHierarchy]] chart.
*
* @default new ListTemplate<LinkedHierarchyNode>
*/
readonly nodes: ListTemplate<LinkedHierarchyNode>;
/**
* A list of node circle elements in a [[LinkedHierarchy]] chart.
*
* @default new ListTemplate<Circle>
*/
readonly circles: ListTemplate<Circle>;
/**
* A list of node outer circle elements in a [[LinkedHierarchy]] chart.
*
* @default new ListTemplate<Circle>
*/
readonly outerCircles: ListTemplate<Circle>;
/**
* A list of link elements in a [[LinkedHierarchy]] chart.
*
* @default new ListTemplate<HierarchyLink>
*/
readonly links: ListTemplate<HierarchyLink>;
/**
* A [[Container]] that link elements are placed in.
*
* @default Container.new()
*/
readonly linksContainer: Container;
/**
* @ignore
*/
makeNode(dataItem: DataItem<this["_dataItemSettings"]>): LinkedHierarchyNode;
_handleRadiusChange(): void;
protected processDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
addChildData(dataItem: DataItem<this["_dataItemSettings"]>, data: Array<any>): void;
protected _processDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
/**
* @ignore
*/
updateLinkWith(dataItems: Array<DataItem<this["_dataItemSettings"]>>): void;
protected _getPoint(hierarchyNode: this["_dataItemSettings"]["d3HierarchyNode"]): IPoint;
protected _animatePositions(dataItem: DataItem<this["_dataItemSettings"]>): void;
protected _updateNode(dataItem: DataItem<this["_dataItemSettings"]>): void;
/**
* Link two data items with a link element.
*
* @param source Source node data item
* @param target Target node data item
* @param strength Link strength
* @return Link element
*/
linkDataItems(source: DataItem<this["_dataItemSettings"]>, target: DataItem<this["_dataItemSettings"]>, strength?: number): HierarchyLink;
/**
* Unlink two linked data items.
*
* @param source Source node data item
* @param target Target node data item
*/
unlinkDataItems(source: DataItem<this["_dataItemSettings"]>, target: DataItem<this["_dataItemSettings"]>): void;
protected _handleUnlink(): void;
protected _disposeLink(link: HierarchyLink): void;
/**
* Returns `true` if two nodes are linked with each other.
*/
areLinked(source: DataItem<this["_dataItemSettings"]>, target: DataItem<this["_dataItemSettings"]>): boolean;
protected _processLink(_link: HierarchyLink, _source: DataItem<this["_dataItemSettings"]>, _target: DataItem<this["_dataItemSettings"]>): void;
/**
* @ignore
*/
disposeDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
/**
* Select a data item.
* @param dataItem Data item
*/
selectDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
}
//# sourceMappingURL=LinkedHierarchy.d.ts.map