vislite 1.7.0-alpha.1 → 1.7.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 (184) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +1 -1
  3. package/LICENSE +20 -20
  4. package/README.md +1 -49
  5. package/lib/BarLayout/index.es.js +1 -1
  6. package/lib/BarLayout/index.es.min.js +1 -1
  7. package/lib/Buffer/index.es.js +1 -1
  8. package/lib/Buffer/index.es.min.js +1 -1
  9. package/lib/Canvas/index.es.js +1 -1
  10. package/lib/Canvas/index.es.min.js +1 -1
  11. package/lib/Cardinal/index.es.js +1 -1
  12. package/lib/Cardinal/index.es.min.js +1 -1
  13. package/lib/Eoap/index.es.js +1 -1
  14. package/lib/Eoap/index.es.min.js +1 -1
  15. package/lib/Hermite/index.es.js +1 -1
  16. package/lib/Hermite/index.es.min.js +1 -1
  17. package/lib/MapCoordinate/index.es.js +1 -1
  18. package/lib/MapCoordinate/index.es.min.js +1 -1
  19. package/lib/Matrix4/index.es.js +1 -1
  20. package/lib/Matrix4/index.es.min.js +1 -1
  21. package/lib/Mercator/index.es.js +1 -1
  22. package/lib/Mercator/index.es.min.js +1 -1
  23. package/lib/PieLayout/index.es.js +1 -1
  24. package/lib/PieLayout/index.es.min.js +1 -1
  25. package/lib/RawCanvas/index.es.js +1 -1
  26. package/lib/RawCanvas/index.es.min.js +1 -1
  27. package/lib/SVG/index.es.js +1 -1
  28. package/lib/SVG/index.es.min.js +1 -1
  29. package/lib/Shader/index.es.js +1 -1
  30. package/lib/Shader/index.es.min.js +1 -1
  31. package/lib/Texture/index.es.js +1 -1
  32. package/lib/Texture/index.es.min.js +1 -1
  33. package/lib/TreeLayout/index.es.js +1 -1
  34. package/lib/TreeLayout/index.es.min.js +1 -1
  35. package/lib/animation/index.es.js +1 -1
  36. package/lib/animation/index.es.min.js +1 -1
  37. package/lib/assemble/index.es.js +1 -1
  38. package/lib/assemble/index.es.min.js +1 -1
  39. package/lib/getLoopColors/index.es.js +1 -1
  40. package/lib/getLoopColors/index.es.min.js +1 -1
  41. package/lib/getWebGLContext/index.es.js +1 -1
  42. package/lib/getWebGLContext/index.es.min.js +1 -1
  43. package/lib/index.umd.js +1 -1
  44. package/lib/index.umd.min.js +1 -1
  45. package/lib/initOption/index.es.js +1 -1
  46. package/lib/initOption/index.es.min.js +1 -1
  47. package/lib/mergeOption/index.es.js +1 -1
  48. package/lib/mergeOption/index.es.min.js +1 -1
  49. package/lib/move/index.es.js +1 -1
  50. package/lib/move/index.es.min.js +1 -1
  51. package/lib/rotate/index.es.js +1 -1
  52. package/lib/rotate/index.es.min.js +1 -1
  53. package/lib/ruler/index.es.js +1 -1
  54. package/lib/ruler/index.es.min.js +1 -1
  55. package/lib/scale/index.es.js +1 -1
  56. package/lib/scale/index.es.min.js +1 -1
  57. package/lib/throttle/index.es.js +1 -1
  58. package/lib/throttle/index.es.min.js +1 -1
  59. package/minialipay/ui-canvas/drawImage.js +35 -35
  60. package/minialipay/ui-canvas/index.acss +4 -4
  61. package/minialipay/ui-canvas/index.axml +3 -3
  62. package/minialipay/ui-canvas/index.d.ts +1 -1
  63. package/minialipay/ui-canvas/index.js +100 -100
  64. package/minialipay/ui-canvas/index.json +6 -6
  65. package/miniprogram/ui-canvas/drawImage.js +35 -35
  66. package/miniprogram/ui-canvas/index.js +125 -125
  67. package/miniprogram/ui-canvas/index.json +4 -4
  68. package/miniprogram/ui-canvas/index.wxml +4 -4
  69. package/miniprogram/ui-canvas/index.wxss +5 -5
  70. package/package/BarLayout/index.ts +2 -2
  71. package/package/Buffer/index.ts +2 -2
  72. package/package/Canvas/index.ts +2 -2
  73. package/package/Cardinal/index.ts +2 -2
  74. package/package/Eoap/index.ts +2 -2
  75. package/package/Hermite/index.ts +2 -2
  76. package/package/MapCoordinate/index.ts +2 -2
  77. package/package/Matrix4/index.ts +2 -2
  78. package/package/Mercator/index.ts +2 -2
  79. package/package/PieLayout/index.ts +2 -2
  80. package/package/RawCanvas/index.ts +2 -2
  81. package/package/SVG/index.ts +2 -2
  82. package/package/Shader/index.ts +2 -2
  83. package/package/Texture/index.ts +2 -2
  84. package/package/TreeLayout/index.ts +2 -2
  85. package/package/animation/index.ts +5 -5
  86. package/package/assemble/index.ts +2 -2
  87. package/package/getLoopColors/index.ts +2 -2
  88. package/package/getWebGLContext/index.ts +40 -40
  89. package/package/index.ts +84 -84
  90. package/package/initOption/index.ts +2 -2
  91. package/package/mergeOption/index.ts +2 -2
  92. package/package/move/index.ts +2 -2
  93. package/package/rotate/index.ts +2 -2
  94. package/package/ruler/index.ts +2 -2
  95. package/package/scale/index.ts +2 -2
  96. package/package/throttle/index.ts +2 -2
  97. package/package.json +1 -1
  98. package/src/Canvas.ts +89 -89
  99. package/src/Eoap.ts +66 -66
  100. package/src/Matrix4/index.ts +84 -84
  101. package/src/Matrix4/move.ts +12 -12
  102. package/src/Matrix4/rotate.ts +15 -15
  103. package/src/Matrix4/scale.ts +11 -11
  104. package/src/Matrix4/transform.ts +64 -64
  105. package/src/Mercator.ts +27 -27
  106. package/src/SVG.ts +55 -55
  107. package/src/common/assemble.ts +22 -22
  108. package/src/common/canvas/arc.ts +51 -51
  109. package/src/common/canvas/config.ts +176 -176
  110. package/src/common/canvas/default.ts +64 -64
  111. package/src/common/canvas/gradient.ts +31 -31
  112. package/src/common/canvas/index.ts +188 -188
  113. package/src/common/canvas/painter.ts +453 -453
  114. package/src/common/canvas/texts.ts +18 -18
  115. package/src/common/map/getBoundary.ts +15 -15
  116. package/src/common/map/tool.ts +29 -29
  117. package/src/common/option.ts +29 -29
  118. package/src/common/setStyle.ts +5 -5
  119. package/src/common/svg/config.ts +213 -213
  120. package/src/common/svg/default.ts +29 -29
  121. package/src/common/svg/gradient.ts +53 -53
  122. package/src/common/svg/tool.ts +51 -51
  123. package/src/common/tree/index.ts +25 -25
  124. package/src/common/tree/toInnerTree.ts +61 -61
  125. package/src/common/tree/toPlainTree.ts +135 -135
  126. package/src/common/type.ts +26 -26
  127. package/src/common/webgl/buffer.ts +79 -79
  128. package/src/common/webgl/getWebGLContext.ts +45 -45
  129. package/src/common/webgl/shader.ts +75 -75
  130. package/src/common/webgl/texture.ts +98 -98
  131. package/src/coordinate/MapCoordinate.ts +80 -80
  132. package/src/getLoopColors.ts +42 -42
  133. package/src/interpolation/Cardinal.ts +110 -110
  134. package/src/interpolation/Hermite.ts +65 -65
  135. package/src/layout/BarLayout.ts +249 -249
  136. package/src/layout/PieLayout.ts +144 -144
  137. package/src/layout/TreeLayout.ts +200 -200
  138. package/src/move.ts +7 -7
  139. package/src/rotate.ts +7 -7
  140. package/src/ruler.ts +209 -209
  141. package/src/scale.ts +6 -6
  142. package/types/Bar.d.ts +91 -91
  143. package/types/BarConfig.d.ts +4 -4
  144. package/types/BarLayout.d.ts +48 -48
  145. package/types/BarOption.d.ts +31 -31
  146. package/types/Buffer.d.ts +23 -23
  147. package/types/Canvas.d.ts +375 -375
  148. package/types/CanvasConfig.d.ts +88 -88
  149. package/types/CanvasOption.d.ts +13 -13
  150. package/types/CanvasOpts.d.ts +9 -9
  151. package/types/Cardinal.d.ts +13 -13
  152. package/types/Gradient.d.ts +14 -14
  153. package/types/Hermite.d.ts +18 -18
  154. package/types/Map.d.ts +9 -9
  155. package/types/MapConfig.d.ts +27 -27
  156. package/types/MapCoordinate.d.ts +22 -22
  157. package/types/Matrix4.d.ts +47 -47
  158. package/types/Pie.d.ts +73 -73
  159. package/types/PieConfig.d.ts +26 -26
  160. package/types/PieLayout.d.ts +40 -40
  161. package/types/PieOption.d.ts +21 -21
  162. package/types/SVGConfig.d.ts +71 -71
  163. package/types/Shader.d.ts +16 -16
  164. package/types/Texture.d.ts +16 -16
  165. package/types/Tree.d.ts +74 -74
  166. package/types/TreeConfig.d.ts +36 -36
  167. package/types/TreeLayout.d.ts +59 -59
  168. package/types/TreeOption.d.ts +48 -48
  169. package/types/animation.d.ts +11 -11
  170. package/types/assemble.d.ts +5 -5
  171. package/types/getLoopColors.d.ts +5 -5
  172. package/types/getWebGLContext.d.ts +7 -7
  173. package/types/index.d.ts +195 -195
  174. package/types/move.d.ts +5 -5
  175. package/types/option.d.ts +12 -12
  176. package/types/painterConfig.d.ts +4 -4
  177. package/types/rotate.d.ts +5 -5
  178. package/types/ruler.d.ts +10 -10
  179. package/types/scale.d.ts +5 -5
  180. package/types/throttle.d.ts +5 -5
  181. package/types/ui-canvas.d.ts +4 -4
  182. package/types/uni-canvas.d.ts +3 -3
  183. package/uni-app/drawImage.js +19 -19
  184. package/uni-app/ui-canvas.vue +295 -295
