ag-charts-community
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
126 lines (125 loc) • 6.36 kB
TypeScript
import { Node } from "./node";
import { Scene } from "./scene";
declare type ValueFn<P, GDatum, PDatum> = (parent: P, data: PDatum, index: number, groups: (P | undefined)[]) => GDatum[];
declare type KeyFn<N, G, GDatum> = (node: N, datum: GDatum, index: number, groups: (G | undefined)[]) => string;
export declare class EnterNode {
constructor(parent: Node | EnterNode, datum: any);
scene?: Scene;
parent: Node | EnterNode;
datum: any;
next: Node | EnterNode | null;
appendChild<T extends Node>(node: T): T;
insertBefore<T extends Node>(node: T, nextNode?: Node | null): T;
}
/**
* G - type of the selected node(s).
* GDatum - type of the datum of the selected node(s).
* P - type of the parent node(s).
* PDatum - type of the datum of the parent node(s).
*/
export declare class Selection<G extends Node | EnterNode, P extends Node | EnterNode, GDatum = any, PDatum = any> {
constructor(groups: (G | undefined)[][], parents: (P | undefined)[]);
groups: (G | undefined)[][];
parents: (P | undefined)[];
static select<G extends Node, P extends Node | EnterNode>(node: G | (() => G)): Selection<G, P, any, any>;
static selectAll<G extends Node>(nodes?: G[] | null): Selection<G, Node | EnterNode, any, any>;
/**
* Creates new nodes, appends them to the nodes of this selection and returns them
* as a new selection. The created nodes inherit the datums and the parents of the nodes
* they replace.
* @param Class The constructor function to use to create the new nodes.
*/
append<N extends Node>(Class: new () => N): Selection<N, P, GDatum, GDatum>;
/**
* Same as the {@link append}, but accepts a custom creator function with the
* {@link NodeSelector} signature rather than a constructor function.
* @param creator
*/
private appendFn;
/**
* Runs the given selector that returns a single node for every node in each group.
* The original nodes are then replaced by the nodes returned by the selector
* and returned as a new selection.
* The selected nodes inherit the datums and the parents of the original nodes.
*/
select<N extends Node>(selector: (node: G, datum: GDatum, index: number, group: (G | undefined)[]) => N | undefined): Selection<N, P, GDatum, GDatum>;
/**
* Same as {@link select}, but uses the given {@param Class} (constructor) as a selector.
* @param Class The constructor function to use to find matching nodes.
*/
selectByClass<N extends Node>(Class: new () => N): Selection<N, P, GDatum, GDatum>;
selectByTag<N extends Node>(tag: number): Selection<N, P, GDatum, GDatum>;
selectAllByClass<N extends Node, NDatum = any>(Class: new () => N): Selection<N, G, NDatum, GDatum>;
selectAllByTag<N extends Node, NDatum = any>(tag: number): Selection<N, G, NDatum, GDatum>;
private selectNone;
/**
* Runs the given selector that returns a group of nodes for every node in each group.
* The original nodes are then replaced by the groups of nodes returned by the selector
* and returned as a new selection. The original nodes become the parent nodes for each
* group in the new selection. The selected nodes do not inherit the datums of the original nodes.
* If called without any parameters, creates a new selection with an empty group for each
* node in this selection.
*/
selectAll<N extends Node, NDatum = any>(selectorAll?: (node: G, datum: GDatum, index: number, group: (G | undefined)[]) => N[]): Selection<N, G, NDatum, GDatum>;
/**
* Runs the given callback for every node in this selection and returns this selection.
* @param cb
*/
each(cb: (node: G, datum: GDatum, index: number, group: (G | undefined)[]) => void): this;
remove(): this;
merge(other: Selection<G, P, GDatum, PDatum>): Selection<G, P, GDatum, PDatum>;
/**
* Return the first non-null element in this selection.
* If the selection is empty, returns null.
*/
node(): G | null;
attr<K extends keyof G>(name: K, value: Exclude<G[K], Function>): this;
attrFn<K extends keyof G>(name: K, value: (node: G, datum: GDatum, index: number, group: (G | undefined)[]) => Exclude<G[K], Function>): this;
/**
* Invokes the given function once, passing in this selection.
* Returns this selection. Facilitates method chaining.
* @param cb
*/
call(cb: (selection: this) => void): this;
/**
* Returns the total number of nodes in this selection.
*/
get size(): number;
/**
* Returns the array of data for the selected elements.
*/
get data(): GDatum[];
private enterGroups?;
private exitGroups?;
get enter(): Selection<EnterNode, P, GDatum, PDatum>;
get exit(): Selection<G, P, GDatum, PDatum>;
/**
* Binds the given value to each selected node and returns this selection
* with its {@link GDatum} type changed to the type of the given value.
* This method doesn't compute a join and doesn't affect indexes or the enter and exit selections.
* This method can also be used to clear bound data.
* @param value
*/
setDatum<GDatum>(value: GDatum): Selection<G, P, GDatum, PDatum>;
/**
* Returns the bound datum for the first non-null element in the selection.
* This is generally useful only if you know the selection contains exactly one element.
*/
get datum(): GDatum;
/**
* Binds the specified array of values with the selected nodes, returning a new selection
* that represents the _update_ selection: the nodes successfully bound to the values.
* Also defines the {@link enter} and {@link exit} selections on the returned selection,
* which can be used to add or remove the nodes to correspond to the new data.
* The `values` is an array of values of a particular type, or a function that returns
* an array of values for each group.
* When values are assigned to the nodes, they are stored in the {@link Node.datum} property.
* @param values
* @param key
*/
setData<GDatum>(values: GDatum[] | ValueFn<P, GDatum, PDatum>, key?: KeyFn<Node | EnterNode, G | GDatum, GDatum>): Selection<G, P, GDatum, PDatum>;
private bindIndex;
private static keyPrefix;
private bindKey;
}
export {};