vislite 1.12.0-alpha.0 → 1.12.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 (183) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +402 -394
  3. package/LICENSE +20 -20
  4. package/README-en.md +245 -245
  5. package/README.md +245 -245
  6. package/bin/formatArgv.js +30 -30
  7. package/bin/help.js +17 -17
  8. package/bin/run +21 -21
  9. package/bin/skills.js +26 -26
  10. package/lib/BarLayout/index.es.js +348 -348
  11. package/lib/Buffer/index.es.js +34 -34
  12. package/lib/Canvas/index.es.js +804 -800
  13. package/lib/Canvas/index.es.min.js +1 -1
  14. package/lib/Cardinal/index.es.js +89 -89
  15. package/lib/Eoap/index.es.js +32 -32
  16. package/lib/Hermite/index.es.js +34 -34
  17. package/lib/MapCoordinate/index.es.js +199 -199
  18. package/lib/Matrix4/index.es.js +123 -123
  19. package/lib/Mercator/index.es.js +18 -18
  20. package/lib/PieLayout/index.es.js +115 -115
  21. package/lib/RawCanvas/index.es.js +736 -732
  22. package/lib/RawCanvas/index.es.min.js +1 -1
  23. package/lib/SVG/index.es.js +626 -631
  24. package/lib/SVG/index.es.min.js +1 -1
  25. package/lib/Shader/index.es.js +34 -34
  26. package/lib/Texture/index.es.js +52 -52
  27. package/lib/TreeLayout/index.es.js +301 -315
  28. package/lib/animation/index.es.js +2 -2
  29. package/lib/assemble/index.es.js +19 -16
  30. package/lib/assemble/index.es.min.js +1 -1
  31. package/lib/getLoopColors/index.es.js +34 -34
  32. package/lib/getWebGLContext/index.es.js +61 -61
  33. package/lib/index.umd.js +2797 -2784
  34. package/lib/index.umd.min.js +2 -2
  35. package/lib/initOption/index.es.js +5 -5
  36. package/lib/mergeOption/index.es.js +34 -34
  37. package/lib/move/index.es.js +6 -6
  38. package/lib/rotate/index.es.js +6 -6
  39. package/lib/ruler/index.es.js +136 -136
  40. package/lib/scale/index.es.js +5 -5
  41. package/minialipay/ui-canvas/drawImage.js +35 -35
  42. package/minialipay/ui-canvas/index.acss +4 -4
  43. package/minialipay/ui-canvas/index.axml +3 -3
  44. package/minialipay/ui-canvas/index.d.ts +1 -1
  45. package/minialipay/ui-canvas/index.js +100 -100
  46. package/minialipay/ui-canvas/index.json +6 -6
  47. package/miniprogram/ui-canvas/drawImage.js +35 -35
  48. package/miniprogram/ui-canvas/index.js +125 -125
  49. package/miniprogram/ui-canvas/index.json +4 -4
  50. package/miniprogram/ui-canvas/index.wxml +4 -4
  51. package/miniprogram/ui-canvas/index.wxss +5 -5
  52. package/package/BarLayout/index.ts +2 -2
  53. package/package/Buffer/index.ts +2 -2
  54. package/package/Canvas/index.ts +2 -2
  55. package/package/Cardinal/index.ts +2 -2
  56. package/package/Eoap/index.ts +2 -2
  57. package/package/Hermite/index.ts +2 -2
  58. package/package/MapCoordinate/index.ts +2 -2
  59. package/package/Matrix4/index.ts +2 -2
  60. package/package/Mercator/index.ts +2 -2
  61. package/package/PieLayout/index.ts +2 -2
  62. package/package/RawCanvas/index.ts +2 -2
  63. package/package/SVG/index.ts +2 -2
  64. package/package/Shader/index.ts +2 -2
  65. package/package/Texture/index.ts +2 -2
  66. package/package/TreeLayout/index.ts +2 -2
  67. package/package/animation/index.ts +5 -5
  68. package/package/assemble/index.ts +2 -2
  69. package/package/getLoopColors/index.ts +2 -2
  70. package/package/getWebGLContext/index.ts +40 -40
  71. package/package/index.ts +84 -84
  72. package/package/initOption/index.ts +2 -2
  73. package/package/mergeOption/index.ts +2 -2
  74. package/package/move/index.ts +2 -2
  75. package/package/rotate/index.ts +2 -2
  76. package/package/ruler/index.ts +2 -2
  77. package/package/scale/index.ts +2 -2
  78. package/package/throttle/index.ts +2 -2
  79. package/package.json +79 -79
  80. package/skills/vislite-lib/BarLayout.md +117 -117
  81. package/skills/vislite-lib/Canvas.md +183 -183
  82. package/skills/vislite-lib/Interpolation.md +129 -129
  83. package/skills/vislite-lib/Matrix.md +174 -174
  84. package/skills/vislite-lib/PieLayout.md +131 -131
  85. package/skills/vislite-lib/Projections.md +158 -158
  86. package/skills/vislite-lib/SKILL.md +179 -179
  87. package/skills/vislite-lib/SVG.md +137 -137
  88. package/skills/vislite-lib/TreeLayout.md +176 -176
  89. package/skills/vislite-lib/Utilities.md +261 -261
  90. package/skills/vislite-lib/WebGL.md +106 -106
  91. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  92. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  93. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  94. package/src/Canvas.ts +89 -89
  95. package/src/Eoap.ts +66 -66
  96. package/src/Matrix4/index.ts +84 -84
  97. package/src/Matrix4/move.ts +12 -12
  98. package/src/Matrix4/rotate.ts +15 -15
  99. package/src/Matrix4/scale.ts +11 -11
  100. package/src/Matrix4/transform.ts +64 -64
  101. package/src/Mercator.ts +27 -27
  102. package/src/SVG.ts +86 -69
  103. package/src/common/assemble.ts +30 -22
  104. package/src/common/canvas/arc.ts +51 -51
  105. package/src/common/canvas/config.ts +176 -176
  106. package/src/common/canvas/default.ts +64 -64
  107. package/src/common/canvas/gradient.ts +31 -31
  108. package/src/common/canvas/index.ts +189 -189
  109. package/src/common/canvas/painter.ts +475 -454
  110. package/src/common/canvas/texts.ts +18 -18
  111. package/src/common/map/getBoundary.ts +15 -15
  112. package/src/common/map/tool.ts +29 -29
  113. package/src/common/option.ts +31 -31
  114. package/src/common/setStyle.ts +5 -5
  115. package/src/common/svg/config.ts +213 -213
  116. package/src/common/svg/default.ts +29 -29
  117. package/src/common/svg/gradient.ts +53 -53
  118. package/src/common/svg/index.ts +420 -420
  119. package/src/common/svg/tool.ts +51 -51
  120. package/src/common/tree/index.ts +25 -25
  121. package/src/common/tree/toInnerTree.ts +61 -61
  122. package/src/common/tree/toPlainTree.ts +135 -135
  123. package/src/common/type.ts +26 -26
  124. package/src/common/webgl/buffer.ts +79 -79
  125. package/src/common/webgl/getWebGLContext.ts +45 -45
  126. package/src/common/webgl/shader.ts +75 -75
  127. package/src/common/webgl/texture.ts +98 -98
  128. package/src/coordinate/MapCoordinate.ts +80 -80
  129. package/src/getLoopColors.ts +42 -42
  130. package/src/interpolation/Cardinal.ts +110 -110
  131. package/src/interpolation/Hermite.ts +65 -65
  132. package/src/layout/BarLayout.ts +249 -249
  133. package/src/layout/PieLayout.ts +146 -146
  134. package/src/layout/TreeLayout.ts +200 -200
  135. package/src/move.ts +7 -7
  136. package/src/rotate.ts +7 -7
  137. package/src/ruler.ts +209 -209
  138. package/src/scale.ts +6 -6
  139. package/types/Bar.d.ts +91 -91
  140. package/types/BarConfig.d.ts +4 -4
  141. package/types/BarLayout.d.ts +48 -48
  142. package/types/BarOption.d.ts +31 -31
  143. package/types/Buffer.d.ts +30 -30
  144. package/types/Canvas.d.ts +379 -379
  145. package/types/CanvasConfig.d.ts +61 -61
  146. package/types/CanvasOption.d.ts +13 -13
  147. package/types/CanvasOpts.d.ts +9 -9
  148. package/types/Cardinal.d.ts +20 -20
  149. package/types/Gradient.d.ts +20 -20
  150. package/types/Hermite.d.ts +25 -25
  151. package/types/Map.d.ts +9 -9
  152. package/types/MapConfig.d.ts +27 -27
  153. package/types/MapCoordinate.d.ts +22 -22
  154. package/types/Matrix4.d.ts +79 -79
  155. package/types/Pie.d.ts +73 -73
  156. package/types/PieConfig.d.ts +26 -26
  157. package/types/PieLayout.d.ts +40 -40
  158. package/types/PieOption.d.ts +21 -21
  159. package/types/SVG.d.ts +282 -282
  160. package/types/SVGConfig.d.ts +54 -54
  161. package/types/Shader.d.ts +22 -22
  162. package/types/Texture.d.ts +22 -22
  163. package/types/Tree.d.ts +74 -74
  164. package/types/TreeConfig.d.ts +52 -52
  165. package/types/TreeLayout.d.ts +71 -71
  166. package/types/TreeOption.d.ts +48 -48
  167. package/types/animation.d.ts +26 -26
  168. package/types/assemble.d.ts +14 -14
  169. package/types/getLoopColors.d.ts +13 -13
  170. package/types/getWebGLContext.d.ts +7 -7
  171. package/types/index.d.ts +220 -221
  172. package/types/module.d.ts +110 -110
  173. package/types/move.d.ts +15 -15
  174. package/types/option.d.ts +12 -12
  175. package/types/painterConfig.d.ts +14 -14
  176. package/types/rotate.d.ts +15 -15
  177. package/types/ruler.d.ts +24 -24
  178. package/types/scale.d.ts +15 -15
  179. package/types/throttle.d.ts +6 -6
  180. package/types/ui-canvas.d.ts +4 -4
  181. package/types/uni-canvas.d.ts +3 -3
  182. package/uni-app/drawImage.js +19 -19
  183. package/uni-app/ui-canvas.vue +295 -295
