diff --git a/frontend/src/metabase/lib/query.js b/frontend/src/metabase/lib/query.js index 6ad1e12a27bd0c5961a83981cf32ae2f7cbfa7ef..5070477ff69d6820c9ae44be21b0f8b6953d56fc 100644 --- a/frontend/src/metabase/lib/query.js +++ b/frontend/src/metabase/lib/query.js @@ -487,11 +487,15 @@ var Query = { getAggregationDescription(tableMetadata, query, options) { return conjunctList(Query.getAggregations(query).map(aggregation => { + if (NamedClause.isNamed(aggregation)) { + return [NamedClause.getName(aggregation)]; + } + if (AggregationClause.isMetric(aggregation)) { + let metric = _.findWhere(tableMetadata.metrics, { id: AggregationClause.getMetric(aggregation) }); + let name = metric ? metric.name : "[Unknown Metric]"; + return [options.jsx ? <span className="text-green text-bold">{name}</span> : name]; + } switch (aggregation[0]) { - case "METRIC": - let metric = _.findWhere(tableMetadata.metrics, { id: aggregation[1] }); - let name = metric ? metric.name : "[Unknown Metric]"; - return [options.jsx ? <span className="text-green text-bold">{name}</span> : name]; case "rows": return ["Raw data"]; case "count": return ["Count"]; case "cum_count": return ["Cumulative count"]; diff --git a/frontend/test/unit/lib/query.spec.js b/frontend/test/unit/lib/query.spec.js index 2f9aade317f18a2b2f388d67d4f2b02d5b4fe6f6..c548429682a51359782f86dfd920993c49f3cda9 100644 --- a/frontend/test/unit/lib/query.spec.js +++ b/frontend/test/unit/lib/query.spec.js @@ -1,6 +1,12 @@ import Query from "metabase/lib/query"; import { createQuery, AggregationClause, BreakoutClause } from "metabase/lib/query"; +const mockTableMetadata = { + display_name: "Order", + fields: [ + { id: 1, display_name: "Total" } + ] +} describe('Query', () => { describe('createQuery', () => { @@ -284,6 +290,20 @@ describe('Query', () => { }) }); +describe("generateQueryDescription", () => { + it("should work with multiple aggregations", () => { + expect(Query.generateQueryDescription(mockTableMetadata, { + source_table: 1, + aggregation: [["count"], ["sum", ["field-id", 1]]] + })).toEqual("Orders, Count and Sum of Total") + }) + it("should work with named aggregations", () => { + expect(Query.generateQueryDescription(mockTableMetadata, { + source_table: 1, + aggregation: [["named", ["sum", ["field-id", 1]], "Revenue"]] + })).toEqual("Orders, Revenue") + }) +}) describe('AggregationClause', () => {