lw-cdp-ui 1.2.47 → 1.2.49

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 (88) hide show
  1. package/package.json +1 -1
  2. package/dist/assets/images/empty.jpg +0 -0
  3. package/dist/assets/images/login.svg +0 -558
  4. package/dist/assets/images/logo.jpg +0 -0
  5. package/dist/assets/images/logo.svg +0 -78
  6. package/dist/assets/images/logo1.svg +0 -86
  7. package/dist/assets/images/register.svg +0 -351
  8. package/dist/components/lwCronSelect/index.vue +0 -218
  9. package/dist/components/lwFlow/components/lfControl.vue +0 -126
  10. package/dist/components/lwFlow/components/lfNodePanel.vue +0 -98
  11. package/dist/components/lwFlow/config/dagre.js +0 -279
  12. package/dist/components/lwFlow/config/nodesList.js +0 -243
  13. package/dist/components/lwFlow/index.vue +0 -781
  14. package/dist/components/lwFlow/nodeEdit/audienceReceive.vue +0 -262
  15. package/dist/components/lwFlow/nodeEdit/basicSettings.vue +0 -88
  16. package/dist/components/lwFlow/nodeEdit/eventReceive.vue +0 -145
  17. package/dist/components/lwFlow/nodeEdit/index.vue +0 -306
  18. package/dist/components/lwFlow/nodeEdit/sms.vue +0 -107
  19. package/dist/components/lwFlow/nodeEdit/styleSettings.vue +0 -236
  20. package/dist/components/lwFlow/nodes/basisEnd.js +0 -56
  21. package/dist/components/lwFlow/nodes/basisStart.js +0 -56
  22. package/dist/components/lwFlow/nodes/custom.js +0 -129
  23. package/dist/components/lwFlow/nodes/et2lTable.js +0 -132
  24. package/dist/components/lwFlow/nodesData/datas/audienceReceive.js +0 -137
  25. package/dist/components/lwFlow/nodesData/datas/base.js +0 -190
  26. package/dist/components/lwFlow/nodesData/datas/collap.js +0 -95
  27. package/dist/components/lwFlow/nodesData/datas/eventReceive.js +0 -106
  28. package/dist/components/lwFlow/nodesData/datas/expand.js +0 -85
  29. package/dist/components/lwFlow/nodesData/datas/filter.js +0 -85
  30. package/dist/components/lwFlow/nodesData/datas/joiner.js +0 -96
  31. package/dist/components/lwFlow/nodesData/datas/mapper.js +0 -111
  32. package/dist/components/lwFlow/nodesData/datas/reduce.js +0 -69
  33. package/dist/components/lwFlow/nodesData/datas/sms.js +0 -69
  34. package/dist/components/lwFlow/nodesData/datas/source.js +0 -142
  35. package/dist/components/lwFlow/nodesData/datas/target.js +0 -95
  36. package/dist/components/lwFlow/nodesData/datas/timer.js +0 -180
  37. package/dist/components/lwFlow/nodesData/index.js +0 -41
  38. package/dist/components/lwForm/index.vue +0 -631
  39. package/dist/components/lwFormJson/JsonItem.vue +0 -302
  40. package/dist/components/lwFormJson/StatsConfig.vue +0 -544
  41. package/dist/components/lwFormJson/TreeItem.vue +0 -149
  42. package/dist/components/lwFormJson/index.vue +0 -362
  43. package/dist/components/lwFormJson/menuList.js +0 -324
  44. package/dist/components/lwFormMini/FormItem.vue +0 -466
  45. package/dist/components/lwFormMini/ViewItem.vue +0 -391
  46. package/dist/components/lwFormMini/index.vue +0 -421
  47. package/dist/components/lwFormMini/textToPassword.vue +0 -61
  48. package/dist/components/lwFormView/index.vue +0 -390
  49. package/dist/components/lwFormView/textToPassword.vue +0 -59
  50. package/dist/components/lwIconSelect/iconSelect.js +0 -289
  51. package/dist/components/lwIconSelect/index.vue +0 -142
  52. package/dist/components/lwLayout/components/NavMenu.vue +0 -36
  53. package/dist/components/lwLayout/components/aside.vue +0 -295
  54. package/dist/components/lwLayout/components/bu.vue +0 -88
  55. package/dist/components/lwLayout/components/iframeView.vue +0 -57
  56. package/dist/components/lwLayout/components/lang.vue +0 -77
  57. package/dist/components/lwLayout/components/setting.vue +0 -102
  58. package/dist/components/lwLayout/components/sideM.vue +0 -135
  59. package/dist/components/lwLayout/components/tags.vue +0 -388
  60. package/dist/components/lwLayout/components/topbar.vue +0 -69
  61. package/dist/components/lwLayout/components/userbar.vue +0 -214
  62. package/dist/components/lwLayout/index.vue +0 -460
  63. package/dist/components/lwLogin/index.vue +0 -506
  64. package/dist/components/lwLogin/locale/en-us.js +0 -37
  65. package/dist/components/lwLogin/locale/zh-cn.js +0 -37
  66. package/dist/components/lwSearch/date/date.vue +0 -113
  67. package/dist/components/lwSearch/dateRange/dateRange.vue +0 -118
  68. package/dist/components/lwSearch/dates/dates.vue +0 -366
  69. package/dist/components/lwSearch/index.vue +0 -628
  70. package/dist/components/lwSearch/input/input.vue +0 -55
  71. package/dist/components/lwSearch/locale/en-us.js +0 -15
  72. package/dist/components/lwSearch/locale/zh-cn.js +0 -15
  73. package/dist/components/lwSearch/select/select.vue +0 -58
  74. package/dist/components/lwSvgIcon/index.vue +0 -29
  75. package/dist/components/lwTable/index.js +0 -286
  76. package/dist/components/lwTable/index.scss +0 -238
  77. package/dist/components/lwTable/index.vue +0 -344
  78. package/dist/components/lwTable/locale/en-US.js +0 -26
  79. package/dist/components/lwTable/locale/zh-CN.js +0 -26
  80. package/dist/components/lwTable/useFullscreen.js +0 -73
  81. package/dist/components/lwTableForm/index.vue +0 -662
  82. package/dist/components/lwTableSelect/index.vue +0 -266
  83. package/dist/components/lwTableSelect/tableSelect.js +0 -23
  84. package/dist/components/lwUpload/index.vue +0 -564
  85. package/dist/lw-cdp-ui.esm.js +0 -19893
  86. package/dist/lw-cdp-ui.umd.js +0 -22
  87. package/dist/style.css +0 -1
  88. package/dist/vite.svg +0 -1
