@@ -4,10 +4,11 @@ import {
4
4
DataQueryResponse ,
5
5
DataSourceApi ,
6
6
DataSourceInstanceSettings ,
7
- MutableDataFrame ,
8
- DataFrame ,
9
- FieldType ,
10
- guessFieldTypeFromValue ,
7
+ // MutableDataFrame,
8
+ // DataFrame,
9
+ toDataFrame ,
10
+ // FieldType,
11
+ // guessFieldTypeFromValue,
11
12
} from '@grafana/data' ;
12
13
import { lastValueFrom , of } from 'rxjs' ;
13
14
import { catchError , map } from 'rxjs/operators' ;
@@ -62,7 +63,8 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
62
63
const request = {
63
64
"query" : target . queryText ,
64
65
"startTime" : start . toISOString ( ) ,
65
- "endTime" : end . toISOString ( )
66
+ "endTime" : end . toISOString ( ) ,
67
+ "send_null" : true
66
68
} ;
67
69
return lastValueFrom (
68
70
this . doFetch < any [ ] > ( {
@@ -71,7 +73,7 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
71
73
method : 'POST' ,
72
74
} ) . pipe (
73
75
map ( ( response ) => {
74
- return this . arrayToDataFrame ( response . data ) ;
76
+ return toDataFrame ( response . data ) ;
75
77
} ) ,
76
78
catchError ( ( err ) => {
77
79
return of ( { data : [ ] } ) ;
@@ -93,47 +95,48 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
93
95
return getBackendSrv ( ) . fetch < T > ( options ) ;
94
96
}
95
97
96
- arrayToDataFrame ( array : any [ ] ) : DataFrame {
97
- let dataFrame : MutableDataFrame = new MutableDataFrame ( ) ;
98
- if ( array . length > 0 ) {
99
- const fields = Object . keys ( array [ 0 ] ) . map ( field => {
100
- return { name : field , type : guessFieldTypeFromValue ( array [ 0 ] [ field ] ) } ;
101
- } ) ;
102
-
103
- let timeFieldFound = false ;
104
- for ( const field of fields ) {
105
- // Check for p_timestamp first
106
- // because if it is present we want to use this field
107
- // as we know the format (ISO8601)
108
- if ( field . name . toLowerCase ( ) === 'p_timestamp' ) {
109
- field . type = FieldType . time ;
110
- timeFieldFound = true ;
111
- break ;
112
- }
113
- }
114
- // fallback to other possible time fields
115
- // if p_timestamp is not present
116
- if ( ! timeFieldFound ) {
117
- for ( const field of fields ) {
118
- if ( field . name . toLowerCase ( ) === 'time' ) {
119
- field . type = FieldType . time ;
120
- } else if ( field . name . toLowerCase ( ) === 'datetime' ) {
121
- field . type = FieldType . time ;
122
- } else if ( field . name . toLowerCase ( ) === 'timestamp' ) {
123
- field . type = FieldType . time ;
124
- } else if ( field . name . toLowerCase ( ) === 'date' ) {
125
- field . type = FieldType . time ;
126
- }
127
- }
128
- }
129
-
130
- dataFrame = new MutableDataFrame ( { fields } ) ;
131
- array . forEach ( ( row , index ) => {
132
- dataFrame . appendRow ( Object . values ( row ) ) ;
133
- } ) ;
134
- }
135
- return dataFrame ;
136
- }
98
+ // arrayToDataFrame(array: any[]): DataFrame {
99
+ // let dataFrame: MutableDataFrame = new MutableDataFrame();
100
+ // if (array.length > 0) {
101
+ // const fields = Object.keys(array[0]).map(field => {
102
+ // return { name: field, type: guessFieldTypeFromValue(array[0][field]) };
103
+ // });
104
+
105
+ // toDataFrame(array);
106
+ // let timeFieldFound = false;
107
+ // for (const field of fields) {
108
+ // // Check for p_timestamp first
109
+ // // because if it is present we want to use this field
110
+ // // as we know the format (ISO8601)
111
+ // if (field.name.toLowerCase() === 'p_timestamp') {
112
+ // field.type = FieldType.time;
113
+ // timeFieldFound = true;
114
+ // break;
115
+ // }
116
+ // }
117
+ // // fallback to other possible time fields
118
+ // // if p_timestamp is not present
119
+ // if (!timeFieldFound) {
120
+ // for (const field of fields) {
121
+ // if (field.name.toLowerCase() === 'time') {
122
+ // field.type = FieldType.time;
123
+ // } else if (field.name.toLowerCase() === 'datetime') {
124
+ // field.type = FieldType.time;
125
+ // } else if (field.name.toLowerCase() === 'timestamp') {
126
+ // field.type = FieldType.time;
127
+ // } else if (field.name.toLowerCase() === 'date') {
128
+ // field.type = FieldType.time;
129
+ // }
130
+ // }
131
+ // }
132
+
133
+ // dataFrame = new MutableDataFrame({ fields });
134
+ // array.forEach((row, index) => {
135
+ // dataFrame.appendRow(Object.values(row));
136
+ // });
137
+ // }
138
+ // return dataFrame;
139
+ // }
137
140
138
141
async listStreams ( ) : Promise < StreamList [ ] > {
139
142
return lastValueFrom (
0 commit comments