fix(legend): hierarchical legend order should follow the tree paths#947
fix(legend): hierarchical legend order should follow the tree paths#947monfera merged 20 commits intoelastic:masterfrom
Conversation
…e narrowed to number
Codecov Report
@@ Coverage Diff @@
## master #947 +/- ##
==========================================
+ Coverage 70.13% 70.68% +0.54%
==========================================
Files 343 359 +16
Lines 11036 10646 -390
Branches 2394 2055 -339
==========================================
- Hits 7740 7525 -215
+ Misses 3282 3036 -246
- Partials 14 85 +71
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
| }, {}); | ||
|
|
||
| const { flatLegend, legendMaxDepth, legendPosition } = settings; | ||
| const uniqueNames = new Set(map(({ dataName, fillColor }) => makeKey(dataName, fillColor), quadViewModel)); |
There was a problem hiding this comment.
Here, it could've been
const uniqueNames = new Set(quadViewModel.map(({ dataName, fillColor }) => makeKey(dataName, fillColor)));
the only difference is that this version would have materialized an array. Maybe we can start adding a couple of utils for non-materializing filter, reduce etc.
| const key = [dataName, fillColor].join('---'); | ||
| if (uniqueNames[key] > 1 && excluded.has(key)) { | ||
| const key = makeKey(dataName, fillColor); | ||
| if (uniqueNames.has(key) && excluded.has(key)) { |
There was a problem hiding this comment.
Eventually we should avoid this filter loop, relying on a new operator that intersects two collections eg. two Sets.
A few ones can be added, eg. intersect, union, subtract
markov00
left a comment
There was a problem hiding this comment.
Looks good to me, I've added few comments.
I've noticed that the new introduced visual regression tests baseline are not committed, you should commit them and everything else should be fine
| /** @internal */ | ||
| export function isTooltipType(config: TooltipType | TooltipProps): config is TooltipType { | ||
| return typeof config === 'string'; | ||
| return typeof config !== 'object'; // TooltipType is 'vertical'|'cross'|'follow'|'none' while TooltipProps is object |
| const getHighlightedLegendItemKey = (state: GlobalChartState) => state.interactions.highlightedLegendItemKey; | ||
|
|
||
| /** @internal */ | ||
| // why is it called highlighted... when it's a legend hover related thing, not a hover over the slices? |
There was a problem hiding this comment.
Are you referring to the fact that we don't describe that as a legend related thing?
Something like getLegendHighlightedSectorsSelector seems to sound better then the current one
nickofthyme
left a comment
There was a problem hiding this comment.
LGTM, Tested locally. This looks to be a solution to fix #939.
| rules: { | ||
| /** | ||
| * depricated to be deleted | ||
| * deprecated to be deleted |
# [24.5.0](v24.4.0...v24.5.0) (2021-01-30) ### Bug Fixes * add theme min radius to point shape ([#996](#996)) ([eb37175](eb37175)) * align tooltip z-index to EUI tooltip z-index ([#931](#931)) ([ffd626b](ffd626b)) * chart state and series functions cleanup ([#989](#989)) ([944ac6c](944ac6c)) * create unique ids for dot icons ([#971](#971)) ([e1ce768](e1ce768)) * external tooltip legend extra value sync ([#993](#993)) ([13ad05a](13ad05a)) * **legend:** disable focus and keyboard navigation for legend in partition ch… ([#952](#952)) ([03bd2f7](03bd2f7)) * **legend:** hierarchical legend order should follow the tree paths ([#947](#947)) ([f9218ad](f9218ad)), closes [#944](#944) * **legend:** remove ids for circles ([#973](#973)) ([b3f4f90](b3f4f90)) ### Features * **cursor:** improve theme styling for crosshair ([#980](#980)) ([6c4dafd](6c4dafd)) * **legend:** display pie chart legend extra ([#939](#939)) ([d14de01](d14de01)) * **legend:** add keyboard navigation ([#880](#880)) ([87c227d](87c227d)) * **partition:** Flame and icicle chart ([#965](#965)) ([3df73d0](3df73d0)) * **partition:** legend hover options ([#978](#978)) ([f810d94](f810d94)) * **xy:** support multiple point shapes on line, area and bubble charts ([#988](#988)) ([1392b7d](1392b7d))
|
🎉 This PR is included in version 24.5.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
# [24.5.0](elastic/elastic-charts@v24.4.0...v24.5.0) (2021-01-30) ### Bug Fixes * add theme min radius to point shape ([opensearch-project#996](elastic/elastic-charts#996)) ([98089a9](elastic/elastic-charts@98089a9)) * align tooltip z-index to EUI tooltip z-index ([opensearch-project#931](elastic/elastic-charts#931)) ([f7f1f6f](elastic/elastic-charts@f7f1f6f)) * chart state and series functions cleanup ([opensearch-project#989](elastic/elastic-charts#989)) ([42a7af0](elastic/elastic-charts@42a7af0)) * create unique ids for dot icons ([opensearch-project#971](elastic/elastic-charts#971)) ([0b3e00f](elastic/elastic-charts@0b3e00f)) * external tooltip legend extra value sync ([opensearch-project#993](elastic/elastic-charts#993)) ([7e1096e](elastic/elastic-charts@7e1096e)) * **legend:** disable focus and keyboard navigation for legend in partition ch… ([opensearch-project#952](elastic/elastic-charts#952)) ([dfff3e2](elastic/elastic-charts@dfff3e2)) * **legend:** hierarchical legend order should follow the tree paths ([opensearch-project#947](elastic/elastic-charts#947)) ([7b70186](elastic/elastic-charts@7b70186)), closes [opensearch-project#944](elastic/elastic-charts#944) * **legend:** remove ids for circles ([opensearch-project#973](elastic/elastic-charts#973)) ([ed98481](elastic/elastic-charts@ed98481)) ### Features * **cursor:** improve theme styling for crosshair ([opensearch-project#980](elastic/elastic-charts#980)) ([0248ad6](elastic/elastic-charts@0248ad6)) * **legend:** display pie chart legend extra ([opensearch-project#939](elastic/elastic-charts#939)) ([672a4df](elastic/elastic-charts@672a4df)) * **legend:** add keyboard navigation ([opensearch-project#880](elastic/elastic-charts#880)) ([b471a94](elastic/elastic-charts@b471a94)) * **partition:** Flame and icicle chart ([opensearch-project#965](elastic/elastic-charts#965)) ([9e8b1f7](elastic/elastic-charts@9e8b1f7)) * **partition:** legend hover options ([opensearch-project#978](elastic/elastic-charts#978)) ([acd1339](elastic/elastic-charts@acd1339)) * **xy:** support multiple point shapes on line, area and bubble charts ([opensearch-project#988](elastic/elastic-charts#988)) ([4f23b4f](elastic/elastic-charts@4f23b4f))
Summary
Hierarchical legends may currently occur with sunburst and treemap charts, so labeled as partition too.
Actual fix is in the last commit, the preceding ones are just a pass of incremental updates to naturally bump into what needed changing.
The same mock as in the above issue:

Checklist
src/index.ts(and stories only import from../srcexcept for test data & storybook)