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(