series.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import { Moment } from 'moment';
  2. import { PluginMeta } from './plugins';
  3. export enum LoadingState {
  4. NotStarted = 'NotStarted',
  5. Loading = 'Loading',
  6. Done = 'Done',
  7. Error = 'Error',
  8. }
  9. export interface RawTimeRange {
  10. from: Moment | string;
  11. to: Moment | string;
  12. }
  13. export interface TimeRange {
  14. from: Moment;
  15. to: Moment;
  16. raw: RawTimeRange;
  17. }
  18. export interface IntervalValues {
  19. interval: string; // 10s,5m
  20. intervalMs: number;
  21. }
  22. export type TimeSeriesValue = string | number | null;
  23. export type TimeSeriesPoints = TimeSeriesValue[][];
  24. export interface TimeSeries {
  25. target: string;
  26. datapoints: TimeSeriesPoints;
  27. unit?: string;
  28. }
  29. /** View model projection of a time series */
  30. export interface TimeSeriesVM {
  31. label: string;
  32. color: string;
  33. data: TimeSeriesValue[][];
  34. stats: TimeSeriesStats;
  35. }
  36. export interface TimeSeriesStats {
  37. total: number;
  38. max: number;
  39. min: number;
  40. logmin: number;
  41. avg: number | null;
  42. current: number | null;
  43. first: number | null;
  44. delta: number;
  45. diff: number | null;
  46. range: number | null;
  47. timeStep: number;
  48. count: number;
  49. allIsNull: boolean;
  50. allIsZero: boolean;
  51. }
  52. export enum NullValueMode {
  53. Null = 'null',
  54. Ignore = 'connected',
  55. AsZero = 'null as zero',
  56. }
  57. /** View model projection of many time series */
  58. export interface TimeSeriesVMs {
  59. [index: number]: TimeSeriesVM;
  60. length: number;
  61. }
  62. export interface DataQueryResponse {
  63. data: TimeSeries[];
  64. }
  65. export interface DataQuery {
  66. refId: string;
  67. [key: string]: any;
  68. }
  69. export interface DataQueryOptions {
  70. timezone: string;
  71. range: TimeRange;
  72. rangeRaw: RawTimeRange;
  73. targets: DataQuery[];
  74. panelId: number;
  75. dashboardId: number;
  76. cacheTimeout?: string;
  77. interval: string;
  78. intervalMs: number;
  79. maxDataPoints: number;
  80. scopedVars: object;
  81. }
  82. export interface DataSourceApi {
  83. /**
  84. * min interval range
  85. */
  86. interval?: string;
  87. /**
  88. * Imports queries from a different datasource
  89. */
  90. importQueries?(queries: DataQuery[], originMeta: PluginMeta): Promise<DataQuery[]>;
  91. /**
  92. * Initializes a datasource after instantiation
  93. */
  94. init?: () => void;
  95. /**
  96. * Main metrics / data query action
  97. */
  98. query(options: DataQueryOptions): Promise<DataQueryResponse>;
  99. /**
  100. * Test & verify datasource settings & connection details
  101. */
  102. testDatasource(): Promise<any>;
  103. }