From e6333da42cfe4ec1e5507e1e2c40d175f3854e29 Mon Sep 17 00:00:00 2001 From: Louis-Maxime Piton Date: Fri, 28 Jun 2024 09:50:56 +0200 Subject: [PATCH] docs(examples): add pie and donut charts --- NOTICE.txt | 2 + docs/examples/donut-chart.html | 63 +++++++++++++++++++++ docs/examples/index.html | 32 ++++++++++- docs/examples/index.js | 74 +++++++++++++++++++++++++ docs/examples/pie-chart.html | 63 +++++++++++++++++++++ docs/images/ods-bar-charts.png | Bin 1899 -> 150 bytes docs/images/ods-donut-charts.png | Bin 0 -> 910 bytes docs/images/ods-double-line-charts.png | Bin 3766 -> 770 bytes docs/images/ods-line-charts.png | Bin 2980 -> 595 bytes docs/images/ods-mixed-charts.png | Bin 3700 -> 467 bytes docs/images/ods-pie-charts.png | Bin 0 -> 670 bytes docs/images/ods-stacked-bar-charts.png | Bin 2048 -> 215 bytes 12 files changed, 233 insertions(+), 1 deletion(-) create mode 100644 docs/examples/donut-chart.html create mode 100644 docs/examples/pie-chart.html create mode 100644 docs/images/ods-donut-charts.png create mode 100644 docs/images/ods-pie-charts.png diff --git a/NOTICE.txt b/NOTICE.txt index 521eacdd..e8c9fe0d 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -8,9 +8,11 @@ and reproducing the content of the NOTICE and DOCUMENTATION files. Any use or displaying shall constitute an infringement under intellectual property laws of France and international conventions. docs/images/ods-bar-charts.png +docs/images/ods-donut-charts.png docs/images/ods-double-line-charts.png docs/images/ods-line-charts.png docs/images/ods-mixed-charts.png +docs/images/ods-pie-charts.png docs/images/ods-stacked-bar-charts.png docs/images/orange-logo.svg docs/images/favicons/android-chrome-192x192.png diff --git a/docs/examples/donut-chart.html b/docs/examples/donut-chart.html new file mode 100644 index 00000000..47c67106 --- /dev/null +++ b/docs/examples/donut-chart.html @@ -0,0 +1,63 @@ + + + + + + Donut Charts - Examples - ODS Charts + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

Donut charts example

+
+
+
+
+
+
Donut chart
+

Used to show proportions rather than absolute values.

+
+ +
+
+
+
+ + + + + diff --git a/docs/examples/index.html b/docs/examples/index.html index ae0bfa7a..cf3a7c1f 100644 --- a/docs/examples/index.html +++ b/docs/examples/index.html @@ -111,7 +111,7 @@
Stacked bar chart
Orange Design System
Bar + line chart
-

Compare proportional contributions within a category.

+

Two metric values showing quantity alongside changes in trends over time.

Orange Design System - Data display
+ +
+
+ +
+
Orange Design System
+
Pie chart
+

Divides data into sectors that each represent a proportion of the whole.

+ Orange Design System - Data display +
+ +
+
+ +
+
+ +
+
Orange Design System
+
Donut chart
+

Shows the relationship of parts to a whole.

