fix timeFilter resetting when changing table

This commit is contained in:
Sven Klemm 2018-08-30 15:39:01 +02:00
parent 5ceaa21e3b
commit 1cac061448

View File

@ -201,23 +201,24 @@ export class PostgresQueryCtrl extends QueryCtrl {
tableChanged() { tableChanged() {
this.target.table = this.tableSegment.value; this.target.table = this.tableSegment.value;
this.target.where = [];
this.target.group = [];
this.updateProjection();
let task1 = this.datasource.metricFindQuery(this.metaBuilder.buildColumnQuery('time')).then(result => { let task1 = this.datasource.metricFindQuery(this.metaBuilder.buildColumnQuery('time')).then(result => {
// check if time column is still valid // check if time column is still valid
if (result.length > 0 && !_.find(result, (r: any) => r.text === this.target.timeColumn)) { if (result.length > 0 && !_.find(result, (r: any) => r.text === this.target.timeColumn)) {
let segment = this.uiSegmentSrv.newSegment(result[0].text); let segment = this.uiSegmentSrv.newSegment(result[0].text);
this.timeColumnSegment.html = segment.html; this.timeColumnSegment.html = segment.html;
this.timeColumnSegment.value = segment.value; this.timeColumnSegment.value = segment.value;
return this.timeColumnChanged(false);
} }
return this.timeColumnChanged(false);
}); });
let task2 = this.datasource.metricFindQuery(this.metaBuilder.buildColumnQuery('value')).then(result => { let task2 = this.datasource.metricFindQuery(this.metaBuilder.buildColumnQuery('value')).then(result => {
if (result.length > 0) { if (result.length > 0) {
this.target.select = [[{ type: 'column', params: [result[0].text] }]]; this.target.select = [[{ type: 'column', params: [result[0].text] }]];
this.target.where = []; this.updateProjection();
this.target.group = [];
} }
this.updateProjection();
}); });
this.$q.all([task1, task2]).then(() => { this.$q.all([task1, task2]).then(() => {
@ -238,19 +239,19 @@ export class PostgresQueryCtrl extends QueryCtrl {
if (result.length === 1) { if (result.length === 1) {
if (this.target.timeColumnType !== result[0].text) { if (this.target.timeColumnType !== result[0].text) {
this.target.timeColumnType = result[0].text; this.target.timeColumnType = result[0].text;
let partModel; }
if (this.queryModel.hasUnixEpochTimecolumn()) { let partModel;
partModel = sqlPart.create({ type: 'macro', name: '$__unixEpochFilter', params: [] }); if (this.queryModel.hasUnixEpochTimecolumn()) {
} else { partModel = sqlPart.create({ type: 'macro', name: '$__unixEpochFilter', params: [] });
partModel = sqlPart.create({ type: 'macro', name: '$__timeFilter', params: [] }); } else {
} partModel = sqlPart.create({ type: 'macro', name: '$__timeFilter', params: [] });
}
if (this.whereParts.length >= 1 && this.whereParts[0].def.type === 'macro') { if (this.whereParts.length >= 1 && this.whereParts[0].def.type === 'macro') {
// replace current macro // replace current macro
this.whereParts[0] = partModel; this.whereParts[0] = partModel;
} else { } else {
this.whereParts.splice(0, 0, partModel); this.whereParts.splice(0, 0, partModel);
}
} }
} }