You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/08/17 19:39:48 UTC
[superset] 04/04: fix: Date column in Heatmap is displayed as unix timestamp (#25009)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/superset.git
commit f63cb47f35000488985626e72efde5d164573134
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Thu Aug 17 11:24:40 2023 -0300
fix: Date column in Heatmap is displayed as unix timestamp (#25009)
---
.../legacy-plugin-chart-heatmap/src/Heatmap.js | 9 ++++++++-
.../src/controlPanel.tsx | 11 +++++++++++
.../src/transformProps.js | 22 +++++++++++++++++++---
3 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js
index 7d62622313..a6967301c6 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/Heatmap.js
@@ -99,9 +99,16 @@ function Heatmap(element, props) {
xScaleInterval,
yScaleInterval,
yAxisBounds,
+ xAxisFormatter,
+ yAxisFormatter,
} = props;
- const { records, extents } = data;
+ const { extents } = data;
+ const records = data.records.map(record => ({
+ ...record,
+ x: xAxisFormatter(record.x),
+ y: yAxisFormatter(record.y),
+ }));
const margin = {
top: 10,
diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx
index 3032654ba2..520c92018c 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx
+++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx
@@ -31,6 +31,7 @@ import {
sections,
sharedControls,
getStandardizedControls,
+ D3_TIME_FORMAT_DOCS,
} from '@superset-ui/chart-controls';
const sortAxisChoices = [
@@ -257,6 +258,16 @@ const config: ControlPanelConfig = {
},
],
['y_axis_format'],
+ [
+ {
+ name: 'time_format',
+ config: {
+ ...sharedControls.x_axis_time_format,
+ default: '%d/%m/%Y',
+ description: `${D3_TIME_FORMAT_DOCS}.`,
+ },
+ },
+ ],
[
{
name: 'sort_x_axis',
diff --git a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/transformProps.js b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/transformProps.js
index a6adf5f8b8..9ad6edaafd 100644
--- a/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/transformProps.js
+++ b/superset-frontend/plugins/legacy-plugin-chart-heatmap/src/transformProps.js
@@ -1,5 +1,3 @@
-import { getValueFormatter } from '@superset-ui/core';
-
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,6 +16,12 @@ import { getValueFormatter } from '@superset-ui/core';
* specific language governing permissions and limitations
* under the License.
*/
+import {
+ GenericDataType,
+ getTimeFormatter,
+ getValueFormatter,
+} from '@superset-ui/core';
+
export default function transformProps(chartProps) {
const { width, height, formData, queriesData, datasource } = chartProps;
const {
@@ -38,7 +42,9 @@ export default function transformProps(chartProps) {
yscaleInterval,
yAxisBounds,
yAxisFormat,
+ timeFormat,
} = formData;
+ const { data = [], coltypes = [] } = queriesData[0];
const { columnFormats = {}, currencyFormats = {} } = datasource;
const valueFormatter = getValueFormatter(
metric,
@@ -46,10 +52,18 @@ export default function transformProps(chartProps) {
columnFormats,
yAxisFormat,
);
+ const xAxisFormatter =
+ coltypes[0] === GenericDataType.TEMPORAL
+ ? getTimeFormatter(timeFormat)
+ : String;
+ const yAxisFormatter =
+ coltypes[1] === GenericDataType.TEMPORAL
+ ? getTimeFormatter(timeFormat)
+ : String;
return {
width,
height,
- data: queriesData[0].data,
+ data,
bottomMargin,
canvasImageRendering,
colorScheme: linearColorScheme,
@@ -67,5 +81,7 @@ export default function transformProps(chartProps) {
yScaleInterval: parseInt(yscaleInterval, 10),
yAxisBounds,
valueFormatter,
+ xAxisFormatter,
+ yAxisFormatter,
};
}