+ Orange Design System - Data display +
+ +
+
diff --git a/docs/examples/index.js b/docs/examples/index.js index f231f06c..3cbbd97b 100644 --- a/docs/examples/index.js +++ b/docs/examples/index.js @@ -912,3 +912,77 @@ window.generateBarLineChart = async (id, horizontal = false, grouped = false, st ODSCharts.ODSChartsLineStyle.BROKEN_WITH_POINTS ); }; + +window.generatePieChart = async (id) => { + // Specify the configuration items and data for the chart + var option = { + legend: { + orient: 'vertical', + right: '10', + top: '10', + }, + series: [ + { + type: 'pie', + label: { show: false }, + labelLine: { show: false }, + data: [ + { name: 'Label 1', value: 25 }, + { name: 'Label 2', value: 50 }, + { name: 'Label 3', value: 75 }, + { name: 'Label 4', value: 10 }, + { name: 'Label 5', value: 100 }, + { name: 'Label 6', value: 30 }, + { name: 'Label 7', value: 5 }, + ], + label: { + show: false, + position: 'outside', + }, + radius: ['0%', '95%'], + }, + ], + }; + displayChart(id, option, undefined, ODSCharts.ODSChartsCategoricalColorsSet.DEFAULT_SUPPORTING_COLORS); +}; + +window.generateDonutChart = async (id) => { + // Specify the configuration items and data for the chart + var option = { + legend: { + orient: 'vertical', + right: '10', + top: '10', + }, + series: [ + { + type: 'pie', + label: { show: false }, + labelLine: { show: false }, + data: [ + { name: 'Label 1', value: 25 }, + { name: 'Label 2', value: 50 }, + { name: 'Label 3', value: 75 }, + { name: 'Label 4', value: 10 }, + { name: 'Label 5', value: 100 }, + { name: 'Label 6', value: 30 }, + { name: 'Label 7', value: 5 }, + ], + label: { + show: false, + position: 'center', + }, + emphasis: { + label: { + show: true, + fontSize: 35, + fontWeight: 700, + formatter: '{d}%', + }, + }, + radius: ['80%', '95%'], + }, + ], + }; + displayChart(id, option, undefined, ODSCharts.ODSChartsCategoricalColorsSet.DEFAULT_SUPPORTING_COLORS); +}; diff --git a/docs/examples/pie-chart.html b/docs/examples/pie-chart.html new file mode 100644 index 00000000..14b8325b --- /dev/null +++ b/docs/examples/pie-chart.html @@ -0,0 +1,63 @@ + + + + + + Pie Charts - Examples - ODS Charts + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+

Pie charts example

+
+
+
+
+
+
Pie chart
+

Used to show proportions rather than absolute values.

+
+ +
+
+
+
+ + + + + diff --git a/docs/images/ods-bar-charts.png b/docs/images/ods-bar-charts.png index 830e5bed2c541a9a5cb13473d4d8cf22ab325d6d..05c5db7c8c0bd0de97c48b57ee61d0ce23568748 100644 GIT binary patch delta 133 zcmaFOH;r+EL>(hD0|UdK+o}tJ6k~CayA#8@b22Z19JTgTe~DWM4fp$;u4 literal 1899 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCpWt8ulAh%XTY(f~age(c!@6@aFM%AF)CkWs zUtb0-Ae)1Mu|1Q41*8OsrGS`$fq4NV12d3j1c@zRg2^&YSilTpGn@b^yuoLY%)r2Q z)zif>q=ND7or5Q3+(lXgJvD^d7bl4HG#6ULcSeF~2S6$BU$jtY#12UEQLeE**v$CMo!4(K!9-*AV8i6xDNB|9yY jP1V6+!yQK2a{n>^6&0SCv8w9|sG{?9^>bP0l+XkKf3%el diff --git a/docs/images/ods-donut-charts.png b/docs/images/ods-donut-charts.png new file mode 100644 index 0000000000000000000000000000000000000000..60b8b882e5fb59f966468bac8799519688e4f04e GIT binary patch literal 910 zcmV;919AL`P)Px#7*I@9MgRZ*>*V#?!|=cR;)=Okzom$`~Uz0BuPX;RCwC$+|O^* zFcb&y=dOjTTc~zTqwZcNs$Mf#;JW^J>J=ndt_-pI-$yVfPl>j~5~}o`_cBDl2!96 zJjo+Z7P(KMme&?!&qWm)xg_xhbBNq*63HP!Ocsi(LN|yYLyn;*$b!t+gtpvhl1b>u zJG{vPks!ia$C4lxJJ&e$1hLe)jwwMF_9|V1T-$1rDztt7xbWnrv%JGtgM7=VHfuFX zxw2FtryC;SaUInpwHfhr! z%!Q3o|4PpqH4VahQtKi#e$fkNu|ZV#t=FNE(FYg_FL-=EZL&e1{p;9F3y5!bx#5;>9RFZV)siTt1eW8Fnk z$tr8WNOh4o=~;tHj#PhBJe@i42=7 z9=1aCg%XT8QoKMZD8Yy$uXl@)l5n(AJNlj|NvU@HeJ#5VDX!Fhw_nP)NQ$}IiDV;7 z-xL$IK|agqn_{eXMm)AwTFI-ez1oSrAdxVU9MlF`Q4*&C{KIG4h z!t}L^D{gqp7h%TS*xR_8bXw6fMkO~2!rPui%ox! z8?(<+^-LkQ%A`{ucAswR<}jP2lf!P3Ru0P#PIB#o@h3p*=2%#Nl=UgbJL}Kn-Uq(D ky`JL9U;qFB004lN-~Y9Vd;kCd literal 0 HcmV?d00001 diff --git a/docs/images/ods-double-line-charts.png b/docs/images/ods-double-line-charts.png index 4ca0241db51e1ca9d025b96e172c60ff497feb11..d375c43b5b23e6ec5086f5e9a7696d8ae041b478 100644 GIT binary patch literal 770 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCpI~7Ik|x%xE&?gW;vjb?hIQv;UIID%0X`wF z|NsAg`{c*1!yi|+-SkwP*zIL|lYxP0p{I*uNX4zUcVe?18%VS!dTwSsdaGe=PQsjg z?#=&A&zf}XGvShZ;d-(0bKKIU;&m3=ehFt3owIyCrx-7>`1QX(rv(B%?k!ckB6mvQ zlwhcYlkTG_Z3Z4KCM}Lib>7YrDssOjh@CHsvF8z{S{Vg-m?wQ9n#r}x=CffDjle|QKTQaEqXcvXStQ;%>2 zrxE`l&Na+4*$;l5&~&DmVRg`iN&&wF%@Z~p>Knvb96N*~I1VWs;oM`Ta(%U$q^aQMDd&m+eb4lskYR8H@*V|I`<~qh{Gi?uhd`q%rMoPT&q~`AQ2`jh# z`FOi&b^3&zE3%!7dbFDNyq$KfZHvTQo<#xzY?7gDf-NQr>dh}4jac3pxOzNZCKc++ zaXchh07#0oZ;)$oR50uiXmK=f6>Tx#SYfQ`B=ICTR8^7Z(E9KupaH3I!D0;t9Q92z zUb)B01xd8nbM4*o^yknePd+`(BdM z*;2|r+>Cv6HbBdwLqAID((m2O**_Z!^kqLcscUZlo&8&69104| zMP-U6_*t`0lS_Gh#3V?dmR(?8=cSde9F5K&QG3Sl>6foeyBrJqDqBvcZTiw80a+88 zn&o9h6(x@w+XXcB@P2cVY?oM4pg&PbMgE_@Oq)bfhawVDqwdUOctpUNrx233cFMoe Z=ggQ?;dUjv9GH$7JYD@<);T3K0RRJkL;nB( literal 3766 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 aTvQO=VKFa1K0ChgX0$Z5GbuUZaq*uwqZ)_+ diff --git a/docs/images/ods-line-charts.png b/docs/images/ods-line-charts.png index 82193d02af68b5c8e1f2d10f148a87391a5272d3..4313bd761ede02f56d8b4fe55668750bad98927c 100644 GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCpI~7Ik|x%xE&?gW;vjb?hIQv;UIID%0X`wF z|NsAg_3+z<33pbs-tbhMDAA<&1*q(kr;B4q#jUruHs&5SU|xX_{^05z$Tm zeFSGPw43MzN&GnwE6B3)&j;lwv6wS>K*pWxa|INgS~vuiTslw~H9VWHWN_rB8?{U; zUwu&ER+RN3MV?FRQaGCL*iKgDIizxM!rHG{IxUV>=|EzJiqIhipGn+_6UvS{Nj!OB zKYyVB+s;>u@9qs!pyV^;S=hN@gGr1BcY${-S?kMpj@BI=VkXgGlfjVvd9$0WR z8+fV!OqP&*GEnP8Q27T9g%Kg7@gEIZ3ogPxatvE_gkIBT*plnKCeJj<0s%X#UV> z4)mE#(}@-X4*pgl#nf~Gua-4DlXx|)n^T;_*iN=hxtgEEjS=uX3jci|QDJBd0>2aP ZCtVD5-Y4jM2$(P!JYD@<);T3K0RXw}?K1!X literal 2980 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 T(b&DDts9>i(b}lkfEw{%V$A{9 diff --git a/docs/images/ods-pie-charts.png b/docs/images/ods-pie-charts.png new file mode 100644 index 0000000000000000000000000000000000000000..83c349ae3c6059975b14b99675564c762161594d GIT binary patch literal 670 zcmV;P0%84$P)Px#3{Xr|MgRZ**~9RuhS^CWk^f43TL1t8KuJVFRCwC$+P!hBKp2H#3Fck}1Qc)s zN}vQ(f&%Xbl(0?U5}e%JfdaEGVoO^G9>#)$vhS>|@p&6~hW!y};h>aKN-3q3Qc5YM zlu}A5rIb;h(z9$_U%DH#y^nXmVeXV$#u$eQ^M5W>t4`^Xz%aRD+DZts9ZOQZsXu)G>T2+OMl zgm4S)03od50T99(o&X`N;RFa_4d((#1qk5|TmwSbji(Yw0|;TuxA&3P$3i+l2)`?R z31qmByge2&eKRr>euN(#$$)&tLdsu>kY9s@63AEr@g??&<6KEvBcTK`!f+7~PeGANM4iIO5sMaD9%#R08h7rRc@k&n@$B>F!Z_gSEH7M}7I_kYt-MeJjLe8j#JUqW=`OMnC)MJv0CjAfOv sB)2koLgmC7MF9?=zBQd5ldfFkJ^L>`PdDvKFwhkYp00i_>zopr06Hv7EC2ui literal 2048 zcmeHITToL+7(QpS;K>O(ha?~{jz+x&?rhG(3AvvdT35S?^fwDLGo@)H4g>0j+m5AQNuFzy2J%r=&s+- zm&}h<`k09FeANgIuaz6!He;-E+T`Q%#)x@=J-VK}t+%GQR=ia7^>3^`Qk&7-*Vff@ zH34BJjM+XT=z1|`xYr*F?r$UrFU3l;VS(>>LTr;Im}z7*uF4<$X7aqa!I$B7`Ftj3#O&PuYWL zM}VRtQOcPtS1B6BA~sSTu}iLk!u0=z|9e#1OCREnguxw;0tepqzxuWFr%K8mj}E$f zm)Yb9s}Y-p{+vLgTu_WN%8L7Va+9S*jA3b%4&Zv$S5Wq305>-%8Nfve?xy$} zx$4>sV$-reYcNynqikutxDeqGsm7IT3vy8Qqr4c>cXB3ALIIq{?+}0s?9R2MJ9Ey} zW&%t0Bzlg;(ON%_q#22=`pwpfG;%-*uFZ@Y7o^c9JO$oN#1^o$Z4YJF(vG_O5AI+_ z$!c6ls~7vL+-kwy^7ic46r^%2+`T3e;T9mN%9*23nKXi%J-TK(@2TR&)E6(-BFy?I z&137U8P1|GS+aJt8+q~_FGe)h2hb=B9mpHA|7m%utoe+TJ1N^Do?iUAh_c@YKwC*u zDDg%M?k9me#u4EZa5cK@83R!o*BOVC;WA*YYS^-=2tPq==h{EQ5w4P12XZWnItELf z9X0KDufMwSph0=@E*_1i+T!@vz~(u~oc)O!GAELMIrS{BaI?0$q5O1eYcFn(_DVau z%uDpVXD=MWUWq%7M%g1xmh2PHXCk~LYTcWamUzjw^iEHDF~;KYE$wgSq&8Eo<%g1locUJmYf U^V^S6L$9xX`fOcIQrgbH0oA0$rT_o{