@nstudio/ncharts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +129 -0
  3. package/angular/fesm2022/nstudio-ncharts-angular.mjs +1059 -0
  4. package/angular/fesm2022/nstudio-ncharts-angular.mjs.map +1 -0
  5. package/angular/package.json +19 -0
  6. package/angular/types/nstudio-ncharts-angular.d.ts +175 -0
  7. package/charts/bar-chart.android.d.ts +29 -0
  8. package/charts/bar-chart.android.js +235 -0
  9. package/charts/bar-chart.android.js.map +1 -0
  10. package/charts/bar-chart.d.ts +14 -0
  11. package/charts/bar-chart.ios.d.ts +29 -0
  12. package/charts/bar-chart.ios.js +263 -0
  13. package/charts/bar-chart.ios.js.map +1 -0
  14. package/charts/bubble-chart.android.d.ts +26 -0
  15. package/charts/bubble-chart.android.js +189 -0
  16. package/charts/bubble-chart.android.js.map +1 -0
  17. package/charts/bubble-chart.d.ts +9 -0
  18. package/charts/bubble-chart.ios.d.ts +26 -0
  19. package/charts/bubble-chart.ios.js +225 -0
  20. package/charts/bubble-chart.ios.js.map +1 -0
  21. package/charts/candlestick-chart.android.d.ts +26 -0
  22. package/charts/candlestick-chart.android.js +236 -0
  23. package/charts/candlestick-chart.android.js.map +1 -0
  24. package/charts/candlestick-chart.d.ts +9 -0
  25. package/charts/candlestick-chart.ios.d.ts +26 -0
  26. package/charts/candlestick-chart.ios.js +248 -0
  27. package/charts/candlestick-chart.ios.js.map +1 -0
  28. package/charts/combined-chart.android.d.ts +26 -0
  29. package/charts/combined-chart.android.js +524 -0
  30. package/charts/combined-chart.android.js.map +1 -0
  31. package/charts/combined-chart.d.ts +9 -0
  32. package/charts/combined-chart.ios.d.ts +26 -0
  33. package/charts/combined-chart.ios.js +485 -0
  34. package/charts/combined-chart.ios.js.map +1 -0
  35. package/charts/index.android.d.ts +12 -0
  36. package/charts/index.android.js +13 -0
  37. package/charts/index.android.js.map +1 -0
  38. package/charts/index.d.ts +12 -0
  39. package/charts/index.ios.d.ts +12 -0
  40. package/charts/index.ios.js +13 -0
  41. package/charts/index.ios.js.map +1 -0
  42. package/charts/line-chart.android.d.ts +26 -0
  43. package/charts/line-chart.android.js +248 -0
  44. package/charts/line-chart.android.js.map +1 -0
  45. package/charts/line-chart.d.ts +9 -0
  46. package/charts/line-chart.ios.d.ts +26 -0
  47. package/charts/line-chart.ios.js +278 -0
  48. package/charts/line-chart.ios.js.map +1 -0
  49. package/charts/pie-chart.android.d.ts +24 -0
  50. package/charts/pie-chart.android.js +241 -0
  51. package/charts/pie-chart.android.js.map +1 -0
  52. package/charts/pie-chart.d.ts +9 -0
  53. package/charts/pie-chart.ios.d.ts +24 -0
  54. package/charts/pie-chart.ios.js +380 -0
  55. package/charts/pie-chart.ios.js.map +1 -0
  56. package/charts/radar-chart.android.d.ts +21 -0
  57. package/charts/radar-chart.android.js +217 -0
  58. package/charts/radar-chart.android.js.map +1 -0
  59. package/charts/radar-chart.d.ts +9 -0
  60. package/charts/radar-chart.ios.d.ts +21 -0
  61. package/charts/radar-chart.ios.js +241 -0
  62. package/charts/radar-chart.ios.js.map +1 -0
  63. package/charts/scatter-chart.android.d.ts +26 -0
  64. package/charts/scatter-chart.android.js +220 -0
  65. package/charts/scatter-chart.android.js.map +1 -0
  66. package/charts/scatter-chart.d.ts +9 -0
  67. package/charts/scatter-chart.ios.d.ts +26 -0
  68. package/charts/scatter-chart.ios.js +242 -0
  69. package/charts/scatter-chart.ios.js.map +1 -0
  70. package/charts/utils.d.ts +21 -0
  71. package/charts/utils.js +99 -0
  72. package/charts/utils.js.map +1 -0
  73. package/common.d.ts +300 -0
  74. package/common.js +464 -0
  75. package/common.js.map +1 -0
  76. package/index.android.d.ts +7 -0
  77. package/index.android.js +10 -0
  78. package/index.android.js.map +1 -0
  79. package/index.d.ts +14 -0
  80. package/index.ios.d.ts +7 -0
  81. package/index.ios.js +10 -0
  82. package/index.ios.js.map +1 -0
  83. package/nativescript.config.ts +14 -0
  84. package/nativescript.webpack.js +35 -0
  85. package/package.json +114 -0
  86. package/platforms/android/include.gradle +14 -0
  87. package/react/index.d.ts +6 -0
  88. package/react/index.js +6 -0
  89. package/react/index.js.map +1 -0
  90. package/react/register-elements.d.ts +1 -0
  91. package/react/register-elements.js +19 -0
  92. package/react/register-elements.js.map +1 -0
  93. package/solid/index.d.ts +6 -0
  94. package/solid/index.js +6 -0
  95. package/solid/index.js.map +1 -0
  96. package/solid/register-elements.d.ts +1 -0
  97. package/solid/register-elements.js +19 -0
  98. package/solid/register-elements.js.map +1 -0
  99. package/svelte/index.d.ts +6 -0
  100. package/svelte/index.js +6 -0
  101. package/svelte/index.js.map +1 -0
  102. package/svelte/register-elements.d.ts +1 -0
  103. package/svelte/register-elements.js +19 -0
  104. package/svelte/register-elements.js.map +1 -0
  105. package/types.d.ts +713 -0
  106. package/types.js +7 -0
  107. package/types.js.map +1 -0
  108. package/vue/index.d.ts +6 -0
  109. package/vue/index.js +6 -0
  110. package/vue/index.js.map +1 -0
  111. package/vue/register-elements.d.ts +1 -0
  112. package/vue/register-elements.js +19 -0
  113. package/vue/register-elements.js.map +1 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * PieChart - Android Implementation
