Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(axis):null value item on category axis should be able to show tooltip #20777

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Justin-ZS
Copy link

Brief Information

This pull request is in the type of:

  • bug fixing
  • new feature
  • others

What does this PR do?

If the chart uses dataset/axis.encode, the null value items on category axis cannot trigger axis tooltip.(NG)
Try demo

contain(rank: OrdinalRawValue | OrdinalNumber): boolean {
rank = this.parse(rank);
return scaleHelper.contain(rank, this._extent)
&& this._ordinalMeta.categories[rank] != null;
}

This check will ignore null value items on category axis, although null is a valid value.

But if the chart uses axis.data, the null value items on category axis can trigger axis tooltip.
In this case, the axis.data will be parsed by getName -- null becomes "null".

static createByAxisModel(axisModel: Model): OrdinalMeta {
const option = axisModel.option;
const data = option.data;
const categories = data && map(data, getName);
return new OrdinalMeta({
categories: categories,
needCollect: !categories,
// deduplication is default in axis.
deduplication: option.dedplication !== false
});
};

Fixed issues

#20774

Details

截屏2025-02-21 18 10 48

Before: What was the problem?

After: How does it behave after the fixing?

Document Info

One of the following should be checked.

  • This PR doesn't relate to document changes
  • The document should be updated later
  • The document changes have been made in apache/echarts-doc#xxx

Misc

ZRender Changes

  • This PR depends on ZRender changes (ecomfe/zrender#xxx).

Related test cases or examples to use the new APIs

N.A.

Others

Merging options

  • Please squash the commits into a single one when merging.

Other information

Copy link

echarts-bot bot commented Feb 21, 2025

Thanks for your contribution!
The community will review it ASAP. In the meanwhile, please checkout the coding standard and Wiki about How to make a pull request.

@Justin-ZS
Copy link
Author

@100pah @Ovilia
Could you help to review the PR? Thanks!

@Ovilia
Copy link
Contributor

Ovilia commented Mar 10, 2025

@Justin-ZS Thanks for the contribution and sorry for the late reply. I'll review it now. 😄

Copy link
Contributor

The changes brought by this PR can be previewed at: https://echarts.apache.org/examples/editor?version=PR-20777@d0334da

Copy link
Contributor

@Ovilia Ovilia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When category value is null or undefined when not using dataset, it's considered as a string 'null' and 'undefined' so I think maybe it's best to align this behavior to this?

option = {
  xAxis: {
    type: 'category',
    data: ['Mon', null, undefined, 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260],
      type: 'line'
    }
  ]
};

The result of this PR is an empty string as category value now.

@Justin-ZS
Copy link
Author

When category value is null or undefined when not using dataset, it's considered as a string 'null' and 'undefined' so I think maybe it's best to align this behavior to this?

option = {
  xAxis: {
    type: 'category',
    data: ['Mon', null, undefined, 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260],
      type: 'line'
    }
  ]
};

The result of this PR is an empty string as category value now.

I actually prefer the current behavior of dataset/encode where null/undefined values are rendered as empty strings.
null/undefined are JavaScript keywords that represent empty or missing values, an empty string is more intuitive in most contexts.

Changing it could lead to unexpected issues when users upgrade to a new version.
They would need to implement additional logic to hide null/undefined values or consider i18n.

@Justin-ZS Justin-ZS requested a review from Ovilia March 10, 2025 07:04
@Ovilia
Copy link
Contributor

Ovilia commented Mar 10, 2025

Thanks for your feedback. @plainheart @100pah What do you think about this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants