import { type Point } from './PointScale'; import type { default as Timeline, TimeValue, TimeDataItem } from '../Timeline'; /** 数据项 */ export declare type DataItem = Pick & { time: string; originTime: TimeValue; }; /** * 数据集管理 */ export default class Dataset { /** 时间轴实例 */ timeline: Timeline; /** 时间数据 */ protected _timeData: TimeDataItem[]; /** 解析后的数据 */ protected _data: DataItem[]; /** 数据项有效索引区间(播放区间) 开闭 [,) */ protected _indexRange: [number, number]; /** 区间开关 */ protected _isRange: boolean; /** 当前数据项索引 */ protected _currentIndex: number; constructor(timeline: Timeline, timeData: TimeDataItem[], indexRange?: [number, number]); /** * 验证数据合法性 */ private __verify; /** * 解析数据 */ parse(): void; /** * 获取数据集 */ getData(range?: boolean): DataItem[]; /** * 根据索引获取数据项 */ getDataItem(index: number): DataItem; /** * 是否有效的索引 */ isValidIndex(index: number): boolean; getMinIndex(range?: boolean): number; getMaxIndex(range?: boolean): number; /** * 是否在最小索引处 */ isIndexMin(index?: number, range?: boolean): boolean; /** * 是否在最大索引处 */ isIndexMax(index?: number, range?: boolean): boolean; /** * 获取当前数据索引 */ getCurrentIndex(): number; /** * 设置当前数据索引 * ! 限制在 IndexRange 区间中 */ private __setCurrentIndex; /** * 是否有区间限制 */ isRange(): boolean; /** * 获取数据索引区间, 开闭 [,) */ getIndexRange(): [number, number]; /** * 设置数据索引区间, 开闭 [,) */ private __setIndexRange; /** * 是否是范围内的有效索引 */ isInRangeIndex(index: number): boolean; /** * 更新状态 */ update({ currentIndex, indexRange }: { currentIndex?: number; indexRange?: [number, number]; }): void; }