fix: Resolve heatmap axis sorting and borderColor issues
- Fix undefined borderColor error by providing fallback to 'transparent'
- Fix axis sorting by using correct camelCase field names (sortXAxis/sortYAxis)
- Fix sorting direction logic by using endsWith('asc') instead of includes('asc')
- Fix TypeScript errors by removing unused import and handling undefined groupby
- All heatmap tests now passing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
diff --git a/.claude_rc b/.claude_rc
new file mode 100644
index 0000000..cba4108
--- /dev/null
+++ b/.claude_rc
@@ -0,0 +1,40 @@
+# Claude Code RC for issue34531
+
+This is a claudette-managed Apache Superset development environment.
+
+## Project: issue34531
+- Worktree Path: /Users/evan_1/.claudette/worktrees/issue34531
+- Frontend Port: 9003
+- Frontend URL: http://localhost:9003
+
+## Quick Commands
+
+Start services:
+```bash
+claudette docker up
+```
+
+Access frontend:
+```bash
+open http://localhost:9003
+```
+
+Run tests:
+```bash
+# Backend
+pytest tests/unit_tests/
+
+# Frontend
+cd superset-frontend && npm test
+```
+
+## Environment Details
+- Python venv: `.venv/` (auto-activated in claudette shell)
+- Node modules: `superset-frontend/node_modules/`
+- Docker prefix: `issue34531_`
+
+## Development Tips
+- Always use `claudette shell` to work in this project
+- Run `pre-commit run --all-files` before committing
+- Use `claudette docker` instead of docker-compose directly
+- The frontend dev server runs on port 9003 to avoid conflicts
diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts
index 2133157..3dc60e2 100644
--- a/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts
+++ b/superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/transformProps.ts
@@ -19,7 +19,6 @@
import {
GenericDataType,
NumberFormats,
- QueryFormColumn,
getColumnLabel,
getMetricLabel,
getSequentialSchemeRegistry,
@@ -100,13 +99,13 @@
yAxisFormat,
xAxisTimeFormat,
currencyFormat,
- sort_x_axis: sortXAxis,
- sort_y_axis: sortYAxis,
+ sortXAxis,
+ sortYAxis,
} = formData;
const metricLabel = getMetricLabel(metric);
const xAxisLabel = getColumnLabel(xAxis);
// groupby is overridden to be a single value
- const yAxisLabel = getColumnLabel(groupby as unknown as QueryFormColumn);
+ const yAxisLabel = getColumnLabel(groupby?.[0] || '');
const { data, colnames, coltypes } = queriesData[0];
const { columnFormats = {}, currencyFormats = {} } = datasource;
const colorColumn = normalized ? 'rank' : metricLabel;
@@ -160,7 +159,7 @@
}
const isMetricSort = sortConfig.includes('value');
- const isAscending = sortConfig.includes('asc');
+ const isAscending = sortConfig.endsWith('asc');
if (isMetricSort) {
// Create a map of axis value to metric sum for sorting by metric
@@ -236,10 +235,12 @@
},
},
itemStyle: {
- borderColor: addAlpha(
- rgbToHex(borderColor.r, borderColor.g, borderColor.b),
- borderColor.a,
- ),
+ borderColor: borderColor
+ ? addAlpha(
+ rgbToHex(borderColor.r, borderColor.g, borderColor.b),
+ borderColor.a,
+ )
+ : 'transparent',
borderWidth,
},
emphasis: {