evui 3.4.206 → 3.4.208

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 (162) hide show
  1. package/README.md +18 -33
  2. package/dist/404.html +44 -0
  3. package/dist/favicon.ico +0 -0
  4. package/dist/index.js +22645 -0
  5. package/dist/index.umd.cjs +28 -0
  6. package/dist/style.css +1 -0
  7. package/package.json +46 -43
  8. package/dist/evui.common.js +0 -63678
  9. package/dist/evui.common.js.map +0 -1
  10. package/dist/evui.umd.js +0 -63688
  11. package/dist/evui.umd.js.map +0 -1
  12. package/dist/evui.umd.min.js +0 -2
  13. package/dist/evui.umd.min.js.map +0 -1
  14. package/dist/img/EVUI.b82ee81a.svg +0 -293
  15. package/src/assets/logo.png +0 -0
  16. package/src/common/emitter.js +0 -20
  17. package/src/common/utils.bignumber.js +0 -67
  18. package/src/common/utils.debounce.js +0 -223
  19. package/src/common/utils.js +0 -151
  20. package/src/common/utils.table.js +0 -78
  21. package/src/common/utils.throttle.js +0 -83
  22. package/src/common/utils.tree.js +0 -18
  23. package/src/components/button/Button.vue +0 -195
  24. package/src/components/button/index.js +0 -7
  25. package/src/components/buttonGroup/ButtonGroup.vue +0 -11
  26. package/src/components/buttonGroup/index.js +0 -7
  27. package/src/components/calendar/Calendar.vue +0 -725
  28. package/src/components/calendar/index.js +0 -7
  29. package/src/components/calendar/uses.js +0 -1410
  30. package/src/components/chart/Chart.vue +0 -363
  31. package/src/components/chart/ChartToolbar.vue +0 -52
  32. package/src/components/chart/chart.core.js +0 -1170
  33. package/src/components/chart/chartZoom.core.js +0 -540
  34. package/src/components/chart/element/element.bar.js +0 -672
  35. package/src/components/chart/element/element.bar.time.js +0 -166
  36. package/src/components/chart/element/element.heatmap.js +0 -743
  37. package/src/components/chart/element/element.line.js +0 -611
  38. package/src/components/chart/element/element.pie.js +0 -197
  39. package/src/components/chart/element/element.scatter.js +0 -320
  40. package/src/components/chart/element/element.tip.js +0 -717
  41. package/src/components/chart/helpers/helpers.canvas.js +0 -265
  42. package/src/components/chart/helpers/helpers.constant.js +0 -235
  43. package/src/components/chart/helpers/helpers.util.js +0 -400
  44. package/src/components/chart/index.js +0 -9
  45. package/src/components/chart/model/index.js +0 -50
  46. package/src/components/chart/model/model.series.js +0 -125
  47. package/src/components/chart/model/model.store.js +0 -1427
  48. package/src/components/chart/plugins/plugins.interaction.js +0 -1655
  49. package/src/components/chart/plugins/plugins.legend.gradient.js +0 -606
  50. package/src/components/chart/plugins/plugins.legend.js +0 -1543
  51. package/src/components/chart/plugins/plugins.pie.js +0 -254
  52. package/src/components/chart/plugins/plugins.scrollbar.js +0 -732
  53. package/src/components/chart/plugins/plugins.title.js +0 -61
  54. package/src/components/chart/plugins/plugins.tooltip.js +0 -1041
  55. package/src/components/chart/scale/scale.js +0 -951
  56. package/src/components/chart/scale/scale.linear.js +0 -268
  57. package/src/components/chart/scale/scale.logarithmic.js +0 -135
  58. package/src/components/chart/scale/scale.step.js +0 -430
  59. package/src/components/chart/scale/scale.time.category.js +0 -338
  60. package/src/components/chart/scale/scale.time.js +0 -49
  61. package/src/components/chart/style/chart.scss +0 -405
  62. package/src/components/chart/uses.js +0 -721
  63. package/src/components/chartBrush/ChartBrush.vue +0 -323
  64. package/src/components/chartBrush/chartBrush.core.js +0 -691
  65. package/src/components/chartBrush/index.js +0 -9
  66. package/src/components/chartBrush/uses.js +0 -23
  67. package/src/components/chartGroup/ChartGroup.vue +0 -144
  68. package/src/components/chartGroup/index.js +0 -9
  69. package/src/components/chartGroup/style/chartGroup.scss +0 -5
  70. package/src/components/chartGroup/uses.js +0 -53
  71. package/src/components/checkbox/Checkbox.vue +0 -229
  72. package/src/components/checkbox/index.js +0 -7
  73. package/src/components/checkboxGroup/CheckboxGroup.vue +0 -44
  74. package/src/components/checkboxGroup/index.js +0 -7
  75. package/src/components/contextMenu/ContextMenu.vue +0 -95
  76. package/src/components/contextMenu/MenuList.vue +0 -182
  77. package/src/components/contextMenu/index.js +0 -7
  78. package/src/components/contextMenu/uses.js +0 -223
  79. package/src/components/datePicker/DatePicker.vue +0 -504
  80. package/src/components/datePicker/index.js +0 -7
  81. package/src/components/datePicker/uses.js +0 -460
  82. package/src/components/grid/Grid.vue +0 -1535
  83. package/src/components/grid/GridColumnSetting.vue +0 -358
  84. package/src/components/grid/GridFilterSetting.vue +0 -323
  85. package/src/components/grid/GridPagination.vue +0 -75
  86. package/src/components/grid/GridSummary.vue +0 -314
  87. package/src/components/grid/GridToolbar.vue +0 -35
  88. package/src/components/grid/icon/icon-option-button.vue +0 -17
  89. package/src/components/grid/icon/icon-sort-button.vue +0 -67
  90. package/src/components/grid/index.js +0 -11
  91. package/src/components/grid/style/grid.scss +0 -417
  92. package/src/components/grid/uses.js +0 -1629
  93. package/src/components/icon/Icon.vue +0 -53
  94. package/src/components/icon/index.js +0 -8
  95. package/src/components/inputNumber/InputNumber.vue +0 -212
  96. package/src/components/inputNumber/index.js +0 -7
  97. package/src/components/inputNumber/uses.js +0 -217
  98. package/src/components/loading/Loading.vue +0 -125
  99. package/src/components/loading/index.js +0 -7
  100. package/src/components/menu/Menu.vue +0 -79
  101. package/src/components/menu/MenuItem.vue +0 -201
  102. package/src/components/menu/index.js +0 -7
  103. package/src/components/message/Message.vue +0 -229
  104. package/src/components/message/index.js +0 -34
  105. package/src/components/messageBox/MessageBox.vue +0 -358
  106. package/src/components/messageBox/index.js +0 -22
  107. package/src/components/notification/Notification.vue +0 -316
  108. package/src/components/notification/index.js +0 -49
  109. package/src/components/pagination/Pagination.vue +0 -317
  110. package/src/components/pagination/index.js +0 -7
  111. package/src/components/pagination/pageButton.vue +0 -31
  112. package/src/components/progress/Progress.vue +0 -139
  113. package/src/components/progress/index.js +0 -7
  114. package/src/components/radio/Radio.vue +0 -159
  115. package/src/components/radio/index.js +0 -7
  116. package/src/components/radioGroup/RadioGroup.vue +0 -41
  117. package/src/components/radioGroup/index.js +0 -7
  118. package/src/components/scheduler/Scheduler.vue +0 -149
  119. package/src/components/scheduler/index.js +0 -7
  120. package/src/components/scheduler/uses.js +0 -183
  121. package/src/components/select/Select.vue +0 -556
  122. package/src/components/select/index.js +0 -7
  123. package/src/components/select/uses.js +0 -379
  124. package/src/components/slider/Slider.vue +0 -505
  125. package/src/components/slider/index.js +0 -7
  126. package/src/components/slider/uses.js +0 -391
  127. package/src/components/tabPanel/TabPanel.vue +0 -74
  128. package/src/components/tabPanel/index.js +0 -7
  129. package/src/components/tabs/Tabs.vue +0 -517
  130. package/src/components/tabs/index.js +0 -7
  131. package/src/components/textField/TextField.vue +0 -399
  132. package/src/components/textField/index.js +0 -7
  133. package/src/components/timePicker/TimePicker.vue +0 -364
  134. package/src/components/timePicker/index.js +0 -7
  135. package/src/components/toggle/Toggle.vue +0 -115
  136. package/src/components/toggle/index.js +0 -7
  137. package/src/components/tree/Tree.vue +0 -338
  138. package/src/components/tree/TreeNode.vue +0 -293
  139. package/src/components/tree/index.js +0 -7
  140. package/src/components/treeGrid/TreeGrid.vue +0 -1074
  141. package/src/components/treeGrid/TreeGridNode.vue +0 -349
  142. package/src/components/treeGrid/TreeGridToolbar.vue +0 -35
  143. package/src/components/treeGrid/icon/icon-tree.png +0 -0
  144. package/src/components/treeGrid/index.js +0 -9
  145. package/src/components/treeGrid/style/treeGrid.scss +0 -277
  146. package/src/components/treeGrid/uses.js +0 -1178
  147. package/src/components/window/Window.vue +0 -329
  148. package/src/components/window/index.js +0 -7
  149. package/src/components/window/uses.js +0 -908
  150. package/src/directives/clickoutside.js +0 -90
  151. package/src/main.js +0 -120
  152. package/src/style/components/input.scss +0 -108
  153. package/src/style/functions.scss +0 -3
  154. package/src/style/index.scss +0 -6
  155. package/src/style/lib/fonts/EVUI.eot +0 -0
  156. package/src/style/lib/fonts/EVUI.svg +0 -293
  157. package/src/style/lib/fonts/EVUI.ttf +0 -0
  158. package/src/style/lib/fonts/EVUI.woff +0 -0
  159. package/src/style/lib/icon.css +0 -888
  160. package/src/style/mixins.scss +0 -94
  161. package/src/style/themes.scss +0 -69
  162. package/src/style/variables.scss +0 -22
