[Dashboards] Fix chart axis label behavior (#17011)
- Axis labels now respect `axisNameDisplay` config when chart has no
data (previously always showed both) - fixed for bar and line charts
- Horizontal bar charts now correctly map axis settings to visual
positions:
- "X axis" setting → bottom axis (value)
- "Y axis" setting → left axis (category)
video QA
https://github.com/user-attachments/assets/5bf32294-9a5e-4aa6-b3fd-0d4e33608d14
This commit is contained in:
+24
-23
@@ -95,35 +95,36 @@ export const transformGroupByDataToBarChartData = ({
|
||||
const queryResultGqlFieldName =
|
||||
getGroupByQueryResultGqlFieldName(objectMetadataItem);
|
||||
const rawResults = groupByData?.[queryResultGqlFieldName];
|
||||
const hasNoData =
|
||||
!isDefined(groupByData) ||
|
||||
!isDefined(rawResults) ||
|
||||
!Array.isArray(rawResults) ||
|
||||
rawResults.length === 0;
|
||||
|
||||
const showXAxis =
|
||||
hasNoData ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.X ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH;
|
||||
|
||||
const showYAxis =
|
||||
hasNoData ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.Y ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH;
|
||||
|
||||
const xAxisLabel =
|
||||
showXAxis && isDefined(groupByFieldX) ? groupByFieldX.label : undefined;
|
||||
|
||||
const yAxisLabel =
|
||||
showYAxis && isDefined(aggregateField)
|
||||
? `${getAggregateOperationLabel(configuration.aggregateOperation)} of ${aggregateField.label}`
|
||||
: undefined;
|
||||
|
||||
const layout =
|
||||
configuration.layout === BarChartLayout.HORIZONTAL
|
||||
? BarChartLayout.HORIZONTAL
|
||||
: BarChartLayout.VERTICAL;
|
||||
|
||||
const isHorizontal = layout === BarChartLayout.HORIZONTAL;
|
||||
|
||||
const showCategoryLabel = isHorizontal
|
||||
? configuration.axisNameDisplay === AxisNameDisplay.Y ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH
|
||||
: configuration.axisNameDisplay === AxisNameDisplay.X ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH;
|
||||
|
||||
const showValueLabel = isHorizontal
|
||||
? configuration.axisNameDisplay === AxisNameDisplay.X ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH
|
||||
: configuration.axisNameDisplay === AxisNameDisplay.Y ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH;
|
||||
|
||||
const xAxisLabel =
|
||||
showCategoryLabel && isDefined(groupByFieldX)
|
||||
? groupByFieldX.label
|
||||
: undefined;
|
||||
|
||||
const yAxisLabel =
|
||||
showValueLabel && isDefined(aggregateField)
|
||||
? `${getAggregateOperationLabel(configuration.aggregateOperation)} of ${aggregateField.label}`
|
||||
: undefined;
|
||||
|
||||
if (!isDefined(groupByData)) {
|
||||
return {
|
||||
...EMPTY_BAR_CHART_RESULT,
|
||||
|
||||
-7
@@ -82,19 +82,12 @@ export const transformGroupByDataToLineChartData = ({
|
||||
const queryResultGqlFieldName =
|
||||
getGroupByQueryResultGqlFieldName(objectMetadataItem);
|
||||
const rawResults = groupByData?.[queryResultGqlFieldName];
|
||||
const hasNoData =
|
||||
!isDefined(groupByData) ||
|
||||
!isDefined(rawResults) ||
|
||||
!Array.isArray(rawResults) ||
|
||||
rawResults.length === 0;
|
||||
|
||||
const showXAxis =
|
||||
hasNoData ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.X ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH;
|
||||
|
||||
const showYAxis =
|
||||
hasNoData ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.Y ||
|
||||
configuration.axisNameDisplay === AxisNameDisplay.BOTH;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user