From d1243f1612e43ca454db5ff48bc6689ca48bb80a Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Wed, 11 Nov 2020 10:18:48 +0100 Subject: [PATCH] fix(area_charts): correctly represent baseline with negative data points (#896) This commit fixes the rendering issue when using negative values in area charts. The correct approach is to draw the area with a zero baseline (or dummy 1 baseline for log y scale). --- ...g-y-axis-visually-looks-correct-1-snap.png | Bin 40906 -> 33718 bytes ...positive-visually-looks-correct-1-snap.png | Bin 0 -> 46548 bytes ...positive-visually-looks-correct-2-snap.png | Bin 0 -> 46548 bytes ...ive-band-visually-looks-correct-1-snap.png | Bin 0 -> 31092 bytes ...e-values-visually-looks-correct-1-snap.png | Bin 0 -> 34049 bytes ...-negative-values-with-log-scale-1-snap.png | Bin 0 -> 31976 bytes ...values-when-hiding-positive-one-1-snap.png | Bin 0 -> 25195 bytes ...ve-domain-mixed-polarity-domain-1-snap.png | Bin 0 -> 34348 bytes ...values-when-hiding-negative-one-1-snap.png | Bin 0 -> 25494 bytes integration/tests/area_stories.test.ts | 28 + .../xy_chart/renderer/canvas/areas.ts | 2 +- .../xy_chart/renderer/canvas/bars.ts | 2 +- .../xy_chart/renderer/canvas/bubbles.ts | 2 +- .../xy_chart/renderer/canvas/lines.ts | 2 +- src/chart_types/xy_chart/rendering/area.ts | 152 +++ src/chart_types/xy_chart/rendering/bars.ts | 293 ++++++ src/chart_types/xy_chart/rendering/bubble.ts | 80 ++ src/chart_types/xy_chart/rendering/line.ts | 112 +++ src/chart_types/xy_chart/rendering/points.ts | 230 +++++ .../rendering/rendering.areas.test.ts | 3 +- .../rendering/rendering.bubble.test.ts | 7 +- .../rendering/rendering.lines.test.ts | 4 +- .../xy_chart/rendering/rendering.test.ts | 11 +- .../xy_chart/rendering/rendering.ts | 912 ------------------ src/chart_types/xy_chart/rendering/utils.ts | 222 +++++ .../get_tooltip_values_highlighted_geoms.ts | 2 +- src/chart_types/xy_chart/state/utils/utils.ts | 6 +- src/mocks/series/utils.ts | 7 +- src/scales/constants.ts | 3 + src/scales/scale_continuous.ts | 38 +- stories/area/17_negative.tsx | 63 ++ stories/area/18_negative_positive.tsx | 80 ++ stories/area/19_negative_band.tsx | 84 ++ stories/area/area.stories.tsx | 3 + 34 files changed, 1400 insertions(+), 948 deletions(-) create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-and-positive-visually-looks-correct-1-snap.png create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-and-positive-visually-looks-correct-2-snap.png create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-band-visually-looks-correct-1-snap.png create mode 100644 integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-values-visually-looks-correct-1-snap.png create mode 100644 integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-negative-values-with-log-scale-1-snap.png create mode 100644 integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-negative-values-when-hiding-positive-one-1-snap.png create mode 100644 integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-positive-domain-mixed-polarity-domain-1-snap.png create mode 100644 integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-positive-values-when-hiding-negative-one-1-snap.png create mode 100644 src/chart_types/xy_chart/rendering/area.ts create mode 100644 src/chart_types/xy_chart/rendering/bars.ts create mode 100644 src/chart_types/xy_chart/rendering/bubble.ts create mode 100644 src/chart_types/xy_chart/rendering/line.ts create mode 100644 src/chart_types/xy_chart/rendering/points.ts delete mode 100644 src/chart_types/xy_chart/rendering/rendering.ts create mode 100644 src/chart_types/xy_chart/rendering/utils.ts create mode 100644 stories/area/17_negative.tsx create mode 100644 stories/area/18_negative_positive.tsx create mode 100644 stories/area/19_negative_band.tsx diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-log-y-axis-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-log-y-axis-visually-looks-correct-1-snap.png index 2f2da1847219afa40a9467062adae08b27769af7..0d3c9e2b395dd4aaafcfadf7deb952a34d346357 100644 GIT binary patch literal 33718 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 literal 40906 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 aTPHZa*tnRm?mNN=e5oj?V~XWW1O6AfB#zPm literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-and-positive-visually-looks-correct-2-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-and-positive-visually-looks-correct-2-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..36bba60335f1fc7ed48d6640afd0630b19f088fd GIT binary patch literal 46548 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 aTPHZa*tnRm?mNN=e5oj?V~XWW1O6AfB#zPm literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-band-visually-looks-correct-1-snap.png b/integration/tests/__image_snapshots__/all-test-ts-baseline-visual-tests-for-all-stories-area-chart-with-negative-band-visually-looks-correct-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea43bfc0a26dd0c0d503bff9beaa1df4521f4b9 GIT binary patch literal 31092 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 l%qIRX>C1n$)o)LUSx;?>HF2;LV2m!HItwu=& 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 Z_1)n=sS4$a1Sv4^Qc=)=*T|cP{x@m|lFa}B literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-negative-values-with-log-scale-1-snap.png b/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-negative-values-with-log-scale-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..cb29697295b2d2d214c81cd7bc2ae0b61e2085ea GIT binary patch literal 31976 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 literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-negative-values-when-hiding-positive-one-1-snap.png b/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-negative-values-when-hiding-positive-one-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce636d9eb686082276cd8957d20a910dcb1e2a5 GIT binary patch literal 25195 zcmce;WmJ`6n>LIfsFV^Cf}n_ibayG;A>G~Gjfiw?x+?(1s}@u=Jxc&3fQ8Ddv-E%jvE*-$%9$vz1j< zavwh;v<{|nO;wrW#u=8motUYqsU327++V&@Dk1UMytvN)tZB~^ch+ccuIUHVmep$J zrxe@lkJFv$2kV=gdS|<{h1xA?Pdye8Easb2RjA`2y7$90uxS5sd~vh}b!woiA87Wx zQmMAUhm(?$a&U6O3=%Z4w$97RL5%P78(PcC$nXgd5BES-hs}aiAB!wI?+qU6(uv!H zQficv2?=^U!c+E7^LylYs5oW`usM_9vgn$PjOvEgt#`+}c`zd&AedUN9k?+5DS@p( zsKqPpDv9V2#%%IvF;>ez4_l+&N~lzsDXOKf9bG(r2tPJ4p&yE$^8U=N=^?yN+YY=B z911S2q&xST?*T{Wt$_sH49b_DlHZT*ug{+}yU(9p^po>N zUHRm^e)hP0rzLIS=P>m6_pqLzcrmT$jyKoyuN8~Rad}-o zgxv0n{VuLcyu4K7)Z!I{Uf20Dt?zkGq%W2nYuoYhT^v4dL-O}bBL9Z9F!Z*>*~tM>v}YA zeHVS<-O>K#MA3r(RxwiRR?$NJ^S<>h;;XmPe|_nl8bSvBU6~~pvD;n4L9N8auIGGS zj_X0`CoOI5K0YsKTAQWt$B#^@keLJC-ahW@%|zq6Js*+te*c!P4F~xBnP%Mcp8<0r z6Uy(ct%>jUPa5hhcPQg3nQiy?F?O5oba|U^eO;(}ZR6`*CZ_LVk~S&B33)bCO` z&?*vGzSB~bxXaTRk;3dEx)0)A?^|VV)di)^fvyNtGSe9u&4%hec&W3Klzed@ zD>Ye!HyV@dE~hqP>(5>}>}>Qnk1cGn8n}-wKfl;`1@)B;Mx%b|U>;0Q{=LR`lstcM zG~1HNHVGLp!gzd&P9=7r)aYbyEaUu1S&O4r`R+j77b29&u-c!7*t*yua*>{X9r`iv z<7+-_^u@D_@&m>P|5#%^wx)xp=ka?pecgPA@wg9<5$K5ZX4NMcpCKQuKTTg2*z-R7 zcE#bD8zSO;&gZdCH!t96i3aEFd6Mpv5r$sW=6&Izg+rUr-7t5M_hxr*?h%phNda4F zWffvyxr@oP6Y7+C(zm}h`c93=`5kOC>At-$DLgLQEi&f-1~=cZcU5__kxZ)wA$lTW z%bBX6EQO#me~Zg8J~COo|;Q%MozM(5|oC&vjfKCT}p=aCpA*Azq+^SpPxS#nPke!l71jsq<62kg@? zUtuF3RZBcPwkLAG?%wv!@a+{RK5?wt_P!OGt6Vk0VHsSz1@qaRnVNCA8TXwg=K0<8 zH2wTZHYnhr>YNZ5Xk5mYP z9D^(do(}UPsKUd?Q`0ZymCo3dl5cPAO)c{x(%$|@{J>(!mSL{9Re;6ne@aRxVzA&4 znF)R8h~xGcF(>i=nWW_Y+f4UO=5HRuxjEc0KCjuk;Tqz*!yLpUXPYbi3@K{y4Guo6 zJk!P3mqhPoH$+86)d|fgEG+ybfD!rbC*EUJY&UEYM#Xa!Y-g{_E7CK*=W7@GVr~L9 zj#*((XO|X|y0&ow@bpE=(44L&Pp`Bgyy1N-dK-$$^v{qF*t9PxkJbhj@2yw-5Ne{lC24|RmzoQ(KxUAxS|lnO5Wb{jX5 z)$+y5M_Q}r2hyx}9rGAros-v9G!BI9qL!9u#OmIUCN!FuS<>!i+njHQ&e-Q%;aldr zx#ka8Z?|RUxtAtxhVQOpisqXj0mRoemD(k}f04lYY|R_qP5b#vxfJu;g5{{I1U6^Z z`K#TQg|myv+es{o>;C!uN$;CSwDBmP(s#}|=5P4sv+LbBjfb3$emi;(=J8(0-R_^< zJ#D$!*_$doIO0BDaL!Ls5>r*h*KXcI=}#QxcfUHCIhaV-5tCq&il?bx*t)$vyE4(B z=gXS-P9Orq8`Mp_*q`v>KsyT>bD`{J?vptW^@*OIvcYHfO zKKkH1o%oK9hGwA91G-f9r*|Z$X#39zGaOa1=HN_SMHzKSAD#8mNl8njvG>&# zO7m*5rpyta%q<=9?Si(!p&d)~J>0=kukW0O@Ewpo^}OTT*yIcuuv$CbU^+g2h?JhL z#bUWXPtGZGcs0KVmATvI@rC$(cwMYw#{t*kU7Xs`a#P~_x}~Nj9-qm~-?Pd1bbIAU z`joDBQt9}d@RSNj{A(X>e-iL--t|AUZh_P&fW>?>lYjw?5NN2 zQZK53gtLFkR`ST}E= zaaS1A$=sgbVM4ltg!QkD_N+N!fz5I=dIcNS|iAFhDX)of$tbkk9jJMp<}qg-gl?ufvp zyJ23&Qz~N&E}dN^vRML@i(Bkr@L;U@bI5{~FFJHidwBQKK>kpT*#)Bz~#~Y)}%*-15 z8uWNSwoc%6RB^OQ;&tfRw{1oJZguDrY8d`vcfAjO$FdYZZqDY1ENf={`&Q}~T=n~f z_?pL{_g35amBM@^x`#BG)e>H(C+cmXT2(NZTGQEFUl`lm&!x@~k!$YsA(2Gv<7)=zA`efAjD3it6tm0BC!KT!Pq%2kg8mz1cesLHc<_j66kMBQLb4nregMfFON zB)d5CzH`Q*QTuVY(idRqe!j1J?ZpQs2cY%o_LRWKk62e{dwIph=<$6*_V!HbHCBcz zy|G_DybdSiXs>tN8X=P5WJ@q}(t@o)c_$;*D@`JHn@@WlYg`?hys(jM>%x$m=&7ZprSD6fG`G!nUI!uCIsishnLSt5uoY73W~ZkIkN{K& zg}cgvq%XVpb-w<}dKQ`AUQ!!vk42I#^YA~iCGticTZR?kbC`J~BL9~{?SEjV|9!Rh z|Mx}i9Y!})7g#GW@&}~`J(x-*T49E&9n}(~m=@F3VZM)^E;%)rnww|k<|2Jc<#H}J zpP;4g(>vK5udJ+GzHx*VX@S}LAHFyM=r-g&Cm2y>r_Qp})Vb92%X5-1=w0{avYKzRA`r7J-LY&fE1WIrS? zIg;6|S3xf3lh)_9S8Y1a(ude;Q}4^sRm+)she%A2 zeSM=(e1(@G8+f(b0C^)4PVauYtvi&?*TMTI^vVSCw|4ghCf;KZC6&zjAU|19xk!!W zJY{;vXgE`7d%orFbHwgHSEs7~r8)&ZT(`{Hg~v@K^XCd1Her0Je=kXq_;$Cp-r$7D zsj7-mU}u7OuvOfE{;4D2DfH~>;KGBMjjh6XhzP92WQ#YSqoZT325nMu@>IPe6$n|R z*vPiaKQVq6smGtX6ciND)=5!dkDxZeR>nX`&j0wxuS0jYx?h!iSLUF@xJM`e!@83w-A5MdxQ%yFyG6A<{G5>8aHnnoC1i4?a zIs<&EJEP9lR=6&_-rinh9&C)n&!Il8{23yzNj~~%+mf%5NumhfZ)*OB{{;u~?_ObA z#C{oD;_(`l#u9!zsxO|*S#k~tEb1u~NwK(>csRN<>y zYD^n@u0!rfceB&eeNVmi5nyHc3j%_T?QMhZ@Ru_lM*|!L*|7EbsSx#B@>14$&XpV( zaf$cMmM`Syi0_UGEC=4{q(T+|!|zBzjU~!!O2%`>*lg1`7}ps>BPjU3kqWMb^3%Q|G?|cpch~f&@QXPFLIRFT9_z zVgvDQY-|j!)P7CcY3Glhp=zO4Q&L=9Tw%D>3N2U%N@t8n5BWNYT|@5Zxsj1}eF#t2 zs0`mg{>Qv;`T2`~%u70VoYwR_I=F9+MwdQTmIzW|3l;t|Jw4Uz$yGD& z#igmKxjomEe6lrxg&qKM77CaHD4JJ2`v1Dli%~sctD5BR#r453x~a~7&F*kn4E-f% z%uX5F=)^>~wfB`eFsgdFnyDIVVi0u@zUJo#4Gv0^L_Xfx*#Qw{!LDu}7&tTYui@dy z(Su;vri3bXF>M5(ztn?vg}w2g(Kr?JzCP%#TZvOIof76Nd5q-i(xe4P-PgW#f{BXs z1j+Z@qq%Jdq?k4xdSm_jfQ=6cH6Cd>ttuHF9`>2FlG#}p|D~a(mNXlQX1mb(00gw% znL6Cr-Rr~4;oco4>W+JUq~|;M*4fT<_qek5!2I3Ke1+YL_-^x+RhrAv6QhBo*sAw$ z|AUpXsncjY9+B|4=+h=6f?y&0ozI;$vspyGh5P6H+5cbjXAzRuH$jrfQLMkYg_99| zqp7KhTDv&~ut;zpGM@Ft)2(UWu4tbFOFSw>?FB@UZil}vq-hb&8g3z0S!?m2o0u4N z9dJ)wduPz23ll3VqoFh&04d76@4PlQH^JCoLBnxNNvT)^#FV9O%#A)N}s_W(#W(l-5A#$yQ! z#-X|IHN}^B?wE65?{~n>xNQ|(@66v?N+WS#z$!-Us7siK<;%G38WN5K1b0KP*G2e9 zB1KExPB!1oI&1uUkt_BZI3ca`gU10K+kdJ;fF*&+*4|!j z8*LZ)y*sZMa7Q;g@4?8ty0tX-(&-%lG;R;+?xLF9&sOz3?w#PHG%(g-lNd0Lw&x-{ zPF&;TgYyM_^Z?(6z2;=9l19cYgcORg&vKy1r@;fv;Miw|v#v4nrmQSq;_HP+gnV8p zmzQq0%QClL09;+x^T6^4R5ErHcv_DB;I z|K&*X8(tE&g7PtpySwuJfR^qqH|&EmF*D1osE8IN{Q#f?4Gj%Qb%3ZvLql_LaKLt{ zykGM-eZ7)yyueOx7m05lG|Ud7vCXtrO=!8dv4R|5GJ*2RP!)uT|C;i*@4ucX%9ZWC zA))=^qz)K>ks&?q(S-NSgo2Wi-RZU}jQkD7XG#F2LaF5-T?ui~3@?h|`TaLJqMby& zkB3FiHpl^lDSWo!`UxKteZ}LYlQ3L{pG5W_|W}60Hf>e>)Y7cg8JcV zEl63rVZr?`9bbs57#3hfs||7x^@~%vU87)#N0jt)$KnD=3o9oj-aK$;bMAD1ojyvG z)a86J!1ZD!{=kJBbR8JnC*Uw~+OML5oD0Y{H23S7ft35@W^}?2I0lKY%yg6t_yyt+&rv^< zDt-*Oj6rT5u@-xpj%^c~ccS9@V&G495IXki)`$T42V6e0v5^~B9~0n8=1we|sT67QJ-3O5ZzUzf)lwvp zI@8sbgxoIAYNn;s)d^TwSm3s2>Y_CpoOD%jzAKmH=H$FBfr8l6Q_a-mU*TE$4gJ~> zhur-YM*ZU!2NFU9-< zvGqsVYr%u(@^MgAz^U})7xDC#GMmLuyUpjQFEvDK*p$14$4g%0L z5v5JtVG@M;o4?TBdazh3z^K~#K1lSp0pZBnP`V5^(Hg9UggCTPK-L846IlEScWy-J zD+f8^ja7~HJa2K+sTvGsyDUeF1PYQ=*3^uSjC}4}XPu$81XNX$?E{AqQj=H_CyZaNF0$>)S z-;ECXF}b?a`1-V$2RTGwgWef+wPt+uC!i&8O~lIMaeR{>I@Fh^bLwD%chTM?ss$Eo z9xTm1Eb+4wqKivN*fWs*lb37Q53t0<$1^$aYQTYR+xd8jmt))7#s8<94*^zU^v@vl zARFf6k&;bgi3S_j!{puDtiEI;-Q;+mU0HB6oBaJL2eKs=!3fd;(g=Ua)dlDYK+0T} z5{TSwwcJus`Ib*vSWK4cPU-_L0W{*|m6f|C=$ZsU+WKEb13*V;+a>$>JQ(;D5-2)I z$QhemHrTFdR~BLQz~2DVLhYl6`G4*x9h2kWd)TvydEBr+0lEM{+H&5n z!;LF6){7YdL?obe0cliy{!$6fX?ybh->RHivpxpl5xUKUrt{)`_Y2``K>=_%rBc@; zBS1x&|1Oj>2K$moKX{B!$xUB$J;Kx={fHEMq`Q#LLPf<~PRZ=xx{OqD#qCWFJ$3Zr z@m?oqEr3ZLGYCoF1_!d^V`HDYQIIeq;v@L@e1LqgTj?AmRqn5*X!=Qg$uUGEE)T8R zU(f9h^~?0fn)Uy_n)mr)EH-;<4o$5EK_p4-SW8X9__b>np)JmqdpVll5h=pwjS zq4Vx}={(bx1>sE!IS2|2lr+ur^;gCJBAD0lOlF-Zzib_afHGk0>%=*=+vSOtxGvaj zVvv|wt>?H^AiEBnz@NEKC-qf{Q($$;Zzi2@HpWWzOO@(Bsy0o!FvSA9zP8`|aks4a z`sdN?g(i{kLp*`HKF}6csWibLzMAYlUwFj#m|tIC|2Jnt=rUl80ADhXf9(R=lgU=~ zL44=Fe0bHG|58LVh5~Hb<3IXd;HbY}Tsg%_fW5#jUJ?-rb+ie$*}BRrBwSj+Fmdi< zPYJ+Vz{p)E8s>!b^`Q&;P7SFx>?z|uXo{Me19^NmrmqyOjzAUX*GJcK{dwnfcUFR% z$QVF-5N9epubiw}Zk+1t>nEGs*|sK1$O+La4Eu0!=(Gya=|GaG{QP=9hF{gxXz`bB z%@~y@s#`~>iqf*<>Y7Q^zi9!~@lYdG3TU!Kn+-H}8O?uF6L}uX!MGo|Qh3?{Eo}K$hCobgEQ9CeF-jVsCH~(PNj#`XB;WFx%h*wV{gQx|2QOwMGvsmlTQ}f~ z(#ruAZ3;)c+LpHq7olm9H}=$e#2`~`346XXlt{NbJf+icQMhCn2z%xyb{yjnKb*F z3T&R_$v1yaO`iuH$HBwt&XXBqPZm`+??^5pY(?*Cysy{*^WX{u3Xh1n9M+#TIPEN5 zZj}u6e*LFN2}nicPcSy<&mT2PO5t0v!wZjx@DDb(wivol2fqR~2HvN2!O4gJlOGCh zE>GIr+?<3J7Nq;#yLV#l>7b1|!2g5ZxE?JJ;e|Pk7KeV9LNUX*kUks^@6hBNR{+m= zzTn6NE^B|f?LoA-bC3{df*n#oO~b9dj*?;B^$sGCvk8bVeu|W{QQXs#rJ#Ol`-J`` zzMhcR!-f76+h0cIl_Hh4vT{J*N+w7sfN;VH5?tTdSOmpVhm}WDjJ+ip-D&!))lfSX zE=FPkrkDUVx?xT}w_+{)0pv!?eD%cDcv?1GP%_3Zg@j zq((NAG&AuD##D|kG7qjp#U3&yh|Pm4d7%YD%*T6f%b2+A+;XKkC}2j70|R$DJAbM= zi01#Bstdm`x}=~$uQT|$#atsk0El3p88^4()zsX2ETej|drbrldNvP##=6zdNZ>BH5SEMnM z|24zt%kPji`v&Suc(E?}mUoO~abirWwA#(rnL~6crJn+b+$gAglLC>Dkm$Q)l~}_! zo?=8YFe1St_+4Fg556d%l;_C_K<-{(qa#0v;jbFXENFjGrty`{z$O1^R<5ObJw;KrT}6a>sMw8YjyPNF`T*=@FAGpoxWjx zrWiq6W(Le@n}dvLpU_K+Ig|Kb-;hWj<5}RCB07k^>?`|Gx5Ya%TP~cCGEhYVej)^irgyV-@T^b!*3RZZ z&gQ1s+-Y^qqFtT8B`A3QOSdATAbB zkqBS+Mrok=Z)ZV~2GpwCv4Mfa(!#OeEC$Vt2=1QR^F90YtC0Z~+@LJi9niQ<aEJjD079Ey z*<|T+!J&VNLaMkA*a#TD&Y?U_0f#Yo?Pd7{pUM>>=nD?}o09dYbe9m)-BDCC*Q?xesR)2< z0+TU1=qGd{PN%9jK5i|iZq%Y{(}~cb4;)$}m>JwV!$L)}XNBz*NgP}<4Hrrya6X5p zlCzj$7UNmIZaEOrG*L}W3c8n9?iyHTtq%1lL>)-hcS9FJ zaSiR}yJdh23k&<9SC&#-jUOfqAoWuiW0`)@ZwyF@>%;h#MxBPE2C?wpn({aOLW1RQ z*mV-(a&%NTD+6T~?c$pstG;u50D=)_k{B@=o_N)hmk@d50(0q%FPZ*z<2XETs4>Z+ zWdM<(tnJCdce5emqoCdegRaBFZGhS-XZ;4MB~abMsgxT$0g9Bo%1Q?t)@z_^T7!ix z5Ry80ht`fT9zO(CQ#T$Hd&TaF+au+-h(NGKtx-$AbCAO0&RWFKFspjGLrKE;{#fLz zms<4)&XQ`~l%)4OijcI_39B0XsE@~j zB;SIUfMZ-GA_vPE?2Yl(FOOh=ut3Ro03d~kigkI52`g_(?o6aMAopg*z{WqG{T&f%e%XNpp*m>}4d_5;rBXa( zobxm+;Dc{ghD4gtIXL7Jk7#p58{DFX)Jo5gVfPs%Py+%Uogat}yw3x?f5LnNP^PI$ z5vl$ENDR4-c0#0gu&#ht%j(A0HY=w7bcW`so(wH^D;tj1bicT8te!!Gv(@@8TmSd!(rE`tNoGLsr2}r<^>QQ6bv+{hRui(EpBu(&cHuVf zBZAmg!TK|Zp9v=6yGRi8&Sx6$p4lr)P>M_v>pQhr%Ky4(@RV6WDmC%ggj+GZ)Z@LA zag+DBZi2GD)WtZ1{u6eWUK=TWr||qNP5);4vCAXpP%<=bZ|a_t5N$5uc82p=-Hy!q z;cnZ7Y+c(XA=h^x51|U`2**hmvP7r3>tBXFLq&333L>xFYraB4s0Tz(FICBMPQ2Dq zMfweBT!8*<9Yz>|G!iXO)9FkkX;_sF)Q~lRmTEX$-~02C$xDPeB6gB(undU4UNnvWdkFUmx9p;JG`(! z#dmix6x983;>}urV#l8Md zx^l4W+s}@rcRA8jdk?<-x+DR{vfWZMXwL>Q%Gd7~9LHs4mK>T>M2?ScJUiNh;CZ}> z5g5Oqkw*Gj=x`2g${=lf)=@mjz8xXCX|xnX3XQl0b4HEt>l|R4?^mBY#3`=dEYKa& zcAj+<%o;94lNA)S>%e25Hm=nz3lqpg%ky3ROn^J&cjoaB_<67x*+>0~T+z6|uC}e7 z_oB`!KcYV_OEm`GK0Ys3fS|8QlO9d`Ghnm4iJMSR&a^y_7ERnU`OS$U()1%~jQ_A!u@$a`?Q1H+cS8BSBTJZL{4o%KYG(>gvT zuuwY1p%PclXL5{AX)ri^6l{R0XKQ0v7Pi7c8}Ntz)DP|Xu7dS}#XHxkkK(*Cqylmj z1Q{)Lvqo}?59rdFe?-eJ`Xe$GVl=#&veZ%7Wy~<}n1r>LUZSo8rZT6gNfYG)l&k#4 zS6`bCt01@&)9WGGMnqW$WBr#)m)DQDW%7kchgKf?VTR{%{#pJkFw4D;7U@KHAh}$D zB1amhCTLno@CkQJO`$f!FunJaU^8pT57iymT-bS%Yypvx2-wg8Zwam9CqGyEtm(`q(## zry@O5$PxL7VRq$PPqOGN>_+V8HT5uhJ`!}@{_LE#=d>s-9c*_DVtKK{Dk@!e#Y0wK z>5ae#N@|#XBaz8?WOjA{bV(mj(9q<7W;Bg@^|D0-2}zVDAYc-+DmfbM!aK`dr!>Ww zu>gph#7;a!5t7<98p(4hIaX=cQC;Y1+pNkN92?K|ScgQ!5?!+PnUHyY7Q0g32Yi!> zg$0mM9UYI#L`#yXHaO7`uvslvPh08V-QGZnB(1IKo^tQQffYBrI9vf!ciOK5><9?@ z*C2$ofu>FmP0fs5+Zy@5BK7X#0q`PdUEx(#{fdcWJ$ggz+1sH2JC2Wze?Govw%T9* zb~yc)fB+td`*S_h zn+a=x0ve(}g(KR>=b$8W(SZ}zb^`*6@zU-v25tao8;?@=ma)>$AJR1)V*(z!dEp3j zME_CJ&p3=q0WtZ@PsPQwPJ43$mnT~nt&ezH0l6R4iCn6Y5GablK5Cwzs@T}qnJ4}v zSGYEmOunMLZlP2_FF20P;S66~0(I2xmp75Ta-v?)^}{(Ei{)ftCd2e4a!V|^KP@@t z=H?f(dtTi&EjN~4$63USHta|ZwJ=6ZQVErIR0U9?lE9yW_PK0T@_Gyaj|V zuC3>;w4g+4zFm^W7UUC~#Lk-?C9@UzMD`Kh&(;k)tbmN3zZi6e6_u;W*13(1Dau-| zexU2HTIoUh?D4|U1rpyWD2{#GP^wY>b6+!n2Yun}O61xDBeG}LB3<|Q@zPVPU2dl# ziWu4Lb|I7U9^Le$jO~5=juo`JCV2&b^;Q;hXKqW|;&WJ#si_oGq7`&6zeGAoU2@G| zNEdwnelcL}CE)4FW9>dY4ae@diM{o^2nyO@`h!TWyiC2vy%&(YhE%{k*>IYCJAE&P zF_f7OrS-8HljRIj?n4zpGc2BI;?0{SNed8iZZDgO-8Lv_;B(woh+8?`Qu$pMg=^=g zX!c4kVRvBeY{)9$3&Uit&E9noX_ot$HLxQTt4WP!4-U}XBp$`(^Ejt}%5(gzRmghv z7)B5Hv_TMjT1yiTj%vRD1(Ci0MADsK-*W_mKmeg-mu$coG@a@PG18VplmoIBh+Q>X3*XuDb0?aO#-jw05^^X0*!a}-r+scs2bFM7+OA{iIutq+ zl+6_I{lH&u%5r$4R4Y|19gcjH(Z4ga+;lL71F)<1Hp7@q1ris8I?>YQR5mI%@q%vMiI1-u*<60Z4 z>_pO!>?=fLP>u25_7&pc;kDuksH%peED8z=>!3aq-uU9aT&U}hYvzHq1~DT=8X}S| zueDlAQ88%8GvP~G_V2U1x;!P8SaJ$)R=8F{6!4$><;P|s4BhYdF_@Ei3;=7kS5oJ3 z@bycm@zugl{En2(8IJ*62zi}eaqRdNV;Y~4P5h@Jre;qf_DF-N&pj6vs*=a(A%T*5 zi+Dfuj6NVbxHyt|V$vB$_QeVZP?oLbHZF=z{Cue(P6+hKok!hAY4OOj&;XMl-Di#IlXZ#Gd&z|-&+VjCY_*iy3wfPm5R!jC_? zz6WW_$9}-c=XUIDfn1FwTEY6~f&(5Uxyg=65LS4qUz*QY|B(UZVE=E*sQ9H)btt-_ zKq@k6;x6LeTh1gG9$C%E0`;M)T`vL42OsJ?tN+5OuLjR{eP>%qMR|w=Xr*vx0wXC2KGGkUHq~@N14w1H zeie^z4?C9@1{XgFud!QBJ=qv$PeE=UM`0wem+kYC6?lcEya!1*Cn^ zoqL8uaAOztM@be+I7TBK{=tN&{_zu%Gw*PK9!rtJjDkw6D3m?1Kg9?G?`Prhil}nI zje$UHXTFYYf3C<98QpgWPSBJp({N*#=?)@Q9(+07HpbcA)kj{TjfEMO2cPGik}BTS zp&51Kb=&qJx*}QUrIToQmX*cAI6)fuPdgN>w0m>F4*qaKs;O`36x-Ru@Ae+*@Jm(| z{khe*6Lp8P=e*egnX+jC$-=Ln_jai>-5lnV#A8h{6n0bI^7Oo6INeU}-dX1!q zW=`i6{7`N{=7nj?z zvZm8wub!w(l0u@Iq3fW=r^$Y-<|O4W zQ<+$-lz~ON-FQrih;afmx=x0!WD%K%08tOlvG;1?WSFczIS^HjDhO5}kCnv^Pm{81 zN4W`U|^XZr(1dCf%-mZv^^f0+_d8q@&m8W{*q+b z!-Fy9ep#`CwcLb$_OxopQL?Zrf3RJ5h{7bV9BevHuf7xyVL~+NPT1Uzn%|Q$)%=FA9tiq z7Mc^9OWUl-^Jw6xW^fi&+^(Mbqm2ePjv>nPnGZAgAL|?Uh?x#|vJ)zGz0|sVle=DG zA}M?y?0*_)nKCOEP%ad>;#7R6;glu~49#*_l)r5E4~F;fzBc^j97JHq<&KJCW=HUY zoAz<%NOITC)3wttuhmmd6u_N+x6 zMGsWkg;16VQHW@2e~|N?PDFORP+Bc7RS$K``P#rY-dj%HO_c$bCaG&Y_|~QX0iypo z8@r~jx7L2(pn@zfM<}ao`gNkNC~@EmO0o^)u1<^3gtws33YYC)<~ETsLPufTR!XRD zF7<2qv_df6JS?Fl{Rp)pZ_Nuejk&`@rit^MAQ9k0o-cnH(CypC zBM#)Rn{FQ|iEV_Pw@nlzkz>kNelfrj0FG>KM!vzPu+g+ORNX{sJxbk?pb<)ksJZsR z%LECrI|W^y2Z~iqro7^Qn>dhtc1)hQJ22})+ofB>m?Q@1gA)vcDv5?z%9>ql<>6M3<|gS5V1FYr3O=2jqN^LRg$wH; z)fkPSz*M;gQICbtR_aY1Gzguj$X_@8I$2+HnazK0iq)gQpT1aOv#OiZmm$vv3BM*I zh~}J15j|ONU2u2F*C(fssAp@nqMF&NFnl%wc!HrXS*^;Saw+duk0kTYux*7gdtXBF zhl#AGiqMMn4YrgGmj2?wy95nsQ8GN+_o+IM3&{Abk0Wa(UU>we)A>9Qs46Kfp&Orl z+r%_%)4%NLr{Nm*ce+72M(+%_x8q(XuH+xfj>)P$1Ot_%3IGJnNvu-aWkh@(zU|5| zQyb~YC^G$5YMXc!TpH*D&`DK9q;)T!YRz^fdGXtm7BL6tju@YO(MO7Z!-7SvZ(Q@f z8kcZ~syvqI#t=t~tv^kxmO(K_4OP&;Ww=e&OzxF+q=xO!n7rjB#|@qv*`2CVYT#O6&nXTA2C#hLP8)L5Oic$!$Y?Jj>WQ9qQW7Lc`Kr5(z=AKuU+)vOk0{}_5Y9vLOi5*ZNfGZanfW4g zIJ=mEXiq9Cj{K^+ZV2o45$(S@&7l*D$-tL)REhfGai;PMC0 zoZAQ^U&AIfbRBt=%~0jC@hn^vi1~Rz7P&7FKuB-9cF2lJsfkP(HQ&yG4l{71kxP* zGA>y&pWJJRDQSKc9IdCMzuv;IRM!1MlQ4dnH8Lz(&cWLn4iQo{-Mry=nf|nfJO%4@i{*hdmI*jp42YL|oi8yg!0g)&3^Bf$J zdQ_%7xl*NwsZ}S<$;Fjcv5piH&L?HluTnd>78J7y{!I%IC(GlOAr(c80@OC!6rd7B z`M8l`Qb3ctIV`ejtD1t0_o4uqCu;j329KnK*2IBP$7NSEDshy0Gw-?bWEIn)p1gn% zSkVOs=rvnTIGo>p5kx^rPiD{58P`e$^otb79=rsFYKv%<1bbY4 znKH5jOjmF4xZx$H>Nhc&@#6w6e{A9g$AiRUpTLa%*p`EzKVfzy=x;Oms^{FO6(rQ@ zC)E~(fuvD}=-r*up~6rkh}8=kcHpxZk*~L_#~62^k(9Wy{P9Z;`ANqn8auclK7Xg+ z)ZjP_7ai_H5%WD)IXLEqgiVB8YO^J%8Gie(n2%AgprP+PcO=VJf%cV9pRNqzLFAXr z1vwr!Ia%1LJp6W}L^%Y>dXj@NJsy(IpGIN4(L}*7C>@@EqqsjAhPqhFRE!fUhR~BO zSN93KC}h?dBWUAch05P|b!);($at_BC~+e)jcVTO#l#Q=5zJ7IQzF9xEQvr$vLUm+ z#Q|ops>}G4P;kO5l2HtnoTJk_qWkyPY&l=)cHtV2h46<2s5xo0QhXOD`C|F)b*o^40b`=8m$%?*e1zmWBT1ZP^(8yg$NS1Kwh-qFw)0%8Fb zpYcm9l`_1ntZXX~9VLJhvLACLb-}@{^P5{Y%jCd7W+JELl_*?D+(TLEl7ysjWW}b& z5OLHc{mmv$O#l4P$FPF}+1c5@EP+7Y)bt%VI*^cn7Zn{{rd9;hN&(<>kTPWp&_Q3G z?x664V_x817v~gI{9DAztpK419X=&-EYAHd%7Z8bAs##)+WWSneT7ewF z%|M!d)~rsiok%OPT;!3ytIh8vqEb?wRyE-63pSjo87&;C(#R+%RI%@u+TLRQ=y>Aba(tuuEJ`K&c^{s~jb}T=Z=3`;WL8E++PPq;Wb@l=Unj@26 zep#-ru8lxt0GH93f{2J{U}$K&*K`&Y5djx7kmAmrCd&co{-|qoonpTR=vL$o`VUO& z=mA;s7l6I_U7JQOol?8N;jjCQfIuAzJ3(|*KHXcL*`UJP^4>nch@^9dI zv1SQ}!S}-7eEISa=wHFfNZ9G1V$FtfKx)a$%LfJrlhDwFvCVr#gL{yCR8aV_*b#uw z=j9Q$r&{d;pY=2!LSAHXcfYS;owa z2JCR3p1yt}y)L{gj=|a9d^(5ys!o*}K8qPx43-wHiq1?`5X#cA)J+!GJHzgHTdK8V zy4tMrYX?lqh}Afs?NAEQn?tkXbcX-B~~ED;hOs$}s-{r2`hN zZMHzgg1CGNSh(YmsioO0_^6=wERQEQC$d!i)&8h?|9G?W>#^Rbra0=(Hc6Q9mjTRr9R8`>Td=LH$gsFR zs9*7(UiRon!q@OhN+ii_h&gh<*NcX-VTXzZHj<6MBZ17C)qSH1$BF&)Mi}ge%cSL9 zdbF0jnOua`hksnBEJl-)N4BHUp=9V4?<%9Rcs9B!jbTH>xkQ^0OJM1SMDEo6wemmD zqPOV`z{iuMJ2^#mb>5ERgc^JLSEIAMLxe?P#ZvWr+g=IVd?A#*Y`HSEUMG6WLn_6- zLTuO_Diqq3XpL()Z{bwvD@_z$JfD`q-9FqP5zftd1rk{{G6pM34oiag*(K_Lpm>&k z)n{Fm{n$*QEV6&Re`<&8oGkOA3nV>NFd^y*0}F$5)g6S`qC= zB*goQ8DHpr&l3+C!)Vyi;I04cQ1SQchz-wanIpZbRd5-ix_ZnWq-%!=4@kZTIbQU+ z1>cUB+{=;?#B2u*-$i717V5GI7Dv@1>9ung65LGs49m}ylZC=n>hx}&3!#c% zXi4G&{_WLqZQC*R&rVJlk$uAd7>g2${{w$H$H9;x>t}g8TY}4s_x6Sc9uvZM%N`jS>B3C}$Y=>QwHM$Im^Qd4ntU`<2t~_%ho#{3sO*9jFeGBQjY1zN^gwY3RAqY?{leFToq4D-`G$B67|y&aWwTXyYk z;1rAd4vv#QAeWnZY%8JoP>yH@i&yg12Wn{L zCW$?|Kh}ps1I|ps!m5J*I{5|g$Jwx`12nqp#BWGL6XXpVi|f%qKr3+xKX5DV|01EvAnhx9UCiD zV>L^eie;5^bJ1yP;1865^eA8Y6exlA zu=~Zt5jc~8%MI??g!w$Dsa8<1n3VPVdoj~a)#GSmR5kXPO%jrLWnbx=>c82A$@9`- zWOTG=XsCPb=t0E)>Fmm*sa*T^E|N~1sANh?Ng7O<=hzt%DvAurlm_!qhfED5TO`pS zZ3<~uROn>LEVC^`IwF)ZrNNMy@4B6{-u15U`_{L<^|n_1p*=j${oMC;U%%gdT^Bl? z`R2Z^{+>M|qM}POT50cxHgmCGO-K;BZOg2wS-zy}@7;wZ7-w-HKU$`ytI1FP%3Mlk zR$#MI!pV@3vUi$?8b(TDLQ+{dH}b45wtI_>c-oDbPR1BkZC6(bsF7u!J$ttI zrqrS>@8wd1=I7uYSo)}?I&J^`tV}?b)z!M+&UMXWiTZKgrfzH5O_k7~c|2Rzc0d$& zWy@DqUM}Z-5a1Qr!z=L8nBS`9@z+be7be*r)@|5e1kH!1?}-$6UiA1*Z{yRbyLaQd zz;!l`C4C|XBo`p@qHSjE(3izmZP;C|txlxr&F&-6zcRG$=rM@28BG*Mt+BHaBzJ`XJsN}!}U|v>wQjVRi`i1pgqvL&TVU^6w|9biM&!Jn7~3={+p;k3_-dhkfaZLYsHpVm zujVUPu2c-1QOw96-jk*QEq9UHc)N+)5JNIsh~>LWH<|(5;8sKE-ZSFh6&eqcjoH2{Y%l z_G~Yp8JU|5O~3dTXq=~~OjT7C%zoHHR!&(uJ8wsX8|;~$vtzAhhYJ!DgHf}{xU|W_ zNm>r)U4Lhx#-T^Ch_@So{_cE|_9gP27B8IjwY0PX+$*1Twz8vcB6o=-Ahg#33Nd9#x?Y?v26+%BYU1i6r=l}Z|YBm zuxhL&%g-cU`o|p@(>YLQd3Z>}7&)~2hFk4P6*jn@V*t)O{YHFDo#Lm zZ?x{Z;%;{`eE^Uqk}eFlY<`v%!s^5!epA&~M&ZLB8(rG679H&@2=JdC`jdE7Mh9D? zVCZQ;NZ`KtJsk&f4S4R|zpqbfu8bM&QfLCL9rq!_043y-qX>n-5?IB<6M`#+N2{l& zr|Wbc0APcX691!?J#_T|m_WuI-Hf%_Ta7UrQUT?$k>DTD+)^ao8TZz26BoxdTBWX$ zee6Da{pL+QPfyR3Te_uETO=e3j!xp1BNnl+b$Kfa8%em<6>upEgj+$d{p{78?Rc;ehD83 zoTkgVv|T6SY3%&_xL8qSYJwAJhI}%55QF;KFXIva5QGI-x9*(*GL<5FQo* zMs?}|ywLoWpIm7uXX(inD+@zYIW`I8+~9HDkg(>Hwqu3e2lv*{6IpJDN3+k|Tn`p< zLB>F;#~j~FIC<3PXS^)3PnN?QwM$EDF&=|0^g=|E3sei`;6KnkVlfbRepFfJXi@Oi z!dr`NooMMjhm&bOV=ZQvgf`WTgZ9P0gmSa5J!dD04T0JikoT;Bal!)be$p-BRh8u9 zIDo#y#wgVic+)1PJLl_nGF44B1W)A%sGN3ALA(+@s2&Ljm6es0>SGV?2K+kw@#DwJ zsw!J7+r4!4*>FRpmwdfZ=l%!r(#ptuaMv&V-aU~IXTPicF05XA(9F7JUyJ;eVf&-t z5o>56&CR9=J!meHJGHi6m__%B0GZ**$rpp>M(D)IY3cSVyRkQ2{nEV6r1VqZnAO># z?03%c^3LyymJ0h9X|GT#1MyNsoWxG2dh$+$F(shxKN5Yav{uvR&7dAEty(#s(GMtL zegeycS-+|O@$gGcl(Bt=>(c3P7r=PUSvNz7Z6S50>{w>Yah+BW(YUzKx?}epYvRy7 zLE(LPg`8|5f;BI$(ckq~?Ux7i!0Mi=7;PF;WaGwd+XZ}-6A;gMZ`Z&n`Og(a!?zXO zjQssobtBh4bXVQHIn*dY`I%d1!4%`(!&qUKk>OzyNCIijmyR=?pJAJU3_J1MspGB~ z$YslxnQvbMG{^p!)M_)yRa>`T{%N zyVj3OO0<4or^?Rt0yZL%u!snb1cY>U_KQ{1G2QSHUd1B_7}CM+8EWf3HF`pI9g`_i zn7xqyxqm-51s>!soB1i;@y?*25F38nFHd!zI(Rb{gow2CvwsF=W@cvJUAMqMbv#T_ zaq-J|Z0-Zi;*{|4aFh_=d2%ver)<$+`+%eaBBnzLm?RIDx5ZPJ{9p5A%|1*AUd z>FX~8HOLp?4U7*dZ*WtKWxcQq0T4nK>^!Shl|pf;hpY`>w3jMtYDx#k(9~OnrB(uq zd<_hkTYKzXF)N{eB>fY0e?>LFQA+iT-PpYN;oODmW2gVbk5K0U$5rWcGDqWfSWX~u z;zVQeG9&_R-no<5pAS}6aI_kC22SsQkrTsgta6e zza#6_K6-Si2W<5@Ncz=}oR2Xg^_ z^OiIhnpFcBJPj#7`$w%lRYt-hc){=b4WzTx$1riV)OCHu_E>jP~DwJizp-p z2XB9UUEG9E(S5zi1EZA0#P#0uHbJv;=r4E2S-RRz{OE>fDX0rOAY}%9`r4b)7s%r- z3<}bT;4AiGs#O5>U-qZQYmIv}87jb0^$zTfq}b*UbCrHTNA9)w;w;pZ@c7Iq_YICk9# zV%eOU)AqLqjCUMVe+$azJ5s064^ndFE|V4zS#NwsX?$Mg+sg|C|4~}VI8<_hA+Pp} zShi|2qH;(e69tCO3WPL*FC3h1U*wNCiU?tiyXencLlffAp*5kl&1o(oB4dVV2+7_g z5kcn}mWae@UlKe|$WmNQTuySobmR$xkuKj%}$>{>gWF^NQWXWN+d-f)r zX?$X-5GP?>jZt1&bZF_w)F_PtrI?&`zrKv>=6 z?Drt>Lt9)FRaY0!aP8dBsG#QDS7>-#Xtbs#7kl?NhLC8MD}oA*&m9f!22S-akHdWF zArqmT*Tw$Ox#Xy`#v5M9bJqmV7#8|C@zGwBuD^_sVQqP z+C#Wna``ZhmD@Em(i zqtUjp_V*U72g#z~B#TSlEPuwg*EI-$O3JU*yu1rFdROs8-dF;CLzHvYMq)^@6rp! z4MUxHyd+9v>AF9H=Vqrf5gLxpC`6lbPwaispd>ha=gwLR0vQ=QZp6n6=FVc4u{59_ zUAb!2A{>D|$(oQC7k^kXzj5P6N%IT?5Ah+%jG4*aZ=deq1TN9paFOZPrD=+#N9J-2 z^z}F3LMqmsjll6wXyo+l94(z5rWepqxk-eR0UoJ&_~{sG#+ci;EyVhl!aT!k5VzeH zhJI|#AH9{8@QhG0+F`L1n0G6f3X2hD z1_lN=?{n_R&3-$k+DjZt$W3uOzN;sUdm}?_9*gc%_a))iQXFJGp~~c!JENft6 zqkQIDEoSX4EFzNn*WZ}JGq>(r4!j#{iNS%~833Db$M2m{$j1V3a5k>tjvhGPofamW zMri1*Tl#4IE=*D!XC-ue&-WeCGd6a@gaI86CIf(yo5gYZ={!PF?2&qyKl|%F*f=Rd zlzj$Ri*OHwQ~=?e@W1#nWR2~Hg?*ARk-qy;Tfc5PUef6SidRz&5;-T8ceXdJ&if}+3Mh?=f-^!$GT{08AP literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-positive-domain-mixed-polarity-domain-1-snap.png b/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-positive-domain-mixed-polarity-domain-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5f41d12a689ed344730be2295b2f539abe4a96 GIT binary patch literal 34348 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 Y0;EG`z8Mz9VZr}oB^4#|#PnbPKj0-gPyhe` literal 0 HcmV?d00001 diff --git a/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-positive-values-when-hiding-negative-one-1-snap.png b/integration/tests/__image_snapshots__/area-stories-test-ts-area-series-stories-negative-log-areas-snows-only-positive-values-when-hiding-negative-one-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..41da2502ebe0075b55766ca149cb4c1f7c56191b GIT binary patch literal 25494 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 { ); }); }); + describe('Negative log Areas', () => { + it('snows negative values with log scale', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/area-chart--with-negative-values&knob-Y scale=log', + ); + }); + it('snows only positive domain mixed polarity domain', async () => { + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/area-chart--with-negative-and-positive&knob-Y scale=log', + ); + }); + + it('snows only positive values when hiding negative one', async () => { + const action = async () => await page.click('.echLegendItem:nth-child(2) .echLegendItem__label'); + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/area-chart--with-negative-and-positive&knob-Y scale=log', + { action }, + ); + }); + + it('snows only negative values when hiding positive one', async () => { + const action = async () => await page.click('.echLegendItem:nth-child(1) .echLegendItem__label'); + await common.expectChartAtUrlToMatchScreenshot( + 'http://localhost:9001/?path=/story/area-chart--with-negative-and-positive&knob-Y scale=log', + { action }, + ); + }); + }); }); diff --git a/src/chart_types/xy_chart/renderer/canvas/areas.ts b/src/chart_types/xy_chart/renderer/canvas/areas.ts index 91e24a7f2c..ce60777095 100644 --- a/src/chart_types/xy_chart/renderer/canvas/areas.ts +++ b/src/chart_types/xy_chart/renderer/canvas/areas.ts @@ -24,7 +24,7 @@ import { Rotation } from '../../../../utils/commons'; import { Dimensions } from '../../../../utils/dimensions'; import { AreaGeometry, PerPanel } from '../../../../utils/geometry'; import { SharedGeometryStateStyle } from '../../../../utils/themes/theme'; -import { getGeometryStateStyle } from '../../rendering/rendering'; +import { getGeometryStateStyle } from '../../rendering/utils'; import { renderPoints } from './points'; import { renderLinePaths, renderAreaPath } from './primitives/path'; import { buildAreaStyles } from './styles/area'; diff --git a/src/chart_types/xy_chart/renderer/canvas/bars.ts b/src/chart_types/xy_chart/renderer/canvas/bars.ts index 750b668422..488ddcb8f5 100644 --- a/src/chart_types/xy_chart/renderer/canvas/bars.ts +++ b/src/chart_types/xy_chart/renderer/canvas/bars.ts @@ -24,7 +24,7 @@ import { Rotation } from '../../../../utils/commons'; import { Dimensions } from '../../../../utils/dimensions'; import { BarGeometry, PerPanel } from '../../../../utils/geometry'; import { SharedGeometryStateStyle } from '../../../../utils/themes/theme'; -import { getGeometryStateStyle } from '../../rendering/rendering'; +import { getGeometryStateStyle } from '../../rendering/utils'; import { renderRect } from './primitives/rect'; import { buildBarStyles } from './styles/bar'; import { withPanelTransform } from './utils/panel_transform'; diff --git a/src/chart_types/xy_chart/renderer/canvas/bubbles.ts b/src/chart_types/xy_chart/renderer/canvas/bubbles.ts index fe3ea4d0c8..e00d30238b 100644 --- a/src/chart_types/xy_chart/renderer/canvas/bubbles.ts +++ b/src/chart_types/xy_chart/renderer/canvas/bubbles.ts @@ -25,7 +25,7 @@ import { Rotation } from '../../../../utils/commons'; import { Dimensions } from '../../../../utils/dimensions'; import { BubbleGeometry, PerPanel, PointGeometry } from '../../../../utils/geometry'; import { SharedGeometryStateStyle, GeometryStateStyle, PointStyle } from '../../../../utils/themes/theme'; -import { getGeometryStateStyle } from '../../rendering/rendering'; +import { getGeometryStateStyle } from '../../rendering/utils'; import { renderPointGroup } from './points'; interface BubbleGeometriesDataProps { diff --git a/src/chart_types/xy_chart/renderer/canvas/lines.ts b/src/chart_types/xy_chart/renderer/canvas/lines.ts index db631a2b8f..7a95809a50 100644 --- a/src/chart_types/xy_chart/renderer/canvas/lines.ts +++ b/src/chart_types/xy_chart/renderer/canvas/lines.ts @@ -24,7 +24,7 @@ import { Rotation } from '../../../../utils/commons'; import { Dimensions } from '../../../../utils/dimensions'; import { LineGeometry, PerPanel } from '../../../../utils/geometry'; import { SharedGeometryStateStyle } from '../../../../utils/themes/theme'; -import { getGeometryStateStyle } from '../../rendering/rendering'; +import { getGeometryStateStyle } from '../../rendering/utils'; import { renderPoints } from './points'; import { renderLinePaths } from './primitives/path'; import { buildLineStyles } from './styles/line'; diff --git a/src/chart_types/xy_chart/rendering/area.ts b/src/chart_types/xy_chart/rendering/area.ts new file mode 100644 index 0000000000..f87d9d68ff --- /dev/null +++ b/src/chart_types/xy_chart/rendering/area.ts @@ -0,0 +1,152 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { area } from 'd3-shape'; + +import { Scale } from '../../../scales'; +import { Color } from '../../../utils/commons'; +import { CurveType, getCurveFactory } from '../../../utils/curves'; +import { Dimensions } from '../../../utils/dimensions'; +import { AreaGeometry } from '../../../utils/geometry'; +import { AreaSeriesStyle } from '../../../utils/themes/theme'; +import { IndexedGeometryMap } from '../utils/indexed_geometry_map'; +import { DataSeries, DataSeriesDatum } from '../utils/series'; +import { PointStyleAccessor } from '../utils/specs'; +import { renderPoints } from './points'; +import { + getClippedRanges, + getY0ScaledValueOrThrow, + getY1ScaledValueOrThrow, + isYValueDefined, + MarkSizeOptions, +} from './utils'; + +/** @internal */ +export function renderArea( + shift: number, + dataSeries: DataSeries, + xScale: Scale, + yScale: Scale, + panel: Dimensions, + color: Color, + curve: CurveType, + hasY0Accessors: boolean, + xScaleOffset: number, + seriesStyle: AreaSeriesStyle, + markSizeOptions: MarkSizeOptions, + isStacked = false, + pointStyleAccessor?: PointStyleAccessor, + hasFit?: boolean, +): { + areaGeometry: AreaGeometry; + indexedGeometryMap: IndexedGeometryMap; +} { + const y1Fn = getY1ScaledValueOrThrow(yScale); + const y0Fn = getY0ScaledValueOrThrow(yScale); + const definedFn = isYValueDefined(yScale, xScale); + const pathGenerator = area() + .x(({ x }) => xScale.scaleOrThrow(x) - xScaleOffset) + .y1(y1Fn) + .y0(y0Fn) + .defined((datum) => { + return definedFn(datum) && (hasY0Accessors ? definedFn(datum, 'y0') : true); + }) + .curve(getCurveFactory(curve)); + + const clippedRanges = getClippedRanges(dataSeries.data, xScale, xScaleOffset); + + let y1Line: string | null; + + try { + y1Line = pathGenerator.lineY1()(dataSeries.data); + } catch { + // When values are not scalable + y1Line = null; + } + + const lines: string[] = []; + if (y1Line) { + lines.push(y1Line); + } + if (hasY0Accessors) { + let y0Line: string | null; + + try { + y0Line = pathGenerator.lineY0()(dataSeries.data); + } catch { + // When values are not scalable + y0Line = null; + } + if (y0Line) { + lines.push(y0Line); + } + } + + const { pointGeometries, indexedGeometryMap } = renderPoints( + shift - xScaleOffset, + dataSeries, + xScale, + yScale, + panel, + color, + seriesStyle.line, + hasY0Accessors, + markSizeOptions, + pointStyleAccessor, + false, + ); + + let areaPath: string; + + try { + areaPath = pathGenerator(dataSeries.data) || ''; + } catch { + // When values are not scalable + areaPath = ''; + } + + const areaGeometry: AreaGeometry = { + area: areaPath, + lines, + points: pointGeometries, + color, + transform: { + y: 0, + x: shift, + }, + seriesIdentifier: { + key: dataSeries.key, + specId: dataSeries.specId, + yAccessor: dataSeries.yAccessor, + splitAccessors: dataSeries.splitAccessors, + seriesKeys: dataSeries.seriesKeys, + smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, + smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, + }, + seriesAreaStyle: seriesStyle.area, + seriesAreaLineStyle: seriesStyle.line, + seriesPointStyle: seriesStyle.point, + isStacked, + clippedRanges, + hideClippedRanges: !hasFit, + }; + return { + areaGeometry, + indexedGeometryMap, + }; +} diff --git a/src/chart_types/xy_chart/rendering/bars.ts b/src/chart_types/xy_chart/rendering/bars.ts new file mode 100644 index 0000000000..11d7101bd8 --- /dev/null +++ b/src/chart_types/xy_chart/rendering/bars.ts @@ -0,0 +1,293 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { Scale } from '../../../scales'; +import { ScaleType } from '../../../scales/constants'; +import { CanvasTextBBoxCalculator } from '../../../utils/bbox/canvas_text_bbox_calculator'; +import { Color, mergePartial } from '../../../utils/commons'; +import { Dimensions } from '../../../utils/dimensions'; +import { BandedAccessorType, BarGeometry } from '../../../utils/geometry'; +import { BarSeriesStyle, DisplayValueStyle } from '../../../utils/themes/theme'; +import { IndexedGeometryMap } from '../utils/indexed_geometry_map'; +import { DataSeries, DataSeriesDatum, XYChartSeriesIdentifier } from '../utils/series'; +import { BarStyleAccessor, DisplayValueSpec, StackMode } from '../utils/specs'; + +/** @internal */ +export function renderBars( + orderIndex: number, + dataSeries: DataSeries, + xScale: Scale, + yScale: Scale, + panel: Dimensions, + color: Color, + sharedSeriesStyle: BarSeriesStyle, + displayValueSettings?: DisplayValueSpec, + styleAccessor?: BarStyleAccessor, + minBarHeight?: number, + stackMode?: StackMode, + chartRotation?: number, +): { + barGeometries: BarGeometry[]; + indexedGeometryMap: IndexedGeometryMap; +} { + const indexedGeometryMap = new IndexedGeometryMap(); + const barGeometries: BarGeometry[] = []; + + const bboxCalculator = new CanvasTextBBoxCalculator(); + + // default padding to 1 for now + const padding = 1; + const { fontSize, fontFamily } = sharedSeriesStyle.displayValue; + const absMinHeight = minBarHeight && Math.abs(minBarHeight); + + dataSeries.data.forEach((datum) => { + const { y0, y1, initialY1, filled } = datum; + // don't create a bar if the initialY1 value is null. + if (y1 === null || initialY1 === null || (filled && filled.y1 !== undefined)) { + return; + } + // don't create a bar if not within the xScale domain + if (!xScale.isValueInDomain(datum.x)) { + return; + } + + let y: number | null; + let y0Scaled; + if (yScale.type === ScaleType.Log) { + y = y1 === 0 || y1 === null ? yScale.range[0] : yScale.scale(y1); + if (yScale.isInverted) { + y0Scaled = y0 === 0 || y0 === null ? yScale.range[1] : yScale.scale(y0); + } else { + y0Scaled = y0 === 0 || y0 === null ? yScale.range[0] : yScale.scale(y0); + } + } else { + y = yScale.scale(y1); + if (yScale.isInverted) { + // use always zero as baseline if y0 is null + y0Scaled = y0 === null ? yScale.scale(0) : yScale.scale(y0); + } else { + y0Scaled = y0 === null ? yScale.scale(0) : yScale.scale(y0); + } + } + + if (y === null || y0Scaled === null) { + return; + } + let height = y0Scaled - y; + + // handle minBarHeight adjustment + if (absMinHeight !== undefined && height !== 0 && Math.abs(height) < absMinHeight) { + const heightDelta = absMinHeight - Math.abs(height); + if (height < 0) { + height = -absMinHeight; + y += heightDelta; + } else { + height = absMinHeight; + y -= heightDelta; + } + } + + const xScaled = xScale.scale(datum.x); + + if (xScaled === null) { + return; + } + + const x = xScaled + xScale.bandwidth * orderIndex; + const width = xScale.bandwidth; + const originalY1Value = stackMode === StackMode.Percentage ? y1 - (y0 ?? 0) : initialY1; + const formattedDisplayValue = + displayValueSettings && displayValueSettings.valueFormatter + ? displayValueSettings.valueFormatter(originalY1Value) + : undefined; + + // only show displayValue for even bars if showOverlappingValue + const displayValueText = + displayValueSettings && displayValueSettings.isAlternatingValueLabel && barGeometries.length % 2 + ? undefined + : formattedDisplayValue; + + const { displayValueWidth, fixedFontScale } = computeBoxWidth( + displayValueText || '', + { padding, fontSize, fontFamily, bboxCalculator, width }, + displayValueSettings, + ); + + const isHorizontalRotation = chartRotation == null || [0, 180].includes(chartRotation); + // Take 70% of space for the label text + const fontSizeFactor = 0.7; + // Pick the right side of the label's box to use as factor reference + const referenceWidth = Math.max(isHorizontalRotation ? displayValueWidth : fixedFontScale, 1); + + const textScalingFactor = getFinalFontScalingFactor( + (width * fontSizeFactor) / referenceWidth, + fixedFontScale, + fontSize, + ); + + const hideClippedValue = displayValueSettings ? displayValueSettings.hideClippedValue : undefined; + // Based on rotation scale the width of the text box + const bboxWidthFactor = isHorizontalRotation ? textScalingFactor : 1; + + const displayValue = + displayValueSettings && displayValueSettings.showValueLabel + ? { + fontScale: textScalingFactor, + fontSize: fixedFontScale, + text: displayValueText, + width: bboxWidthFactor * displayValueWidth, + height: textScalingFactor * fixedFontScale, + hideClippedValue, + isValueContainedInElement: displayValueSettings.isValueContainedInElement, + } + : undefined; + + const seriesIdentifier: XYChartSeriesIdentifier = { + key: dataSeries.key, + specId: dataSeries.specId, + yAccessor: dataSeries.yAccessor, + splitAccessors: dataSeries.splitAccessors, + seriesKeys: dataSeries.seriesKeys, + smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, + smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, + }; + + const seriesStyle = getBarStyleOverrides(datum, seriesIdentifier, sharedSeriesStyle, styleAccessor); + + const barGeometry: BarGeometry = { + displayValue, + x, + y, + transform: { + x: 0, + y: 0, + }, + width, + height, + color, + value: { + x: datum.x, + y: originalY1Value, + mark: null, + accessor: BandedAccessorType.Y1, + datum: datum.datum, + }, + seriesIdentifier, + seriesStyle, + panel, + }; + indexedGeometryMap.set(barGeometry); + barGeometries.push(barGeometry); + }); + + bboxCalculator.destroy(); + + return { + barGeometries, + indexedGeometryMap, + }; +} + +/** + * Workout the text box size and fixedFontSize based on a collection of options + * @internal + */ +function computeBoxWidth( + text: string, + { + padding, + fontSize, + fontFamily, + bboxCalculator, + width, + }: { + padding: number; + fontSize: number | { min: number; max: number }; + fontFamily: string; + bboxCalculator: CanvasTextBBoxCalculator; + width: number; + }, + displayValueSettings: DisplayValueSpec | undefined, +): { fixedFontScale: number; displayValueWidth: number } { + const fixedFontScale = Math.max(typeof fontSize === 'number' ? fontSize : fontSize.min, 1); + + const computedDisplayValueWidth = bboxCalculator.compute(text || '', padding, fixedFontScale, fontFamily).width; + if (typeof fontSize !== 'number') { + return { + fixedFontScale, + displayValueWidth: computedDisplayValueWidth, + }; + } + return { + fixedFontScale, + displayValueWidth: + displayValueSettings && displayValueSettings.isValueContainedInElement ? width : computedDisplayValueWidth, + }; +} + +/** + * Returns a safe scaling factor for label text for fixed or range size inputs + * @internal + */ +function getFinalFontScalingFactor( + scale: number, + fixedFontSize: number, + limits: DisplayValueStyle['fontSize'], +): number { + if (typeof limits === 'number') { + // it's a fixed size, so it's always ok + return 1; + } + const finalFontSize = scale * fixedFontSize; + if (finalFontSize > limits.max) { + return limits.max / fixedFontSize; + } + if (finalFontSize < limits.min) { + // it's technically 1, but keep it generic in case the fixedFontSize changes + return limits.min / fixedFontSize; + } + return scale; +} + +/** @internal */ +export function getBarStyleOverrides( + datum: DataSeriesDatum, + seriesIdentifier: XYChartSeriesIdentifier, + seriesStyle: BarSeriesStyle, + styleAccessor?: BarStyleAccessor, +): BarSeriesStyle { + const styleOverride = styleAccessor && styleAccessor(datum, seriesIdentifier); + + if (!styleOverride) { + return seriesStyle; + } + + if (typeof styleOverride === 'string') { + return { + ...seriesStyle, + rect: { + ...seriesStyle.rect, + fill: styleOverride, + }, + }; + } + + return mergePartial(seriesStyle, styleOverride, { + mergeOptionalPartialValues: true, + }); +} diff --git a/src/chart_types/xy_chart/rendering/bubble.ts b/src/chart_types/xy_chart/rendering/bubble.ts new file mode 100644 index 0000000000..5285990ce2 --- /dev/null +++ b/src/chart_types/xy_chart/rendering/bubble.ts @@ -0,0 +1,80 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { Scale } from '../../../scales'; +import { Color } from '../../../utils/commons'; +import { Dimensions } from '../../../utils/dimensions'; +import { BubbleGeometry } from '../../../utils/geometry'; +import { BubbleSeriesStyle } from '../../../utils/themes/theme'; +import { IndexedGeometryMap } from '../utils/indexed_geometry_map'; +import { DataSeries } from '../utils/series'; +import { PointStyleAccessor } from '../utils/specs'; +import { renderPoints } from './points'; +import { MarkSizeOptions } from './utils'; + +/** @internal */ +export function renderBubble( + shift: number, + dataSeries: DataSeries, + xScale: Scale, + yScale: Scale, + color: Color, + panel: Dimensions, + hasY0Accessors: boolean, + xScaleOffset: number, + seriesStyle: BubbleSeriesStyle, + markSizeOptions: MarkSizeOptions, + isMixedChart: boolean, + pointStyleAccessor?: PointStyleAccessor, +): { + bubbleGeometry: BubbleGeometry; + indexedGeometryMap: IndexedGeometryMap; +} { + const { pointGeometries, indexedGeometryMap } = renderPoints( + shift - xScaleOffset, + dataSeries, + xScale, + yScale, + panel, + color, + seriesStyle.point, + hasY0Accessors, + markSizeOptions, + pointStyleAccessor, + !isMixedChart, + ); + + const bubbleGeometry = { + points: pointGeometries, + color, + seriesIdentifier: { + key: dataSeries.key, + specId: dataSeries.specId, + yAccessor: dataSeries.yAccessor, + splitAccessors: dataSeries.splitAccessors, + seriesKeys: dataSeries.seriesKeys, + smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, + smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, + }, + seriesPointStyle: seriesStyle.point, + }; + return { + bubbleGeometry, + indexedGeometryMap, + }; +} diff --git a/src/chart_types/xy_chart/rendering/line.ts b/src/chart_types/xy_chart/rendering/line.ts new file mode 100644 index 0000000000..5e186c7f98 --- /dev/null +++ b/src/chart_types/xy_chart/rendering/line.ts @@ -0,0 +1,112 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { line } from 'd3-shape'; + +import { Scale } from '../../../scales'; +import { Color } from '../../../utils/commons'; +import { CurveType, getCurveFactory } from '../../../utils/curves'; +import { Dimensions } from '../../../utils/dimensions'; +import { LineGeometry } from '../../../utils/geometry'; +import { LineSeriesStyle } from '../../../utils/themes/theme'; +import { IndexedGeometryMap } from '../utils/indexed_geometry_map'; +import { DataSeries, DataSeriesDatum } from '../utils/series'; +import { PointStyleAccessor } from '../utils/specs'; +import { renderPoints } from './points'; +import { getClippedRanges, getY1ScaledValueOrThrow, isYValueDefined, MarkSizeOptions } from './utils'; + +/** @internal */ +export function renderLine( + shift: number, + dataSeries: DataSeries, + xScale: Scale, + yScale: Scale, + panel: Dimensions, + color: Color, + curve: CurveType, + hasY0Accessors: boolean, + xScaleOffset: number, + seriesStyle: LineSeriesStyle, + markSizeOptions: MarkSizeOptions, + pointStyleAccessor?: PointStyleAccessor, + hasFit?: boolean, +): { + lineGeometry: LineGeometry; + indexedGeometryMap: IndexedGeometryMap; +} { + const y1Fn = getY1ScaledValueOrThrow(yScale); + const definedFn = isYValueDefined(yScale, xScale); + + const pathGenerator = line() + .x(({ x }) => xScale.scaleOrThrow(x) - xScaleOffset) + .y(y1Fn) + .defined((datum) => { + return definedFn(datum); + }) + .curve(getCurveFactory(curve)); + + const { pointGeometries, indexedGeometryMap } = renderPoints( + shift - xScaleOffset, + dataSeries, + xScale, + yScale, + panel, + color, + seriesStyle.line, + hasY0Accessors, + markSizeOptions, + pointStyleAccessor, + ); + + const clippedRanges = getClippedRanges(dataSeries.data, xScale, xScaleOffset); + let linePath: string; + + try { + linePath = pathGenerator(dataSeries.data) || ''; + } catch { + // When values are not scalable + linePath = ''; + } + + const lineGeometry = { + line: linePath, + points: pointGeometries, + color, + transform: { + x: shift, + y: 0, + }, + seriesIdentifier: { + key: dataSeries.key, + specId: dataSeries.specId, + yAccessor: dataSeries.yAccessor, + splitAccessors: dataSeries.splitAccessors, + seriesKeys: dataSeries.seriesKeys, + smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, + smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, + }, + seriesLineStyle: seriesStyle.line, + seriesPointStyle: seriesStyle.point, + clippedRanges, + hideClippedRanges: !hasFit, + }; + return { + lineGeometry, + indexedGeometryMap, + }; +} diff --git a/src/chart_types/xy_chart/rendering/points.ts b/src/chart_types/xy_chart/rendering/points.ts new file mode 100644 index 0000000000..7f156931d2 --- /dev/null +++ b/src/chart_types/xy_chart/rendering/points.ts @@ -0,0 +1,230 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { Scale } from '../../../scales'; +import { Color } from '../../../utils/commons'; +import { Dimensions } from '../../../utils/dimensions'; +import { BandedAccessorType, PointGeometry } from '../../../utils/geometry'; +import { LineStyle, PointStyle } from '../../../utils/themes/theme'; +import { GeometryType, IndexedGeometryMap } from '../utils/indexed_geometry_map'; +import { DataSeries, DataSeriesDatum, FilledValues, XYChartSeriesIdentifier } from '../utils/series'; +import { PointStyleAccessor, StackMode } from '../utils/specs'; +import { + getY0ScaledValueOrThrow, + getY1ScaledValueOrThrow, + isDatumFilled, + isYValueDefined, + MarkSizeOptions, +} from './utils'; + +/** @internal */ +export function renderPoints( + shift: number, + dataSeries: DataSeries, + xScale: Scale, + yScale: Scale, + panel: Dimensions, + color: Color, + lineStyle: LineStyle, + hasY0Accessors: boolean, + markSizeOptions: MarkSizeOptions, + styleAccessor?: PointStyleAccessor, + spatial = false, +): { + pointGeometries: PointGeometry[]; + indexedGeometryMap: IndexedGeometryMap; +} { + const indexedGeometryMap = new IndexedGeometryMap(); + const getRadius = markSizeOptions.enabled + ? getRadiusFn(dataSeries.data, lineStyle.strokeWidth, markSizeOptions.ratio) + : () => 0; + const geometryType = spatial ? GeometryType.spatial : GeometryType.linear; + + const y1Fn = getY1ScaledValueOrThrow(yScale); + const y0Fn = getY0ScaledValueOrThrow(yScale); + const yDefined = isYValueDefined(yScale, xScale); + + const pointGeometries = dataSeries.data.reduce((acc, datum) => { + const { x: xValue, mark } = datum; + // don't create the point if not within the xScale domain + if (!xScale.isValueInDomain(xValue)) { + return acc; + } + // don't create the point if it that point was filled + if (isDatumFilled(datum)) { + return acc; + } + const x = xScale.scale(xValue); + + if (x === null) { + return acc; + } + + const points: PointGeometry[] = []; + const yDatumKeyNames: Array> = hasY0Accessors ? ['y0', 'y1'] : ['y1']; + + yDatumKeyNames.forEach((yDatumKeyName, index) => { + // skip rendering point if y1 is null + const radius = getRadius(mark); + let y: number | null; + try { + y = yDatumKeyName === 'y1' ? y1Fn(datum) : y0Fn(datum); + if (y === null) { + return; + } + } catch { + return; + } + + const originalY = getDatumYValue(datum, index === 0, hasY0Accessors, dataSeries.stackMode); + const seriesIdentifier: XYChartSeriesIdentifier = { + key: dataSeries.key, + specId: dataSeries.specId, + yAccessor: dataSeries.yAccessor, + splitAccessors: dataSeries.splitAccessors, + seriesKeys: dataSeries.seriesKeys, + smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, + smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, + }; + const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, styleAccessor); + const pointGeometry: PointGeometry = { + radius, + x, + y, + color, + value: { + x: xValue, + y: originalY, + mark, + accessor: hasY0Accessors && index === 0 ? BandedAccessorType.Y0 : BandedAccessorType.Y1, + datum: datum.datum, + }, + transform: { + x: shift, + y: 0, + }, + seriesIdentifier, + styleOverrides, + panel, + }; + indexedGeometryMap.set(pointGeometry, geometryType); + // use the geometry only if the yDatum in contained in the current yScale domain + if (yDefined(datum, yDatumKeyName)) { + points.push(pointGeometry); + } + }); + return [...acc, ...points]; + }, [] as PointGeometry[]); + return { + pointGeometries, + indexedGeometryMap, + }; +} + +/** @internal */ +export function getPointStyleOverrides( + datum: DataSeriesDatum, + seriesIdentifier: XYChartSeriesIdentifier, + pointStyleAccessor?: PointStyleAccessor, +): Partial | undefined { + const styleOverride = pointStyleAccessor && pointStyleAccessor(datum, seriesIdentifier); + + if (!styleOverride) { + return; + } + + if (typeof styleOverride === 'string') { + return { + stroke: styleOverride, + }; + } + + return styleOverride; +} + +/** + * Get the original/initial Y value from the datum + * @param datum a DataSeriesDatum + * @param lookingForY0 if we are interested in the y0 value, false for y1 + * @param isBandChart if the chart is a band chart + * @param stackMode an optional stack mode + */ +function getDatumYValue( + { y1, y0, initialY1, initialY0 }: DataSeriesDatum, + lookingForY0: boolean, + isBandChart: boolean, + stackMode?: StackMode, +) { + if (isBandChart) { + return stackMode === StackMode.Percentage + ? // on band stacked charts in percentage mode, the values I'm looking for are the percentage value + // that are already computed and available on y0 and y1 + lookingForY0 + ? y0 + : y1 + : // in all other cases for band charts, I want to get back the original/initial value of y0 and y1 + // not the computed value + lookingForY0 + ? initialY0 + : initialY1; + } + // if not a band chart get use the original/initial value in every case except for stack as percentage + // in this case, we should take the difference between the bottom position of the bar and the top position + // of the bar + return stackMode === StackMode.Percentage ? (y1 ?? 0) - (y0 ?? 0) : initialY1; +} + +/** + * Get radius function form ratio and min/max mark size + * + * @todo add continuous/non-stepped function + * + * @param {DataSeriesDatum[]} data + * @param {number} lineWidth + * @param {number=50} markSizeRatio - 0 to 100 + * @internal + */ +export function getRadiusFn( + data: DataSeriesDatum[], + lineWidth: number, + markSizeRatio: number = 50, +): (mark: number | null, defaultRadius?: number) => number { + if (data.length === 0) { + return () => 0; + } + const { min, max } = data.reduce( + (acc, { mark }) => + mark === null + ? acc + : { + min: Math.min(acc.min, mark / 2), + max: Math.max(acc.max, mark / 2), + }, + { min: Infinity, max: -Infinity }, + ); + const adjustedMarkSizeRatio = Math.min(Math.max(markSizeRatio, 0), 100); + const radiusStep = (max - min || max * 100) / Math.pow(adjustedMarkSizeRatio, 2); + return function getRadius(mark, defaultRadius = 0): number { + if (mark === null) { + return defaultRadius; + } + const circleRadius = (mark / 2 - min) / radiusStep; + const baseMagicNumber = 2; + return circleRadius ? Math.sqrt(circleRadius + baseMagicNumber) + lineWidth : lineWidth; + }; +} diff --git a/src/chart_types/xy_chart/rendering/rendering.areas.test.ts b/src/chart_types/xy_chart/rendering/rendering.areas.test.ts index 642f30b58a..8014e71c6e 100644 --- a/src/chart_types/xy_chart/rendering/rendering.areas.test.ts +++ b/src/chart_types/xy_chart/rendering/rendering.areas.test.ts @@ -786,6 +786,7 @@ describe('Rendering points - areas', () => { test('Can render a splitted area and line', () => { const { areas } = geometries.geometries; + const [{ value: firstArea }] = areas; expect(firstArea.lines[0].split('M').length - 1).toBe(3); expect(firstArea.area.split('M').length - 1).toBe(3); @@ -815,7 +816,7 @@ describe('Rendering points - areas', () => { expect(zeroValueIndexdGeometry).toBeDefined(); expect(zeroValueIndexdGeometry.length).toBe(1); // moved to the bottom of the chart - expect(zeroValueIndexdGeometry[0].y).toBe(100); + expect(zeroValueIndexdGeometry[0].y).toBe(Infinity); // 0 radius point expect((zeroValueIndexdGeometry[0] as PointGeometry).radius).toBe(0); }); diff --git a/src/chart_types/xy_chart/rendering/rendering.bubble.test.ts b/src/chart_types/xy_chart/rendering/rendering.bubble.test.ts index 6f0116443e..9e45c0b0ea 100644 --- a/src/chart_types/xy_chart/rendering/rendering.bubble.test.ts +++ b/src/chart_types/xy_chart/rendering/rendering.bubble.test.ts @@ -23,7 +23,6 @@ import { MockGlobalSpec, MockSeriesSpec } from '../../../mocks/specs'; import { MockStore } from '../../../mocks/store'; import { ScaleType } from '../../../scales/constants'; import { Position } from '../../../utils/commons'; -import { PointGeometry } from '../../../utils/geometry'; import { computeSeriesGeometriesSelector } from '../state/selectors/compute_series_geometries'; const SPEC_ID = 'spec_1'; @@ -739,12 +738,8 @@ describe('Rendering points - bubble', () => { y: 100, }); expect(zeroValueIndexdGeometry).toBeDefined(); - expect(zeroValueIndexdGeometry.length).toBe(5); + expect(zeroValueIndexdGeometry.length).toBe(3); expect(zeroValueIndexdGeometry.find(({ value: { x } }) => x === 5)).toBeDefined(); - // moved to the bottom of the chart - expect((zeroValueIndexdGeometry[0] as PointGeometry).y).toBe(100); - // 0 radius point - expect((zeroValueIndexdGeometry[0] as PointGeometry).radius).toBe(0); }); }); describe('Remove points datum is not in domain', () => { diff --git a/src/chart_types/xy_chart/rendering/rendering.lines.test.ts b/src/chart_types/xy_chart/rendering/rendering.lines.test.ts index c6772af436..58973be29b 100644 --- a/src/chart_types/xy_chart/rendering/rendering.lines.test.ts +++ b/src/chart_types/xy_chart/rendering/rendering.lines.test.ts @@ -704,8 +704,8 @@ describe('Rendering points - line', () => { const zeroValueIndexdGeometry = geometriesIndex.find(5)!; expect(zeroValueIndexdGeometry).toBeDefined(); expect(zeroValueIndexdGeometry.length).toBe(1); - // moved to the bottom of the chart - expect((zeroValueIndexdGeometry[0] as PointGeometry).y).toBe(100); + // the zero value is moved vertically to infinity + expect((zeroValueIndexdGeometry[0] as PointGeometry).y).toBe(Infinity); // 0 radius point expect((zeroValueIndexdGeometry[0] as PointGeometry).radius).toBe(0); }); diff --git a/src/chart_types/xy_chart/rendering/rendering.test.ts b/src/chart_types/xy_chart/rendering/rendering.test.ts index d41f737711..085131a251 100644 --- a/src/chart_types/xy_chart/rendering/rendering.test.ts +++ b/src/chart_types/xy_chart/rendering/rendering.test.ts @@ -23,14 +23,9 @@ import { MockScale } from '../../../mocks/scale'; import { mergePartial, RecursivePartial } from '../../../utils/commons'; import { BarSeriesStyle, SharedGeometryStateStyle, PointStyle } from '../../../utils/themes/theme'; import { DataSeriesDatum, XYChartSeriesIdentifier } from '../utils/series'; -import { - getGeometryStateStyle, - isPointOnGeometry, - getBarStyleOverrides, - getPointStyleOverrides, - getClippedRanges, - getRadiusFn, -} from './rendering'; +import { getBarStyleOverrides } from './bars'; +import { getPointStyleOverrides, getRadiusFn } from './points'; +import { getGeometryStateStyle, isPointOnGeometry, getClippedRanges } from './utils'; describe('Rendering utils', () => { test('check if point is on geometry', () => { diff --git a/src/chart_types/xy_chart/rendering/rendering.ts b/src/chart_types/xy_chart/rendering/rendering.ts deleted file mode 100644 index 665470cc96..0000000000 --- a/src/chart_types/xy_chart/rendering/rendering.ts +++ /dev/null @@ -1,912 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { area, line } from 'd3-shape'; - -import { LegendItem } from '../../../commons/legend'; -import { Scale } from '../../../scales'; -import { ScaleType } from '../../../scales/constants'; -import { isLogarithmicScale } from '../../../scales/types'; -import { MarkBuffer, StackMode } from '../../../specs'; -import { CanvasTextBBoxCalculator } from '../../../utils/bbox/canvas_text_bbox_calculator'; -import { mergePartial, Color, getDistance } from '../../../utils/commons'; -import { CurveType, getCurveFactory } from '../../../utils/curves'; -import { Dimensions } from '../../../utils/dimensions'; -import { - PointGeometry, - BarGeometry, - AreaGeometry, - LineGeometry, - isPointGeometry, - ClippedRanges, - BandedAccessorType, - BubbleGeometry, -} from '../../../utils/geometry'; -import { - AreaSeriesStyle, - LineSeriesStyle, - PointStyle, - SharedGeometryStateStyle, - BarSeriesStyle, - GeometryStateStyle, - LineStyle, - BubbleSeriesStyle, - DisplayValueStyle, -} from '../../../utils/themes/theme'; -import { IndexedGeometryMap, GeometryType } from '../utils/indexed_geometry_map'; -import { DataSeriesDatum, DataSeries, XYChartSeriesIdentifier } from '../utils/series'; -import { DisplayValueSpec, PointStyleAccessor, BarStyleAccessor } from '../utils/specs'; -import { DEFAULT_HIGHLIGHT_PADDING } from './constants'; - -export interface MarkSizeOptions { - enabled: boolean; - ratio?: number; -} -/** - * Returns a safe scaling factor for label text for fixed or range size inputs - * @internal - */ -function getFinalFontScalingFactor( - scale: number, - fixedFontSize: number, - limits: DisplayValueStyle['fontSize'], -): number { - if (typeof limits === 'number') { - // it's a fixed size, so it's always ok - return 1; - } - const finalFontSize = scale * fixedFontSize; - if (finalFontSize > limits.max) { - return limits.max / fixedFontSize; - } - if (finalFontSize < limits.min) { - // it's technically 1, but keep it generic in case the fixedFontSize changes - return limits.min / fixedFontSize; - } - return scale; -} - -/** - * Workout the text box size and fixedFontSize based on a collection of options - * @internal - */ -function computeBoxWidth( - text: string, - { - padding, - fontSize, - fontFamily, - bboxCalculator, - width, - }: { - padding: number; - fontSize: number | { min: number; max: number }; - fontFamily: string; - bboxCalculator: CanvasTextBBoxCalculator; - width: number; - }, - displayValueSettings: DisplayValueSpec | undefined, -): { fixedFontScale: number; displayValueWidth: number } { - const fixedFontScale = Math.max(typeof fontSize === 'number' ? fontSize : fontSize.min, 1); - - const computedDisplayValueWidth = bboxCalculator.compute(text || '', padding, fixedFontScale, fontFamily).width; - if (typeof fontSize !== 'number') { - return { - fixedFontScale, - displayValueWidth: computedDisplayValueWidth, - }; - } - return { - fixedFontScale, - displayValueWidth: - displayValueSettings && displayValueSettings.isValueContainedInElement ? width : computedDisplayValueWidth, - }; -} - -/** - * Returns value of `y1` or `filled.y1` or null - * @internal - */ -export const getYValue = ({ y1, filled }: DataSeriesDatum): number | null => { - if (y1 !== null) { - return y1; - } - - if (filled && filled.y1 !== undefined) { - return filled.y1; - } - - return null; -}; - -/** @internal */ -export function getPointStyleOverrides( - datum: DataSeriesDatum, - seriesIdentifier: XYChartSeriesIdentifier, - pointStyleAccessor?: PointStyleAccessor, -): Partial | undefined { - const styleOverride = pointStyleAccessor && pointStyleAccessor(datum, seriesIdentifier); - - if (!styleOverride) { - return; - } - - if (typeof styleOverride === 'string') { - return { - stroke: styleOverride, - }; - } - - return styleOverride; -} - -/** @internal */ -export function getBarStyleOverrides( - datum: DataSeriesDatum, - seriesIdentifier: XYChartSeriesIdentifier, - seriesStyle: BarSeriesStyle, - styleAccessor?: BarStyleAccessor, -): BarSeriesStyle { - const styleOverride = styleAccessor && styleAccessor(datum, seriesIdentifier); - - if (!styleOverride) { - return seriesStyle; - } - - if (typeof styleOverride === 'string') { - return { - ...seriesStyle, - rect: { - ...seriesStyle.rect, - fill: styleOverride, - }, - }; - } - - return mergePartial(seriesStyle, styleOverride, { - mergeOptionalPartialValues: true, - }); -} - -type GetRadiusFnReturn = (mark: number | null, defaultRadius?: number) => number; - -/** - * Get radius function form ratio and min/max mark size - * - * @todo add continuous/non-stepped function - * - * @param {Datum[]} radii - * @param {number} lineWidth - * @param {number=50} markSizeRatio - 0 to 100 - * @internal - */ -export function getRadiusFn(data: DataSeriesDatum[], lineWidth: number, markSizeRatio: number = 50): GetRadiusFnReturn { - if (data.length === 0) { - return () => 0; - } - const { min, max } = data.reduce( - (acc, { mark }) => - mark === null - ? acc - : { - min: Math.min(acc.min, mark / 2), - max: Math.max(acc.max, mark / 2), - }, - { min: Infinity, max: -Infinity }, - ); - const adjustedMarkSizeRatio = Math.min(Math.max(markSizeRatio, 0), 100); - const radiusStep = (max - min || max * 100) / Math.pow(adjustedMarkSizeRatio, 2); - return function getRadius(mark, defaultRadius = 0): number { - if (mark === null) { - return defaultRadius; - } - const circleRadius = (mark / 2 - min) / radiusStep; - const baseMagicNumber = 2; - const base = circleRadius ? Math.sqrt(circleRadius + baseMagicNumber) + lineWidth : lineWidth; - return base; - }; -} - -function renderPoints( - shift: number, - dataSeries: DataSeries, - xScale: Scale, - yScale: Scale, - panel: Dimensions, - color: Color, - lineStyle: LineStyle, - hasY0Accessors: boolean, - markSizeOptions: MarkSizeOptions, - styleAccessor?: PointStyleAccessor, - spatial = false, -): { - pointGeometries: PointGeometry[]; - indexedGeometryMap: IndexedGeometryMap; -} { - const indexedGeometryMap = new IndexedGeometryMap(); - const isLogScale = isLogarithmicScale(yScale); - const getRadius = markSizeOptions.enabled - ? getRadiusFn(dataSeries.data, lineStyle.strokeWidth, markSizeOptions.ratio) - : () => 0; - const geometryType = spatial ? GeometryType.spatial : GeometryType.linear; - const pointGeometries = dataSeries.data.reduce((acc, datum) => { - const { x: xValue, y0, y1, mark } = datum; - // don't create the point if not within the xScale domain - if (!xScale.isValueInDomain(xValue)) { - return acc; - } - // don't create the point if it that point was filled - if (isDatumFilled(datum)) { - return acc; - } - const x = xScale.scale(xValue); - - if (x === null) { - return acc; - } - - const points: PointGeometry[] = []; - const yDatums = hasY0Accessors ? [y0, y1] : [y1]; - - yDatums.forEach((yDatum, index) => { - // skip rendering point if y1 is null - if (y1 === null) { - return; - } - let y; - let radius = getRadius(mark); - // we fix 0 and negative values at y = 0 - if (yDatum === null || (isLogScale && yDatum <= 0)) { - y = yScale.range[0]; - radius = 0; - } else { - y = yScale.scale(yDatum); - } - - if (y === null) { - return acc; - } - const originalY = getDatumYValue(datum, index === 0, hasY0Accessors, dataSeries.stackMode); - const seriesIdentifier: XYChartSeriesIdentifier = { - key: dataSeries.key, - specId: dataSeries.specId, - yAccessor: dataSeries.yAccessor, - splitAccessors: dataSeries.splitAccessors, - seriesKeys: dataSeries.seriesKeys, - smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, - smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, - }; - const styleOverrides = getPointStyleOverrides(datum, seriesIdentifier, styleAccessor); - const pointGeometry: PointGeometry = { - radius, - x, - y, - color, - value: { - x: xValue, - y: originalY, - mark, - accessor: hasY0Accessors && index === 0 ? BandedAccessorType.Y0 : BandedAccessorType.Y1, - datum: datum.datum, - }, - transform: { - x: shift, - y: 0, - }, - seriesIdentifier, - styleOverrides, - panel, - }; - indexedGeometryMap.set(pointGeometry, geometryType); - // use the geometry only if the yDatum in contained in the current yScale domain - const isHidden = yDatum === null || (isLogScale && yDatum <= 0); - if (!isHidden && yScale.isValueInDomain(yDatum)) { - points.push(pointGeometry); - } - }); - return [...acc, ...points]; - }, [] as PointGeometry[]); - return { - pointGeometries, - indexedGeometryMap, - }; -} - -/** - * Get the original/initial Y value from the datum - * @param datum a DataSeriesDatum - * @param lookingForY0 if we are interested in the y0 value, false for y1 - * @param isBandChart if the chart is a band chart - * @param stackMode an optional stack mode - */ -function getDatumYValue( - { y1, y0, initialY1, initialY0 }: DataSeriesDatum, - lookingForY0: boolean, - isBandChart: boolean, - stackMode?: StackMode, -) { - if (isBandChart) { - return stackMode === StackMode.Percentage - ? // on band stacked charts in percentage mode, the values I'm looking for are the percentage value - // that are already computed and available on y0 and y1 - lookingForY0 - ? y0 - : y1 - : // in all other cases for band charts, I want to get back the original/initial value of y0 and y1 - // not the computed value - lookingForY0 - ? initialY0 - : initialY1; - } - // if not a band chart get use the original/initial value in every case except for stack as percentage - // in this case, we should take the difference between the bottom position of the bar and the top position - // of the bar - return stackMode === StackMode.Percentage ? (y1 ?? 0) - (y0 ?? 0) : initialY1; -} - -/** @internal */ -export function renderBars( - orderIndex: number, - dataSeries: DataSeries, - xScale: Scale, - yScale: Scale, - panel: Dimensions, - color: Color, - sharedSeriesStyle: BarSeriesStyle, - displayValueSettings?: DisplayValueSpec, - styleAccessor?: BarStyleAccessor, - minBarHeight?: number, - stackMode?: StackMode, - chartRotation?: number, -): { - barGeometries: BarGeometry[]; - indexedGeometryMap: IndexedGeometryMap; -} { - const indexedGeometryMap = new IndexedGeometryMap(); - const barGeometries: BarGeometry[] = []; - - const bboxCalculator = new CanvasTextBBoxCalculator(); - - // default padding to 1 for now - const padding = 1; - const { fontSize, fontFamily } = sharedSeriesStyle.displayValue; - const absMinHeight = minBarHeight && Math.abs(minBarHeight); - - dataSeries.data.forEach((datum) => { - const { y0, y1, initialY1, filled } = datum; - // don't create a bar if the initialY1 value is null. - if (y1 === null || initialY1 === null || (filled && filled.y1 !== undefined)) { - return; - } - // don't create a bar if not within the xScale domain - if (!xScale.isValueInDomain(datum.x)) { - return; - } - - let y: number | null = 0; - let y0Scaled; - if (yScale.type === ScaleType.Log) { - y = y1 === 0 || y1 === null ? yScale.range[0] : yScale.scale(y1); - if (yScale.isInverted) { - y0Scaled = y0 === 0 || y0 === null ? yScale.range[1] : yScale.scale(y0); - } else { - y0Scaled = y0 === 0 || y0 === null ? yScale.range[0] : yScale.scale(y0); - } - } else { - y = yScale.scale(y1); - if (yScale.isInverted) { - // use always zero as baseline if y0 is null - y0Scaled = y0 === null ? yScale.scale(0) : yScale.scale(y0); - } else { - y0Scaled = y0 === null ? yScale.scale(0) : yScale.scale(y0); - } - } - - if (y === null || y0Scaled === null) { - return; - } - let height = y0Scaled - y; - - // handle minBarHeight adjustment - if (absMinHeight !== undefined && height !== 0 && Math.abs(height) < absMinHeight) { - const heightDelta = absMinHeight - Math.abs(height); - if (height < 0) { - height = -absMinHeight; - y += heightDelta; - } else { - height = absMinHeight; - y -= heightDelta; - } - } - - const xScaled = xScale.scale(datum.x); - - if (xScaled === null) { - return; - } - - const x = xScaled + xScale.bandwidth * orderIndex; - const width = xScale.bandwidth; - const originalY1Value = stackMode === StackMode.Percentage ? y1 - (y0 ?? 0) : initialY1; - const formattedDisplayValue = - displayValueSettings && displayValueSettings.valueFormatter - ? displayValueSettings.valueFormatter(originalY1Value) - : undefined; - - // only show displayValue for even bars if showOverlappingValue - const displayValueText = - displayValueSettings && displayValueSettings.isAlternatingValueLabel && barGeometries.length % 2 - ? undefined - : formattedDisplayValue; - - const { displayValueWidth, fixedFontScale } = computeBoxWidth( - displayValueText || '', - { padding, fontSize, fontFamily, bboxCalculator, width }, - displayValueSettings, - ); - - const isHorizontalRotation = chartRotation == null || [0, 180].includes(chartRotation); - // Take 70% of space for the label text - const fontSizeFactor = 0.7; - // Pick the right side of the label's box to use as factor reference - const referenceWidth = Math.max(isHorizontalRotation ? displayValueWidth : fixedFontScale, 1); - - const textScalingFactor = getFinalFontScalingFactor( - (width * fontSizeFactor) / referenceWidth, - fixedFontScale, - fontSize, - ); - - const hideClippedValue = displayValueSettings ? displayValueSettings.hideClippedValue : undefined; - // Based on rotation scale the width of the text box - const bboxWidthFactor = isHorizontalRotation ? textScalingFactor : 1; - - const displayValue = - displayValueSettings && displayValueSettings.showValueLabel - ? { - fontScale: textScalingFactor, - fontSize: fixedFontScale, - text: displayValueText, - width: bboxWidthFactor * displayValueWidth, - height: textScalingFactor * fixedFontScale, - hideClippedValue, - isValueContainedInElement: displayValueSettings.isValueContainedInElement, - } - : undefined; - - const seriesIdentifier: XYChartSeriesIdentifier = { - key: dataSeries.key, - specId: dataSeries.specId, - yAccessor: dataSeries.yAccessor, - splitAccessors: dataSeries.splitAccessors, - seriesKeys: dataSeries.seriesKeys, - smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, - smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, - }; - - const seriesStyle = getBarStyleOverrides(datum, seriesIdentifier, sharedSeriesStyle, styleAccessor); - - const barGeometry: BarGeometry = { - displayValue, - x, - y, - transform: { - x: 0, - y: 0, - }, - width, - height, - color, - value: { - x: datum.x, - y: originalY1Value, - mark: null, - accessor: BandedAccessorType.Y1, - datum: datum.datum, - }, - seriesIdentifier, - seriesStyle, - panel, - }; - indexedGeometryMap.set(barGeometry); - barGeometries.push(barGeometry); - }); - - bboxCalculator.destroy(); - - return { - barGeometries, - indexedGeometryMap, - }; -} - -/** @internal */ -export function renderLine( - shift: number, - dataSeries: DataSeries, - xScale: Scale, - yScale: Scale, - panel: Dimensions, - color: Color, - curve: CurveType, - hasY0Accessors: boolean, - xScaleOffset: number, - seriesStyle: LineSeriesStyle, - markSizeOptions: MarkSizeOptions, - pointStyleAccessor?: PointStyleAccessor, - hasFit?: boolean, -): { - lineGeometry: LineGeometry; - indexedGeometryMap: IndexedGeometryMap; -} { - const isLogScale = isLogarithmicScale(yScale); - const pathGenerator = line() - .x(({ x }) => xScale.scaleOrThrow(x) - xScaleOffset) - .y((datum) => { - const yValue = getYValue(datum); - - if (yValue !== null) { - return yScale.scaleOrThrow(yValue); - } - - // this should never happen thanks to the defined function - return yScale.isInverted ? yScale.range[1] : yScale.range[0]; - }) - .defined((datum) => { - const yValue = getYValue(datum); - return yValue !== null && !(isLogScale && yValue <= 0) && xScale.isValueInDomain(datum.x); - }) - .curve(getCurveFactory(curve)); - - const { pointGeometries, indexedGeometryMap } = renderPoints( - shift - xScaleOffset, - dataSeries, - xScale, - yScale, - panel, - color, - seriesStyle.line, - hasY0Accessors, - markSizeOptions, - pointStyleAccessor, - ); - - const clippedRanges = getClippedRanges(dataSeries.data, xScale, xScaleOffset); - let linePath: string; - - try { - linePath = pathGenerator(dataSeries.data) || ''; - } catch { - // When values are not scalable - linePath = ''; - } - - const lineGeometry = { - line: linePath, - points: pointGeometries, - color, - transform: { - x: shift, - y: 0, - }, - seriesIdentifier: { - key: dataSeries.key, - specId: dataSeries.specId, - yAccessor: dataSeries.yAccessor, - splitAccessors: dataSeries.splitAccessors, - seriesKeys: dataSeries.seriesKeys, - smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, - smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, - }, - seriesLineStyle: seriesStyle.line, - seriesPointStyle: seriesStyle.point, - clippedRanges, - hideClippedRanges: !hasFit, - }; - return { - lineGeometry, - indexedGeometryMap, - }; -} - -/** @internal */ -export function renderBubble( - shift: number, - dataSeries: DataSeries, - xScale: Scale, - yScale: Scale, - color: Color, - panel: Dimensions, - hasY0Accessors: boolean, - xScaleOffset: number, - seriesStyle: BubbleSeriesStyle, - markSizeOptions: MarkSizeOptions, - isMixedChart: boolean, - pointStyleAccessor?: PointStyleAccessor, -): { - bubbleGeometry: BubbleGeometry; - indexedGeometryMap: IndexedGeometryMap; -} { - const { pointGeometries, indexedGeometryMap } = renderPoints( - shift - xScaleOffset, - dataSeries, - xScale, - yScale, - panel, - color, - seriesStyle.point, - hasY0Accessors, - markSizeOptions, - pointStyleAccessor, - !isMixedChart, - ); - - const bubbleGeometry = { - points: pointGeometries, - color, - seriesIdentifier: { - key: dataSeries.key, - specId: dataSeries.specId, - yAccessor: dataSeries.yAccessor, - splitAccessors: dataSeries.splitAccessors, - seriesKeys: dataSeries.seriesKeys, - smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, - smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, - }, - seriesPointStyle: seriesStyle.point, - }; - return { - bubbleGeometry, - indexedGeometryMap, - }; -} - -/** @internal */ - -export function renderArea( - shift: number, - dataSeries: DataSeries, - xScale: Scale, - yScale: Scale, - panel: Dimensions, - color: Color, - curve: CurveType, - hasY0Accessors: boolean, - xScaleOffset: number, - seriesStyle: AreaSeriesStyle, - markSizeOptions: MarkSizeOptions, - isStacked = false, - pointStyleAccessor?: PointStyleAccessor, - hasFit?: boolean, -): { - areaGeometry: AreaGeometry; - indexedGeometryMap: IndexedGeometryMap; -} { - const isLogScale = isLogarithmicScale(yScale); - - const pathGenerator = area() - .x(({ x }) => xScale.scaleOrThrow(x) - xScaleOffset) - .y1((datum) => { - const yValue = getYValue(datum); - if (yValue !== null) { - return yScale.scaleOrThrow(yValue); - } - // this should never happen thanks to the defined function - return yScale.isInverted ? yScale.range[1] : yScale.range[0]; - }) - .y0(({ y0 }) => { - return y0 === null || (isLogScale && y0 <= 0) ? yScale.range[0] : yScale.scaleOrThrow(y0); - }) - .defined((datum) => { - const yValue = getYValue(datum); - return yValue !== null && !(isLogScale && yValue <= 0) && xScale.isValueInDomain(datum.x); - }) - .curve(getCurveFactory(curve)); - - const clippedRanges = getClippedRanges(dataSeries.data, xScale, xScaleOffset); - - let y1Line: string | null; - - try { - y1Line = pathGenerator.lineY1()(dataSeries.data); - } catch { - // When values are not scalable - y1Line = null; - } - - const lines: string[] = []; - if (y1Line) { - lines.push(y1Line); - } - if (hasY0Accessors) { - let y0Line: string | null; - - try { - y0Line = pathGenerator.lineY0()(dataSeries.data); - } catch { - // When values are not scalable - y0Line = null; - } - if (y0Line) { - lines.push(y0Line); - } - } - - const { pointGeometries, indexedGeometryMap } = renderPoints( - shift - xScaleOffset, - dataSeries, - xScale, - yScale, - panel, - color, - seriesStyle.line, - hasY0Accessors, - markSizeOptions, - pointStyleAccessor, - false, - ); - - let areaPath: string; - - try { - areaPath = pathGenerator(dataSeries.data) || ''; - } catch { - // When values are not scalable - areaPath = ''; - } - - const areaGeometry: AreaGeometry = { - area: areaPath, - lines, - points: pointGeometries, - color, - transform: { - y: 0, - x: shift, - }, - seriesIdentifier: { - key: dataSeries.key, - specId: dataSeries.specId, - yAccessor: dataSeries.yAccessor, - splitAccessors: dataSeries.splitAccessors, - seriesKeys: dataSeries.seriesKeys, - smHorizontalAccessorValue: dataSeries.smHorizontalAccessorValue, - smVerticalAccessorValue: dataSeries.smVerticalAccessorValue, - }, - seriesAreaStyle: seriesStyle.area, - seriesAreaLineStyle: seriesStyle.line, - seriesPointStyle: seriesStyle.point, - isStacked, - clippedRanges, - hideClippedRanges: !hasFit, - }; - return { - areaGeometry, - indexedGeometryMap, - }; -} - -/** - * - * @param param0 - * @internal - */ -export function isDatumFilled({ filled, initialY1 }: DataSeriesDatum) { - return filled?.x !== undefined || filled?.y1 !== undefined || initialY1 === null || initialY1 === undefined; -} - -/** - * Gets clipped ranges that have been fitted to values - * @param dataset - * @param xScale - * @param xScaleOffset - * @param panel - * @internal - */ -export function getClippedRanges(dataset: DataSeriesDatum[], xScale: Scale, xScaleOffset: number): ClippedRanges { - let firstNonNullX: number | null = null; - let hasNull = false; - return dataset.reduce((acc, data) => { - const xScaled = xScale.scale(data.x); - if (xScaled === null) { - return acc; - } - - const xValue = xScaled - xScaleOffset + xScale.bandwidth / 2; - - if (isDatumFilled(data)) { - const endXValue = xScale.range[1] - xScale.bandwidth * (2 / 3); - if (firstNonNullX !== null && xValue === endXValue) { - acc.push([firstNonNullX, xValue]); - } - hasNull = true; - } else { - if (hasNull) { - if (firstNonNullX !== null) { - acc.push([firstNonNullX, xValue]); - } else { - acc.push([0, xValue]); - } - hasNull = false; - } - - firstNonNullX = xValue; - } - return acc; - }, []); -} - -/** @internal */ -export function getGeometryStateStyle( - seriesIdentifier: XYChartSeriesIdentifier, - sharedGeometryStyle: SharedGeometryStateStyle, - highlightedLegendItem?: LegendItem, - individualHighlight?: { [key: string]: boolean }, -): GeometryStateStyle { - const { default: defaultStyles, highlighted, unhighlighted } = sharedGeometryStyle; - - if (highlightedLegendItem) { - const isPartOfHighlightedSeries = seriesIdentifier.key === highlightedLegendItem.seriesIdentifier.key; - - return isPartOfHighlightedSeries ? highlighted : unhighlighted; - } - - if (individualHighlight) { - const { hasHighlight, hasGeometryHover } = individualHighlight; - if (!hasGeometryHover) { - return highlighted; - } - return hasHighlight ? highlighted : unhighlighted; - } - - return defaultStyles; -} - -/** @internal */ -export function isPointOnGeometry( - xCoordinate: number, - yCoordinate: number, - indexedGeometry: BarGeometry | PointGeometry, - buffer: MarkBuffer = DEFAULT_HIGHLIGHT_PADDING, -) { - const { x, y } = indexedGeometry; - if (isPointGeometry(indexedGeometry)) { - const { radius } = indexedGeometry; - const distance = getDistance( - { - x: xCoordinate, - y: yCoordinate, - }, - { - x, - y, - }, - ); - - const radiusBuffer = typeof buffer === 'number' ? buffer : buffer(radius); - - if (radiusBuffer === Infinity) { - return distance <= radius + DEFAULT_HIGHLIGHT_PADDING; - } - - return distance <= radius + radiusBuffer; - } - const { width, height } = indexedGeometry; - return yCoordinate >= y && yCoordinate <= y + height && xCoordinate >= x && xCoordinate <= x + width; -} diff --git a/src/chart_types/xy_chart/rendering/utils.ts b/src/chart_types/xy_chart/rendering/utils.ts new file mode 100644 index 0000000000..24f190fc3f --- /dev/null +++ b/src/chart_types/xy_chart/rendering/utils.ts @@ -0,0 +1,222 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { LegendItem } from '../../../commons/legend'; +import { Scale } from '../../../scales'; +import { LOG_MIN_ABS_DOMAIN } from '../../../scales/constants'; +import { getDomainPolarity } from '../../../scales/scale_continuous'; +import { isLogarithmicScale } from '../../../scales/types'; +import { MarkBuffer } from '../../../specs'; +import { getDistance } from '../../../utils/commons'; +import { BarGeometry, ClippedRanges, isPointGeometry, PointGeometry } from '../../../utils/geometry'; +import { GeometryStateStyle, SharedGeometryStateStyle } from '../../../utils/themes/theme'; +import { DataSeriesDatum, FilledValues, XYChartSeriesIdentifier } from '../utils/series'; +import { DEFAULT_HIGHLIGHT_PADDING } from './constants'; + +export interface MarkSizeOptions { + enabled: boolean; + ratio?: number; +} + +/** + * Returns value of `y1` or `filled.y1` or null by default. + * Passing a filled key (x, y1, y0) it will return that value or the filled one + * @internal + */ +export const getYDatumValue = ( + datum: DataSeriesDatum, + valueName: keyof Omit = 'y1', + returnFilled = true, +): number | null => { + const value = datum[valueName]; + if (value !== null || !returnFilled) { + return value; + } + return (datum.filled && datum.filled[valueName]) ?? null; +}; + +/** + * + * @param param0 + * @internal + */ +export function isDatumFilled({ filled, initialY1 }: DataSeriesDatum) { + return filled?.x !== undefined || filled?.y1 !== undefined || initialY1 === null || initialY1 === undefined; +} + +/** + * Gets clipped ranges that have been fitted to values + * @param dataset + * @param xScale + * @param xScaleOffset + * @internal + */ +export function getClippedRanges(dataset: DataSeriesDatum[], xScale: Scale, xScaleOffset: number): ClippedRanges { + let firstNonNullX: number | null = null; + let hasNull = false; + return dataset.reduce((acc, data) => { + const xScaled = xScale.scale(data.x); + if (xScaled === null) { + return acc; + } + + const xValue = xScaled - xScaleOffset + xScale.bandwidth / 2; + + if (isDatumFilled(data)) { + const endXValue = xScale.range[1] - xScale.bandwidth * (2 / 3); + if (firstNonNullX !== null && xValue === endXValue) { + acc.push([firstNonNullX, xValue]); + } + hasNull = true; + } else { + if (hasNull) { + if (firstNonNullX !== null) { + acc.push([firstNonNullX, xValue]); + } else { + acc.push([0, xValue]); + } + hasNull = false; + } + + firstNonNullX = xValue; + } + return acc; + }, []); +} + +/** @internal */ +export function getGeometryStateStyle( + seriesIdentifier: XYChartSeriesIdentifier, + sharedGeometryStyle: SharedGeometryStateStyle, + highlightedLegendItem?: LegendItem, + individualHighlight?: { [key: string]: boolean }, +): GeometryStateStyle { + const { default: defaultStyles, highlighted, unhighlighted } = sharedGeometryStyle; + + if (highlightedLegendItem) { + const isPartOfHighlightedSeries = seriesIdentifier.key === highlightedLegendItem.seriesIdentifier.key; + + return isPartOfHighlightedSeries ? highlighted : unhighlighted; + } + + if (individualHighlight) { + const { hasHighlight, hasGeometryHover } = individualHighlight; + if (!hasGeometryHover) { + return highlighted; + } + return hasHighlight ? highlighted : unhighlighted; + } + + return defaultStyles; +} + +/** @internal */ +export function isPointOnGeometry( + xCoordinate: number, + yCoordinate: number, + indexedGeometry: BarGeometry | PointGeometry, + buffer: MarkBuffer = DEFAULT_HIGHLIGHT_PADDING, +) { + const { x, y } = indexedGeometry; + if (isPointGeometry(indexedGeometry)) { + const { radius } = indexedGeometry; + const distance = getDistance( + { + x: xCoordinate, + y: yCoordinate, + }, + { + x, + y, + }, + ); + + const radiusBuffer = typeof buffer === 'number' ? buffer : buffer(radius); + + if (radiusBuffer === Infinity) { + return distance <= radius + DEFAULT_HIGHLIGHT_PADDING; + } + + return distance <= radius + radiusBuffer; + } + const { width, height } = indexedGeometry; + return yCoordinate >= y && yCoordinate <= y + height && xCoordinate >= x && xCoordinate <= x + width; +} + +/** + * The default zero baseline for area charts. + */ +const DEFAULT_ZERO_BASELINE = 0; +/** + * The zero baseline for log scales. + * We are currently limiting to 1 as min accepted domain for a log scale. + */ +const DEFAULT_LOG_ZERO_BASELINE = LOG_MIN_ABS_DOMAIN; + +/** @internal */ +export function isYValueDefined( + yScale: Scale, + xScale: Scale, +): (datum: DataSeriesDatum, valueName?: keyof Omit) => boolean { + const isLogScale = isLogarithmicScale(yScale); + const domainPolarity = getDomainPolarity(yScale.domain); + return (datum, valueName = 'y1') => { + const yValue = getYDatumValue(datum, valueName); + return ( + yValue !== null && + !((isLogScale && domainPolarity >= 0 && yValue <= 0) || (domainPolarity < 0 && yValue >= 0)) && + xScale.isValueInDomain(datum.x) && + yScale.isValueInDomain(yValue) + ); + }; +} + +/** @internal */ +export function getY1ScaledValueOrThrow(yScale: Scale): (datum: DataSeriesDatum) => number { + return (datum) => { + const yValue = getYDatumValue(datum); + return yScale.scaleOrThrow(yValue); + }; +} + +/** @internal */ +export function getY0ScaledValueOrThrow(yScale: Scale): (datum: DataSeriesDatum) => number { + const isLogScale = isLogarithmicScale(yScale); + const domainPolarity = getDomainPolarity(yScale.domain); + + return ({ y0 }) => { + if (y0 === null) { + if (isLogScale) { + // if all positive domain use 1 as baseline, -1 otherwise + return yScale.scaleOrThrow(domainPolarity >= 0 ? DEFAULT_LOG_ZERO_BASELINE : -DEFAULT_LOG_ZERO_BASELINE); + } + return yScale.scaleOrThrow(DEFAULT_ZERO_BASELINE); + } + if (isLogScale) { + // wrong y0 polarity + if ((domainPolarity >= 0 && y0 <= 0) || (domainPolarity < 0 && y0 >= 0)) { + // if all positive domain use 1 as baseline, -1 otherwise + return yScale.scaleOrThrow(domainPolarity >= 0 ? DEFAULT_LOG_ZERO_BASELINE : -DEFAULT_LOG_ZERO_BASELINE); + } + // if negative value, use -1 as max reference, 1 otherwise + return yScale.scaleOrThrow(y0); + } + return yScale.scaleOrThrow(y0); + }; +} diff --git a/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts b/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts index 734eae4edb..ec63bb6db6 100644 --- a/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts +++ b/src/chart_types/xy_chart/state/selectors/get_tooltip_values_highlighted_geoms.ts @@ -39,7 +39,7 @@ import { Rotation } from '../../../../utils/commons'; import { isValidPointerOverEvent } from '../../../../utils/events'; import { IndexedGeometry } from '../../../../utils/geometry'; import { Point } from '../../../../utils/point'; -import { isPointOnGeometry } from '../../rendering/rendering'; +import { isPointOnGeometry } from '../../rendering/utils'; import { formatTooltip } from '../../tooltip/tooltip'; import { BasicSeriesSpec, AxisSpec } from '../../utils/specs'; import { getAxesSpecForSpecId, getSpecsById } from '../utils/spec'; diff --git a/src/chart_types/xy_chart/state/utils/utils.ts b/src/chart_types/xy_chart/state/utils/utils.ts index b2ace9fa1d..7a9da69216 100644 --- a/src/chart_types/xy_chart/state/utils/utils.ts +++ b/src/chart_types/xy_chart/state/utils/utils.ts @@ -39,7 +39,11 @@ import { getPredicateFn, Predicate } from '../../../heatmap/utils/commons'; import { XDomain } from '../../domains/types'; import { mergeXDomain } from '../../domains/x_domain'; import { isStackedSpec, mergeYDomain } from '../../domains/y_domain'; -import { renderArea, renderBars, renderLine, renderBubble, isDatumFilled } from '../../rendering/rendering'; +import { renderArea } from '../../rendering/area'; +import { renderBars } from '../../rendering/bars'; +import { renderBubble } from '../../rendering/bubble'; +import { renderLine } from '../../rendering/line'; +import { isDatumFilled } from '../../rendering/utils'; import { defaultTickFormatter } from '../../utils/axis_utils'; import { fillSeries } from '../../utils/fill_series'; import { groupBy } from '../../utils/group_data_series'; diff --git a/src/mocks/series/utils.ts b/src/mocks/series/utils.ts index 8484bca685..36ac2808ff 100644 --- a/src/mocks/series/utils.ts +++ b/src/mocks/series/utils.ts @@ -17,7 +17,7 @@ * under the License. */ -import { getYValue } from '../../chart_types/xy_chart/rendering/rendering'; +import { getYDatumValue } from '../../chart_types/xy_chart/rendering/utils'; import { DataSeriesDatum } from '../../chart_types/xy_chart/utils/series'; /** @@ -44,4 +44,7 @@ export const getXValueData = (data: DataSeriesDatum[]): (number | string)[] => d * Returns value of `y1` or `filled.y1` or null * @internal */ -export const getYResolvedData = (data: DataSeriesDatum[]): (number | null)[] => data.map(getYValue); +export const getYResolvedData = (data: DataSeriesDatum[]): (number | null)[] => + data.map((d) => { + return getYDatumValue(d); + }); diff --git a/src/scales/constants.ts b/src/scales/constants.ts index 5a038c0289..38de953140 100644 --- a/src/scales/constants.ts +++ b/src/scales/constants.ts @@ -35,3 +35,6 @@ export const ScaleType = Object.freeze({ /** @public */ export type ScaleType = $Values; + +/** @internal */ +export const LOG_MIN_ABS_DOMAIN = 1; diff --git a/src/scales/scale_continuous.ts b/src/scales/scale_continuous.ts index 5aabf455a0..5c0797db98 100644 --- a/src/scales/scale_continuous.ts +++ b/src/scales/scale_continuous.ts @@ -33,7 +33,7 @@ import { ScaleContinuousType, Scale } from '.'; import { PrimitiveValue } from '../chart_types/partition_chart/layout/utils/group_by_rollup'; import { maxValueWithUpperLimit, mergePartial } from '../utils/commons'; import { getMomentWithTz } from '../utils/data/date_time'; -import { ScaleType } from './constants'; +import { LOG_MIN_ABS_DOMAIN, ScaleType } from './constants'; /** * d3 scales excluding time scale @@ -62,38 +62,39 @@ const SCALES = { export function limitLogScaleDomain(domain: any[]) { if (domain[0] === 0) { if (domain[1] > 0) { - return [1, domain[1]]; + return [LOG_MIN_ABS_DOMAIN, domain[1]]; } if (domain[1] < 0) { - return [-1, domain[1]]; + return [-LOG_MIN_ABS_DOMAIN, domain[1]]; } - return [1, 1]; + return [LOG_MIN_ABS_DOMAIN, LOG_MIN_ABS_DOMAIN]; } if (domain[1] === 0) { if (domain[0] > 0) { - return [domain[0], 1]; + return [domain[0], LOG_MIN_ABS_DOMAIN]; } if (domain[0] < 0) { - return [domain[0], -1]; + return [domain[0], -LOG_MIN_ABS_DOMAIN]; } - return [1, 1]; + return [LOG_MIN_ABS_DOMAIN, LOG_MIN_ABS_DOMAIN]; } if (domain[0] < 0 && domain[1] > 0) { const isD0Min = Math.abs(domain[1]) - Math.abs(domain[0]) >= 0; if (isD0Min) { - return [1, domain[1]]; + return [LOG_MIN_ABS_DOMAIN, domain[1]]; } - return [domain[0], -1]; + return [domain[0], -LOG_MIN_ABS_DOMAIN]; } if (domain[0] > 0 && domain[1] < 0) { const isD0Max = Math.abs(domain[0]) - Math.abs(domain[1]) >= 0; if (isD0Max) { - return [domain[0], 1]; + return [domain[0], LOG_MIN_ABS_DOMAIN]; } - return [-1, domain[1]]; + return [-LOG_MIN_ABS_DOMAIN, domain[1]]; } return domain; } + interface ScaleData { /** The Type of continuous scale */ type: ScaleContinuousType; @@ -361,3 +362,18 @@ export class ScaleContinuous implements Scale { return value >= this.domain[0] && value <= this.domain[1]; } } + +/** @internal */ +export function getDomainPolarity(domain: number[]): number { + const [min, max] = domain; + // all positive or zero + if (min >= 0 && max >= 0) { + return 1; + } + // all negative or zero + if (min <= 0 && max <= 0) { + return -1; + } + // mixed + return 0; +} diff --git a/stories/area/17_negative.tsx b/stories/area/17_negative.tsx new file mode 100644 index 0000000000..6c409e8b46 --- /dev/null +++ b/stories/area/17_negative.tsx @@ -0,0 +1,63 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { select } from '@storybook/addon-knobs'; +import React from 'react'; + +import { AreaSeries, Axis, Chart, Position, ScaleType, timeFormatter } from '../../src'; +import { KIBANA_METRICS } from '../../src/utils/data_samples/test_dataset_kibana'; +import { SB_SOURCE_PANEL } from '../utils/storybook'; + +const dateFormatter = timeFormatter('HH:mm'); + +const data = KIBANA_METRICS.metrics.kibana_os_load[0].data.map(([x, y]) => { + return [x, -y]; +}); +export const Example = () => { + const scaleType = select( + 'Y scale', + { + [ScaleType.Linear]: ScaleType.Linear, + [ScaleType.Log]: ScaleType.Log, + }, + ScaleType.Linear, + ); + return ( + + + Number(d).toFixed(2)} /> + + + + ); +}; + +// storybook configuration +Example.story = { + parameters: { + options: { selectedPanel: SB_SOURCE_PANEL }, + }, +}; diff --git a/stories/area/18_negative_positive.tsx b/stories/area/18_negative_positive.tsx new file mode 100644 index 0000000000..f5002af184 --- /dev/null +++ b/stories/area/18_negative_positive.tsx @@ -0,0 +1,80 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { select } from '@storybook/addon-knobs'; +import React from 'react'; + +import { AreaSeries, Axis, Chart, Position, ScaleType, Settings, timeFormatter } from '../../src'; +import { KIBANA_METRICS } from '../../src/utils/data_samples/test_dataset_kibana'; +import { SB_SOURCE_PANEL } from '../utils/storybook'; + +const dateFormatter = timeFormatter('HH:mm'); + +export const Example = () => { + const dataset = KIBANA_METRICS.metrics.kibana_os_load[0]; + const scaleType = select( + 'Y scale', + { + [ScaleType.Linear]: ScaleType.Linear, + [ScaleType.Log]: ScaleType.Log, + }, + ScaleType.Linear, + ); + + return ( + + + + Number(d).toFixed(2)} /> + + { + return [x, i < dataset.data.length / 2 ? -y : y]; + })} + /> + { + return [x, i >= dataset.data.length / 2 ? -y : y]; + })} + /> + + ); +}; +// storybook configuration +Example.story = { + parameters: { + options: { selectedPanel: SB_SOURCE_PANEL }, + }, +}; diff --git a/stories/area/19_negative_band.tsx b/stories/area/19_negative_band.tsx new file mode 100644 index 0000000000..664fa6d898 --- /dev/null +++ b/stories/area/19_negative_band.tsx @@ -0,0 +1,84 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { select } from '@storybook/addon-knobs'; +import React from 'react'; + +import { AreaSeries, Axis, Chart, Fit, LineSeries, Position, ScaleType, Settings } from '../../src'; +import { SB_SOURCE_PANEL } from '../utils/storybook'; + +export const Example = () => { + const scaleType = select( + 'Y scale', + { + [ScaleType.Linear]: ScaleType.Linear, + [ScaleType.Log]: ScaleType.Log, + }, + ScaleType.Linear, + ); + + const data = [ + [0, -5, -2], + [1, -6, -2.1], + [2, -8, -0.9], + [3, -3, -1.2], + [4, -2.3, -1.6], + [5, -4, -3.4], + ]; + + return ( + + + + Number(d).toFixed(2)} /> + + + + { + return [x, (y1 + y0) / 2]; + })} + /> + + ); +}; +// storybook configuration +Example.story = { + parameters: { + options: { selectedPanel: SB_SOURCE_PANEL }, + }, +}; diff --git a/stories/area/area.stories.tsx b/stories/area/area.stories.tsx index d14005973e..7b16c2dbdc 100644 --- a/stories/area/area.stories.tsx +++ b/stories/area/area.stories.tsx @@ -40,6 +40,9 @@ export { Example as stackedSameNaming } from './10_stacked_same_naming'; export { Example as bandArea } from './13_band_area'; export { Example as stackedBand } from './14_stacked_band'; export { Example as stackedGrouped } from './15_stacked_grouped'; +export { Example as withNegativeValues } from './17_negative'; +export { Example as withNegativeAndPositive } from './18_negative_positive'; +export { Example as withNegativeBand } from './19_negative_band'; export { Example as testLinear } from './11_test_linear'; export { Example as testTime } from './12_test_time';