Skip to content

Commit d7810cf

Browse files
authored
Use send_null flag while sending queries (#19)
1 parent 3a9de24 commit d7810cf

File tree

7 files changed

+64
-60
lines changed

7 files changed

+64
-60
lines changed

dist/MANIFEST.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ Hash: SHA512
99
"signedByOrgName": "parseable",
1010
"plugin": "parseable-parseable-datasource",
1111
"version": "1.0.0",
12-
"time": 1674103699007,
12+
"time": 1676794619143,
1313
"keyId": "7e4d0c6a708866e7",
1414
"files": {
1515
"LICENSE": "20b067f86de375aae6db0f283ab2e65de24d537733b89bd58432c101259d84cf",
1616
"CHANGELOG.md": "ba613d6f914b27dce9ace4d8c0cb074273c9eb6c536d8e7ac24c5ce6ae941fd0",
17-
"module.js.map": "e7c9f7e3b94ba2c67608d7bc332919dda02720bd3001e04f53afa2aa9d065fc9",
18-
"plugin.json": "278cf69593ae48fa75656eda0179faa9b36f101c16bf95b40dee3ce095e8b6ac",
17+
"module.js.map": "528461b3e766c887e2a6800c1276bee7801224beb1feb497f323913b0a32163f",
18+
"plugin.json": "105815c3f4a0698f5c23724aacb9e372aec16362e75f0f8b8ac14893b1492eed",
1919
"README.md": "84d21067fd37e309ec194beb136f24ea3f1e682076f489d2b06c8b621f50c75b",
2020
"img/configuration.png": "c545a51bcc88809b2b4f87aac517a7d27ad61281344b0485c9826370b915b4d8",
2121
"img/log-view-text.png": "8c6555af9c391cb1a8368c79b9bcc7386887beeea061e3483b0e020feec9d73d",
@@ -30,18 +30,18 @@ Hash: SHA512
3030
"stories/assets/code-brackets.svg": "9ef6443ebd43351be1a6edbab492003b84f2e30c8f80207ec8c4138fa440f7f4",
3131
"stories/assets/flow.svg": "275142c67bb630246cbdfb0fc3493f17dd695544777ec8da852dbbe94976d323",
3232
"stories/assets/repo.svg": "fb4ece472009833a03b9f1fbc775f13a010d9432cae3844e8b05710ba028100d",
33-
"module.js": "89ef79c006f69d81b77269a7b576c3d48fb00d78110462cf6abc8c0559f2a607",
33+
"module.js": "7fc14ff69e541ecc8b27ed7c6e118839c109639672dde85effbcac87372e5de7",
3434
"dashboards/log-view.json": "b708febe7c3a1214237ad409db877f13d6682d66b7b60c0f435883b115a90b64"
3535
}
3636
}
3737
-----BEGIN PGP SIGNATURE-----
3838
Version: OpenPGP.js v4.10.10
3939
Comment: https://openpgpjs.org
4040

41-
wrgEARMKAAYFAmPIy5MAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq
42-
cIhm563uAgkB0oyhi22xa+icbOpKOXeUzqT8W+V0G6gsLNgymT14iZXB0iu6
43-
l3ZJfHOf0EyzHqAaiexZbmrzVoL5K29CMwfC38ECCKsL4LFbJJA/SUc8HMgj
44-
PPIx3ezZ4yK6k0ZjaQW8+sjfDOVzHkg/Wp0D6V5Lvfay60oi48lTHQYVjReV
45-
JfkSsipB
46-
=c0cH
41+
wrcEARMKAAYFAmPx2vsAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq
42+
cIhm55dEAgdRP1E5DvHwcIZ1+oW7xU5Uvbsobc6UL9WhL9Swc1Jx3iI1QN2g
43+
pE72rWc9l1GPxxxvahyBI++DipTuhwuwaO6R1QII5Z6lFa+7hNaQEGDJeDkv
44+
JqkZxzD1fAOD+/kJBGqsyj9a6uduzxHPB3Iu9lzWvsUgzlk/hGENdGr4UEDU
45+
VLaWHUI=
46+
=5hln
4747
-----END PGP SIGNATURE-----

dist/module.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
{"name": "Log Dashboard", "path": "img/log-visualisation.png"}
2525
],
2626
"version": "1.0.0",
27-
"updated": "2023-01-19"
27+
"updated": "2023-02-19"
2828
},
2929
"routes": [
3030
{
1000 KB
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
25a219f846f1026a62caca60f8df840b29f2b0ba

src/datasource.ts

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import {
44
DataQueryResponse,
55
DataSourceApi,
66
DataSourceInstanceSettings,
7-
MutableDataFrame,
8-
DataFrame,
9-
FieldType,
10-
guessFieldTypeFromValue,
7+
// MutableDataFrame,
8+
// DataFrame,
9+
toDataFrame,
10+
// FieldType,
11+
// guessFieldTypeFromValue,
1112
} from '@grafana/data';
1213
import { lastValueFrom, of } from 'rxjs';
1314
import { catchError, map } from 'rxjs/operators';
@@ -62,7 +63,8 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
6263
const request = {
6364
"query": target.queryText,
6465
"startTime": start.toISOString(),
65-
"endTime": end.toISOString()
66+
"endTime": end.toISOString(),
67+
"send_null": true
6668
};
6769
return lastValueFrom(
6870
this.doFetch<any[]>({
@@ -71,7 +73,7 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
7173
method: 'POST',
7274
}).pipe(
7375
map((response) => {
74-
return this.arrayToDataFrame(response.data);
76+
return toDataFrame(response.data);
7577
}),
7678
catchError((err) => {
7779
return of({ data: [] });
@@ -93,47 +95,48 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
9395
return getBackendSrv().fetch<T>(options);
9496
}
9597

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+
// }
137140

138141
async listStreams(): Promise<StreamList[]> {
139142
return lastValueFrom(

0 commit comments

Comments
 (0)