Skip to content

Commit 607301a

Browse files
fix(plugins): Fix dashboard filter in Period Over Period KPI plugin (apache#27013)
1 parent 7a270a5 commit 607301a

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/buildQuery.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,11 @@ function calculatePrev(
217217
}
218218

219219
export default function buildQuery(formData: QueryFormData) {
220-
const { cols: groupby, time_comparison: timeComparison } = formData;
220+
const {
221+
cols: groupby,
222+
time_comparison: timeComparison,
223+
extra_form_data: extraFormData,
224+
} = formData;
221225

222226
const queryContextA = buildQueryContext(formData, baseQueryObject => [
223227
{
@@ -244,9 +248,11 @@ export default function buildQuery(formData: QueryFormData) {
244248
'comparator' in timeFilter &&
245249
typeof timeFilter.comparator === 'string'
246250
) {
247-
[testSince, testUntil] = getSinceUntil(
248-
timeFilter.comparator.toLocaleLowerCase(),
249-
);
251+
let timeRange = timeFilter.comparator.toLocaleLowerCase();
252+
if (extraFormData?.time_range) {
253+
timeRange = extraFormData.time_range;
254+
}
255+
[testSince, testUntil] = getSinceUntil(timeRange);
250256
}
251257

252258
let formDataB: QueryFormData;
@@ -277,11 +283,13 @@ export default function buildQuery(formData: QueryFormData) {
277283
formDataB = {
278284
...formData,
279285
adhoc_filters: queryBFilters,
286+
extra_form_data: {},
280287
};
281288
} else {
282289
formDataB = {
283290
...formData,
284291
adhoc_filters: formData.adhoc_custom,
292+
extra_form_data: {},
285293
};
286294
}
287295

superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/transformProps.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,15 @@ export default function transformProps(chartProps: ChartProps) {
112112

113113
let valueDifference: number | string = bigNumber - prevNumber;
114114

115-
const percentDifferenceNum = prevNumber
116-
? (bigNumber - prevNumber) / Math.abs(prevNumber)
117-
: 0;
115+
let percentDifferenceNum;
116+
117+
if (!bigNumber && !prevNumber) {
118+
percentDifferenceNum = 0;
119+
} else if (!bigNumber || !prevNumber) {
120+
percentDifferenceNum = bigNumber ? 1 : -1;
121+
} else {
122+
percentDifferenceNum = (bigNumber - prevNumber) / Math.abs(prevNumber);
123+
}
118124

119125
const compType = compTitles[formData.timeComparison];
120126
bigNumber = numberFormatter(bigNumber);

0 commit comments

Comments
 (0)