This is an automated email from the ASF dual-hosted git repository.
rusackas 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 64df96be00a fix(nvd3): invoke shiftMetric() in TimePivot
formDataOverrides (#41916)
64df96be00a is described below
commit 64df96be00a9fa967beef39bc35394d5ab990123
Author: Durgaprasad M L <[email protected]>
AuthorDate: Mon Jul 13 23:14:50 2026 +0530
fix(nvd3): invoke shiftMetric() in TimePivot formDataOverrides (#41916)
---
.../src/TimePivot/controlPanel.ts | 5 +-
.../test/TimePivot/controlPanel.test.ts | 57 ++++++++++++++++++++++
2 files changed, 60 insertions(+), 2 deletions(-)
diff --git
a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
index da9aaffe3b6..1a338a91e63 100644
---
a/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
+++
b/superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts
@@ -17,6 +17,7 @@
* under the License.
*/
import { t } from '@apache-superset/core/translation';
+import { QueryFormData } from '@superset-ui/core';
import {
ControlPanelConfig,
D3_FORMAT_OPTIONS,
@@ -124,9 +125,9 @@ const config: ControlPanelConfig = {
clearable: false,
},
},
- formDataOverrides: formData => ({
+ formDataOverrides: (formData: QueryFormData) => ({
...formData,
- metric: getStandardizedControls().shiftMetric,
+ metric: getStandardizedControls().shiftMetric(),
}),
};
diff --git
a/superset-frontend/plugins/legacy-preset-chart-nvd3/test/TimePivot/controlPanel.test.ts
b/superset-frontend/plugins/legacy-preset-chart-nvd3/test/TimePivot/controlPanel.test.ts
new file mode 100644
index 00000000000..1830601713a
--- /dev/null
+++
b/superset-frontend/plugins/legacy-preset-chart-nvd3/test/TimePivot/controlPanel.test.ts
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { SqlaFormData } from '@superset-ui/core';
+import * as ChartControls from '@superset-ui/chart-controls';
+import controlPanel from '../../src/TimePivot/controlPanel';
+
+const { __mockShiftMetric } = ChartControls as typeof ChartControls & {
+ __mockShiftMetric: jest.Mock;
+};
+
+jest.mock('@superset-ui/core', () => ({
+ ...jest.requireActual('@superset-ui/core'),
+ t: (str: string) => str,
+}));
+
+jest.mock('@superset-ui/chart-controls', () => {
+ const original = jest.requireActual('@superset-ui/chart-controls');
+ const mockShiftMetric = jest.fn(() => 'shiftedMetric');
+ return {
+ ...original,
+ getStandardizedControls: () => ({
+ shiftMetric: mockShiftMetric,
+ }),
+ __mockShiftMetric: mockShiftMetric,
+ };
+});
+
+describe('TimePivot Control Panel Config', () => {
+ test('should override formData metric using getStandardizedControls', () => {
+ const dummyFormData = { someProp: 'test' } as unknown as SqlaFormData;
+ const newFormData = controlPanel.formDataOverrides!(dummyFormData);
+
+ // The original properties are spread correctly.
+ expect(newFormData.someProp).toBe('test');
+ // The metric property should be replaced by the output of shiftMetric.
+ expect(newFormData.metric).toBe('shiftedMetric');
+
+ // Ensure that the mockShiftMetric function was called.
+ expect(__mockShiftMetric).toHaveBeenCalled();
+ });
+});