@@ -1,721 +0,0 @@
1
- import {
2
- ref,
3
- reactive,
4
- computed,
5
- watch,
6
- getCurrentInstance,
7
- nextTick,
8
- onUpdated,
9
- } from 'vue';
10
- import { cloneDeep, defaultsDeep, isEqual } from 'lodash-es';
11
- import { getQuantity } from '@/common/utils';
12
- import EvChartZoom from '@/components/chart/chartZoom.core';
13
-
14
- const DEFAULT_OPTIONS = {
15
- padding: {
16
- top: 20,
17
- right: 2,
18
- left: 2,
19
- bottom: 4,
20
- },
21
- border: 2,
22
- title: {
23
- show: false,
24
- height: 40,
25
- text: '',
26
- style: {
27
- fontSize: 15,
28
- color: '#000',
29
- fontFamily: 'Roboto',
30
- },
31
- },
32
- legend: {
33
- show: true,
34
- type: 'icon',
35
- position: 'right',
36
- color: '#353740',
37
- inactive: '#aaa',
38
- width: 140,
39
- height: 24,
40
- allowResize: false,
41
- virtualScroll: false,
42
- clickMode: 'active',
43
- table: {
44
- use: false,
45
- columns: {
46
- name: {
47
- title: 'Name',
48
- },
49
- min: {
50
- title: 'MIN',
51
- use: false,
52
- },
53
- max: {
54
- title: 'MAX',
55
- use: false,
56
- },
57
- avg: {
58
- title: 'AVG',
59
- use: false,
60
- },
61
- total: {
62
- title: 'TOTAL',
63
- use: false,
64
- },
65
- last: {
66
- title: 'LAST',
67
- use: false,
68
- },
69
- },
70
- },
71
- },
72
- itemHighlight: true,
73
- seriesHighlight: true,
74
- useSelect: false,
75
- doughnutHoleSize: 0,
76
- pieStroke: {
77
- use: true,
78
- lineWidth: 2,
79
- color: '#FFFFFF',
80
- },
81
- reverse: false,
82
- horizontal: false,
83
- overlapping: {
84
- use: false,
85
- },
86
- width: '100%',
87
- height: '100%',
88
- thickness: 1,
89
- cPadRatio: 0,
90
- borderRadius: 0,
91
- combo: false,
92
- tooltip: {
93
- use: true,
94
- sortByValue: true,
95
- backgroundColor: '#4C4C4C',
96
- fontColor: '#FFFFFF',
97
- borderColor: '#666666',
98
- shadowOpacity: 0.25,
99
- useShadow: false,
100
- throttledMove: false,
101
- debouncedHide: false,
102
- useScrollbar: false,
103
- textOverflow: 'wrap',
104
- fontFamily: 'Roboto',
105
- colorShape: 'rect',
106
- fontSize: {
107
- title: 16,
108
- contents: 14,
109
- },
110
- rowPadding: {
111
- top: 0,
112
- bottom: 3,
113
- right: 20,
114
- left: 16,
115
- },
116
- showHeader: true,
117
- },
118
- indicator: {
119
- use: true,
120
- color: '#EE7F44',
121
- segments: null,
122
- },
123
- maxTip: {
124
- use: false,
125
- fixedPosTop: false,
126
- showIndicator: false,
127
- indicatorColor: '#000000',
128
- tipStyle: {
129
- height: 20,
130
- background: '#000000',
131
- textColor: '#FFFFFF',
132
- fontSize: 14,
133
- fontFamily: 'Roboto',
134
- fontWeight: 400,
135
- },
136
- },
137
- selectItem: {
138
- use: false,
139
- useClick: true,
140
- showTextTip: false,
141
- tipText: 'value',
142
- showTip: false,
143
- showIndicator: false,
144
- fixedPosTop: false,
145
- useApproximateValue: false,
146
- indicatorColor: '#000000',
147
- tipStyle: {
148
- height: 20,
149
- background: '#000000',
150
- textColor: '#FFFFFF',
151
- fontSize: 14,
152
- fontFamily: 'Roboto',
153
- fontWeight: 400,
154
- },
155
- useSeriesOpacity: false,
156
- useDeselectItem: false,
157
- showBorder: false,
158
- borderStyle: {
159
- color: '#FFFFFF',
160
- lineWidth: 1,
161
- opacity: 1,
162
- radius: 0,
163
- },
164
- },
165
- selectLabel: {
166
- use: false,
167
- useClick: true,
168
- tipText: 'value',
169
- limit: 1,
170
- useDeselectOverflow: false,
171
- showTip: false,
172
- useSeriesOpacity: true,
173
- useLabelOpacity: true,
174
- fixedPosTop: false,
175
- useApproximateValue: false,
176
- tipBackground: '#000000',
177
- indicatorColor: '#000000',
178
- tipStyle: {
179
- height: 20,
180
- background: '#000000',
181
- textColor: '#FFFFFF',
182
- fontSize: 14,
183
- fontFamily: 'Roboto',
184
- fontWeight: 400,
185
- },
186
- showTextTip: false,
187
- showIndicator: false,
188
- useBothAxis: false,
189
- },
190
- selectSeries: {
191
- use: false,
192
- useClick: true,
193
- limit: 1,
194
- useDeselectOverflow: false,
195
- },
196
- dragSelection: {
197
- use: false,
198
- keepDisplay: true,
199
- size: 50,
200
- fillColor: '#38ACEC',
201
- opacity: 0.65,
202
- },
203
- zoom: {
204
- bufferMemoryCnt: 100,
205
- keepZoomStatus: false,
206
- useAnimation: true,
207
- useWheelMove: true,
208
- toolbar: {
209
- show: false,
210
- items: {
211
- previous: {
212
- icon: 'ev-icon-allow2-left',
213
- size: 'medium',
214
- title: 'Previous',
215
- },
216
- latest: {
217
- icon: 'ev-icon-allow2-right',
218
- size: 'medium',
219
- title: 'Latest',
220
- },
221
- reset: {
222
- icon: 'ev-icon-redo',
223
- size: 'medium',
224
- title: 'Reset',
225
- },
226
- dragZoom: {
227
- icon: 'ev-icon-zoomin',
228
- size: 'medium',
229
- title: 'Drag Zoom',
230
- },
231
- },
232
- },
233
- },
234
- heatMapColor: {
235
- min: '#FFFFFF',
236
- max: '#0052FF',
237
- rangeCount: 1,
238
- colorsByRange: [],
239
- stroke: {
240
- show: false,
241
- color: '#FFFFFF',
242
- lineWidth: 1,
243
- opacity: 1,
244
- radius: 0,
245
- },
246
- error: '#FF0000',
247
- decimalPoint: 0,
248
- },
249
- seriesReverse: false,
250
- coordinateDedupe: true,
251
- };
252
-
253
- const DEFAULT_DATA = {
254
- series: {},
255
- groups: [],
256
- labels: [],
257
- data: {},
258
- };
259
-
260
- const useWidgetClickEvent = () => {
261
- let timer = null;
262
- let clickCount = 0;
263
- const Delay = 200;
264
-
265
- const clickEventCallback = (callback) => {
266
- clickCount++;
267
-
268
- if (clickCount === 1) {
269
- timer = setTimeout(() => {
270
- if (clickCount === 1) {
271
- callback();
272
- }
273
- clickCount = 0;
274
- }, Delay);
275
- }
276
- };
277
-
278
- const dblClickEventCallback = (callback) => {
279
- if (timer) {
280
- clearTimeout(timer);
281
- timer = null;
282
- }
283
- callback();
284
- clickCount = 0;
285
- };
286
-
287
- return {
288
- clickEventCallback,
289
- dblClickEventCallback,
290
- };
291
- };
292
-
293
-
294
- export const useModel = (injectGroupSelectedLabel, injectGroupHoveredLabel) => {
295
- const { props, emit } = getCurrentInstance();
296
-
297
- const getNormalizedOptions = (options) => {
298
- const normalizedOptions = defaultsDeep({}, options, DEFAULT_OPTIONS);
299
-
300
- if ((options.type === 'scatter' || options.type === 'heatMap') && !options?.tooltip) {
301
- normalizedOptions.tooltip.use = false;
302
- }
303
-
304
- if (options.type === 'pie' && !options?.padding) {
305
- normalizedOptions.padding = {
306
- top: 2,
307
- right: 2,
308
- left: 2,
309
- bottom: 4,
310
- };
311
- }
312
-
313
- return normalizedOptions;
314
- };
315
- const getNormalizedData = data => defaultsDeep(data, DEFAULT_DATA);
316
-
317
- const selectItemInfo = cloneDeep(props.selectedItem);
318
- const selectLabelInfo = cloneDeep(props.selectedLabel ?? injectGroupSelectedLabel?.value);
319
- const selectSeriesInfo = cloneDeep(props.selectedSeries);
320
-
321
- const { clickEventCallback, dblClickEventCallback } = useWidgetClickEvent();
322
-
323
- const eventListeners = {
324
- click: async (e) => {
325
- await nextTick();
326
- clickEventCallback(() => {
327
- const { seriesId, dataIndex, eventTarget, targetAxis } = e?.selected ?? {};
328
- const { eventTarget: deselectedEventTarget } = e?.deselected ?? {};
329
-
330
- switch (eventTarget) {
331
- case 'item': {
332
- if (seriesId !== null) {
333
- emit('update:selectedItem', {
334
- seriesID: seriesId,
335
- dataIndex,
336
- });
337
- if (deselectedEventTarget === 'label') {
338
- emit('update:selectedLabel', { dataIndex: [] });
339
- }
340
- } else {
341
- emit('update:selectedItem', null);
342
- }
343
- break;
344
- }
345
-
346
- case 'label': {
347
- if (injectGroupSelectedLabel?.value) {
348
- injectGroupSelectedLabel.value.dataIndex = dataIndex;
349
- } else {
350
- emit('update:selectedLabel', {
351
- dataIndex,
352
- targetAxis,
353
- });
354
-
355
- if (deselectedEventTarget === 'item') {
356
- emit('update:selectedItem', null);
357
- }
358
- }
359
- break;
360
- }
361
-
362
- case 'series': {
363
- emit('update:selectedSeries', { seriesId });
364
- break;
365
- }
366
-
367
- default:
368
- break;
369
- }
370
-
371
- emit('click', e);
372
- });
373
- },
374
- 'dbl-click': async (e) => {
375
- await nextTick();
376
- dblClickEventCallback(() => {
377
- const { eventTarget } = e;
378
- switch (eventTarget) {
379
- case 'series': {
380
- emit('update:selectedSeries', { seriesId: e.seriesId ? [e.seriesId] : [] });
381
- break;
382
- }
383
- default:
384
- break;
385
- }
386
- emit('dbl-click', e);
387
- });
388
- },
389
- 'drag-select': async (e) => {
390
- await nextTick();
391
- emit('drag-select', e);
392
- },
393
- 'mouse-move': async (e) => {
394
- if (injectGroupHoveredLabel?.value) {
395
- injectGroupHoveredLabel.value = e.hoveredLabel;
396
- }
397
- await nextTick();
398
- emit('mouse-move', e);
399
- },
400
- 'mouse-leave': () => {
401
- if (injectGroupHoveredLabel?.value) {
402
- injectGroupHoveredLabel.value.label = null;
403
- }
404
- },
405
- };
406
-
407
- return {
408
- eventListeners,
409
- selectItemInfo,
410
- selectLabelInfo,
411
- selectSeriesInfo,
412
- getNormalizedData,
413
- getNormalizedOptions,
414
- };
415
- };
416
-
417
- export const useWrapper = (options) => {
418
- const wrapper = ref();
419
-
420
- const wrapperStyle = computed(() => {
421
- const getChartSize = (size) => {
422
- let sizeValue;
423
-
424
- if (size) {
425
- sizeValue = size.unit ? size.value + size.unit : `${size.value}px`;
426
- } else {
427
- sizeValue = undefined;
428
- }
429
-
430
- return sizeValue;
431
- };
432
-
433
- return {
434
- width: getChartSize(getQuantity(options.width)),
435
- height: getChartSize(getQuantity(options.height)),
436
- };
437
- });
438
-
439
- return {
440
- wrapper,
441
- wrapperStyle,
442
- };
443
- };
444
-
445
- export const useZoomModel = (
446
- evChartNormalizedOptions,
447
- { wrapper: evChartWrapper, evChartGroupRef },
448
- selectedLabelOrItem,
449
- evChartPropsInGroup,
450
- ) => {
451
- const { props, emit } = getCurrentInstance();
452
-
453
- const isExecuteZoom = ref(false);
454
- const isUseZoomMode = ref(false);
455
- const isUpdateDataForUseZoom = ref(true);
456
- const evChartToolbarRef = ref();
457
-
458
- const evChartZoomOptions = reactive({ zoom: evChartNormalizedOptions.zoom });
459
- const brushIdx = reactive({
460
- start: 0,
461
- end: -1,
462
- isUseButton: false,
463
- isUseScroll: false,
464
- });
465
-
466
- let evChartZoom = null;
467
- const evChartInfo = reactive({
468
- dom: [],
469
- props: {
470
- data: [],
471
- options: [],
472
- },
473
- });
474
- const evChartClone = reactive({ data: null, options: null });
475
- const brushChartIdx = ref([]);
476
-
477
- const getRangeInfo = (zoomInfo) => {
478
- if (zoomInfo.data.length && zoomInfo.range && isUseZoomMode.value) {
479
- evChartZoom.dragZoom(zoomInfo);
480
- }
481
- };
482
-
483
- const setEvChartOptions = () => {
484
- evChartInfo.props.options.forEach((option, idx) => {
485
- option.zoom = {
486
- ...option.zoom,
487
- use: isUseZoomMode.value,
488
- getRangeInfo,
489
- };
490
-
491
- if (isUseZoomMode.value) {
492
- option.dragSelection = {
493
- ...option.dragSelection,
494
- use: true,
495
- keepDisplay: false,
496
- };
497
- } else {
498
- const {
499
- use: originUseOption,
500
- keepDisplay: originKeepDisplayOption,
501
- } = evChartClone.options[idx].dragSelection ?? {};
502
-
503
- option.dragSelection = {
504
- use: !!originUseOption,
505
- keepDisplay: !!originKeepDisplayOption,
506
- };
507
- }
508
- });
509
- };
510
-
511
- const createEvChartZoom = () => {
512
- if (evChartGroupRef?.value) {
513
- evChartInfo.dom = evChartGroupRef.value.querySelectorAll('.ev-chart-container');
514
-
515
- if (evChartInfo.dom.length) {
516
- evChartPropsInGroup.value.forEach(({ data, options }, idx) => {
517
- data.chartIdx = idx;
518
-
519
- evChartInfo.props.data.push(data);
520
- evChartInfo.props.options.push(options);
521
-
522
- brushChartIdx.value.push(idx);
523
- });
524
- }
525
- } else {
526
- evChartInfo.dom = [evChartWrapper.value.querySelector('.ev-chart-container')];
527
- evChartInfo.props.data.push(props.data);
528
- evChartInfo.props.options.push(props.options);
529
- }
530
-
531
- if (evChartInfo.props.data.length) {
532
- evChartClone.data = cloneDeep(evChartInfo.props.data);
533
- evChartClone.options = cloneDeep(evChartInfo.props.options);
534
-
535
- const emitFunc = {
536
- updateZoomStartIdx: startIdx => emit('update:zoomStartIdx', startIdx),
537
- updateZoomEndIdx: endIdx => emit('update:zoomEndIdx', endIdx),
538
- };
539
-
540
- evChartZoom = new EvChartZoom(
541
- evChartInfo,
542
- evChartClone,
543
- evChartZoomOptions,
544
- evChartToolbarRef.value,
545
- isExecuteZoom,
546
- brushIdx,
547
- emitFunc,
548
- );
549
- }
550
- };
551
-
552
- const toggleUseZoom = (target) => {
553
- if (evChartClone.data[0].labels.length <= 1) {
554
- return;
555
- }
556
-
557
- isUseZoomMode.value = !isUseZoomMode.value;
558
-
559
- if (target) {
560
- target.classList.toggle('active');
561
- } else {
562
- const dragZoomIcon = evChartToolbarRef.value.querySelector('.dragZoom');
563
-
564
- dragZoomIcon.classList.toggle('active');
565
- }
566
-
567
- setEvChartOptions();
568
-
569
- evChartZoom.setIconStyle(isUseZoomMode.value);
570
- evChartZoom.setEventListener(isUseZoomMode.value);
571
- };
572
-
573
- const onClickToolbar = (e, iconType) => {
574
- if (!evChartZoom.isAnimationFinish) {
575
- return;
576
- }
577
-
578
- switch (iconType) {
579
- case 'dragZoom':
580
- toggleUseZoom(e.target);
581
- break;
582
- case 'reset':
583
- evChartZoom.initZoom();
584
- break;
585
- case 'previous':
586
- case 'latest':
587
- evChartZoom.clickMoveZoomArea(iconType);
588
- break;
589
- default:
590
- break;
591
- }
592
- };
593
-
594
- onUpdated(() => {
595
- if (evChartZoom && evChartToolbarRef.value) {
596
- evChartZoom.setIcon(evChartToolbarRef.value);
597
- }
598
- });
599
-
600
- const setOptionsForUseZoom = (newOpt) => {
601
- const isUpdateZoomOptions = !isEqual(newOpt.zoom, evChartZoomOptions.zoom);
602
-
603
- if (isUpdateZoomOptions) {
604
- evChartZoomOptions.zoom = newOpt.zoom;
605
-
606
- if (evChartZoom) {
607
- if (!evChartZoomOptions.zoom.toolbar.show && isUseZoomMode.value) {
608
- toggleUseZoom();
609
- }
610
-
611
- evChartZoom.setEvChartZoomOptions(evChartZoomOptions.zoom);
612
- } else if (evChartZoomOptions.zoom.toolbar.show && !evChartGroupRef) {
613
- createEvChartZoom();
614
- }
615
- }
616
- };
617
-
618
- const setDataForUseZoom = (newData) => {
619
- if (isUpdateDataForUseZoom.value) {
620
- if (!isExecuteZoom.value) {
621
- evChartClone.data = evChartGroupRef ? cloneDeep(newData) : [cloneDeep(newData)];
622
-
623
- if (evChartZoomOptions.zoom.keepZoomStatus) {
624
- isUpdateDataForUseZoom.value = false;
625
- } else {
626
- isUseZoomMode.value = false;
627
-
628
- setEvChartOptions();
629
- }
630
-
631
- if (evChartZoom) {
632
- evChartZoom.updateEvChartCloneData(
633
- evChartClone,
634
- brushChartIdx,
635
- isUseZoomMode.value,
636
- evChartZoomOptions.zoom.keepZoomStatus,
637
- );
638
- }
639
- }
640
-
641
- isExecuteZoom.value = false;
642
- } else {
643
- isUpdateDataForUseZoom.value = true;
644
- }
645
- };
646
-
647
- const controlZoomIdx = (zoomStartIdx, zoomEndIdx) => {
648
- if (evChartZoom.isUseToolbar) {
649
- evChartZoom.isUseToolbar = false;
650
- return;
651
- }
652
-
653
- if (isUseZoomMode.value) {
654
- evChartZoom.executeZoom(zoomStartIdx, zoomEndIdx);
655
- evChartZoom.setZoomAreaMemory(zoomStartIdx, zoomEndIdx);
656
- }
657
- };
658
-
659
- watch(() => [
660
- brushIdx.start,
661
- brushIdx.end,
662
- ], ([
663
- curBrushStartIdx,
664
- curBrushEndIdx,
665
- ], [
666
- prevBrushStartIdx,
667
- ]) => {
668
- if (selectedLabelOrItem?.value) {
669
- if (typeof selectedLabelOrItem.value.dataIndex === 'number') {
670
- if (curBrushStartIdx >= (prevBrushStartIdx ?? 0)) {
671
- selectedLabelOrItem.value.dataIndex -= curBrushStartIdx - (prevBrushStartIdx ?? 0);
672
- } else {
673
- selectedLabelOrItem.value.dataIndex += prevBrushStartIdx - curBrushStartIdx;
674
- }
675
- } else {
676
- for (let idx = 0; idx < selectedLabelOrItem.value.dataIndex.length; idx++) {
677
- if (curBrushStartIdx >= (prevBrushStartIdx ?? 0)) {
678
- selectedLabelOrItem.value.dataIndex[idx] -= curBrushStartIdx - (prevBrushStartIdx ?? 0);
679
- } else {
680
- selectedLabelOrItem.value.dataIndex[idx] += prevBrushStartIdx - curBrushStartIdx;
681
- }
682
- }
683
- }
684
- }
685
-
686
- if (brushIdx.isUseButton || brushIdx.isUseScroll) {
687
- evChartZoom.executeZoom(curBrushStartIdx, curBrushEndIdx);
688
- }
689
- });
690
-
691
- watch(() => [
692
- brushIdx.isUseButton,
693
- brushIdx.isUseScroll,
694
- ], ([
695
- curIsUseButton,
696
- curIsUseScroll,
697
- ], [
698
- prevIsUseButton,
699
- prevIsUseScroll,
700
- ]) => {
701
- if (prevIsUseButton && !curIsUseButton) {
702
- evChartZoom.setZoomAreaMemory(brushIdx.start, brushIdx.end);
703
- } else if (prevIsUseScroll && !curIsUseScroll) {
704
- evChartZoom.zoomAreaMemory.current[0] = [brushIdx.start, brushIdx.end];
705
- }
706
- });
707
-
708
- return {
709
- evChartZoomOptions,
710
- evChartInfo,
711
- evChartToolbarRef,
712
- evChartClone,
713
- brushIdx,
714
-
715
- createEvChartZoom,
716
- setOptionsForUseZoom,
717
- setDataForUseZoom,
718
- controlZoomIdx,
719
- onClickToolbar,
720
- };
721
- };