Skip to content

Commit

Permalink
Histograms are assigned correct percentile when selected as default m…
Browse files Browse the repository at this point in the history
…easure (#735)

* Force exit for mocha.

* DataCube returns SeriesList for default selected measures. It now creates Series from Measures, not just names. That way histograms are created with regular constructor and can read default percentile.
  • Loading branch information
adrianmroz-allegro committed Apr 22, 2021
1 parent f2213ae commit a6d232b
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 17 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
"scripts": {
"test": "npm-run-all -s test:*",
"watch:test": "npm-run-all -p watch:test:*",
"test:common": "mocha --require ./test/setup/mocha.js src/common/**/*.mocha.{ts,tsx}",
"test:client": "mocha --require ./test/setup/mocha.js src/client/**/*.mocha.{ts,tsx}",
"test:server": "mocha --require ./test/setup/mocha.js src/server/**/*.mocha.ts",
"test:common": "mocha --exit --require ./test/setup/mocha.js src/common/**/*.mocha.{ts,tsx}",
"test:client": "mocha --exit --require ./test/setup/mocha.js src/client/**/*.mocha.{ts,tsx}",
"test:server": "mocha --exit --require ./test/setup/mocha.js src/server/**/*.mocha.ts",
"watch:test:common": "npm run test:common -- --watch --watch-extensions ts,tsx",
"watch:test:client": "npm run test:client -- --watch --watch-extensions ts,tsx",
"watch:test:server": "npm run test:server -- --watch --watch-extensions ts,tsx",
Expand Down
7 changes: 5 additions & 2 deletions src/common/models/data-cube/data-cube.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import { MeasureOrGroupJS } from "../measure/measure-group";
import { Measures } from "../measure/measures";
import { QueryDecoratorDefinition, QueryDecoratorDefinitionJS } from "../query-decorator/query-decorator";
import { RefreshRule, RefreshRuleJS } from "../refresh-rule/refresh-rule";
import { SeriesList } from "../series-list/series-list";
import { EMPTY_SPLITS, Splits } from "../splits/splits";
import { Timekeeper } from "../timekeeper/timekeeper";

Expand Down Expand Up @@ -904,8 +905,10 @@ export class DataCube implements Instance<DataCubeValue, DataCubeJS> {
return isTruthy(this.maxQueries) ? this.maxQueries : DataCube.DEFAULT_MAX_QUERIES;
}

public getDefaultSelectedMeasures(): OrderedSet<string> {
return this.defaultSelectedMeasures || this.measures.getFirstNMeasureNames(4);
public getDefaultSeries(): SeriesList {
const measureNames = this.defaultSelectedMeasures || this.measures.getFirstNMeasureNames(4);
const measures = measureNames.toArray().map(name => this.getMeasure(name));
return SeriesList.fromMeasures(measures);
}

public getDefaultPinnedDimensions(): OrderedSet<string> {
Expand Down
19 changes: 15 additions & 4 deletions src/common/models/essence/essence.fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { NumberFilterClause, NumberRange, RelativeTimeFilterClause, TimeFilterPe
import { boolean, numberRange, stringContains, stringIn, stringMatch, timePeriod, timeRange } from "../filter-clause/filter-clause.fixtures";
import { Filter } from "../filter/filter";
import { EMPTY_SERIES, SeriesList } from "../series-list/series-list";
import { measureSeries } from "../series/series.fixtures";
import { SortDirection } from "../sort/sort";
import { numberSplitCombine, stringSplitCombine, timeSplitCombine } from "../split/split.fixtures";
import { EMPTY_SPLITS, Splits } from "../splits/splits";
Expand Down Expand Up @@ -55,7 +56,7 @@ export class EssenceFixtures {
return {
...defaultEssence,
visualization: TOTALS_MANIFEST,
series: SeriesList.fromMeasureNames(["count"])
series: SeriesList.fromSeries([measureSeries("count")])
};
}

Expand Down Expand Up @@ -101,7 +102,7 @@ export class EssenceFixtures {
timeShift: TimeShift.empty(),
filter: Filter.fromClauses(filterClauses),
splits: new Splits({ splits: List(splitCombines) }),
series: SeriesList.fromMeasureNames(["added"]),
series: SeriesList.fromSeries([measureSeries("added")]),
pinnedDimensions: OrderedSet(["channel", "namespace", "isRobot"]),
pinnedSort: "delta"
});
Expand All @@ -122,6 +123,11 @@ export class EssenceFixtures {
numberSplitCombine("commentLength", 10, { sort: { reference: "delta", direction: SortDirection.descending }, limit: 5 }),
timeSplitCombine("time", "PT1H", { sort: { reference: "delta", direction: SortDirection.descending }, limit: null })
];
const series = [
measureSeries("delta"),
measureSeries("count"),
measureSeries("added")
];
return new Essence({
dataCube: DataCubeFixtures.wiki(),
visualization: TABLE_MANIFEST,
Expand All @@ -130,7 +136,7 @@ export class EssenceFixtures {
timeShift: TimeShift.empty(),
filter: Filter.fromClauses(filterClauses),
splits: new Splits({ splits: List(splitCombines) }),
series: SeriesList.fromMeasureNames(["delta", "count", "added"]),
series: SeriesList.fromSeries(series),
pinnedDimensions: OrderedSet(["channel", "namespace", "isRobot"]),
pinnedSort: "delta"
});
Expand All @@ -145,6 +151,11 @@ export class EssenceFixtures {
stringSplitCombine("channel", { sort: { reference: "delta", direction: SortDirection.descending }, limit: 50 }),
timeSplitCombine("time", "PT1H", { sort: { reference: "delta", direction: SortDirection.descending }, limit: null })
];
const series = [
measureSeries("delta"),
measureSeries("count"),
measureSeries("added")
];
return new Essence({
dataCube: DataCubeFixtures.wiki(),
visualization: LINE_CHART_MANIFEST,
Expand All @@ -153,7 +164,7 @@ export class EssenceFixtures {
timeShift: TimeShift.empty(),
filter: Filter.fromClauses(filterClauses),
splits: new Splits({ splits: List(splitCombines) }),
series: SeriesList.fromMeasureNames(["delta", "count", "added"]),
series: SeriesList.fromSeries(series),
pinnedDimensions: OrderedSet(["channel", "namespace", "isRobot"]),
pinnedSort: "delta"
});
Expand Down
4 changes: 2 additions & 2 deletions src/common/models/essence/essence.mocha.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ describe("EssenceProps", () => {
describe("vis picking", () => {

describe("#getBestVisualization", () => {
const series = ["count"];
const series = [new MeasureSeries({ reference: "count" })];
const tests = [
{
splits: [],
Expand Down Expand Up @@ -185,7 +185,7 @@ describe("EssenceProps", () => {
const { visualization } = Essence.getBestVisualization(
DataCubeFixtures.twitter(),
Splits.fromSplits(splits),
SeriesList.fromMeasureNames(series),
SeriesList.fromSeries(series),
current);

expect(visualization).to.deep.equal(expected);
Expand Down
4 changes: 2 additions & 2 deletions src/common/models/essence/essence.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ export class Essence extends ImmutableRecord<EssenceValue>(defaultEssence) {
filter: dataCube.getDefaultFilter(),
timeShift: TimeShift.empty(),
splits: dataCube.getDefaultSplits(),
series: SeriesList.fromMeasureNames(dataCube.getDefaultSelectedMeasures().toArray()),
series: dataCube.getDefaultSeries(),
pinnedDimensions: dataCube.getDefaultPinnedDimensions(),
pinnedSort: dataCube.getDefaultSortMeasure()
});
Expand Down Expand Up @@ -422,7 +422,7 @@ export class Essence extends ImmutableRecord<EssenceValue>(defaultEssence) {
const seriesValidInNewCube = essence.series.constrainToMeasures(newDataCube.measures);
const newSeriesList = !seriesValidInNewCube.isEmpty()
? seriesValidInNewCube
: SeriesList.fromMeasureNames(newDataCube.getDefaultSelectedMeasures().toArray());
: newDataCube.getDefaultSeries();

return essence
.update("filter", filter => filter.constrainToDimensions(newDataCube.dimensions))
Expand Down
4 changes: 0 additions & 4 deletions src/common/models/series-list/series-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,6 @@ const defaultSeriesList: SeriesListValue = { series: List([]) };

export class SeriesList extends Record<SeriesListValue>(defaultSeriesList) {

static fromMeasureNames(names: string[]): SeriesList {
return new SeriesList({ series: List(names.map(reference => new MeasureSeries({ reference }))) });
}

static fromMeasures(measures: Measure[]): SeriesList {
const series = List(measures.map(fromMeasure));
return new SeriesList({ series });
Expand Down

0 comments on commit a6d232b

Please sign in to comment.