You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ar...@apache.org on 2024/02/05 14:08:43 UTC

(superset) branch master updated: fix(plugins): Fix dashboard filter in Period Over Period KPI plugin (#27013)

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 607301ad56 fix(plugins): Fix dashboard filter in Period Over Period KPI plugin (#27013)
607301ad56 is described below

commit 607301ad569bd251ec53dabfcb69f6da3ed958ea
Author: Antonio Rivero <38...@users.noreply.github.com>
AuthorDate: Mon Feb 5 15:08:37 2024 +0100

    fix(plugins): Fix dashboard filter in Period Over Period KPI plugin (#27013)
---
 .../src/plugin/buildQuery.ts                             | 16 ++++++++++++----
 .../src/plugin/transformProps.ts                         | 12 +++++++++---
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/buildQuery.ts b/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/buildQuery.ts
index 202063c13c..aa0477e48f 100644
--- a/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/buildQuery.ts
@@ -217,7 +217,11 @@ function calculatePrev(
 }
 
 export default function buildQuery(formData: QueryFormData) {
-  const { cols: groupby, time_comparison: timeComparison } = formData;
+  const {
+    cols: groupby,
+    time_comparison: timeComparison,
+    extra_form_data: extraFormData,
+  } = formData;
 
   const queryContextA = buildQueryContext(formData, baseQueryObject => [
     {
@@ -244,9 +248,11 @@ export default function buildQuery(formData: QueryFormData) {
     'comparator' in timeFilter &&
     typeof timeFilter.comparator === 'string'
   ) {
-    [testSince, testUntil] = getSinceUntil(
-      timeFilter.comparator.toLocaleLowerCase(),
-    );
+    let timeRange = timeFilter.comparator.toLocaleLowerCase();
+    if (extraFormData?.time_range) {
+      timeRange = extraFormData.time_range;
+    }
+    [testSince, testUntil] = getSinceUntil(timeRange);
   }
 
   let formDataB: QueryFormData;
@@ -277,11 +283,13 @@ export default function buildQuery(formData: QueryFormData) {
     formDataB = {
       ...formData,
       adhoc_filters: queryBFilters,
+      extra_form_data: {},
     };
   } else {
     formDataB = {
       ...formData,
       adhoc_filters: formData.adhoc_custom,
+      extra_form_data: {},
     };
   }
 
diff --git a/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/transformProps.ts b/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/transformProps.ts
index 437641143c..80737f6032 100644
--- a/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-period-over-period-kpi/src/plugin/transformProps.ts
@@ -112,9 +112,15 @@ export default function transformProps(chartProps: ChartProps) {
 
   let valueDifference: number | string = bigNumber - prevNumber;
 
-  const percentDifferenceNum = prevNumber
-    ? (bigNumber - prevNumber) / Math.abs(prevNumber)
-    : 0;
+  let percentDifferenceNum;
+
+  if (!bigNumber && !prevNumber) {
+    percentDifferenceNum = 0;
+  } else if (!bigNumber || !prevNumber) {
+    percentDifferenceNum = bigNumber ? 1 : -1;
+  } else {
+    percentDifferenceNum = (bigNumber - prevNumber) / Math.abs(prevNumber);
+  }
 
   const compType = compTitles[formData.timeComparison];
   bigNumber = numberFormatter(bigNumber);