Skip to content

Commit

Permalink
fix: Time range filter applied on a dashboard is not persisting to th…
Browse files Browse the repository at this point in the history
…e chart explore (apache#22920)

(cherry picked from commit e9423c3)
  • Loading branch information
michael-s-molina authored and AnushaErrabelli committed Feb 6, 2023
1 parent 7ddc022 commit 4946ea9
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@ const getExploreFormData = (overrides: JsonObject = {}) => ({
sqlExpression: "city = 'Warsaw'",
filterOptionName: '567',
},
{
clause: 'WHERE' as const,
expressionType: 'SIMPLE' as const,
operator: 'TEMPORAL_RANGE' as const,
subject: 'ds',
comparator: 'No filter',
filterOptionName: '678',
},
],
adhoc_filters_b: [
{
Expand Down Expand Up @@ -158,6 +166,14 @@ const getExpectedResultFormData = (overrides: JsonObject = {}) => ({
sqlExpression: "city = 'Warsaw'",
filterOptionName: '567',
},
{
clause: 'WHERE',
expressionType: 'SIMPLE',
operator: 'TEMPORAL_RANGE',
subject: 'ds',
comparator: 'Last month',
filterOptionName: expect.any(String),
},
{
clause: 'WHERE',
expressionType: 'SIMPLE',
Expand Down Expand Up @@ -279,7 +295,7 @@ const getExpectedResultFormData = (overrides: JsonObject = {}) => ({
...overrides,
});

it('merges dashboard context form data with explore form data', () => {
test('merges dashboard context form data with explore form data', () => {
const fullFormData = getFormDataWithDashboardContext(
getExploreFormData(),
getDashboardFormData(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,25 @@ const mergeNativeFiltersToFormData = (
return nativeFiltersData;
};

const applyTimeRangeFilters = (
dashboardFormData: JsonObject,
adhocFilters: AdhocFilter[],
) => {
const extraFormData = dashboardFormData.extra_form_data || {};
if ('time_range' in extraFormData) {
return adhocFilters.map((filter: SimpleAdhocFilter) => {
if (filter.operator === 'TEMPORAL_RANGE') {
return {
...filter,
comparator: extraFormData.time_range,
};
}
return filter;
});
}
return adhocFilters;
};

export const getFormDataWithDashboardContext = (
exploreFormData: QueryFormData,
dashboardContextFormData: JsonObject,
Expand All @@ -194,14 +213,18 @@ export const getFormDataWithDashboardContext = (
.reduce(
(acc, key) => ({
...acc,
[key]: removeAdhocFilterDuplicates([
...ensureIsArray(exploreFormData[key]),
...ensureIsArray(filterBoxData[key]),
...ensureIsArray(nativeFiltersData[key]),
]),
[key]: applyTimeRangeFilters(
dashboardContextFormData,
removeAdhocFilterDuplicates([
...ensureIsArray(exploreFormData[key]),
...ensureIsArray(filterBoxData[key]),
...ensureIsArray(nativeFiltersData[key]),
]),
),
}),
{},
);

return {
...exploreFormData,
...dashboardContextFormData,
Expand Down

0 comments on commit 4946ea9

Please sign in to comment.