Skip to content

Commit fd8ca1c

Browse files
committedFeb 28, 2025·
BUG: pass filtered queries to Go backend
1 parent a9f2f87 commit fd8ca1c

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed
 

‎src/DataSource.ts

+12-7
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,20 @@ export class DataSource extends DataSourceWithBackend<AAQuery, AADataSourceOptio
3636

3737
// Called from Grafana panels to get data
3838
query(options: DataQueryRequest<AAQuery>): Observable<DataQueryResponse> {
39-
// Remove hidden target from query
4039
const query = { ...options };
41-
query.targets = _.filter(query.targets, (t) => !t.hide);
4240

4341
const query_replaced = this.replaceVariables(query);
44-
const targets = this.buildQueryParameters(query_replaced);
42+
query_replaced.targets = this.filterTargets(query_replaced.targets);
4543

4644
// There're no target query
47-
if (targets.length <= 0) {
45+
if (query_replaced.targets.length <= 0) {
4846
return new Observable<DataQueryResponse>((subscriber) => {
4947
subscriber.next({ data: [] });
5048
});
5149
}
5250

51+
const targets = this.buildQueryParameters(query_replaced);
52+
5353
const stream = _.filter(targets, (t) => t.stream);
5454

5555
// No stream query
@@ -128,12 +128,17 @@ export class DataSource extends DataSourceWithBackend<AAQuery, AADataSourceOptio
128128
return query;
129129
}
130130

131+
filterTargets(targets: AAQuery[]): AAQuery[] {
132+
// Remove unnecessary targets
133+
// 1) hidden target
134+
// 2) placeholder target
135+
// 3) undefined target
136+
return _.filter(targets, (t) => !t.hide && t.target !== '' && typeof t.target !== 'undefined');
137+
}
138+
131139
buildQueryParameters(options: DataQueryRequest<AAQuery>) {
132140
const query = { ...options };
133141

134-
// remove placeholder targets and undefined targets
135-
query.targets = _.filter(query.targets, (target) => target.target !== '' && typeof target.target !== 'undefined');
136-
137142
if (query.targets.length <= 0) {
138143
return [];
139144
}

‎src/specs/datasource.test.ts

+16-17
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,22 @@ describe('Archiverappliance Datasource', () => {
300300
});
301301
});
302302

303+
describe('Filter targets tests', () => {
304+
it('should return filtered array when target is empty or undefined', (done) => {
305+
const t = [
306+
{ target: 'PV', refId: 'A' },
307+
{ target: '', refId: 'B' },
308+
{ target: undefined, refId: 'C' },
309+
{ target: 'PV', refId: 'C', hide: true },
310+
] as unknown as AAQuery[];
311+
312+
const targets = ds.filterTargets(t);
313+
314+
expect(targets).toHaveLength(1);
315+
done();
316+
});
317+
});
318+
303319
describe('Build query parameters tests', () => {
304320
it('should return valid interval time in integer', (done) => {
305321
const options = {
@@ -329,23 +345,6 @@ describe('Archiverappliance Datasource', () => {
329345
done();
330346
});
331347

332-
it('should return filtered array when target is empty or undefined', (done) => {
333-
const options = {
334-
targets: [
335-
{ target: 'PV', refId: 'A' },
336-
{ target: '', refId: 'B' },
337-
{ target: undefined, refId: 'C' },
338-
],
339-
range: { from: new Date('2010-01-01T00:00:00.000Z'), to: new Date('2010-01-01T00:00:30.000Z') },
340-
maxDataPoints: 1000,
341-
} as unknown as DataQueryRequest<AAQuery>;
342-
343-
const targets = ds.buildQueryParameters(options);
344-
345-
expect(targets).toHaveLength(1);
346-
done();
347-
});
348-
349348
it('should return 1 second range when from == to in seconds', (done) => {
350349
const options = {
351350
targets: [{ target: 'PV1', refId: 'A' }],

0 commit comments

Comments
 (0)
Please sign in to comment.