series.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { Moment } from 'moment';
  2. export enum LoadingState {
  3. NotStarted = 'NotStarted',
  4. Loading = 'Loading',
  5. Done = 'Done',
  6. Error = 'Error',
  7. }
  8. export interface RawTimeRange {
  9. from: Moment | string;
  10. to: Moment | string;
  11. }
  12. export interface TimeRange {
  13. from: Moment;
  14. to: Moment;
  15. raw: RawTimeRange;
  16. }
  17. export type TimeSeriesValue = string | number | null;
  18. export type TimeSeriesPoints = TimeSeriesValue[][];
  19. export interface TimeSeries {
  20. target: string;
  21. datapoints: TimeSeriesPoints;
  22. unit?: string;
  23. }
  24. /** View model projection of a time series */
  25. export interface TimeSeriesVM {
  26. label: string;
  27. color: string;
  28. data: TimeSeriesValue[][];
  29. stats: TimeSeriesStats;
  30. }
  31. export interface TimeSeriesStats {
  32. total: number;
  33. max: number;
  34. min: number;
  35. logmin: number;
  36. avg: number | null;
  37. current: number | null;
  38. first: number | null;
  39. delta: number;
  40. diff: number | null;
  41. range: number | null;
  42. timeStep: number;
  43. count: number;
  44. allIsNull: boolean;
  45. allIsZero: boolean;
  46. }
  47. export enum NullValueMode {
  48. Null = 'null',
  49. Ignore = 'connected',
  50. AsZero = 'null as zero',
  51. }
  52. /** View model projection of many time series */
  53. export interface TimeSeriesVMs {
  54. [index: number]: TimeSeriesVM;
  55. length: number;
  56. }
  57. export interface DataQueryResponse {
  58. data: TimeSeries[];
  59. }
  60. export interface DataQuery {
  61. refId: string;
  62. }
  63. export interface DataQueryOptions {
  64. timezone: string;
  65. range: TimeRange;
  66. rangeRaw: RawTimeRange;
  67. targets: DataQuery[];
  68. panelId: number;
  69. dashboardId: number;
  70. cacheTimeout?: string;
  71. interval: string;
  72. intervalMs: number;
  73. maxDataPoints: number;
  74. scopedVars: object;
  75. }
  76. export interface DataSourceApi {
  77. query(options: DataQueryOptions): Promise<DataQueryResponse>;
  78. testDatasource(): Promise<any>;
  79. interval?: string;
  80. }