@amcharts/amcharts5
Version:
amCharts 5
103 lines • 3.75 kB
TypeScript
import type { DataItem } from "../../core/render/Component";
import type { IPoint } from "../../core/util/IPoint";
import type { IHierarchyDataObject, IHierarchyDataItem } from "./Hierarchy";
import { LinkedHierarchy, ILinkedHierarchyPrivate, ILinkedHierarchySettings, ILinkedHierarchyDataItem, ILinkedHierarchyEvents } from "./LinkedHierarchy";
import * as d3hierarchy from "d3-hierarchy";
export interface ITreeDataObject {
name?: string;
value?: number;
children?: ITreeDataObject[];
dataItem?: DataItem<ITreeDataItem>;
}
export interface ITreeDataItem extends ILinkedHierarchyDataItem {
/**
* An array of children data items.
*/
children: Array<DataItem<ITreeDataItem>>;
/**
* Parent data item.
* @type {DataItem<ITreeDataItem>}
*/
parent: DataItem<ITreeDataItem>;
}
export interface ITreeSettings extends ILinkedHierarchySettings {
/**
* Orientation of the diagram.
*
* @default "vertical"
*/
orientation?: "horizontal" | "vertical";
/**
* If set to `true`, will flip the tree direction.
*
* @default false
* @since 5.2.4
*/
inversed?: boolean;
/**
* If set to `true`, will use cluster layout (dendrogram) where all leaf
* nodes are placed at the same depth.
*
* @default false
* @since 5.16.2
*/
clustered?: boolean;
/**
* A function that returns the desired separation between neighboring
* nodes. Receives two data items and should return a numeric value.
*
* Default is `1` for siblings, `2` for non-siblings.
*
* Can be used to create variable node spacing based on value, label
* size, or other data properties.
*
* @since 5.16.2
*/
nodeSeparation?: (a: DataItem<ITreeDataItem>, b: DataItem<ITreeDataItem>) => number;
/**
* If set to `true`, hidden or disabled nodes are excluded from the layout
* so that visible nodes spread out to fill the available chart area.
*
* @default false
* @since 5.18.0
*/
fitNodes?: boolean;
}
export interface ITreePrivate extends ILinkedHierarchyPrivate {
/**
* Current horizontal scale.
*/
scaleX?: number;
/**
* Current vertical scale.
*/
scaleY?: number;
}
export interface ITreeEvents extends ILinkedHierarchyEvents {
}
/**
* Displays a tree diagram.
*
* @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/tree/} for more info
* @important
*/
export declare class Tree extends LinkedHierarchy {
_settings: ITreeSettings;
_privateSettings: ITreePrivate;
_dataItemSettings: ITreeDataItem;
protected _tag: string;
static className: string;
static classNames: Array<string>;
_hierarchyLayout: d3hierarchy.TreeLayout<unknown>;
_rootNode: d3hierarchy.HierarchyCircularNode<ITreeDataObject> | undefined;
_packData: ITreeDataObject | undefined;
_prepareChildren(): void;
protected _makeHierarchyData(data: IHierarchyDataObject, dataItem: DataItem<IHierarchyDataItem>): void;
hideDataItem(dataItem: DataItem<this["_dataItemSettings"]>, duration?: number): Promise<void>;
showDataItem(dataItem: DataItem<this["_dataItemSettings"]>, duration?: number): Promise<void>;
disableDataItem(dataItem: DataItem<this["_dataItemSettings"]>, duration?: number): void;
enableDataItem(dataItem: DataItem<this["_dataItemSettings"]>, maxDepth?: number, depth?: number, duration?: number): void;
protected _updateVisuals(): void;
protected _getPoint(hierarchyNode: this["_dataItemSettings"]["d3HierarchyNode"]): IPoint;
}
//# sourceMappingURL=Tree.d.ts.map