UNPKG

@grafana/flamegraph

Version:

Grafana flamegraph visualization component

93 lines (92 loc) 3.52 kB
import { type DataFrame, type DisplayProcessor, type Field, FieldType, type GrafanaTheme2 } from '@grafana/data'; export type LevelItem = { start: number; value: number; valueRight?: number; itemIndexes: number[]; children: LevelItem[]; level: number; parents?: LevelItem[]; }; export type CollapseConfig = { items: LevelItem[]; collapsed: boolean; }; /** * Convert data frame with nested set format into array of level. This is mainly done for compatibility with current * rendering code. */ export declare function nestedSetToLevels(container: FlameGraphDataContainer, options?: Options): [LevelItem[][], Record<string, LevelItem[]>, CollapsedMap]; /** * Small wrapper around the map of items that should be visually collapsed in the flame graph. Reason this is a wrapper * is that we want to make sure that when this is in the state we don't update the map directly but create a new map * and to have a place for the methods to collapse/expand either single item or all the items. */ export declare class CollapsedMap { private map; constructor(map?: Map<LevelItem, CollapseConfig>); get(item: LevelItem): CollapseConfig | undefined; keys(): MapIterator<LevelItem>; values(): MapIterator<CollapseConfig>; size(): number; setCollapsedStatus(item: LevelItem, collapsed: boolean): CollapsedMap; setAllCollapsedStatus(collapsed: boolean): CollapsedMap; } /** * Similar to CollapsedMap but this one is mutable and used during transformation of the dataFrame data into structure * we use for rendering. This should not be passed to the React components. */ export declare class CollapsedMapBuilder { private map; private threshold; constructor(threshold?: number); addTree(root: LevelItem): void; addItem(item: LevelItem, parent?: LevelItem): void; getCollapsedMap(): CollapsedMap; } export declare function getMessageCheckFieldsResult(wrongFields: CheckFieldsResult): string; export type CheckFieldsResult = { wrongTypeFields: Array<{ name: string; expectedTypes: FieldType[]; type: FieldType; }>; missingFields: string[]; }; export declare function checkFields(data: DataFrame): CheckFieldsResult | undefined; export type Options = { collapsing: boolean; collapsingThreshold?: number; }; export declare class FlameGraphDataContainer { data: DataFrame; options: Options; labelField: Field; levelField: Field; valueField: Field; selfField: Field; valueRightField?: Field; selfRightField?: Field; labelDisplayProcessor: DisplayProcessor; valueDisplayProcessor: DisplayProcessor; uniqueLabels: string[]; private levels; private uniqueLabelsMap; private collapsedMap; constructor(data: DataFrame, options: Options, theme?: GrafanaTheme2); isDiffFlamegraph(): boolean; getLabel(index: number): string; getLevel(index: number): any; getValue(index: number | number[]): number; getValueRight(index: number | number[]): number; getSelf(index: number | number[]): number; getSelfRight(index: number | number[]): number; getSelfDisplay(index: number | number[]): import("@grafana/data").DisplayValue; getUniqueLabels(): string[]; getUnitTitle(): "Time" | "Count" | "RAM"; getLevels(): LevelItem[][]; getSandwichLevels(label: string): [LevelItem[][], LevelItem[][]]; getNodesWithLabel(label: string): LevelItem[]; getCollapsedMap(): CollapsedMap; private initLevels; }