@@ -1,30 +1,30 @@
1
- import type { arcCapType, textAlignType, textBaselineType, lineCapType, lineJoinType } from "../../../types/painterConfig"
2
-
3
- export default function () {
4
- return {
5
- // 颜色
6
- fillStyle: "rgb(0,0,0)",
7
- strokeStyle: "rgb(0,0,0)",
8
-
9
- // 文字对齐方式
10
- textAlign: <textAlignType>"left",
11
- textBaseline: <textBaselineType>"middle",
12
-
13
- // 文字
14
- "fontSize": 16,
15
- "fontFamily": "sans-serif",
16
-
17
- // arc二端闭合方式['butt':直线闭合,'round':圆帽闭合]
18
- "arcStartCap": <arcCapType>"butt",
19
- "arcEndCap": <arcCapType>"butt",
20
-
21
- // 线条
22
- lineDash: [],
23
- lineWidth: 1,
24
- lineCap: <lineCapType>"butt",
25
- lineJoin: <lineJoinType>"miter",
26
-
27
- // 矩形圆角半径
28
- "rectRadius": []
29
- }
1
+ import type { arcCapType, textAlignType, textBaselineType, lineCapType, lineJoinType } from "../../../types/painterConfig"
2
+
3
+ export default function () {
4
+ return {
5
+ // 颜色
6
+ fillStyle: "rgb(0,0,0)",
7
+ strokeStyle: "rgb(0,0,0)",
8
+
9
+ // 文字对齐方式
10
+ textAlign: <textAlignType>"left",
11
+ textBaseline: <textBaselineType>"middle",
12
+
13
+ // 文字
14
+ "fontSize": 16,
15
+ "fontFamily": "sans-serif",
16
+
17
+ // arc二端闭合方式['butt':直线闭合,'round':圆帽闭合]
18
+ "arcStartCap": <arcCapType>"butt",
19
+ "arcEndCap": <arcCapType>"butt",
20
+
21
+ // 线条
22
+ lineDash: [],
23
+ lineWidth: 1,
24
+ lineCap: <lineCapType>"butt",
25
+ lineJoin: <lineJoinType>"miter",
26
+
27
+ // 矩形圆角半径
28
+ "rectRadius": []
29
+ }
30
30
  }
@@ -1,53 +1,53 @@
1
- import { initDefs } from './config'
2
- import { toNode, setAttribute } from "./tool"
3
-
4
- const enhanceGradient = function (gradient: SVGElement, gradientId: string) {
5
- const enhanceGradient = {
6
- "value": function () {
7
- return "url(#" + gradientId + ")"
8
- },
9
- "setColor": function (stop: number, color: string) {
10
-
11
- const stopEl = toNode("stop")
12
- gradient.appendChild(stopEl)
13
- setAttribute(stopEl, "offset", (stop * 100) + "%")
14
- setAttribute(stopEl, "style", "stop-color:" + color + ";")
15
-
16
- return enhanceGradient
17
- }
18
- }
19
- return enhanceGradient
20
- }
21
-
22
- // 线性渐变
23
- export const linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
24
-
25
- const defs = initDefs(el)
26
- const gradientId = "visliteLg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
27
-
28
- const linearGradient = toNode("linearGradient")
29
- defs.appendChild(linearGradient)
30
- setAttribute(linearGradient, "id", gradientId)
31
- setAttribute(linearGradient, "x1", x0 + "%")
32
- setAttribute(linearGradient, "y1", y0 + "%")
33
- setAttribute(linearGradient, "x2", x1 + "%")
34
- setAttribute(linearGradient, "y2", y1 + "%")
35
-
36
- return enhanceGradient(linearGradient, gradientId)
37
- }
38
-
39
- // 环形渐变
40
- export const radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
41
-
42
- const defs = initDefs(el)
43
- const gradientId = "visliteRg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
44
-
45
- const radialGradient = toNode("radialGradient")
46
- defs.appendChild(radialGradient)
47
- setAttribute(radialGradient, "id", gradientId)
48
- setAttribute(radialGradient, "cx", cx + "%")
49
- setAttribute(radialGradient, "cy", cy + "%")
50
- setAttribute(radialGradient, "r", r + "%")
51
-
52
- return enhanceGradient(radialGradient, gradientId)
53
- }
1
+ import { initDefs } from './config'
2
+ import { toNode, setAttribute } from "./tool"
3
+
4
+ const enhanceGradient = function (gradient: SVGElement, gradientId: string) {
5
+ const enhanceGradient = {
6
+ "value": function () {
7
+ return "url(#" + gradientId + ")"
8
+ },
9
+ "setColor": function (stop: number, color: string) {
10
+
11
+ const stopEl = toNode("stop")
12
+ gradient.appendChild(stopEl)
13
+ setAttribute(stopEl, "offset", (stop * 100) + "%")
14
+ setAttribute(stopEl, "style", "stop-color:" + color + ";")
15
+
16
+ return enhanceGradient
17
+ }
18
+ }
19
+ return enhanceGradient
20
+ }
21
+
22
+ // 线性渐变
23
+ export const linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
24
+
25
+ const defs = initDefs(el)
26
+ const gradientId = "visliteLg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
27
+
28
+ const linearGradient = toNode("linearGradient")
29
+ defs.appendChild(linearGradient)
30
+ setAttribute(linearGradient, "id", gradientId)
31
+ setAttribute(linearGradient, "x1", x0 + "%")
32
+ setAttribute(linearGradient, "y1", y0 + "%")
33
+ setAttribute(linearGradient, "x2", x1 + "%")
34
+ setAttribute(linearGradient, "y2", y1 + "%")
35
+
36
+ return enhanceGradient(linearGradient, gradientId)
37
+ }
38
+
39
+ // 环形渐变
40
+ export const radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
41
+
42
+ const defs = initDefs(el)
43
+ const gradientId = "visliteRg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
44
+
45
+ const radialGradient = toNode("radialGradient")
46
+ defs.appendChild(radialGradient)
47
+ setAttribute(radialGradient, "id", gradientId)
48
+ setAttribute(radialGradient, "cx", cx + "%")
49
+ setAttribute(radialGradient, "cy", cy + "%")
50
+ setAttribute(radialGradient, "r", r + "%")
51
+
52
+ return enhanceGradient(radialGradient, gradientId)
53
+ }
@@ -1,52 +1,52 @@
1
- import type SVGConfigType from '../../../types/SVGConfig'
2
-
3
- import { XLINK_ATTRIBUTE } from "./dictionary"
4
-
5
- const setLineAttr = (el: SVGElement, config: SVGConfigType) => {
6
- setAttribute(el, "stroke-dasharray", (config.lineDash as Array<number>).join(','))
7
- setAttribute(el, "stroke-width", config.lineWidth + "")
8
- setAttribute(el, "stroke-linecap", config.lineCap + "")
9
- setAttribute(el, "stroke-linejoin", config.lineJoin + "")
10
- }
11
-
12
- // 新建节点
13
- export function toNode(tagname: string) {
14
- return document.createElementNS('http://www.w3.org/2000/svg', tagname)
15
- }
16
-
17
- // 设置属性
18
- const _setAttribute = function (el: SVGElement, key: string, value: string | number) {
19
-
20
- // 需要使用xlink命名空间的xml属性
21
- if (XLINK_ATTRIBUTE.indexOf(key) > -1) {
22
- el.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:' + key, value + "")
23
- }
24
-
25
- // 否则
26
- else {
27
- el.setAttribute(key, value + "")
28
- }
29
- }
30
- export const setAttribute = _setAttribute
31
-
32
- // 获取属性
33
- export function getAttribute(el: SVGElement, key: string) {
34
- if (XLINK_ATTRIBUTE.indexOf(key) > -1) key = 'xlink:' + key
35
- return el.getAttribute(key)
36
- }
37
-
38
- export function full(el: SVGElement, config: SVGConfigType) {
39
- setLineAttr(el, config)
40
- _setAttribute(el, "stroke", config.strokeStyle as string)
41
- _setAttribute(el, "fill", config.fillStyle as string)
42
- }
43
-
44
- export function fill(el: SVGElement, config: SVGConfigType) {
45
- _setAttribute(el, "fill", config.fillStyle as string)
46
- }
47
-
48
- export function stroke(el: SVGElement, config: SVGConfigType) {
49
- setLineAttr(el, config)
50
- _setAttribute(el, "stroke", config.strokeStyle as string)
51
- _setAttribute(el, "fill", "none")
1
+ import type SVGConfigType from '../../../types/SVGConfig'
2
+
3
+ import { XLINK_ATTRIBUTE } from "./dictionary"
4
+
5
+ const setLineAttr = (el: SVGElement, config: SVGConfigType) => {
6
+ setAttribute(el, "stroke-dasharray", (config.lineDash as Array<number>).join(','))
7
+ setAttribute(el, "stroke-width", config.lineWidth + "")
8
+ setAttribute(el, "stroke-linecap", config.lineCap + "")
9
+ setAttribute(el, "stroke-linejoin", config.lineJoin + "")
10
+ }
11
+
12
+ // 新建节点
13
+ export function toNode(tagname: string) {
14
+ return document.createElementNS('http://www.w3.org/2000/svg', tagname)
15
+ }
16
+
17
+ // 设置属性
18
+ const _setAttribute = function (el: SVGElement, key: string, value: string | number) {
19
+
20
+ // 需要使用xlink命名空间的xml属性
21
+ if (XLINK_ATTRIBUTE.indexOf(key) > -1) {
22
+ el.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:' + key, value + "")
23
+ }
24
+
25
+ // 否则
26
+ else {
27
+ el.setAttribute(key, value + "")
28
+ }
29
+ }
30
+ export const setAttribute = _setAttribute
31
+
32
+ // 获取属性
33
+ export function getAttribute(el: SVGElement, key: string) {
34
+ if (XLINK_ATTRIBUTE.indexOf(key) > -1) key = 'xlink:' + key
35
+ return el.getAttribute(key)
36
+ }
37
+
38
+ export function full(el: SVGElement, config: SVGConfigType) {
39
+ setLineAttr(el, config)
40
+ _setAttribute(el, "stroke", config.strokeStyle as string)
41
+ _setAttribute(el, "fill", config.fillStyle as string)
42
+ }
43
+
44
+ export function fill(el: SVGElement, config: SVGConfigType) {
45
+ _setAttribute(el, "fill", config.fillStyle as string)
46
+ }
47
+
48
+ export function stroke(el: SVGElement, config: SVGConfigType) {
49
+ setLineAttr(el, config)
50
+ _setAttribute(el, "stroke", config.strokeStyle as string)
51
+ _setAttribute(el, "fill", "none")
52
52
  }
@@ -1,26 +1,26 @@
1
- import type TreeConfigType from '../../../types/TreeConfig'
2
- import type { TreeResultType } from '../../../types/Tree'
3
-
4
- import toPlainTree from './toPlainTree'
5
- import { initOption } from '../option'
6
-
7
- class Tree {
8
- readonly name: string = 'Tree'
9
-
10
- private __config: TreeConfigType
11
-
12
- constructor(config: TreeConfigType = {}) {
13
- this.__config = initOption(config, {
14
- root: (initTree: any) => initTree,
15
- children: (parentTree: any) => parentTree.children,
16
- id: (treedata: any) => treedata.name
17
- })
18
- }
19
-
20
- use(initTree: any, noOpens = {}): TreeResultType {
21
- return toPlainTree(initTree, this.__config, noOpens)
22
- }
23
-
24
- }
25
-
1
+ import type TreeConfigType from '../../../types/TreeConfig'
2
+ import type { TreeResultType } from '../../../types/Tree'
3
+
4
+ import toPlainTree from './toPlainTree'
5
+ import { initOption } from '../option'
6
+
7
+ class Tree {
8
+ readonly name: string = 'Tree'
9
+
10
+ private __config: TreeConfigType
11
+
12
+ constructor(config: TreeConfigType = {}) {
13
+ this.__config = initOption(config, {
14
+ root: (initTree: any) => initTree,
15
+ children: (parentTree: any) => parentTree.children,
16
+ id: (treedata: any) => treedata.name
17
+ })
18
+ }
19
+
20
+ use(initTree: any, noOpens = {}): TreeResultType {
21
+ return toPlainTree(initTree, this.__config, noOpens)
22
+ }
23
+
24
+ }
25
+
26
26
  export default Tree
@@ -1,62 +1,62 @@
1
- import type { default as TreeConfigType, rootType, childrenType, idType } from '../../../types/TreeConfig'
2
-
3
- /**
4
- * 根据配置的层次关系(配置的id,child,root)把原始数据变成内部结构,方便后期位置计算
5
- *
6
- * tempTree[id] = {
7
- * "data": 原始数据,
8
- * "pid": 父亲ID,
9
- * "id": 唯一标识ID,
10
- * "show": boolean,
11
- * "isOpen": boolean,
12
- * "children": [cid1、cid2、...]
13
- * }
14
- */
15
- export default (initTree: any, config: TreeConfigType) => {
16
- const tempTree: {
17
- [key: string]: any
18
- } = {}
19
-
20
- // 根结点
21
- const temp = (config.root as rootType)(initTree)
22
- let id: number | string, rid: number | string
23
- id = rid = (config.id as idType)(temp)
24
- tempTree[id] = {
25
- "data": temp,
26
- "pid": null,
27
- "id": id,
28
- "isOpen": true,
29
- "show": true,
30
- "deg": 0,
31
- "children": []
32
- }
33
-
34
- let num: number = 1
35
-
36
- // 根据传递的原始数据,生成内部统一结构
37
- ; (function createTree(pdata: any, pid: number | string) {
38
- const children = (config.children as childrenType)(pdata, initTree)
39
- num += children ? children.length : 0
40
- for (let flag = 0; children && flag < children.length; flag++) {
41
- id = (config.id as idType)(children[flag])
42
- tempTree[pid].children.push(id);
43
- tempTree[id] = {
44
- "data": children[flag],
45
- "pid": pid,
46
- "id": id,
47
- "isOpen": true,
48
- "show": true,
49
- "deg": 0,
50
- "children": []
51
- }
52
- createTree(children[flag], id)
53
- }
54
- })(temp, id)
55
-
56
- return {
57
- rid,
58
- value: tempTree,
59
- num
60
- }
61
-
1
+ import type { default as TreeConfigType, rootType, childrenType, idType } from '../../../types/TreeConfig'
2
+
3
+ /**
4
+ * 根据配置的层次关系(配置的id,child,root)把原始数据变成内部结构,方便后期位置计算
5
+ *
6
+ * tempTree[id] = {
7
+ * "data": 原始数据,
8
+ * "pid": 父亲ID,
9
+ * "id": 唯一标识ID,
10
+ * "show": boolean,
11
+ * "isOpen": boolean,
12
+ * "children": [cid1、cid2、...]
13
+ * }
14
+ */
15
+ export default (initTree: any, config: TreeConfigType) => {
16
+ const tempTree: {
17
+ [key: string]: any
18
+ } = {}
19
+
20
+ // 根结点
21
+ const temp = (config.root as rootType)(initTree)
22
+ let id: number | string, rid: number | string
23
+ id = rid = (config.id as idType)(temp)
24
+ tempTree[id] = {
25
+ "data": temp,
26
+ "pid": null,
27
+ "id": id,
28
+ "isOpen": true,
29
+ "show": true,
30
+ "deg": 0,
31
+ "children": []
32
+ }
33
+
34
+ let num: number = 1
35
+
36
+ // 根据传递的原始数据,生成内部统一结构
37
+ ; (function createTree(pdata: any, pid: number | string) {
38
+ const children = (config.children as childrenType)(pdata, initTree)
39
+ num += children ? children.length : 0
40
+ for (let flag = 0; children && flag < children.length; flag++) {
41
+ id = (config.id as idType)(children[flag])
42
+ tempTree[pid].children.push(id);
43
+ tempTree[id] = {
44
+ "data": children[flag],
45
+ "pid": pid,
46
+ "id": id,
47
+ "isOpen": true,
48
+ "show": true,
49
+ "deg": 0,
50
+ "children": []
51
+ }
52
+ createTree(children[flag], id)
53
+ }
54
+ })(temp, id)
55
+
56
+ return {
57
+ rid,
58
+ value: tempTree,
59
+ num
60
+ }
61
+
62
62
  }