@@ -1,279 +0,0 @@
1
- // 导入 `dagre` 和 `graphlib` 模块用于图形布局处理
2
- import dagre from 'dagre'
3
- import { graphlib } from 'dagre'
4
- // 将 graphlib 挂载到 window 对象上,供全局使用
5
- window.graphlib = graphlib
6
-
7
- // 定义一个名为 Dagre 的类
8
- export default class Dagre {
9
- // 定义插件名称为 'dagre'
10
- static pluginName = 'dagre'
11
- lf // 用于存储图形库对象(例如,图形的数据模型)
12
- option // 用于存储布局选项
13
-
14
- // 渲染方法,接收一个参数 lf(图形库实例),初始化 lf 属性
15
- render(lf) {
16
- this.lf = lf
17
- }
18
-
19
- // 计算字符串的字节长度,考虑了字符的不同字节数(例如:英文大写字母为1.5,其他字符为2字节)
20
- getBytesLength(word) {
21
- if (!word) {
22
- return 0
23
- }
24
- let totalLength = 0
25
- for (let i = 0; i < word.length; i++) {
26
- const c = word.charCodeAt(i)
27
- // 大写字母字节长度为1.5
28
- if (word.match(/[A-Z]/)) {
29
- totalLength += 1.5
30
- // ASCII字符或特殊字符字节长度为1
31
- } else if ((c >= 0x0001 && c <= 0x007e) || (c >= 0xff60 && c <= 0xff9f)) {
32
- totalLength += 1
33
- // 其他字符字节长度为2
34
- } else {
35
- totalLength += 2
36
- }
37
- }
38
- return totalLength
39
- }
40
-
41
- // 布局函数,计算并设置图形的布局
42
- layout(option = {}) {
43
- const { nodes, edges, gridSize } = this.lf.graphModel
44
-
45
- // 根据 gridSize 设置节点间距和排名间距
46
- let nodesep = 40
47
- let ranksep = 40
48
- if (gridSize > 20) {
49
- nodesep = gridSize * 2
50
- ranksep = gridSize * 2
51
- }
52
-
53
- // 合并默认布局选项和外部传入的配置
54
- this.option = {
55
- type: 'dagre',
56
- rankdir: 'LR', // 布局方向,LR表示从左到右
57
- align: 'DR', // 对齐方式
58
- nodesep,
59
- ranksep,
60
- begin: [120, 120], // 初始位置
61
- ...option
62
- }
63
-
64
- // 创建布局实例并执行布局算法
65
- const layoutInstance = new DagreLayout(this.option)
66
- const layoutData = layoutInstance.layout({
67
- nodes: nodes.map((node) => ({
68
- id: node.id,
69
- size: {
70
- width: node.width,
71
- height: node.height
72
- },
73
- model: node
74
- })),
75
- edges: edges.map((edge) => ({
76
- source: edge.sourceNodeId,
77
- target: edge.targetNodeId,
78
- model: edge
79
- }))
80
- })
81
-
82
- const newGraphData = {
83
- nodes: [],
84
- edges: []
85
- }
86
-
87
- // 将计算出的布局数据应用到新的图形数据中
88
- layoutData?.nodes.forEach((node) => {
89
- const { model } = node
90
- const data = model.getData()
91
- data.x = node.x
92
- data.y = node.y
93
- newGraphData.nodes.push(data)
94
- })
95
-
96
- layoutData?.edges.forEach((edge) => {
97
- const { model } = edge
98
- const data = model.getData()
99
- // 计算边的路径点
100
- data.pointsList = this.calcPointsList(model, newGraphData.nodes)
101
- if (data.pointsList) {
102
- const first = data.pointsList[0]
103
- const last = data.pointsList[data.pointsList.length - 1]
104
- data.startPoint = { x: first.x, y: first.y }
105
- data.endPoint = { x: last.x, y: last.y }
106
- // 计算文本的位置
107
- if (data.text && data.text.value) {
108
- data.text = {
109
- x: last.x - this.getBytesLength(data.text.value) * 6 - 10,
110
- y: last.y,
111
- value: data.text.value
112
- }
113
- }
114
- } else {
115
- data.startPoint = undefined
116
- data.endPoint = undefined
117
- // 如果没有路径点且有文本,则将文本作为字符串返回
118
- if (data.text && data.text.value) {
119
- data.text = data.text.value
120
- }
121
- }
122
- newGraphData.edges.push(data)
123
- })
124
-
125
- // 使用计算后的新数据进行图形的渲染
126
- this.lf.render(newGraphData)
127
- }
128
-
129
- // 用于优化路径点的函数,删除重复的点
130
- pointFilter(points) {
131
- const allPoints = points
132
- let i = 1
133
- // 遍历路径点,移除重复的点(x或y相同的连续点)
134
- while (i < allPoints.length - 1) {
135
- const pre = allPoints[i - 1]
136
- const current = allPoints[i]
137
- const next = allPoints[i + 1]
138
- if ((pre.x === current.x && current.x === next.x) || (pre.y === current.y && current.y === next.y)) {
139
- allPoints.splice(i, 1)
140
- } else {
141
- i++
142
- }
143
- }
144
- return allPoints
145
- }
146
-
147
- // 计算边的路径点,主要用于多边形边的布局
148
- calcPointsList(model, nodes) {
149
- const pointsList = []
150
- if (this.option.rankdir === 'LR' && model.modelType === 'polyline-edge') {
151
- // 获取源节点和目标节点的模型数据
152
- const sourceNodeModel = this.lf.getNodeModelById(model.sourceNodeId)
153
- const targetNodeModel = this.lf.getNodeModelById(model.targetNodeId)
154
- const newSourceNodeData = nodes.find((node) => node.id === model.sourceNodeId)
155
- const newTargetNodeData = nodes.find((node) => node.id === model.targetNodeId)
156
-
157
- // 根据源节点和目标节点的位置计算路径点
158
- if (newSourceNodeData.x < newTargetNodeData.x) {
159
- pointsList.push({
160
- x: newSourceNodeData.x + sourceNodeModel.width / 2,
161
- y: newSourceNodeData.y,
162
- });
163
- pointsList.push({
164
- x: newSourceNodeData.x + sourceNodeModel.width / 2 + (model.offset || 50),
165
- y: newSourceNodeData.y,
166
- });
167
- pointsList.push({
168
- x: newSourceNodeData.x + sourceNodeModel.width / 2 + (model.offset || 50),
169
- y: newTargetNodeData.y,
170
- });
171
- pointsList.push({
172
- x: newTargetNodeData.x - targetNodeModel.width / 2,
173
- y: newTargetNodeData.y,
174
- });
175
- return this.pointFilter(pointsList);
176
- }
177
- if (newSourceNodeData.x > newTargetNodeData.x) {
178
- if (newSourceNodeData.y >= newTargetNodeData.y) {
179
- pointsList.push({
180
- x: newSourceNodeData.x,
181
- y: newSourceNodeData.y + sourceNodeModel.height / 2
182
- })
183
- pointsList.push({
184
- x: newSourceNodeData.x,
185
- y: newSourceNodeData.y + sourceNodeModel.height / 2 + (model.offset || 50)
186
- })
187
- pointsList.push({
188
- x: newTargetNodeData.x,
189
- y: newSourceNodeData.y + sourceNodeModel.height / 2 + (model.offset || 50)
190
- })
191
- pointsList.push({
192
- x: newTargetNodeData.x,
193
- y: newTargetNodeData.y + targetNodeModel.height / 2
194
- })
195
- } else {
196
- pointsList.push({
197
- x: newSourceNodeData.x,
198
- y: newSourceNodeData.y - sourceNodeModel.height / 2
199
- })
200
- pointsList.push({
201
- x: newSourceNodeData.x,
202
- y: newSourceNodeData.y - sourceNodeModel.height / 2 - (model.offset || 50)
203
- })
204
- pointsList.push({
205
- x: newTargetNodeData.x,
206
- y: newSourceNodeData.y - sourceNodeModel.height / 2 - (model.offset || 50)
207
- })
208
- pointsList.push({
209
- x: newTargetNodeData.x,
210
- y: newTargetNodeData.y - targetNodeModel.height / 2
211
- })
212
- }
213
- return this.pointFilter(pointsList)
214
- }
215
- }
216
- return undefined
217
- }
218
- }
219
-
220
- // 定义一个 `DagreLayout` 类,用于实现具体的 DAG 图布局算法
221
- class DagreLayout {
222
- constructor(options) {
223
- this.options = {
224
- rankdir: 'TB', // 默认垂直布局
225
- align: null,
226
- nodesep: 50,
227
- ranksep: 50,
228
- controlPoints: false,
229
- ...options // 合并外部传入的配置项
230
- }
231
- }
232
-
233
- // 执行布局算法
234
- layout(data) {
235
- const { nodes, edges } = data
236
- if (!nodes || nodes.length === 0) return
237
-
238
- // 创建一个新的 dagre 图实例
239
- const g = new dagre.graphlib.Graph({ multigraph: true })
240
- g.setGraph({})
241
- g.setDefaultEdgeLabel(() => ({}))
242
-
243
- // 配置图形的布局参数
244
- g.graph().rankdir = this.options.rankdir
245
- g.graph().align = this.options.align
246
- g.graph().nodesep = this.options.nodesep
247
- g.graph().ranksep = this.options.ranksep
248
-
249
- // 设置节点的大小
250
- nodes.forEach((node) => {
251
- g.setNode(node.id, { width: node.width || 50, height: node.height || 50 })
252
- })
253
-
254
- // 设置边
255
- edges.forEach((edge) => {
256
- g.setEdge(edge.source, edge.target)
257
- })
258
-
259
- // 执行 Dagre 布局算法
260
- dagre.layout(g)
261
-
262
- // 更新节点的坐标
263
- nodes.forEach((node) => {
264
- const coord = g.node(node.id)
265
- node.x = coord.x
266
- node.y = coord.y
267
- })
268
-
269
- // 如果需要计算边的控制点,则计算并添加到边数据中
270
- if (this.options.controlPoints) {
271
- edges.forEach((edge) => {
272
- const edgeData = g.edge(edge.source, edge.target)
273
- edge.controlPoints = edgeData.points
274
- })
275
- }
276
-
277
- return { nodes, edges } // 返回布局后的节点和边数据
278
- }
279
- }
@@ -1,243 +0,0 @@
1
- export default [
2
- {
3
- title: 'ET2L节点',
4
- list: [
5
- {
6
- name: 'SOURCE',
7
- icon: 'icon-table',
8
- type: 'source',
9
- themeColor: '#00B050'
10
- },
11
- {
12
- name: 'MAPPER',
13
- icon: 'icon-change-type',
14
- type: 'mapper',
15
- themeColor: '#56C4C3'
16
- },
17
- {
18
- name: 'JOINER',
19
- icon: 'icon-app-cdp',
20
- type: 'joiner',
21
- themeColor: '#7030A0'
22
- },
23
- {
24
- name: 'TARGET',
25
- icon: 'icon-table',
26
- type: 'target',
27
- themeColor: '#0070C0'
28
- },
29
- {
30
- name: 'FILTER',
31
- icon: 'icon-ma-filter',
32
- type: 'filter',
33
- themeColor: '#C7161E'
34
- },
35
- {
36
- name: 'COLAP',
37
- icon: 'icon-ma-branch',
38
- type: 'collap',
39
- themeColor: '#013E75'
40
- },
41
- {
42
- name: 'EXPAND',
43
- icon: 'icon-chaji',
44
- type: 'expand',
45
- themeColor: '#156858'
46
- },
47
- // {
48
- // name: 'KEY_BY',
49
- // icon: 'icon-flow-l',
50
- // type: 'key_by',
51
- // themeColor: '#FFC000'
52
- // },
53
- {
54
- name: 'REDUCE',
55
- icon: 'icon-reload',
56
- type: 'reduce',
57
- themeColor: '#EF5612'
58
- }
59
- ]
60
- },
61
- {
62
- title: '营销目标',
63
- list: [
64
- {
65
- name: '事件',
66
- icon: 'icon-event',
67
- type: 'event_receive',
68
- themeColor: '#39bcc5',
69
- background: '#f2fcfa'
70
- },
71
- {
72
- name: '人群包',
73
- icon: 'icon-user-info',
74
- type: 'audience_receive',
75
- themeColor: '#39BCC5',
76
- background: '#f2fcfa'
77
- }
78
- ]
79
- },
80
- {
81
- title: '营销触达',
82
- list: [
83
- {
84
- name: '短信',
85
- icon: 'icon-auto-reply',
86
- type: 'sms',
87
- themeColor: '#4594f3',
88
- background: '#f5faff'
89
- },
90
- {
91
- name: '微信',
92
- icon: 'icon-scrm-l',
93
- type: 'wechat',
94
- themeColor: '#4594f3',
95
- background: '#f5faff'
96
- },
97
- {
98
- name: '邮件',
99
- icon: 'icon-mail-l',
100
- type: 'email',
101
- themeColor: '#4594f3',
102
- background: '#f5faff'
103
- },
104
- {
105
- name: '权益',
106
- icon: 'icon-license',
107
- type: 'benefit',
108
- themeColor: '#4594f3',
109
- background: '#f5faff'
110
- },
111
- {
112
- name: '积分',
113
- icon: 'icon-coin',
114
- type: 'benefit',
115
- themeColor: '#4594f3',
116
- background: '#f5faff'
117
- },
118
- {
119
- name: '优惠券',
120
- icon: 'icon--coupon-2',
121
- type: 'coupon',
122
- themeColor: '#4594f3',
123
- background: '#f5faff'
124
- }
125
- ]
126
- },
127
- {
128
- title: '营销功能',
129
- list: [
130
- {
131
- name: '客户标签',
132
- icon: 'icon-tag',
133
- type: 'tag',
134
- themeColor: '#39BCC5'
135
- },
136
- {
137
- name: 'Flow',
138
- icon: 'icon-event',
139
- type: 'flow',
140
- themeColor: '#e8ffea'
141
- },
142
- {
143
- name: '扩展数据',
144
- icon: 'icon-event',
145
- type: 'extend_data',
146
- themeColor: '#ff6d69'
147
- },
148
- {
149
- name: '定制功能',
150
- icon: 'icon-flow-stop',
151
- type: 'customization',
152
- themeColor: '#ff6d69'
153
- }
154
- ]
155
- },
156
- {
157
- title: 'Flow',
158
- list: [
159
- {
160
- name: 'flow测试',
161
- icon: 'icon-event',
162
- type: 'tag',
163
- themeColor: '#39BCC5'
164
- }
165
- ]
166
- },
167
- {
168
- title: '逻辑操作',
169
- list: [
170
- {
171
- name: '交集',
172
- icon: 'icon-cross',
173
- type: 'intersect',
174
- themeColor: '#fba980'
175
- },
176
- {
177
- name: '并集',
178
- icon: 'icon-merge',
179
- type: 'union',
180
- themeColor: '#fba980'
181
- },
182
- {
183
- name: '差集',
184
- icon: 'icon-chaji',
185
- type: 'exclusion',
186
- themeColor: '#fba980'
187
- },
188
- {
189
- name: '过滤',
190
- icon: 'icon-ma-filter',
191
- type: 'filter',
192
- themeColor: '#fba980'
193
- },
194
- {
195
- name: '去重',
196
- icon: 'icon-quzhong',
197
- type: 'unique',
198
- themeColor: '#fba980'
199
- },
200
- {
201
- name: 'A/B测试',
202
- icon: 'icon-ABtestshezhi',
203
- type: 'abtest',
204
- themeColor: '#fba980'
205
- },
206
- {
207
- name: '排序',
208
- icon: 'icon-sort-fill',
209
- type: 'sort',
210
- themeColor: '#fba980'
211
- }
212
- ]
213
- },
214
- {
215
- title: '流程控制',
216
- list: [
217
- {
218
- name: '开始',
219
- icon: 'icon-start',
220
- type: 'start',
221
- themeColor: '#39BCC5'
222
- },
223
- {
224
- name: '定时',
225
- icon: 'icon-timing',
226
- type: 'timer',
227
- themeColor: '#105a63'
228
- },
229
- {
230
- name: '限流',
231
- icon: 'icon-timing',
232
- type: 'restrict',
233
- themeColor: '#105a63'
234
- },
235
- {
236
- name: '结束',
237
- icon: 'icon-flow-stop',
238
- type: 'end',
239
- themeColor: '#ff6d69'
240
- }
241
- ]
242
- }
243
- ]