This is an automated email from the ASF dual-hosted git repository.

arivero pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 9052f9fbb4 fix(plugins): Fix dashboard filter for Table and Big Number 
with Time Comparison (#29517)
9052f9fbb4 is described below

commit 9052f9fbb4a17c8dc1e951a8d1b13bf92b29c8a8
Author: Antonio Rivero <[email protected]>
AuthorDate: Mon Jul 8 23:07:35 2024 +0200

    fix(plugins): Fix dashboard filter for Table and Big Number with Time 
Comparison (#29517)
---
 .../src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx        | 11 ++++++++---
 .../src/BigNumber/BigNumberPeriodOverPeriod/buildQuery.ts     |  7 ++++++-
 .../src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts |  8 +++++++-
 .../src/BigNumber/BigNumberPeriodOverPeriod/types.ts          |  1 +
 .../plugins/plugin-chart-table/src/buildQuery.ts              |  7 ++++++-
 .../plugins/plugin-chart-table/src/transformProps.ts          |  7 ++++++-
 superset/common/query_context_processor.py                    |  5 +++--
 7 files changed, 37 insertions(+), 9 deletions(-)

diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx
index b7ddae936c..7107ddff18 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx
@@ -81,6 +81,7 @@ export default function PopKPI(props: PopKPIProps) {
     currentTimeRangeFilter,
     startDateOffset,
     shift,
+    dashboardTimeRange,
   } = props;
 
   const [comparisonRange, setComparisonRange] = useState<string>('');
@@ -90,12 +91,16 @@ export default function PopKPI(props: PopKPIProps) {
       setComparisonRange('');
     } else if (!isEmpty(shift) || startDateOffset) {
       const newShift = getTimeOffset({
-        timeRangeFilter: currentTimeRangeFilter,
+        timeRangeFilter: {
+          ...currentTimeRangeFilter,
+          comparator:
+            dashboardTimeRange ?? (currentTimeRangeFilter as any).comparator,
+        },
         shifts: ensureIsArray(shift),
         startDate: startDateOffset || '',
       });
       const promise: any = fetchTimeRange(
-        (currentTimeRangeFilter as any).comparator,
+        dashboardTimeRange ?? (currentTimeRangeFilter as any).comparator,
         currentTimeRangeFilter.subject,
         newShift || [],
       );
@@ -108,7 +113,7 @@ export default function PopKPI(props: PopKPIProps) {
         );
       });
     }
-  }, [currentTimeRangeFilter, shift, startDateOffset]);
+  }, [currentTimeRangeFilter, shift, startDateOffset, dashboardTimeRange]);
 
   const theme = useTheme();
   const flexGap = theme.gridUnit * 5;
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/buildQuery.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/buildQuery.ts
index 84e80559f0..ce75ebd13b 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/buildQuery.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/buildQuery.ts
@@ -60,7 +60,12 @@ export default function buildQuery(formData: QueryFormData) {
     const timeOffsets = ensureIsArray(
       isTimeComparison(formData, baseQueryObject)
         ? getTimeOffset({
-            timeRangeFilter: TimeRangeFilters[0],
+            timeRangeFilter: {
+              ...TimeRangeFilters[0],
+              comparator:
+                baseQueryObject?.time_range ??
+                (TimeRangeFilters[0] as any)?.comparator,
+            },
             shifts: formData.time_compare,
             startDate:
               previousCustomStartDate && !formData.start_date_offset
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts
index 15a65e0355..cc3ef72ae4 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/transformProps.ts
@@ -118,7 +118,12 @@ export default function transformProps(chartProps: 
ChartProps) {
   let dataOffset: string[] = [];
   if (isCustomOrInherit) {
     dataOffset = getTimeOffset({
-      timeRangeFilter: currentTimeRangeFilter,
+      timeRangeFilter: {
+        ...currentTimeRangeFilter,
+        comparator:
+          formData?.extra_form_data?.time_range ??
+          (currentTimeRangeFilter as any)?.comparator,
+      },
       shifts: ensureIsArray(timeComparison),
       startDate:
         previousCustomStartDate && !startDateOffset
@@ -207,5 +212,6 @@ export default function transformProps(chartProps: 
ChartProps) {
     currentTimeRangeFilter,
     startDateOffset,
     shift: timeComparison,
+    dashboardTimeRange: formData?.extraFormData?.time_range,
   };
 }
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/types.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/types.ts
index e18e04261f..e0ece4d877 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/types.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/types.ts
@@ -65,6 +65,7 @@ export type PopKPIProps = PopKPIStylesProps &
     currentTimeRangeFilter?: SimpleAdhocFilter;
     startDateOffset?: string;
     shift: string;
+    dashboardTimeRange?: string;
   };
 
 export enum ColorSchemeEnum {
diff --git a/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts 
b/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
index a74d875d81..554914053c 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
@@ -110,7 +110,12 @@ const buildQuery: BuildQuery<TableChartFormData> = (
     const timeOffsets = ensureIsArray(
       isTimeComparison(formData, baseQueryObject)
         ? getTimeOffset({
-            timeRangeFilter: TimeRangeFilters[0],
+            timeRangeFilter: {
+              ...TimeRangeFilters[0],
+              comparator:
+                baseQueryObject?.time_range ??
+                (TimeRangeFilters[0] as any)?.comparator,
+            },
             shifts: formData.time_compare,
             startDate:
               previousCustomStartDate && !formData.start_date_offset
diff --git a/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts 
b/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts
index 9647ffd6bb..66bf6b68ed 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/transformProps.ts
@@ -542,7 +542,12 @@ const transformProps = (
   }
 
   const timeOffsets = getTimeOffset({
-    timeRangeFilter: TimeRangeFilters[0],
+    timeRangeFilter: {
+      ...TimeRangeFilters[0],
+      comparator:
+        formData?.extra_form_data?.time_range ??
+        (TimeRangeFilters[0] as any)?.comparator,
+    },
     shifts: formData.time_compare,
     startDate:
       previousCustomStartDate && !formData.start_date_offset
diff --git a/superset/common/query_context_processor.py 
b/superset/common/query_context_processor.py
index eb3fa9b6bb..26935a4d96 100644
--- a/superset/common/query_context_processor.py
+++ b/superset/common/query_context_processor.py
@@ -592,8 +592,9 @@ class QueryContextProcessor:
 
             if time_grain:
                 # move the temporal column to the first column in df
-                col = df.pop(join_keys[0])
-                df.insert(0, col.name, col)
+                if join_keys:
+                    col = df.pop(join_keys[0])
+                    df.insert(0, col.name, col)
 
                 # removes columns created only for join purposes
                 df.drop(

Reply via email to