@@ -1,250 +1,250 @@
1
- import type BarLayoutType from '../../types/BarLayout'
2
- import type { BarResultType } from '../../types/Bar'
3
- import type BarOptionType from '../../types/BarOption'
4
- import type BarConfigType from '../../types/BarConfig'
5
-
6
- import { initOption } from '../common/option'
7
- import ruler from '../ruler'
8
- import { animation } from "oipage/web/animation/index"
9
-
10
- class BarLayout implements BarLayoutType {
11
- readonly name: string = 'BarLayout'
12
-
13
- private __config: BarConfigType
14
-
15
- constructor(config: BarConfigType = {}) {
16
- this.__config = initOption(config, {
17
-
18
- })
19
- }
20
-
21
- private __option = {
22
- x: 50,
23
- y: 350,
24
- width: 400,
25
- height: 300,
26
- category: "xAxis",
27
- duration: 200
28
- }
29
-
30
- setOption(option: BarOptionType) {
31
- initOption(option, this.__option)
32
- return this
33
- }
34
-
35
- private __rback: (bar: BarResultType) => void
36
- private __oralBar: any
37
- private __preBar: BarResultType | null
38
-
39
- use(initBar: any) {
40
- const bar: BarResultType = {
41
- coordinate: {
42
- x: this.__option.x,
43
- y: this.__option.y,
44
- width: this.__option.width,
45
- height: this.__option.height,
46
- xAxis: {
47
- type: this.__option.category === "xAxis" ? "category" : "value",
48
- data: []
49
- },
50
- yAxis: {
51
- type: this.__option.category === "xAxis" ? "value" : "category",
52
- data: []
53
- }
54
- },
55
- node: []
56
- }
57
-
58
- let maxValue = void 0, minValue = void 0
59
-
60
- // 求解一维最值
61
- if (initBar.data) {
62
- for (const val of initBar.data) {
63
- if (maxValue === void 0 || val > maxValue) maxValue = val
64
- if (minValue === void 0 || val < minValue) minValue = val
65
- }
66
- }
67
-
68
- // 求解二维最值
69
- else if (initBar.value) {
70
- for (const item of initBar.value) {
71
- for (const val of item.data) {
72
- if (maxValue === void 0 || val > maxValue) maxValue = val
73
- if (minValue === void 0 || val < minValue) minValue = val
74
- }
75
- }
76
- } else {
77
- throw new Error('No data leads to parsing errors')
78
- }
79
-
80
- const rulerArray = ruler(maxValue || 0, minValue || 0, 5)
81
-
82
- let categoryLen // 分类轴长度
83
- let valueLen // 数值轴长度
84
-
85
- if (this.__option.category === "xAxis") {
86
-
87
- // 设置刻度尺刻度
88
- bar.coordinate.xAxis.data = initBar.category
89
- bar.coordinate.yAxis.data = rulerArray
90
-
91
- // 设置轴长度
92
- categoryLen = this.__option.width
93
- valueLen = -1 * this.__option.height
94
- } else {
95
- bar.coordinate.xAxis.data = rulerArray
96
- bar.coordinate.yAxis.data = initBar.category
97
- categoryLen = this.__option.height
98
- valueLen = this.__option.width
99
- }
100
-
101
- // 求解分类轴刻度
102
- const category: any = []
103
-
104
- // 一维
105
- const categorySingle1Width = categoryLen / initBar.category.length
106
- const categorySingle2Width = categorySingle1Width * 0.9
107
- const categoryStart = categorySingle1Width * 0.05
108
- if (initBar.data) {
109
- for (let i = 0; i < initBar.data.length; i++) {
110
- category.push([
111
- categoryStart + categorySingle1Width * i,
112
- categorySingle2Width
113
- ])
114
- }
115
- }
116
-
117
- // 二维
118
- else {
119
- const categorySingle3Width = categorySingle2Width / initBar.value.length
120
- const categorySingle4Width = categorySingle3Width * 0.9
121
- const categoryStartBlance = categorySingle3Width * 0.05
122
- for (let i = 0; i < initBar.value[0].data.length; i++) {
123
- category[i] = []
124
- for (let j = 0; j < initBar.value.length; j++) {
125
- category[i].push([
126
- categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
127
- categorySingle4Width
128
- ])
129
- }
130
- }
131
- }
132
-
133
- // 根据值获取长度
134
- const singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0])
135
- const getLenByValue = (value: number) => {
136
- return singleValueLen * (value - rulerArray[0])
137
- }
138
-
139
- // 计算小矩形
140
- if (this.__option.category === "xAxis") { // 分类在x轴,从左到右
141
- if (initBar.data) {
142
- const nodeBar = []
143
- for (let i = 0; i < initBar.data.length; i++) {
144
- nodeBar.push({
145
- x: this.__option.x + category[i][0],
146
- y: this.__option.y,
147
- width: category[i][1],
148
- height: getLenByValue(initBar.data[i]),
149
- value: initBar.data[i]
150
- })
151
- }
152
- bar.node.push({
153
- bar: nodeBar
154
- })
155
- } else {
156
- for (let j = 0; j < initBar.value.length; j++) {
157
- const nodeBar = []
158
- for (let i = 0; i < initBar.value[j].data.length; i++) {
159
- nodeBar.push({
160
- x: this.__option.x + category[i][j][0],
161
- y: this.__option.y,
162
- width: category[i][j][1],
163
- height: getLenByValue(initBar.value[j].data[i]),
164
- value: initBar.value[j].data[i]
165
- })
166
- }
167
- bar.node.push({
168
- name: initBar.value[j].name,
169
- bar: nodeBar
170
- })
171
- }
172
- }
173
- } else { // 分类在y轴,从上到下
174
- if (initBar.data) {
175
- const nodeBar = []
176
- for (let i = 0; i < initBar.data.length; i++) {
177
- nodeBar.push({
178
- x: this.__option.x,
179
- y: this.__option.y - this.__option.height + category[i][0],
180
- width: getLenByValue(initBar.data[i]),
181
- height: category[i][1],
182
- value: initBar.data[i]
183
- })
184
- }
185
- bar.node.push({
186
- bar: nodeBar
187
- })
188
- } else {
189
- for (let j = 0; j < initBar.value.length; j++) {
190
- const nodeBar = []
191
- for (let i = 0; i < initBar.value[j].data.length; i++) {
192
- nodeBar.push({
193
- x: this.__option.x,
194
- y: this.__option.y - this.__option.height + category[i][j][0],
195
- width: getLenByValue(initBar.value[j].data[i]),
196
- height: category[i][j][1],
197
- value: initBar.value[j].data[i]
198
- })
199
- }
200
- bar.node.push({
201
- name: initBar.value[j].name,
202
- bar: nodeBar
203
- })
204
- }
205
- }
206
- }
207
-
208
- return bar
209
- }
210
-
211
- bind(initBar: any, renderBack: (bar: BarResultType) => void) {
212
- this.__rback = renderBack
213
- this.__oralBar = initBar
214
-
215
- this.__preBar = this.use(this.__oralBar)
216
- this.__rback(this.__preBar)
217
-
218
- return this
219
- }
220
-
221
- unbind() {
222
- this.__rback = () => null
223
- this.__oralBar = null
224
- this.__preBar = null
225
- return this
226
- }
227
-
228
- doUpdate() {
229
- const newBar = this.use(this.__oralBar)
230
-
231
- const cacheBar = JSON.parse(JSON.stringify(newBar))
232
-
233
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
234
- animation((deep) => {
235
-
236
- if (this.__preBar) {
237
- // todo
238
- } else {
239
- this.__rback(cacheBar)
240
- }
241
-
242
- }, this.__option.duration, () => {
243
- this.__preBar = newBar
244
- this.__rback(this.__preBar)
245
- })
246
- return this
247
- }
248
- }
249
-
1
+ import type BarLayoutType from '../../types/BarLayout'
2
+ import type { BarResultType } from '../../types/Bar'
3
+ import type BarOptionType from '../../types/BarOption'
4
+ import type BarConfigType from '../../types/BarConfig'
5
+
6
+ import { initOption } from '../common/option'
7
+ import ruler from '../ruler'
8
+ import { animation } from "oipage/web/animation/index"
9
+
10
+ class BarLayout implements BarLayoutType {
11
+ readonly name: string = 'BarLayout'
12
+
13
+ private __config: BarConfigType
14
+
15
+ constructor(config: BarConfigType = {}) {
16
+ this.__config = initOption(config, {
17
+
18
+ })
19
+ }
20
+
21
+ private __option = {
22
+ x: 50,
23
+ y: 350,
24
+ width: 400,
25
+ height: 300,
26
+ category: "xAxis",
27
+ duration: 200
28
+ }
29
+
30
+ setOption(option: BarOptionType) {
31
+ initOption(option, this.__option)
32
+ return this
33
+ }
34
+
35
+ private __rback: (bar: BarResultType) => void
36
+ private __oralBar: any
37
+ private __preBar: BarResultType | null
38
+
39
+ use(initBar: any) {
40
+ const bar: BarResultType = {
41
+ coordinate: {
42
+ x: this.__option.x,
43
+ y: this.__option.y,
44
+ width: this.__option.width,
45
+ height: this.__option.height,
46
+ xAxis: {
47
+ type: this.__option.category === "xAxis" ? "category" : "value",
48
+ data: []
49
+ },
50
+ yAxis: {
51
+ type: this.__option.category === "xAxis" ? "value" : "category",
52
+ data: []
53
+ }
54
+ },
55
+ node: []
56
+ }
57
+
58
+ let maxValue = void 0, minValue = void 0
59
+
60
+ // 求解一维最值
61
+ if (initBar.data) {
62
+ for (const val of initBar.data) {
63
+ if (maxValue === void 0 || val > maxValue) maxValue = val
64
+ if (minValue === void 0 || val < minValue) minValue = val
65
+ }
66
+ }
67
+
68
+ // 求解二维最值
69
+ else if (initBar.value) {
70
+ for (const item of initBar.value) {
71
+ for (const val of item.data) {
72
+ if (maxValue === void 0 || val > maxValue) maxValue = val
73
+ if (minValue === void 0 || val < minValue) minValue = val
74
+ }
75
+ }
76
+ } else {
77
+ throw new Error('No data leads to parsing errors')
78
+ }
79
+
80
+ const rulerArray = ruler(maxValue || 0, minValue || 0, 5)
81
+
82
+ let categoryLen // 分类轴长度
83
+ let valueLen // 数值轴长度
84
+
85
+ if (this.__option.category === "xAxis") {
86
+
87
+ // 设置刻度尺刻度
88
+ bar.coordinate.xAxis.data = initBar.category
89
+ bar.coordinate.yAxis.data = rulerArray
90
+
91
+ // 设置轴长度
92
+ categoryLen = this.__option.width
93
+ valueLen = -1 * this.__option.height
94
+ } else {
95
+ bar.coordinate.xAxis.data = rulerArray
96
+ bar.coordinate.yAxis.data = initBar.category
97
+ categoryLen = this.__option.height
98
+ valueLen = this.__option.width
99
+ }
100
+
101
+ // 求解分类轴刻度
102
+ const category: any = []
103
+
104
+ // 一维
105
+ const categorySingle1Width = categoryLen / initBar.category.length
106
+ const categorySingle2Width = categorySingle1Width * 0.9
107
+ const categoryStart = categorySingle1Width * 0.05
108
+ if (initBar.data) {
109
+ for (let i = 0; i < initBar.data.length; i++) {
110
+ category.push([
111
+ categoryStart + categorySingle1Width * i,
112
+ categorySingle2Width
113
+ ])
114
+ }
115
+ }
116
+
117
+ // 二维
118
+ else {
119
+ const categorySingle3Width = categorySingle2Width / initBar.value.length
120
+ const categorySingle4Width = categorySingle3Width * 0.9
121
+ const categoryStartBlance = categorySingle3Width * 0.05
122
+ for (let i = 0; i < initBar.value[0].data.length; i++) {
123
+ category[i] = []
124
+ for (let j = 0; j < initBar.value.length; j++) {
125
+ category[i].push([
126
+ categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
127
+ categorySingle4Width
128
+ ])
129
+ }
130
+ }
131
+ }
132
+
133
+ // 根据值获取长度
134
+ const singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0])
135
+ const getLenByValue = (value: number) => {
136
+ return singleValueLen * (value - rulerArray[0])
137
+ }
138
+
139
+ // 计算小矩形
140
+ if (this.__option.category === "xAxis") { // 分类在x轴,从左到右
141
+ if (initBar.data) {
142
+ const nodeBar = []
143
+ for (let i = 0; i < initBar.data.length; i++) {
144
+ nodeBar.push({
145
+ x: this.__option.x + category[i][0],
146
+ y: this.__option.y,
147
+ width: category[i][1],
148
+ height: getLenByValue(initBar.data[i]),
149
+ value: initBar.data[i]
150
+ })
151
+ }
152
+ bar.node.push({
153
+ bar: nodeBar
154
+ })
155
+ } else {
156
+ for (let j = 0; j < initBar.value.length; j++) {
157
+ const nodeBar = []
158
+ for (let i = 0; i < initBar.value[j].data.length; i++) {
159
+ nodeBar.push({
160
+ x: this.__option.x + category[i][j][0],
161
+ y: this.__option.y,
162
+ width: category[i][j][1],
163
+ height: getLenByValue(initBar.value[j].data[i]),
164
+ value: initBar.value[j].data[i]
165
+ })
166
+ }
167
+ bar.node.push({
168
+ name: initBar.value[j].name,
169
+ bar: nodeBar
170
+ })
171
+ }
172
+ }
173
+ } else { // 分类在y轴,从上到下
174
+ if (initBar.data) {
175
+ const nodeBar = []
176
+ for (let i = 0; i < initBar.data.length; i++) {
177
+ nodeBar.push({
178
+ x: this.__option.x,
179
+ y: this.__option.y - this.__option.height + category[i][0],
180
+ width: getLenByValue(initBar.data[i]),
181
+ height: category[i][1],
182
+ value: initBar.data[i]
183
+ })
184
+ }
185
+ bar.node.push({
186
+ bar: nodeBar
187
+ })
188
+ } else {
189
+ for (let j = 0; j < initBar.value.length; j++) {
190
+ const nodeBar = []
191
+ for (let i = 0; i < initBar.value[j].data.length; i++) {
192
+ nodeBar.push({
193
+ x: this.__option.x,
194
+ y: this.__option.y - this.__option.height + category[i][j][0],
195
+ width: getLenByValue(initBar.value[j].data[i]),
196
+ height: category[i][j][1],
197
+ value: initBar.value[j].data[i]
198
+ })
199
+ }
200
+ bar.node.push({
201
+ name: initBar.value[j].name,
202
+ bar: nodeBar
203
+ })
204
+ }
205
+ }
206
+ }
207
+
208
+ return bar
209
+ }
210
+
211
+ bind(initBar: any, renderBack: (bar: BarResultType) => void) {
212
+ this.__rback = renderBack
213
+ this.__oralBar = initBar
214
+
215
+ this.__preBar = this.use(this.__oralBar)
216
+ this.__rback(this.__preBar)
217
+
218
+ return this
219
+ }
220
+
221
+ unbind() {
222
+ this.__rback = () => null
223
+ this.__oralBar = null
224
+ this.__preBar = null
225
+ return this
226
+ }
227
+
228
+ doUpdate() {
229
+ const newBar = this.use(this.__oralBar)
230
+
231
+ const cacheBar = JSON.parse(JSON.stringify(newBar))
232
+
233
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
234
+ animation((deep) => {
235
+
236
+ if (this.__preBar) {
237
+ // todo
238
+ } else {
239
+ this.__rback(cacheBar)
240
+ }
241
+
242
+ }, this.__option.duration, () => {
243
+ this.__preBar = newBar
244
+ this.__rback(this.__preBar)
245
+ })
246
+ return this
247
+ }
248
+ }
249
+
250
250
  export default BarLayout