diff --git a/frontend/src/metabase/lib/query_time.js b/frontend/src/metabase/lib/query_time.js index 3f009e4ba9f2f6828c989aefacfe8b23b94ed269..d9baad1e73c313ddb5a23f5e85c6f84a633f1c93 100644 --- a/frontend/src/metabase/lib/query_time.js +++ b/frontend/src/metabase/lib/query_time.js @@ -3,6 +3,7 @@ import inflection from "inflection"; import { mbqlEq } from "metabase/lib/query/util"; import { formatTimeWithUnit } from "metabase/lib/formatting"; +import { parseTimestamp } from "metabase/lib/time"; export const DATETIME_UNITS = [ // "default", @@ -139,7 +140,7 @@ export function generateTimeIntervalDescription(n, unit) { export function generateTimeValueDescription(value, bucketing) { if (typeof value === "string") { - let m = moment(value); + const m = parseTimestamp(value, bucketing); if (bucketing) { return formatTimeWithUnit(value, bucketing); } else if (m.hours() || m.minutes()) { diff --git a/frontend/src/metabase/qb/lib/actions.js b/frontend/src/metabase/qb/lib/actions.js index 95d7108f314a4cb458fcefbb30b9a882e610880b..678956f2ee672b9326b4efe1a9ad58aff3e58e3d 100644 --- a/frontend/src/metabase/qb/lib/actions.js +++ b/frontend/src/metabase/qb/lib/actions.js @@ -104,13 +104,13 @@ export const filter = (card, operator, column, value) => { return newCard; }; -const drillFilter = (card, value, column) => { +export const drillFilter = (card, value, column) => { let filter; if (isDate(column)) { filter = [ "=", ["datetime-field", getFieldRefFromColumn(column), "as", column.unit], - parseTimestamp(value, column.unit).toISOString(), + parseTimestamp(value, column.unit).format(), ]; } else { const range = rangeForValue(value, column); diff --git a/frontend/test/modes/lib/actions.unit.spec.js b/frontend/test/modes/lib/actions.unit.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..73d154343d5ce1683f55185b32a6187cfc25418e --- /dev/null +++ b/frontend/test/modes/lib/actions.unit.spec.js @@ -0,0 +1,32 @@ +/* eslint-disable flowtype/require-valid-file-annotation */ + +import { drillFilter } from "metabase/qb/lib/actions"; +import moment from "moment"; + +describe("actions", () => { + describe("drillFilter", () => { + it("should add the filter with the same timezone", () => { + const newCard = drillFilter( + { + dataset_query: { + type: "query", + query: {}, + }, + }, + moment("2018-04-27T00:00:00.000+02:00"), + { + base_type: "type/DateTime", + id: 123, + unit: "day", + }, + ); + expect(newCard.dataset_query.query).toEqual({ + filter: [ + "=", + ["datetime-field", ["field-id", 123], "as", "day"], + "2018-04-27T00:00:00+02:00", + ], + }); + }); + }); +});