series.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. }
  61. export interface DataQueryResponse {
  62. data: TimeSeries[];
  63. }
  64. export interface DataQuery {
  65. refId: string;
  66. [key: string]: any;
  67. }
  68. export interface DataQueryOptions {
  69. timezone: string;
  70. range: TimeRange;
  71. rangeRaw: RawTimeRange;
  72. targets: DataQuery[];
  73. panelId: number;
  74. dashboardId: number;
  75. cacheTimeout?: string;
  76. interval: string;
  77. intervalMs: number;
  78. maxDataPoints: number;
  79. scopedVars: object;
  80. }
  81. export interface DataSourceApi {
  82. /**
  83. * min interval range
  84. */
  85. interval?: string;
  86. /**
  87. * Imports queries from a different datasource
  88. */
  89. importQueries?(queries: DataQuery[], originMeta: PluginMeta): Promise<DataQuery[]>;
  90. /**
  91. * Initializes a datasource after instantiation
  92. */
  93. init?: () => void;
  94. /**
  95. * Main data query method
  96. */
  97. query(options: DataQueryOptions): Promise<DataQueryResponse>;
  98. /**
  99. * test data source
  100. */
  101. testDatasource?: () => Promise<any>;
  102. }