From 15e2ea65d2ca6b6a65ce89d49e66f3cbd103888b Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 14:36:12 +0200 Subject: [PATCH 01/10] added label to piechart --- .../UserInterfaceState.xcuserstate | Bin 0 -> 22227 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++++++++++ .../SwiftUICharts/PieChart/PieChartCell.swift | 1 + .../SwiftUICharts/PieChart/PieChartRow.swift | 16 +++++++++++----- .../SwiftUICharts/PieChart/PieChartView.swift | 10 ++++++---- 5 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/ahmadrahimi.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 .swiftpm/xcode/xcuserdata/ahmadrahimi.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/ahmadrahimi.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/ahmadrahimi.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f93918c8ee7ea98b198505683a815e4f2533e72f GIT binary patch literal 22227 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 + + + + SchemeUserState + + SwiftUICharts.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Sources/SwiftUICharts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/PieChart/PieChartCell.swift index f511165e..0722e334 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartCell.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartCell.swift @@ -13,6 +13,7 @@ struct PieSlice: Identifiable { var startDeg: Double var endDeg: Double var value: Double + var label: String = "" var normalizedValue: Double } diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index a462cd96..7261b00d 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -8,8 +8,14 @@ import SwiftUI +struct PieChartData { + var label: String = "" + var value: Double +} + public struct PieChartRow : View { - var data: [Double] + var data: [PieChartData] + var labeledData: [(String, Double)]? var backgroundColor: Color var accentColor: Color var slices: [PieSlice] { @@ -17,23 +23,23 @@ public struct PieChartRow : View { var lastEndDeg:Double = 0 let maxValue = data.reduce(0, +) for slice in data { - let normalized:Double = Double(slice)/Double(maxValue) + let normalized:Double = Double(slice.value)/Double(maxValue) let startDeg = lastEndDeg let endDeg = lastEndDeg + (normalized * 360) lastEndDeg = endDeg - tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice, normalizedValue: normalized)) + tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice.value, normalizedValue: normalized, label: slice.label)) } return tempSlices } @Binding var showValue: Bool - @Binding var currentValue: Double + @Binding var currentValue: PieChartData @State private var currentTouchedIndex = -1 { didSet { if oldValue != currentTouchedIndex { showValue = currentTouchedIndex != -1 - currentValue = showValue ? slices[currentTouchedIndex].value : 0 + currentValue = showValue ? PieChartData(label: slices[currentTouchedIndex].label, value: slices[currentTouchedIndex].value) : PieChartData(value: 0) } } } diff --git a/Sources/SwiftUICharts/PieChart/PieChartView.swift b/Sources/SwiftUICharts/PieChart/PieChartView.swift index 81609bd1..5ea04678 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartView.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartView.swift @@ -9,16 +9,17 @@ import SwiftUI public struct PieChartView : View { - public var data: [Double] + public var data: [PieChartData] public var title: String public var legend: String? public var style: ChartStyle public var formSize:CGSize public var dropShadow: Bool public var valueSpecifier:String + public var showPercentage:Bool @State private var showValue = false - @State private var currentValue: Double = 0 { + @State private var currentValue: PieChartData = PieChartData(value: 0) { didSet{ if(oldValue != self.currentValue && self.showValue) { HapticFeedback.playSelection() @@ -26,7 +27,7 @@ public struct PieChartView : View { } } - public init(data: [Double], title: String, legend: String? = nil, style: ChartStyle = Styles.pieChartStyleOne, form: CGSize? = ChartForm.medium, dropShadow: Bool? = true, valueSpecifier: String? = "%.1f"){ + public init(data: [PieChartData], title: String, legend: String? = nil, style: ChartStyle = Styles.pieChartStyleOne, form: CGSize? = ChartForm.medium, dropShadow: Bool? = true, valueSpecifier: String? = "%.1f", showPercentage: Bool? = false){ self.data = data self.title = title self.legend = legend @@ -37,6 +38,7 @@ public struct PieChartView : View { } self.dropShadow = dropShadow! self.valueSpecifier = valueSpecifier! + self.showPercentage = showPercentage } public var body: some View { @@ -52,7 +54,7 @@ public struct PieChartView : View { .font(.headline) .foregroundColor(self.style.textColor) }else{ - Text("\(self.currentValue, specifier: self.valueSpecifier)") + Text("\(self.currentValue.label) \(self.currentValue, specifier: self.valueSpecifier)\(self.showPercentage ? "%" : "")") .font(.headline) .foregroundColor(self.style.textColor) } From 676ca82fe1050a551ee0f03002c231ed215826c9 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 14:45:50 +0200 Subject: [PATCH 02/10] added readme --- .gitignore | 1 + .../contents.xcworkspacedata | 7 ----- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ------ .../UserInterfaceState.xcuserstate | Bin 22227 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 37106 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 21902 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 20394 -> 0 bytes .../xcschemes/xcschememanagement.plist | 14 --------- .../xcschemes/xcschememanagement.plist | 27 ------------------ .../xcschemes/xcschememanagement.plist | 14 --------- README.md | 8 +++++- 11 files changed, 8 insertions(+), 71 deletions(-) delete mode 100644 .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata delete mode 100644 .swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/ahmadrahimi.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/andrassamu.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/roderic.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 .swiftpm/xcode/package.xcworkspace/xcuserdata/samuandris.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 .swiftpm/xcode/xcuserdata/ahmadrahimi.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 .swiftpm/xcode/xcuserdata/andrassamu.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 .swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.gitignore b/.gitignore index 02c08753..0c62eec1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /.build /Packages /*.xcodeproj +.swiftpm diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/ahmadrahimi.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/ahmadrahimi.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index f93918c8ee7ea98b198505683a815e4f2533e72f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22227 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 P|0@V}zkgU diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/samuandris.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/samuandris.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 40db97a057bcd76730b6dc3a609bebcd6bee61ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20394 zcmeHvcX$&=)A;V)xm(4STqIexY|BM%xPTkYMY1ut;YP;@TebzZWh9vnSpgvl5FkKE zC`qs(5CQ>0=%GUb0YVKWKnNuS2qYl|QXt_scW1c(dEfUd&-44|vmRM{TV`ixXJ=<- zXK#2zt3YL1WQ4G#*Vr6VW6z8NGlAvY{#HW%LS~ zjow6y&|h-1^9Km5Wj)n#EbA^{5F0Uuf(hHdw2u>5O2hr@fN%r@4DV!EGnDoMHNxSR0&l|RZ}&Tks3jbq-v=;s-7}YjnrsrA~lJ6g_=Rlq-IgC zQuC=r)H~ENY9;kPwT3!G9i~2`j!;LbW7Ox=aq0whk~&45rp{33s4uC@)OG3x^)2<7 z`iuITdO{-_(-ck94DCR>(eAW2EvFT90Ii}E=_ERtPN7rju5>rLJKclsNoUf%={|HZ zT|$@AL+GKjm2RX*(_`qd^f-DvJ%OG`Poiz~%k*6OHF^=fnBG8tNN=P+qBqf-=`HkD zdKz?(>Lfp=s)R4^ke!j`fvIPgBZ+E49zf% z1LMdzG0u!9BVnYB7o%jtm~ckJL@<#|6cf!PG098{lgelr9h1dmGkuvNrkE*Xs+ek~ zhA}cDn0jUuV`ePO7-kYRY-ySkP`W$0Hi{J z#DO>xC*n+8h%0ehg@Tb9zM)VQjx@xb2;eJ(A~ESi63fNDEPP{qrD;rwet3r7oMS07 zT8zVM4MSTCvdsEAL%BG#HG{9&Pj9c<&uFbFHr7|y8la?H9Nr#f9(H+tago7dHJSAQ znUeroy;WZ>4uGoZ6;==-tz!fbnWlQH*;HF=FqeyavgUkV}Z`HHndHq+Tra+=v*%Lo-iRcN)tl>x4) zaVh0uPhi!|8ok+CW;Be6v5YZRSs}AMue2~8th20y}cG zUxnFVsOQO9TAHIRwwhsi0D>KhijCt9{4xb`kf}{d=&Vagk4}nBh>gz5(8Wb-6LlHU z+RiBn+PKWj%%qgW!L3}{C3e#3wDgS3fxL*RhneipCk+;uiS`IIXRyprz-`TEva;iP z<@APCVV^A?$#(1pi?U-`dsrMpf(Q{3(LXMpe=Gom^9x$pgzvaHUkllNiw5TxYmFcX zO!a#6xaPjvp|N9=sw%rwRK&+sr3{Y+&A|i7L6T`eH%LM`Xar~g1T8@CpjBuc+KP_A zetri%z;4(Z2jCbSi{o);+yy7%WSoM#;_kR7PKSM4hqG~S*s%?G8lH)l!5(}WcGpL+ zy9y~U*jHtgf>KfeR4A2Bl~Mhvfz)7XDm9mS9rnr9)Hdp4>LBcpw`dpG^#rtt4yV)U zEZEih!@f3xu0z}(h5295SvvgD6N%_FNWBKH0cao^ga)G_XecU2!;l^gM-{}E z$cUUMh#yfBe-c1cB#;D=V50s28Bi6fMm5L?qYXy2@LZ2fr~w6&5E4qlND@hgvAdI0 zc@C}u1^yez(fLI<|sJGUz zbHmOBUk)^5AM7xB%Br-6Dm|c3$SUC$E2slSh6c020tr34fGk7pqpIX~+H!Gl1COM= zQ%+~E?AQt~X5T@}I!Y-JK0WMMG^3TzV8QBMt4RVdTxV9{6LECpxr3!) zaN6L#?ZB@?>p?cQEdO+~SwC($NVW~A2W&pvBag*K^bxlw+vP;7&|Ho-vIvRM8MFli zq6iEag0=%SK@qTXSFWMH+FApnZkJc4uWdAlF-hU!e~fm*{@>c78SO$n+Gp4Yya(+? z5zCg5#IxuCItbl;f<8ru&|&l$$l{|cVOw<7TvG+dmP6a-fMs;9MjhxUZP~1@#$sAf zWpCS7MhZxGQbf9u{Bm)p{uQuDV}P8z%z;(Pa*5W&f{STYQ()6=tgtqk4LtW8M`u@} z6X+y5g-!#Fz92nFI?<9W(u?#Vd1ughbOA>3B?yp91Kav7WL3*SOZm)Cj)VhMc z28{(U;cZ-AyJh$K76Ka0&FCuX@o(zbJHL)@pi3l!WRkS!YB*xbUh_7KCeg82^|xbX zFZ-S=%Vx`l6tjv^X%43;S?m>lM!!Jg9MYSl^(!_tnkx(zF>NpWook)TwjR)`VDW?9 zfc|P`8S)}}f)U1;!ZZ?L20LI!?1Y`M3w8yTBd`a%V*z}HgDP8iptL9#EE$Ux^fjPO zrm42EuAWyDVVs8g%4ae?DnPf>gP=4Q>FcWvz_-9JwJn^atB3jL^eHjlHrH5h;K2>B z8tcH$(APBpV0(XU#jqNl0&J=vg<_#tPWp;n36eZ%`70NXsxsCZQag3(#O?)_P8NM# zqrScpwunx4=7f}Cw4v720H}0oA#|r!l67jKti6OQuynFdR%@b7f8~gbJ+NoF*axIi ziD9hO-j#g~EyofpW!dSUDu8H!rcXEHA$wyV-Zty7YT6jL<9^VLec6s!Tkb!q&n+@6 zN3S+v1u1D2&)6RafnWrkOoanUDJdiUmg8V#z#*hR@YnznH;7%keT?;$V7qkKD{g=cSvv4Xccqb-~SZP^y_L_8gNuf~(`Wc&gq*oLRzsbFfnNa{#EF_8u`ikOLoSV`k* z{1WH~@Buqy7LX_y&mp5hS71Nm$pj#mJ0YyzAm=4XChU1UC&ySgB@*Tz_LXM~L1D}@ z)`M0GGBEJD#Vn{y6S!^l)!~Wp-K>aAj1L9bFgU#rxv96KMg3o(OP3N1BhqG%jyDIrdoDG;JJDUI@^Sok})KY ze|`s@T>+L}6Z<7&$vEztCyo|71n;@eDPW)uaE?5@8m~p(&G>!1hD;=rn(+sC9hppC z03pR9$L;B0UfY);uTAlte1y&}BY7Tju^rS_yn_X`4R0qlGNm1;(kejqX&~j|=vJks zkI@>#PqbZ*#}pc>^_E6U+cZ2^J>a?Z06xfj4WAKv&G-|ReOZs*>9fNyY4 z&Jgk%@7`3Dfmz3@WuWpK#<0eerAR-9(|LiL}Y_sADQv-0KszV{y++?-22BNI5j0&);@U_Yoc7}HT;mqJ zDNjlYcvBLxvNvbOs>?G#5&=juSq?x} zfCbpfw7lK5uw(n~RQfaRGf*(4B`ZM&ud*Z2>dD}NG^BA*>_g9?@=(NbsyEe#$|bAG z`(({>DxWH#3dve>kbJ_@P1RwEw~i^M)ldP_+WiBqrR8GfKQzm+SQ-tW)N`T>oK-{N zD1hn*KC1!XwHgF|t0CkAvW~1L8_0)bBl&0*RStvFvs(^TNg2o{7~E#~x|7{xKS^Z$ z{VhI^B5+agCQET<9xLP})bw%OF!00#KJMqyAH;Z zZB5j8vK_o=PuW)dG)$(Zf@q>%pa^B7rjQ-vW3rR%Vl%i8WbmKFLc8fzS^@@(rC)AN zrY^r&XYXz{HMbSB*T^0cXD?VlEo{Z(4YHRc+6xv_OWA@YWM32Y0`!tNph%al&C|uy zRobgGQOjF_t{?~6fUct67M1#9Cmub<}!l1N9-bk@|?*L~W+FP+O^O zz?F1%-FZgMWvMFjOIYmyBGw^ZezMWv7 zU{hz3+{z)Xyv!E0 z0_xa`JwD?3`PpWy;m-N2oJ*0l4ey9GR z{sg&v-G)^*9Bji0He6!Er8eBphWoSlNHf4YHnPEFthZXY!$H6Z1dhDL3CXJ;obGAK zGMPayw+!ab5Q{5n3@lZp{3B2qc5CoBaQ>%qacr*MVrA#5)&Kz8+^2lA46pzyxrRpT zI55p%uLtpC7h?PY2~32XPq7|3P-@x3SWaijsjmVnL}cgE*6O}I@9;R=fw3sJkdbzz zonby`Cvu~Sb|K%egmI-UI5Vvx~VFvx(u+y|)2fAWHPr3~4P zF*=tn;EXXkAB?fzn(+;~FKG3@leni0Fb~;L`(&5V1306L?hi)Spa0y%Uca0+vdl4z z*3-l33c8Xu&{cFbT|*v|zsTR@i47wg1|y!bVcLe7)$|CSL-0)6#Bqq(h8<3n!4mpimN%BtZ_#hl@6gNWCc2qkPOq?Gm|}qq3vF0r!(touuwhRd zme{a#HNCP$g1k?!q1S>0S!csuJb&1*%!cJQtYkUF|Nl7Tzs?~$SPuEvhP~|^vKu&r z-b3$Yzc%b+!@m4~k|*vX4hv38;3bNk0}j(id6qfCvW$Y24xf|PY}oHP5~aI1-QMgB zeU4|Gvn=BT{EKGx7MJNOpk~uw*>GSJ{k07T@fIlS&;?TuY^dj&4)izl58yhaZ_?k= zx9HpS9r`=^E`5*w-iFmS9Ad+vHXLTd;Wn(X;RqX!wBe}L^pEVZH~lmH3;iqofPRQT zpNa^=ij~Cf^7oSe<&9xRF1Y*atKGmafh*xtyEYG0dh6qTQiuW z?KM*y+A?7fb%~t~g#)t<^#-%C!dOt;GGUAhBLLNjab?^XAY5k~?qb7<%NZdfVqkqI z*>JH9XRu2)7S#2QDq@Q|3BK6k#yU0-fS=)FLp7@!0u@=)qGOYS2JVy|2K`JC7w5%k z@{Bin^vATT zQ8U0Y-E6qK4fkMCXQTHz;?V(92xBmrLGdjYNB--I8E_0!Y=B@1K2SvSuWR#taQ1X? znlry1E08LLLaMgYMf)_wF!9eDO9IoGorW|UPUof}IITrf=&LHtXf)Q^&0D4`)AM=l z)0lK7!-lmsth3=Pk{FyO<^dF?s-C+NnO;op^8n>B`AmTg_p;#}8}1E&dbYTaTSml1 z4KgJtsldbgy{DrE|NBwX&MqZplgSDp)8ZgEcZn3D1S29lb?w%@M@Y|12%XC>C>=0x z(9nvihB0F&zR(hx%EuN$%uve=@UdYKzmRSP5j4EfYOp{=Y9OHp6gO5>7!2UVIpgIm z^pPu{6YJLODWaAdgw7Dk>IULXup%)jIfV^OgJ36!7vh2>SQsomt*ybo0Z5my`B?_=YncsT zAG2rDmgiL|%_+6O5lI1@l$ec`?V?TArWBR528%(9vVKp; zm6Y`_u?Lla&B~L5B|bM=5Yl{(uCAd*ZvpD@`2cC~5RR(PhMo*ADuLqiVX$dDJ#owR z!%Lo%4Ou)BwM{WVs5G>&R&!;^+3FhO2;s=ux_T2J+poq5+X2gPbr8eKidOCcxUZNE zjE3z7${OLMxQ=55Wx)vk-oyxkX~4r%QA62;KDO= z`~MHmA7J;R~4E~tWC~V`QQDkt8HZQX8!`< z>uwoY+y{PR0RL%~dM%qyhV;e?y{@<={oQC|Sw5uG5Tb$_tQkd+?hWbTjU!9bAsq$j zwN>Vt2AhJd_Ge(($t5=Aqes}SwkgJ74MSH>d}L^7D`n@w@KXN6d^9C0c0=sF*cGvBV}FUg(pDq( zeC+qJXJeb7gbBVT7=Y zFkOg+f$)hJra>xL7$nRU`ao$fVVF=WRJ76~o0~@#4|eug8DpQtHYqj$O6{D$j;{vz zz|5^Deam>;uP>H|R2|j@E76SYR}~h(%H(_EWrDp=J6%~>r0TG;N}(qs+)HF-sRjD4 zh39ck)#2AYi<=1#;^y!OgDR)KA|^@|4;N+-Vs$3A4nn{5<#ZwJeGH=UM)P?L`{RII zL7$Ss-A{jTnuWuRus1up!k(!E9iRa2P7HuM02MHsbwIH(Xd>M3oDSjNbJ6Q)F+@7A zK&v4>dLx87??n3`_V_3|iO!-+u%Fz7+no2|9_J&BAud$_F_SWgKMcW@g0{nCk z@m7Qfz^%<{2p(&Mn60T0gEbFsXf{Cv(1&txwSdOB`Q`4x~)SFZ@wH6LO_rcwev(!~M4toGMB;DXvWFQ?4w;?m> z0(v00md*5JdIr4^9Es~d1{|W#&{x63^9S5glz;&r4YSybDP=0)&f#Qc7PFXnkJ-W; zWX>?xnETA%4gv>1he(H1ha89g4%H509Hu)gbXe)I+2IqA&^H|(IyyRf!~7({ybW+1 z;W)u@mg8HF>mBzxo^rh5_`u1@N#+#k)ZMATN$+HJn(nm7X|2;9r_)Y1oql(Aa}IEh zcg}Ji=v?nS#d)Fg`_8+aPdndoe&ix{32{kvDR8ND8Rs&`WrfQQmlG~GT^_l5xQ4lQ zcP()p;c9bz({-KeC$5)We{pkj3vx?w>+5E8BW`cHZE!p6cFpY%cTe{S_e}S}?v3uV z-B-Eqb^p@+7lA+!Do7Iy6j%kb1*-)I1Xl#V3njuBVUDm;_=0eWaEtJ?@CT8LC`6Pl z8Y&tuS}6KRbV77b>>>^oXNvXW$>JsA?c(#|2ObiSIFAC4I*(Z%?|Xdaaof|$Gt^V( zS?M{=bGhdM&l?h25-iD-R7j>uR!BaP+>|;>!=yRV5z?8`52VMX_q{y5I(wCQjrCgM zwae?OH|-tjo#S2WJ;!^a_c`xBeUv`wJ_esxeAfA#_W8|M;hW}b@SWki-uJBUpE8w9 zCmShyO}16`m7I}B$otC2$lsQKBEP4QD!M8v6f+bX6&L*|zX-n~zX^WJ{f_xPQ2Hyg zl?}>8$^*)K{@(s+{v-Ss`0w_=6Cerb5nv2h5U?lUJC&CzT~(`kQ*}^vKhQ6*S72jc zQ{eHyM?qmhr9o4I)(3qR>>8XLTot?^cz^JHb$~igJyE?zeKEu(BsrueYr-yv3&MMbj|y)N|3c%aN!EU^|&bb9pY=rz&TV!UH=W2VGxjrpOIy3@c;uXQ@q>F?Ms zv9++fU5fLJ>m4^GZb#hD@e%PA@k`>rND#oCyB89+CH&Mmva_M{+nq0Tk#x!H@=}-m zUH(c;N;D^~OT3e$P8yc9H0gY@G`TQ&R`TH#hm?$z7gBbn{E?cNYE9jk`eWDVt|Pm? z-}QF4ux^HKE4tn29@Jgmy{Y@v9;zP0dMxX4wP#>Yeb45e*VBU2D$`b`-AdP_k4Rse z{zFD=hB;$%#&4OanUga2YH4k@c82!2&Qn*aTdcd16_iz-wI=I+c9-l4*?W6A^y<^= zwO;3QlsOeSt8?!6PU=0W_rX5yeTw@m?sGjiBG;U|Bah1Koi{)4a(+mDeg4)0RFG3J zzu>FFu)VI^Ae1LJlwt-Fq%Lc9-_+XH3(CdS44(>8|`rvaz!iJ0;^4U=N z(AuH9%0=b+@{fi&4C^=S{b7&w1^Q+78BhShDa_pBdT zf6(M_8f!Y$5ZN%j;p(W=QLm4>Z|-AWX~C8umTguk7?{Tz!y8|0yf(VW=q00nA5%8w zqp==i>&G4&7cuUYaks{2jemCnGofO_{)vGTZ4<9eN}tp;8BZQQdH)N+FHC#kCdnr6 z*<5WSZJ$qxoicCAuT%R?-7!r$jZC}oV)lz`rVFQ=r=NeR>r3yv%)D%T`S>dduPl1y z?-`Xdj?9dmxp3y=SrxO6yc+lFo3B2ZT{ZjooWwbA&vl$zKlj{gJzslop2xiL^KQ(~ zo4;j&YQc;JzrJ4n`ezF}FMQ_>*Ebs9xcX-9o7)zt7tLMtcyZ0*vr96TtY7N4^p&N* zy;b?v>9^C~UiXgjotf|axy-oiLQ{6rmgdmrh07h6k6!-min0}l-c5dY^-B55nJfQV zRln-$dqwXZT%ELf_4|JB&sjsQX?clX1KhS=#ZC&)bruE+IXKp|n8aI6R;jj`ySb=!b#r?&UrzJEv89h*On`FPdNz@1BW zdF`6B+jaM}-B0$6-}7K^!`^%Qs`uU4U%vm+f&K@+IN0~#@lX1Ea`@A%PY)bQKeXp? z_rp6sOZ{y7k>n#=k0u`7a;(d-&7XJqeDm?d<6BN7o!E9V<>Zc2-A?U3-ShOmGukts zev$LV(X;tyPn|10cj5ft^H(oaUby{b?Uz4Y9DVT-#AP^Kp7E9VtA$tmt~7tG`Fj1; z#H+imX|El-UVQ!1jfxw0zp;Gt_~x{41>Y{b6>w|y?fBa}?_}LM`Q4!JZr*LU`{>^E z?>)X>`a}2+n|@6D@!0+T_iz4W{^`ljvwo5Nvg+5)zwUof_~6RJx`&T`oAJBs_xJut z{^QV}{r zh>dgewEEg0+J-$%X`TWOCUE~eoev(Hj(0|L;Y||7U};Wx(M%vxB*(kL-ZHiZINI(4#uJI28ak8g_Gc#zyNsb!w`7qgAroU z>#zyl`Y;-gh4(&8gs^V{Z+zGev8lh|$M|mwQ559@+Jg|@+aPJVVVXqsrHbJl4Ff3y zyqRGFHJN$|-p8;6-o>zr+79nrI0wNr_d$bjhW9E2(DCp-g&uIrG#B2Upr`BUsq}Qv zA!gCD;cW?v;AnCMy%w~I4fIAYf3IM#Sg!=HG%uZ3o>!q)sn-avr*EWA!;2dwA=@J^5~=yUW1cpC_uyMjJ_9S%~T zz}a0AGaTO6@d@b8*O^BSjDx#NiA$MFxyuL_i;K)Wo&T$^22xbAV?=XwCN;6tvTxgK@>-1UU(Dc3WuXI;;`e(8G2P3)H7mhD#L*623X zZK2zC(2IX?cXao2&vwsoAL>5Rz23dS-2(dY826d(3)~mEFL8g%{T=tU?jN~tcHip0 z9dzdX?g!mJbwBKW&i#h_Lje+CfvZ3wPzgc=@q!dVS3!3{PeGQTm!P*GSCB6lCNK)j z0-NAv!Cb*2!Fs_K!8XAsf-eR41V0Gw3;qx~2wjEVV0FW(4cOb=gayK(!coFkg>!_j z3Fix67rr6<4D|1>h1Y~Pgg1q^gm;8@h2IPR6gi08L;{gWB0L_>TCl_;-AF7h#z}2c#QLy@3GiplgAN{Gai3? z(w;G%NuH^m-8_4E_VFz8Eb%P!?C)9bsrRh#GvR?9``#m3x`JtX`wR5*hC`(QC37@tWc_&1<^Xav|A9o*LpD>?TpE#cc zpG2QbpI$z_eR6&J`V{+=`t9 z`?oAmmMY7XX=PcmVp*B2zig0fh^$;@kxi7@WK(4?%3hK!kS&qDC3{EKBzsTxzHF^* zoos__yKKMggzTK`g6yK~vh0TJrtFsNj_j`Nf$VR&n_MUt%O!FzxsN#ixqHiX)0+isOotimw&d6gLz%6}J?36n7QhD}Ge`?WgqX?APCK zs^9B=2mLPj-S)fd_r2eJzn}enRXQpqN^hmFQlV5T1C-IqRAr`82i9PYvX8PvS*Gl- z9H<Z{ysZ3Mc};mkd0+XH@@M6*{yzR{|L*=h{nPz3{dNA?{yF}A{PX+^{QLSB`Z4Mtl2j?GuBz^;o?yXd zs&uMsRgP+~YN%?MszOzzGJ;iWQkhkasxhkBsx_)@suO`!pfoTpFf(vy;K;!Gz=l8z zSi55aR|Reg{5Wt|;GV#JfrkT+1Re`K5qK)_O5oMN>w(_{#Rhc`>KT+Clo_-;=xETD zpsPXGgT4v+Ht2THcR}}peh9iBOb0szI|aK0y9En^MZq4yl3=f3pWx2H#ld5O7X|ML zzNU6itJRt6Ty=rEuew-0SZz>OtBvZB>N>SaJy!jqdWL$IdbWDL`gQdi>P71Jz`ow5 z-lg87-lzUleOP@&eN25xeOvuV{g?Vl2o9k`9Krf_4-tiUhJ=KKheU)#g~Wu!h9rb^ z2}ue`4e1s#AY^RF(vaOD--J4bMug^s)`X4slC3!NYOdT4X# zs?gP;YePQ_{U~%Z*zcc)o(a7WdNK5?(CeY!gnk=(JM_0OCd?;H9;OUag$0L&hH1j0 z!a9Y;hv~w4h4l{04a*Pf8&(q5FKj^A;IN@#6T%jU?GC#d?id~(o*O&2_L-qrc}=rG^M+!Fou1GQ>xs8*wm(#B|Gwei}1+KJkg+LPKZwb!)YX}{M# z)c&QTbRIg1&QBMh3)BVcVs#0+F1lo0S6z2qmM%xvN0+B7)AiF0&<)oabt854x=}id kj_9W7rs-bFqOwF;9$AtsZ(ducDE^mOVAtOH->l*P4`BNN>i_@% diff --git a/.swiftpm/xcode/xcuserdata/ahmadrahimi.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/ahmadrahimi.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 4bd21c21..00000000 --- a/.swiftpm/xcode/xcuserdata/ahmadrahimi.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - SwiftUICharts.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/.swiftpm/xcode/xcuserdata/andrassamu.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/andrassamu.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 1be8e537..00000000 --- a/.swiftpm/xcode/xcuserdata/andrassamu.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - SwiftUICharts.xcscheme_^#shared#^_ - - orderHint - 0 - - - SuppressBuildableAutocreation - - SwiftUICharts - - primary - - - SwiftUIChartsTests - - primary - - - - - diff --git a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 443dea97..00000000 --- a/.swiftpm/xcode/xcuserdata/samuandris.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - SwiftUICharts.xcscheme_^#shared#^_ - - orderHint - 3 - - - - diff --git a/README.md b/README.md index d2cc1e55..54a94a6c 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,13 @@ BarChartView(data: [8,23,54,32,12,37,7,23,43], title: "Title", form: ChartForm.s You can add a pie chart with the following code: ```swift - PieChartView(data: [8,23,54,32], title: "Title", legend: "Legendary") // legend is optional +PieChartView(data: [PieChartData(value: 8), PieChartData(value: 23), PieChartData(value: 54), PieChartData(value: 32)], title: "Title", legend: "Legendary") // legend is optional +``` + +You can add labels to the values of the pie chart with the following code: + +```swift +PieChartView(data: [PieChartData(label: "Q1", value: 8), PieChartData(label: "Q2", value: 23), PieChartData(label: "Q3", value: 54), PieChartData(label: "Q4", value: 32)], title: "Title", legend: "Legendary") // legend is optional ``` **Turn drop shadow off by adding to the Initialiser: `dropShadow: false`** From 986bf2aa904c457ec6ba8e437a04fef7b83c8572 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 15:18:05 +0200 Subject: [PATCH 03/10] added readme --- Sources/SwiftUICharts/PieChart/PieChartRow.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index 7261b00d..5e46c8df 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -21,7 +21,9 @@ public struct PieChartRow : View { var slices: [PieSlice] { var tempSlices:[PieSlice] = [] var lastEndDeg:Double = 0 - let maxValue = data.reduce(0, +) + let maxValue = data.map({ + $0.value + }).reduce(0, +) for slice in data { let normalized:Double = Double(slice.value)/Double(maxValue) let startDeg = lastEndDeg From 16963cb2ded6af806bc32f3c3ff79fc4617fee34 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 15:27:35 +0200 Subject: [PATCH 04/10] fixed issue --- Sources/SwiftUICharts/PieChart/PieChartRow.swift | 2 +- Sources/SwiftUICharts/PieChart/PieChartView.swift | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index 5e46c8df..83f993b6 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -8,7 +8,7 @@ import SwiftUI -struct PieChartData { +public struct PieChartData { var label: String = "" var value: Double } diff --git a/Sources/SwiftUICharts/PieChart/PieChartView.swift b/Sources/SwiftUICharts/PieChart/PieChartView.swift index 5ea04678..bda328d3 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartView.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartView.swift @@ -21,7 +21,7 @@ public struct PieChartView : View { @State private var showValue = false @State private var currentValue: PieChartData = PieChartData(value: 0) { didSet{ - if(oldValue != self.currentValue && self.showValue) { + if(oldValue.label != self.currentValue.label && self.showValue) { HapticFeedback.playSelection() } } @@ -38,7 +38,7 @@ public struct PieChartView : View { } self.dropShadow = dropShadow! self.valueSpecifier = valueSpecifier! - self.showPercentage = showPercentage + self.showPercentage = showPercentage! } public var body: some View { @@ -54,7 +54,7 @@ public struct PieChartView : View { .font(.headline) .foregroundColor(self.style.textColor) }else{ - Text("\(self.currentValue.label) \(self.currentValue, specifier: self.valueSpecifier)\(self.showPercentage ? "%" : "")") + Text("\(self.currentValue.label) \(self.currentValue.value, specifier: self.valueSpecifier)\(self.showPercentage ? "%" : "")") .font(.headline) .foregroundColor(self.style.textColor) } @@ -80,7 +80,7 @@ public struct PieChartView : View { #if DEBUG struct PieChartView_Previews : PreviewProvider { static var previews: some View { - PieChartView(data:[56,78,53,65,54], title: "Title", legend: "Legend") + PieChartView(data:[PieChartData(label: "Q1", value: 56), PieChartData(label: "Q2", value: 78), PieChartData(label: "Q3", value: 53), PieChartData(label: "Q4", value: 65), PieChartData(label: "Q5", value: 54)], title: "Title", legend: "Legend") } } #endif From e4150b0034b587fa2b96d6684fdc5ed9ec333e33 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 15:31:54 +0200 Subject: [PATCH 05/10] fixed issue --- Sources/SwiftUICharts/PieChart/PieChartCell.swift | 2 +- Sources/SwiftUICharts/PieChart/PieChartRow.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartCell.swift b/Sources/SwiftUICharts/PieChart/PieChartCell.swift index 0722e334..1d1a4cca 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartCell.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartCell.swift @@ -13,7 +13,7 @@ struct PieSlice: Identifiable { var startDeg: Double var endDeg: Double var value: Double - var label: String = "" + var label: String var normalizedValue: Double } diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index 83f993b6..0a97f1e5 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -29,7 +29,7 @@ public struct PieChartRow : View { let startDeg = lastEndDeg let endDeg = lastEndDeg + (normalized * 360) lastEndDeg = endDeg - tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice.value, normalizedValue: normalized, label: slice.label)) + tempSlices.append(PieSlice(startDeg: startDeg, endDeg: endDeg, value: slice.value, label: slice.label, normalizedValue: normalized)) } return tempSlices } From 173411a1905410fdb380c46e056dec7e9c190a79 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 15:38:24 +0200 Subject: [PATCH 06/10] fixed issue --- Sources/SwiftUICharts/PieChart/PieChartRow.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index 0a97f1e5..ab364311 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -77,9 +77,9 @@ public struct PieChartRow : View { struct PieChartRow_Previews : PreviewProvider { static var previews: some View { Group { - PieChartRow(data:[8,23,54,32,12,37,7,23,43], backgroundColor: Color(red: 252.0/255.0, green: 236.0/255.0, blue: 234.0/255.0), accentColor: Color(red: 225.0/255.0, green: 97.0/255.0, blue: 76.0/255.0), showValue: Binding.constant(false), currentValue: Binding.constant(0)) + PieChartRow(data:[PieChartData(value: 8), PieChartData(value: 23), PieChartData(value: 54), PieChartData(value: 32), PieChartData(value: 12), PieChartData(value: 37), PieChartData(value: 7), PieChartData(value: 23), PieChartData(value: 43)], backgroundColor: Color(red: 252.0/255.0, green: 236.0/255.0, blue: 234.0/255.0), accentColor: Color(red: 225.0/255.0, green: 97.0/255.0, blue: 76.0/255.0), showValue: Binding.constant(false), currentValue: Binding.constant(PieChartData(value: 0))) .frame(width: 100, height: 100) - PieChartRow(data:[0], backgroundColor: Color(red: 252.0/255.0, green: 236.0/255.0, blue: 234.0/255.0), accentColor: Color(red: 225.0/255.0, green: 97.0/255.0, blue: 76.0/255.0), showValue: Binding.constant(false), currentValue: Binding.constant(0)) + PieChartRow(data:[PieChartData(value: 0)], backgroundColor: Color(red: 252.0/255.0, green: 236.0/255.0, blue: 234.0/255.0), accentColor: Color(red: 225.0/255.0, green: 97.0/255.0, blue: 76.0/255.0), showValue: Binding.constant(false), currentValue: Binding.constant(PieChartData(value: 0))) .frame(width: 100, height: 100) } } From fdac85068ec0cba98c79c7990573d3dffffe12d0 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Sun, 6 Sep 2020 15:44:10 +0200 Subject: [PATCH 07/10] fixed issue --- Sources/SwiftUICharts/Helpers.swift | 14 ++++++++++++++ Sources/SwiftUICharts/PieChart/PieChartRow.swift | 5 ----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Sources/SwiftUICharts/Helpers.swift b/Sources/SwiftUICharts/Helpers.swift index f1c5e5ac..9a58c276 100644 --- a/Sources/SwiftUICharts/Helpers.swift +++ b/Sources/SwiftUICharts/Helpers.swift @@ -213,6 +213,20 @@ public class ChartData: ObservableObject, Identifiable { } } +public struct PieChartData { + var label: String = "" + var value: Double + + public init(value: Double) { + self.value = value + } + + public init(label: String, value: Double) { + self.label = label + self.value = value + } +} + public class MultiLineChartData: ChartData { var gradient: GradientColor diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index ab364311..f15c204c 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -8,11 +8,6 @@ import SwiftUI -public struct PieChartData { - var label: String = "" - var value: Double -} - public struct PieChartRow : View { var data: [PieChartData] var labeledData: [(String, Double)]? From 68aaf5f5291fa29c0acd35e74373b2b8d30c3561 Mon Sep 17 00:00:00 2001 From: arrahimi Date: Tue, 8 Sep 2020 20:32:35 +0200 Subject: [PATCH 08/10] added prefix postfix --- Sources/SwiftUICharts/PieChart/PieChartView.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartView.swift b/Sources/SwiftUICharts/PieChart/PieChartView.swift index bda328d3..393a0d29 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartView.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartView.swift @@ -16,7 +16,8 @@ public struct PieChartView : View { public var formSize:CGSize public var dropShadow: Bool public var valueSpecifier:String - public var showPercentage:Bool + public var prefix:String + public var postfix: String @State private var showValue = false @State private var currentValue: PieChartData = PieChartData(value: 0) { @@ -27,7 +28,7 @@ public struct PieChartView : View { } } - public init(data: [PieChartData], title: String, legend: String? = nil, style: ChartStyle = Styles.pieChartStyleOne, form: CGSize? = ChartForm.medium, dropShadow: Bool? = true, valueSpecifier: String? = "%.1f", showPercentage: Bool? = false){ + public init(data: [PieChartData], title: String, legend: String? = nil, style: ChartStyle = Styles.pieChartStyleOne, form: CGSize? = ChartForm.medium, dropShadow: Bool? = true, valueSpecifier: String? = "%.1f", prefix: String? = "", postfix: String? = ""){ self.data = data self.title = title self.legend = legend @@ -39,6 +40,8 @@ public struct PieChartView : View { self.dropShadow = dropShadow! self.valueSpecifier = valueSpecifier! self.showPercentage = showPercentage! + self.prefix = prefix! + self.postfix = postfix! } public var body: some View { @@ -54,7 +57,7 @@ public struct PieChartView : View { .font(.headline) .foregroundColor(self.style.textColor) }else{ - Text("\(self.currentValue.label) \(self.currentValue.value, specifier: self.valueSpecifier)\(self.showPercentage ? "%" : "")") + Text("\(self.currentValue.label) \(self.prefix)\(self.currentValue.value, specifier: self.valueSpecifier)\(self.postfix)") .font(.headline) .foregroundColor(self.style.textColor) } From 481986898aa367b9ce26671149d41d89f4a30b8f Mon Sep 17 00:00:00 2001 From: arrahimi Date: Tue, 8 Sep 2020 20:36:03 +0200 Subject: [PATCH 09/10] added prefix postfix --- Sources/SwiftUICharts/PieChart/PieChartView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartView.swift b/Sources/SwiftUICharts/PieChart/PieChartView.swift index 393a0d29..93c29b6d 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartView.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartView.swift @@ -39,7 +39,6 @@ public struct PieChartView : View { } self.dropShadow = dropShadow! self.valueSpecifier = valueSpecifier! - self.showPercentage = showPercentage! self.prefix = prefix! self.postfix = postfix! } From 841ea1baab5b46ecf123fe9501fc65eac31a454d Mon Sep 17 00:00:00 2001 From: arrahimi Date: Thu, 10 Sep 2020 22:53:43 +0200 Subject: [PATCH 10/10] small fix --- Sources/SwiftUICharts/PieChart/PieChartRow.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Sources/SwiftUICharts/PieChart/PieChartRow.swift b/Sources/SwiftUICharts/PieChart/PieChartRow.swift index f15c204c..63764eb9 100644 --- a/Sources/SwiftUICharts/PieChart/PieChartRow.swift +++ b/Sources/SwiftUICharts/PieChart/PieChartRow.swift @@ -44,10 +44,12 @@ public struct PieChartRow : View { public var body: some View { GeometryReader { geometry in ZStack{ - ForEach(0.. 0 { + ForEach(0..