3
+ */
4
+ import { PieChartBase, nchartsLog } from '../common';
5
+ import { toAndroidColor } from './utils';
6
+ function applyPieDataSetConfig(dataSet, config) {
7
+ if (!dataSet || !config)
8
+ return;
9
+ if (config.colors) {
10
+ const colors = new java.util.ArrayList();
11
+ config.colors.forEach((c) => {
12
+ const color = toAndroidColor(c);
13
+ if (color !== undefined)
14
+ colors.add(java.lang.Integer.valueOf(color));
15
+ });
16
+ dataSet.setColors(colors);
17
+ }
18
+ if (config.highlightEnabled !== undefined)
19
+ dataSet.setHighlightEnabled(config.highlightEnabled);
20
+ if (config.drawValues !== undefined)
21
+ dataSet.setDrawValues(config.drawValues);
22
+ if (config.valueTextSize !== undefined)
23
+ dataSet.setValueTextSize(config.valueTextSize);
24
+ if (config.valueTextColor) {
25
+ const color = toAndroidColor(config.valueTextColor);
26
+ if (color !== undefined)
27
+ dataSet.setValueTextColor(color);
28
+ }
29
+ if (config.visible !== undefined)
30
+ dataSet.setVisible(config.visible);
31
+ if (config.sliceSpace !== undefined)
32
+ dataSet.setSliceSpace(config.sliceSpace);
33
+ if (config.selectionShift !== undefined)
34
+ dataSet.setSelectionShift(config.selectionShift);
35
+ if (config.xValuePosition) {
36
+ const ValuePosition = com.github.mikephil.charting.data.PieDataSet.ValuePosition;
37
+ dataSet.setXValuePosition(config.xValuePosition === 'OUTSIDE_SLICE' ? ValuePosition.OUTSIDE_SLICE : ValuePosition.INSIDE_SLICE);
38
+ }
39
+ if (config.yValuePosition) {
40
+ const ValuePosition = com.github.mikephil.charting.data.PieDataSet.ValuePosition;
41
+ dataSet.setYValuePosition(config.yValuePosition === 'OUTSIDE_SLICE' ? ValuePosition.OUTSIDE_SLICE : ValuePosition.INSIDE_SLICE);
42
+ }
43
+ if (config.valueLinePart1Length !== undefined)
44
+ dataSet.setValueLinePart1Length(config.valueLinePart1Length);
45
+ if (config.valueLinePart2Length !== undefined)
46
+ dataSet.setValueLinePart2Length(config.valueLinePart2Length);
47
+ if (config.valueLineColor) {
48
+ const color = toAndroidColor(config.valueLineColor);
49
+ if (color !== undefined)
50
+ dataSet.setValueLineColor(color);
51
+ }
52
+ if (config.valueLineWidth !== undefined)
53
+ dataSet.setValueLineWidth(config.valueLineWidth);
54
+ if (config.valueLinePart1OffsetPercentage !== undefined)
55
+ dataSet.setValueLinePart1OffsetPercentage(config.valueLinePart1OffsetPercentage);
56
+ if (config.valueLineVariableLength !== undefined)
57
+ dataSet.setUsingSliceColorAsValueLineColor(config.valueLineVariableLength);
58
+ }
59
+ export class PieChart extends PieChartBase {
60
+ constructor() {
61
+ super(...arguments);
62
+ this._native = null;
63
+ this._selectionListener = null;
64
+ }
65
+ createNativeView() {
66
+ nchartsLog('[ncharts] PieChart.createNativeView()');
67
+ this._native = new com.github.mikephil.charting.charts.PieChart(this._context);
68
+ this._nativeChart = this._native;
69
+ return this._native;
70
+ }
71
+ initNativeView() {
72
+ nchartsLog('[ncharts] PieChart.initNativeView()');
73
+ super.initNativeView();
74
+ const instance = this._native;
75
+ instance.setHighlightPerTapEnabled(this.highlightPerTapEnabled);
76
+ if (this.chartBackgroundColor) {
77
+ const color = toAndroidColor(this.chartBackgroundColor);
78
+ if (color !== undefined)
79
+ instance.setBackgroundColor(color);
80
+ }
81
+ if (this.noDataText)
82
+ instance.setNoDataText(this.noDataText);
83
+ // Set up selection listener
84
+ const owner = new WeakRef(this);
85
+ this._selectionListener = new com.github.mikephil.charting.listener.OnChartValueSelectedListener({
86
+ onValueSelected: (entry, highlight) => {
87
+ const chart = owner.deref();
88
+ if (chart) {
89
+ const data = {
90
+ x: entry.getX(),
91
+ y: entry.getY(),
92
+ dataSetIndex: highlight.getDataSetIndex(),
93
+ dataIndex: highlight.getDataIndex(),
94
+ data: entry.getData(),
95
+ };
96
+ chart.notify({ eventName: PieChart.selectEvent, object: chart, data });
97
+ }
98
+ },
99
+ onNothingSelected: () => {
100
+ const chart = owner.deref();
101
+ if (chart) {
102
+ chart.notify({ eventName: PieChart.deselectEvent, object: chart });
103
+ }
104
+ },
105
+ });
106
+ instance.setOnChartValueSelectedListener(this._selectionListener);
107
+ this._applyPieChartConfig();
108
+ if (this.data)
109
+ this.applyData();
110
+ }
111
+ _applyPieChartConfig() {
112
+ const instance = this._native;
113
+ instance.setDrawHoleEnabled(this.drawHole);
114
+ instance.setHoleRadius(this.holeRadius);
115
+ instance.setTransparentCircleRadius(this.transparentCircleRadius);
116
+ if (this.holeColor) {
117
+ const color = toAndroidColor(this.holeColor);
118
+ if (color !== undefined)
119
+ instance.setHoleColor(color);
120
+ }
121
+ instance.setDrawCenterText(this.drawCenterText);
122
+ if (this.centerText)
123
+ instance.setCenterText(this.centerText);
124
+ if (this.centerTextColor) {
125
+ const color = toAndroidColor(this.centerTextColor);
126
+ if (color !== undefined)
127
+ instance.setCenterTextColor(color);
128
+ }
129
+ if (this.centerTextSize)
130
+ instance.setCenterTextSize(this.centerTextSize);
131
+ instance.setUsePercentValues(this.usePercentValues);
132
+ instance.setDrawEntryLabels(this.drawSliceText);
133
+ if (this.sliceTextSize)
134
+ instance.setEntryLabelTextSize(this.sliceTextSize);
135
+ if (this.sliceTextColor) {
136
+ const color = toAndroidColor(this.sliceTextColor);
137
+ if (color !== undefined)
138
+ instance.setEntryLabelColor(color);
139
+ }
140
+ instance.setRotationEnabled(this.rotationEnabled);
141
+ instance.setRotationAngle(this.rotationAngle);
142
+ instance.setMaxAngle(this.maxAngle);
143
+ }
144
+ disposeNativeView() {
145
+ this._selectionListener = null;
146
+ this._native = null;
147
+ this._nativeChart = null;
148
+ super.disposeNativeView();
149
+ }
150
+ get nativeChart() {
151
+ return this._native;
152
+ }
153
+ // Property change handlers
154
+ onDrawHoleChange() {
155
+ if (!this._native)
156
+ return;
157
+ nchartsLog('[ncharts] onDrawHoleChange:', this.drawHole);
158
+ this._native.setDrawHoleEnabled(this.drawHole);
159
+ this._native.invalidate();
160
+ }
161
+ onHoleRadiusChange() {
162
+ if (!this._native)
163
+ return;
164
+ nchartsLog('[ncharts] onHoleRadiusChange:', this.holeRadius);
165
+ this._native.setHoleRadius(this.holeRadius);
166
+ this._native.setTransparentCircleRadius(this.transparentCircleRadius);
167
+ this._native.invalidate();
168
+ }
169
+ onRotationAngleChange() {
170
+ if (!this._native)
171
+ return;
172
+ nchartsLog('[ncharts] onRotationAngleChange:', this.rotationAngle);
173
+ this._native.setRotationAngle(this.rotationAngle);
174
+ this._native.invalidate();
175
+ }
176
+ applyData() {
177
+ if (!this._native || !this.data)
178
+ return;
179
+ nchartsLog('[ncharts] PieChart._applyDataAndroid called');
180
+ const instance = this._native;
181
+ // Pie chart typically has one dataset
182
+ for (const ds of this.data.dataSets) {
183
+ const entries = new java.util.ArrayList();
184
+ ds.values.forEach((value, index) => {
185
+ let entry;
186
+ if (typeof value === 'number') {
187
+ entry = new com.github.mikephil.charting.data.PieEntry(value);
188
+ }
189
+ else {
190
+ entry = new com.github.mikephil.charting.data.PieEntry(value.value, value.label || '');
191
+ }
192
+ entries.add(entry);
193
+ });
194
+ const dataSet = new com.github.mikephil.charting.data.PieDataSet(entries, ds.label);
195
+ if (ds.config) {
196
+ applyPieDataSetConfig(dataSet, ds.config);
197
+ }
198
+ const chartData = new com.github.mikephil.charting.data.PieData(dataSet);
199
+ instance.setData(chartData);
200
+ }
201
+ instance.invalidate();
202
+ }
203
+ _applyAnimation(animation) {
204
+ if (!this._native)
205
+ return;
206
+ const instance = this._native;
207
+ const durationX = animation.durationX ?? 0;
208
+ const durationY = animation.durationY ?? 0;
209
+ if (durationX > 0 && durationY > 0) {
210
+ instance.animateXY(durationX, durationY);
211
+ }
212
+ else if (durationX > 0) {
213
+ instance.animateX(durationX);
214
+ }
215
+ else if (durationY > 0) {
216
+ instance.animateY(durationY);
217
+ }
218
+ }
219
+ _applyHighlights(highlights) {
220
+ if (!this._native)
221
+ return;
222
+ if (!highlights || highlights.length === 0) {
223
+ this._native.highlightValues(null);
224
+ return;
225
+ }
226
+ const highlightArray = [];
227
+ for (const h of highlights) {
228
+ const highlight = new com.github.mikephil.charting.highlight.Highlight(h.x, h.y ?? 0, h.dataSetIndex ?? 0);
229
+ highlightArray.push(highlight);
230
+ }
231
+ this._native.highlightValues(highlightArray);
232
+ }
233
+ _invalidateChart() {
234
+ this._native?.invalidate();
235
+ }
236
+ _applyLegend(legend) { }
237
+ _applyXAxis(xAxis) { }
238
+ _applyDescription(description) { }
239
+ _applyMarker(marker) { }
240
+ }
241
+ //# sourceMappingURL=pie-chart.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pie-chart.android.js","sourceRoot":"","sources":["../../../../packages/ncharts/charts/pie-chart.android.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PieChart - displays data as slices of a circular pie
3
+ */
4
+ import { PieChartBase } from '../common';
5
+
6
+ export declare class PieChart extends PieChartBase {
7
+ get nativeChart(): any;
8
+ applyData(): void;
9
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * PieChart - iOS Implementation
3
+ */
4
+ import { PieChartBase, ChartAnimation, LegendConfig, XAxisConfig, ChartDescription, MarkerConfig, Highlight } from '../common';
5
+ export declare class PieChart extends PieChartBase {
6
+ private _native;
7
+ private _delegate;
8
+ createNativeView(): any;
9
+ initNativeView(): void;
10
+ private _applyPieChartConfig;
11
+ disposeNativeView(): void;
12
+ get nativeChart(): any;
13
+ onDrawHoleChange(): void;
14
+ onHoleRadiusChange(): void;
15
+ onRotationAngleChange(): void;
16
+ applyData(): void;
17
+ protected _applyAnimation(animation: ChartAnimation): void;
18
+ protected _applyHighlights(highlights: Highlight[] | null): void;
19
+ protected _invalidateChart(): void;
20
+ protected _applyLegend(legend: LegendConfig): void;
21
+ protected _applyXAxis(xAxis: XAxisConfig): void;
22
+ protected _applyDescription(description: ChartDescription): void;
23
+ protected _applyMarker(marker: MarkerConfig): void;
24
+ }
@@ -0,0 +1,380 @@
1
+ /**
2
+ * PieChart - iOS Implementation
3
+ */
4
+ import { PieChartBase, nchartsLog, nchartsError } from '../common';
5
+ import { toUIColor, parseEasingIOS } from './utils';
6
+ var PieChartViewDelegateImpl = (function (_super) {
7
+ __extends(PieChartViewDelegateImpl, _super);
8
+ function PieChartViewDelegateImpl() {
9
+ return _super !== null && _super.apply(this, arguments) || this;
10
+ }
11
+ PieChartViewDelegateImpl.initWithOwner = function (owner) {
12
+ var delegate = PieChartViewDelegateImpl.new();
13
+ delegate._owner = new WeakRef(owner);
14
+ return delegate;
15
+ };
16
+ PieChartViewDelegateImpl.prototype.chartValueSelectedEntryHighlight = function (chartView, entry, highlight) {
17
+ var _a;
18
+ var owner = (_a = this._owner) === null || _a === void 0 ? void 0 : _a.deref();
19
+ if (owner) {
20
+ var data = {
21
+ x: entry.x,
22
+ y: entry.y,
23
+ dataSetIndex: highlight.dataSetIndex,
24
+ dataIndex: highlight.dataIndex,
25
+ data: entry.data,
26
+ };
27
+ owner.notify({ eventName: PieChart.selectEvent, object: owner, data: data });
28
+ }
29
+ };
30
+ PieChartViewDelegateImpl.prototype.chartValueNothingSelected = function (chartView) {
31
+ var _a;
32
+ var owner = (_a = this._owner) === null || _a === void 0 ? void 0 : _a.deref();
33
+ if (owner) {
34
+ owner.notify({ eventName: PieChart.deselectEvent, object: owner });
35
+ }
36
+ };
37
+ PieChartViewDelegateImpl.ObjCProtocols = [ChartViewDelegate];
38
+ return PieChartViewDelegateImpl;
39
+ }(NSObject));
40
+ function applyPieDataSetConfig(dataSet, config) {
41
+ if (!dataSet || !config)
42
+ return;
43
+ nchartsLog('[ncharts] applyPieDataSetConfigIOS START');
44
+ try {
45
+ if (config.colors) {
46
+ nchartsLog('[ncharts] Setting colors:', config.colors);
47
+ const colors = [];
48
+ config.colors.forEach((c) => {
49
+ const color = toUIColor(c);
50
+ if (color)
51
+ colors.push(color);
52
+ });
53
+ for (const c of colors) {
54
+ dataSet.addColor(c);
55
+ }
56
+ }
57
+ if (config.highlightEnabled !== undefined) {
58
+ nchartsLog('[ncharts] Setting highlightEnabled:', config.highlightEnabled);
59
+ dataSet.highlightEnabled = config.highlightEnabled;
60
+ }
61
+ if (config.drawValues !== undefined) {
62
+ nchartsLog('[ncharts] Setting drawValuesEnabled:', config.drawValues);
63
+ dataSet.drawValuesEnabled = config.drawValues;
64
+ }
65
+ if (config.valueTextSize !== undefined) {
66
+ nchartsLog('[ncharts] Setting valueFont size:', config.valueTextSize);
67
+ dataSet.valueFont = dataSet.valueFont.fontWithSize(config.valueTextSize);
68
+ }
69
+ if (config.valueTextColor) {
70
+ nchartsLog('[ncharts] Setting valueTextColor:', config.valueTextColor);
71
+ const textColor = toUIColor(config.valueTextColor);
72
+ if (textColor)
73
+ dataSet.valueTextColor = textColor;
74
+ }
75
+ if (config.visible !== undefined) {
76
+ nchartsLog('[ncharts] Setting visible:', config.visible);
77
+ dataSet.visible = config.visible;
78
+ }
79
+ if (config.sliceSpace !== undefined) {
80
+ nchartsLog('[ncharts] Setting sliceSpace:', config.sliceSpace);
81
+ dataSet.sliceSpace = config.sliceSpace;
82
+ }
83
+ if (config.selectionShift !== undefined) {
84
+ nchartsLog('[ncharts] Setting selectionShift:', config.selectionShift);
85
+ dataSet.selectionShift = config.selectionShift;
86
+ }
87
+ if (config.xValuePosition) {
88
+ nchartsLog('[ncharts] Setting xValuePosition:', config.xValuePosition);
89
+ dataSet.xValuePosition = config.xValuePosition === 'OUTSIDE_SLICE' ? 1 : 0;
90
+ }
91
+ if (config.yValuePosition) {
92
+ nchartsLog('[ncharts] Setting yValuePosition:', config.yValuePosition);
93
+ dataSet.yValuePosition = config.yValuePosition === 'OUTSIDE_SLICE' ? 1 : 0;
94
+ }
95
+ if (config.valueLinePart1Length !== undefined) {
96
+ nchartsLog('[ncharts] Setting valueLinePart1Length:', config.valueLinePart1Length);
97
+ dataSet.valueLinePart1Length = config.valueLinePart1Length;
98
+ }
99
+ if (config.valueLinePart2Length !== undefined) {
100
+ nchartsLog('[ncharts] Setting valueLinePart2Length:', config.valueLinePart2Length);
101
+ dataSet.valueLinePart2Length = config.valueLinePart2Length;
102
+ }
103
+ if (config.valueLineColor) {
104
+ nchartsLog('[ncharts] Setting valueLineColor:', config.valueLineColor);
105
+ const lineColor = toUIColor(config.valueLineColor);
106
+ if (lineColor)
107
+ dataSet.valueLineColor = lineColor;
108
+ }
109
+ if (config.valueLineWidth !== undefined) {
110
+ nchartsLog('[ncharts] Setting valueLineWidth:', config.valueLineWidth);
111
+ dataSet.valueLineWidth = config.valueLineWidth;
112
+ }
113
+ if (config.valueLinePart1OffsetPercentage !== undefined) {
114
+ nchartsLog('[ncharts] Setting valueLinePart1OffsetPercentage:', config.valueLinePart1OffsetPercentage);
115
+ dataSet.valueLinePart1OffsetPercentage = config.valueLinePart1OffsetPercentage;
116
+ }
117
+ if (config.valueLineVariableLength !== undefined) {
118
+ nchartsLog('[ncharts] Setting valueLineVariableLength:', config.valueLineVariableLength);
119
+ dataSet.valueLineVariableLength = config.valueLineVariableLength;
120
+ }
121
+ nchartsLog('[ncharts] applyPieDataSetConfigIOS END');
122
+ }
123
+ catch (err) {
124
+ nchartsError('[ncharts] applyPieDataSetConfigIOS ERROR:', err);
125
+ }
126
+ }
127
+ export class PieChart extends PieChartBase {
128
+ constructor() {
129
+ super(...arguments);
130
+ this._native = null;
131
+ this._delegate = null;
132
+ }
133
+ createNativeView() {
134
+ nchartsLog('[ncharts] PieChart.createNativeView()');
135
+ this._native = PieChartView.alloc().initWithFrame(CGRectZero);
136
+ this._nativeChart = this._native;
137
+ return this._native;
138
+ }
139
+ initNativeView() {
140
+ nchartsLog('[ncharts] PieChart.initNativeView()');
141
+ super.initNativeView();
142
+ const instance = this._native;
143
+ instance.highlightPerTapEnabled = this.highlightPerTapEnabled;
144
+ // Prevent ghosting during animations
145
+ instance.clipsToBounds = true;
146
+ instance.layer.masksToBounds = true;
147
+ const bg = this.chartBackgroundColor ? toUIColor(this.chartBackgroundColor) : UIColor.clearColor;
148
+ instance.backgroundColor = bg;
149
+ instance.opaque = bg.CGColor.alpha === 1;
150
+ // Disable asynchronous drawing to prevent layer overlap
151
+ instance.layer.drawsAsynchronously = false;
152
+ instance.layer.shouldRasterize = false;
153
+ instance.clearsContextBeforeDrawing = true;
154
+ if (this.noDataText)
155
+ instance.noDataText = this.noDataText;
156
+ // Set up selection delegate
157
+ this._delegate = PieChartViewDelegateImpl.initWithOwner(this);
158
+ instance.delegate = this._delegate;
159
+ this._applyPieChartConfig();
160
+ if (this.data)
161
+ this.applyData();
162
+ }
163
+ _applyPieChartConfig() {
164
+ nchartsLog('[ncharts] PieChart._applyPieChartConfig iOS START');
165
+ const instance = this._native;
166
+ try {
167
+ nchartsLog('[ncharts] Setting drawHoleEnabled:', this.drawHole);
168
+ instance.drawHoleEnabled = this.drawHole;
169
+ nchartsLog('[ncharts] Setting holeRadiusPercent:', this.holeRadius / 100.0);
170
+ instance.holeRadiusPercent = this.holeRadius / 100.0;
171
+ nchartsLog('[ncharts] Setting transparentCircleRadiusPercent:', this.transparentCircleRadius / 100.0);
172
+ instance.transparentCircleRadiusPercent = this.transparentCircleRadius / 100.0;
173
+ nchartsLog('[ncharts] Setting holeColor, value:', this.holeColor);
174
+ const holeUIColor = toUIColor(this.holeColor);
175
+ nchartsLog('[ncharts] holeUIColor result:', holeUIColor);
176
+ if (holeUIColor)
177
+ instance.holeColor = holeUIColor;
178
+ nchartsLog('[ncharts] Setting drawCenterTextEnabled:', this.drawCenterText);
179
+ instance.drawCenterTextEnabled = this.drawCenterText;
180
+ // Set center text with optional styling (size, color)
181
+ if (this.centerText) {
182
+ nchartsLog('[ncharts] Setting centerText:', this.centerText, 'size:', this.centerTextSize, 'color:', this.centerTextColor);
183
+ if (this.centerTextSize || this.centerTextColor) {
184
+ // Use NSAttributedString for styled text
185
+ const attributes = NSMutableDictionary.alloc().init();
186
+ if (this.centerTextSize) {
187
+ const font = UIFont.systemFontOfSize(this.centerTextSize);
188
+ attributes.setObjectForKey(font, NSFontAttributeName);
189
+ }
190
+ if (this.centerTextColor) {
191
+ const textColor = toUIColor(this.centerTextColor);
192
+ if (textColor) {
193
+ attributes.setObjectForKey(textColor, NSForegroundColorAttributeName);
194
+ }
195
+ }
196
+ // Add paragraph style for center alignment
197
+ const paragraphStyle = NSMutableParagraphStyle.alloc().init();
198
+ paragraphStyle.alignment = 1 /* NSTextAlignment.Center */;
199
+ attributes.setObjectForKey(paragraphStyle, NSParagraphStyleAttributeName);
200
+ const attributedString = NSAttributedString.alloc().initWithStringAttributes(this.centerText, attributes);
201
+ instance.centerAttributedText = attributedString;
202
+ }
203
+ else {
204
+ instance.centerText = this.centerText;
205
+ }
206
+ }
207
+ nchartsLog('[ncharts] Setting drawSlicesUnderHoleEnabled: false');
208
+ instance.drawSlicesUnderHoleEnabled = false;
209
+ // Set entry label (slice text) properties
210
+ nchartsLog('[ncharts] Setting drawEntryLabelsEnabled:', this.drawSliceText);
211
+ instance.drawEntryLabelsEnabled = this.drawSliceText;
212
+ if (this.sliceTextSize) {
213
+ nchartsLog('[ncharts] Setting entryLabelFont size:', this.sliceTextSize);
214
+ instance.entryLabelFont = UIFont.systemFontOfSize(this.sliceTextSize);
215
+ }
216
+ if (this.sliceTextColor) {
217
+ nchartsLog('[ncharts] Setting entryLabelColor:', this.sliceTextColor);
218
+ const labelColor = toUIColor(this.sliceTextColor);
219
+ if (labelColor)
220
+ instance.entryLabelColor = labelColor;
221
+ }
222
+ nchartsLog('[ncharts] Setting usePercentValuesEnabled:', this.usePercentValues);
223
+ instance.usePercentValuesEnabled = this.usePercentValues;
224
+ nchartsLog('[ncharts] rotationEnabled value:', this.rotationEnabled, 'type:', typeof this.rotationEnabled);
225
+ if (this.rotationEnabled !== undefined && this.rotationEnabled !== null) {
226
+ nchartsLog('[ncharts] Setting rotationEnabled:', this.rotationEnabled);
227
+ instance.rotationEnabled = this.rotationEnabled;
228
+ }
229
+ nchartsLog('[ncharts] rotationAngle value:', this.rotationAngle, 'type:', typeof this.rotationAngle);
230
+ if (this.rotationAngle !== undefined && this.rotationAngle !== null) {
231
+ nchartsLog('[ncharts] Setting rotationAngle:', this.rotationAngle);
232
+ instance.rotationAngle = this.rotationAngle;
233
+ }
234
+ nchartsLog('[ncharts] maxAngle value:', this.maxAngle, 'type:', typeof this.maxAngle);
235
+ if (this.maxAngle !== undefined && this.maxAngle !== null) {
236
+ nchartsLog('[ncharts] Setting maxAngle:', this.maxAngle);
237
+ instance.maxAngle = this.maxAngle;
238
+ }
239
+ nchartsLog('[ncharts] PieChart._applyPieChartConfig iOS END');
240
+ }
241
+ catch (err) {
242
+ nchartsError('[ncharts] PieChart._applyPieChartConfig iOS ERROR:', err);
243
+ }
244
+ }
245
+ disposeNativeView() {
246
+ this._delegate = null;
247
+ this._native = null;
248
+ this._nativeChart = null;
249
+ super.disposeNativeView();
250
+ }
251
+ get nativeChart() {
252
+ return this._native;
253
+ }
254
+ // Property change handlers
255
+ onDrawHoleChange() {
256
+ if (!this._native)
257
+ return;
258
+ nchartsLog('[ncharts] onDrawHoleChange:', this.drawHole);
259
+ this._native.drawHoleEnabled = this.drawHole;
260
+ this._native.setNeedsDisplay();
261
+ }
262
+ onHoleRadiusChange() {
263
+ if (!this._native)
264
+ return;
265
+ nchartsLog('[ncharts] onHoleRadiusChange:', this.holeRadius);
266
+ this._native.holeRadiusPercent = this.holeRadius / 100.0;
267
+ this._native.transparentCircleRadiusPercent = this.transparentCircleRadius / 100.0;
268
+ this._native.setNeedsDisplay();
269
+ }
270
+ onRotationAngleChange() {
271
+ if (!this._native)
272
+ return;
273
+ nchartsLog('[ncharts] onRotationAngleChange:', this.rotationAngle);
274
+ this._native.rotationAngle = this.rotationAngle;
275
+ this._native.setNeedsDisplay();
276
+ }
277
+ applyData() {
278
+ if (!this._native || !this.data)
279
+ return;
280
+ nchartsLog('[ncharts] PieChart._applyDataIOS START');
281
+ const instance = this._native;
282
+ try {
283
+ // Stop any running animation
284
+ nchartsLog('[ncharts] Checking chartAnimator:', instance.chartAnimator);
285
+ if (instance.chartAnimator) {
286
+ nchartsLog('[ncharts] Stopping animator');
287
+ instance.chartAnimator.stop();
288
+ instance.chartAnimator.phaseX = 1.0;
289
+ instance.chartAnimator.phaseY = 1.0;
290
+ }
291
+ // Clear highlights
292
+ nchartsLog('[ncharts] Clearing highlights');
293
+ instance.highlightValues(null);
294
+ nchartsLog('[ncharts] Clearing layer contents');
295
+ instance.layer.contents = null;
296
+ // Build the data sets (pie chart typically has one dataset)
297
+ nchartsLog('[ncharts] Processing dataSets, count:', this.data.dataSets.length);
298
+ for (const ds of this.data.dataSets) {
299
+ nchartsLog('[ncharts] Processing dataSet:', ds.label);
300
+ const entries = [];
301
+ ds.values.forEach((value, index) => {
302
+ let entry;
303
+ if (typeof value === 'number') {
304
+ nchartsLog('[ncharts] Creating entry with value:', value);
305
+ entry = PieChartDataEntry.alloc().initWithValue(value);
306
+ }
307
+ else {
308
+ nchartsLog('[ncharts] Creating entry with value/label:', value.value, value.label);
309
+ entry = PieChartDataEntry.alloc().initWithValueLabel(value.value, value.label || '');
310
+ }
311
+ entries.push(entry);
312
+ });
313
+ nchartsLog('[ncharts] Creating PieChartDataSet with entries:', entries.length);
314
+ const dataSet = PieChartDataSet.alloc().initWithEntriesLabel(entries, ds.label);
315
+ if (ds.config) {
316
+ nchartsLog('[ncharts] Applying dataSet config');
317
+ applyPieDataSetConfig(dataSet, ds.config);
318
+ }
319
+ nchartsLog('[ncharts] Creating PieChartData');
320
+ const chartData = PieChartData.alloc().initWithDataSet(dataSet);
321
+ nchartsLog('[ncharts] Assigning data to instance via KVC');
322
+ // Use KVC to bypass readonly constraint from protocol
323
+ instance.setValueForKey(chartData, 'data');
324
+ }
325
+ nchartsLog('[ncharts] Calling notifyDataSetChanged');
326
+ instance.notifyDataSetChanged();
327
+ nchartsLog('[ncharts] PieChart._applyDataIOS END');
328
+ }
329
+ catch (err) {
330
+ nchartsError('[ncharts] PieChart._applyDataIOS ERROR:', err);
331
+ }
332
+ }
333
+ _applyAnimation(animation) {
334
+ if (!this._native)
335
+ return;
336
+ const instance = this._native;
337
+ if (instance.chartAnimator) {
338
+ instance.chartAnimator.stop();
339
+ }
340
+ instance.layer.contents = null;
341
+ instance.layer.setNeedsDisplay();
342
+ const durationX = (animation.durationX ?? 0) / 1000.0;
343
+ const durationY = (animation.durationY ?? 0) / 1000.0;
344
+ if (durationX > 0 && durationY > 0) {
345
+ const easingX = animation.easingX ? parseEasingIOS(animation.easingX) : 0;
346
+ const easingY = animation.easingY ? parseEasingIOS(animation.easingY) : easingX;
347
+ instance.animateWithXAxisDurationYAxisDurationEasingOptionXEasingOptionY(durationX, durationY, easingX, easingY);
348
+ }
349
+ else if (durationX > 0) {
350
+ const easingX = animation.easingX ? parseEasingIOS(animation.easingX) : 0;
351
+ instance.animateWithXAxisDurationEasingOption(durationX, easingX);
352
+ }
353
+ else if (durationY > 0) {
354
+ const easingY = animation.easingY ? parseEasingIOS(animation.easingY) : 0;
355
+ instance.animateWithYAxisDurationEasingOption(durationY, easingY);
356
+ }
357
+ }
358
+ _applyHighlights(highlights) {
359
+ if (!this._native)
360
+ return;
361
+ if (!highlights || highlights.length === 0) {
362
+ this._native.highlightValues(null);
363
+ return;
364
+ }
365
+ const highlightArray = [];
366
+ for (const h of highlights) {
367
+ const highlight = ChartHighlight.alloc().initWithXYDataSetIndexDataIndex(h.x, h.y ?? 0, h.dataSetIndex ?? 0, h.dataIndex ?? -1);
368
+ highlightArray.push(highlight);
369
+ }
370
+ this._native.highlightValues(highlightArray);
371
+ }
372
+ _invalidateChart() {
373
+ this._native?.setNeedsDisplay();
374
+ }
375
+ _applyLegend(legend) { }
376
+ _applyXAxis(xAxis) { }
377
+ _applyDescription(description) { }
378
+ _applyMarker(marker) { }
379
+ }
380
+ //# sourceMappingURL=pie-chart.ios.js.map