mirror of https://github.com/apache/superset.git
fix: Heatmap numeric sorting (#27360)
This commit is contained in:
parent
ae8ec9c2b4
commit
fe2f5a7be9
|
@ -177,15 +177,12 @@ function Heatmap(element, props) {
|
|||
}
|
||||
}
|
||||
|
||||
function ordScale(k, rangeBands, sortMethod) {
|
||||
function ordScale(k, rangeBands, sortMethod, formatter) {
|
||||
let domain = {};
|
||||
const actualKeys = {}; // hack to preserve type of keys when number
|
||||
records.forEach(d => {
|
||||
domain[d[k]] = (domain[d[k]] || 0) + d.v;
|
||||
actualKeys[d[k]] = d[k];
|
||||
});
|
||||
// Not using object.keys() as it converts to strings
|
||||
const keys = Object.keys(actualKeys).map(s => actualKeys[s]);
|
||||
const keys = Object.keys(domain).map(k => formatter(k));
|
||||
if (sortMethod === 'alpha_asc') {
|
||||
domain = keys.sort(cmp);
|
||||
} else if (sortMethod === 'alpha_desc') {
|
||||
|
@ -252,10 +249,10 @@ function Heatmap(element, props) {
|
|||
|
||||
const fp = getNumberFormatter(NumberFormats.PERCENT_2_POINT);
|
||||
|
||||
const xScale = ordScale('x', null, sortXAxis);
|
||||
const yScale = ordScale('y', null, sortYAxis);
|
||||
const xRbScale = ordScale('x', [0, hmWidth], sortXAxis);
|
||||
const yRbScale = ordScale('y', [hmHeight, 0], sortYAxis);
|
||||
const xScale = ordScale('x', null, sortXAxis, xAxisFormatter);
|
||||
const yScale = ordScale('y', null, sortYAxis, yAxisFormatter);
|
||||
const xRbScale = ordScale('x', [0, hmWidth], sortXAxis, xAxisFormatter);
|
||||
const yRbScale = ordScale('y', [hmHeight, 0], sortYAxis, yAxisFormatter);
|
||||
const X = 0;
|
||||
const Y = 1;
|
||||
const heatmapDim = [xRbScale.domain().length, yRbScale.domain().length];
|
||||
|
|
|
@ -57,11 +57,15 @@ export default function transformProps(chartProps) {
|
|||
const xAxisFormatter =
|
||||
coltypes[0] === GenericDataType.Temporal
|
||||
? getTimeFormatter(timeFormat)
|
||||
: String;
|
||||
: coltypes[0] === GenericDataType.Numeric
|
||||
? Number
|
||||
: String;
|
||||
const yAxisFormatter =
|
||||
coltypes[1] === GenericDataType.Temporal
|
||||
? getTimeFormatter(timeFormat)
|
||||
: String;
|
||||
: coltypes[1] === GenericDataType.Numeric
|
||||
? Number
|
||||
: String;
|
||||
return {
|
||||
width,
|
||||
height,
|
||||
|
|
Loading…
Reference in New Issue