@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
97 lines (96 loc) • 2.68 kB
TypeScript
import type { LoadDataStateProgress } from './load-data.types.js';
import { Observer } from '../observer.js';
export type ProgressbarStage = keyof typeof loadStages;
export type ProgressbarTiming = {
stage: ProgressbarStage;
title: string;
duration: number;
};
export type ProgressbarOnTimingCallback = (timing: ProgressbarTiming) => void;
export type ProgressbarOnFinishCallback = (timings: ProgressbarTiming[] & {
awaitRepaintPenaltyTime: number;
}) => void;
export type ProgressbarOptions = Partial<{
onTiming: ProgressbarOnTimingCallback;
onFinish: ProgressbarOnFinishCallback;
domReady: Promise<any>;
}>;
export type ProgressbarState = {
stage: ProgressbarStage;
progress: LoadDataStateProgress | null;
error: Error | null;
};
export declare const loadStages: {
inited: {
value: number;
duration: number;
title: string;
};
request: {
value: number;
duration: number;
title: string;
};
receiving: {
value: number;
duration: number;
title: string;
};
decoding: {
value: number;
duration: number;
title: string;
};
received: {
value: number;
duration: number;
title: string;
};
prepare: {
value: number;
duration: number;
title: string;
};
initui: {
value: number;
duration: number;
title: string;
};
done: {
value: number;
duration: number;
title: string;
};
error: {
value: number;
duration: number;
title: string;
};
};
export declare function decodeStageProgress(stage: ProgressbarStage, progress: ProgressbarState['progress'], step?: string): {
stageTitle: string;
progressValue: number;
progressText: string | null;
stepText: string;
title: string;
};
export declare class Progressbar extends Observer<ProgressbarState> {
#private;
startTime: number | null;
lastStageStartTime: number | null;
awaitRepaintPenaltyTime: number;
finished: boolean;
awaitRepaint: number | null;
timings: ProgressbarTiming[];
onTiming: ProgressbarOnTimingCallback;
onFinish: ProgressbarOnFinishCallback;
appearanceDelay: number;
domReady: Promise<any>;
el: HTMLElement;
constructor({ onTiming, onFinish, domReady }: ProgressbarOptions);
recordTiming(stage: ProgressbarStage, start: number, end?: number): void;
setState(state: Partial<ProgressbarState>, step?: string): Promise<void>;
setStateStep(step: string): Promise<void>;
finish(error?: Error): void;
dispose(): void;
}