diff --git a/frontend/src/metabase/modes/components/TimeseriesFilterWidget.jsx b/frontend/src/metabase/modes/components/TimeseriesFilterWidget.jsx index fdd088458a4e28a17021c3df8c0fa1ca55fb1caa..c24a85d6e3b93b9017680b66ce62bec5a6eac0b4 100644 --- a/frontend/src/metabase/modes/components/TimeseriesFilterWidget.jsx +++ b/frontend/src/metabase/modes/components/TimeseriesFilterWidget.jsx @@ -10,10 +10,8 @@ import * as Query from "metabase/lib/query/query"; import * as Filter from "metabase/lib/query/filter"; import * as Card from "metabase/meta/Card"; -import { - parseFieldTarget, - generateTimeFilterValuesDescriptions, -} from "metabase/lib/query_time"; +import { FieldDimension } from "metabase-lib/lib/Dimension"; +import { generateTimeFilterValuesDescriptions } from "metabase/lib/query_time"; import cx from "classnames"; import _ from "underscore"; @@ -30,25 +28,31 @@ export default class TimeseriesFilterWidget extends Component { } UNSAFE_componentWillReceiveProps(nextProps) { - const query = Card.getQuery(nextProps.card); - if (query) { - const breakouts = Query.getBreakouts(query); - const filters = Query.getFilters(query); + const { query } = nextProps; + const breakouts = query.breakouts(); + if (breakouts && breakouts.length > 0) { + const filters = query.filters(); - const timeField = parseFieldTarget(breakouts[0]); + const dimensions = breakouts.map(b => b.dimension()); + const dimension = dimensions[0]; + + const timeseriesDimension = + dimension instanceof FieldDimension + ? dimension.withoutTemporalBucketing() + : dimension; const filterIndex = _.findIndex( filters, filter => Filter.isFieldFilter(filter) && - _.isEqual(filter[1], timeField.mbql()), + _.isEqual(filter[1], timeseriesDimension.mbql()), ); let filter, currentFilter; if (filterIndex >= 0) { filter = currentFilter = filters[filterIndex]; } else { - filter = ["time-interval", timeField.mbql(), -30, "day"]; + filter = ["time-interval", timeseriesDimension.mbql(), -30, "day"]; } this.setState({ filter, filterIndex, currentFilter }); diff --git a/frontend/test/metabase/modes/TimeseriesFilterWidget.unit.spec.js b/frontend/test/metabase/modes/TimeseriesFilterWidget.unit.spec.js index 502d42727c6803a3643f3c5bc963d364fa2ec126..a82b6bf98138966b76d98fe2b9212f323cda3e25 100644 --- a/frontend/test/metabase/modes/TimeseriesFilterWidget.unit.spec.js +++ b/frontend/test/metabase/modes/TimeseriesFilterWidget.unit.spec.js @@ -12,7 +12,7 @@ import { const getTimeseriesFilterWidget = question => ( <TimeseriesFilterWidget card={question.card()} - datasetQuery={question.query().datasetQuery()} + query={question.query()} setDatasetQuery={() => {}} /> );