You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2022/09/20 20:50:22 UTC

[superset] 12/29: fix(plugin-chart-handlebars): order by control not work (#21005)

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

elizabeth pushed a commit to branch 2.0-test
in repository https://gitbox.apache.org/repos/asf/superset.git

commit c3e04d7ebf1b7703d108a3658d4ccd60f1d7de49
Author: Stephen Liu <75...@qq.com>
AuthorDate: Mon Aug 22 15:00:34 2022 +0800

    fix(plugin-chart-handlebars): order by control not work (#21005)
    
    (cherry picked from commit e70699fb433849e07af81ea1812f20aa271d028e)
---
 .../plugins/plugin-chart-handlebars/src/plugin/buildQuery.ts   | 10 +++++++---
 .../plugin-chart-handlebars/src/plugin/controlPanel.tsx        |  3 ++-
 .../plugin-chart-handlebars/src/plugin/controls/orderBy.tsx    |  8 +++++++-
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/buildQuery.ts b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/buildQuery.ts
index 36bcb96515..3dc7bf87a3 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/buildQuery.ts
@@ -16,15 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { buildQueryContext, QueryFormData } from '@superset-ui/core';
+import {
+  buildQueryContext,
+  normalizeOrderBy,
+  QueryFormData,
+} from '@superset-ui/core';
 
 export default function buildQuery(formData: QueryFormData) {
-  const { metric, sort_by_metric, groupby } = formData;
+  const { groupby } = formData;
 
   return buildQueryContext(formData, baseQueryObject => [
     {
       ...baseQueryObject,
-      ...(sort_by_metric && { orderby: [[metric, false]] }),
+      orderby: normalizeOrderBy(baseQueryObject).orderby,
       ...(groupby && { groupby }),
     },
   ]);
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx
index da0ba7d589..aa4efe6212 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controlPanel.tsx
@@ -61,9 +61,10 @@ const config: ControlPanelConfig = {
         [metricsControlSetItem, allColumnsControlSetItem],
         [percentMetricsControlSetItem],
         [timeSeriesLimitMetricControlSetItem, orderByControlSetItem],
+        [orderDescendingControlSetItem],
         serverPaginationControlSetRow,
         [rowLimitControlSetItem, serverPageLengthControlSetItem],
-        [includeTimeControlSetItem, orderDescendingControlSetItem],
+        [includeTimeControlSetItem],
         [showTotalsControlSetItem],
         ['adhoc_filters'],
         emitFilterControl,
diff --git a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx
index 93002bd49b..d2f52e8e9b 100644
--- a/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx
+++ b/superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx
@@ -18,6 +18,7 @@
  */
 import { ControlSetItem, Dataset } from '@superset-ui/chart-controls';
 import { t } from '@superset-ui/core';
+import { isEmpty } from 'lodash';
 import { isAggMode, isRawMode } from './shared';
 
 export const orderByControlSetItem: ControlSetItem = {
@@ -45,7 +46,12 @@ export const orderDescendingControlSetItem: ControlSetItem = {
     label: t('Sort descending'),
     default: true,
     description: t('Whether to sort descending or ascending'),
-    visibility: isAggMode,
+    visibility: ({ controls }) =>
+      !!(
+        isAggMode({ controls }) &&
+        controls?.timeseries_limit_metric.value &&
+        !isEmpty(controls?.timeseries_limit_metric.value)
+      ),
     resetOnHide: false,
   },
 };