vega/vega-tooltip

Title/image special handling shouldn't be on by default (or at least should be documented and have a way to disable)

kanitw opened this issue · 6 comments

The following blocks in https://github.com/vega/vega-tooltip/blob/next/src/formatValue.ts#L19-25 seems pretty problematic for me

    if (title) {
      content += `<h2>${valueToHtml(title)}</h2>`;
    }

    if (image) {
      content += `<img src="${valueToHtml(image)}">`;
    }

doesn't seem to be documented and may cause unintended effect.

For example, if there is a field in the data source called title, it will automatically becomes "title" in the output even though users may not intend to do so.

image

spec -->

(Note: I need to add calculate to simulate that there is a field "title" in the example.)

I don't think we should do this by default since it will surprise people more.

cc: @domoritz @nyurik (You might have an idea why we had this block.)

I agree we should document the default handling of special fields and add an option to disable it. When we added it, it made sense as a quick way to have nicer tooltips.

I agree it's a nice feature to have, but I think it's not a good default since it's too magical that these two fields are treated inconsistently.

I don't feel strongly about it but I do like it as a default since it is hard for people to know how to configure the tooltips from a spec alone (many don't have direct access to Vega Tooltip in their applications).

many don't have direct access to Vega Tooltip in their applications

That's fair.

I think I'm ok with if the key is more esoteric like tooltipTitle, tooltip:title or __tooltipTitle__ or something. (same for image).

There are data tables with a field title everywhere (like movies title), so having this title by default seems pretty problematic.

I think what we can do is to introduce titleKey and imageKey config and default to our preferred format that's hard to collide (e.g., tooltip:title).

For existing applications that already rely on "title" and "image" as a trick can set titleKey to "title" if they prefer.

Agreed. For imageKey, it should be a set imageKeys since there can be more than one image.