diff --git a/public/app/plugins/datasource/influxdb/influx_query.ts b/public/app/plugins/datasource/influxdb/influx_query.ts index 218d7d4b0a5..ec75bc8d75b 100644 --- a/public/app/plugins/datasource/influxdb/influx_query.ts +++ b/public/app/plugins/datasource/influxdb/influx_query.ts @@ -6,9 +6,19 @@ import queryPart = require('./query_part'); declare var InfluxQueryBuilder: any; +class InfluxSelectModel { + modelParts: any[]; + persistedParts: any[]; + + constructor(persistedParts: any[]) { + this.persistedParts = persistedParts; + this.modelParts = _.map(persistedParts, queryPart.create); + } +} + class InfluxQuery { target: any; - selectParts: any[]; + selectModels: any[]; groupByParts: any; queryBuilder: any; @@ -29,10 +39,8 @@ class InfluxQuery { } updateSelectParts() { - this.selectParts = _.map(this.target.select, function(parts: any) { - return _.map(parts, function(part: any) { - return queryPart.create(part); - }); + this.selectModels = _.map(this.target.select, function(parts: any) { + return new InfluxSelectModel(parts); }); } @@ -41,6 +49,18 @@ class InfluxQuery { this.updateSelectParts(); } + removeSelectPart(selectModel, part) { + var partIndex = _.indexOf(selectModel.modelParts, part); + selectModel.persistedParts.splice(partIndex, 1); + this.updateSelectParts(); + } + + addSelectPart(selectModel, name) { + var partModel = queryPart.create({name: name}); + selectModel.persistedParts.push(partModel.part); + selectModel.modelParts.push(partModel); + } + addSelect() { this.target.select.push([ {name: 'mean', params: ['value']}, @@ -92,8 +112,8 @@ class InfluxQuery { var query = 'SELECT '; var i, y; - for (i = 0; i < this.selectParts.length; i++) { - let parts = this.selectParts[i]; + for (i = 0; i < this.selectModels.length; i++) { + let parts = this.selectModels[i].modelParts; var selectText = ""; for (y = 0; y < parts.length; y++) { let part = parts[y]; diff --git a/public/app/plugins/datasource/influxdb/partials/query.editor.html b/public/app/plugins/datasource/influxdb/partials/query.editor.html index 59835405da3..0af29a39981 100644 --- a/public/app/plugins/datasource/influxdb/partials/query.editor.html +++ b/public/app/plugins/datasource/influxdb/partials/query.editor.html @@ -65,15 +65,15 @@