From 12b0f5c1323bf95ebaa0b65b1ff70de1331c2d23 Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 21 Jun 2021 13:12:35 -0400 Subject: [PATCH 1/3] in legend implement group titles --- src/components/legend/draw.js | 40 +++++++--- src/components/legend/get_legend_data.js | 22 ++++++ src/components/legend/handle_click.js | 2 + src/plots/attributes.js | 18 +++++ src/plots/plots.js | 7 ++ .../baselines/legendgroup-titles-pie.png | Bin 0 -> 19362 bytes test/image/baselines/legendgroup-titles.png | Bin 0 -> 16756 bytes test/image/mocks/legendgroup-titles-pie.json | 73 ++++++++++++++++++ test/image/mocks/legendgroup-titles.json | 64 +++++++++++++++ 9 files changed, 216 insertions(+), 10 deletions(-) create mode 100644 test/image/baselines/legendgroup-titles-pie.png create mode 100644 test/image/baselines/legendgroup-titles.png create mode 100644 test/image/mocks/legendgroup-titles-pie.json create mode 100644 test/image/mocks/legendgroup-titles.json diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js index 6b6e783a68b..561022d82d6 100644 --- a/src/components/legend/draw.js +++ b/src/components/legend/draw.js @@ -393,20 +393,26 @@ function drawTexts(g, gd, legendObj) { var isEditable = !legendObj._inHover && gd._context.edits.legendText && !isPieLike; var maxNameLength = legendObj._maxNameLength; - var name; - if(!legendObj.entries) { - name = isPieLike ? legendItem.label : trace.name; - if(trace._meta) { - name = Lib.templateString(name, trace._meta); - } + var name, font; + if(legendItem.groupTitle) { + name = legendItem.groupTitle.text; + font = legendItem.groupTitle.font; } else { - name = legendItem.text; + font = legendObj.font; + if(!legendObj.entries) { + name = isPieLike ? legendItem.label : trace.name; + if(trace._meta) { + name = Lib.templateString(name, trace._meta); + } + } else { + name = legendItem.text; + } } var textEl = Lib.ensureSingle(g, 'text', 'legendtext'); textEl.attr('text-anchor', 'start') - .call(Drawing.font, legendObj.font) + .call(Drawing.font, font) .text(isEditable ? ensureLength(name, maxNameLength) : name); var textGap = legendObj.itemwidth + constants.itemGap * 2; @@ -512,7 +518,15 @@ function computeTextDimensions(g, gd, legendObj, aTitle) { var mathjaxNode = mathjaxGroup.node(); if(!legendObj) legendObj = gd._fullLayout.legend; var bw = legendObj.borderwidth; - var lineHeight = (aTitle === MAIN_TITLE ? legendObj.title : legendObj).font.size * LINE_SPACING; + var font; + if(aTitle === MAIN_TITLE) { + font = legendObj.title.font; + } else if(legendItem.groupTitle) { + font = legendItem.groupTitle.font; + } else { + font = legendObj.font; + } + var lineHeight = font.size * LINE_SPACING; var height, width; if(mathjaxNode) { @@ -549,8 +563,14 @@ function computeTextDimensions(g, gd, legendObj, aTitle) { bw + lineHeight ); } else { // legend item + var x = constants.itemGap * 2 + legendObj.itemwidth; + if(legendItem.groupTitle) { + x = constants.itemGap; + width -= legendObj.itemwidth; + } + svgTextUtils.positionText(textEl, - legendObj.itemwidth + constants.itemGap * 2, + x, -lineHeight * ((textLines - 1) / 2 - 0.3) ); } diff --git a/src/components/legend/get_legend_data.js b/src/components/legend/get_legend_data.js index f5a7b19fbbb..a01d45753a1 100644 --- a/src/components/legend/get_legend_data.js +++ b/src/components/legend/get_legend_data.js @@ -119,6 +119,28 @@ module.exports = function getLegendData(calcdata, opts) { legendData[i].sort(orderFn2); if(reversed) legendData[i].reverse(); + var firstItem = legendData[i][0]; + + var groupTitle = null; + // set group title text + for(j = 0; j < legendData[i].length; j++) { + var gt = legendData[i][j].trace.legendgrouptitle; + if(gt && gt.text) { + groupTitle = gt; + break; + } + } + + if(groupTitle) { + legendData[i].unshift({ + i: -1, + groupTitle: groupTitle, + trace: { + showlegend: firstItem.trace.showlegend + } + }); + } + // rearrange lgroupToTraces into a d3-friendly array of arrays for(j = 0; j < legendData[i].length; j++) { legendData[i][j] = [ diff --git a/src/components/legend/handle_click.js b/src/components/legend/handle_click.js index b8683060a68..8c33fb975de 100644 --- a/src/components/legend/handle_click.js +++ b/src/components/legend/handle_click.js @@ -32,6 +32,8 @@ module.exports = function handleClick(g, gd, numClicks) { []; var legendItem = g.data()[0][0]; + if(legendItem.groupTitle) return; // no click on group legends for now + var fullData = gd._fullData; var fullTrace = legendItem.trace; var legendgroup = fullTrace.legendgroup; diff --git a/src/plots/attributes.js b/src/plots/attributes.js index 2b819ea95a3..f90582ec200 100644 --- a/src/plots/attributes.js +++ b/src/plots/attributes.js @@ -1,5 +1,6 @@ 'use strict'; +var fontAttrs = require('./font_attributes'); var fxAttrs = require('../components/fx/attributes'); module.exports = { @@ -41,6 +42,23 @@ module.exports = { 'when toggling legend items.' ].join(' ') }, + legendgrouptitle: { + text: { + valType: 'string', + dflt: '', + editType: 'style', + description: [ + 'Sets the title of the legend group.' + ].join(' ') + }, + font: fontAttrs({ + editType: 'style', + description: [ + 'Sets this legend group\'s title font.' + ].join(' '), + }), + editType: 'style', + }, legendrank: { valType: 'number', dflt: 1000, diff --git a/src/plots/plots.js b/src/plots/plots.js index 9a51b1f201b..b0c4fbfce90 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -1309,6 +1309,13 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac ); coerce('legendgroup'); + var titleText = coerce('legendgrouptitle.text'); + if(titleText) { + Lib.coerceFont(coerce, 'legendgrouptitle.font', Lib.extendFlat({}, layout.font, { + size: Math.round(layout.font.size * 1.1) // default to larger font size + })); + } + coerce('legendrank'); traceOut._dfltShowLegend = true; diff --git a/test/image/baselines/legendgroup-titles-pie.png b/test/image/baselines/legendgroup-titles-pie.png new file mode 100644 index 0000000000000000000000000000000000000000..8decf457411375cc8242811e095d01a1a67b4578 GIT binary patch literal 19362 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/legendgroup-titles.png b/test/image/baselines/legendgroup-titles.png new file mode 100644 index 0000000000000000000000000000000000000000..22087afe5b262c1349315b33519ab2694192a8df GIT binary patch literal 16756 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 xK$VDM^r9%0AXNgroup", + "font": { + "family": "Raleway", + "size": 14 + } + } + }, + { + "y": [4], + "legendgroup": "G3", + "legendgrouptitle": { + "text": "Third group" + } + }, + { + "y": [5], + "legendgroup": "G3" + } + ], + "layout": { + "title": { + "text": "legend group titles" + }, + "margin": { + "t": 50, + "b": 25, + "l": 25, + "r": 25 + }, + "width": 300, + "height": 300, + "yaxis": { + "autorange": "reversed" + }, + "legend": { + "bgcolor": "lightblue", + "title": { + "text": "" + } + }, + "hovermode": "x unified" + } +} From 88c7c5404d8bf905035137e6901f30a99858d98e Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 21 Jun 2021 17:49:05 -0400 Subject: [PATCH 2/3] reverse items after getting group title --- src/components/legend/get_legend_data.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/legend/get_legend_data.js b/src/components/legend/get_legend_data.js index a01d45753a1..7d236ae7617 100644 --- a/src/components/legend/get_legend_data.js +++ b/src/components/legend/get_legend_data.js @@ -117,12 +117,11 @@ module.exports = function getLegendData(calcdata, opts) { // sort considering trace.legendrank and legend.traceorder legendData[i].forEach(function(a, k) { a._preSort = k; }); legendData[i].sort(orderFn2); - if(reversed) legendData[i].reverse(); var firstItem = legendData[i][0]; var groupTitle = null; - // set group title text + // get group title text for(j = 0; j < legendData[i].length; j++) { var gt = legendData[i][j].trace.legendgrouptitle; if(gt && gt.text) { @@ -131,7 +130,11 @@ module.exports = function getLegendData(calcdata, opts) { } } + // reverse order + if(reversed) legendData[i].reverse(); + if(groupTitle) { + // set group title text legendData[i].unshift({ i: -1, groupTitle: groupTitle, From 42895325fc0f623b9c6a6ae09505b10ed3572461 Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 21 Jun 2021 18:09:03 -0400 Subject: [PATCH 3/3] improve image test legendrank reversed and group title --- test/image/baselines/legendrank.png | Bin 15023 -> 16792 bytes test/image/baselines/legendrank2.png | Bin 10898 -> 12937 bytes test/image/mocks/legendrank.json | 11 +++++++---- test/image/mocks/legendrank2.json | 15 ++++++++++----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/test/image/baselines/legendrank.png b/test/image/baselines/legendrank.png index 2f5d879126edfdadaff50a5f98b3fdc2b223aacd..cbbf279fbcaef82d75533eeaf605b6c505572980 100644 GIT binary patch literal 16792 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
YDax`N-%#Pq1hz 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 literal 15023 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 diff --git a/test/image/baselines/legendrank2.png b/test/image/baselines/legendrank2.png index 35261255629d82e2327bdc95bd4535d1df42b47f..7601f6a9e399fe612b3efdea2c1452e49e3f7cc3 100644 GIT binary patch literal 12937 zcmdseS5#A9+h-CJx)hNBA|0fKs)AH0B2{_`C=i--5fBJXic$on7ZnAO-b0g)p*Inv zD82Vy1QY~k=l#Fmd~-4Dn^|ktT+Cc>k#kN?&e?lE`}s9q=xC{2B)dWefj};*sov3p zK%gkX9|;jS;u8?<34yRd)b1!4V9mGQ6IWht{~k)E;7%E0)6MvtRmT7uq20~F#=#NK z#i`b<(5*11cA16_&Z+=^K^4mz62YMWhe8o?D9P5dA3~dM+mmXtL$X6t6;6Ukks&j~ z#*Lp6xmup->X+&1>3L8FL1a2mCf?Wxe0ei(Srquliy%Q=fzf?{ebNoWm-p$EWrBm$ z=t?NRJi<8>5^S5AVWpA}p<~0@UjS!D??Pd{;!5q&df)=gH=;ZU9qttjp6n79$(#){ z2*Q87r~~E4FoC;HP|!)MBk~}@%1j?%26%CB*H4W6UWwodU{T`oh`b<|%WOF3>js;= z;OF5;7s9hm@XBMx9_Eeef}bZrjYIyQelTaN3lr6@DNoN%x>wQzh1Q00tJO-kCi-Ok zj=FG`tu}*MYVkLnj84rXT79)JV>a@nMO~D`W!9ZG9WNR8JD6Nm-`;TGn7DQSARkNw z?E)ArF`dnvd@z!hU49$i1@q17KYe*8sW0w2jUuNPN-Q)kEwEU29xLzOo~mDp5^jpU zKup=y9z{PgJYTz#mH?h&dSpGE^(ilp*1OoivkeO|@9hV_x2k7`g-`yT&HPoH_~c?X zblVkgTIHD3a6Ij||NXwJT6-j2qj`6&$BNC#&$a!9nA<%TfoI%qZf+$D0}ub6pCJNn z`5hHC?Dq)lr~mz<^7Q<-ozLZhY z>E~!R>@Z0@Dq43P%zAMmqcin(`e3qJ9@M(W-*U6^JYbRaHQ+ZcL9GpD>;L_`6Zlsk^X{v7@aBb5kSH)68qFbykyq~| zT+Jn){;6p=JDP~U9r%>-*5eOSUun^h#of8qY}c74y=-;5bmL$t@D6;gO}}&2TO;WN zY!1n#WY=!`|z-0r0guvfJsDHY)hFv6c45C?wqf^CQ3h+ZXOC_~r)SE#>pt=8^a_J8y6fPux zf*vQ*RD8eM=(Y%z%x=&XX}tgXaK2+hr6^)pB#i3zAKd0tz40r~ps_q%PA$>aniY~F zk+z|rr0aHCOYQieGrFz2`MQ~5`|ukJ9eq@pDzc^~bx-pBcbkbrKFbDst`4w!UYK3J zYt}^ebZT#ds-Kv8kWB7^e2=DC6Ro~@BG ze3M5#vCD9)?FFsv#`oeL>0p(}RKKoR_We=o7{pEWW|+Y1x&SD-{LWCWcEdT|Psw6W zf=p(_E>jSvKKoZO&V7~{DvoCWeV6KBaHG}n+MMUu$q%4-NgZ1%F^B6T`=>jf3#~=(wN;YuF=>w6 zK+oPiTg{AVfH{5psO(6VF(qH~ZEg>*vHv{6j(GMPG)K~XQD<5oyq00$HSM$_nH(9P z{hAYq{L?>soqGlHD53y_4OHm(V>490S3QY;jmRh%hPb>t8Aa6WFqD(OMtAc0>6tG= z&)+yh5#h5{^<&szq{Me?4fu;l78BAkfl)@WJgI&wY;BKRSK@BIAibY!?uDV&n5 z0hK|Rg_8Fc7(tWrI|@(<>5!rE!COy5H4=Gg#Bjcc>)DTN;K`zm@{gx2n(tAFu*tvt zMf=DLi{941qeGLYiNvS6%TQh#44RJtffZRpvqXVqK&ee&W`Rg z%KBFJGo;?eK-mKS?1eja2Go&Y|9}laU%))VGT?a1+p(SIuXi}9t7$gwZsQ`_Km*}^ zG}6J|!4`fpl(CW?%UJE+(+fzWCF<(tN-CUc97pJW$78`D2qZX!O==t;$=#s(lQ>2X z;|ss#10$zyR_B|S*_9Iw=pf@~8E&g2g+K=e9vy9tAqpFR&I>uV*;*?t@p+Idf;JzV0Y!!7xk^N+XFL|a6@2wx+NFoRbhzU5*Vn�X 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