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 b7ddae936c770..7107ddff1802a 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(''); @@ -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 84e80559f0766..ce75ebd13b097 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 15a65e0355398..cc3ef72ae47c6 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 e18e04261f58d..e0ece4d8777ad 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 a74d875d81b25..554914053cb89 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 = ( 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 9647ffd6bb520..66bf6b68ed2a9 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 eb3fa9b6bb35c..26935a4d96783 100644 --- a/superset/common/query_context_processor.py +++ b/superset/common/query_context_processor.py @@ -592,8 +592,9 @@ def join_offset_dfs( 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(