Commit 447138b4431c198d7f72557f99c3ceaf0c01ed22
Merge branch 'chore/update-go-view-version' into 'main_dev'
chore: 更新go-view基线版本至v1.2.6 See merge request yunteng/thingskit-view!69
Showing
118 changed files
with
5143 additions
and
623 deletions
1 | 1 | { |
2 | 2 | "name": "go-view", |
3 | - "version": "1.2.0", | |
3 | + "version": "1.2.6", | |
4 | 4 | "engines": { |
5 | - "node": ">=16.14 <18.0.0" | |
5 | + "node": ">=12.0" | |
6 | 6 | }, |
7 | 7 | "scripts": { |
8 | 8 | "dev": "vite --host", |
... | ... | @@ -37,6 +37,7 @@ |
37 | 37 | "html2canvas": "^1.4.1", |
38 | 38 | "jwt-decode": "^3.1.2", |
39 | 39 | "keymaster": "^1.6.2", |
40 | + "mitt": "^3.0.0", | |
40 | 41 | "monaco-editor": "^0.33.0", |
41 | 42 | "naive-ui": "2.34.3", |
42 | 43 | "pinia": "^2.0.13", |
... | ... | @@ -56,6 +57,8 @@ |
56 | 57 | "devDependencies": { |
57 | 58 | "@commitlint/cli": "^17.0.2", |
58 | 59 | "@commitlint/config-conventional": "^17.0.2", |
60 | + "@iconify/types": "^2.0.0", | |
61 | + "@iconify/vue": "^4.1.1", | |
59 | 62 | "@types/node": "^16.11.26", |
60 | 63 | "@types/qs": "^6.9.7", |
61 | 64 | "@types/three": "^0.144.0", |
... | ... | @@ -64,8 +67,8 @@ |
64 | 67 | "@typescript-eslint/parser": "^5.18.0", |
65 | 68 | "@vicons/carbon": "^0.12.0", |
66 | 69 | "@vicons/ionicons5": "~0.11.0", |
67 | - "@vitejs/plugin-vue": "^1.10.2", | |
68 | - "@vitejs/plugin-vue-jsx": "^1.3.9", | |
70 | + "@vitejs/plugin-vue": "^4.2.3", | |
71 | + "@vitejs/plugin-vue-jsx": "^3.0.1", | |
69 | 72 | "@vue/compiler-sfc": "^3.2.31", |
70 | 73 | "@vueuse/core": "^7.7.1", |
71 | 74 | "commitlint": "^17.0.2", |
... | ... | @@ -84,7 +87,7 @@ |
84 | 87 | "sass": "^1.49.11", |
85 | 88 | "sass-loader": "^12.6.0", |
86 | 89 | "typescript": "4.6.3", |
87 | - "vite": "2.9.9", | |
90 | + "vite": "4.3.6", | |
88 | 91 | "vite-plugin-compression": "^0.5.1", |
89 | 92 | "vite-plugin-html": "^3.2.0", |
90 | 93 | "vite-plugin-importer": "^0.2.5", | ... | ... |
1 | -lockfileVersion: '6.0' | |
1 | +lockfileVersion: '6.1' | |
2 | + | |
3 | +settings: | |
4 | + autoInstallPeers: true | |
5 | + excludeLinksFromLockfile: false | |
2 | 6 | |
3 | 7 | dependencies: |
4 | 8 | '@amap/amap-jsapi-loader': |
... | ... | @@ -61,6 +65,9 @@ dependencies: |
61 | 65 | keymaster: |
62 | 66 | specifier: ^1.6.2 |
63 | 67 | version: 1.6.2 |
68 | + mitt: | |
69 | + specifier: ^3.0.0 | |
70 | + version: 3.0.0 | |
64 | 71 | monaco-editor: |
65 | 72 | specifier: ^0.33.0 |
66 | 73 | version: 0.33.0 |
... | ... | @@ -85,6 +92,9 @@ dependencies: |
85 | 92 | vue: |
86 | 93 | specifier: ^3.2.31 |
87 | 94 | version: 3.2.37 |
95 | + vue-3d-loader: | |
96 | + specifier: ^2.1.7 | |
97 | + version: 2.1.7 | |
88 | 98 | vue-demi: |
89 | 99 | specifier: ^0.13.1 |
90 | 100 | version: 0.13.1(vue@3.2.37) |
... | ... | @@ -111,6 +121,12 @@ devDependencies: |
111 | 121 | '@commitlint/config-conventional': |
112 | 122 | specifier: ^17.0.2 |
113 | 123 | version: 17.0.2 |
124 | + '@iconify/types': | |
125 | + specifier: ^2.0.0 | |
126 | + version: 2.0.0 | |
127 | + '@iconify/vue': | |
128 | + specifier: ^4.1.1 | |
129 | + version: 4.1.1(vue@3.2.37) | |
114 | 130 | '@types/node': |
115 | 131 | specifier: ^16.11.26 |
116 | 132 | version: 16.11.40 |
... | ... | @@ -136,11 +152,11 @@ devDependencies: |
136 | 152 | specifier: ~0.11.0 |
137 | 153 | version: 0.11.0 |
138 | 154 | '@vitejs/plugin-vue': |
139 | - specifier: ^1.10.2 | |
140 | - version: 1.10.2(vite@2.9.9) | |
155 | + specifier: ^4.2.3 | |
156 | + version: 4.2.3(vite@4.3.6)(vue@3.2.37) | |
141 | 157 | '@vitejs/plugin-vue-jsx': |
142 | - specifier: ^1.3.9 | |
143 | - version: 1.3.10 | |
158 | + specifier: ^3.0.1 | |
159 | + version: 3.0.1(vite@4.3.6)(vue@3.2.37) | |
144 | 160 | '@vue/compiler-sfc': |
145 | 161 | specifier: ^3.2.31 |
146 | 162 | version: 3.2.37 |
... | ... | @@ -196,20 +212,20 @@ devDependencies: |
196 | 212 | specifier: 4.6.3 |
197 | 213 | version: 4.6.3 |
198 | 214 | vite: |
199 | - specifier: 2.9.9 | |
200 | - version: 2.9.9(sass@1.52.3) | |
215 | + specifier: 4.3.6 | |
216 | + version: 4.3.6(@types/node@16.11.40)(sass@1.52.3) | |
201 | 217 | vite-plugin-compression: |
202 | 218 | specifier: ^0.5.1 |
203 | - version: 0.5.1(vite@2.9.9) | |
219 | + version: 0.5.1(vite@4.3.6) | |
204 | 220 | vite-plugin-html: |
205 | 221 | specifier: ^3.2.0 |
206 | - version: 3.2.0(vite@2.9.9) | |
222 | + version: 3.2.0(vite@4.3.6) | |
207 | 223 | vite-plugin-importer: |
208 | 224 | specifier: ^0.2.5 |
209 | 225 | version: 0.2.5 |
210 | 226 | vite-plugin-mock: |
211 | 227 | specifier: ^2.9.6 |
212 | - version: 2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@2.9.9) | |
228 | + version: 2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@4.3.6) | |
213 | 229 | vite-plugin-monaco-editor: |
214 | 230 | specifier: ^1.1.0 |
215 | 231 | version: 1.1.0(monaco-editor@0.33.0) |
... | ... | @@ -245,11 +261,23 @@ packages: |
245 | 261 | '@babel/highlight': 7.17.12 |
246 | 262 | dev: true |
247 | 263 | |
264 | + /@babel/code-frame@7.22.5: | |
265 | + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} | |
266 | + engines: {node: '>=6.9.0'} | |
267 | + dependencies: | |
268 | + '@babel/highlight': 7.22.5 | |
269 | + dev: true | |
270 | + | |
248 | 271 | /@babel/compat-data@7.18.5: |
249 | 272 | resolution: {integrity: sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==} |
250 | 273 | engines: {node: '>=6.9.0'} |
251 | 274 | dev: true |
252 | 275 | |
276 | + /@babel/compat-data@7.22.5: | |
277 | + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} | |
278 | + engines: {node: '>=6.9.0'} | |
279 | + dev: true | |
280 | + | |
253 | 281 | /@babel/core@7.18.5: |
254 | 282 | resolution: {integrity: sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==} |
255 | 283 | engines: {node: '>=6.9.0'} |
... | ... | @@ -273,6 +301,29 @@ packages: |
273 | 301 | - supports-color |
274 | 302 | dev: true |
275 | 303 | |
304 | + /@babel/core@7.22.5: | |
305 | + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} | |
306 | + engines: {node: '>=6.9.0'} | |
307 | + dependencies: | |
308 | + '@ampproject/remapping': 2.2.0 | |
309 | + '@babel/code-frame': 7.22.5 | |
310 | + '@babel/generator': 7.22.5 | |
311 | + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) | |
312 | + '@babel/helper-module-transforms': 7.22.5 | |
313 | + '@babel/helpers': 7.22.5 | |
314 | + '@babel/parser': 7.22.5 | |
315 | + '@babel/template': 7.22.5 | |
316 | + '@babel/traverse': 7.22.5 | |
317 | + '@babel/types': 7.22.5 | |
318 | + convert-source-map: 1.8.0 | |
319 | + debug: 4.3.4 | |
320 | + gensync: 1.0.0-beta.2 | |
321 | + json5: 2.2.3 | |
322 | + semver: 6.3.0 | |
323 | + transitivePeerDependencies: | |
324 | + - supports-color | |
325 | + dev: true | |
326 | + | |
276 | 327 | /@babel/generator@7.18.2: |
277 | 328 | resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} |
278 | 329 | engines: {node: '>=6.9.0'} |
... | ... | @@ -282,11 +333,21 @@ packages: |
282 | 333 | jsesc: 2.5.2 |
283 | 334 | dev: true |
284 | 335 | |
285 | - /@babel/helper-annotate-as-pure@7.16.7: | |
286 | - resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} | |
336 | + /@babel/generator@7.22.5: | |
337 | + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} | |
287 | 338 | engines: {node: '>=6.9.0'} |
288 | 339 | dependencies: |
289 | - '@babel/types': 7.18.4 | |
340 | + '@babel/types': 7.22.5 | |
341 | + '@jridgewell/gen-mapping': 0.3.3 | |
342 | + '@jridgewell/trace-mapping': 0.3.17 | |
343 | + jsesc: 2.5.2 | |
344 | + dev: true | |
345 | + | |
346 | + /@babel/helper-annotate-as-pure@7.22.5: | |
347 | + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} | |
348 | + engines: {node: '>=6.9.0'} | |
349 | + dependencies: | |
350 | + '@babel/types': 7.22.5 | |
290 | 351 | dev: true |
291 | 352 | |
292 | 353 | /@babel/helper-compilation-targets@7.18.2(@babel/core@7.18.5): |
... | ... | @@ -302,20 +363,36 @@ packages: |
302 | 363 | semver: 6.3.0 |
303 | 364 | dev: true |
304 | 365 | |
305 | - /@babel/helper-create-class-features-plugin@7.18.0(@babel/core@7.18.5): | |
306 | - resolution: {integrity: sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==} | |
366 | + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): | |
367 | + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} | |
307 | 368 | engines: {node: '>=6.9.0'} |
308 | 369 | peerDependencies: |
309 | 370 | '@babel/core': ^7.0.0 |
310 | 371 | dependencies: |
311 | - '@babel/core': 7.18.5 | |
312 | - '@babel/helper-annotate-as-pure': 7.16.7 | |
313 | - '@babel/helper-environment-visitor': 7.18.2 | |
314 | - '@babel/helper-function-name': 7.17.9 | |
315 | - '@babel/helper-member-expression-to-functions': 7.17.7 | |
316 | - '@babel/helper-optimise-call-expression': 7.16.7 | |
317 | - '@babel/helper-replace-supers': 7.18.2 | |
318 | - '@babel/helper-split-export-declaration': 7.16.7 | |
372 | + '@babel/compat-data': 7.22.5 | |
373 | + '@babel/core': 7.22.5 | |
374 | + '@babel/helper-validator-option': 7.22.5 | |
375 | + browserslist: 4.21.7 | |
376 | + lru-cache: 5.1.1 | |
377 | + semver: 6.3.0 | |
378 | + dev: true | |
379 | + | |
380 | + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): | |
381 | + resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} | |
382 | + engines: {node: '>=6.9.0'} | |
383 | + peerDependencies: | |
384 | + '@babel/core': ^7.0.0 | |
385 | + dependencies: | |
386 | + '@babel/core': 7.22.5 | |
387 | + '@babel/helper-annotate-as-pure': 7.22.5 | |
388 | + '@babel/helper-environment-visitor': 7.22.5 | |
389 | + '@babel/helper-function-name': 7.22.5 | |
390 | + '@babel/helper-member-expression-to-functions': 7.22.5 | |
391 | + '@babel/helper-optimise-call-expression': 7.22.5 | |
392 | + '@babel/helper-replace-supers': 7.22.5 | |
393 | + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 | |
394 | + '@babel/helper-split-export-declaration': 7.22.5 | |
395 | + semver: 6.3.0 | |
319 | 396 | transitivePeerDependencies: |
320 | 397 | - supports-color |
321 | 398 | dev: true |
... | ... | @@ -325,6 +402,11 @@ packages: |
325 | 402 | engines: {node: '>=6.9.0'} |
326 | 403 | dev: true |
327 | 404 | |
405 | + /@babel/helper-environment-visitor@7.22.5: | |
406 | + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} | |
407 | + engines: {node: '>=6.9.0'} | |
408 | + dev: true | |
409 | + | |
328 | 410 | /@babel/helper-function-name@7.17.9: |
329 | 411 | resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} |
330 | 412 | engines: {node: '>=6.9.0'} |
... | ... | @@ -333,6 +415,14 @@ packages: |
333 | 415 | '@babel/types': 7.18.4 |
334 | 416 | dev: true |
335 | 417 | |
418 | + /@babel/helper-function-name@7.22.5: | |
419 | + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} | |
420 | + engines: {node: '>=6.9.0'} | |
421 | + dependencies: | |
422 | + '@babel/template': 7.22.5 | |
423 | + '@babel/types': 7.22.5 | |
424 | + dev: true | |
425 | + | |
336 | 426 | /@babel/helper-hoist-variables@7.16.7: |
337 | 427 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} |
338 | 428 | engines: {node: '>=6.9.0'} |
... | ... | @@ -340,11 +430,18 @@ packages: |
340 | 430 | '@babel/types': 7.18.4 |
341 | 431 | dev: true |
342 | 432 | |
343 | - /@babel/helper-member-expression-to-functions@7.17.7: | |
344 | - resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} | |
433 | + /@babel/helper-hoist-variables@7.22.5: | |
434 | + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} | |
345 | 435 | engines: {node: '>=6.9.0'} |
346 | 436 | dependencies: |
347 | - '@babel/types': 7.18.4 | |
437 | + '@babel/types': 7.22.5 | |
438 | + dev: true | |
439 | + | |
440 | + /@babel/helper-member-expression-to-functions@7.22.5: | |
441 | + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} | |
442 | + engines: {node: '>=6.9.0'} | |
443 | + dependencies: | |
444 | + '@babel/types': 7.22.5 | |
348 | 445 | dev: true |
349 | 446 | |
350 | 447 | /@babel/helper-module-imports@7.16.7: |
... | ... | @@ -354,6 +451,13 @@ packages: |
354 | 451 | '@babel/types': 7.18.4 |
355 | 452 | dev: true |
356 | 453 | |
454 | + /@babel/helper-module-imports@7.22.5: | |
455 | + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} | |
456 | + engines: {node: '>=6.9.0'} | |
457 | + dependencies: | |
458 | + '@babel/types': 7.22.5 | |
459 | + dev: true | |
460 | + | |
357 | 461 | /@babel/helper-module-transforms@7.18.0: |
358 | 462 | resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} |
359 | 463 | engines: {node: '>=6.9.0'} |
... | ... | @@ -370,11 +474,27 @@ packages: |
370 | 474 | - supports-color |
371 | 475 | dev: true |
372 | 476 | |
373 | - /@babel/helper-optimise-call-expression@7.16.7: | |
374 | - resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} | |
477 | + /@babel/helper-module-transforms@7.22.5: | |
478 | + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} | |
375 | 479 | engines: {node: '>=6.9.0'} |
376 | 480 | dependencies: |
377 | - '@babel/types': 7.18.4 | |
481 | + '@babel/helper-environment-visitor': 7.22.5 | |
482 | + '@babel/helper-module-imports': 7.22.5 | |
483 | + '@babel/helper-simple-access': 7.22.5 | |
484 | + '@babel/helper-split-export-declaration': 7.22.5 | |
485 | + '@babel/helper-validator-identifier': 7.22.5 | |
486 | + '@babel/template': 7.22.5 | |
487 | + '@babel/traverse': 7.22.5 | |
488 | + '@babel/types': 7.22.5 | |
489 | + transitivePeerDependencies: | |
490 | + - supports-color | |
491 | + dev: true | |
492 | + | |
493 | + /@babel/helper-optimise-call-expression@7.22.5: | |
494 | + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} | |
495 | + engines: {node: '>=6.9.0'} | |
496 | + dependencies: | |
497 | + '@babel/types': 7.22.5 | |
378 | 498 | dev: true |
379 | 499 | |
380 | 500 | /@babel/helper-plugin-utils@7.17.12: |
... | ... | @@ -382,15 +502,21 @@ packages: |
382 | 502 | engines: {node: '>=6.9.0'} |
383 | 503 | dev: true |
384 | 504 | |
385 | - /@babel/helper-replace-supers@7.18.2: | |
386 | - resolution: {integrity: sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==} | |
505 | + /@babel/helper-plugin-utils@7.22.5: | |
506 | + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} | |
507 | + engines: {node: '>=6.9.0'} | |
508 | + dev: true | |
509 | + | |
510 | + /@babel/helper-replace-supers@7.22.5: | |
511 | + resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} | |
387 | 512 | engines: {node: '>=6.9.0'} |
388 | 513 | dependencies: |
389 | - '@babel/helper-environment-visitor': 7.18.2 | |
390 | - '@babel/helper-member-expression-to-functions': 7.17.7 | |
391 | - '@babel/helper-optimise-call-expression': 7.16.7 | |
392 | - '@babel/traverse': 7.18.5 | |
393 | - '@babel/types': 7.18.4 | |
514 | + '@babel/helper-environment-visitor': 7.22.5 | |
515 | + '@babel/helper-member-expression-to-functions': 7.22.5 | |
516 | + '@babel/helper-optimise-call-expression': 7.22.5 | |
517 | + '@babel/template': 7.22.5 | |
518 | + '@babel/traverse': 7.22.5 | |
519 | + '@babel/types': 7.22.5 | |
394 | 520 | transitivePeerDependencies: |
395 | 521 | - supports-color |
396 | 522 | dev: true |
... | ... | @@ -402,6 +528,20 @@ packages: |
402 | 528 | '@babel/types': 7.18.4 |
403 | 529 | dev: true |
404 | 530 | |
531 | + /@babel/helper-simple-access@7.22.5: | |
532 | + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} | |
533 | + engines: {node: '>=6.9.0'} | |
534 | + dependencies: | |
535 | + '@babel/types': 7.22.5 | |
536 | + dev: true | |
537 | + | |
538 | + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: | |
539 | + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} | |
540 | + engines: {node: '>=6.9.0'} | |
541 | + dependencies: | |
542 | + '@babel/types': 7.22.5 | |
543 | + dev: true | |
544 | + | |
405 | 545 | /@babel/helper-split-export-declaration@7.16.7: |
406 | 546 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} |
407 | 547 | engines: {node: '>=6.9.0'} |
... | ... | @@ -409,15 +549,37 @@ packages: |
409 | 549 | '@babel/types': 7.18.4 |
410 | 550 | dev: true |
411 | 551 | |
552 | + /@babel/helper-split-export-declaration@7.22.5: | |
553 | + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} | |
554 | + engines: {node: '>=6.9.0'} | |
555 | + dependencies: | |
556 | + '@babel/types': 7.22.5 | |
557 | + dev: true | |
558 | + | |
559 | + /@babel/helper-string-parser@7.22.5: | |
560 | + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} | |
561 | + engines: {node: '>=6.9.0'} | |
562 | + dev: true | |
563 | + | |
412 | 564 | /@babel/helper-validator-identifier@7.16.7: |
413 | 565 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} |
414 | 566 | engines: {node: '>=6.9.0'} |
415 | 567 | |
568 | + /@babel/helper-validator-identifier@7.22.5: | |
569 | + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} | |
570 | + engines: {node: '>=6.9.0'} | |
571 | + dev: true | |
572 | + | |
416 | 573 | /@babel/helper-validator-option@7.16.7: |
417 | 574 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} |
418 | 575 | engines: {node: '>=6.9.0'} |
419 | 576 | dev: true |
420 | 577 | |
578 | + /@babel/helper-validator-option@7.22.5: | |
579 | + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} | |
580 | + engines: {node: '>=6.9.0'} | |
581 | + dev: true | |
582 | + | |
421 | 583 | /@babel/helpers@7.18.2: |
422 | 584 | resolution: {integrity: sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==} |
423 | 585 | engines: {node: '>=6.9.0'} |
... | ... | @@ -429,6 +591,17 @@ packages: |
429 | 591 | - supports-color |
430 | 592 | dev: true |
431 | 593 | |
594 | + /@babel/helpers@7.22.5: | |
595 | + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} | |
596 | + engines: {node: '>=6.9.0'} | |
597 | + dependencies: | |
598 | + '@babel/template': 7.22.5 | |
599 | + '@babel/traverse': 7.22.5 | |
600 | + '@babel/types': 7.22.5 | |
601 | + transitivePeerDependencies: | |
602 | + - supports-color | |
603 | + dev: true | |
604 | + | |
432 | 605 | /@babel/highlight@7.17.12: |
433 | 606 | resolution: {integrity: sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==} |
434 | 607 | engines: {node: '>=6.9.0'} |
... | ... | @@ -438,6 +611,15 @@ packages: |
438 | 611 | js-tokens: 4.0.0 |
439 | 612 | dev: true |
440 | 613 | |
614 | + /@babel/highlight@7.22.5: | |
615 | + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} | |
616 | + engines: {node: '>=6.9.0'} | |
617 | + dependencies: | |
618 | + '@babel/helper-validator-identifier': 7.22.5 | |
619 | + chalk: 2.4.2 | |
620 | + js-tokens: 4.0.0 | |
621 | + dev: true | |
622 | + | |
441 | 623 | /@babel/parser@7.18.5: |
442 | 624 | resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==} |
443 | 625 | engines: {node: '>=6.0.0'} |
... | ... | @@ -445,6 +627,14 @@ packages: |
445 | 627 | dependencies: |
446 | 628 | '@babel/types': 7.18.4 |
447 | 629 | |
630 | + /@babel/parser@7.22.5: | |
631 | + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} | |
632 | + engines: {node: '>=6.0.0'} | |
633 | + hasBin: true | |
634 | + dependencies: | |
635 | + '@babel/types': 7.22.5 | |
636 | + dev: true | |
637 | + | |
448 | 638 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.5): |
449 | 639 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} |
450 | 640 | peerDependencies: |
... | ... | @@ -454,36 +644,37 @@ packages: |
454 | 644 | '@babel/helper-plugin-utils': 7.17.12 |
455 | 645 | dev: true |
456 | 646 | |
457 | - /@babel/plugin-syntax-jsx@7.17.12(@babel/core@7.18.5): | |
647 | + /@babel/plugin-syntax-jsx@7.17.12(@babel/core@7.22.5): | |
458 | 648 | resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==} |
459 | 649 | engines: {node: '>=6.9.0'} |
460 | 650 | peerDependencies: |
461 | 651 | '@babel/core': ^7.0.0-0 |
462 | 652 | dependencies: |
463 | - '@babel/core': 7.18.5 | |
464 | - '@babel/helper-plugin-utils': 7.17.12 | |
653 | + '@babel/core': 7.22.5 | |
654 | + '@babel/helper-plugin-utils': 7.22.5 | |
465 | 655 | dev: true |
466 | 656 | |
467 | - /@babel/plugin-syntax-typescript@7.17.12(@babel/core@7.18.5): | |
468 | - resolution: {integrity: sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==} | |
657 | + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): | |
658 | + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} | |
469 | 659 | engines: {node: '>=6.9.0'} |
470 | 660 | peerDependencies: |
471 | 661 | '@babel/core': ^7.0.0-0 |
472 | 662 | dependencies: |
473 | - '@babel/core': 7.18.5 | |
474 | - '@babel/helper-plugin-utils': 7.17.12 | |
663 | + '@babel/core': 7.22.5 | |
664 | + '@babel/helper-plugin-utils': 7.22.5 | |
475 | 665 | dev: true |
476 | 666 | |
477 | - /@babel/plugin-transform-typescript@7.18.4(@babel/core@7.18.5): | |
478 | - resolution: {integrity: sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw==} | |
667 | + /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.22.5): | |
668 | + resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} | |
479 | 669 | engines: {node: '>=6.9.0'} |
480 | 670 | peerDependencies: |
481 | 671 | '@babel/core': ^7.0.0-0 |
482 | 672 | dependencies: |
483 | - '@babel/core': 7.18.5 | |
484 | - '@babel/helper-create-class-features-plugin': 7.18.0(@babel/core@7.18.5) | |
485 | - '@babel/helper-plugin-utils': 7.17.12 | |
486 | - '@babel/plugin-syntax-typescript': 7.17.12(@babel/core@7.18.5) | |
673 | + '@babel/core': 7.22.5 | |
674 | + '@babel/helper-annotate-as-pure': 7.22.5 | |
675 | + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) | |
676 | + '@babel/helper-plugin-utils': 7.22.5 | |
677 | + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) | |
487 | 678 | transitivePeerDependencies: |
488 | 679 | - supports-color |
489 | 680 | dev: true |
... | ... | @@ -504,6 +695,15 @@ packages: |
504 | 695 | '@babel/types': 7.18.4 |
505 | 696 | dev: true |
506 | 697 | |
698 | + /@babel/template@7.22.5: | |
699 | + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} | |
700 | + engines: {node: '>=6.9.0'} | |
701 | + dependencies: | |
702 | + '@babel/code-frame': 7.22.5 | |
703 | + '@babel/parser': 7.22.5 | |
704 | + '@babel/types': 7.22.5 | |
705 | + dev: true | |
706 | + | |
507 | 707 | /@babel/traverse@7.18.5: |
508 | 708 | resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==} |
509 | 709 | engines: {node: '>=6.9.0'} |
... | ... | @@ -522,6 +722,24 @@ packages: |
522 | 722 | - supports-color |
523 | 723 | dev: true |
524 | 724 | |
725 | + /@babel/traverse@7.22.5: | |
726 | + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} | |
727 | + engines: {node: '>=6.9.0'} | |
728 | + dependencies: | |
729 | + '@babel/code-frame': 7.22.5 | |
730 | + '@babel/generator': 7.22.5 | |
731 | + '@babel/helper-environment-visitor': 7.22.5 | |
732 | + '@babel/helper-function-name': 7.22.5 | |
733 | + '@babel/helper-hoist-variables': 7.22.5 | |
734 | + '@babel/helper-split-export-declaration': 7.22.5 | |
735 | + '@babel/parser': 7.22.5 | |
736 | + '@babel/types': 7.22.5 | |
737 | + debug: 4.3.4 | |
738 | + globals: 11.12.0 | |
739 | + transitivePeerDependencies: | |
740 | + - supports-color | |
741 | + dev: true | |
742 | + | |
525 | 743 | /@babel/types@7.18.4: |
526 | 744 | resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} |
527 | 745 | engines: {node: '>=6.9.0'} |
... | ... | @@ -529,6 +747,15 @@ packages: |
529 | 747 | '@babel/helper-validator-identifier': 7.16.7 |
530 | 748 | to-fast-properties: 2.0.0 |
531 | 749 | |
750 | + /@babel/types@7.22.5: | |
751 | + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} | |
752 | + engines: {node: '>=6.9.0'} | |
753 | + dependencies: | |
754 | + '@babel/helper-string-parser': 7.22.5 | |
755 | + '@babel/helper-validator-identifier': 7.22.5 | |
756 | + to-fast-properties: 2.0.0 | |
757 | + dev: true | |
758 | + | |
532 | 759 | /@commitlint/cli@17.0.2: |
533 | 760 | resolution: {integrity: sha512-Axe89Js0YzGGd4gxo3JLlF7yIdjOVpG1LbOorGc6PfYF+drBh14PvarSDLzyd2TNqdylUCq9wb9/A88ZjIdyhA==} |
534 | 761 | engines: {node: '>=v14'} |
... | ... | @@ -689,32 +916,230 @@ packages: |
689 | 916 | chalk: 4.1.2 |
690 | 917 | dev: true |
691 | 918 | |
692 | - /@cspotcode/source-map-support@0.8.1: | |
693 | - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} | |
919 | + /@cspotcode/source-map-support@0.8.1: | |
920 | + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} | |
921 | + engines: {node: '>=12'} | |
922 | + dependencies: | |
923 | + '@jridgewell/trace-mapping': 0.3.9 | |
924 | + dev: true | |
925 | + | |
926 | + /@css-render/plugin-bem@0.15.10(css-render@0.15.10): | |
927 | + resolution: {integrity: sha512-V7b08sM2PWJlXI7BJiVIa0Sg30H3u/jHay4AclNXfF2yRFwwb4ZJjggsMfzwj3WSihAdNf2WTqvOU5qsOD80Dg==} | |
928 | + peerDependencies: | |
929 | + css-render: ~0.15.10 | |
930 | + dependencies: | |
931 | + css-render: 0.15.10 | |
932 | + dev: false | |
933 | + | |
934 | + /@css-render/vue3-ssr@0.15.10(vue@3.2.37): | |
935 | + resolution: {integrity: sha512-keGKnkB2nyVGoA8GezMKNsmvTGXEzgLOGGlgshwOTSEzd1dsROyZ2m/khJ9jV5zbzDM4rWeAWbWF0zwHemsJcw==} | |
936 | + peerDependencies: | |
937 | + vue: ^3.0.11 | |
938 | + dependencies: | |
939 | + vue: 3.2.37 | |
940 | + dev: false | |
941 | + | |
942 | + /@emotion/hash@0.8.0: | |
943 | + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} | |
944 | + dev: false | |
945 | + | |
946 | + /@esbuild/android-arm64@0.17.19: | |
947 | + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} | |
948 | + engines: {node: '>=12'} | |
949 | + cpu: [arm64] | |
950 | + os: [android] | |
951 | + requiresBuild: true | |
952 | + dev: true | |
953 | + optional: true | |
954 | + | |
955 | + /@esbuild/android-arm@0.17.19: | |
956 | + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} | |
957 | + engines: {node: '>=12'} | |
958 | + cpu: [arm] | |
959 | + os: [android] | |
960 | + requiresBuild: true | |
961 | + dev: true | |
962 | + optional: true | |
963 | + | |
964 | + /@esbuild/android-x64@0.17.19: | |
965 | + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} | |
966 | + engines: {node: '>=12'} | |
967 | + cpu: [x64] | |
968 | + os: [android] | |
969 | + requiresBuild: true | |
970 | + dev: true | |
971 | + optional: true | |
972 | + | |
973 | + /@esbuild/darwin-arm64@0.17.19: | |
974 | + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} | |
975 | + engines: {node: '>=12'} | |
976 | + cpu: [arm64] | |
977 | + os: [darwin] | |
978 | + requiresBuild: true | |
979 | + dev: true | |
980 | + optional: true | |
981 | + | |
982 | + /@esbuild/darwin-x64@0.17.19: | |
983 | + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} | |
984 | + engines: {node: '>=12'} | |
985 | + cpu: [x64] | |
986 | + os: [darwin] | |
987 | + requiresBuild: true | |
988 | + dev: true | |
989 | + optional: true | |
990 | + | |
991 | + /@esbuild/freebsd-arm64@0.17.19: | |
992 | + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} | |
993 | + engines: {node: '>=12'} | |
994 | + cpu: [arm64] | |
995 | + os: [freebsd] | |
996 | + requiresBuild: true | |
997 | + dev: true | |
998 | + optional: true | |
999 | + | |
1000 | + /@esbuild/freebsd-x64@0.17.19: | |
1001 | + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} | |
1002 | + engines: {node: '>=12'} | |
1003 | + cpu: [x64] | |
1004 | + os: [freebsd] | |
1005 | + requiresBuild: true | |
1006 | + dev: true | |
1007 | + optional: true | |
1008 | + | |
1009 | + /@esbuild/linux-arm64@0.17.19: | |
1010 | + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} | |
1011 | + engines: {node: '>=12'} | |
1012 | + cpu: [arm64] | |
1013 | + os: [linux] | |
1014 | + requiresBuild: true | |
1015 | + dev: true | |
1016 | + optional: true | |
1017 | + | |
1018 | + /@esbuild/linux-arm@0.17.19: | |
1019 | + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} | |
1020 | + engines: {node: '>=12'} | |
1021 | + cpu: [arm] | |
1022 | + os: [linux] | |
1023 | + requiresBuild: true | |
1024 | + dev: true | |
1025 | + optional: true | |
1026 | + | |
1027 | + /@esbuild/linux-ia32@0.17.19: | |
1028 | + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} | |
1029 | + engines: {node: '>=12'} | |
1030 | + cpu: [ia32] | |
1031 | + os: [linux] | |
1032 | + requiresBuild: true | |
1033 | + dev: true | |
1034 | + optional: true | |
1035 | + | |
1036 | + /@esbuild/linux-loong64@0.17.19: | |
1037 | + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} | |
1038 | + engines: {node: '>=12'} | |
1039 | + cpu: [loong64] | |
1040 | + os: [linux] | |
1041 | + requiresBuild: true | |
1042 | + dev: true | |
1043 | + optional: true | |
1044 | + | |
1045 | + /@esbuild/linux-mips64el@0.17.19: | |
1046 | + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} | |
1047 | + engines: {node: '>=12'} | |
1048 | + cpu: [mips64el] | |
1049 | + os: [linux] | |
1050 | + requiresBuild: true | |
1051 | + dev: true | |
1052 | + optional: true | |
1053 | + | |
1054 | + /@esbuild/linux-ppc64@0.17.19: | |
1055 | + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} | |
1056 | + engines: {node: '>=12'} | |
1057 | + cpu: [ppc64] | |
1058 | + os: [linux] | |
1059 | + requiresBuild: true | |
1060 | + dev: true | |
1061 | + optional: true | |
1062 | + | |
1063 | + /@esbuild/linux-riscv64@0.17.19: | |
1064 | + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} | |
1065 | + engines: {node: '>=12'} | |
1066 | + cpu: [riscv64] | |
1067 | + os: [linux] | |
1068 | + requiresBuild: true | |
1069 | + dev: true | |
1070 | + optional: true | |
1071 | + | |
1072 | + /@esbuild/linux-s390x@0.17.19: | |
1073 | + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} | |
1074 | + engines: {node: '>=12'} | |
1075 | + cpu: [s390x] | |
1076 | + os: [linux] | |
1077 | + requiresBuild: true | |
1078 | + dev: true | |
1079 | + optional: true | |
1080 | + | |
1081 | + /@esbuild/linux-x64@0.17.19: | |
1082 | + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} | |
1083 | + engines: {node: '>=12'} | |
1084 | + cpu: [x64] | |
1085 | + os: [linux] | |
1086 | + requiresBuild: true | |
1087 | + dev: true | |
1088 | + optional: true | |
1089 | + | |
1090 | + /@esbuild/netbsd-x64@0.17.19: | |
1091 | + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} | |
1092 | + engines: {node: '>=12'} | |
1093 | + cpu: [x64] | |
1094 | + os: [netbsd] | |
1095 | + requiresBuild: true | |
1096 | + dev: true | |
1097 | + optional: true | |
1098 | + | |
1099 | + /@esbuild/openbsd-x64@0.17.19: | |
1100 | + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} | |
1101 | + engines: {node: '>=12'} | |
1102 | + cpu: [x64] | |
1103 | + os: [openbsd] | |
1104 | + requiresBuild: true | |
1105 | + dev: true | |
1106 | + optional: true | |
1107 | + | |
1108 | + /@esbuild/sunos-x64@0.17.19: | |
1109 | + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} | |
1110 | + engines: {node: '>=12'} | |
1111 | + cpu: [x64] | |
1112 | + os: [sunos] | |
1113 | + requiresBuild: true | |
1114 | + dev: true | |
1115 | + optional: true | |
1116 | + | |
1117 | + /@esbuild/win32-arm64@0.17.19: | |
1118 | + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} | |
1119 | + engines: {node: '>=12'} | |
1120 | + cpu: [arm64] | |
1121 | + os: [win32] | |
1122 | + requiresBuild: true | |
1123 | + dev: true | |
1124 | + optional: true | |
1125 | + | |
1126 | + /@esbuild/win32-ia32@0.17.19: | |
1127 | + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} | |
1128 | + engines: {node: '>=12'} | |
1129 | + cpu: [ia32] | |
1130 | + os: [win32] | |
1131 | + requiresBuild: true | |
1132 | + dev: true | |
1133 | + optional: true | |
1134 | + | |
1135 | + /@esbuild/win32-x64@0.17.19: | |
1136 | + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} | |
694 | 1137 | engines: {node: '>=12'} |
695 | - dependencies: | |
696 | - '@jridgewell/trace-mapping': 0.3.9 | |
1138 | + cpu: [x64] | |
1139 | + os: [win32] | |
1140 | + requiresBuild: true | |
697 | 1141 | dev: true |
698 | - | |
699 | - /@css-render/plugin-bem@0.15.10(css-render@0.15.10): | |
700 | - resolution: {integrity: sha512-V7b08sM2PWJlXI7BJiVIa0Sg30H3u/jHay4AclNXfF2yRFwwb4ZJjggsMfzwj3WSihAdNf2WTqvOU5qsOD80Dg==} | |
701 | - peerDependencies: | |
702 | - css-render: ~0.15.10 | |
703 | - dependencies: | |
704 | - css-render: 0.15.10 | |
705 | - dev: false | |
706 | - | |
707 | - /@css-render/vue3-ssr@0.15.10(vue@3.2.37): | |
708 | - resolution: {integrity: sha512-keGKnkB2nyVGoA8GezMKNsmvTGXEzgLOGGlgshwOTSEzd1dsROyZ2m/khJ9jV5zbzDM4rWeAWbWF0zwHemsJcw==} | |
709 | - peerDependencies: | |
710 | - vue: ^3.0.11 | |
711 | - dependencies: | |
712 | - vue: 3.2.37 | |
713 | - dev: false | |
714 | - | |
715 | - /@emotion/hash@0.8.0: | |
716 | - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} | |
717 | - dev: false | |
1142 | + optional: true | |
718 | 1143 | |
719 | 1144 | /@eslint/eslintrc@1.3.0: |
720 | 1145 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} |
... | ... | @@ -748,6 +1173,19 @@ packages: |
748 | 1173 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} |
749 | 1174 | dev: true |
750 | 1175 | |
1176 | + /@iconify/types@2.0.0: | |
1177 | + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} | |
1178 | + dev: true | |
1179 | + | |
1180 | + /@iconify/vue@4.1.1(vue@3.2.37): | |
1181 | + resolution: {integrity: sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg==} | |
1182 | + peerDependencies: | |
1183 | + vue: '>=3' | |
1184 | + dependencies: | |
1185 | + '@iconify/types': 2.0.0 | |
1186 | + vue: 3.2.37 | |
1187 | + dev: true | |
1188 | + | |
751 | 1189 | /@intlify/core-base@9.2.2: |
752 | 1190 | resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==} |
753 | 1191 | engines: {node: '>= 14'} |
... | ... | @@ -803,6 +1241,15 @@ packages: |
803 | 1241 | '@jridgewell/trace-mapping': 0.3.13 |
804 | 1242 | dev: true |
805 | 1243 | |
1244 | + /@jridgewell/gen-mapping@0.3.3: | |
1245 | + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} | |
1246 | + engines: {node: '>=6.0.0'} | |
1247 | + dependencies: | |
1248 | + '@jridgewell/set-array': 1.1.1 | |
1249 | + '@jridgewell/sourcemap-codec': 1.4.14 | |
1250 | + '@jridgewell/trace-mapping': 0.3.17 | |
1251 | + dev: true | |
1252 | + | |
806 | 1253 | /@jridgewell/resolve-uri@3.0.7: |
807 | 1254 | resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} |
808 | 1255 | engines: {node: '>=6.0.0'} |
... | ... | @@ -1049,6 +1496,12 @@ packages: |
1049 | 1496 | '@types/node': 17.0.43 |
1050 | 1497 | dev: true |
1051 | 1498 | |
1499 | + /@types/three@0.143.2: | |
1500 | + resolution: {integrity: sha512-HjsRWvd6rsXViFeOdU97/pHNDQknzJbFI0/5MrQ0joOlK0uixQH40sDJs/LwkNHhFYUvVENXAUQdKDeiQChHDw==} | |
1501 | + dependencies: | |
1502 | + '@types/webxr': 0.5.0 | |
1503 | + dev: false | |
1504 | + | |
1052 | 1505 | /@types/three@0.144.0: |
1053 | 1506 | resolution: {integrity: sha512-psvEs6q5rLN50jUYZ3D4pZMfxTbdt3A243blt0my7/NcL6chaCZpHe2csbCtx0SOD9fI/XnF3wnVUAYZGqCSYg==} |
1054 | 1507 | dependencies: |
... | ... | @@ -1067,7 +1520,6 @@ packages: |
1067 | 1520 | |
1068 | 1521 | /@types/webxr@0.5.0: |
1069 | 1522 | resolution: {integrity: sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==} |
1070 | - dev: true | |
1071 | 1523 | |
1072 | 1524 | /@typescript-eslint/eslint-plugin@5.28.0(@typescript-eslint/parser@5.28.0)(eslint@8.17.0)(typescript@4.6.3): |
1073 | 1525 | resolution: {integrity: sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA==} |
... | ... | @@ -1236,27 +1688,31 @@ packages: |
1236 | 1688 | is-function: 1.0.2 |
1237 | 1689 | dev: false |
1238 | 1690 | |
1239 | - /@vitejs/plugin-vue-jsx@1.3.10: | |
1240 | - resolution: {integrity: sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==} | |
1241 | - engines: {node: '>=12.0.0'} | |
1691 | + /@vitejs/plugin-vue-jsx@3.0.1(vite@4.3.6)(vue@3.2.37): | |
1692 | + resolution: {integrity: sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==} | |
1693 | + engines: {node: ^14.18.0 || >=16.0.0} | |
1694 | + peerDependencies: | |
1695 | + vite: ^4.0.0 | |
1696 | + vue: ^3.0.0 | |
1242 | 1697 | dependencies: |
1243 | - '@babel/core': 7.18.5 | |
1244 | - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.18.5) | |
1245 | - '@babel/plugin-transform-typescript': 7.18.4(@babel/core@7.18.5) | |
1246 | - '@rollup/pluginutils': 4.2.1 | |
1247 | - '@vue/babel-plugin-jsx': 1.1.1(@babel/core@7.18.5) | |
1248 | - hash-sum: 2.0.0 | |
1698 | + '@babel/core': 7.22.5 | |
1699 | + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.22.5) | |
1700 | + '@vue/babel-plugin-jsx': 1.1.1(@babel/core@7.22.5) | |
1701 | + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3) | |
1702 | + vue: 3.2.37 | |
1249 | 1703 | transitivePeerDependencies: |
1250 | 1704 | - supports-color |
1251 | 1705 | dev: true |
1252 | 1706 | |
1253 | - /@vitejs/plugin-vue@1.10.2(vite@2.9.9): | |
1254 | - resolution: {integrity: sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==} | |
1255 | - engines: {node: '>=12.0.0'} | |
1707 | + /@vitejs/plugin-vue@4.2.3(vite@4.3.6)(vue@3.2.37): | |
1708 | + resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} | |
1709 | + engines: {node: ^14.18.0 || >=16.0.0} | |
1256 | 1710 | peerDependencies: |
1257 | - vite: ^2.5.10 | |
1711 | + vite: ^4.0.0 | |
1712 | + vue: ^3.2.25 | |
1258 | 1713 | dependencies: |
1259 | - vite: 2.9.9(sass@1.52.3) | |
1714 | + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3) | |
1715 | + vue: 3.2.37 | |
1260 | 1716 | dev: true |
1261 | 1717 | |
1262 | 1718 | /@volar/code-gen@0.38.9: |
... | ... | @@ -1293,11 +1749,11 @@ packages: |
1293 | 1749 | resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} |
1294 | 1750 | dev: true |
1295 | 1751 | |
1296 | - /@vue/babel-plugin-jsx@1.1.1(@babel/core@7.18.5): | |
1752 | + /@vue/babel-plugin-jsx@1.1.1(@babel/core@7.22.5): | |
1297 | 1753 | resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} |
1298 | 1754 | dependencies: |
1299 | 1755 | '@babel/helper-module-imports': 7.16.7 |
1300 | - '@babel/plugin-syntax-jsx': 7.17.12(@babel/core@7.18.5) | |
1756 | + '@babel/plugin-syntax-jsx': 7.17.12(@babel/core@7.22.5) | |
1301 | 1757 | '@babel/template': 7.16.7 |
1302 | 1758 | '@babel/traverse': 7.18.5 |
1303 | 1759 | '@babel/types': 7.18.4 |
... | ... | @@ -1803,6 +2259,17 @@ packages: |
1803 | 2259 | picocolors: 1.0.0 |
1804 | 2260 | dev: true |
1805 | 2261 | |
2262 | + /browserslist@4.21.7: | |
2263 | + resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==} | |
2264 | + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} | |
2265 | + hasBin: true | |
2266 | + dependencies: | |
2267 | + caniuse-lite: 1.0.30001497 | |
2268 | + electron-to-chromium: 1.4.425 | |
2269 | + node-releases: 2.0.12 | |
2270 | + update-browserslist-db: 1.0.11(browserslist@4.21.7) | |
2271 | + dev: true | |
2272 | + | |
1806 | 2273 | /buffer-from@1.1.2: |
1807 | 2274 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} |
1808 | 2275 | dev: true |
... | ... | @@ -1867,6 +2334,10 @@ packages: |
1867 | 2334 | resolution: {integrity: sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg==} |
1868 | 2335 | dev: true |
1869 | 2336 | |
2337 | + /caniuse-lite@1.0.30001497: | |
2338 | + resolution: {integrity: sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==} | |
2339 | + dev: true | |
2340 | + | |
1870 | 2341 | /capital-case@1.0.4: |
1871 | 2342 | resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} |
1872 | 2343 | dependencies: |
... | ... | @@ -2471,6 +2942,10 @@ packages: |
2471 | 2942 | resolution: {integrity: sha512-niPzKBSYPG06gxLKO0c2kEmgdRMTtIbNrBlvD31Ld8Q57b/K0218U4j8u/OOt25XE1eFOn47FcmQVdx9R1qqxA==} |
2472 | 2943 | dev: true |
2473 | 2944 | |
2945 | + /electron-to-chromium@1.4.425: | |
2946 | + resolution: {integrity: sha512-wv1NufHxu11zfDbY4fglYQApMswleE9FL/DSeyOyauVXDZ+Kco96JK/tPfBUaDqfRarYp2WH2hJ/5UnVywp9Jg==} | |
2947 | + dev: true | |
2948 | + | |
2474 | 2949 | /emoji-regex@8.0.0: |
2475 | 2950 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} |
2476 | 2951 | dev: true |
... | ... | @@ -2546,218 +3021,40 @@ packages: |
2546 | 3021 | is-symbol: 1.0.4 |
2547 | 3022 | dev: true |
2548 | 3023 | |
2549 | - /esbuild-android-64@0.14.43: | |
2550 | - resolution: {integrity: sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==} | |
2551 | - engines: {node: '>=12'} | |
2552 | - cpu: [x64] | |
2553 | - os: [android] | |
2554 | - requiresBuild: true | |
2555 | - dev: true | |
2556 | - optional: true | |
2557 | - | |
2558 | - /esbuild-android-arm64@0.14.43: | |
2559 | - resolution: {integrity: sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==} | |
2560 | - engines: {node: '>=12'} | |
2561 | - cpu: [arm64] | |
2562 | - os: [android] | |
2563 | - requiresBuild: true | |
2564 | - dev: true | |
2565 | - optional: true | |
2566 | - | |
2567 | - /esbuild-darwin-64@0.14.43: | |
2568 | - resolution: {integrity: sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==} | |
2569 | - engines: {node: '>=12'} | |
2570 | - cpu: [x64] | |
2571 | - os: [darwin] | |
2572 | - requiresBuild: true | |
2573 | - dev: true | |
2574 | - optional: true | |
2575 | - | |
2576 | - /esbuild-darwin-arm64@0.14.43: | |
2577 | - resolution: {integrity: sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==} | |
2578 | - engines: {node: '>=12'} | |
2579 | - cpu: [arm64] | |
2580 | - os: [darwin] | |
2581 | - requiresBuild: true | |
2582 | - dev: true | |
2583 | - optional: true | |
2584 | - | |
2585 | - /esbuild-freebsd-64@0.14.43: | |
2586 | - resolution: {integrity: sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==} | |
2587 | - engines: {node: '>=12'} | |
2588 | - cpu: [x64] | |
2589 | - os: [freebsd] | |
2590 | - requiresBuild: true | |
2591 | - dev: true | |
2592 | - optional: true | |
2593 | - | |
2594 | - /esbuild-freebsd-arm64@0.14.43: | |
2595 | - resolution: {integrity: sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==} | |
2596 | - engines: {node: '>=12'} | |
2597 | - cpu: [arm64] | |
2598 | - os: [freebsd] | |
2599 | - requiresBuild: true | |
2600 | - dev: true | |
2601 | - optional: true | |
2602 | - | |
2603 | - /esbuild-linux-32@0.14.43: | |
2604 | - resolution: {integrity: sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==} | |
2605 | - engines: {node: '>=12'} | |
2606 | - cpu: [ia32] | |
2607 | - os: [linux] | |
2608 | - requiresBuild: true | |
2609 | - dev: true | |
2610 | - optional: true | |
2611 | - | |
2612 | - /esbuild-linux-64@0.14.43: | |
2613 | - resolution: {integrity: sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==} | |
2614 | - engines: {node: '>=12'} | |
2615 | - cpu: [x64] | |
2616 | - os: [linux] | |
2617 | - requiresBuild: true | |
2618 | - dev: true | |
2619 | - optional: true | |
2620 | - | |
2621 | - /esbuild-linux-arm64@0.14.43: | |
2622 | - resolution: {integrity: sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==} | |
2623 | - engines: {node: '>=12'} | |
2624 | - cpu: [arm64] | |
2625 | - os: [linux] | |
2626 | - requiresBuild: true | |
2627 | - dev: true | |
2628 | - optional: true | |
2629 | - | |
2630 | - /esbuild-linux-arm@0.14.43: | |
2631 | - resolution: {integrity: sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==} | |
2632 | - engines: {node: '>=12'} | |
2633 | - cpu: [arm] | |
2634 | - os: [linux] | |
2635 | - requiresBuild: true | |
2636 | - dev: true | |
2637 | - optional: true | |
2638 | - | |
2639 | - /esbuild-linux-mips64le@0.14.43: | |
2640 | - resolution: {integrity: sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==} | |
2641 | - engines: {node: '>=12'} | |
2642 | - cpu: [mips64el] | |
2643 | - os: [linux] | |
2644 | - requiresBuild: true | |
2645 | - dev: true | |
2646 | - optional: true | |
2647 | - | |
2648 | - /esbuild-linux-ppc64le@0.14.43: | |
2649 | - resolution: {integrity: sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==} | |
2650 | - engines: {node: '>=12'} | |
2651 | - cpu: [ppc64] | |
2652 | - os: [linux] | |
2653 | - requiresBuild: true | |
2654 | - dev: true | |
2655 | - optional: true | |
2656 | - | |
2657 | - /esbuild-linux-riscv64@0.14.43: | |
2658 | - resolution: {integrity: sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==} | |
2659 | - engines: {node: '>=12'} | |
2660 | - cpu: [riscv64] | |
2661 | - os: [linux] | |
2662 | - requiresBuild: true | |
2663 | - dev: true | |
2664 | - optional: true | |
2665 | - | |
2666 | - /esbuild-linux-s390x@0.14.43: | |
2667 | - resolution: {integrity: sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==} | |
2668 | - engines: {node: '>=12'} | |
2669 | - cpu: [s390x] | |
2670 | - os: [linux] | |
2671 | - requiresBuild: true | |
2672 | - dev: true | |
2673 | - optional: true | |
2674 | - | |
2675 | - /esbuild-netbsd-64@0.14.43: | |
2676 | - resolution: {integrity: sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==} | |
2677 | - engines: {node: '>=12'} | |
2678 | - cpu: [x64] | |
2679 | - os: [netbsd] | |
2680 | - requiresBuild: true | |
2681 | - dev: true | |
2682 | - optional: true | |
2683 | - | |
2684 | - /esbuild-openbsd-64@0.14.43: | |
2685 | - resolution: {integrity: sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==} | |
2686 | - engines: {node: '>=12'} | |
2687 | - cpu: [x64] | |
2688 | - os: [openbsd] | |
2689 | - requiresBuild: true | |
2690 | - dev: true | |
2691 | - optional: true | |
2692 | - | |
2693 | - /esbuild-sunos-64@0.14.43: | |
2694 | - resolution: {integrity: sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==} | |
2695 | - engines: {node: '>=12'} | |
2696 | - cpu: [x64] | |
2697 | - os: [sunos] | |
2698 | - requiresBuild: true | |
2699 | - dev: true | |
2700 | - optional: true | |
2701 | - | |
2702 | - /esbuild-windows-32@0.14.43: | |
2703 | - resolution: {integrity: sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==} | |
2704 | - engines: {node: '>=12'} | |
2705 | - cpu: [ia32] | |
2706 | - os: [win32] | |
2707 | - requiresBuild: true | |
2708 | - dev: true | |
2709 | - optional: true | |
2710 | - | |
2711 | - /esbuild-windows-64@0.14.43: | |
2712 | - resolution: {integrity: sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==} | |
2713 | - engines: {node: '>=12'} | |
2714 | - cpu: [x64] | |
2715 | - os: [win32] | |
2716 | - requiresBuild: true | |
2717 | - dev: true | |
2718 | - optional: true | |
2719 | - | |
2720 | - /esbuild-windows-arm64@0.14.43: | |
2721 | - resolution: {integrity: sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==} | |
2722 | - engines: {node: '>=12'} | |
2723 | - cpu: [arm64] | |
2724 | - os: [win32] | |
2725 | - requiresBuild: true | |
2726 | - dev: true | |
2727 | - optional: true | |
2728 | - | |
2729 | 3024 | /esbuild@0.11.3: |
2730 | 3025 | resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==} |
2731 | 3026 | hasBin: true |
2732 | 3027 | requiresBuild: true |
2733 | 3028 | dev: true |
2734 | 3029 | |
2735 | - /esbuild@0.14.43: | |
2736 | - resolution: {integrity: sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==} | |
3030 | + /esbuild@0.17.19: | |
3031 | + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} | |
2737 | 3032 | engines: {node: '>=12'} |
2738 | 3033 | hasBin: true |
2739 | 3034 | requiresBuild: true |
2740 | 3035 | optionalDependencies: |
2741 | - esbuild-android-64: 0.14.43 | |
2742 | - esbuild-android-arm64: 0.14.43 | |
2743 | - esbuild-darwin-64: 0.14.43 | |
2744 | - esbuild-darwin-arm64: 0.14.43 | |
2745 | - esbuild-freebsd-64: 0.14.43 | |
2746 | - esbuild-freebsd-arm64: 0.14.43 | |
2747 | - esbuild-linux-32: 0.14.43 | |
2748 | - esbuild-linux-64: 0.14.43 | |
2749 | - esbuild-linux-arm: 0.14.43 | |
2750 | - esbuild-linux-arm64: 0.14.43 | |
2751 | - esbuild-linux-mips64le: 0.14.43 | |
2752 | - esbuild-linux-ppc64le: 0.14.43 | |
2753 | - esbuild-linux-riscv64: 0.14.43 | |
2754 | - esbuild-linux-s390x: 0.14.43 | |
2755 | - esbuild-netbsd-64: 0.14.43 | |
2756 | - esbuild-openbsd-64: 0.14.43 | |
2757 | - esbuild-sunos-64: 0.14.43 | |
2758 | - esbuild-windows-32: 0.14.43 | |
2759 | - esbuild-windows-64: 0.14.43 | |
2760 | - esbuild-windows-arm64: 0.14.43 | |
3036 | + '@esbuild/android-arm': 0.17.19 | |
3037 | + '@esbuild/android-arm64': 0.17.19 | |
3038 | + '@esbuild/android-x64': 0.17.19 | |
3039 | + '@esbuild/darwin-arm64': 0.17.19 | |
3040 | + '@esbuild/darwin-x64': 0.17.19 | |
3041 | + '@esbuild/freebsd-arm64': 0.17.19 | |
3042 | + '@esbuild/freebsd-x64': 0.17.19 | |
3043 | + '@esbuild/linux-arm': 0.17.19 | |
3044 | + '@esbuild/linux-arm64': 0.17.19 | |
3045 | + '@esbuild/linux-ia32': 0.17.19 | |
3046 | + '@esbuild/linux-loong64': 0.17.19 | |
3047 | + '@esbuild/linux-mips64el': 0.17.19 | |
3048 | + '@esbuild/linux-ppc64': 0.17.19 | |
3049 | + '@esbuild/linux-riscv64': 0.17.19 | |
3050 | + '@esbuild/linux-s390x': 0.17.19 | |
3051 | + '@esbuild/linux-x64': 0.17.19 | |
3052 | + '@esbuild/netbsd-x64': 0.17.19 | |
3053 | + '@esbuild/openbsd-x64': 0.17.19 | |
3054 | + '@esbuild/sunos-x64': 0.17.19 | |
3055 | + '@esbuild/win32-arm64': 0.17.19 | |
3056 | + '@esbuild/win32-ia32': 0.17.19 | |
3057 | + '@esbuild/win32-x64': 0.17.19 | |
2761 | 3058 | dev: true |
2762 | 3059 | |
2763 | 3060 | /escalade@3.1.1: |
... | ... | @@ -3469,10 +3766,6 @@ packages: |
3469 | 3766 | dependencies: |
3470 | 3767 | function-bind: 1.1.1 |
3471 | 3768 | |
3472 | - /hash-sum@2.0.0: | |
3473 | - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} | |
3474 | - dev: true | |
3475 | - | |
3476 | 3769 | /he@1.2.0: |
3477 | 3770 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} |
3478 | 3771 | hasBin: true |
... | ... | @@ -3928,6 +4221,12 @@ packages: |
3928 | 4221 | hasBin: true |
3929 | 4222 | dev: true |
3930 | 4223 | |
4224 | + /json5@2.2.3: | |
4225 | + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} | |
4226 | + engines: {node: '>=6'} | |
4227 | + hasBin: true | |
4228 | + dev: true | |
4229 | + | |
3931 | 4230 | /jsonfile@6.1.0: |
3932 | 4231 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} |
3933 | 4232 | dependencies: |
... | ... | @@ -4053,6 +4352,12 @@ packages: |
4053 | 4352 | tslib: 2.4.0 |
4054 | 4353 | dev: true |
4055 | 4354 | |
4355 | + /lru-cache@5.1.1: | |
4356 | + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} | |
4357 | + dependencies: | |
4358 | + yallist: 3.1.1 | |
4359 | + dev: true | |
4360 | + | |
4056 | 4361 | /lru-cache@6.0.0: |
4057 | 4362 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} |
4058 | 4363 | engines: {node: '>=10'} |
... | ... | @@ -4185,6 +4490,10 @@ packages: |
4185 | 4490 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} |
4186 | 4491 | dev: true |
4187 | 4492 | |
4493 | + /mitt@3.0.0: | |
4494 | + resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} | |
4495 | + dev: false | |
4496 | + | |
4188 | 4497 | /mkdirp@1.0.4: |
4189 | 4498 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} |
4190 | 4499 | engines: {node: '>=10'} |
... | ... | @@ -4267,6 +4576,12 @@ packages: |
4267 | 4576 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} |
4268 | 4577 | hasBin: true |
4269 | 4578 | |
4579 | + /nanoid@3.3.6: | |
4580 | + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} | |
4581 | + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} | |
4582 | + hasBin: true | |
4583 | + dev: true | |
4584 | + | |
4270 | 4585 | /natural-compare@1.4.0: |
4271 | 4586 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} |
4272 | 4587 | dev: true |
... | ... | @@ -4308,6 +4623,10 @@ packages: |
4308 | 4623 | upper-case: 2.0.2 |
4309 | 4624 | dev: true |
4310 | 4625 | |
4626 | + /node-releases@2.0.12: | |
4627 | + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} | |
4628 | + dev: true | |
4629 | + | |
4311 | 4630 | /node-releases@2.0.5: |
4312 | 4631 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} |
4313 | 4632 | dev: true |
... | ... | @@ -4697,6 +5016,15 @@ packages: |
4697 | 5016 | picocolors: 1.0.0 |
4698 | 5017 | source-map-js: 1.0.2 |
4699 | 5018 | |
5019 | + /postcss@8.4.24: | |
5020 | + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} | |
5021 | + engines: {node: ^10 || ^12 || >=14} | |
5022 | + dependencies: | |
5023 | + nanoid: 3.3.6 | |
5024 | + picocolors: 1.0.0 | |
5025 | + source-map-js: 1.0.2 | |
5026 | + dev: true | |
5027 | + | |
4700 | 5028 | /prelude-ls@1.2.1: |
4701 | 5029 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} |
4702 | 5030 | engines: {node: '>= 0.8.0'} |
... | ... | @@ -4904,6 +5232,14 @@ packages: |
4904 | 5232 | fsevents: 2.3.2 |
4905 | 5233 | dev: true |
4906 | 5234 | |
5235 | + /rollup@3.24.0: | |
5236 | + resolution: {integrity: sha512-OgraHOIg2YpHQTjl0/ymWfFNBEyPucB7lmhXrQUh38qNOegxLapSPFs9sNr0qKR75awW41D93XafoR2QfhBdUQ==} | |
5237 | + engines: {node: '>=14.18.0', npm: '>=8.0.0'} | |
5238 | + hasBin: true | |
5239 | + optionalDependencies: | |
5240 | + fsevents: 2.3.2 | |
5241 | + dev: true | |
5242 | + | |
4907 | 5243 | /run-async@2.4.1: |
4908 | 5244 | resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} |
4909 | 5245 | engines: {node: '>=0.12.0'} |
... | ... | @@ -5294,6 +5630,10 @@ packages: |
5294 | 5630 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} |
5295 | 5631 | dev: true |
5296 | 5632 | |
5633 | + /three@0.143.0: | |
5634 | + resolution: {integrity: sha512-oKcAGYHhJ46TGEuHjodo2n6TY2R6lbvrkp+feKZxqsUL/WkH7GKKaeu6RHeyb2Xjfk2dPLRKLsOP0KM2VgT8Zg==} | |
5635 | + dev: false | |
5636 | + | |
5297 | 5637 | /three@0.145.0: |
5298 | 5638 | resolution: {integrity: sha512-EKoHQEtEJ4CB6b2BGMBgLZrfwLjXcSUfoI/MiIXUuRpeYsfK5aPWbYhdtIVWOH+x6X0TouldHKHBuc/LAiFzAw==} |
5299 | 5639 | dev: false |
... | ... | @@ -5477,6 +5817,17 @@ packages: |
5477 | 5817 | engines: {node: '>= 0.8'} |
5478 | 5818 | dev: true |
5479 | 5819 | |
5820 | + /update-browserslist-db@1.0.11(browserslist@4.21.7): | |
5821 | + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} | |
5822 | + hasBin: true | |
5823 | + peerDependencies: | |
5824 | + browserslist: '>= 4.21.0' | |
5825 | + dependencies: | |
5826 | + browserslist: 4.21.7 | |
5827 | + escalade: 3.1.1 | |
5828 | + picocolors: 1.0.0 | |
5829 | + dev: true | |
5830 | + | |
5480 | 5831 | /upper-case-first@2.0.2: |
5481 | 5832 | resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} |
5482 | 5833 | dependencies: |
... | ... | @@ -5571,7 +5922,7 @@ packages: |
5571 | 5922 | global: 4.4.0 |
5572 | 5923 | dev: false |
5573 | 5924 | |
5574 | - /vite-plugin-compression@0.5.1(vite@2.9.9): | |
5925 | + /vite-plugin-compression@0.5.1(vite@4.3.6): | |
5575 | 5926 | resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} |
5576 | 5927 | peerDependencies: |
5577 | 5928 | vite: '>=2.0.0' |
... | ... | @@ -5579,12 +5930,12 @@ packages: |
5579 | 5930 | chalk: 4.1.2 |
5580 | 5931 | debug: 4.3.4 |
5581 | 5932 | fs-extra: 10.1.0 |
5582 | - vite: 2.9.9(sass@1.52.3) | |
5933 | + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3) | |
5583 | 5934 | transitivePeerDependencies: |
5584 | 5935 | - supports-color |
5585 | 5936 | dev: true |
5586 | 5937 | |
5587 | - /vite-plugin-html@3.2.0(vite@2.9.9): | |
5938 | + /vite-plugin-html@3.2.0(vite@4.3.6): | |
5588 | 5939 | resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} |
5589 | 5940 | peerDependencies: |
5590 | 5941 | vite: '>=2.0.0' |
... | ... | @@ -5601,7 +5952,7 @@ packages: |
5601 | 5952 | html-minifier-terser: 6.1.0 |
5602 | 5953 | node-html-parser: 5.4.2 |
5603 | 5954 | pathe: 0.2.0 |
5604 | - vite: 2.9.9(sass@1.52.3) | |
5955 | + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3) | |
5605 | 5956 | dev: true |
5606 | 5957 | |
5607 | 5958 | /vite-plugin-importer@0.2.5: |
... | ... | @@ -5614,7 +5965,7 @@ packages: |
5614 | 5965 | - supports-color |
5615 | 5966 | dev: true |
5616 | 5967 | |
5617 | - /vite-plugin-mock@2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@2.9.9): | |
5968 | + /vite-plugin-mock@2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@4.3.6): | |
5618 | 5969 | resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==} |
5619 | 5970 | engines: {node: '>=12.0.0'} |
5620 | 5971 | peerDependencies: |
... | ... | @@ -5631,7 +5982,7 @@ packages: |
5631 | 5982 | fast-glob: 3.2.11 |
5632 | 5983 | mockjs: 1.1.0 |
5633 | 5984 | path-to-regexp: 6.2.1 |
5634 | - vite: 2.9.9(sass@1.52.3) | |
5985 | + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3) | |
5635 | 5986 | transitivePeerDependencies: |
5636 | 5987 | - rollup |
5637 | 5988 | - supports-color |
... | ... | @@ -5645,26 +5996,35 @@ packages: |
5645 | 5996 | monaco-editor: 0.33.0 |
5646 | 5997 | dev: true |
5647 | 5998 | |
5648 | - /vite@2.9.9(sass@1.52.3): | |
5649 | - resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} | |
5650 | - engines: {node: '>=12.2.0'} | |
5999 | + /vite@4.3.6(@types/node@16.11.40)(sass@1.52.3): | |
6000 | + resolution: {integrity: sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==} | |
6001 | + engines: {node: ^14.18.0 || >=16.0.0} | |
5651 | 6002 | hasBin: true |
5652 | 6003 | peerDependencies: |
6004 | + '@types/node': '>= 14' | |
5653 | 6005 | less: '*' |
5654 | 6006 | sass: '*' |
5655 | 6007 | stylus: '*' |
6008 | + sugarss: '*' | |
6009 | + terser: ^5.4.0 | |
5656 | 6010 | peerDependenciesMeta: |
6011 | + '@types/node': | |
6012 | + optional: true | |
5657 | 6013 | less: |
5658 | 6014 | optional: true |
5659 | 6015 | sass: |
5660 | 6016 | optional: true |
5661 | 6017 | stylus: |
5662 | 6018 | optional: true |
6019 | + sugarss: | |
6020 | + optional: true | |
6021 | + terser: | |
6022 | + optional: true | |
5663 | 6023 | dependencies: |
5664 | - esbuild: 0.14.43 | |
5665 | - postcss: 8.4.14 | |
5666 | - resolve: 1.22.0 | |
5667 | - rollup: 2.75.6 | |
6024 | + '@types/node': 16.11.40 | |
6025 | + esbuild: 0.17.19 | |
6026 | + postcss: 8.4.24 | |
6027 | + rollup: 3.24.0 | |
5668 | 6028 | sass: 1.52.3 |
5669 | 6029 | optionalDependencies: |
5670 | 6030 | fsevents: 2.3.2 |
... | ... | @@ -5679,6 +6039,14 @@ packages: |
5679 | 6039 | vue: 3.2.37 |
5680 | 6040 | dev: false |
5681 | 6041 | |
6042 | + /vue-3d-loader@2.1.7: | |
6043 | + resolution: {integrity: sha512-nOwCfxs7r5u4rvb5ir1TecUG9kHnwVYRhjwvuXnSbmIh+8v5+UG90YzXWMjRX5qu9EYqJrIUAJyzE+6SRfamcw==} | |
6044 | + dependencies: | |
6045 | + '@types/three': 0.143.2 | |
6046 | + three: 0.143.0 | |
6047 | + vue: 3.2.37 | |
6048 | + dev: false | |
6049 | + | |
5682 | 6050 | /vue-demi@0.12.5(vue@3.2.37): |
5683 | 6051 | resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} |
5684 | 6052 | engines: {node: '>=12'} |
... | ... | @@ -5870,7 +6238,7 @@ packages: |
5870 | 6238 | '@webassemblyjs/wasm-parser': 1.11.1 |
5871 | 6239 | acorn: 8.7.1 |
5872 | 6240 | acorn-import-assertions: 1.8.0(acorn@8.7.1) |
5873 | - browserslist: 4.20.4 | |
6241 | + browserslist: 4.21.7 | |
5874 | 6242 | chrome-trace-event: 1.0.3 |
5875 | 6243 | enhanced-resolve: 5.12.0 |
5876 | 6244 | es-module-lexer: 0.9.3 |
... | ... | @@ -5945,6 +6313,10 @@ packages: |
5945 | 6313 | engines: {node: '>=10'} |
5946 | 6314 | dev: true |
5947 | 6315 | |
6316 | + /yallist@3.1.1: | |
6317 | + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} | |
6318 | + dev: true | |
6319 | + | |
5948 | 6320 | /yallist@4.0.0: |
5949 | 6321 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} |
5950 | 6322 | dev: true | ... | ... |
readme/sponsors/fb-banner.gif
0 → 100644
26.5 KB
readme/sponsors/zyplayer-banner.png
0 → 100644
14 KB
src/api/mock/graph.json
0 → 100644
1 | +{ | |
2 | + "nodes": [ | |
3 | + { | |
4 | + "id": "0", | |
5 | + "name": "Myriel", | |
6 | + "symbolSize": "@integer(0, 50)", | |
7 | + "x": -266.82776, | |
8 | + "y": 299.6904, | |
9 | + "value": "@integer(0, 50)", | |
10 | + "category": 3 | |
11 | + }, | |
12 | + { | |
13 | + "id": "1", | |
14 | + "name": "Napoleon", | |
15 | + "symbolSize": "@integer(0, 50)", | |
16 | + "x": -418.08344, | |
17 | + "y": 446.8853, | |
18 | + "value": "@integer(0, 50)", | |
19 | + "category": 5 | |
20 | + }, | |
21 | + { | |
22 | + "id": "2", | |
23 | + "name": "MlleBaptistine", | |
24 | + "symbolSize": "@integer(0, 50)", | |
25 | + "x": -212.76357, | |
26 | + "y": 245.29176, | |
27 | + "value": "@integer(0, 50)", | |
28 | + "category": 1 | |
29 | + }, | |
30 | + { | |
31 | + "id": "3", | |
32 | + "name": "MmeMagloire", | |
33 | + "symbolSize": "@integer(0, 50)", | |
34 | + "x": -242.82404, | |
35 | + "y": 235.26283, | |
36 | + "value": "@integer(0, 50)", | |
37 | + "category": 1 | |
38 | + }, | |
39 | + { | |
40 | + "id": "4", | |
41 | + "name": "CountessDeLo", | |
42 | + "symbolSize": "@integer(0, 50)", | |
43 | + "x": -379.30386, | |
44 | + "y": 429.06424, | |
45 | + "value": "@integer(0, 50)", | |
46 | + "category": 0 | |
47 | + } | |
48 | + ], | |
49 | + "links": [ | |
50 | + { | |
51 | + "source": "1", | |
52 | + "target": "@integer(2, 4)" | |
53 | + }, | |
54 | + { | |
55 | + "source": "2", | |
56 | + "target": "@integer(3, 4)" | |
57 | + }, | |
58 | + { | |
59 | + "source": "3", | |
60 | + "target": "@integer(0, 2)" | |
61 | + }, | |
62 | + { | |
63 | + "source": "3", | |
64 | + "target": "@integer(0, 1)" | |
65 | + }, | |
66 | + { | |
67 | + "source": "4", | |
68 | + "target": "@integer(0, 3)" | |
69 | + } | |
70 | + ], | |
71 | + "categories": [ | |
72 | + { | |
73 | + "name": "A" | |
74 | + }, | |
75 | + { | |
76 | + "name": "B" | |
77 | + }, | |
78 | + { | |
79 | + "name": "C" | |
80 | + }, | |
81 | + { | |
82 | + "name": "D" | |
83 | + }, | |
84 | + { | |
85 | + "name": "E" | |
86 | + }, | |
87 | + { | |
88 | + "name": "F" | |
89 | + }, | |
90 | + { | |
91 | + "name": "G" | |
92 | + }, | |
93 | + { | |
94 | + "name": "H" | |
95 | + }, | |
96 | + { | |
97 | + "name": "I" | |
98 | + } | |
99 | + ] | |
100 | + } | |
\ No newline at end of file | ... | ... |
... | ... | @@ -19,6 +19,8 @@ export const capsuleUrl = '/mock/capsule' |
19 | 19 | export const wordCloudUrl = '/mock/wordCloud' |
20 | 20 | export const treemapUrl = '/mock/treemap' |
21 | 21 | export const threeEarth01Url = '/mock/threeEarth01Data' |
22 | +export const sankeyUrl = '/mock/sankey' | |
23 | +export const graphUrl = '/mock/graphData' | |
22 | 24 | |
23 | 25 | const mockObject: MockMethod[] = [ |
24 | 26 | { |
... | ... | @@ -103,6 +105,16 @@ const mockObject: MockMethod[] = [ |
103 | 105 | method: RequestHttpEnum.GET, |
104 | 106 | response: () => test.threeEarth01Data |
105 | 107 | }, |
108 | + { | |
109 | + url: sankeyUrl, | |
110 | + method: RequestHttpEnum.GET, | |
111 | + response: () => test.fetchSankey | |
112 | + }, | |
113 | + { | |
114 | + url: graphUrl, | |
115 | + method: RequestHttpEnum.GET, | |
116 | + response: () => test.graphData | |
117 | + }, | |
106 | 118 | ] |
107 | 119 | |
108 | 120 | export default mockObject | ... | ... |
src/api/mock/sankey.json
0 → 100644
1 | +{ | |
2 | + "label": [ | |
3 | + { | |
4 | + "name": "a" | |
5 | + }, | |
6 | + { | |
7 | + "name": "b" | |
8 | + }, | |
9 | + { | |
10 | + "name": "a1" | |
11 | + }, | |
12 | + { | |
13 | + "name": "a2" | |
14 | + }, | |
15 | + { | |
16 | + "name": "b1" | |
17 | + }, | |
18 | + { | |
19 | + "name": "b2" | |
20 | + } | |
21 | + ], | |
22 | + "links": [ | |
23 | + { | |
24 | + "source": "a", | |
25 | + "target": "a1", | |
26 | + "value": "@integer(0, 10)" | |
27 | + }, | |
28 | + { | |
29 | + "source": "a", | |
30 | + "target": "a2", | |
31 | + "value": "@integer(0, 10)" | |
32 | + }, | |
33 | + { | |
34 | + "source": "b", | |
35 | + "target": "b1", | |
36 | + "value": "@integer(0, 10)" | |
37 | + }, | |
38 | + { | |
39 | + "source": "a", | |
40 | + "target": "b1", | |
41 | + "value": "@integer(0, 10)" | |
42 | + }, | |
43 | + { | |
44 | + "source": "b1", | |
45 | + "target": "a1", | |
46 | + "value": "@integer(0, 10)" | |
47 | + }, | |
48 | + { | |
49 | + "source": "b1", | |
50 | + "target": "b2", | |
51 | + "value": "@integer(0, 10)" | |
52 | + } | |
53 | + ], | |
54 | + "levels": [ | |
55 | + { | |
56 | + "depth": 0, | |
57 | + "itemStyle": { | |
58 | + "color": "#decbe4" | |
59 | + }, | |
60 | + "lineStyle": { | |
61 | + "color": "source", | |
62 | + "opacity": 0.9 | |
63 | + } | |
64 | + }, | |
65 | + { | |
66 | + "depth": 1, | |
67 | + "itemStyle": { | |
68 | + "color": "#b3cde3" | |
69 | + }, | |
70 | + "lineStyle": { | |
71 | + "color": "source", | |
72 | + "opacity": 0.6 | |
73 | + } | |
74 | + }, | |
75 | + { | |
76 | + "depth": 2, | |
77 | + "itemStyle": { | |
78 | + "color": "#ccebc5" | |
79 | + }, | |
80 | + "lineStyle": { | |
81 | + "color": "source", | |
82 | + "opacity": 0.6 | |
83 | + } | |
84 | + } | |
85 | + ] | |
86 | +} | ... | ... |
... | ... | @@ -2,6 +2,8 @@ import heatmapJson from './heatMapData.json' |
2 | 2 | import scatterJson from './scatter.json' |
3 | 3 | import mapJson from './map.json' |
4 | 4 | import tTreemapJson from './treemap.json' |
5 | +import sankeyJson from './sankey.json' | |
6 | +import graphDataJson from './graph.json' | |
5 | 7 | |
6 | 8 | export default { |
7 | 9 | // 单图表 |
... | ... | @@ -219,5 +221,19 @@ export default { |
219 | 221 | 'endArray|10': [{ name: '@name', N: '@integer(10, 100)', E: '@integer(10, 100)' }] |
220 | 222 | } |
221 | 223 | ] |
222 | - } | |
224 | + }, | |
225 | + // 桑基图 | |
226 | + fetchSankey: { | |
227 | + code: 0, | |
228 | + status: 200, | |
229 | + msg: '请求成功', | |
230 | + data: sankeyJson | |
231 | + }, | |
232 | + // 关系图 | |
233 | + graphData: { | |
234 | + code: 0, | |
235 | + status: 200, | |
236 | + msg: '请求成功', | |
237 | + data: graphDataJson | |
238 | + }, | |
223 | 239 | } | ... | ... |
src/assets/images/chart/charts/dial.png
0 → 100644
37.8 KB
src/assets/images/chart/charts/graph.png
0 → 100644
377 KB
src/assets/images/chart/charts/sankey.png
0 → 100644
39.7 KB
999 Bytes
983 Bytes
src/assets/images/chart/icons/icon.png
0 → 100644
7.9 KB
src/assets/images/chart/photos/upload.png
0 → 100644
3.42 KB
... | ... | @@ -35,7 +35,11 @@ import Person from './person.png' |
35 | 35 | |
36 | 36 | import { icon } from '@/plugins' |
37 | 37 | import { useUserStore } from '@/store/external/modules/user' |
38 | -const { ChatboxEllipsesIcon, PersonIcon, LogOutOutlineIcon, SettingsSharpIcon } = icon.ionicons5 | |
38 | +const { | |
39 | + PersonIcon, | |
40 | + LogOutOutlineIcon, | |
41 | + SettingsSharpIcon | |
42 | +} = icon.ionicons5 | |
39 | 43 | |
40 | 44 | const t = window['$t'] |
41 | 45 | ... | ... |
... | ... | @@ -257,9 +257,36 @@ |
257 | 257 | <n-switch v-model:value="legend.show" size="small"></n-switch> |
258 | 258 | </template> |
259 | 259 | <setting-item-box name="图例文字"> |
260 | - <setting-item> | |
260 | + <setting-item name="颜色"> | |
261 | 261 | <n-color-picker size="small" v-model:value="legend.textStyle.color"></n-color-picker> |
262 | 262 | </setting-item> |
263 | + <setting-item name="大小"> | |
264 | + <n-input-number v-model:value="legend.textStyle.fontSize" :min="1" size="small"></n-input-number> | |
265 | + </setting-item> | |
266 | + </setting-item-box> | |
267 | + <setting-item-box name="图例位置"> | |
268 | + <setting-item name="x轴"> | |
269 | + <n-select v-model:value="legend.x" size="small" :options="legendConfig.lengendX" /> | |
270 | + </setting-item> | |
271 | + <setting-item name="y轴"> | |
272 | + <n-select v-model:value="legend.y" size="small" :options="legendConfig.lengendY" /> | |
273 | + </setting-item> | |
274 | + </setting-item-box> | |
275 | + <setting-item-box name="图例信息"> | |
276 | + <setting-item name="方向"> | |
277 | + <n-select v-model:value="legend.orient" size="small" :options="legendConfig.orient" /> | |
278 | + </setting-item> | |
279 | + <setting-item name="形状"> | |
280 | + <n-select v-model:value="legend.icon" size="small" :options="legendConfig.shape" /> | |
281 | + </setting-item> | |
282 | + </setting-item-box> | |
283 | + <setting-item-box name="图例大小"> | |
284 | + <setting-item name="宽"> | |
285 | + <n-input-number v-model:value="legend.itemWidth" :min="1" size="small"></n-input-number> | |
286 | + </setting-item> | |
287 | + <setting-item name="高"> | |
288 | + <n-input-number v-model:value="legend.itemHeight" :min="1" size="small"></n-input-number> | |
289 | + </setting-item> | |
263 | 290 | </setting-item-box> |
264 | 291 | </collapse-item> |
265 | 292 | |
... | ... | @@ -309,9 +336,9 @@ |
309 | 336 | </template> |
310 | 337 | |
311 | 338 | <script setup lang="ts"> |
312 | -import { PropType, computed } from 'vue' | |
339 | +import { PropType, computed, watch } from 'vue' | |
313 | 340 | import { GlobalThemeJsonType } from '@/settings/chartThemes/index' |
314 | -import { axisConfig } from '@/packages/chartConfiguration/echarts/index' | |
341 | +import { axisConfig, legendConfig } from '@/packages/chartConfiguration/echarts/index' | |
315 | 342 | import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting' |
316 | 343 | import { icon } from '@/plugins' |
317 | 344 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
... | ... | @@ -360,4 +387,14 @@ const grid = computed(() => { |
360 | 387 | const visualMap = computed(() => { |
361 | 388 | return props.optionData.visualMap |
362 | 389 | }) |
390 | + | |
391 | +// 监听legend color颜色改变type = scroll的颜色 | |
392 | +watch(() => legend.value && legend.value.textStyle.color, (newVal) => { | |
393 | + if (legend.value && newVal) { | |
394 | + legend.value.pageTextStyle.color = newVal | |
395 | + } | |
396 | +}, { | |
397 | + immediate: true, | |
398 | + deep: true, | |
399 | +}) | |
363 | 400 | </script> | ... | ... |
1 | 1 | <template> |
2 | - <div class="go-Flipper" :class="[flipType, { go: isFlipping }]"> | |
2 | + <div class="go-flipper" :class="[flipType, { go: isFlipping }]"> | |
3 | 3 | <div class="digital front" :data-front="frontTextFromData"></div> |
4 | 4 | <div class="digital back" :data-back="backTextFromData"></div> |
5 | 5 | </div> |
6 | 6 | </template> |
7 | 7 | |
8 | 8 | <script lang="ts" setup> |
9 | -import { ref, PropType, watch } from 'vue' | |
10 | -import { FlipType } from './index' | |
9 | +import { ref, PropType, watch, nextTick } from 'vue' | |
10 | +import { FlipType } from './index' | |
11 | 11 | |
12 | 12 | const props = defineProps({ |
13 | 13 | flipType: { |
... | ... | @@ -43,6 +43,10 @@ const props = defineProps({ |
43 | 43 | backColor: { |
44 | 44 | type: String, |
45 | 45 | default: '#000000' |
46 | + }, | |
47 | + borderWidth: { | |
48 | + type: Number, | |
49 | + default: 2 | |
46 | 50 | } |
47 | 51 | }) |
48 | 52 | |
... | ... | @@ -50,19 +54,27 @@ const isFlipping = ref(false) |
50 | 54 | const frontTextFromData = ref(props.count || 0) |
51 | 55 | const backTextFromData = ref(props.count || 0) |
52 | 56 | |
57 | +let timeoutID: any = 0 | |
58 | + | |
53 | 59 | // 翻牌 |
54 | -const flip = (front: string | number, back: string | number) => { | |
60 | +const flip = async (front: string | number, back: string | number) => { | |
55 | 61 | // 如果处于翻转中,则不执行 |
56 | - if (isFlipping.value) return | |
62 | + if (isFlipping.value) { | |
63 | + isFlipping.value = false // 立即结束此次动画 | |
64 | + clearTimeout(timeoutID) // 清除上一个计时器任务 | |
65 | + await nextTick() | |
66 | + await flip(front, back) // 开始最后一次翻牌任务 | |
67 | + return | |
68 | + } | |
69 | + | |
57 | 70 | // 设置翻盘前后数据 |
58 | 71 | backTextFromData.value = back |
59 | 72 | frontTextFromData.value = front |
60 | - | |
61 | 73 | // 设置翻转状态为true |
62 | 74 | isFlipping.value = true |
63 | 75 | |
64 | 76 | // 翻牌结束的行为 |
65 | - setTimeout(() => { | |
77 | + timeoutID = setTimeout(() => { | |
66 | 78 | isFlipping.value = false // 设置翻转状态为false |
67 | 79 | frontTextFromData.value = back |
68 | 80 | }, props.duration) |
... | ... | @@ -86,6 +98,7 @@ $radius: v-bind('`${props.radius}px`'); |
86 | 98 | $width: v-bind('`${props.width}px`'); |
87 | 99 | $height: v-bind('`${props.height}px`'); |
88 | 100 | $perspective: v-bind('`${props.height * 2}px`'); |
101 | +$borderWidth: v-bind('`${props.borderWidth * 2}px`'); | |
89 | 102 | $speed: v-bind('`${props.duration / 1000}s`'); |
90 | 103 | $shadowColor: #000000; |
91 | 104 | $lineColor: #4a9ef8; |
... | ... | @@ -125,13 +138,12 @@ $lineColor: #4a9ef8; |
125 | 138 | } |
126 | 139 | // #endregion |
127 | 140 | |
128 | -.go-Flipper { | |
141 | +.go-flipper { | |
129 | 142 | display: inline-block; |
130 | 143 | position: relative; |
131 | 144 | width: $width; |
132 | 145 | height: $height; |
133 | 146 | line-height: $height; |
134 | - border: solid 1px $backColor; | |
135 | 147 | border-radius: $radius; |
136 | 148 | background: $frontColor; |
137 | 149 | font-size: $width; |
... | ... | @@ -139,6 +151,17 @@ $lineColor: #4a9ef8; |
139 | 151 | box-shadow: 0 0 6px rgba($color: $shadowColor, $alpha: 0.5); // 阴影部分 |
140 | 152 | text-align: center; |
141 | 153 | // font-family: 'Helvetica Neue'; |
154 | + &::after { | |
155 | + content: ''; | |
156 | + position: absolute; | |
157 | + z-index: 10; | |
158 | + left: 0; | |
159 | + top: 0; | |
160 | + right: 0; | |
161 | + bottom: 0; | |
162 | + box-shadow: inset 0 0 $borderWidth 0 $frontColor; // 内测阴影部分 | |
163 | + border-radius: $radius; | |
164 | + } | |
142 | 165 | |
143 | 166 | .digital:before, |
144 | 167 | .digital:after { |
... | ... | @@ -191,6 +214,8 @@ $lineColor: #4a9ef8; |
191 | 214 | } |
192 | 215 | &.down.go .back:after { |
193 | 216 | animation: backFlipDown $speed ease-in-out both; |
217 | + box-shadow: 0 2px $borderWidth 0 $frontColor; | |
218 | + backface-visibility: hidden; | |
194 | 219 | } |
195 | 220 | /*向上翻*/ |
196 | 221 | &.up .front:after { |
... | ... | @@ -213,6 +238,8 @@ $lineColor: #4a9ef8; |
213 | 238 | } |
214 | 239 | &.up.go .back:before { |
215 | 240 | animation: backFlipUp $speed ease-in-out both; |
241 | + box-shadow: 0 -2px $borderWidth 0 $frontColor; | |
242 | + backface-visibility: hidden; | |
216 | 243 | } |
217 | 244 | } |
218 | 245 | </style> | ... | ... |
... | ... | @@ -12,5 +12,7 @@ export enum StorageEnum { |
12 | 12 | // 工作台布局配置 |
13 | 13 | GO_CHART_LAYOUT_STORE = 'GO_CHART_LAYOUT', |
14 | 14 | // 工作台需要保存的数据 |
15 | - GO_CHART_STORAGE_LIST = 'GO_CHART_STORAGE_LIST' | |
15 | + GO_CHART_STORAGE_LIST = 'GO_CHART_STORAGE_LIST', | |
16 | + // 用户存储的图片媒体 | |
17 | + GO_USER_MEDIA_PHOTOS = 'GO_USER_MEDIA_PHOTOS' | |
16 | 18 | } | ... | ... |
... | ... | @@ -80,10 +80,11 @@ export const originUseChartDataFetch = ( |
80 | 80 | if (res) { |
81 | 81 | try { |
82 | 82 | const filter = targetComponent.filter |
83 | - echartsUpdateHandle(newFunctionHandle(res?.data, res, filter)) | |
83 | + const { data } = res | |
84 | + echartsUpdateHandle(newFunctionHandle(data, res, filter)) | |
84 | 85 | // 更新回调函数 |
85 | 86 | if (updateCallback) { |
86 | - updateCallback(newFunctionHandle(res?.data, res, filter)) | |
87 | + updateCallback(newFunctionHandle(data, res, filter)) | |
87 | 88 | } |
88 | 89 | } catch (error) { |
89 | 90 | console.error(error) | ... | ... |
1 | +export const legendConfig = { | |
2 | + // X轴位置 | |
3 | + lengendX: [ | |
4 | + { | |
5 | + label: '靠左', | |
6 | + value: 'left' | |
7 | + }, | |
8 | + { | |
9 | + label: '居中', | |
10 | + value: 'center' | |
11 | + }, | |
12 | + { | |
13 | + label: '靠右', | |
14 | + value: 'right' | |
15 | + } | |
16 | + ], | |
17 | + // y轴位置 | |
18 | + lengendY: [ | |
19 | + { | |
20 | + label: '靠上', | |
21 | + value: 'top' | |
22 | + }, | |
23 | + { | |
24 | + label: '居中', | |
25 | + value: 'center' | |
26 | + }, | |
27 | + { | |
28 | + label: '靠下', | |
29 | + value: 'bottom' | |
30 | + } | |
31 | + ], | |
32 | + // 排列方向 | |
33 | + orient: [ | |
34 | + { | |
35 | + label: '水平', | |
36 | + value: 'horizontal' | |
37 | + }, | |
38 | + { | |
39 | + label: '垂直', | |
40 | + value: 'vertical' | |
41 | + } | |
42 | + ], | |
43 | + // 形状 | |
44 | + shape: [ | |
45 | + { | |
46 | + label: '圆形', | |
47 | + value: 'circle' | |
48 | + }, | |
49 | + { | |
50 | + label: '方形', | |
51 | + value: 'rect' | |
52 | + }, | |
53 | + { | |
54 | + label: '圆角方形', | |
55 | + value: 'roundRect' | |
56 | + }, | |
57 | + { | |
58 | + label: '三角形', | |
59 | + value: 'triangle' | |
60 | + }, | |
61 | + { | |
62 | + label: '钢笔形', | |
63 | + value: 'pin' | |
64 | + }, | |
65 | + { | |
66 | + label: '箭头形', | |
67 | + value: 'arrow' | |
68 | + } | |
69 | + ] | |
70 | +} | ... | ... |
1 | 1 | <template> |
2 | - <v-chart | |
3 | - ref="vChartRef" | |
4 | - :init-options="initOptions" | |
5 | - :theme="themeColor" | |
6 | - :option="option" | |
7 | - :manual-update="isPreview()" | |
2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" | |
8 | 3 | :update-options="{ |
9 | 4 | replaceMerge: replaceMergeArr |
10 | - }" | |
11 | - autoresize | |
12 | - ></v-chart> | |
5 | + }" autoresize></v-chart> | |
13 | 6 | </template> |
14 | 7 | |
15 | 8 | <script setup lang="ts"> |
... | ... | @@ -27,6 +20,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore |
27 | 20 | import { isPreview } from '@/utils' |
28 | 21 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' |
29 | 22 | import isObject from 'lodash/isObject' |
23 | +import cloneDeep from 'lodash/cloneDeep' | |
30 | 24 | |
31 | 25 | const props = defineProps({ |
32 | 26 | themeSetting: { |
... | ... | @@ -61,11 +55,23 @@ watch( |
61 | 55 | if (!isObject(newData) || !('dimensions' in newData)) return |
62 | 56 | if (Array.isArray(newData?.dimensions)) { |
63 | 57 | const seriesArr = [] |
64 | - for (let i = 0; i < newData.dimensions.length - 1; i++) { | |
65 | - seriesArr.push(seriesItem) | |
58 | + // 对oldData进行判断,防止传入错误数据之后对旧维度判断产生干扰 | |
59 | + // 此处计算的是dimensions的Y轴维度,若是dimensions.length为0或1,则默认为1,排除X轴维度干扰 | |
60 | + const oldDimensions = Array.isArray(oldData?.dimensions)&&oldData.dimensions.length >= 1 ? oldData.dimensions.length : 1; | |
61 | + const newDimensions = newData.dimensions.length >= 1 ? newData.dimensions.length : 1; | |
62 | + const dimensionsGap = newDimensions - oldDimensions; | |
63 | + if (dimensionsGap < 0) { | |
64 | + props.chartConfig.option.series.splice(newDimensions - 1) | |
65 | + } else if (dimensionsGap > 0) { | |
66 | + if(!oldData || !oldData?.dimensions || !Array.isArray(oldData?.dimensions) || !oldData?.dimensions.length ) { | |
67 | + props.chartConfig.option.series=[] | |
68 | + } | |
69 | + for (let i = 0; i < dimensionsGap; i++) { | |
70 | + seriesArr.push(cloneDeep(seriesItem)) | |
71 | + } | |
72 | + props.chartConfig.option.series.push(...seriesArr) | |
66 | 73 | } |
67 | 74 | replaceMergeArr.value = ['series'] |
68 | - props.chartConfig.option.series = seriesArr | |
69 | 75 | nextTick(() => { |
70 | 76 | replaceMergeArr.value = [] |
71 | 77 | }) | ... | ... |
... | ... | @@ -26,6 +26,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore |
26 | 26 | import { isPreview } from '@/utils' |
27 | 27 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' |
28 | 28 | import isObject from 'lodash/isObject' |
29 | +import cloneDeep from 'lodash/cloneDeep' | |
29 | 30 | |
30 | 31 | const props = defineProps({ |
31 | 32 | themeSetting: { |
... | ... | @@ -61,7 +62,7 @@ watch( |
61 | 62 | if (Array.isArray(newData?.dimensions)) { |
62 | 63 | const seriesArr = [] |
63 | 64 | for (let i = 0; i < newData.dimensions.length - 1; i++) { |
64 | - seriesArr.push(seriesItem) | |
65 | + seriesArr.push(cloneDeep(seriesItem)) | |
65 | 66 | } |
66 | 67 | replaceMergeArr.value = ['series'] |
67 | 68 | props.chartConfig.option.series = seriesArr | ... | ... |
... | ... | @@ -8,7 +8,7 @@ import AMapLoader from '@amap/amap-jsapi-loader' |
8 | 8 | import { CreateComponentType } from '@/packages/index.d' |
9 | 9 | import { useChartDataFetch } from '@/hooks' |
10 | 10 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
11 | -import { MarkerEnum } from './config' | |
11 | +import { MarkerEnum, ThemeEnum } from './config' | |
12 | 12 | import { isArray } from '@/utils' |
13 | 13 | |
14 | 14 | const props = defineProps({ |
... | ... | @@ -51,7 +51,6 @@ const initMap = (newData: any) => { |
51 | 51 | resizeEnable: true, |
52 | 52 | zoom: amapZindex.value, // 地图显示的缩放级别 |
53 | 53 | center: [amapLon.value, amapLat.value], |
54 | - mapStyle: `amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`, //自定义地图的显示样式 | |
55 | 54 | lang: lang.value, |
56 | 55 | features: features.value, |
57 | 56 | pitch: pitch.value, // 地图俯仰角度,有效范围 0 度- 83 度 |
... | ... | @@ -60,6 +59,14 @@ const initMap = (newData: any) => { |
60 | 59 | willReadFrequently: true |
61 | 60 | }) |
62 | 61 | dataHandle(props.chartConfig.option.dataset) |
62 | + let satellite = new AMap.TileLayer.Satellite() | |
63 | + let roadNet = new AMap.TileLayer.RoadNet() | |
64 | + if (newData.amapStyleKey === ThemeEnum.WEIXIN) { | |
65 | + mapIns.add([satellite, roadNet]) | |
66 | + } else { | |
67 | + mapIns.remove([satellite, roadNet]) | |
68 | + mapIns.setMapStyle(`amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`) | |
69 | + } | |
63 | 70 | }) |
64 | 71 | .catch(e => {}) |
65 | 72 | } | ... | ... |
1 | +import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public' | |
2 | +import { DialConfig } from './index' | |
3 | +import { CreateComponentType } from '@/packages/index.d' | |
4 | +import cloneDeep from 'lodash/cloneDeep' | |
5 | + | |
6 | +export const includes = [] | |
7 | +const option = { | |
8 | + backgroundColor: '#0E1327', | |
9 | + dataset:70, | |
10 | + series: [{ | |
11 | + type: "gauge", | |
12 | + data: [{ | |
13 | + value: 70, | |
14 | + itemStyle: { // 指针样式 | |
15 | + color: '#2AF4FF' | |
16 | + } | |
17 | + }], | |
18 | + min: 0, //最小刻度 | |
19 | + max: 100, //最大刻度 | |
20 | + splitNumber: 10, //刻度数量 | |
21 | + center: ['50%', '55%'], | |
22 | + radius: '80%', | |
23 | + axisLine: { | |
24 | + lineStyle: { | |
25 | + color: [ | |
26 | + [0, 'rgba(0,212,230,0.5)'], | |
27 | + [1, 'rgba(28,128,245,0)'] | |
28 | + ], | |
29 | + width: 170 | |
30 | + } | |
31 | + }, | |
32 | + axisLabel: { // 文字样式 | |
33 | + color: '#eee', | |
34 | + fontSize: 14, | |
35 | + }, | |
36 | + axisTick: { | |
37 | + show: false, | |
38 | + }, | |
39 | + splitLine: { | |
40 | + show: false, | |
41 | + }, | |
42 | + detail: { | |
43 | + show: false, | |
44 | + }, | |
45 | + pointer: { | |
46 | + length: '80%', | |
47 | + width: 4 | |
48 | + }, | |
49 | + animationDuration: 2000, | |
50 | + }, | |
51 | + { | |
52 | + name: '外部刻度', | |
53 | + type: 'gauge', | |
54 | + center: ['50%', '55%'], | |
55 | + radius: '90%', | |
56 | + axisLine: { | |
57 | + show: true, | |
58 | + lineStyle: { | |
59 | + width: 25, | |
60 | + color: [ // 表盘外部颜色 | |
61 | + [0, '#1369E380'], | |
62 | + [1, '#1369E380'] | |
63 | + ], | |
64 | + } | |
65 | + }, | |
66 | + axisLabel: { | |
67 | + show:false, | |
68 | + }, | |
69 | + axisTick: { | |
70 | + splitNumber: 5, | |
71 | + lineStyle: { //刻度颜色 | |
72 | + color: '#42E5FB', | |
73 | + width: 2, | |
74 | + }, | |
75 | + }, | |
76 | + splitLine: { | |
77 | + length: 15, | |
78 | + lineStyle: { | |
79 | + color: '#42E5FB', | |
80 | + } | |
81 | + }, | |
82 | + }, | |
83 | + ] | |
84 | +}; | |
85 | + | |
86 | +export default class Config extends PublicConfigClass implements CreateComponentType { | |
87 | + public key: string = DialConfig.key | |
88 | + public chartConfig = cloneDeep(DialConfig) | |
89 | + // 图表配置项 | |
90 | + public option = echartOptionProfixHandle(option, includes) | |
91 | +} | ... | ... |
1 | +<template> | |
2 | + <!-- 遍历 seriesList --> | |
3 | + <CollapseItem :name="`圆环`" :expanded="true"> | |
4 | + <SettingItemBox name="数据"> | |
5 | + <SettingItem name="数值"> | |
6 | + <n-input-number v-model:value="config.dataset" :min="dialConfig.min" :max="dialConfig.max" :step="1" size="small" placeholder="数值"> | |
7 | + </n-input-number> | |
8 | + </SettingItem> | |
9 | + </SettingItemBox> | |
10 | + <!-- Echarts 全局设置 --> | |
11 | + <!-- 表盘刻度字体 --> | |
12 | + <SettingItemBox name="字体"> | |
13 | + <SettingItem name="颜色"> | |
14 | + <n-color-picker size="small" :modes="['hex']" v-model:value="dialConfig.axisLabel.color"></n-color-picker> | |
15 | + </SettingItem> | |
16 | + <SettingItem name="字体大小"> | |
17 | + <n-input-number | |
18 | + v-model:value="dialConfig.axisLabel.fontSize" | |
19 | + :min="0" | |
20 | + :step="1" | |
21 | + size="small" | |
22 | + placeholder="字体大小" | |
23 | + > | |
24 | + </n-input-number> | |
25 | + </SettingItem> | |
26 | + </SettingItemBox> | |
27 | + <!-- 表盘 --> | |
28 | + <SettingItemBox name="表盘外部"> | |
29 | + <SettingItem name="颜色" > | |
30 | + <n-color-picker size="small" :modes="['hex']" v-model:value="config.series[1].axisLine.lineStyle.color[1][1]"></n-color-picker> | |
31 | + </SettingItem> | |
32 | + </SettingItemBox> | |
33 | + <!-- 指针 --> | |
34 | + <SettingItemBox name="指针"> | |
35 | + <SettingItem name="颜色" > | |
36 | + <n-color-picker size="small" :modes="['hex']" v-model:value="dialConfig.data[0].itemStyle.color"></n-color-picker> | |
37 | + </SettingItem> | |
38 | + <SettingItem name="宽度"> | |
39 | + <n-input-number v-model:value="dialConfig.pointer.width" :min="0" :step="1" size="small" placeholder="数值"> | |
40 | + </n-input-number> | |
41 | + </SettingItem> | |
42 | + </SettingItemBox> | |
43 | + <SettingItemBox name="刻度"> | |
44 | + <SettingItem name="最小值"> | |
45 | + <n-input-number v-model:value="dialConfig.min" :min="0" :step="1" size="small" placeholder="数值"> | |
46 | + </n-input-number> | |
47 | + </SettingItem> | |
48 | + <SettingItem name="最大值"> | |
49 | + <n-input-number v-model:value="dialConfig.max" :min="0" :step="1" size="small" placeholder="数值"> | |
50 | + </n-input-number> | |
51 | + </SettingItem> | |
52 | + <SettingItem name="颜色" > | |
53 | + <n-color-picker size="small" :modes="['hex']" v-model:value="config.series[1].axisTick.lineStyle.color" @update:value="updateClick"></n-color-picker> | |
54 | + </SettingItem> | |
55 | + </SettingItemBox> | |
56 | + | |
57 | + </CollapseItem> | |
58 | + </template> | |
59 | + | |
60 | + <script setup lang="ts"> | |
61 | + import { PropType, computed } from 'vue' | |
62 | + import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | |
63 | + import { GlobalThemeJsonType } from '@/settings/chartThemes' | |
64 | + | |
65 | + const props = defineProps({ | |
66 | + optionData: { | |
67 | + type: Object as PropType<GlobalThemeJsonType>, | |
68 | + required: true | |
69 | + } | |
70 | + }) | |
71 | + | |
72 | + const config = computed(() => { | |
73 | + return props.optionData | |
74 | + }) | |
75 | + | |
76 | + const dialConfig = computed(() => { | |
77 | + return props.optionData.series[0] | |
78 | + }) | |
79 | + | |
80 | + const updateClick = (val: any) => { | |
81 | + props.optionData.series[1].splitLine.lineStyle.color=val | |
82 | + } | |
83 | + </script> | |
84 | + | |
\ No newline at end of file | ... | ... |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | |
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | |
3 | + | |
4 | +export const DialConfig: ConfigType = { | |
5 | + key: 'Dial', | |
6 | + chartKey: 'VDial', | |
7 | + conKey: 'VCDial', | |
8 | + title: '表盘', | |
9 | + category: ChatCategoryEnum.MORE, | |
10 | + categoryName: ChatCategoryEnumName.MORE, | |
11 | + package: PackagesCategoryEnum.CHARTS, | |
12 | + chartFrame: ChartFrameEnum.COMMON, | |
13 | + image:'dial.png' | |
14 | +} | ... | ... |
1 | +<template> | |
2 | + <v-chart :theme="themeColor" :init-options="initOptions" :option="option.value" autoresize> </v-chart> | |
3 | +</template> | |
4 | + | |
5 | +<script setup lang="ts"> | |
6 | +import { PropType, reactive, watch } from 'vue' | |
7 | +import VChart from 'vue-echarts' | |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | |
9 | +import { use } from 'echarts/core' | |
10 | +import { CanvasRenderer } from 'echarts/renderers' | |
11 | +import { PieChart } from 'echarts/charts' | |
12 | +import { mergeTheme } from '@/packages/public/chart' | |
13 | +import config, { includes } from './config' | |
14 | +import { useChartDataFetch } from '@/hooks' | |
15 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | |
16 | +import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent, TitleComponent } from 'echarts/components' | |
17 | + | |
18 | +const props = defineProps({ | |
19 | + themeSetting: { | |
20 | + type: Object, | |
21 | + required: true | |
22 | + }, | |
23 | + themeColor: { | |
24 | + type: Object, | |
25 | + required: true | |
26 | + }, | |
27 | + chartConfig: { | |
28 | + type: Object as PropType<config>, | |
29 | + required: true | |
30 | + } | |
31 | +}) | |
32 | + | |
33 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | |
34 | + | |
35 | +use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent, TitleComponent]) | |
36 | + | |
37 | +const option = reactive({ | |
38 | + value: {} | |
39 | +}) | |
40 | + | |
41 | +const dataHandle = (newData: any) => { | |
42 | + let config = props.chartConfig.option | |
43 | + config.series[0].data[0].value = newData | |
44 | + option.value = mergeTheme(props.chartConfig.option, props.themeSetting, includes) | |
45 | + option.value = props.chartConfig.option | |
46 | +} | |
47 | + | |
48 | +// 配置时 | |
49 | +watch( | |
50 | + () => props.chartConfig.option.dataset, | |
51 | + newData => { | |
52 | + try { | |
53 | + dataHandle(newData) | |
54 | + } catch (error) { | |
55 | + console.log(error) | |
56 | + } | |
57 | + }, | |
58 | + { | |
59 | + immediate: true, | |
60 | + deep: false | |
61 | + } | |
62 | +) | |
63 | + | |
64 | +// 预览时 | |
65 | +useChartDataFetch(props.chartConfig, useChartEditStore, (resData: number) => { | |
66 | + // @ts-ignore | |
67 | + option.value.series[0].data[0].value = resData | |
68 | +}) | |
69 | +</script> | ... | ... |
1 | +import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public' | |
2 | +import { GraphConfig } from './index' | |
3 | +import { CreateComponentType } from '@/packages/index.d' | |
4 | +import cloneDeep from 'lodash/cloneDeep' | |
5 | +import dataJson from './data.json' | |
6 | + | |
7 | +export const includes = [] | |
8 | + | |
9 | +// 关系图布局 | |
10 | +export const GraphLayout = [ | |
11 | + { label: '无', value: 'none' }, | |
12 | + { label: '环形', value: 'circular' } | |
13 | +] | |
14 | + | |
15 | +// 标签开关 | |
16 | +export const LabelSwitch = [ | |
17 | + { label: '开启', value: 1 }, | |
18 | + { label: '关闭', value: 0 } | |
19 | +] | |
20 | + | |
21 | +// 标签位置 | |
22 | +export const LabelPosition = [ | |
23 | + { label: '左侧', value: 'left' }, | |
24 | + { label: '右侧', value: 'right' }, | |
25 | + { label: '顶部', value: 'top' }, | |
26 | + { label: '底部', value: 'bottom' }, | |
27 | + { label: '内部', value: 'inside' }, | |
28 | +] | |
29 | + | |
30 | +export const option = { | |
31 | + dataset: { ...dataJson }, | |
32 | + tooltip: {}, | |
33 | + legend:{ | |
34 | + show:true, | |
35 | + textStyle:{ | |
36 | + color:"#eee", | |
37 | + fontSize: 14 , | |
38 | + }, | |
39 | + data: dataJson.categories.map(function (a) { | |
40 | + return a.name; | |
41 | + }) | |
42 | + }, | |
43 | + series: [ | |
44 | + { | |
45 | + type: 'graph', | |
46 | + layout: 'none', // none circular环形布局 | |
47 | + data: dataJson.nodes, | |
48 | + links: dataJson.links, | |
49 | + categories: dataJson.categories, | |
50 | + label: { // 标签 | |
51 | + show: 1, | |
52 | + position: 'right', | |
53 | + formatter: '{b}' | |
54 | + }, | |
55 | + labelLayout: { | |
56 | + hideOverlap: true | |
57 | + }, | |
58 | + lineStyle: { | |
59 | + color: 'source', // 线条颜色 | |
60 | + curveness: 0.2 // 线条卷曲程度 | |
61 | + } | |
62 | + } | |
63 | + ] | |
64 | + }; | |
65 | + | |
66 | +export default class Config extends PublicConfigClass implements CreateComponentType { | |
67 | + public key = GraphConfig.key | |
68 | + public chartConfig = cloneDeep(GraphConfig) | |
69 | + // 图表配置项 | |
70 | + public option = echartOptionProfixHandle(option, includes) | |
71 | +} | ... | ... |
1 | +<template> | |
2 | + <div> | |
3 | + <CollapseItem name="关系图" :expanded="true"> | |
4 | + <SettingItemBox name="样式"> | |
5 | + <setting-item name="布局"> | |
6 | + <n-select v-model:value="graphConfig.layout" :options="GraphLayout" size="small" /> | |
7 | + </setting-item> | |
8 | + </SettingItemBox> | |
9 | + <SettingItemBox name="标签"> | |
10 | + <setting-item name="展示"> | |
11 | + <n-select v-model:value="graphConfig.label.show" :options="LabelSwitch" size="small" /> | |
12 | + </setting-item> | |
13 | + <setting-item name="位置"> | |
14 | + <n-select v-model:value="graphConfig.label.position" :options="LabelPosition" size="small" /> | |
15 | + </setting-item> | |
16 | + </SettingItemBox> | |
17 | + <SettingItemBox name="线条"> | |
18 | + <SettingItem name="弧线"> | |
19 | + <!-- 需要输入两位的小数才会变化 --> | |
20 | + <n-input-number | |
21 | + v-model:value="optionData.series[0].lineStyle.curveness" | |
22 | + :min="0" | |
23 | + :step="0.01" | |
24 | + placeholder="弯曲程度" | |
25 | + size="small" | |
26 | + ></n-input-number> | |
27 | + </SettingItem> | |
28 | + </SettingItemBox> | |
29 | + <SettingItemBox name="图例"> | |
30 | + <SettingItem name="颜色"> | |
31 | + <n-color-picker | |
32 | + size="small" | |
33 | + :modes="['hex']" | |
34 | + v-model:value="optionData.legend.textStyle.color" | |
35 | + ></n-color-picker> | |
36 | + </SettingItem> | |
37 | + <SettingItem name="文本"> | |
38 | + <n-input-number v-model:value="optionData.legend.textStyle.fontSize" :min="0" :step="1" size="small" placeholder="文字大小"> | |
39 | + </n-input-number> | |
40 | + </SettingItem> | |
41 | + </SettingItemBox> | |
42 | + </CollapseItem> | |
43 | + </div> | |
44 | +</template> | |
45 | + | |
46 | +<script setup lang="ts"> | |
47 | +import { PropType, computed } from 'vue' | |
48 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | |
49 | +import { option, GraphLayout, LabelSwitch, LabelPosition } from './config' | |
50 | +import { GlobalThemeJsonType } from '@/settings/chartThemes/index' | |
51 | + | |
52 | +const props = defineProps({ | |
53 | + optionData: { | |
54 | + type: Object as PropType<typeof option & GlobalThemeJsonType>, | |
55 | + required: true | |
56 | + } | |
57 | +}) | |
58 | + | |
59 | +const graphConfig = computed<typeof option.series[0]>(() => { | |
60 | + return props.optionData.series[0] | |
61 | +}) | |
62 | +</script> | ... | ... |
1 | +{ | |
2 | + "nodes": [ | |
3 | + { | |
4 | + "id": "0", | |
5 | + "name": "Myriel", | |
6 | + "symbolSize": 19.12381, | |
7 | + "x": -266.82776, | |
8 | + "y": 299.6904, | |
9 | + "value": 28.685715, | |
10 | + "category": 0 | |
11 | + }, | |
12 | + { | |
13 | + "id": "1", | |
14 | + "name": "Napoleon", | |
15 | + "symbolSize": 2.6666666666666665, | |
16 | + "x": -418.08344, | |
17 | + "y": 446.8853, | |
18 | + "value": 4, | |
19 | + "category": 0 | |
20 | + }, | |
21 | + { | |
22 | + "id": "2", | |
23 | + "name": "MlleBaptistine", | |
24 | + "symbolSize": 6.323809333333333, | |
25 | + "x": -212.76357, | |
26 | + "y": 245.29176, | |
27 | + "value": 9.485714, | |
28 | + "category": 1 | |
29 | + }, | |
30 | + { | |
31 | + "id": "3", | |
32 | + "name": "MmeMagloire", | |
33 | + "symbolSize": 6.323809333333333, | |
34 | + "x": -242.82404, | |
35 | + "y": 235.26283, | |
36 | + "value": 9.485714, | |
37 | + "category": 1 | |
38 | + }, | |
39 | + { | |
40 | + "id": "4", | |
41 | + "name": "CountessDeLo", | |
42 | + "symbolSize": 2.6666666666666665, | |
43 | + "x": -379.30386, | |
44 | + "y": 429.06424, | |
45 | + "value": 4, | |
46 | + "category": 0 | |
47 | + }, | |
48 | + { | |
49 | + "id": "5", | |
50 | + "name": "Geborand", | |
51 | + "symbolSize": 2.6666666666666665, | |
52 | + "x": -417.26337, | |
53 | + "y": 406.03506, | |
54 | + "value": 4, | |
55 | + "category": 0 | |
56 | + }, | |
57 | + { | |
58 | + "id": "6", | |
59 | + "name": "Champtercier", | |
60 | + "symbolSize": 2.6666666666666665, | |
61 | + "x": -332.6012, | |
62 | + "y": 485.16974, | |
63 | + "value": 4, | |
64 | + "category": 0 | |
65 | + }, | |
66 | + { | |
67 | + "id": "7", | |
68 | + "name": "Cravatte", | |
69 | + "symbolSize": 2.6666666666666665, | |
70 | + "x": -382.69568, | |
71 | + "y": 475.09113, | |
72 | + "value": 4, | |
73 | + "category": 0 | |
74 | + }, | |
75 | + { | |
76 | + "id": "8", | |
77 | + "name": "Count", | |
78 | + "symbolSize": 2.6666666666666665, | |
79 | + "x": -320.384, | |
80 | + "y": 387.17325, | |
81 | + "value": 4, | |
82 | + "category": 0 | |
83 | + }, | |
84 | + { | |
85 | + "id": "9", | |
86 | + "name": "OldMan", | |
87 | + "symbolSize": 2.6666666666666665, | |
88 | + "x": -344.39832, | |
89 | + "y": 451.16772, | |
90 | + "value": 4, | |
91 | + "category": 0 | |
92 | + }, | |
93 | + { | |
94 | + "id": "10", | |
95 | + "name": "Labarre", | |
96 | + "symbolSize": 2.6666666666666665, | |
97 | + "x": -89.34107, | |
98 | + "y": 234.56128, | |
99 | + "value": 4, | |
100 | + "category": 1 | |
101 | + }, | |
102 | + { | |
103 | + "id": "11", | |
104 | + "name": "Valjean", | |
105 | + "symbolSize": 66.66666666666667, | |
106 | + "x": -87.93029, | |
107 | + "y": -6.8120565, | |
108 | + "value": 100, | |
109 | + "category": 1 | |
110 | + }, | |
111 | + { | |
112 | + "id": "12", | |
113 | + "name": "Marguerite", | |
114 | + "symbolSize": 4.495239333333333, | |
115 | + "x": -339.77908, | |
116 | + "y": -184.69139, | |
117 | + "value": 6.742859, | |
118 | + "category": 1 | |
119 | + }, | |
120 | + { | |
121 | + "id": "13", | |
122 | + "name": "MmeDeR", | |
123 | + "symbolSize": 2.6666666666666665, | |
124 | + "x": -194.31313, | |
125 | + "y": 178.55301, | |
126 | + "value": 4, | |
127 | + "category": 1 | |
128 | + }, | |
129 | + { | |
130 | + "id": "14", | |
131 | + "name": "Isabeau", | |
132 | + "symbolSize": 2.6666666666666665, | |
133 | + "x": -158.05168, | |
134 | + "y": 201.99768, | |
135 | + "value": 4, | |
136 | + "category": 1 | |
137 | + }, | |
138 | + { | |
139 | + "id": "15", | |
140 | + "name": "Gervais", | |
141 | + "symbolSize": 2.6666666666666665, | |
142 | + "x": -127.701546, | |
143 | + "y": 242.55057, | |
144 | + "value": 4, | |
145 | + "category": 1 | |
146 | + }, | |
147 | + { | |
148 | + "id": "16", | |
149 | + "name": "Tholomyes", | |
150 | + "symbolSize": 17.295237333333333, | |
151 | + "x": -385.2226, | |
152 | + "y": -393.5572, | |
153 | + "value": 25.942856, | |
154 | + "category": 2 | |
155 | + }, | |
156 | + { | |
157 | + "id": "17", | |
158 | + "name": "Listolier", | |
159 | + "symbolSize": 13.638097333333334, | |
160 | + "x": -516.55884, | |
161 | + "y": -393.98975, | |
162 | + "value": 20.457146, | |
163 | + "category": 2 | |
164 | + }, | |
165 | + { | |
166 | + "id": "18", | |
167 | + "name": "Fameuil", | |
168 | + "symbolSize": 13.638097333333334, | |
169 | + "x": -464.79382, | |
170 | + "y": -493.57944, | |
171 | + "value": 20.457146, | |
172 | + "category": 2 | |
173 | + }, | |
174 | + { | |
175 | + "id": "19", | |
176 | + "name": "Blacheville", | |
177 | + "symbolSize": 13.638097333333334, | |
178 | + "x": -515.1624, | |
179 | + "y": -456.9891, | |
180 | + "value": 20.457146, | |
181 | + "category": 2 | |
182 | + }, | |
183 | + { | |
184 | + "id": "20", | |
185 | + "name": "Favourite", | |
186 | + "symbolSize": 13.638097333333334, | |
187 | + "x": -408.12122, | |
188 | + "y": -464.5048, | |
189 | + "value": 20.457146, | |
190 | + "category": 2 | |
191 | + }, | |
192 | + { | |
193 | + "id": "21", | |
194 | + "name": "Dahlia", | |
195 | + "symbolSize": 13.638097333333334, | |
196 | + "x": -456.44113, | |
197 | + "y": -425.13303, | |
198 | + "value": 20.457146, | |
199 | + "category": 2 | |
200 | + }, | |
201 | + { | |
202 | + "id": "22", | |
203 | + "name": "Zephine", | |
204 | + "symbolSize": 13.638097333333334, | |
205 | + "x": -459.1107, | |
206 | + "y": -362.5133, | |
207 | + "value": 20.457146, | |
208 | + "category": 2 | |
209 | + }, | |
210 | + { | |
211 | + "id": "23", | |
212 | + "name": "Fantine", | |
213 | + "symbolSize": 28.266666666666666, | |
214 | + "x": -313.42786, | |
215 | + "y": -289.44803, | |
216 | + "value": 42.4, | |
217 | + "category": 2 | |
218 | + }, | |
219 | + { | |
220 | + "id": "24", | |
221 | + "name": "MmeThenardier", | |
222 | + "symbolSize": 20.95238266666667, | |
223 | + "x": 4.6313396, | |
224 | + "y": -273.8517, | |
225 | + "value": 31.428574, | |
226 | + "category": 7 | |
227 | + }, | |
228 | + { | |
229 | + "id": "25", | |
230 | + "name": "Thenardier", | |
231 | + "symbolSize": 30.095235333333335, | |
232 | + "x": 82.80825, | |
233 | + "y": -203.1144, | |
234 | + "value": 45.142853, | |
235 | + "category": 7 | |
236 | + }, | |
237 | + { | |
238 | + "id": "26", | |
239 | + "name": "Cosette", | |
240 | + "symbolSize": 20.95238266666667, | |
241 | + "x": 78.64646, | |
242 | + "y": -31.512747, | |
243 | + "value": 31.428574, | |
244 | + "category": 6 | |
245 | + }, | |
246 | + { | |
247 | + "id": "27", | |
248 | + "name": "Javert", | |
249 | + "symbolSize": 31.923806666666668, | |
250 | + "x": -81.46074, | |
251 | + "y": -204.20204, | |
252 | + "value": 47.88571, | |
253 | + "category": 7 | |
254 | + }, | |
255 | + { | |
256 | + "id": "28", | |
257 | + "name": "Fauchelevent", | |
258 | + "symbolSize": 8.152382000000001, | |
259 | + "x": -225.73984, | |
260 | + "y": 82.41631, | |
261 | + "value": 12.228573, | |
262 | + "category": 4 | |
263 | + }, | |
264 | + { | |
265 | + "id": "29", | |
266 | + "name": "Bamatabois", | |
267 | + "symbolSize": 15.466666666666667, | |
268 | + "x": -385.6842, | |
269 | + "y": -20.206686, | |
270 | + "value": 23.2, | |
271 | + "category": 3 | |
272 | + }, | |
273 | + { | |
274 | + "id": "30", | |
275 | + "name": "Perpetue", | |
276 | + "symbolSize": 4.495239333333333, | |
277 | + "x": -403.92447, | |
278 | + "y": -197.69823, | |
279 | + "value": 6.742859, | |
280 | + "category": 2 | |
281 | + }, | |
282 | + { | |
283 | + "id": "31", | |
284 | + "name": "Simplice", | |
285 | + "symbolSize": 8.152382000000001, | |
286 | + "x": -281.4253, | |
287 | + "y": -158.45137, | |
288 | + "value": 12.228573, | |
289 | + "category": 2 | |
290 | + }, | |
291 | + { | |
292 | + "id": "32", | |
293 | + "name": "Scaufflaire", | |
294 | + "symbolSize": 2.6666666666666665, | |
295 | + "x": -122.41348, | |
296 | + "y": 210.37503, | |
297 | + "value": 4, | |
298 | + "category": 1 | |
299 | + }, | |
300 | + { | |
301 | + "id": "33", | |
302 | + "name": "Woman1", | |
303 | + "symbolSize": 4.495239333333333, | |
304 | + "x": -234.6001, | |
305 | + "y": -113.15067, | |
306 | + "value": 6.742859, | |
307 | + "category": 1 | |
308 | + }, | |
309 | + { | |
310 | + "id": "34", | |
311 | + "name": "Judge", | |
312 | + "symbolSize": 11.809524666666666, | |
313 | + "x": -387.84915, | |
314 | + "y": 58.7059, | |
315 | + "value": 17.714287, | |
316 | + "category": 3 | |
317 | + }, | |
318 | + { | |
319 | + "id": "35", | |
320 | + "name": "Champmathieu", | |
321 | + "symbolSize": 11.809524666666666, | |
322 | + "x": -338.2307, | |
323 | + "y": 87.48405, | |
324 | + "value": 17.714287, | |
325 | + "category": 3 | |
326 | + }, | |
327 | + { | |
328 | + "id": "36", | |
329 | + "name": "Brevet", | |
330 | + "symbolSize": 11.809524666666666, | |
331 | + "x": -453.26874, | |
332 | + "y": 58.94648, | |
333 | + "value": 17.714287, | |
334 | + "category": 3 | |
335 | + }, | |
336 | + { | |
337 | + "id": "37", | |
338 | + "name": "Chenildieu", | |
339 | + "symbolSize": 11.809524666666666, | |
340 | + "x": -386.44904, | |
341 | + "y": 140.05937, | |
342 | + "value": 17.714287, | |
343 | + "category": 3 | |
344 | + }, | |
345 | + { | |
346 | + "id": "38", | |
347 | + "name": "Cochepaille", | |
348 | + "symbolSize": 11.809524666666666, | |
349 | + "x": -446.7876, | |
350 | + "y": 123.38005, | |
351 | + "value": 17.714287, | |
352 | + "category": 3 | |
353 | + }, | |
354 | + { | |
355 | + "id": "39", | |
356 | + "name": "Pontmercy", | |
357 | + "symbolSize": 6.323809333333333, | |
358 | + "x": 336.49738, | |
359 | + "y": -269.55914, | |
360 | + "value": 9.485714, | |
361 | + "category": 6 | |
362 | + }, | |
363 | + { | |
364 | + "id": "40", | |
365 | + "name": "Boulatruelle", | |
366 | + "symbolSize": 2.6666666666666665, | |
367 | + "x": 29.187843, | |
368 | + "y": -460.13132, | |
369 | + "value": 4, | |
370 | + "category": 7 | |
371 | + }, | |
372 | + { | |
373 | + "id": "41", | |
374 | + "name": "Eponine", | |
375 | + "symbolSize": 20.95238266666667, | |
376 | + "x": 238.36697, | |
377 | + "y": -210.00926, | |
378 | + "value": 31.428574, | |
379 | + "category": 7 | |
380 | + }, | |
381 | + { | |
382 | + "id": "42", | |
383 | + "name": "Anzelma", | |
384 | + "symbolSize": 6.323809333333333, | |
385 | + "x": 189.69513, | |
386 | + "y": -346.50662, | |
387 | + "value": 9.485714, | |
388 | + "category": 7 | |
389 | + }, | |
390 | + { | |
391 | + "id": "43", | |
392 | + "name": "Woman2", | |
393 | + "symbolSize": 6.323809333333333, | |
394 | + "x": -187.00418, | |
395 | + "y": -145.02663, | |
396 | + "value": 9.485714, | |
397 | + "category": 6 | |
398 | + }, | |
399 | + { | |
400 | + "id": "44", | |
401 | + "name": "MotherInnocent", | |
402 | + "symbolSize": 4.495239333333333, | |
403 | + "x": -252.99521, | |
404 | + "y": 129.87549, | |
405 | + "value": 6.742859, | |
406 | + "category": 4 | |
407 | + }, | |
408 | + { | |
409 | + "id": "45", | |
410 | + "name": "Gribier", | |
411 | + "symbolSize": 2.6666666666666665, | |
412 | + "x": -296.07935, | |
413 | + "y": 163.11964, | |
414 | + "value": 4, | |
415 | + "category": 4 | |
416 | + }, | |
417 | + { | |
418 | + "id": "46", | |
419 | + "name": "Jondrette", | |
420 | + "symbolSize": 2.6666666666666665, | |
421 | + "x": 550.3201, | |
422 | + "y": 522.4031, | |
423 | + "value": 4, | |
424 | + "category": 5 | |
425 | + }, | |
426 | + { | |
427 | + "id": "47", | |
428 | + "name": "MmeBurgon", | |
429 | + "symbolSize": 4.495239333333333, | |
430 | + "x": 488.13535, | |
431 | + "y": 356.8573, | |
432 | + "value": 6.742859, | |
433 | + "category": 5 | |
434 | + }, | |
435 | + { | |
436 | + "id": "48", | |
437 | + "name": "Gavroche", | |
438 | + "symbolSize": 41.06667066666667, | |
439 | + "x": 387.89572, | |
440 | + "y": 110.462326, | |
441 | + "value": 61.600006, | |
442 | + "category": 8 | |
443 | + }, | |
444 | + { | |
445 | + "id": "49", | |
446 | + "name": "Gillenormand", | |
447 | + "symbolSize": 13.638097333333334, | |
448 | + "x": 126.4831, | |
449 | + "y": 68.10622, | |
450 | + "value": 20.457146, | |
451 | + "category": 6 | |
452 | + }, | |
453 | + { | |
454 | + "id": "50", | |
455 | + "name": "Magnon", | |
456 | + "symbolSize": 4.495239333333333, | |
457 | + "x": 127.07365, | |
458 | + "y": -113.05923, | |
459 | + "value": 6.742859, | |
460 | + "category": 6 | |
461 | + }, | |
462 | + { | |
463 | + "id": "51", | |
464 | + "name": "MlleGillenormand", | |
465 | + "symbolSize": 13.638097333333334, | |
466 | + "x": 162.63559, | |
467 | + "y": 117.6565, | |
468 | + "value": 20.457146, | |
469 | + "category": 6 | |
470 | + }, | |
471 | + { | |
472 | + "id": "52", | |
473 | + "name": "MmePontmercy", | |
474 | + "symbolSize": 4.495239333333333, | |
475 | + "x": 353.66415, | |
476 | + "y": -205.89165, | |
477 | + "value": 6.742859, | |
478 | + "category": 6 | |
479 | + }, | |
480 | + { | |
481 | + "id": "53", | |
482 | + "name": "MlleVaubois", | |
483 | + "symbolSize": 2.6666666666666665, | |
484 | + "x": 165.43939, | |
485 | + "y": 339.7736, | |
486 | + "value": 4, | |
487 | + "category": 6 | |
488 | + }, | |
489 | + { | |
490 | + "id": "54", | |
491 | + "name": "LtGillenormand", | |
492 | + "symbolSize": 8.152382000000001, | |
493 | + "x": 137.69348, | |
494 | + "y": 196.1069, | |
495 | + "value": 12.228573, | |
496 | + "category": 6 | |
497 | + }, | |
498 | + { | |
499 | + "id": "55", | |
500 | + "name": "Marius", | |
501 | + "symbolSize": 35.58095333333333, | |
502 | + "x": 206.44687, | |
503 | + "y": -13.805411, | |
504 | + "value": 53.37143, | |
505 | + "category": 6 | |
506 | + }, | |
507 | + { | |
508 | + "id": "56", | |
509 | + "name": "BaronessT", | |
510 | + "symbolSize": 4.495239333333333, | |
511 | + "x": 194.82993, | |
512 | + "y": 224.78036, | |
513 | + "value": 6.742859, | |
514 | + "category": 6 | |
515 | + }, | |
516 | + { | |
517 | + "id": "57", | |
518 | + "name": "Mabeuf", | |
519 | + "symbolSize": 20.95238266666667, | |
520 | + "x": 597.6618, | |
521 | + "y": 135.18481, | |
522 | + "value": 31.428574, | |
523 | + "category": 8 | |
524 | + }, | |
525 | + { | |
526 | + "id": "58", | |
527 | + "name": "Enjolras", | |
528 | + "symbolSize": 28.266666666666666, | |
529 | + "x": 355.78366, | |
530 | + "y": -74.882454, | |
531 | + "value": 42.4, | |
532 | + "category": 8 | |
533 | + }, | |
534 | + { | |
535 | + "id": "59", | |
536 | + "name": "Combeferre", | |
537 | + "symbolSize": 20.95238266666667, | |
538 | + "x": 515.2961, | |
539 | + "y": -46.167564, | |
540 | + "value": 31.428574, | |
541 | + "category": 8 | |
542 | + }, | |
543 | + { | |
544 | + "id": "60", | |
545 | + "name": "Prouvaire", | |
546 | + "symbolSize": 17.295237333333333, | |
547 | + "x": 614.29285, | |
548 | + "y": -69.3104, | |
549 | + "value": 25.942856, | |
550 | + "category": 8 | |
551 | + }, | |
552 | + { | |
553 | + "id": "61", | |
554 | + "name": "Feuilly", | |
555 | + "symbolSize": 20.95238266666667, | |
556 | + "x": 550.1917, | |
557 | + "y": -128.17537, | |
558 | + "value": 31.428574, | |
559 | + "category": 8 | |
560 | + }, | |
561 | + { | |
562 | + "id": "62", | |
563 | + "name": "Courfeyrac", | |
564 | + "symbolSize": 24.609526666666667, | |
565 | + "x": 436.17184, | |
566 | + "y": -12.7286825, | |
567 | + "value": 36.91429, | |
568 | + "category": 8 | |
569 | + }, | |
570 | + { | |
571 | + "id": "63", | |
572 | + "name": "Bahorel", | |
573 | + "symbolSize": 22.780953333333333, | |
574 | + "x": 602.55225, | |
575 | + "y": 16.421427, | |
576 | + "value": 34.17143, | |
577 | + "category": 8 | |
578 | + }, | |
579 | + { | |
580 | + "id": "64", | |
581 | + "name": "Bossuet", | |
582 | + "symbolSize": 24.609526666666667, | |
583 | + "x": 455.81955, | |
584 | + "y": -115.45826, | |
585 | + "value": 36.91429, | |
586 | + "category": 8 | |
587 | + }, | |
588 | + { | |
589 | + "id": "65", | |
590 | + "name": "Joly", | |
591 | + "symbolSize": 22.780953333333333, | |
592 | + "x": 516.40784, | |
593 | + "y": 47.242233, | |
594 | + "value": 34.17143, | |
595 | + "category": 8 | |
596 | + }, | |
597 | + { | |
598 | + "id": "66", | |
599 | + "name": "Grantaire", | |
600 | + "symbolSize": 19.12381, | |
601 | + "x": 646.4313, | |
602 | + "y": -151.06331, | |
603 | + "value": 28.685715, | |
604 | + "category": 8 | |
605 | + }, | |
606 | + { | |
607 | + "id": "67", | |
608 | + "name": "MotherPlutarch", | |
609 | + "symbolSize": 2.6666666666666665, | |
610 | + "x": 668.9568, | |
611 | + "y": 204.65488, | |
612 | + "value": 4, | |
613 | + "category": 8 | |
614 | + }, | |
615 | + { | |
616 | + "id": "68", | |
617 | + "name": "Gueulemer", | |
618 | + "symbolSize": 19.12381, | |
619 | + "x": 78.4799, | |
620 | + "y": -347.15146, | |
621 | + "value": 28.685715, | |
622 | + "category": 7 | |
623 | + }, | |
624 | + { | |
625 | + "id": "69", | |
626 | + "name": "Babet", | |
627 | + "symbolSize": 19.12381, | |
628 | + "x": 150.35959, | |
629 | + "y": -298.50797, | |
630 | + "value": 28.685715, | |
631 | + "category": 7 | |
632 | + }, | |
633 | + { | |
634 | + "id": "70", | |
635 | + "name": "Claquesous", | |
636 | + "symbolSize": 19.12381, | |
637 | + "x": 137.3717, | |
638 | + "y": -410.2809, | |
639 | + "value": 28.685715, | |
640 | + "category": 7 | |
641 | + }, | |
642 | + { | |
643 | + "id": "71", | |
644 | + "name": "Montparnasse", | |
645 | + "symbolSize": 17.295237333333333, | |
646 | + "x": 234.87747, | |
647 | + "y": -400.85983, | |
648 | + "value": 25.942856, | |
649 | + "category": 7 | |
650 | + }, | |
651 | + { | |
652 | + "id": "72", | |
653 | + "name": "Toussaint", | |
654 | + "symbolSize": 6.323809333333333, | |
655 | + "x": 40.942253, | |
656 | + "y": 113.78272, | |
657 | + "value": 9.485714, | |
658 | + "category": 1 | |
659 | + }, | |
660 | + { | |
661 | + "id": "73", | |
662 | + "name": "Child1", | |
663 | + "symbolSize": 4.495239333333333, | |
664 | + "x": 437.939, | |
665 | + "y": 291.58234, | |
666 | + "value": 6.742859, | |
667 | + "category": 8 | |
668 | + }, | |
669 | + { | |
670 | + "id": "74", | |
671 | + "name": "Child2", | |
672 | + "symbolSize": 4.495239333333333, | |
673 | + "x": 466.04922, | |
674 | + "y": 283.3606, | |
675 | + "value": 6.742859, | |
676 | + "category": 8 | |
677 | + }, | |
678 | + { | |
679 | + "id": "75", | |
680 | + "name": "Brujon", | |
681 | + "symbolSize": 13.638097333333334, | |
682 | + "x": 238.79364, | |
683 | + "y": -314.06345, | |
684 | + "value": 20.457146, | |
685 | + "category": 7 | |
686 | + }, | |
687 | + { | |
688 | + "id": "76", | |
689 | + "name": "MmeHucheloup", | |
690 | + "symbolSize": 13.638097333333334, | |
691 | + "x": 712.18353, | |
692 | + "y": 4.8131495, | |
693 | + "value": 20.457146, | |
694 | + "category": 8 | |
695 | + } | |
696 | + ], | |
697 | + "links": [ | |
698 | + { | |
699 | + "source": "1", | |
700 | + "target": "0" | |
701 | + }, | |
702 | + { | |
703 | + "source": "2", | |
704 | + "target": "0" | |
705 | + }, | |
706 | + { | |
707 | + "source": "3", | |
708 | + "target": "0" | |
709 | + }, | |
710 | + { | |
711 | + "source": "3", | |
712 | + "target": "2" | |
713 | + }, | |
714 | + { | |
715 | + "source": "4", | |
716 | + "target": "0" | |
717 | + }, | |
718 | + { | |
719 | + "source": "5", | |
720 | + "target": "0" | |
721 | + }, | |
722 | + { | |
723 | + "source": "6", | |
724 | + "target": "0" | |
725 | + }, | |
726 | + { | |
727 | + "source": "7", | |
728 | + "target": "0" | |
729 | + }, | |
730 | + { | |
731 | + "source": "8", | |
732 | + "target": "0" | |
733 | + }, | |
734 | + { | |
735 | + "source": "9", | |
736 | + "target": "0" | |
737 | + }, | |
738 | + { | |
739 | + "source": "11", | |
740 | + "target": "0" | |
741 | + }, | |
742 | + { | |
743 | + "source": "11", | |
744 | + "target": "2" | |
745 | + }, | |
746 | + { | |
747 | + "source": "11", | |
748 | + "target": "3" | |
749 | + }, | |
750 | + { | |
751 | + "source": "11", | |
752 | + "target": "10" | |
753 | + }, | |
754 | + { | |
755 | + "source": "12", | |
756 | + "target": "11" | |
757 | + }, | |
758 | + { | |
759 | + "source": "13", | |
760 | + "target": "11" | |
761 | + }, | |
762 | + { | |
763 | + "source": "14", | |
764 | + "target": "11" | |
765 | + }, | |
766 | + { | |
767 | + "source": "15", | |
768 | + "target": "11" | |
769 | + }, | |
770 | + { | |
771 | + "source": "17", | |
772 | + "target": "16" | |
773 | + }, | |
774 | + { | |
775 | + "source": "18", | |
776 | + "target": "16" | |
777 | + }, | |
778 | + { | |
779 | + "source": "18", | |
780 | + "target": "17" | |
781 | + }, | |
782 | + { | |
783 | + "source": "19", | |
784 | + "target": "16" | |
785 | + }, | |
786 | + { | |
787 | + "source": "19", | |
788 | + "target": "17" | |
789 | + }, | |
790 | + { | |
791 | + "source": "19", | |
792 | + "target": "18" | |
793 | + }, | |
794 | + { | |
795 | + "source": "20", | |
796 | + "target": "16" | |
797 | + }, | |
798 | + { | |
799 | + "source": "20", | |
800 | + "target": "17" | |
801 | + }, | |
802 | + { | |
803 | + "source": "20", | |
804 | + "target": "18" | |
805 | + }, | |
806 | + { | |
807 | + "source": "20", | |
808 | + "target": "19" | |
809 | + }, | |
810 | + { | |
811 | + "source": "21", | |
812 | + "target": "16" | |
813 | + }, | |
814 | + { | |
815 | + "source": "21", | |
816 | + "target": "17" | |
817 | + }, | |
818 | + { | |
819 | + "source": "21", | |
820 | + "target": "18" | |
821 | + }, | |
822 | + { | |
823 | + "source": "21", | |
824 | + "target": "19" | |
825 | + }, | |
826 | + { | |
827 | + "source": "21", | |
828 | + "target": "20" | |
829 | + }, | |
830 | + { | |
831 | + "source": "22", | |
832 | + "target": "16" | |
833 | + }, | |
834 | + { | |
835 | + "source": "22", | |
836 | + "target": "17" | |
837 | + }, | |
838 | + { | |
839 | + "source": "22", | |
840 | + "target": "18" | |
841 | + }, | |
842 | + { | |
843 | + "source": "22", | |
844 | + "target": "19" | |
845 | + }, | |
846 | + { | |
847 | + "source": "22", | |
848 | + "target": "20" | |
849 | + }, | |
850 | + { | |
851 | + "source": "22", | |
852 | + "target": "21" | |
853 | + }, | |
854 | + { | |
855 | + "source": "23", | |
856 | + "target": "11" | |
857 | + }, | |
858 | + { | |
859 | + "source": "23", | |
860 | + "target": "12" | |
861 | + }, | |
862 | + { | |
863 | + "source": "23", | |
864 | + "target": "16" | |
865 | + }, | |
866 | + { | |
867 | + "source": "23", | |
868 | + "target": "17" | |
869 | + }, | |
870 | + { | |
871 | + "source": "23", | |
872 | + "target": "18" | |
873 | + }, | |
874 | + { | |
875 | + "source": "23", | |
876 | + "target": "19" | |
877 | + }, | |
878 | + { | |
879 | + "source": "23", | |
880 | + "target": "20" | |
881 | + }, | |
882 | + { | |
883 | + "source": "23", | |
884 | + "target": "21" | |
885 | + }, | |
886 | + { | |
887 | + "source": "23", | |
888 | + "target": "22" | |
889 | + }, | |
890 | + { | |
891 | + "source": "24", | |
892 | + "target": "11" | |
893 | + }, | |
894 | + { | |
895 | + "source": "24", | |
896 | + "target": "23" | |
897 | + }, | |
898 | + { | |
899 | + "source": "25", | |
900 | + "target": "11" | |
901 | + }, | |
902 | + { | |
903 | + "source": "25", | |
904 | + "target": "23" | |
905 | + }, | |
906 | + { | |
907 | + "source": "25", | |
908 | + "target": "24" | |
909 | + }, | |
910 | + { | |
911 | + "source": "26", | |
912 | + "target": "11" | |
913 | + }, | |
914 | + { | |
915 | + "source": "26", | |
916 | + "target": "16" | |
917 | + }, | |
918 | + { | |
919 | + "source": "26", | |
920 | + "target": "24" | |
921 | + }, | |
922 | + { | |
923 | + "source": "26", | |
924 | + "target": "25" | |
925 | + }, | |
926 | + { | |
927 | + "source": "27", | |
928 | + "target": "11" | |
929 | + }, | |
930 | + { | |
931 | + "source": "27", | |
932 | + "target": "23" | |
933 | + }, | |
934 | + { | |
935 | + "source": "27", | |
936 | + "target": "24" | |
937 | + }, | |
938 | + { | |
939 | + "source": "27", | |
940 | + "target": "25" | |
941 | + }, | |
942 | + { | |
943 | + "source": "27", | |
944 | + "target": "26" | |
945 | + }, | |
946 | + { | |
947 | + "source": "28", | |
948 | + "target": "11" | |
949 | + }, | |
950 | + { | |
951 | + "source": "28", | |
952 | + "target": "27" | |
953 | + }, | |
954 | + { | |
955 | + "source": "29", | |
956 | + "target": "11" | |
957 | + }, | |
958 | + { | |
959 | + "source": "29", | |
960 | + "target": "23" | |
961 | + }, | |
962 | + { | |
963 | + "source": "29", | |
964 | + "target": "27" | |
965 | + }, | |
966 | + { | |
967 | + "source": "30", | |
968 | + "target": "23" | |
969 | + }, | |
970 | + { | |
971 | + "source": "31", | |
972 | + "target": "11" | |
973 | + }, | |
974 | + { | |
975 | + "source": "31", | |
976 | + "target": "23" | |
977 | + }, | |
978 | + { | |
979 | + "source": "31", | |
980 | + "target": "27" | |
981 | + }, | |
982 | + { | |
983 | + "source": "31", | |
984 | + "target": "30" | |
985 | + }, | |
986 | + { | |
987 | + "source": "32", | |
988 | + "target": "11" | |
989 | + }, | |
990 | + { | |
991 | + "source": "33", | |
992 | + "target": "11" | |
993 | + }, | |
994 | + { | |
995 | + "source": "33", | |
996 | + "target": "27" | |
997 | + }, | |
998 | + { | |
999 | + "source": "34", | |
1000 | + "target": "11" | |
1001 | + }, | |
1002 | + { | |
1003 | + "source": "34", | |
1004 | + "target": "29" | |
1005 | + }, | |
1006 | + { | |
1007 | + "source": "35", | |
1008 | + "target": "11" | |
1009 | + }, | |
1010 | + { | |
1011 | + "source": "35", | |
1012 | + "target": "29" | |
1013 | + }, | |
1014 | + { | |
1015 | + "source": "35", | |
1016 | + "target": "34" | |
1017 | + }, | |
1018 | + { | |
1019 | + "source": "36", | |
1020 | + "target": "11" | |
1021 | + }, | |
1022 | + { | |
1023 | + "source": "36", | |
1024 | + "target": "29" | |
1025 | + }, | |
1026 | + { | |
1027 | + "source": "36", | |
1028 | + "target": "34" | |
1029 | + }, | |
1030 | + { | |
1031 | + "source": "36", | |
1032 | + "target": "35" | |
1033 | + }, | |
1034 | + { | |
1035 | + "source": "37", | |
1036 | + "target": "11" | |
1037 | + }, | |
1038 | + { | |
1039 | + "source": "37", | |
1040 | + "target": "29" | |
1041 | + }, | |
1042 | + { | |
1043 | + "source": "37", | |
1044 | + "target": "34" | |
1045 | + }, | |
1046 | + { | |
1047 | + "source": "37", | |
1048 | + "target": "35" | |
1049 | + }, | |
1050 | + { | |
1051 | + "source": "37", | |
1052 | + "target": "36" | |
1053 | + }, | |
1054 | + { | |
1055 | + "source": "38", | |
1056 | + "target": "11" | |
1057 | + }, | |
1058 | + { | |
1059 | + "source": "38", | |
1060 | + "target": "29" | |
1061 | + }, | |
1062 | + { | |
1063 | + "source": "38", | |
1064 | + "target": "34" | |
1065 | + }, | |
1066 | + { | |
1067 | + "source": "38", | |
1068 | + "target": "35" | |
1069 | + }, | |
1070 | + { | |
1071 | + "source": "38", | |
1072 | + "target": "36" | |
1073 | + }, | |
1074 | + { | |
1075 | + "source": "38", | |
1076 | + "target": "37" | |
1077 | + }, | |
1078 | + { | |
1079 | + "source": "39", | |
1080 | + "target": "25" | |
1081 | + }, | |
1082 | + { | |
1083 | + "source": "40", | |
1084 | + "target": "25" | |
1085 | + }, | |
1086 | + { | |
1087 | + "source": "41", | |
1088 | + "target": "24" | |
1089 | + }, | |
1090 | + { | |
1091 | + "source": "41", | |
1092 | + "target": "25" | |
1093 | + }, | |
1094 | + { | |
1095 | + "source": "42", | |
1096 | + "target": "24" | |
1097 | + }, | |
1098 | + { | |
1099 | + "source": "42", | |
1100 | + "target": "25" | |
1101 | + }, | |
1102 | + { | |
1103 | + "source": "42", | |
1104 | + "target": "41" | |
1105 | + }, | |
1106 | + { | |
1107 | + "source": "43", | |
1108 | + "target": "11" | |
1109 | + }, | |
1110 | + { | |
1111 | + "source": "43", | |
1112 | + "target": "26" | |
1113 | + }, | |
1114 | + { | |
1115 | + "source": "43", | |
1116 | + "target": "27" | |
1117 | + }, | |
1118 | + { | |
1119 | + "source": "44", | |
1120 | + "target": "11" | |
1121 | + }, | |
1122 | + { | |
1123 | + "source": "44", | |
1124 | + "target": "28" | |
1125 | + }, | |
1126 | + { | |
1127 | + "source": "45", | |
1128 | + "target": "28" | |
1129 | + }, | |
1130 | + { | |
1131 | + "source": "47", | |
1132 | + "target": "46" | |
1133 | + }, | |
1134 | + { | |
1135 | + "source": "48", | |
1136 | + "target": "11" | |
1137 | + }, | |
1138 | + { | |
1139 | + "source": "48", | |
1140 | + "target": "25" | |
1141 | + }, | |
1142 | + { | |
1143 | + "source": "48", | |
1144 | + "target": "27" | |
1145 | + }, | |
1146 | + { | |
1147 | + "source": "48", | |
1148 | + "target": "47" | |
1149 | + }, | |
1150 | + { | |
1151 | + "source": "49", | |
1152 | + "target": "11" | |
1153 | + }, | |
1154 | + { | |
1155 | + "source": "49", | |
1156 | + "target": "26" | |
1157 | + }, | |
1158 | + { | |
1159 | + "source": "50", | |
1160 | + "target": "24" | |
1161 | + }, | |
1162 | + { | |
1163 | + "source": "50", | |
1164 | + "target": "49" | |
1165 | + }, | |
1166 | + { | |
1167 | + "source": "51", | |
1168 | + "target": "11" | |
1169 | + }, | |
1170 | + { | |
1171 | + "source": "51", | |
1172 | + "target": "26" | |
1173 | + }, | |
1174 | + { | |
1175 | + "source": "51", | |
1176 | + "target": "49" | |
1177 | + }, | |
1178 | + { | |
1179 | + "source": "52", | |
1180 | + "target": "39" | |
1181 | + }, | |
1182 | + { | |
1183 | + "source": "52", | |
1184 | + "target": "51" | |
1185 | + }, | |
1186 | + { | |
1187 | + "source": "53", | |
1188 | + "target": "51" | |
1189 | + }, | |
1190 | + { | |
1191 | + "source": "54", | |
1192 | + "target": "26" | |
1193 | + }, | |
1194 | + { | |
1195 | + "source": "54", | |
1196 | + "target": "49" | |
1197 | + }, | |
1198 | + { | |
1199 | + "source": "54", | |
1200 | + "target": "51" | |
1201 | + }, | |
1202 | + { | |
1203 | + "source": "55", | |
1204 | + "target": "11" | |
1205 | + }, | |
1206 | + { | |
1207 | + "source": "55", | |
1208 | + "target": "16" | |
1209 | + }, | |
1210 | + { | |
1211 | + "source": "55", | |
1212 | + "target": "25" | |
1213 | + }, | |
1214 | + { | |
1215 | + "source": "55", | |
1216 | + "target": "26" | |
1217 | + }, | |
1218 | + { | |
1219 | + "source": "55", | |
1220 | + "target": "39" | |
1221 | + }, | |
1222 | + { | |
1223 | + "source": "55", | |
1224 | + "target": "41" | |
1225 | + }, | |
1226 | + { | |
1227 | + "source": "55", | |
1228 | + "target": "48" | |
1229 | + }, | |
1230 | + { | |
1231 | + "source": "55", | |
1232 | + "target": "49" | |
1233 | + }, | |
1234 | + { | |
1235 | + "source": "55", | |
1236 | + "target": "51" | |
1237 | + }, | |
1238 | + { | |
1239 | + "source": "55", | |
1240 | + "target": "54" | |
1241 | + }, | |
1242 | + { | |
1243 | + "source": "56", | |
1244 | + "target": "49" | |
1245 | + }, | |
1246 | + { | |
1247 | + "source": "56", | |
1248 | + "target": "55" | |
1249 | + }, | |
1250 | + { | |
1251 | + "source": "57", | |
1252 | + "target": "41" | |
1253 | + }, | |
1254 | + { | |
1255 | + "source": "57", | |
1256 | + "target": "48" | |
1257 | + }, | |
1258 | + { | |
1259 | + "source": "57", | |
1260 | + "target": "55" | |
1261 | + }, | |
1262 | + { | |
1263 | + "source": "58", | |
1264 | + "target": "11" | |
1265 | + }, | |
1266 | + { | |
1267 | + "source": "58", | |
1268 | + "target": "27" | |
1269 | + }, | |
1270 | + { | |
1271 | + "source": "58", | |
1272 | + "target": "48" | |
1273 | + }, | |
1274 | + { | |
1275 | + "source": "58", | |
1276 | + "target": "55" | |
1277 | + }, | |
1278 | + { | |
1279 | + "source": "58", | |
1280 | + "target": "57" | |
1281 | + }, | |
1282 | + { | |
1283 | + "source": "59", | |
1284 | + "target": "48" | |
1285 | + }, | |
1286 | + { | |
1287 | + "source": "59", | |
1288 | + "target": "55" | |
1289 | + }, | |
1290 | + { | |
1291 | + "source": "59", | |
1292 | + "target": "57" | |
1293 | + }, | |
1294 | + { | |
1295 | + "source": "59", | |
1296 | + "target": "58" | |
1297 | + }, | |
1298 | + { | |
1299 | + "source": "60", | |
1300 | + "target": "48" | |
1301 | + }, | |
1302 | + { | |
1303 | + "source": "60", | |
1304 | + "target": "58" | |
1305 | + }, | |
1306 | + { | |
1307 | + "source": "60", | |
1308 | + "target": "59" | |
1309 | + }, | |
1310 | + { | |
1311 | + "source": "61", | |
1312 | + "target": "48" | |
1313 | + }, | |
1314 | + { | |
1315 | + "source": "61", | |
1316 | + "target": "55" | |
1317 | + }, | |
1318 | + { | |
1319 | + "source": "61", | |
1320 | + "target": "57" | |
1321 | + }, | |
1322 | + { | |
1323 | + "source": "61", | |
1324 | + "target": "58" | |
1325 | + }, | |
1326 | + { | |
1327 | + "source": "61", | |
1328 | + "target": "59" | |
1329 | + }, | |
1330 | + { | |
1331 | + "source": "61", | |
1332 | + "target": "60" | |
1333 | + }, | |
1334 | + { | |
1335 | + "source": "62", | |
1336 | + "target": "41" | |
1337 | + }, | |
1338 | + { | |
1339 | + "source": "62", | |
1340 | + "target": "48" | |
1341 | + }, | |
1342 | + { | |
1343 | + "source": "62", | |
1344 | + "target": "55" | |
1345 | + }, | |
1346 | + { | |
1347 | + "source": "62", | |
1348 | + "target": "57" | |
1349 | + }, | |
1350 | + { | |
1351 | + "source": "62", | |
1352 | + "target": "58" | |
1353 | + }, | |
1354 | + { | |
1355 | + "source": "62", | |
1356 | + "target": "59" | |
1357 | + }, | |
1358 | + { | |
1359 | + "source": "62", | |
1360 | + "target": "60" | |
1361 | + }, | |
1362 | + { | |
1363 | + "source": "62", | |
1364 | + "target": "61" | |
1365 | + }, | |
1366 | + { | |
1367 | + "source": "63", | |
1368 | + "target": "48" | |
1369 | + }, | |
1370 | + { | |
1371 | + "source": "63", | |
1372 | + "target": "55" | |
1373 | + }, | |
1374 | + { | |
1375 | + "source": "63", | |
1376 | + "target": "57" | |
1377 | + }, | |
1378 | + { | |
1379 | + "source": "63", | |
1380 | + "target": "58" | |
1381 | + }, | |
1382 | + { | |
1383 | + "source": "63", | |
1384 | + "target": "59" | |
1385 | + }, | |
1386 | + { | |
1387 | + "source": "63", | |
1388 | + "target": "60" | |
1389 | + }, | |
1390 | + { | |
1391 | + "source": "63", | |
1392 | + "target": "61" | |
1393 | + }, | |
1394 | + { | |
1395 | + "source": "63", | |
1396 | + "target": "62" | |
1397 | + }, | |
1398 | + { | |
1399 | + "source": "64", | |
1400 | + "target": "11" | |
1401 | + }, | |
1402 | + { | |
1403 | + "source": "64", | |
1404 | + "target": "48" | |
1405 | + }, | |
1406 | + { | |
1407 | + "source": "64", | |
1408 | + "target": "55" | |
1409 | + }, | |
1410 | + { | |
1411 | + "source": "64", | |
1412 | + "target": "57" | |
1413 | + }, | |
1414 | + { | |
1415 | + "source": "64", | |
1416 | + "target": "58" | |
1417 | + }, | |
1418 | + { | |
1419 | + "source": "64", | |
1420 | + "target": "59" | |
1421 | + }, | |
1422 | + { | |
1423 | + "source": "64", | |
1424 | + "target": "60" | |
1425 | + }, | |
1426 | + { | |
1427 | + "source": "64", | |
1428 | + "target": "61" | |
1429 | + }, | |
1430 | + { | |
1431 | + "source": "64", | |
1432 | + "target": "62" | |
1433 | + }, | |
1434 | + { | |
1435 | + "source": "64", | |
1436 | + "target": "63" | |
1437 | + }, | |
1438 | + { | |
1439 | + "source": "65", | |
1440 | + "target": "48" | |
1441 | + }, | |
1442 | + { | |
1443 | + "source": "65", | |
1444 | + "target": "55" | |
1445 | + }, | |
1446 | + { | |
1447 | + "source": "65", | |
1448 | + "target": "57" | |
1449 | + }, | |
1450 | + { | |
1451 | + "source": "65", | |
1452 | + "target": "58" | |
1453 | + }, | |
1454 | + { | |
1455 | + "source": "65", | |
1456 | + "target": "59" | |
1457 | + }, | |
1458 | + { | |
1459 | + "source": "65", | |
1460 | + "target": "60" | |
1461 | + }, | |
1462 | + { | |
1463 | + "source": "65", | |
1464 | + "target": "61" | |
1465 | + }, | |
1466 | + { | |
1467 | + "source": "65", | |
1468 | + "target": "62" | |
1469 | + }, | |
1470 | + { | |
1471 | + "source": "65", | |
1472 | + "target": "63" | |
1473 | + }, | |
1474 | + { | |
1475 | + "source": "65", | |
1476 | + "target": "64" | |
1477 | + }, | |
1478 | + { | |
1479 | + "source": "66", | |
1480 | + "target": "48" | |
1481 | + }, | |
1482 | + { | |
1483 | + "source": "66", | |
1484 | + "target": "58" | |
1485 | + }, | |
1486 | + { | |
1487 | + "source": "66", | |
1488 | + "target": "59" | |
1489 | + }, | |
1490 | + { | |
1491 | + "source": "66", | |
1492 | + "target": "60" | |
1493 | + }, | |
1494 | + { | |
1495 | + "source": "66", | |
1496 | + "target": "61" | |
1497 | + }, | |
1498 | + { | |
1499 | + "source": "66", | |
1500 | + "target": "62" | |
1501 | + }, | |
1502 | + { | |
1503 | + "source": "66", | |
1504 | + "target": "63" | |
1505 | + }, | |
1506 | + { | |
1507 | + "source": "66", | |
1508 | + "target": "64" | |
1509 | + }, | |
1510 | + { | |
1511 | + "source": "66", | |
1512 | + "target": "65" | |
1513 | + }, | |
1514 | + { | |
1515 | + "source": "67", | |
1516 | + "target": "57" | |
1517 | + }, | |
1518 | + { | |
1519 | + "source": "68", | |
1520 | + "target": "11" | |
1521 | + }, | |
1522 | + { | |
1523 | + "source": "68", | |
1524 | + "target": "24" | |
1525 | + }, | |
1526 | + { | |
1527 | + "source": "68", | |
1528 | + "target": "25" | |
1529 | + }, | |
1530 | + { | |
1531 | + "source": "68", | |
1532 | + "target": "27" | |
1533 | + }, | |
1534 | + { | |
1535 | + "source": "68", | |
1536 | + "target": "41" | |
1537 | + }, | |
1538 | + { | |
1539 | + "source": "68", | |
1540 | + "target": "48" | |
1541 | + }, | |
1542 | + { | |
1543 | + "source": "69", | |
1544 | + "target": "11" | |
1545 | + }, | |
1546 | + { | |
1547 | + "source": "69", | |
1548 | + "target": "24" | |
1549 | + }, | |
1550 | + { | |
1551 | + "source": "69", | |
1552 | + "target": "25" | |
1553 | + }, | |
1554 | + { | |
1555 | + "source": "69", | |
1556 | + "target": "27" | |
1557 | + }, | |
1558 | + { | |
1559 | + "source": "69", | |
1560 | + "target": "41" | |
1561 | + }, | |
1562 | + { | |
1563 | + "source": "69", | |
1564 | + "target": "48" | |
1565 | + }, | |
1566 | + { | |
1567 | + "source": "69", | |
1568 | + "target": "68" | |
1569 | + }, | |
1570 | + { | |
1571 | + "source": "70", | |
1572 | + "target": "11" | |
1573 | + }, | |
1574 | + { | |
1575 | + "source": "70", | |
1576 | + "target": "24" | |
1577 | + }, | |
1578 | + { | |
1579 | + "source": "70", | |
1580 | + "target": "25" | |
1581 | + }, | |
1582 | + { | |
1583 | + "source": "70", | |
1584 | + "target": "27" | |
1585 | + }, | |
1586 | + { | |
1587 | + "source": "70", | |
1588 | + "target": "41" | |
1589 | + }, | |
1590 | + { | |
1591 | + "source": "70", | |
1592 | + "target": "58" | |
1593 | + }, | |
1594 | + { | |
1595 | + "source": "70", | |
1596 | + "target": "68" | |
1597 | + }, | |
1598 | + { | |
1599 | + "source": "70", | |
1600 | + "target": "69" | |
1601 | + }, | |
1602 | + { | |
1603 | + "source": "71", | |
1604 | + "target": "11" | |
1605 | + }, | |
1606 | + { | |
1607 | + "source": "71", | |
1608 | + "target": "25" | |
1609 | + }, | |
1610 | + { | |
1611 | + "source": "71", | |
1612 | + "target": "27" | |
1613 | + }, | |
1614 | + { | |
1615 | + "source": "71", | |
1616 | + "target": "41" | |
1617 | + }, | |
1618 | + { | |
1619 | + "source": "71", | |
1620 | + "target": "48" | |
1621 | + }, | |
1622 | + { | |
1623 | + "source": "71", | |
1624 | + "target": "68" | |
1625 | + }, | |
1626 | + { | |
1627 | + "source": "71", | |
1628 | + "target": "69" | |
1629 | + }, | |
1630 | + { | |
1631 | + "source": "71", | |
1632 | + "target": "70" | |
1633 | + }, | |
1634 | + { | |
1635 | + "source": "72", | |
1636 | + "target": "11" | |
1637 | + }, | |
1638 | + { | |
1639 | + "source": "72", | |
1640 | + "target": "26" | |
1641 | + }, | |
1642 | + { | |
1643 | + "source": "72", | |
1644 | + "target": "27" | |
1645 | + }, | |
1646 | + { | |
1647 | + "source": "73", | |
1648 | + "target": "48" | |
1649 | + }, | |
1650 | + { | |
1651 | + "source": "74", | |
1652 | + "target": "48" | |
1653 | + }, | |
1654 | + { | |
1655 | + "source": "74", | |
1656 | + "target": "73" | |
1657 | + }, | |
1658 | + { | |
1659 | + "source": "75", | |
1660 | + "target": "25" | |
1661 | + }, | |
1662 | + { | |
1663 | + "source": "75", | |
1664 | + "target": "41" | |
1665 | + }, | |
1666 | + { | |
1667 | + "source": "75", | |
1668 | + "target": "48" | |
1669 | + }, | |
1670 | + { | |
1671 | + "source": "75", | |
1672 | + "target": "68" | |
1673 | + }, | |
1674 | + { | |
1675 | + "source": "75", | |
1676 | + "target": "69" | |
1677 | + }, | |
1678 | + { | |
1679 | + "source": "75", | |
1680 | + "target": "70" | |
1681 | + }, | |
1682 | + { | |
1683 | + "source": "75", | |
1684 | + "target": "71" | |
1685 | + }, | |
1686 | + { | |
1687 | + "source": "76", | |
1688 | + "target": "48" | |
1689 | + }, | |
1690 | + { | |
1691 | + "source": "76", | |
1692 | + "target": "58" | |
1693 | + }, | |
1694 | + { | |
1695 | + "source": "76", | |
1696 | + "target": "62" | |
1697 | + }, | |
1698 | + { | |
1699 | + "source": "76", | |
1700 | + "target": "63" | |
1701 | + }, | |
1702 | + { | |
1703 | + "source": "76", | |
1704 | + "target": "64" | |
1705 | + }, | |
1706 | + { | |
1707 | + "source": "76", | |
1708 | + "target": "65" | |
1709 | + }, | |
1710 | + { | |
1711 | + "source": "76", | |
1712 | + "target": "66" | |
1713 | + } | |
1714 | + ], | |
1715 | + "categories": [ | |
1716 | + { | |
1717 | + "name": "A" | |
1718 | + }, | |
1719 | + { | |
1720 | + "name": "B" | |
1721 | + }, | |
1722 | + { | |
1723 | + "name": "C" | |
1724 | + }, | |
1725 | + { | |
1726 | + "name": "D" | |
1727 | + }, | |
1728 | + { | |
1729 | + "name": "E" | |
1730 | + }, | |
1731 | + { | |
1732 | + "name": "F" | |
1733 | + }, | |
1734 | + { | |
1735 | + "name": "G" | |
1736 | + }, | |
1737 | + { | |
1738 | + "name": "H" | |
1739 | + }, | |
1740 | + { | |
1741 | + "name": "I" | |
1742 | + } | |
1743 | + ] | |
1744 | + } | |
\ No newline at end of file | ... | ... |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | |
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | |
3 | + | |
4 | +export const GraphConfig: ConfigType = { | |
5 | + key: 'Graph', | |
6 | + chartKey: 'VGraph', | |
7 | + conKey: 'VCGraph', | |
8 | + title: '关系图', | |
9 | + category: ChatCategoryEnum.MORE, | |
10 | + categoryName: ChatCategoryEnumName.MORE, | |
11 | + package: PackagesCategoryEnum.CHARTS, | |
12 | + chartFrame: ChartFrameEnum.COMMON, | |
13 | + image: 'graph.png' | |
14 | +} | ... | ... |
1 | +<template> | |
2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | |
3 | +</template> | |
4 | + | |
5 | +<script setup lang="ts"> | |
6 | +import { ref, computed, PropType, watch } from 'vue' | |
7 | +import VChart from 'vue-echarts' | |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | |
9 | +import dataJson from './data.json' | |
10 | +import { use } from 'echarts/core' | |
11 | +import { CanvasRenderer } from 'echarts/renderers' | |
12 | +import { RadarChart } from 'echarts/charts' | |
13 | +import { includes } from './config' | |
14 | +import { mergeTheme, setOption } from '@/packages/public/chart' | |
15 | +import { useChartDataFetch } from '@/hooks' | |
16 | +import { CreateComponentType } from '@/packages/index.d' | |
17 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | |
18 | +import { isPreview } from '@/utils' | |
19 | +import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' | |
20 | + | |
21 | +const props = defineProps({ | |
22 | + themeSetting: { | |
23 | + type: Object, | |
24 | + required: true | |
25 | + }, | |
26 | + themeColor: { | |
27 | + type: Object, | |
28 | + required: true | |
29 | + }, | |
30 | + chartConfig: { | |
31 | + type: Object as PropType<CreateComponentType>, | |
32 | + required: true | |
33 | + } | |
34 | +}) | |
35 | + | |
36 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | |
37 | + | |
38 | +use([DatasetComponent, CanvasRenderer, RadarChart, GridComponent, TooltipComponent, LegendComponent]) | |
39 | + | |
40 | +const vChartRef = ref<typeof VChart>() | |
41 | + | |
42 | +const option = computed(() => { | |
43 | + return mergeTheme(props.chartConfig.option, props.themeSetting, includes) | |
44 | +}) | |
45 | + | |
46 | +const dataSetHandle = (dataset: typeof dataJson) => { | |
47 | + if (dataset.nodes) { | |
48 | + props.chartConfig.option.series[0].data = dataset.nodes | |
49 | + } | |
50 | + if (dataset.links) { | |
51 | + props.chartConfig.option.series[0].links = dataset.links | |
52 | + } | |
53 | + if (dataset.categories) { | |
54 | + props.chartConfig.option.series[0].categories = dataset.categories | |
55 | + // @ts-ignore | |
56 | + props.chartConfig.option.legend.data = dataset.categories.map((i: { name: string }) => i.name) | |
57 | + } | |
58 | + if (vChartRef.value && isPreview()) { | |
59 | + setOption(vChartRef.value, props.chartConfig.option) | |
60 | + } | |
61 | +} | |
62 | + | |
63 | +watch( | |
64 | + () => props.chartConfig.option.dataset, | |
65 | + newData => { | |
66 | + try { | |
67 | + dataSetHandle(newData) | |
68 | + } catch (error) { | |
69 | + console.log(error) | |
70 | + } | |
71 | + }, | |
72 | + { | |
73 | + deep: false | |
74 | + } | |
75 | +) | |
76 | + | |
77 | +useChartDataFetch(props.chartConfig, useChartEditStore, (newData: typeof dataJson) => { | |
78 | + dataSetHandle(newData) | |
79 | +}) | |
80 | +</script> | ... | ... |
1 | +import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public' | |
2 | +import { SankeyConfig } from './index' | |
3 | +import { CreateComponentType } from '@/packages/index.d' | |
4 | +import cloneDeep from 'lodash/cloneDeep' | |
5 | +import dataJson from './data.json' | |
6 | + | |
7 | +export const includes = ['legend'] | |
8 | + | |
9 | +// 图表方向 | |
10 | +export const orientList = [ | |
11 | + { label: '水平', value: 'horizontal' }, | |
12 | + { label: '垂直', value: 'vertical' } | |
13 | +] | |
14 | + | |
15 | +// 标签展示 | |
16 | +export const toolTipSwitch = [ | |
17 | + { label: '开启', value: 1 }, | |
18 | + { label: '关闭', value: 0 } | |
19 | +] | |
20 | + | |
21 | +export const option = { | |
22 | + dataset: { ...dataJson }, | |
23 | + tooltip: { | |
24 | + show: 1, | |
25 | + trigger: 'item', | |
26 | + triggerOn: 'mousemove' | |
27 | + }, | |
28 | + series: { | |
29 | + type: 'sankey', | |
30 | + layout: 'none', | |
31 | + orient:'horizontal', | |
32 | + data: dataJson.label, | |
33 | + links: dataJson.links, | |
34 | + levels: dataJson.levels | |
35 | + } | |
36 | +}; | |
37 | + | |
38 | +export default class Config extends PublicConfigClass implements CreateComponentType { | |
39 | + public key = SankeyConfig.key | |
40 | + public chartConfig = cloneDeep(SankeyConfig) | |
41 | + // 图表配置项 | |
42 | + public option = echartOptionProfixHandle(option, includes) | |
43 | +} | ... | ... |
1 | +<template> | |
2 | + <div> | |
3 | + <CollapseItem name="桑基图" :expanded="true"> | |
4 | + <SettingItemBox name="样式"> | |
5 | + <SettingItem name="方向"> | |
6 | + <n-select | |
7 | + v-model:value="sankeyConfig.orient" | |
8 | + size="small" | |
9 | + :options="orientList" | |
10 | + placeholder="选择方向" | |
11 | + /> | |
12 | + </SettingItem> | |
13 | + <SettingItem name="提示标签"> | |
14 | + <n-select | |
15 | + v-model:value="optionData.tooltip.show" | |
16 | + size="small" | |
17 | + :options="toolTipSwitch" | |
18 | + placeholder="是否开启" | |
19 | + /> | |
20 | + </SettingItem> | |
21 | + </SettingItemBox> | |
22 | + </CollapseItem> | |
23 | + </div> | |
24 | +</template> | |
25 | + | |
26 | +<script setup lang="ts"> | |
27 | +import { PropType, computed } from 'vue' | |
28 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | |
29 | +import { option, orientList, toolTipSwitch } from './config' | |
30 | +import { GlobalThemeJsonType } from '@/settings/chartThemes/index' | |
31 | + | |
32 | +const props = defineProps({ | |
33 | + optionData: { | |
34 | + type: Object as PropType<typeof option & GlobalThemeJsonType>, | |
35 | + required: true | |
36 | + } | |
37 | +}) | |
38 | + | |
39 | +const sankeyConfig = computed<typeof option.series>(() => { | |
40 | + return props.optionData.series | |
41 | +}) | |
42 | + | |
43 | +</script> | ... | ... |
1 | +{ | |
2 | + "label": [ | |
3 | + { | |
4 | + "name": "a" | |
5 | + }, | |
6 | + { | |
7 | + "name": "b" | |
8 | + }, | |
9 | + { | |
10 | + "name": "a1" | |
11 | + }, | |
12 | + { | |
13 | + "name": "a2" | |
14 | + }, | |
15 | + { | |
16 | + "name": "b1" | |
17 | + }, | |
18 | + { | |
19 | + "name": "b2" | |
20 | + } | |
21 | + ], | |
22 | + "links": [ | |
23 | + { | |
24 | + "source": "a", | |
25 | + "target": "a1", | |
26 | + "value": 5 | |
27 | + }, | |
28 | + { | |
29 | + "source": "a", | |
30 | + "target": "a2", | |
31 | + "value": 3 | |
32 | + }, | |
33 | + { | |
34 | + "source": "b", | |
35 | + "target": "b1", | |
36 | + "value": 8 | |
37 | + }, | |
38 | + { | |
39 | + "source": "a", | |
40 | + "target": "b1", | |
41 | + "value": 3 | |
42 | + }, | |
43 | + { | |
44 | + "source": "b1", | |
45 | + "target": "a1", | |
46 | + "value": 1 | |
47 | + }, | |
48 | + { | |
49 | + "source": "b1", | |
50 | + "target": "b2", | |
51 | + "value": 2 | |
52 | + } | |
53 | + ], | |
54 | + "levels": [ | |
55 | + { | |
56 | + "depth": 0, | |
57 | + "itemStyle": { | |
58 | + "color": "#decbe4" | |
59 | + }, | |
60 | + "lineStyle": { | |
61 | + "color": "source", | |
62 | + "opacity": 0.9 | |
63 | + } | |
64 | + }, | |
65 | + { | |
66 | + "depth": 1, | |
67 | + "itemStyle": { | |
68 | + "color": "#b3cde3" | |
69 | + }, | |
70 | + "lineStyle": { | |
71 | + "color": "source", | |
72 | + "opacity": 0.6 | |
73 | + } | |
74 | + }, | |
75 | + { | |
76 | + "depth": 2, | |
77 | + "itemStyle": { | |
78 | + "color": "#ccebc5" | |
79 | + }, | |
80 | + "lineStyle": { | |
81 | + "color": "source", | |
82 | + "opacity": 0.6 | |
83 | + } | |
84 | + } | |
85 | + ] | |
86 | +} | ... | ... |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | |
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | |
3 | + | |
4 | +export const SankeyConfig: ConfigType = { | |
5 | + key: 'Sankey', | |
6 | + chartKey: 'VSankey', | |
7 | + conKey: 'VCSankey', | |
8 | + title: '桑基图', | |
9 | + category: ChatCategoryEnum.MORE, | |
10 | + categoryName: ChatCategoryEnumName.MORE, | |
11 | + package: PackagesCategoryEnum.CHARTS, | |
12 | + chartFrame: ChartFrameEnum.COMMON, | |
13 | + image: 'sankey.png' | |
14 | +} | ... | ... |
1 | +<template> | |
2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | |
3 | +</template> | |
4 | + | |
5 | +<script setup lang="ts"> | |
6 | +import { ref, computed, PropType, watch } from 'vue' | |
7 | +import VChart from 'vue-echarts' | |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | |
9 | +import dataJson from './data.json' | |
10 | +import { use } from 'echarts/core' | |
11 | +import { CanvasRenderer } from 'echarts/renderers' | |
12 | +import { RadarChart } from 'echarts/charts' | |
13 | +import { includes } from './config' | |
14 | +import { mergeTheme, setOption } from '@/packages/public/chart' | |
15 | +import { useChartDataFetch } from '@/hooks' | |
16 | +import { CreateComponentType } from '@/packages/index.d' | |
17 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | |
18 | +import { isPreview } from '@/utils' | |
19 | +import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' | |
20 | + | |
21 | +const props = defineProps({ | |
22 | + themeSetting: { | |
23 | + type: Object, | |
24 | + required: true | |
25 | + }, | |
26 | + themeColor: { | |
27 | + type: Object, | |
28 | + required: true | |
29 | + }, | |
30 | + chartConfig: { | |
31 | + type: Object as PropType<CreateComponentType>, | |
32 | + required: true | |
33 | + } | |
34 | +}) | |
35 | + | |
36 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | |
37 | + | |
38 | +use([DatasetComponent, CanvasRenderer, RadarChart, GridComponent, TooltipComponent, LegendComponent]) | |
39 | + | |
40 | +const vChartRef = ref<typeof VChart>() | |
41 | + | |
42 | +const option = computed(() => { | |
43 | + return mergeTheme(props.chartConfig.option, props.themeSetting, includes) | |
44 | +}) | |
45 | + | |
46 | +const dataHandle = (dataset: typeof dataJson) => { | |
47 | + if (dataset.label) { | |
48 | + props.chartConfig.option.series.data = dataset.label | |
49 | + } | |
50 | + if (dataset.links) { | |
51 | + props.chartConfig.option.series.links = dataset.links | |
52 | + } | |
53 | + if (dataset.levels) { | |
54 | + props.chartConfig.option.series.levels = dataset.levels | |
55 | + } | |
56 | + if (vChartRef.value && isPreview()) { | |
57 | + setOption(vChartRef.value, props.chartConfig.option) | |
58 | + } | |
59 | +} | |
60 | + | |
61 | +watch( | |
62 | + () => props.chartConfig.option.dataset, | |
63 | + newData => { | |
64 | + try { | |
65 | + dataHandle(newData) | |
66 | + } catch (error) { | |
67 | + console.log(error) | |
68 | + } | |
69 | + }, | |
70 | + { | |
71 | + deep: true | |
72 | + } | |
73 | +) | |
74 | + | |
75 | +useChartDataFetch(props.chartConfig, useChartEditStore, (newData: typeof dataJson) => { | |
76 | + dataHandle(newData) | |
77 | +}) | |
78 | +</script> | ... | ... |
... | ... | @@ -4,5 +4,8 @@ import { FunnelConfig } from './Funnel/index' |
4 | 4 | import { HeatmapConfig } from './Heatmap/index' |
5 | 5 | import { WaterPoloConfig } from './WaterPolo/index' |
6 | 6 | import { TreeMapConfig } from './TreeMap/index' |
7 | +import { DialConfig } from './Dial/index' | |
8 | +import { SankeyConfig } from './Sankey/index' | |
9 | +import { GraphConfig } from './Graph/index' | |
7 | 10 | |
8 | -export default [ProcessConfig, RadarConfig, FunnelConfig, HeatmapConfig, WaterPoloConfig, TreeMapConfig] | |
11 | +export default [ProcessConfig, RadarConfig, FunnelConfig, HeatmapConfig, WaterPoloConfig, TreeMapConfig, GraphConfig, SankeyConfig, DialConfig] | ... | ... |
... | ... | @@ -7,6 +7,17 @@ |
7 | 7 | <n-select v-model:value="optionData.type" size="small" :options="fontWeightOptions" /> |
8 | 8 | </SettingItem> |
9 | 9 | </SettingItemBox> |
10 | + <SettingItemBox name="动画" :alone="true"> | |
11 | + <SettingItem> | |
12 | + <n-space> | |
13 | + <n-switch v-model:value="optionData.isCarousel" size="small"></n-switch> | |
14 | + <n-text>开启<n-text :depth="3">(将自动隐藏图例)</n-text></n-text> | |
15 | + </n-space> | |
16 | + </SettingItem> | |
17 | + <SettingItem> | |
18 | + <n-text :depth="3">无鼠标点击图例场景时,可强行打开图例</n-text> | |
19 | + </SettingItem> | |
20 | + </SettingItemBox> | |
10 | 21 | <SettingItemBox name="标签"> |
11 | 22 | <SettingItem> |
12 | 23 | <n-space> | ... | ... |
1 | 1 | <template> |
2 | - <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | |
2 | + <v-chart ref="vChartRef" autoresize :init-options="initOptions" :theme="themeColor" :option="option" | |
3 | + :manual-update="isPreview()" @mouseover="handleHighlight" @mouseout="handleDownplay"></v-chart> | |
3 | 4 | </template> |
4 | 5 | |
5 | 6 | <script setup lang="ts"> |
6 | -import { computed, PropType, reactive, watch } from 'vue' | |
7 | +import { computed, onMounted, PropType, reactive, watch } from 'vue' | |
7 | 8 | import VChart from 'vue-echarts' |
8 | 9 | import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' |
9 | 10 | import { use } from 'echarts/core' |
... | ... | @@ -15,6 +16,7 @@ import { useChartDataFetch } from '@/hooks' |
15 | 16 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
16 | 17 | import { isPreview } from '@/utils' |
17 | 18 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' |
19 | +import dataJson from './data.json' | |
18 | 20 | |
19 | 21 | const props = defineProps({ |
20 | 22 | themeSetting: { |
... | ... | @@ -30,8 +32,10 @@ const props = defineProps({ |
30 | 32 | required: true |
31 | 33 | } |
32 | 34 | }) |
33 | - | |
34 | 35 | const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) |
36 | +let seriesDataNum = -1 | |
37 | +let seriesDataMaxLength = 0 | |
38 | +let intervalInstance: any = null | |
35 | 39 | |
36 | 40 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent]) |
37 | 41 | |
... | ... | @@ -39,6 +43,54 @@ const option = computed(() => { |
39 | 43 | return mergeTheme(props.chartConfig.option, props.themeSetting, includes) |
40 | 44 | }) |
41 | 45 | |
46 | +// 会重新选择需要选中和展示的数据 | |
47 | +const handleSeriesData = () => { | |
48 | + if (seriesDataNum > -1) { | |
49 | + vChartRef.value?.dispatchAction({ | |
50 | + type: 'downplay', | |
51 | + dataIndex: seriesDataNum | |
52 | + }) | |
53 | + } | |
54 | + seriesDataNum = seriesDataNum >= seriesDataMaxLength - 1 ? 0 : seriesDataNum + 1 | |
55 | + vChartRef.value?.dispatchAction({ | |
56 | + type: 'highlight', | |
57 | + dataIndex: seriesDataNum | |
58 | + }) | |
59 | +} | |
60 | + | |
61 | +// 新增轮播 | |
62 | +const addPieInterval = (newData?: typeof dataJson, skipPre = false) => { | |
63 | + if (!skipPre && !Array.isArray(newData?.source)) return | |
64 | + if (!skipPre) seriesDataMaxLength = newData?.source.length || 0 | |
65 | + clearInterval(intervalInstance) | |
66 | + intervalInstance = setInterval(() => { | |
67 | + handleSeriesData() | |
68 | + }, 1000) | |
69 | +} | |
70 | + | |
71 | +// 取消轮播 | |
72 | +const clearPieInterval = () => { | |
73 | + vChartRef.value?.dispatchAction({ | |
74 | + type: 'downplay', | |
75 | + dataIndex: seriesDataNum | |
76 | + }) | |
77 | + clearInterval(intervalInstance) | |
78 | + intervalInstance = null | |
79 | +} | |
80 | + | |
81 | +// 处理鼠标聚焦高亮内容 | |
82 | +const handleHighlight = () => { | |
83 | + clearPieInterval() | |
84 | +} | |
85 | + | |
86 | +// 处理鼠标取消悬浮 | |
87 | +const handleDownplay = () => { | |
88 | + if (props.chartConfig.option.isCarousel && !intervalInstance) { | |
89 | + // 恢复轮播 | |
90 | + addPieInterval(undefined, true) | |
91 | + } | |
92 | +} | |
93 | + | |
42 | 94 | watch( |
43 | 95 | () => props.chartConfig.option.type, |
44 | 96 | newData => { |
... | ... | @@ -60,5 +112,27 @@ watch( |
60 | 112 | { deep: false, immediate: true } |
61 | 113 | ) |
62 | 114 | |
115 | +watch( | |
116 | + () => props.chartConfig.option.isCarousel, | |
117 | + newData => { | |
118 | + if (newData) { | |
119 | + addPieInterval(undefined, true) | |
120 | + props.chartConfig.option.legend.show = false | |
121 | + } else { | |
122 | + props.chartConfig.option.legend.show = true | |
123 | + clearPieInterval() | |
124 | + } | |
125 | + } | |
126 | +) | |
127 | + | |
63 | 128 | const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore) |
129 | + | |
130 | + | |
131 | + | |
132 | +onMounted(() => { | |
133 | + seriesDataMaxLength = dataJson.source.length | |
134 | + if (props.chartConfig.option.isCarousel) { | |
135 | + addPieInterval(undefined, true) | |
136 | + } | |
137 | +}) | |
64 | 138 | </script> | ... | ... |
... | ... | @@ -16,6 +16,7 @@ export interface OptionType { |
16 | 16 | flipperGap: number |
17 | 17 | flipperType: FlipType |
18 | 18 | flipperSpeed: number |
19 | + flipperBorderWidth: number | |
19 | 20 | } |
20 | 21 | |
21 | 22 | export const option: OptionType = { |
... | ... | @@ -28,7 +29,8 @@ export const option: OptionType = { |
28 | 29 | flipperRadius: 5, |
29 | 30 | flipperGap: 10, |
30 | 31 | flipperType: 'down', |
31 | - flipperSpeed: 450 | |
32 | + flipperSpeed: 450, | |
33 | + flipperBorderWidth: 0, | |
32 | 34 | } |
33 | 35 | |
34 | 36 | export default class Config extends PublicConfigClass implements CreateComponentType { | ... | ... |
... | ... | @@ -16,12 +16,16 @@ |
16 | 16 | <setting-item name="高度"> |
17 | 17 | <n-input-number v-model:value="optionData.flipperHeight" size="small" :min="1"></n-input-number> |
18 | 18 | </setting-item> |
19 | - <setting-item name="间隔"> | |
20 | - <n-input-number v-model:value="optionData.flipperGap" size="small" :min="0"></n-input-number> | |
19 | + <setting-item name="边框"> | |
20 | + <n-input-number v-model:value="optionData.flipperBorderWidth" size="small" :min="0" :max="10"></n-input-number> | |
21 | 21 | </setting-item> |
22 | 22 | <setting-item name="圆角"> |
23 | 23 | <n-input-number v-model:value="optionData.flipperRadius" size="small" :min="0"></n-input-number> |
24 | 24 | </setting-item> |
25 | + <setting-item name="翻牌间隔"> | |
26 | + <n-input-number v-model:value="optionData.flipperGap" size="small" :min="0"></n-input-number> | |
27 | + </setting-item> | |
28 | + <setting-item /> | |
25 | 29 | <setting-item name="背景色"> |
26 | 30 | <n-color-picker |
27 | 31 | size="small" | ... | ... |
... | ... | @@ -9,6 +9,7 @@ |
9 | 9 | :radius="flipperRadius" |
10 | 10 | :flip-type="flipperType" |
11 | 11 | :duration="flipperSpeed" |
12 | + :border-width="flipperBorderWidth" | |
12 | 13 | v-for="(item, index) in flipperData" |
13 | 14 | :key="index" |
14 | 15 | class="go-d-block" |
... | ... | @@ -42,7 +43,8 @@ const { |
42 | 43 | flipperRadius, |
43 | 44 | flipperGap, |
44 | 45 | flipperType, |
45 | - flipperSpeed | |
46 | + flipperSpeed, | |
47 | + flipperBorderWidth | |
46 | 48 | } = toRefs(props.chartConfig.option as OptionType) |
47 | 49 | |
48 | 50 | const flipperData = ref<string[] | number[]>([]) | ... | ... |
1 | +import { PublicConfigClass } from '@/packages/public' | |
2 | +import { CreateComponentType } from '@/packages/index.d' | |
3 | +import { chartInitConfig } from '@/settings/designSetting' | |
4 | +import { PipelineHConfig } from './index' | |
5 | +import cloneDeep from 'lodash/cloneDeep' | |
6 | + | |
7 | +export const option = { | |
8 | + color_type: 1, | |
9 | + o_color: '#0a7ae2', | |
10 | + i_color: '#119bfa', | |
11 | + line_class: 'svg_ani_flow' | |
12 | +} | |
13 | + | |
14 | +export default class Config extends PublicConfigClass implements CreateComponentType { | |
15 | + public key = PipelineHConfig.key | |
16 | + public attr = { ...chartInitConfig, w: 500, h: 15, zIndex: -1 } | |
17 | + public chartConfig = cloneDeep(PipelineHConfig) | |
18 | + public option = cloneDeep(option) | |
19 | +} | ... | ... |
1 | +<template> | |
2 | + <CollapseItem name="管道" :expanded="true"> | |
3 | + <SettingItemBox name="默认颜色"> | |
4 | + <SettingItem> | |
5 | + <n-select v-model:value="optionData.color_type" :options="colorOptions" @update:value="handleColorChange" /> | |
6 | + </SettingItem> | |
7 | + </SettingItemBox> | |
8 | + <SettingItemBox name="管道颜色"> | |
9 | + <SettingItem> | |
10 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.o_color"></n-color-picker> | |
11 | + </SettingItem> | |
12 | + </SettingItemBox> | |
13 | + <SettingItemBox name="水流颜色"> | |
14 | + <SettingItem> | |
15 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.i_color"></n-color-picker> | |
16 | + </SettingItem> | |
17 | + </SettingItemBox> | |
18 | + <SettingItemBox name="流向"> | |
19 | + <SettingItem> | |
20 | + <n-select v-model:value="optionData.line_class" :options="options" /> | |
21 | + </SettingItem> | |
22 | + </SettingItemBox> | |
23 | + </CollapseItem> | |
24 | +</template> | |
25 | + | |
26 | +<script setup lang="ts"> | |
27 | +import { PropType, ref } from 'vue' | |
28 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | |
29 | +import { option } from './config' | |
30 | + | |
31 | +const props = defineProps({ | |
32 | + optionData: { | |
33 | + type: Object as PropType<typeof option>, | |
34 | + required: true | |
35 | + } | |
36 | +}) | |
37 | + | |
38 | +const options = ref([ | |
39 | + { | |
40 | + value: 'svg_ani_flow', | |
41 | + label: '正向' | |
42 | + }, | |
43 | + { | |
44 | + value: 'svg_ani_flow_back', | |
45 | + label: '反向' | |
46 | + }, | |
47 | + { | |
48 | + value: 'svg_ani_flow_stop', | |
49 | + label: '停止' | |
50 | + } | |
51 | +]) | |
52 | + | |
53 | +const colorOptions = ref([ | |
54 | + { | |
55 | + value: 1, | |
56 | + label: '蓝' | |
57 | + }, | |
58 | + { | |
59 | + value: 2, | |
60 | + label: '黄' | |
61 | + } | |
62 | +]) | |
63 | + | |
64 | +// 默认颜色 | |
65 | +const handleColorChange = (e: number) => { | |
66 | + switch (e) { | |
67 | + case 1: | |
68 | + props.optionData.o_color = '#0a7ae2' | |
69 | + props.optionData.i_color = '#119bfa' | |
70 | + break | |
71 | + case 2: | |
72 | + props.optionData.o_color = '#ff9d00' | |
73 | + props.optionData.i_color = '#f7ea37' | |
74 | + break | |
75 | + } | |
76 | +} | |
77 | +</script> | ... | ... |
1 | +import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | |
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | |
3 | + | |
4 | +export const PipelineHConfig: ConfigType = { | |
5 | + key: 'PipelineH', | |
6 | + chartKey: 'VPipelineH', | |
7 | + conKey: 'VCPipelineH', | |
8 | + title: '管道-横向', | |
9 | + category: ChatCategoryEnum.MORE, | |
10 | + categoryName: ChatCategoryEnumName.MORE, | |
11 | + package: PackagesCategoryEnum.DECORATES, | |
12 | + image: 'Pipeline_H.png' | |
13 | +} | ... | ... |
1 | +<template> | |
2 | + <div class="go-decorates-line"> | |
3 | + <svg :width="w" :height="h"> | |
4 | + <line :x1="0" :y1="h / 2" :x2="w" :y2="h / 2" :stroke="o_color" :stroke-width="h"></line> | |
5 | + <line :x1="0" :y1="h / 2" :x2="w" :y2="h / 2" :stroke="i_color" :stroke-width="h / 2" :class="line_class"></line> | |
6 | + </svg> | |
7 | + </div> | |
8 | +</template> | |
9 | + | |
10 | +<script setup lang="ts"> | |
11 | +import { PropType, toRefs } from 'vue' | |
12 | +import { CreateComponentType } from '@/packages/index.d' | |
13 | + | |
14 | +const props = defineProps({ | |
15 | + chartConfig: { | |
16 | + type: Object as PropType<CreateComponentType>, | |
17 | + required: true | |
18 | + } | |
19 | +}) | |
20 | + | |
21 | +const { w, h } = toRefs(props.chartConfig.attr) | |
22 | +const { o_color, i_color, line_class } = toRefs(props.chartConfig.option) | |
23 | +</script> | |
24 | + | |
25 | +<style lang="scss" scoped> | |
26 | +.go-decorates-line { | |
27 | + font-size: 0; | |
28 | +} | |
29 | + | |
30 | +/* 正向流动效果 */ | |
31 | +.svg_ani_flow { | |
32 | + stroke-dasharray: 1000; | |
33 | + stroke-dashoffset: 1000; | |
34 | + animation: ani_flow 10s linear infinite; | |
35 | + animation-fill-mode: forwards; | |
36 | + -webkit-animation: ani_flow 10s linear infinite; | |
37 | + -webkit-animation-fill-mode: forwards; | |
38 | +} | |
39 | + | |
40 | +@keyframes ani_flow { | |
41 | + from { | |
42 | + stroke-dasharray: 10, 5; | |
43 | + } | |
44 | + | |
45 | + to { | |
46 | + stroke-dasharray: 13, 5; | |
47 | + } | |
48 | +} | |
49 | +@-webkit-keyframes ani_flow { | |
50 | + from { | |
51 | + stroke-dasharray: 10, 5; | |
52 | + } | |
53 | + | |
54 | + to { | |
55 | + stroke-dasharray: 13, 5; | |
56 | + } | |
57 | +} | |
58 | + | |
59 | +/* 停止流动效果 */ | |
60 | +.svg_ani_flow_stop { | |
61 | + stroke-dasharray: 1000; | |
62 | + stroke-dashoffset: 1000; | |
63 | + animation: ani_flow_stop 10s linear infinite; | |
64 | + animation-fill-mode: forwards; | |
65 | + -webkit-animation: ani_flow_stop 10s linear infinite; | |
66 | + -webkit-animation-fill-mode: forwards; | |
67 | +} | |
68 | + | |
69 | +@keyframes ani_flow_stop { | |
70 | + from { | |
71 | + stroke-dasharray: 10, 5; | |
72 | + } | |
73 | + | |
74 | + to { | |
75 | + stroke-dasharray: 10, 5; | |
76 | + } | |
77 | +} | |
78 | +@-webkit-keyframes ani_flow_stop { | |
79 | + from { | |
80 | + stroke-dasharray: 10, 5; | |
81 | + } | |
82 | + | |
83 | + to { | |
84 | + stroke-dasharray: 10, 5; | |
85 | + } | |
86 | +} | |
87 | +/* 反向流动效果 */ | |
88 | +.svg_ani_flow_back { | |
89 | + stroke-dasharray: 1000; | |
90 | + stroke-dashoffset: 1000; | |
91 | + animation: ani_flow_back 10s linear infinite; | |
92 | + animation-fill-mode: forwards; | |
93 | + -webkit-animation: ani_flow_back 10s linear infinite; | |
94 | + -webkit-animation-fill-mode: forwards; | |
95 | +} | |
96 | + | |
97 | +@keyframes ani_flow_back { | |
98 | + from { | |
99 | + stroke-dasharray: 13, 5; | |
100 | + } | |
101 | + | |
102 | + to { | |
103 | + stroke-dasharray: 10, 5; | |
104 | + } | |
105 | +} | |
106 | +@-webkit-keyframes ani_flow_stop { | |
107 | + from { | |
108 | + stroke-dasharray: 10, 5; | |
109 | + } | |
110 | + | |
111 | + to { | |
112 | + stroke-dasharray: 10, 5; | |
113 | + } | |
114 | +} | |
115 | +/* 以最大40高度填充 */ | |
116 | +.svg_ani_fill_h40 { | |
117 | + animation: ani_fill_h40 5s linear infinite; | |
118 | + animation-fill-mode: forwards; | |
119 | + -webkit-animation: ani_fill_h40 5s linear infinite; | |
120 | + -webkit-animation-fill-mode: forwards; | |
121 | +} | |
122 | + | |
123 | +@keyframes ani_fill_h40 { | |
124 | + from { | |
125 | + height: 0px; | |
126 | + } | |
127 | + | |
128 | + to { | |
129 | + height: 40px; | |
130 | + } | |
131 | +} | |
132 | +@-webkit-keyframes ani_flow_stop { | |
133 | + from { | |
134 | + stroke-dasharray: 10, 5; | |
135 | + } | |
136 | + | |
137 | + to { | |
138 | + stroke-dasharray: 10, 5; | |
139 | + } | |
140 | +} | |
141 | +</style> | ... | ... |
1 | +import { PublicConfigClass } from '@/packages/public' | |
2 | +import { CreateComponentType } from '@/packages/index.d' | |
3 | +import { chartInitConfig } from '@/settings/designSetting' | |
4 | +import { PipelineVConfig } from './index' | |
5 | +import cloneDeep from 'lodash/cloneDeep' | |
6 | + | |
7 | +export const option = { | |
8 | + color_type: 1, | |
9 | + o_color: '#0a7ae2', | |
10 | + i_color: '#119bfa', | |
11 | + line_class: 'svg_ani_flow' | |
12 | +} | |
13 | + | |
14 | +export default class Config extends PublicConfigClass implements CreateComponentType { | |
15 | + public key = PipelineVConfig.key | |
16 | + public attr = { ...chartInitConfig, w: 15, h: 500, zIndex: -1 } | |
17 | + public chartConfig = cloneDeep(PipelineVConfig) | |
18 | + public option = cloneDeep(option) | |
19 | +} | ... | ... |
1 | +<template> | |
2 | + <CollapseItem name="管道" :expanded="true"> | |
3 | + <SettingItemBox name="默认颜色"> | |
4 | + <SettingItem> | |
5 | + <n-select v-model:value="optionData.color_type" :options="colorOptions" @update:value="handleColorChange" /> | |
6 | + </SettingItem> | |
7 | + </SettingItemBox> | |
8 | + <SettingItemBox name="管道颜色"> | |
9 | + <SettingItem> | |
10 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.o_color"></n-color-picker> | |
11 | + </SettingItem> | |
12 | + </SettingItemBox> | |
13 | + <SettingItemBox name="水流颜色"> | |
14 | + <SettingItem> | |
15 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.i_color"></n-color-picker> | |
16 | + </SettingItem> | |
17 | + </SettingItemBox> | |
18 | + <SettingItemBox name="流向"> | |
19 | + <SettingItem> | |
20 | + <n-select v-model:value="optionData.line_class" :options="options" /> | |
21 | + </SettingItem> | |
22 | + </SettingItemBox> | |
23 | + </CollapseItem> | |
24 | +</template> | |
25 | + | |
26 | +<script setup lang="ts"> | |
27 | +import { PropType, ref } from 'vue' | |
28 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | |
29 | +import { option } from './config' | |
30 | + | |
31 | +const props = defineProps({ | |
32 | + optionData: { | |
33 | + type: Object as PropType<typeof option>, | |
34 | + required: true | |
35 | + } | |
36 | +}) | |
37 | + | |
38 | +const options = ref([ | |
39 | + { | |
40 | + value: 'svg_ani_flow', | |
41 | + label: '正向' | |
42 | + }, | |
43 | + { | |
44 | + value: 'svg_ani_flow_back', | |
45 | + label: '反向' | |
46 | + }, | |
47 | + { | |
48 | + value: 'svg_ani_flow_stop', | |
49 | + label: '停止' | |
50 | + } | |
51 | +]) | |
52 | + | |
53 | +const colorOptions = ref([ | |
54 | + { | |
55 | + value: 1, | |
56 | + label: '蓝' | |
57 | + }, | |
58 | + { | |
59 | + value: 2, | |
60 | + label: '黄' | |
61 | + } | |
62 | +]) | |
63 | + | |
64 | +// 默认颜色 | |
65 | +const handleColorChange = (e: number) => { | |
66 | + switch (e) { | |
67 | + case 1: | |
68 | + props.optionData.o_color = '#0a7ae2' | |
69 | + props.optionData.i_color = '#119bfa' | |
70 | + break | |
71 | + case 2: | |
72 | + props.optionData.o_color = '#ff9d00' | |
73 | + props.optionData.i_color = '#f7ea37' | |
74 | + break | |
75 | + } | |
76 | +} | |
77 | +</script> | ... | ... |
1 | +import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | |
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | |
3 | + | |
4 | +export const PipelineVConfig: ConfigType = { | |
5 | + key: 'PipelineV', | |
6 | + chartKey: 'VPipelineV', | |
7 | + conKey: 'VCPipelineV', | |
8 | + title: '管道-纵向', | |
9 | + category: ChatCategoryEnum.MORE, | |
10 | + categoryName: ChatCategoryEnumName.MORE, | |
11 | + package: PackagesCategoryEnum.DECORATES, | |
12 | + image: 'Pipeline_V.png' | |
13 | +} | |
14 | + | ... | ... |
1 | +<template> | |
2 | + <div class="go-decorates-line"> | |
3 | + <svg :width="w" :height="h"> | |
4 | + <line :x1="w / 2" :y1="0" :x2="w / 2" :y2="h" :stroke="o_color" :stroke-width="w"></line> | |
5 | + <line :x1="w / 2" :y1="0" :x2="w / 2" :y2="h" :stroke="i_color" :stroke-width="w / 2" :class="line_class"></line> | |
6 | + </svg> | |
7 | + </div> | |
8 | +</template> | |
9 | + | |
10 | +<script setup lang="ts"> | |
11 | +import { PropType, toRefs } from 'vue' | |
12 | +import { CreateComponentType } from '@/packages/index.d' | |
13 | + | |
14 | +const props = defineProps({ | |
15 | + chartConfig: { | |
16 | + type: Object as PropType<CreateComponentType>, | |
17 | + required: true | |
18 | + } | |
19 | +}) | |
20 | + | |
21 | +const { w, h } = toRefs(props.chartConfig.attr) | |
22 | +const { o_color, i_color, line_class } = toRefs(props.chartConfig.option) | |
23 | +</script> | |
24 | + | |
25 | +<style lang="scss" scoped> | |
26 | +.go-decorates-line { | |
27 | + font-size: 0; | |
28 | +} | |
29 | + | |
30 | +/* 正向流动效果 */ | |
31 | +.svg_ani_flow { | |
32 | + stroke-dasharray: 1000; | |
33 | + stroke-dashoffset: 1000; | |
34 | + animation: ani_flow 10s linear infinite; | |
35 | + animation-fill-mode: forwards; | |
36 | + -webkit-animation: ani_flow 10s linear infinite; | |
37 | + -webkit-animation-fill-mode: forwards; | |
38 | +} | |
39 | + | |
40 | +@keyframes ani_flow { | |
41 | + from { | |
42 | + stroke-dasharray: 10, 5; | |
43 | + } | |
44 | + | |
45 | + to { | |
46 | + stroke-dasharray: 13, 5; | |
47 | + } | |
48 | +} | |
49 | +@-webkit-keyframes ani_flow { | |
50 | + from { | |
51 | + stroke-dasharray: 10, 5; | |
52 | + } | |
53 | + | |
54 | + to { | |
55 | + stroke-dasharray: 13, 5; | |
56 | + } | |
57 | +} | |
58 | + | |
59 | +/* 停止流动效果 */ | |
60 | +.svg_ani_flow_stop { | |
61 | + stroke-dasharray: 1000; | |
62 | + stroke-dashoffset: 1000; | |
63 | + animation: ani_flow_stop 10s linear infinite; | |
64 | + animation-fill-mode: forwards; | |
65 | + -webkit-animation: ani_flow_stop 10s linear infinite; | |
66 | + -webkit-animation-fill-mode: forwards; | |
67 | +} | |
68 | + | |
69 | +@keyframes ani_flow_stop { | |
70 | + from { | |
71 | + stroke-dasharray: 10, 5; | |
72 | + } | |
73 | + | |
74 | + to { | |
75 | + stroke-dasharray: 10, 5; | |
76 | + } | |
77 | +} | |
78 | +@-webkit-keyframes ani_flow_stop { | |
79 | + from { | |
80 | + stroke-dasharray: 10, 5; | |
81 | + } | |
82 | + | |
83 | + to { | |
84 | + stroke-dasharray: 10, 5; | |
85 | + } | |
86 | +} | |
87 | +/* 反向流动效果 */ | |
88 | +.svg_ani_flow_back { | |
89 | + stroke-dasharray: 1000; | |
90 | + stroke-dashoffset: 1000; | |
91 | + animation: ani_flow_back 10s linear infinite; | |
92 | + animation-fill-mode: forwards; | |
93 | + -webkit-animation: ani_flow_back 10s linear infinite; | |
94 | + -webkit-animation-fill-mode: forwards; | |
95 | +} | |
96 | + | |
97 | +@keyframes ani_flow_back { | |
98 | + from { | |
99 | + stroke-dasharray: 13, 5; | |
100 | + } | |
101 | + | |
102 | + to { | |
103 | + stroke-dasharray: 10, 5; | |
104 | + } | |
105 | +} | |
106 | +@-webkit-keyframes ani_flow_back { | |
107 | + from { | |
108 | + stroke-dasharray: 13, 5; | |
109 | + } | |
110 | + | |
111 | + to { | |
112 | + stroke-dasharray: 10, 5; | |
113 | + } | |
114 | +} | |
115 | +</style> | ... | ... |
... | ... | @@ -3,5 +3,7 @@ import { TimeCommonConfig } from './TimeCommon/index' |
3 | 3 | import { ClockConfig } from './Clock/index' |
4 | 4 | import { CountDownConfig } from './CountDown/index' |
5 | 5 | import { FlipperNumberConfig } from './FlipperNumber' |
6 | +import { PipelineHConfig } from './PipelineH/index' | |
7 | +import { PipelineVConfig } from './PipelineV/index' | |
6 | 8 | |
7 | -export default [NumberConfig, FlipperNumberConfig, TimeCommonConfig, CountDownConfig, ClockConfig] | |
9 | +export default [NumberConfig, FlipperNumberConfig, TimeCommonConfig, CountDownConfig, ClockConfig, PipelineHConfig, PipelineVConfig] | ... | ... |
... | ... | @@ -15,11 +15,11 @@ export interface IResources { |
15 | 15 | const fileSuffix = ['earth', 'gradient', 'redCircle', 'label', 'aperture', 'glow', 'light_column', 'aircraft'] |
16 | 16 | const textures: ITextures[] = [] |
17 | 17 | |
18 | -const modules = import.meta.globEager("../../images/earth/*"); | |
18 | +const modules: Record<string, { default: string }> = import.meta.glob("../../images/earth/*", { eager: true }); | |
19 | 19 | |
20 | -for(let item in modules) { | |
20 | +for (const item in modules) { | |
21 | 21 | const n = item.split('/').pop() |
22 | - if(n) { | |
22 | + if (n) { | |
23 | 23 | textures.push({ |
24 | 24 | name: n.split('.')[0], |
25 | 25 | url: modules[item].default | ... | ... |
1 | +import { IconConfig } from '../Default/Icon/index' | |
2 | +import { PackagesCategoryEnum } from '@/packages/index.d' | |
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../index.d' | |
4 | + | |
5 | +const iconNames = [ | |
6 | + 'uim:adobe', | |
7 | + 'uim:airplay', | |
8 | + 'uim:align', | |
9 | + 'uim:angle-double-down', | |
10 | + 'uim:angle-double-left', | |
11 | + 'uim:angle-double-right', | |
12 | + 'uim:angle-double-up', | |
13 | + 'uim:angle-down', | |
14 | + 'uim:angle-left', | |
15 | + 'uim:angle-right', | |
16 | + 'uim:angle-up', | |
17 | + 'uim:android-alt', | |
18 | + 'uim:apple', | |
19 | + 'uim:apps', | |
20 | + 'uim:bag', | |
21 | + 'uim:battery-bolt', | |
22 | + 'uim:bing', | |
23 | + 'uim:box', | |
24 | + 'uim:briefcase', | |
25 | + 'uim:calender', | |
26 | + 'uim:chart', | |
27 | + 'uim:chart-pie', | |
28 | + 'uim:circle-layer', | |
29 | + 'uim:clinic-medical', | |
30 | + 'uim:clock', | |
31 | + 'uim:comment-alt', | |
32 | + 'uim:comment-alt-dots', | |
33 | + 'uim:docker', | |
34 | + 'uim:download-alt', | |
35 | + 'uim:dribbble', | |
36 | + 'uim:dropbox', | |
37 | + 'uim:entry', | |
38 | + 'uim:exclamation-circle', | |
39 | + 'uim:exclamation-triangle', | |
40 | + 'uim:exit', | |
41 | + 'uim:facebook', | |
42 | + 'uim:facebook-messenger', | |
43 | + 'uim:facebook-messenger-alt', | |
44 | + 'uim:google-drive', | |
45 | + 'uim:google-play', | |
46 | + 'uim:graph-bar', | |
47 | + 'uim:head-side-mask', | |
48 | + 'uim:horizontal-align-left', | |
49 | + 'uim:hospital', | |
50 | + 'uim:house-user', | |
51 | + 'uim:image-v', | |
52 | + 'uim:key-skeleton', | |
53 | + 'uim:layer-group', | |
54 | + 'uim:layers-alt', | |
55 | + 'uim:link-h', | |
56 | + 'uim:microscope', | |
57 | + 'uim:microsoft', | |
58 | + 'uim:object-group', | |
59 | + 'uim:object-ungroup', | |
60 | + 'uim:paypal', | |
61 | + 'uim:refresh', | |
62 | + 'uim:repeat', | |
63 | + 'uim:right-indent-alt', | |
64 | + 'uim:rocket', | |
65 | + 'uim:shield-plus', | |
66 | + 'uim:social-distancing', | |
67 | + 'uim:telegram-alt', | |
68 | + 'uim:user-md', | |
69 | + 'uim:toilet-paper', | |
70 | + 'uim:youtube' | |
71 | +] | |
72 | +const iconList = iconNames.map(name => ({ | |
73 | + ...IconConfig, | |
74 | + category: ChatCategoryEnum.COMMON, | |
75 | + categoryName: ChatCategoryEnumName.COMMON, | |
76 | + package: PackagesCategoryEnum.ICONS, | |
77 | + image: name, | |
78 | + icon: name, | |
79 | + dataset: name, | |
80 | + title: name.replace('uim:', ''), | |
81 | + redirectComponent: `${IconConfig.package}/${IconConfig.category}/${IconConfig.key}` // 跳转组件路径规则:packageName/categoryName/componentKey | |
82 | +})) | |
83 | + | |
84 | +export default iconList | ... | ... |
1 | +import { PublicConfigClass } from '@/packages/public' | |
2 | +import { CreateComponentType } from '@/packages/index.d' | |
3 | +import { chartInitConfig } from '@/settings/designSetting' | |
4 | +import { IconConfig } from './index' | |
5 | +import cloneDeep from 'lodash/cloneDeep' | |
6 | + | |
7 | +export const option = { | |
8 | + // 图标名称 | |
9 | + dataset: 'uim:apple', | |
10 | + color: '#03A9F4', | |
11 | + size: 64, | |
12 | + rotate: 0 // 旋转角度 | |
13 | +} | |
14 | + | |
15 | +export default class Config extends PublicConfigClass implements CreateComponentType { | |
16 | + public key = IconConfig.key | |
17 | + public attr = { ...chartInitConfig, w: 64, h: 64, zIndex: 1 } | |
18 | + public chartConfig = cloneDeep(IconConfig) | |
19 | + public option = cloneDeep(option) | |
20 | +} | ... | ... |
1 | +<template> | |
2 | + <collapse-item name="属性" :expanded="true"> | |
3 | + <setting-item-box name="样式"> | |
4 | + <setting-item name="颜色"> | |
5 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker> | |
6 | + </setting-item> | |
7 | + <setting-item name="尺寸"> | |
8 | + <n-input-number v-model:value="optionData.size" size="small" :min="0" placeholder="尺寸"></n-input-number> | |
9 | + </setting-item> | |
10 | + </setting-item-box> | |
11 | + <setting-item-box name="旋转"> | |
12 | + <setting-item name="旋转"> | |
13 | + <n-select v-model:value="optionData.rotate" size="small" :options="rotateMode"></n-select> | |
14 | + </setting-item> | |
15 | + </setting-item-box> | |
16 | + </collapse-item> | |
17 | +</template> | |
18 | + | |
19 | +<script setup lang="ts"> | |
20 | +import { PropType } from 'vue' | |
21 | +import { option } from './config' | |
22 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | |
23 | + | |
24 | +const props = defineProps({ | |
25 | + optionData: { | |
26 | + type: Object as PropType<typeof option>, | |
27 | + required: true | |
28 | + } | |
29 | +}) | |
30 | + | |
31 | +// 旋转方式 | |
32 | +const rotateMode = [ | |
33 | + { | |
34 | + value: 0, | |
35 | + label: '0°' | |
36 | + }, | |
37 | + { | |
38 | + value: 1, | |
39 | + label: '90°' | |
40 | + }, | |
41 | + { | |
42 | + value: 2, | |
43 | + label: '180°' | |
44 | + }, | |
45 | + { | |
46 | + value: 3, | |
47 | + label: '270°' | |
48 | + } | |
49 | +] | |
50 | +</script> | ... | ... |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | |
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | |
3 | + | |
4 | +export const IconConfig: ConfigType = { | |
5 | + key: 'Icon', | |
6 | + chartKey: 'VIcon', | |
7 | + conKey: 'VCIcon', | |
8 | + title: '图标', | |
9 | + category: ChatCategoryEnum.DEFAULT, | |
10 | + categoryName: ChatCategoryEnumName.DEFAULT, | |
11 | + package: PackagesCategoryEnum.ICONS, | |
12 | + chartFrame: ChartFrameEnum.STATIC, | |
13 | + image: 'icon.png' | |
14 | +} | ... | ... |
1 | +<template> | |
2 | + <div class="go-icon-box"> | |
3 | + <Icon :icon="((dataset || '') as string)" :color="color" :width="size" :rotate="rotate" /> | |
4 | + </div> | |
5 | +</template> | |
6 | + | |
7 | +<script setup lang="ts"> | |
8 | +import { PropType, toRefs } from 'vue' | |
9 | +import { CreateComponentType } from '@/packages/index.d' | |
10 | +import { Icon } from '@iconify/vue' | |
11 | + | |
12 | +const props = defineProps({ | |
13 | + chartConfig: { | |
14 | + type: Object as PropType<CreateComponentType>, | |
15 | + required: true | |
16 | + } | |
17 | +}) | |
18 | + | |
19 | +const { w, h } = toRefs(props.chartConfig.attr) | |
20 | +const { dataset, color, size, rotate } = toRefs(props.chartConfig.option) | |
21 | +</script> | |
22 | + | |
23 | +<style lang="scss" scoped> | |
24 | +@include go('icon-box') { | |
25 | + display: flex; | |
26 | + align-items: center; | |
27 | + justify-content: center; | |
28 | + width: v-bind('`${w}px`'); | |
29 | + height: v-bind('`${h}px`'); | |
30 | +} | |
31 | +</style> | ... | ... |
1 | +import { IconConfig } from '../Default/Icon/index' | |
2 | +import { PackagesCategoryEnum } from '@/packages/index.d' | |
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../index.d' | |
4 | + | |
5 | +const iconNames = [ | |
6 | + 'line-md:beer-alt-filled-loop', | |
7 | + 'line-md:beer-alt-twotone-loop', | |
8 | + 'line-md:cloud-braces-loop', | |
9 | + 'line-md:cloud-download-loop', | |
10 | + 'line-md:cloud-download-outline-loop', | |
11 | + 'line-md:cloud-upload-loop', | |
12 | + 'line-md:cloud-upload-outline-loop', | |
13 | + 'line-md:coffee-half-empty-twotone-loop', | |
14 | + 'line-md:coffee-loop', | |
15 | + 'line-md:coffee-twotone-loop', | |
16 | + 'line-md:downloading-loop', | |
17 | + 'line-md:github-loop', | |
18 | + 'line-md:light-dark-loop', | |
19 | + 'line-md:loading-alt-loop', | |
20 | + 'line-md:loading-loop', | |
21 | + 'line-md:loading-twotone-loop', | |
22 | + 'line-md:moon-alt-loop', | |
23 | + 'line-md:moon-alt-to-sunny-outline-loop-transition', | |
24 | + 'line-md:moon-filled-loop', | |
25 | + 'line-md:moon-filled-to-sunny-filled-loop-transition', | |
26 | + 'line-md:star-pulsating-filled-loop', | |
27 | + 'line-md:star-pulsating-loop', | |
28 | + 'line-md:star-pulsating-twotone-loop', | |
29 | + 'line-md:upload-loop', | |
30 | + 'line-md:upload-outline-loop', | |
31 | + 'line-md:uploading-loop' | |
32 | +] | |
33 | +const iconList = iconNames.map(name => ({ | |
34 | + ...IconConfig, | |
35 | + category: ChatCategoryEnum.ML, | |
36 | + categoryName: ChatCategoryEnumName.ML, | |
37 | + package: PackagesCategoryEnum.ICONS, | |
38 | + image: name, | |
39 | + icon: name, | |
40 | + dataset: name, | |
41 | + title: name.replace('line-md:', ''), | |
42 | + redirectComponent: `${IconConfig.package}/${IconConfig.category}/${IconConfig.key}` // 跳转组件路径规则:packageName/categoryName/componentKey | |
43 | +})) | |
44 | + | |
45 | +export default iconList | ... | ... |
1 | +import { IconConfig } from '../Default/Icon/index' | |
2 | +import { PackagesCategoryEnum } from '@/packages/index.d' | |
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../index.d' | |
4 | + | |
5 | +const iconNames = [ | |
6 | + 'wi:cloud', | |
7 | + 'wi:cloudy', | |
8 | + 'wi:cloudy-gusts', | |
9 | + 'wi:cloudy-windy', | |
10 | + 'wi:day-cloudy', | |
11 | + 'wi:day-cloudy-high', | |
12 | + 'wi:day-hail', | |
13 | + 'wi:day-haze', | |
14 | + 'wi:day-light-wind', | |
15 | + 'wi:day-lightning', | |
16 | + 'wi:day-rain', | |
17 | + 'wi:day-rain-mix', | |
18 | + 'wi:day-rain-wind', | |
19 | + 'wi:day-showers', | |
20 | + 'wi:day-sleet', | |
21 | + 'wi:day-sleet-storm', | |
22 | + 'wi:day-snow', | |
23 | + 'wi:day-snow-thunderstorm', | |
24 | + 'wi:day-snow-wind', | |
25 | + 'wi:day-sprinkle', | |
26 | + 'wi:day-storm-showers', | |
27 | + 'wi:day-sunny', | |
28 | + 'wi:day-sunny-overcast', | |
29 | + 'wi:hail', | |
30 | + 'wi:horizon', | |
31 | + 'wi:horizon-alt', | |
32 | + 'wi:hot', | |
33 | + 'wi:lightning', | |
34 | + 'wi:night-alt-cloudy', | |
35 | + 'wi:night-alt-cloudy-gusts', | |
36 | + 'wi:night-alt-cloudy-high', | |
37 | + 'wi:night-alt-hail', | |
38 | + 'wi:night-alt-lightning', | |
39 | + 'wi:umbrella' | |
40 | +] | |
41 | +const iconList = iconNames.map(name => ({ | |
42 | + ...IconConfig, | |
43 | + category: ChatCategoryEnum.WEATHER, | |
44 | + categoryName: ChatCategoryEnumName.WEATHER, | |
45 | + package: PackagesCategoryEnum.ICONS, | |
46 | + image: name, | |
47 | + icon: name, | |
48 | + dataset: name, | |
49 | + title: name.replace('wi:', ''), | |
50 | + redirectComponent: `${IconConfig.package}/${IconConfig.category}/${IconConfig.key}` // 跳转组件路径规则:packageName/categoryName/componentKey | |
51 | +})) | |
52 | + | |
53 | +export default iconList | ... | ... |
src/packages/components/Icons/index.d.ts
0 → 100644
1 | +export enum ChatCategoryEnum { | |
2 | + ML = 'MaterialLine', | |
3 | + COMMON = 'Common', | |
4 | + WEATHER = 'Weather', | |
5 | + DEFAULT = 'Default' // 这个仅用来表示组件分类目录,不要在 index.ts 中导入 | |
6 | +} | |
7 | + | |
8 | +export enum ChatCategoryEnumName { | |
9 | + ML = '动画', | |
10 | + COMMON = '通用', | |
11 | + WEATHER = '天气', | |
12 | + DEFAULT = '默认' | |
13 | +} | ... | ... |
src/packages/components/Icons/index.ts
0 → 100644
... | ... | @@ -12,7 +12,9 @@ export const option = { |
12 | 12 | [COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATE, |
13 | 13 | // 下拉展示 |
14 | 14 | isPanel: 0, |
15 | - dataset: dayjs().valueOf() | |
15 | + dataset: dayjs().valueOf(), | |
16 | + differValue: 0 | |
17 | + | |
16 | 18 | } |
17 | 19 | |
18 | 20 | export default class Config extends PublicConfigClass implements CreateComponentType { | ... | ... |
1 | 1 | <template> |
2 | 2 | <collapse-item name="展示方式" :expanded="true"> |
3 | 3 | <setting-item-box name="选择方式"> |
4 | - <n-select | |
5 | - v-model:value="optionData.isPanel" | |
6 | - size="small" | |
7 | - :options="panelOptions" | |
8 | - /> | |
4 | + <n-select v-model:value="optionData.isPanel" size="small" :options="panelOptions" /> | |
9 | 5 | </setting-item-box> |
10 | 6 | </collapse-item> |
11 | 7 | |
12 | 8 | <collapse-item name="时间配置" :expanded="true"> |
13 | 9 | <setting-item-box name="基础"> |
14 | 10 | <setting-item name="类型"> |
15 | - <n-select | |
16 | - v-model:value="optionData.componentInteractEventKey" | |
17 | - size="small" | |
18 | - :options="datePickerTypeOptions" | |
19 | - /> | |
11 | + <n-select v-model:value="optionData.componentInteractEventKey" size="small" :options="datePickerTypeOptions" /> | |
20 | 12 | </setting-item> |
21 | 13 | </setting-item-box> |
22 | 14 | |
23 | 15 | <setting-item-box name="默认值" :alone="true"> |
24 | - <n-date-picker | |
25 | - size="small" | |
26 | - v-model:value="optionData.dataset" | |
27 | - :type="optionData.componentInteractEventKey" | |
28 | - /> | |
16 | + <n-date-picker size="small" v-model:value="optionData.dataset" :type="optionData.componentInteractEventKey" /> | |
17 | + </setting-item-box> | |
18 | + | |
19 | + <setting-item-box :alone="true"> | |
20 | + <template #name> | |
21 | + <n-text>动态</n-text> | |
22 | + <n-tooltip trigger="hover"> | |
23 | + <template #trigger> | |
24 | + <n-icon size="21" :depth="3"> | |
25 | + <help-outline-icon></help-outline-icon> | |
26 | + </n-icon> | |
27 | + </template> | |
28 | + <n-text>动态值不为0时,默认值:取当天时间相加当前值</n-text> | |
29 | + </n-tooltip> | |
30 | + </template> | |
31 | + <n-input-number v-model:value="optionData.differValue" class="input-num-width" size="small" :min="-40" :max="40"> | |
32 | + <template #suffix> 天 </template> | |
33 | + </n-input-number> | |
29 | 34 | </setting-item-box> |
30 | 35 | </collapse-item> |
31 | 36 | </template> | ... | ... |
... | ... | @@ -39,9 +39,9 @@ const onChange = (v: number | number[]) => { |
39 | 39 | props.chartConfig, |
40 | 40 | useChartEditStore, |
41 | 41 | { |
42 | - [ComponentInteractParamsEnum.DATE_START]: v[0] | dayjs().valueOf(), | |
43 | - [ComponentInteractParamsEnum.DATE_END]: v[1] | dayjs().valueOf(), | |
44 | - [ComponentInteractParamsEnum.DATE_RANGE]: `${v[0]}-${v[1]}` | |
42 | + [ComponentInteractParamsEnum.DATE_START]: v[0] || dayjs().valueOf(), | |
43 | + [ComponentInteractParamsEnum.DATE_END]: v[1] || dayjs().valueOf(), | |
44 | + [ComponentInteractParamsEnum.DATE_RANGE]: `${v[0] || dayjs().valueOf()}-${v[1] || dayjs().valueOf()}` | |
45 | 45 | }, |
46 | 46 | InteractEventOn.CHANGE |
47 | 47 | ) |
... | ... | @@ -50,7 +50,7 @@ const onChange = (v: number | number[]) => { |
50 | 50 | useChartInteract( |
51 | 51 | props.chartConfig, |
52 | 52 | useChartEditStore, |
53 | - { [ComponentInteractParamsEnum.DATE]: v }, | |
53 | + { [ComponentInteractParamsEnum.DATE]: v || dayjs().valueOf() }, | |
54 | 54 | InteractEventOn.CHANGE |
55 | 55 | ) |
56 | 56 | } |
... | ... | @@ -68,6 +68,25 @@ watch( |
68 | 68 | immediate: true |
69 | 69 | } |
70 | 70 | ) |
71 | + | |
72 | +// 手动更新 | |
73 | +watch( | |
74 | + () => props.chartConfig.option.differValue, | |
75 | + (newData: number) => { | |
76 | + if (props.chartConfig.option.differValue === 0) return | |
77 | + if (typeof option.dataset === 'object') { | |
78 | + option.dataset[0] = dayjs().add(newData, 'day').valueOf() | |
79 | + option.dataset[1] = dayjs().add(newData, 'day').valueOf() | |
80 | + } else { | |
81 | + option.dataset = dayjs().add(newData, 'day').valueOf() | |
82 | + } | |
83 | + // 关联目标组件首次请求带上默认内容 | |
84 | + onChange(newData) | |
85 | + }, | |
86 | + { | |
87 | + immediate: true | |
88 | + } | |
89 | +) | |
71 | 90 | </script> |
72 | 91 | |
73 | 92 | <style lang="scss" scoped> | ... | ... |
... | ... | @@ -3,11 +3,11 @@ import { CreateComponentType } from '@/packages/index.d' |
3 | 3 | import { CarouselConfig } from './index' |
4 | 4 | import cloneDeep from 'lodash/cloneDeep' |
5 | 5 | import logo from '@/assets/logo.png' |
6 | - | |
6 | + | |
7 | 7 | // 示例图片资源 |
8 | -const modules = import.meta.globEager("./images/*"); | |
8 | +const modules: Record<string, { default: string }> = import.meta.glob("./images/*", {eager: true}); | |
9 | 9 | const dataset = [logo] |
10 | -for (var item in modules) { | |
10 | +for (const item in modules) { | |
11 | 11 | dataset.push(modules[item].default) |
12 | 12 | } |
13 | 13 | ... | ... |
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <collapse-item name="信息" :expanded="true"> |
3 | 3 | <setting-item-box name="文字" :alone="true"> |
4 | 4 | <setting-item> |
5 | - <n-input v-model:value="optionData.dataset" size="small"></n-input> | |
5 | + <n-input v-model:value="optionData.dataset" type="textarea" size="small"></n-input> | |
6 | 6 | </setting-item> |
7 | 7 | </setting-item-box> |
8 | 8 | <setting-item-box name="链接" :alone="true"> |
... | ... | @@ -30,11 +30,7 @@ |
30 | 30 | <n-input-number v-model:value="optionData.fontSize" size="small" placeholder="字体大小"></n-input-number> |
31 | 31 | </setting-item> |
32 | 32 | <setting-item name="字体粗细"> |
33 | - <n-select | |
34 | - v-model:value="optionData.fontWeight" | |
35 | - size="small" | |
36 | - :options="fontWeightOptions" | |
37 | - /> | |
33 | + <n-select v-model:value="optionData.fontWeight" size="small" :options="fontWeightOptions" /> | |
38 | 34 | </setting-item> |
39 | 35 | <setting-item name="X轴内边距"> |
40 | 36 | <n-input-number v-model:value="optionData.paddingX" size="small" placeholder="输入内边距"></n-input-number> |
... | ... | @@ -87,9 +83,7 @@ |
87 | 83 | |
88 | 84 | <script setup lang="ts"> |
89 | 85 | import { PropType } from 'vue' |
90 | -import { option, WritingModeEnum, WritingModeObject, | |
91 | - FontWeightEnum, | |
92 | - FontWeightObject, } from './config' | |
86 | +import { option, WritingModeEnum, WritingModeObject, FontWeightEnum, FontWeightObject } from './config' | |
93 | 87 | import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' |
94 | 88 | const props = defineProps({ |
95 | 89 | optionData: { |
... | ... | @@ -117,13 +111,13 @@ const verticalOptions = [ |
117 | 111 | const fontWeightOptions = [ |
118 | 112 | { |
119 | 113 | label: FontWeightEnum.NORMAL, |
120 | - value: FontWeightObject[FontWeightEnum.NORMAL], | |
114 | + value: FontWeightObject[FontWeightEnum.NORMAL] | |
121 | 115 | }, |
122 | 116 | { |
123 | 117 | label: FontWeightEnum.BOLD, |
124 | - value: FontWeightObject[FontWeightEnum.BOLD], | |
125 | - }, | |
126 | -]; | |
118 | + value: FontWeightObject[FontWeightEnum.BOLD] | |
119 | + } | |
120 | +] | |
127 | 121 | const handleLinkClick = () => { |
128 | 122 | window.open(props.optionData.linkHead + props.optionData.link) |
129 | 123 | } | ... | ... |
1 | 1 | <template> |
2 | 2 | <div class="go-text-box"> |
3 | 3 | <div class="content"> |
4 | - <span style="cursor: pointer" v-if="link" @click="click">{{ option.dataset }}</span> | |
5 | - <span v-else>{{ option.dataset }}</span> | |
4 | + <span style="cursor: pointer; white-space: pre-wrap" v-if="link" @click="click"></span> | |
5 | + <span style="white-space: pre-wrap" v-else>{{ option.dataset }}</span> | |
6 | 6 | </div> |
7 | 7 | </div> |
8 | 8 | </template> |
... | ... | @@ -82,7 +82,7 @@ const click = () => { |
82 | 82 | border-width: v-bind('borderWidth + "px"'); |
83 | 83 | border-radius: v-bind('borderRadius + "px"'); |
84 | 84 | border-color: v-bind('borderColor'); |
85 | - | |
85 | + | |
86 | 86 | background-color: v-bind('backgroundColor'); |
87 | 87 | } |
88 | 88 | } | ... | ... |
1 | +import { ChartFrameEnum, ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | |
2 | +import { ImageConfig } from '@/packages/components/Informations/Mores/Image/index' | |
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../index.d' | |
4 | +import { setLocalStorage, getLocalStorage, goDialog } from '@/utils' | |
5 | +import { StorageEnum } from '@/enums/storageEnum' | |
6 | +import { FileTypeEnum } from '@/enums/fileTypeEnum' | |
7 | +import { backgroundImageSize } from '@/settings/designSetting' | |
8 | +import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' | |
9 | + | |
10 | +const StoreKey = StorageEnum.GO_USER_MEDIA_PHOTOS | |
11 | + | |
12 | +/** | |
13 | + * 上传完成事件类型 | |
14 | + */ | |
15 | +type UploadCompletedEventType = { | |
16 | + fileName: string | |
17 | + url: string | |
18 | +} | |
19 | + | |
20 | +const userPhotosList: ConfigType[] = getLocalStorage(StoreKey) || [] | |
21 | + | |
22 | +const uploadFile = (callback: Function | null = null) => { | |
23 | + const input = document.createElement('input') | |
24 | + input.type = 'file' | |
25 | + input.accept = '.png,.jpg,.jpeg,.gif' // 这里只允许部分图片类型 | |
26 | + input.onchange = async () => { | |
27 | + if (!input.files || !input.files.length) return | |
28 | + const file = input.files[0] | |
29 | + const { name, size, type } = file | |
30 | + if (size > 1024 * 1024 * backgroundImageSize) { | |
31 | + window['$message'].warning(`图片超出 ${backgroundImageSize}M 限制,请重新上传!`) | |
32 | + return false | |
33 | + } | |
34 | + if (type !== FileTypeEnum.PNG && type !== FileTypeEnum.JPEG && type !== FileTypeEnum.GIF) { | |
35 | + window['$message'].warning('文件格式不符合,请重新上传!') | |
36 | + return false | |
37 | + } | |
38 | + const reader = new FileReader() | |
39 | + reader.onload = () => { | |
40 | + const eventObj: UploadCompletedEventType = { fileName: name, url: reader.result as string } | |
41 | + callback && callback(eventObj) | |
42 | + } | |
43 | + reader.readAsDataURL(file) | |
44 | + } | |
45 | + input.click() | |
46 | +} | |
47 | + | |
48 | +const addConfig = { | |
49 | + ...ImageConfig, | |
50 | + category: ChatCategoryEnum.PRIVATE, | |
51 | + categoryName: ChatCategoryEnumName.PRIVATE, | |
52 | + package: PackagesCategoryEnum.PHOTOS, | |
53 | + chartFrame: ChartFrameEnum.STATIC, | |
54 | + title: '点击上传图片', | |
55 | + image: 'upload.png', | |
56 | + redirectComponent: `${ImageConfig.package}/${ImageConfig.category}/${ImageConfig.key}`, // 跳转组件路径规则:packageName/categoryName/componentKey | |
57 | + disabled: true, | |
58 | + configEvents: { | |
59 | + // 点击上传事件 | |
60 | + addHandle: (photoConfig: ConfigType) => { | |
61 | + goDialog({ | |
62 | + message: `图片需小于 ${backgroundImageSize}M 且只暂存在浏览器中。当前图片暂存上限5M,超过不再缓存新图片,请自行对接后端接口!现编译成 base64 进行渲染,对接后端后请使用【URL地址】进行交互!`, | |
63 | + transformOrigin: 'center', | |
64 | + onPositiveCallback: () => { | |
65 | + uploadFile((e: UploadCompletedEventType) => { | |
66 | + // 和上传组件一样配置,更换标题,图片,预设数据 | |
67 | + const packagesStore = usePackagesStore() | |
68 | + const newPhoto = { | |
69 | + ...ImageConfig, | |
70 | + category: ChatCategoryEnum.PRIVATE, | |
71 | + categoryName: ChatCategoryEnumName.PRIVATE, | |
72 | + package: PackagesCategoryEnum.PHOTOS, | |
73 | + chartFrame: ChartFrameEnum.STATIC, | |
74 | + title: e.fileName, | |
75 | + image: e.url, | |
76 | + dataset: e.url, | |
77 | + redirectComponent: `${ImageConfig.package}/${ImageConfig.category}/${ImageConfig.key}` // 跳转组件路径规则:packageName/categoryName/componentKey | |
78 | + } | |
79 | + userPhotosList.unshift(newPhoto) | |
80 | + // 存储在本地数据中 | |
81 | + setLocalStorage(StoreKey, userPhotosList) | |
82 | + // 插入到上传按钮前的位置 | |
83 | + packagesStore.addPhotos(newPhoto, 1) | |
84 | + }) | |
85 | + } | |
86 | + }) | |
87 | + } | |
88 | + } | |
89 | +} | |
90 | + | |
91 | +export default [addConfig, ...userPhotosList] | ... | ... |
1 | +import { ChartFrameEnum, PackagesCategoryEnum } from '@/packages/index.d' | |
2 | +import { ImageConfig } from '@/packages/components/Informations/Mores/Image/index' | |
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../index.d' | |
4 | + | |
5 | +// 远程共享库(调接口获取图像列表) | |
6 | +const imageList = [ | |
7 | + { imageName: 'carousel1', imageUrl: 'https://naive-ui.oss-cn-beijing.aliyuncs.com/carousel-img/carousel1.jpeg' }, | |
8 | + { imageName: 'carousel2', imageUrl: 'https://naive-ui.oss-cn-beijing.aliyuncs.com/carousel-img/carousel2.jpeg' } | |
9 | +] | |
10 | + | |
11 | +const photoConfigList = imageList.map(i => ({ | |
12 | + ...ImageConfig, | |
13 | + category: ChatCategoryEnum.SHARE, | |
14 | + categoryName: ChatCategoryEnumName.SHARE, | |
15 | + package: PackagesCategoryEnum.PHOTOS, | |
16 | + chartFrame: ChartFrameEnum.STATIC, | |
17 | + image: i.imageUrl, | |
18 | + dataset: i.imageUrl, | |
19 | + title: i.imageName, | |
20 | + redirectComponent: `${ImageConfig.package}/${ImageConfig.category}/${ImageConfig.key}` // 跳转组件路径规则:packageName/categoryName/componentKey | |
21 | +})) | |
22 | + | |
23 | +export default photoConfigList | ... | ... |
src/packages/components/Photos/index.d.ts
0 → 100644
src/packages/components/Photos/index.ts
0 → 100644
... | ... | @@ -3,12 +3,8 @@ |
3 | 3 | <setting-item-box name="背景上传" :alone="true"> |
4 | 4 | <setting-item> |
5 | 5 | <n-card class="upload-box"> |
6 | - <n-upload | |
7 | - :show-file-list="false" | |
8 | - v-model:file-list="uploadFileListRef" | |
9 | - :customRequest="customRequest" | |
10 | - :onBeforeUpload="beforeUploadHandle" | |
11 | - > | |
6 | + <n-upload :show-file-list="false" v-model:file-list="uploadFileListRef" :customRequest="customRequest" | |
7 | + :onBeforeUpload="beforeUploadHandle"> | |
12 | 8 | <n-upload-dragger> |
13 | 9 | <img v-if="optionData.backgroundImage" class="upload-show" :src="optionData.backgroundImage" alt="背景" /> |
14 | 10 | <div class="upload-img" v-show="!optionData.backgroundImage"> |
... | ... | @@ -32,14 +28,8 @@ |
32 | 28 | </setting-item-box> |
33 | 29 | <setting-item-box name="背景选择" :alone="true"> |
34 | 30 | <setting-item> |
35 | - <n-select | |
36 | - size="small" | |
37 | - placeholder="请选择您要使用的背景" | |
38 | - style="width: 250px" | |
39 | - v-model:value="selectValue" | |
40 | - :options="selectBgOptions" | |
41 | - @update:value="selectBgValueHandle" | |
42 | - /> | |
31 | + <n-select size="small" placeholder="请选择您要使用的背景" style="width: 250px" v-model:value="selectValue" | |
32 | + :options="selectBgOptions" @update:value="selectBgValueHandle" /> | |
43 | 33 | </setting-item> |
44 | 34 | </setting-item-box> |
45 | 35 | <setting-item-box name="文字" :alone="true"> |
... | ... | @@ -83,11 +73,7 @@ |
83 | 73 | </setting-item-box> |
84 | 74 | <setting-item-box name="文字"> |
85 | 75 | <setting-item name="字体大小"> |
86 | - <n-input-number | |
87 | - v-model:value="optionData.textRightFontSize" | |
88 | - size="small" | |
89 | - placeholder="字体大小" | |
90 | - ></n-input-number> | |
76 | + <n-input-number v-model:value="optionData.textRightFontSize" size="small" placeholder="字体大小"></n-input-number> | |
91 | 77 | </setting-item> |
92 | 78 | <setting-item name="字体位置x轴"> |
93 | 79 | <n-input-number v-model:value="optionData.xT" size="small" placeholder="字体位置"></n-input-number> |
... | ... | @@ -133,7 +119,7 @@ const selectValue = ref('headerBg08') |
133 | 119 | |
134 | 120 | // TODO待封装 成传文件夹名字获取下面所有图片 |
135 | 121 | const getFetchImages = () => { |
136 | - const imagesModules = import.meta.globEager('@/assets/external/headbackground/*') | |
122 | + const imagesModules: Record<string, { default: string }> = import.meta.glob('@/assets/external/headbackground/*', { eager: true }) | |
137 | 123 | selectBgOptions.value = Object.keys(imagesModules).map(item => ({ |
138 | 124 | label: imagesModules[item]?.default.split('/').at(-1), |
139 | 125 | value: imagesModules[item]?.default |
... | ... | @@ -199,31 +185,38 @@ const clearImage = () => { |
199 | 185 | <style lang="scss" scoped> |
200 | 186 | // $uploadWidth: 215px; |
201 | 187 | $uploadHeight: 193px; |
188 | + | |
202 | 189 | .upload-box { |
203 | 190 | cursor: pointer; |
204 | 191 | margin-bottom: 20px; |
192 | + | |
205 | 193 | @include deep() { |
206 | 194 | .n-card__content { |
207 | 195 | padding: 0; |
208 | 196 | overflow: hidden; |
209 | 197 | } |
198 | + | |
210 | 199 | .n-upload-dragger { |
211 | 200 | padding: 5px; |
212 | 201 | // width: $uploadWidth; |
213 | 202 | } |
214 | 203 | } |
204 | + | |
215 | 205 | .upload-show { |
216 | 206 | width: -webkit-fill-available; |
217 | 207 | height: $uploadHeight; |
218 | 208 | border-radius: 5px; |
219 | 209 | } |
210 | + | |
220 | 211 | .upload-img { |
221 | 212 | display: flex; |
222 | 213 | flex-direction: column; |
223 | 214 | align-items: center; |
215 | + | |
224 | 216 | img { |
225 | 217 | height: 150px; |
226 | 218 | } |
219 | + | |
227 | 220 | .upload-desc { |
228 | 221 | padding: 10px 0; |
229 | 222 | } | ... | ... |
... | ... | @@ -3,16 +3,24 @@ import { ConfigType } from "../index.d" |
3 | 3 | import { matchExternalPrefixReg } from "./useWidgetKey" |
4 | 4 | |
5 | 5 | const getAllConfigFile = async () => { |
6 | - return import.meta.glob('../components/**/config.ts') | |
6 | + return import.meta.glob('../components/**/config.ts', ) | |
7 | 7 | } |
8 | 8 | |
9 | 9 | const getChartConfigFile = async (path: string) => { |
10 | 10 | const fileList = await getAllConfigFile() |
11 | 11 | return fileList[path]() as any |
12 | -} | |
12 | +} | |
13 | 13 | |
14 | 14 | export const createComponent = async (configType: ConfigType) => { |
15 | - const { key, chartKey, category, package: packageName } = configType | |
15 | + const { key, chartKey, category, package: packageName, redirectComponent } = configType | |
16 | + // redirectComponent 是给图片组件库和图标组件库使用的 | |
17 | + if (redirectComponent) { | |
18 | + const [packageName, categoryName, keyName] = redirectComponent.split('/') | |
19 | + const filePath = `../components/${packageName}/${categoryName}/${keyName}/config.ts` | |
20 | + const redirectChart = await getChartConfigFile(filePath) | |
21 | + return new redirectChart.default() | |
22 | + } | |
23 | + | |
16 | 24 | const hasExternalPrefix = matchExternalPrefixReg.test(chartKey) |
17 | 25 | const filePath = `../components${hasExternalPrefix ? '/external' : ''}/${packageName}/${category}/${key}/config.ts` |
18 | 26 | const chart = await getChartConfigFile(filePath) | ... | ... |
... | ... | @@ -15,15 +15,34 @@ export enum ChartFrameEnum { |
15 | 15 | |
16 | 16 | // 组件配置 |
17 | 17 | export type ConfigType = { |
18 | + // 组件 key | |
18 | 19 | key: string |
20 | + // 画布组件 key | |
19 | 21 | chartKey: string |
22 | + // 右侧设置面板组件 key | |
20 | 23 | conKey: string |
24 | + // 标题 | |
21 | 25 | title: string |
26 | + // 分类 | |
22 | 27 | category: string |
28 | + // 分类名称 | |
23 | 29 | categoryName: string |
30 | + // 所属包 | |
24 | 31 | package: string |
32 | + // 归类 | |
25 | 33 | chartFrame?: ChartFrameEnum |
34 | + // 预览图 | |
26 | 35 | image: string |
36 | + // 从指定路径创建创建该组件 | |
37 | + redirectComponent?: string | |
38 | + // 组件预设的 dataset 值(图片/图标) | |
39 | + dataset?: any | |
40 | + // 禁用 拖拽或双击生成组件 | |
41 | + disabled?: boolean | |
42 | + // 图标 | |
43 | + icon?: string | |
44 | + // 事件 | |
45 | + configEvents?: { [T: string]: Function } | |
27 | 46 | } |
28 | 47 | |
29 | 48 | // 数据请求 |
... | ... | @@ -120,7 +139,7 @@ export interface PublicConfigType { |
120 | 139 | } |
121 | 140 | filter?: string |
122 | 141 | status: StatusType |
123 | - interactActions?: InteractActionsType[], | |
142 | + interactActions?: InteractActionsType[] | |
124 | 143 | events: { |
125 | 144 | baseEvent: { |
126 | 145 | [K in BaseEvent]?: string |
... | ... | @@ -139,7 +158,8 @@ export interface PublicConfigType { |
139 | 158 | export interface CreateComponentType extends PublicConfigType, requestConfig { |
140 | 159 | key: string |
141 | 160 | chartConfig: ConfigType |
142 | - option: GlobalThemeJsonType, | |
161 | + option: GlobalThemeJsonType | |
162 | + groupList?: Array<CreateComponentType> | |
143 | 163 | } |
144 | 164 | |
145 | 165 | // 组件成组实例类 |
... | ... | @@ -155,6 +175,8 @@ export enum PackagesCategoryEnum { |
155 | 175 | CHARTS = 'Charts', |
156 | 176 | TABLES = 'Tables', |
157 | 177 | INFORMATIONS = 'Informations', |
178 | + PHOTOS = 'Photos', | |
179 | + ICONS = 'Icons', | |
158 | 180 | DECORATES = 'Decorates' |
159 | 181 | } |
160 | 182 | |
... | ... | @@ -163,6 +185,8 @@ export enum PackagesCategoryName { |
163 | 185 | CHARTS = '图表', |
164 | 186 | TABLES = '列表', |
165 | 187 | INFORMATIONS = '信息', |
188 | + PHOTOS = '图片', | |
189 | + ICONS = '图标', | |
166 | 190 | DECORATES = '小组件' |
167 | 191 | } |
168 | 192 | |
... | ... | @@ -177,5 +201,7 @@ export type PackagesType = { |
177 | 201 | [PackagesCategoryEnum.CHARTS]: ConfigType[] |
178 | 202 | [PackagesCategoryEnum.INFORMATIONS]: ConfigType[] |
179 | 203 | [PackagesCategoryEnum.TABLES]: ConfigType[] |
204 | + [PackagesCategoryEnum.PHOTOS]: ConfigType[] | |
205 | + [PackagesCategoryEnum.ICONS]: ConfigType[] | |
180 | 206 | [PackagesCategoryEnum.DECORATES]: ConfigType[] |
181 | 207 | } | ... | ... |
... | ... | @@ -2,19 +2,31 @@ import { ChartList } from '@/packages/components/Charts/index' |
2 | 2 | import { DecorateList } from '@/packages/components/Decorates/index' |
3 | 3 | import { InformationList } from '@/packages/components/Informations/index' |
4 | 4 | import { TableList } from '@/packages/components/Tables/index' |
5 | +import { PhotoList } from '@/packages/components/Photos/index' | |
6 | +import { IconList } from '@/packages/components/Icons/index' | |
7 | + | |
5 | 8 | import { PackagesCategoryEnum, PackagesType, ConfigType, FetchComFlagType } from '@/packages/index.d' |
6 | 9 | import { useInjectLib } from './components/external/utils/useInjectLib' |
7 | 10 | |
8 | -const configModules = import.meta.globEager('./components/**/config.vue') | |
9 | -const indexModules = import.meta.globEager('./components/**/index.vue') | |
10 | -const imagesModules = import.meta.globEager('../assets/images/chart/**') | |
11 | +const configModules: Record<string, { default: string }> = import.meta.glob('./components/**/config.vue', { | |
12 | + eager: true | |
13 | +}) | |
14 | +const indexModules: Record<string, { default: string }> = import.meta.glob('./components/**/index.vue', { | |
15 | + eager: true | |
16 | +}) | |
17 | +const imagesModules: Record<string, { default: string }> = import.meta.glob('../assets/images/chart/**', { | |
18 | + eager: true | |
19 | +}) | |
20 | + | |
11 | 21 | |
12 | -// * 所有图表 | |
22 | +// * 所有图表 | |
13 | 23 | export const packagesList: PackagesType = { |
14 | 24 | [PackagesCategoryEnum.CHARTS]: ChartList, |
15 | 25 | [PackagesCategoryEnum.INFORMATIONS]: InformationList, |
16 | 26 | [PackagesCategoryEnum.TABLES]: TableList, |
17 | - [PackagesCategoryEnum.DECORATES]: DecorateList | |
27 | + [PackagesCategoryEnum.DECORATES]: DecorateList, | |
28 | + [PackagesCategoryEnum.PHOTOS]: PhotoList, | |
29 | + [PackagesCategoryEnum.ICONS]: IconList | |
18 | 30 | } |
19 | 31 | |
20 | 32 | /** |
... | ... | @@ -22,7 +34,13 @@ export const packagesList: PackagesType = { |
22 | 34 | * @param targetData |
23 | 35 | */ |
24 | 36 | export const createComponent = async (targetData: ConfigType) => { |
25 | - const { category, key } = targetData | |
37 | + const { redirectComponent, category, key } = targetData | |
38 | + // redirectComponent 是给图片组件库和图标组件库使用的 | |
39 | + if (redirectComponent) { | |
40 | + const [packageName, categoryName, keyName] = redirectComponent.split('/') | |
41 | + const redirectChart = await import(`./components/${packageName}/${categoryName}/${keyName}/config.ts`) | |
42 | + return new redirectChart.default() | |
43 | + } | |
26 | 44 | const chart = await import(`./components/${targetData.package}/${category}/${key}/config.ts`) |
27 | 45 | return new chart.default() |
28 | 46 | } |
... | ... | @@ -66,6 +84,8 @@ export const fetchConfigComponent = (dropData: ConfigType) => { |
66 | 84 | */ |
67 | 85 | export const fetchImages = async (targetData?: ConfigType) => { |
68 | 86 | if (!targetData) return '' |
87 | + // 正则判断图片是否为 url,是则直接返回该 url | |
88 | + if (/^(http|https):\/\/([\w.]+\/?)\S*/.test(targetData.image)) return targetData.image | |
69 | 89 | // 新数据动态处理 |
70 | 90 | const { image, package: targetDataPackage } = targetData |
71 | 91 | // 兼容旧数据 | ... | ... |
... | ... | @@ -61,13 +61,14 @@ import { |
61 | 61 | Pulse as PulseIcon, |
62 | 62 | Folder as FolderIcon, |
63 | 63 | FolderOpen as FolderOpenIcon, |
64 | - Image as ImageIcon, | |
64 | + ImageOutline as ImageIcon, | |
65 | 65 | Images as ImagesIcon, |
66 | 66 | List as ListIcon, |
67 | 67 | EyeOutline as EyeOutlineIcon, |
68 | 68 | EyeOffOutline as EyeOffOutlineIcon, |
69 | 69 | Albums as AlbumsIcon, |
70 | - Analytics as AnalyticsIcon | |
70 | + Analytics as AnalyticsIcon, | |
71 | + AirplaneOutline as AirPlaneOutlineIcon | |
71 | 72 | } from '@vicons/ionicons5' |
72 | 73 | |
73 | 74 | import { |
... | ... | @@ -238,10 +239,12 @@ const ionicons5 = { |
238 | 239 | // 眼睛 |
239 | 240 | EyeOutlineIcon, |
240 | 241 | EyeOffOutlineIcon, |
241 | - // 图表列表 | |
242 | + // 图表列表 | |
242 | 243 | AlbumsIcon, |
243 | 244 | // 分析 |
244 | - AnalyticsIcon | |
245 | + AnalyticsIcon, | |
246 | + // 飞机 | |
247 | + AirPlaneOutlineIcon | |
245 | 248 | } |
246 | 249 | |
247 | 250 | const carbon = { | ... | ... |
... | ... | @@ -86,8 +86,18 @@ |
86 | 86 | }, |
87 | 87 | "legend": { |
88 | 88 | "show": true, |
89 | - "top": "5%", | |
89 | + "type": "scroll", | |
90 | + "x": "center", | |
91 | + "y": "top", | |
92 | + "icon": "circle", | |
93 | + "orient": "horizontal", | |
90 | 94 | "textStyle": { |
95 | + "color": "#B9B8CE", | |
96 | + "fontSize": 18 | |
97 | + }, | |
98 | + "itemHeight": 15, | |
99 | + "itemWidth": 15, | |
100 | + "pageTextStyle": { | |
91 | 101 | "color": "#B9B8CE" |
92 | 102 | } |
93 | 103 | }, | ... | ... |
... | ... | @@ -2212,9 +2212,9 @@ |
2212 | 2212 | "pinyin": "tengluozi" |
2213 | 2213 | }, |
2214 | 2214 | { |
2215 | - "CMYK": [57, 62, 16, 2], | |
2216 | - "RGB": [128, 109, 158], | |
2217 | - "hex": "#806d9e", | |
2215 | + "CMYK": [34, 39, 0, 24], | |
2216 | + "RGB": [128, 118, 195], | |
2217 | + "hex": "#8076c3", | |
2218 | 2218 | "name": "槿紫", |
2219 | 2219 | "pinyin": "jinzi" |
2220 | 2220 | }, | ... | ... |
... | ... | @@ -9,12 +9,12 @@ export const lang = LangEnum.ZH |
9 | 9 | export const watermarkText = "GoView 低代码平台" |
10 | 10 | |
11 | 11 | // 分组名称 |
12 | -export const groupTitle = '分组' | |
12 | +export const groupTitle = "分组" | |
13 | 13 | |
14 | 14 | // 主题配置 |
15 | 15 | export const theme = { |
16 | 16 | // 默认是否开启深色主题 |
17 | - darkTheme: false, | |
17 | + darkTheme: true, | |
18 | 18 | //默认主题色 |
19 | 19 | appTheme: '#51d6a9', |
20 | 20 | appThemeDetail: null, | ... | ... |
... | ... | @@ -191,7 +191,7 @@ export const useChartEditStore = defineStore({ |
191 | 191 | this.targetChart.hoverId = hoverId |
192 | 192 | }, |
193 | 193 | // * 设置目标数据 select |
194 | - setTargetSelectChart(selectId?: string | string[], push = false) { | |
194 | + setTargetSelectChart(selectId?: string | string[], push: boolean = false) { | |
195 | 195 | // 重复选中 |
196 | 196 | if (this.targetChart.selectId.find((e: string) => e === selectId)) return |
197 | 197 | |
... | ... | @@ -512,7 +512,7 @@ export const useChartEditStore = defineStore({ |
512 | 512 | item.id = getUUID() |
513 | 513 | }) |
514 | 514 | } |
515 | - | |
515 | + | |
516 | 516 | return e |
517 | 517 | } |
518 | 518 | const isCut = recordCharts.type === HistoryActionTypeEnum.CUT | ... | ... |
... | ... | @@ -55,7 +55,11 @@ export const useChartLayoutStore = defineStore({ |
55 | 55 | } |
56 | 56 | }, |
57 | 57 | actions: { |
58 | - setItem<T extends keyof ChartLayoutType, K extends ChartLayoutType[T]>(key: T, value: K): void { | |
58 | + setItem<T extends keyof ChartLayoutType, K extends ChartLayoutType[T]>( | |
59 | + key: T, | |
60 | + value: K, | |
61 | + computedScale = true | |
62 | + ): void { | |
59 | 63 | this.$patch(state => { |
60 | 64 | state[key] = value |
61 | 65 | }) |
... | ... | @@ -64,9 +68,11 @@ export const useChartLayoutStore = defineStore({ |
64 | 68 | // 这里需要标记重置画布位置 |
65 | 69 | this.rePositionCanvas = true; |
66 | 70 | // 重新计算拖拽区域缩放比例 |
67 | - setTimeout(() => { | |
68 | - chartEditStore.computedScale() | |
69 | - }, 500) | |
71 | + if (computedScale) { | |
72 | + setTimeout(() => { | |
73 | + chartEditStore.computedScale() | |
74 | + }, 500) | |
75 | + } | |
70 | 76 | }, |
71 | 77 | setItemUnHandle<T extends keyof ChartLayoutType, K extends ChartLayoutType[T]>(key: T, value: K): void { |
72 | 78 | this.$patch(state => { | ... | ... |
1 | 1 | import { defineStore } from 'pinia' |
2 | -import { PackagesStoreType, PackagesType } from './packagesStore.d' | |
3 | -import { packagesList } from '@/packages/index' | |
4 | - | |
5 | -// 组件 pakages | |
2 | +import { ConfigType, PackagesStoreType, PackagesType } from './packagesStore.d' | |
3 | +import { packagesList } from '@/packages/index' | |
4 | +import { StorageEnum } from '@/enums/storageEnum' | |
5 | +import { getLocalStorage, setLocalStorage } from '@/utils' | |
6 | + | |
7 | +// 组件 packages | |
6 | 8 | export const usePackagesStore = defineStore({ |
7 | 9 | id: 'usePackagesStore', |
8 | 10 | state: (): PackagesStoreType => ({ |
9 | - packagesList: Object.freeze(packagesList) | |
11 | + packagesList: Object.freeze(packagesList), | |
12 | + newPhoto: undefined | |
10 | 13 | }), |
11 | 14 | getters: { |
12 | 15 | getPackagesList(): PackagesType { |
13 | 16 | return this.packagesList |
14 | 17 | } |
18 | + }, | |
19 | + actions: { | |
20 | + addPhotos(newPhoto: ConfigType, index: number) { | |
21 | + this.newPhoto = newPhoto | |
22 | + this.packagesList.Photos.splice(index, 0, newPhoto) | |
23 | + }, | |
24 | + deletePhotos(photoInfo: ConfigType, index: number) { | |
25 | + this.packagesList.Photos.splice(index, 1) | |
26 | + const StoreKey = StorageEnum.GO_USER_MEDIA_PHOTOS | |
27 | + const userPhotosList = getLocalStorage(StoreKey) | |
28 | + userPhotosList.splice(index - 1, 1) | |
29 | + setLocalStorage(StoreKey, userPhotosList) | |
30 | + } | |
15 | 31 | } |
16 | 32 | }) | ... | ... |
... | ... | @@ -317,6 +317,11 @@ export const JSONStringify = <T>(data: T) => { |
317 | 317 | ) |
318 | 318 | } |
319 | 319 | |
320 | +export const evalFn = (fn: string) => { | |
321 | + var Fun = Function // 一个变量指向Function,防止前端编译工具报错 | |
322 | + return new Fun('return ' + fn)() | |
323 | +} | |
324 | + | |
320 | 325 | /** |
321 | 326 | * * JSON反序列化,支持函数和 undefined |
322 | 327 | * @param data | ... | ... |
... | ... | @@ -9,11 +9,12 @@ |
9 | 9 | <div |
10 | 10 | class="item-box" |
11 | 11 | v-for="(item, index) in menuOptions" |
12 | - :key="index" | |
12 | + :key="item.title" | |
13 | 13 | draggable |
14 | - @dragstart="dragStartHandle($event, item)" | |
15 | - @dragend="dragendHandle" | |
14 | + @dragstart="!item.disabled && dragStartHandle($event, item)" | |
15 | + @dragend="!item.disabled && dragendHandle" | |
16 | 16 | @dblclick="dblclickHandle(item)" |
17 | + @click="clickHandle(item)" | |
17 | 18 | > |
18 | 19 | <div class="list-header"> |
19 | 20 | <mac-os-control-btn class="list-header-control-btn" :mini="true" :disabled="true"></mac-os-control-btn> |
... | ... | @@ -21,14 +22,28 @@ |
21 | 22 | <n-ellipsis>{{ item.title }}</n-ellipsis> |
22 | 23 | </n-text> |
23 | 24 | </div> |
24 | - <div class="list-center go-flex-center go-transition"> | |
25 | - <chart-glob-image class="list-img" :chartConfig="item"></chart-glob-image> | |
25 | + <div class="list-center go-flex-center go-transition" draggable="true"> | |
26 | + <Icon v-if="item.icon" class="list-img" :icon="item.icon" color="#999" width="48" /> | |
27 | + <chart-glob-image v-else class="list-img" :chartConfig="item" /> | |
26 | 28 | </div> |
27 | 29 | <div class="list-bottom"> |
28 | 30 | <n-text class="list-bottom-text" depth="3"> |
29 | 31 | <n-ellipsis style="max-width: 90%">{{ item.title }}</n-ellipsis> |
30 | 32 | </n-text> |
31 | 33 | </div> |
34 | + <!-- 遮罩 --> | |
35 | + <div v-if="item.disabled" class="list-model"></div> | |
36 | + <!-- 工具栏 --> | |
37 | + <div v-if="isShowTools(item)" class="list-tools go-transition" @click="deleteHandle(item, index)"> | |
38 | + <n-button text type="default" color="#ffffff"> | |
39 | + <template #icon> | |
40 | + <n-icon> | |
41 | + <TrashIcon /> | |
42 | + </n-icon> | |
43 | + </template> | |
44 | + <span>删除</span> | |
45 | + </n-button> | |
46 | + </div> | |
32 | 47 | </div> |
33 | 48 | </div> |
34 | 49 | </div> |
... | ... | @@ -42,11 +57,15 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore |
42 | 57 | import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' |
43 | 58 | import { ChartModeEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
44 | 59 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' |
45 | -import { componentInstall, loadingStart, loadingFinish, loadingError, JSONStringify } from '@/utils' | |
60 | +import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' | |
61 | +import { componentInstall, loadingStart, loadingFinish, loadingError, JSONStringify, goDialog } from '@/utils' | |
46 | 62 | import { DragKeyEnum } from '@/enums/editPageEnum' |
47 | 63 | // import { createComponent } from '@/packages' |
48 | -import { ConfigType, CreateComponentType } from '@/packages/index.d' | |
64 | +import { ConfigType, CreateComponentType, PackagesCategoryEnum } from '@/packages/index.d' | |
65 | +import { ChatCategoryEnum } from '@/packages/components/Photos/index.d' | |
49 | 66 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' |
67 | +import { Icon } from '@iconify/vue' | |
68 | +import { icon } from '@/plugins' | |
50 | 69 | |
51 | 70 | // THINGS_KIT 覆盖原始创建组件逻辑 |
52 | 71 | import { createComponent } from '@/packages/external/override' |
... | ... | @@ -54,8 +73,10 @@ import { createComponent } from '@/packages/external/override' |
54 | 73 | import omit from 'lodash/omit' |
55 | 74 | |
56 | 75 | const chartEditStore = useChartEditStore() |
76 | +const { TrashIcon } = icon.ionicons5 | |
57 | 77 | |
58 | -defineProps({ | |
78 | +const emit = defineEmits(['deletePhoto']) | |
79 | +const props = defineProps({ | |
59 | 80 | menuOptions: { |
60 | 81 | type: Array as PropType<ConfigType[]>, |
61 | 82 | default: () => [] |
... | ... | @@ -65,6 +86,11 @@ defineProps({ |
65 | 86 | const chartLayoutStore = useChartLayoutStore() |
66 | 87 | const contentChartsItemBoxRef = ref() |
67 | 88 | |
89 | +// 判断工具栏展示 | |
90 | +const isShowTools = (item: ConfigType) => { | |
91 | + return !item.disabled && item.package === PackagesCategoryEnum.PHOTOS && item.category === ChatCategoryEnum.PRIVATE | |
92 | +} | |
93 | + | |
68 | 94 | // 组件展示状态 |
69 | 95 | const chartMode: Ref<ChartModeEnum> = computed(() => { |
70 | 96 | return chartLayoutStore.getChartType |
... | ... | @@ -72,6 +98,7 @@ const chartMode: Ref<ChartModeEnum> = computed(() => { |
72 | 98 | |
73 | 99 | // 拖拽处理 |
74 | 100 | const dragStartHandle = (e: DragEvent, item: ConfigType) => { |
101 | + if (item.disabled) return | |
75 | 102 | // 动态注册图表组件 |
76 | 103 | componentInstall(item.chartKey, fetchChartComponent(item)) |
77 | 104 | componentInstall(item.conKey, fetchConfigComponent(item)) |
... | ... | @@ -88,6 +115,7 @@ const dragendHandle = () => { |
88 | 115 | |
89 | 116 | // 双击添加 |
90 | 117 | const dblclickHandle = async (item: ConfigType) => { |
118 | + if (item.disabled) return | |
91 | 119 | try { |
92 | 120 | loadingStart() |
93 | 121 | // 动态注册图表组件 |
... | ... | @@ -95,18 +123,39 @@ const dblclickHandle = async (item: ConfigType) => { |
95 | 123 | componentInstall(item.conKey, fetchConfigComponent(item)) |
96 | 124 | // 创建新图表组件 |
97 | 125 | let newComponent: CreateComponentType = await createComponent(item) |
126 | + if (item.redirectComponent) { | |
127 | + item.dataset && (newComponent.option.dataset = item.dataset) | |
128 | + newComponent.chartConfig.title = item.title | |
129 | + newComponent.chartConfig.chartFrame = item.chartFrame | |
130 | + } | |
98 | 131 | // 添加 |
99 | 132 | chartEditStore.addComponentList(newComponent, false, true) |
100 | 133 | // 选中 |
101 | 134 | chartEditStore.setTargetSelectChart(newComponent.id) |
102 | 135 | loadingFinish() |
103 | 136 | } catch (error) { |
104 | - console.log(error) | |
105 | 137 | loadingError() |
106 | 138 | window['$message'].warning(`图表正在研发中, 敬请期待...`) |
107 | 139 | } |
108 | 140 | } |
109 | 141 | |
142 | +// 单击事件 | |
143 | +const clickHandle = (item: ConfigType) => { | |
144 | + item?.configEvents?.addHandle(item) | |
145 | +} | |
146 | + | |
147 | +const deleteHandle = (item: ConfigType, index: number) => { | |
148 | + goDialog({ | |
149 | + message: '是否删除此图片?', | |
150 | + transformOrigin: 'center', | |
151 | + onPositiveCallback: () => { | |
152 | + const packagesStore = usePackagesStore() | |
153 | + emit('deletePhoto', item, index) | |
154 | + packagesStore.deletePhotos(item, index) | |
155 | + } | |
156 | + }) | |
157 | +} | |
158 | + | |
110 | 159 | watch( |
111 | 160 | () => chartMode.value, |
112 | 161 | (newValue: ChartModeEnum) => { |
... | ... | @@ -139,6 +188,7 @@ $halfCenterHeight: 50px; |
139 | 188 | gap: 9px; |
140 | 189 | transition: all 0.7s linear; |
141 | 190 | .item-box { |
191 | + position: relative; | |
142 | 192 | margin: 0; |
143 | 193 | width: $itemWidth; |
144 | 194 | overflow: hidden; |
... | ... | @@ -149,7 +199,10 @@ $halfCenterHeight: 50px; |
149 | 199 | &:hover { |
150 | 200 | @include hover-border-color('background-color4'); |
151 | 201 | .list-img { |
152 | - transform: scale(1.1); | |
202 | + transform: scale(1.08); | |
203 | + } | |
204 | + .list-tools { | |
205 | + opacity: 1; | |
153 | 206 | } |
154 | 207 | } |
155 | 208 | .list-header { |
... | ... | @@ -161,6 +214,7 @@ $halfCenterHeight: 50px; |
161 | 214 | &-text { |
162 | 215 | font-size: 12px; |
163 | 216 | margin-left: 8px; |
217 | + user-select: none; | |
164 | 218 | } |
165 | 219 | } |
166 | 220 | .list-center { |
... | ... | @@ -169,8 +223,9 @@ $halfCenterHeight: 50px; |
169 | 223 | overflow: hidden; |
170 | 224 | .list-img { |
171 | 225 | height: 100px; |
172 | - width: 140px; | |
226 | + max-width: 140px; | |
173 | 227 | border-radius: 6px; |
228 | + object-fit: contain; | |
174 | 229 | @extend .go-transition; |
175 | 230 | } |
176 | 231 | } |
... | ... | @@ -181,6 +236,33 @@ $halfCenterHeight: 50px; |
181 | 236 | padding-left: 5px; |
182 | 237 | } |
183 | 238 | } |
239 | + .list-model { | |
240 | + z-index: 1; | |
241 | + position: absolute; | |
242 | + top: 0; | |
243 | + left: 0; | |
244 | + width: 100%; | |
245 | + height: 100%; | |
246 | + background-color: rgba(0, 0, 0, 0); | |
247 | + } | |
248 | + .list-tools { | |
249 | + position: absolute; | |
250 | + display: flex; | |
251 | + justify-content: center; | |
252 | + align-items: center; | |
253 | + bottom: 0; | |
254 | + left: 0; | |
255 | + margin: 0 4px 2px; | |
256 | + height: 26px; | |
257 | + width: calc(100% - 8px); | |
258 | + opacity: 0; | |
259 | + border-radius: 6px; | |
260 | + backdrop-filter: blur(20px); | |
261 | + background-color: rgba(255, 255, 255, 0.15); | |
262 | + &:hover { | |
263 | + background-color: rgba(232, 128, 128, 0.7); | |
264 | + } | |
265 | + } | |
184 | 266 | } |
185 | 267 | &.single { |
186 | 268 | .item-box { |
... | ... | @@ -200,6 +282,9 @@ $halfCenterHeight: 50px; |
200 | 282 | .item-box { |
201 | 283 | width: $halfItemWidth; |
202 | 284 | max-width: $maxItemWidth; |
285 | + .list-img { | |
286 | + max-width: 76px; | |
287 | + } | |
203 | 288 | } |
204 | 289 | .list-center { |
205 | 290 | height: $halfCenterHeight; |
... | ... | @@ -208,6 +293,7 @@ $halfCenterHeight: 50px; |
208 | 293 | height: $halfCenterHeight; |
209 | 294 | width: auto; |
210 | 295 | transition: all 0.2s; |
296 | + object-fit: contain; | |
211 | 297 | } |
212 | 298 | } |
213 | 299 | .list-bottom { | ... | ... |
... | ... | @@ -11,8 +11,8 @@ |
11 | 11 | @update:value="clickItemHandle" |
12 | 12 | ></n-menu> |
13 | 13 | <div class="chart-content-list"> |
14 | - <n-scrollbar> | |
15 | - <charts-item-box :menuOptions="packages.selectOptions"></charts-item-box> | |
14 | + <n-scrollbar trigger="none"> | |
15 | + <charts-item-box :menuOptions="packages.selectOptions" @deletePhoto="deleteHandle"></charts-item-box> | |
16 | 16 | </n-scrollbar> |
17 | 17 | </div> |
18 | 18 | </div> |
... | ... | @@ -23,8 +23,11 @@ import { ref, watch, computed, reactive } from 'vue' |
23 | 23 | import { ConfigType } from '@/packages/index.d' |
24 | 24 | import { useSettingStore } from '@/store/modules/settingStore/settingStore' |
25 | 25 | import { loadAsyncComponent } from '@/utils' |
26 | +import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' | |
27 | +import { PackagesCategoryEnum } from '@/packages/index.d' | |
26 | 28 | |
27 | 29 | const ChartsItemBox = loadAsyncComponent(() => import('../ChartsItemBox/index.vue')) |
30 | +const packagesStore = usePackagesStore() | |
28 | 31 | |
29 | 32 | const props = defineProps({ |
30 | 33 | selectOptions: { |
... | ... | @@ -61,7 +64,7 @@ let packages = reactive<{ |
61 | 64 | saveSelectOptions: {} |
62 | 65 | }) |
63 | 66 | |
64 | -const selectValue = ref<string>() | |
67 | +const selectValue = ref<string>('all') | |
65 | 68 | |
66 | 69 | // 设置初始列表 |
67 | 70 | const setSelectOptions = (categorys: any) => { |
... | ... | @@ -79,7 +82,6 @@ watch( |
79 | 82 | if (!newData) return |
80 | 83 | newData.list.forEach((e: ConfigType) => { |
81 | 84 | const value: ConfigType[] = (packages.categorys as any)[e.category] |
82 | - // @ts-ignore | |
83 | 85 | packages.categorys[e.category] = value && value.length ? [...value, e] : [e] |
84 | 86 | packages.categoryNames[e.category] = e.categoryName |
85 | 87 | packages.categorys['all'].push(e) |
... | ... | @@ -100,6 +102,22 @@ watch( |
100 | 102 | } |
101 | 103 | ) |
102 | 104 | |
105 | +watch( | |
106 | + () => packagesStore.newPhoto, | |
107 | + newPhoto => { | |
108 | + if (!newPhoto) return | |
109 | + const newPhotoCategory = newPhoto.category | |
110 | + packages.categorys[newPhotoCategory].splice(1, 0, newPhoto) | |
111 | + packages.categorys['all'].splice(1, 0, newPhoto) | |
112 | + } | |
113 | +) | |
114 | + | |
115 | +// 删除图片 | |
116 | +const deleteHandle = (item: ConfigType, index: number) => { | |
117 | + packages.categorys[item.category].splice(index, 1) | |
118 | + packages.categorys['all'].splice(index, 1) | |
119 | +} | |
120 | + | |
103 | 121 | // 处理点击事件 |
104 | 122 | const clickItemHandle = (key: string) => { |
105 | 123 | packages.selectOptions = packages.categorys[key] |
... | ... | @@ -119,6 +137,7 @@ $menuWidth: 65px; |
119 | 137 | @include fetch-bg-color('background-color2-shallow'); |
120 | 138 | } |
121 | 139 | .chart-content-list { |
140 | + width: 200px; | |
122 | 141 | flex: 1; |
123 | 142 | display: flex; |
124 | 143 | flex-direction: column; | ... | ... |
... | ... | @@ -37,7 +37,8 @@ |
37 | 37 | :title="item.title" |
38 | 38 | @click="selectChartHandle(item)" |
39 | 39 | > |
40 | - <chart-glob-image class="list-item-img" :chartConfig="item"></chart-glob-image> | |
40 | + <Icon v-if="item.icon" class="list-img" :icon="item.icon" color="#999" width="20" /> | |
41 | + <chart-glob-image v-else class="list-item-img" :chartConfig="item" /> | |
41 | 42 | <n-text class="list-item-fs" depth="2">{{ item.title }}</n-text> |
42 | 43 | </div> |
43 | 44 | </n-scrollbar> |
... | ... | @@ -72,7 +73,7 @@ import { icon } from '@/plugins' |
72 | 73 | // THINGS_KIT 覆盖原始创建组件逻辑 |
73 | 74 | import { createComponent } from '@/packages/external/override' |
74 | 75 | import { ConfigType, CreateComponentType } from '@/packages/index.d' |
75 | -import { themeColor, MenuOptionsType } from '../../hooks/useAside.hook' | |
76 | +import { themeColor } from '../../hooks/useLayout.hook' | |
76 | 77 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
77 | 78 | import { ChartModeEnum, ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
78 | 79 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' |
... | ... | @@ -80,6 +81,7 @@ import { isString, addEventListener, removeEventListener } from '@/utils' |
80 | 81 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' |
81 | 82 | import { componentInstall, loadingStart, loadingFinish, loadingError } from '@/utils' |
82 | 83 | import { ChartGlobImage } from '@/components/Pages/ChartGlobImage' |
84 | +import { Icon } from '@iconify/vue' | |
83 | 85 | |
84 | 86 | const props = defineProps({ |
85 | 87 | menuOptions: { |
... | ... | @@ -131,7 +133,9 @@ const searchHandle = (key: string | null) => { |
131 | 133 | } |
132 | 134 | loading.value = true |
133 | 135 | showPopover.value = true |
134 | - searchRes.value = List.filter((e: ConfigType) => !key || e.title.toLowerCase().includes(key.toLowerCase())) | |
136 | + searchRes.value = List.filter( | |
137 | + (e: ConfigType) => !e.disabled && (!key || e.title.toLowerCase().includes(key.toLowerCase())) | |
138 | + ) | |
135 | 139 | setTimeout(() => { |
136 | 140 | loading.value = undefined |
137 | 141 | }, 500) |
... | ... | @@ -148,6 +152,7 @@ const listenerCloseHandle = (e: Event) => { |
148 | 152 | |
149 | 153 | // 选择处理 |
150 | 154 | const selectChartHandle = async (item: ConfigType) => { |
155 | + if (item.disabled) return | |
151 | 156 | try { |
152 | 157 | loadingStart() |
153 | 158 | // 动态注册图表组件 |
... | ... | @@ -155,6 +160,11 @@ const selectChartHandle = async (item: ConfigType) => { |
155 | 160 | componentInstall(item.conKey, fetchConfigComponent(item)) |
156 | 161 | // 创建新图表组件 |
157 | 162 | let newComponent: CreateComponentType = await createComponent(item) |
163 | + if (item.redirectComponent) { | |
164 | + item.dataset && (newComponent.option.dataset = item.dataset) | |
165 | + newComponent.chartConfig.title = item.title | |
166 | + newComponent.chartConfig.chartFrame = item.chartFrame | |
167 | + } | |
158 | 168 | // 添加 |
159 | 169 | chartEditStore.addComponentList(newComponent, false, true) |
160 | 170 | // 选中 |
... | ... | @@ -163,7 +173,6 @@ const selectChartHandle = async (item: ConfigType) => { |
163 | 173 | closeHandle() |
164 | 174 | loadingFinish() |
165 | 175 | } catch (error) { |
166 | - console.log(error) | |
167 | 176 | loadingError() |
168 | 177 | window['$message'].warning(`图表正在研发中, 敬请期待...`) |
169 | 178 | } |
... | ... | @@ -224,10 +233,16 @@ $searchWidth: 176px; |
224 | 233 | font-size: 12px; |
225 | 234 | } |
226 | 235 | &-img { |
227 | - height: 28px; | |
236 | + height: 20px; | |
237 | + max-width: 30px; | |
228 | 238 | margin-right: 5px; |
229 | 239 | border-radius: 5px; |
230 | 240 | } |
241 | + & > svg { | |
242 | + min-width: 20px; | |
243 | + min-height: 20px; | |
244 | + margin-right: 5px; | |
245 | + } | |
231 | 246 | &:hover { |
232 | 247 | &::before { |
233 | 248 | content: ''; | ... | ... |
1 | -import { shallowReactive, ref } from 'vue' | |
1 | +import { ref, watch, computed } from 'vue' | |
2 | 2 | import { icon } from '@/plugins' |
3 | 3 | import { renderLang, renderIcon } from '@/utils' |
4 | 4 | import { themeColor, setItem, getCharts } from './useLayout.hook' |
5 | -import { PackagesCategoryEnum, PackagesCategoryName, PackagesType } from '@/packages/index.d' | |
6 | -// 图表 | |
5 | +import { PackagesCategoryEnum, PackagesCategoryName, ConfigType, PackagesType } from '@/packages/index.d' | |
7 | 6 | import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' |
8 | 7 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
9 | 8 | // THINGS_KIT 追加组件库进入aside 侧边栏 |
10 | 9 | import { useInjectAside } from './external/useInjectAside' |
10 | + | |
11 | 11 | // 图标 |
12 | -const { BarChartIcon } = icon.ionicons5 | |
12 | +const { AirPlaneOutlineIcon, ImageIcon, BarChartIcon } = icon.ionicons5 | |
13 | 13 | const { |
14 | 14 | TableSplitIcon, |
15 | 15 | RoadmapIcon, |
... | ... | @@ -32,65 +32,77 @@ const menuOptions: MenuOptionsType[] = [] |
32 | 32 | const packagesListObj = { |
33 | 33 | [PackagesCategoryEnum.CHARTS]: { |
34 | 34 | icon: renderIcon(RoadmapIcon), |
35 | - label: PackagesCategoryName.CHARTS, | |
35 | + label: PackagesCategoryName.CHARTS | |
36 | 36 | }, |
37 | 37 | [PackagesCategoryEnum.INFORMATIONS]: { |
38 | 38 | icon: renderIcon(SpellCheckIcon), |
39 | - label: PackagesCategoryName.INFORMATIONS, | |
39 | + label: PackagesCategoryName.INFORMATIONS | |
40 | 40 | }, |
41 | 41 | [PackagesCategoryEnum.TABLES]: { |
42 | 42 | icon: renderIcon(TableSplitIcon), |
43 | - label: PackagesCategoryName.TABLES, | |
43 | + label: PackagesCategoryName.TABLES | |
44 | 44 | }, |
45 | 45 | [PackagesCategoryEnum.DECORATES]: { |
46 | 46 | icon: renderIcon(GraphicalDataFlowIcon), |
47 | - label: PackagesCategoryName.DECORATES, | |
47 | + label: PackagesCategoryName.DECORATES | |
48 | 48 | }, |
49 | + [PackagesCategoryEnum.PHOTOS]: { | |
50 | + icon: renderIcon(ImageIcon), | |
51 | + label: PackagesCategoryName.PHOTOS | |
52 | + }, | |
53 | + [PackagesCategoryEnum.ICONS]: { | |
54 | + icon: renderIcon(AirPlaneOutlineIcon), | |
55 | + label: PackagesCategoryName.ICONS | |
56 | + } | |
49 | 57 | } |
50 | 58 | // THINGS_KIT 追加组件库进入aside 侧边栏 |
51 | 59 | useInjectAside(packagesListObj as any) |
60 | +export const useAsideHook = () => { | |
61 | + const packagesStore = usePackagesStore() | |
62 | + const menuOptions: MenuOptionsType[] = [] | |
52 | 63 | |
53 | -// 处理列表 | |
54 | -const handlePackagesList = () => { | |
55 | - for (const val in getPackagesList) { | |
56 | - menuOptions.push({ | |
57 | - key: val, | |
58 | - // @ts-ignore | |
59 | - icon: packagesListObj[val].icon, | |
60 | - // @ts-ignore | |
61 | - label: packagesListObj[val].label, | |
62 | - // @ts-ignore | |
63 | - list: getPackagesList[val], | |
64 | - }) | |
64 | + // 处理列表 | |
65 | + const handlePackagesList = () => { | |
66 | + for (const val in packagesStore.getPackagesList) { | |
67 | + menuOptions.push({ | |
68 | + key: val, | |
69 | + // @ts-ignore | |
70 | + icon: packagesListObj[val].icon, | |
71 | + // @ts-ignore | |
72 | + label: packagesListObj[val].label, | |
73 | + // @ts-ignore | |
74 | + list: packagesStore.getPackagesList[val] | |
75 | + }) | |
76 | + } | |
65 | 77 | } |
66 | -} | |
67 | -handlePackagesList() | |
78 | + handlePackagesList() | |
68 | 79 | |
69 | -// 记录选中值 | |
70 | -let beforeSelect: string = menuOptions[0]['key'] | |
71 | -const selectValue = ref<string>(menuOptions[0]['key']) | |
80 | + // 记录选中值 | |
81 | + let beforeSelect: string = menuOptions[0]['key'] | |
82 | + const selectValue = ref<string>(menuOptions[0]['key']) | |
72 | 83 | |
73 | -// 选中的对象值 | |
74 | -const selectOptions = ref(menuOptions[0]) | |
84 | + // 选中的对象值 | |
85 | + const selectOptions = ref(menuOptions[0]) | |
75 | 86 | |
76 | -// 点击 item | |
77 | -const clickItemHandle = (key: string, item: any) => { | |
78 | - selectOptions.value = item | |
79 | - // 处理折叠 | |
80 | - if (beforeSelect === key) { | |
81 | - setItem(ChartLayoutStoreEnum.CHARTS, !getCharts.value) | |
82 | - } else { | |
83 | - setItem(ChartLayoutStoreEnum.CHARTS, true) | |
87 | + // 点击 item | |
88 | + const clickItemHandle = (key: string, item: any) => { | |
89 | + selectOptions.value = item | |
90 | + // 处理折叠 | |
91 | + if (beforeSelect === key) { | |
92 | + setItem(ChartLayoutStoreEnum.CHARTS, !getCharts.value, false) | |
93 | + } else { | |
94 | + setItem(ChartLayoutStoreEnum.CHARTS, true, false) | |
95 | + } | |
96 | + beforeSelect = key | |
84 | 97 | } |
85 | - beforeSelect = key | |
86 | -} | |
87 | 98 | |
88 | -export { | |
89 | - getCharts, | |
90 | - BarChartIcon, | |
91 | - themeColor, | |
92 | - selectOptions, | |
93 | - selectValue, | |
94 | - clickItemHandle, | |
95 | - menuOptions, | |
99 | + return { | |
100 | + getCharts, | |
101 | + BarChartIcon, | |
102 | + themeColor, | |
103 | + selectOptions, | |
104 | + selectValue, | |
105 | + clickItemHandle, | |
106 | + menuOptions, | |
107 | + } | |
96 | 108 | } | ... | ... |
... | ... | @@ -9,7 +9,7 @@ import { useDesignStore } from '@/store/modules/designStore/designStore' |
9 | 9 | const designStore = useDesignStore() |
10 | 10 | const themeColor = ref(designStore.getAppTheme) |
11 | 11 | |
12 | -// 结构控制 | |
12 | +// 结构控制 | |
13 | 13 | const { setItem } = useChartLayoutStore() |
14 | 14 | const { getCharts } = toRefs(useChartLayoutStore()) |
15 | 15 | |
... | ... | @@ -17,4 +17,4 @@ export { |
17 | 17 | themeColor, |
18 | 18 | setItem, |
19 | 19 | getCharts |
20 | -} | |
\ No newline at end of file | ||
20 | +} | ... | ... |
1 | 1 | <template> |
2 | 2 | <!-- 左侧所有组件的展示列表 --> |
3 | - <content-box | |
4 | - class="go-content-charts" | |
5 | - :class="{ scoped: !getCharts }" | |
6 | - title="组件" | |
7 | - :depth="1" | |
8 | - :backIcon="false" | |
9 | - > | |
3 | + <content-box class="go-content-charts" :class="{ scoped: !getCharts }" title="组件" :depth="1" :backIcon="false"> | |
10 | 4 | <template #icon> |
11 | 5 | <n-icon size="14" :depth="2"> |
12 | 6 | <bar-chart-icon></bar-chart-icon> |
... | ... | @@ -28,13 +22,7 @@ |
28 | 22 | @update:value="clickItemHandle" |
29 | 23 | ></n-menu> |
30 | 24 | <div class="menu-component-box"> |
31 | - <go-skeleton | |
32 | - :load="!selectOptions" | |
33 | - round | |
34 | - text | |
35 | - :repeat="2" | |
36 | - style="width: 90%" | |
37 | - ></go-skeleton> | |
25 | + <go-skeleton :load="!selectOptions" round text :repeat="2" style="width: 90%"></go-skeleton> | |
38 | 26 | <charts-option-content |
39 | 27 | v-if="selectOptions" |
40 | 28 | :selectOptions="selectOptions" |
... | ... | @@ -50,15 +38,9 @@ |
50 | 38 | import { ContentBox } from '../ContentBox/index' |
51 | 39 | import { ChartsOptionContent } from './components/ChartsOptionContent' |
52 | 40 | import { ChartsSearch } from './components/ChartsSearch' |
53 | -import { | |
54 | - getCharts, | |
55 | - BarChartIcon, | |
56 | - themeColor, | |
57 | - selectOptions, | |
58 | - selectValue, | |
59 | - clickItemHandle, | |
60 | - menuOptions, | |
61 | -} from './hooks/useAside.hook' | |
41 | +import { useAsideHook } from './hooks/useAside.hook' | |
42 | + | |
43 | +const { getCharts, BarChartIcon, themeColor, selectOptions, selectValue, clickItemHandle, menuOptions } = useAsideHook() | |
62 | 44 | </script> |
63 | 45 | |
64 | 46 | <style lang="scss" scoped> | ... | ... |
... | ... | @@ -30,7 +30,7 @@ |
30 | 30 | :onBeforeUpload="beforeUploadHandle" |
31 | 31 | > |
32 | 32 | <n-upload-dragger> |
33 | - <img v-if="canvasConfig.backgroundImage" class="upload-show" :src="getBackgroundImagePath(canvasConfig.backgroundImage)" alt="背景" /> | |
33 | + <img v-if="canvasConfig.backgroundImage" class="upload-show" :src="canvasConfig.backgroundImage" alt="背景" /> | |
34 | 34 | <div class="upload-img" v-show="!canvasConfig.backgroundImage"> |
35 | 35 | <img src="@/assets/images/canvas/noImage.png" /> |
36 | 36 | <n-text class="upload-desc" depth="3"> | ... | ... |
... | ... | @@ -130,8 +130,9 @@ const sendHandle = async () => { |
130 | 130 | const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.getRequestGlobalConfig)) |
131 | 131 | loading.value = false |
132 | 132 | if (res) { |
133 | - if (!res?.data && !targetData.value.filter) window['$message'].warning('您的数据不符合默认格式,请配置过滤器!') | |
134 | - targetData.value.option.dataset = newFunctionHandle(res?.data, res, targetData.value.filter) | |
133 | + const { data } = res | |
134 | + if (!data && !targetData.value.filter) window['$message'].warning('您的数据不符合默认格式,请配置过滤器!') | |
135 | + targetData.value.option.dataset = newFunctionHandle(data, res, targetData.value.filter) | |
135 | 136 | showMatching.value = true |
136 | 137 | return |
137 | 138 | } | ... | ... |
1 | 1 | <template> |
2 | 2 | <!-- 组件配置 --> |
3 | 3 | <n-divider class="go-my-3" title-placement="left"></n-divider> |
4 | - <setting-item-box | |
5 | - :itemRightStyle="{ | |
6 | - gridTemplateColumns: '6fr 2fr' | |
7 | - }" | |
8 | - style="padding-right: 25px" | |
9 | - > | |
4 | + <setting-item-box :itemRightStyle="{ | |
5 | + gridTemplateColumns: '6fr 2fr' | |
6 | + }" style="padding-right: 25px"> | |
10 | 7 | <template #name> |
11 | 8 | 地址 |
12 | 9 | <n-tooltip trigger="hover" v-if="isDev()"> |
... | ... | @@ -37,13 +34,8 @@ |
37 | 34 | </setting-item> |
38 | 35 | <setting-item name="更新间隔,为 0 只会初始化"> |
39 | 36 | <n-input-group> |
40 | - <n-input-number | |
41 | - v-model:value.trim="requestInterval" | |
42 | - class="select-time-number" | |
43 | - min="0" | |
44 | - :show-button="false" | |
45 | - placeholder="默认使用全局数据" | |
46 | - > | |
37 | + <n-input-number v-model:value.trim="requestInterval" class="select-time-number" min="0" :show-button="false" | |
38 | + placeholder="默认使用全局数据"> | |
47 | 39 | </n-input-number> |
48 | 40 | <!-- 单位 --> |
49 | 41 | <n-select class="select-time-options" v-model:value="requestIntervalUnit" :options="selectTimeOptions" /> |
... | ... | @@ -65,6 +57,7 @@ import { RequestHeader } from '../RequestHeader' |
65 | 57 | import { isDev } from '@/utils' |
66 | 58 | import { icon } from '@/plugins' |
67 | 59 | import { |
60 | + graphUrl, | |
68 | 61 | chartDataUrl, |
69 | 62 | chartSingleDataUrl, |
70 | 63 | rankListUrl, |
... | ... | @@ -80,7 +73,8 @@ import { |
80 | 73 | capsuleUrl, |
81 | 74 | wordCloudUrl, |
82 | 75 | treemapUrl, |
83 | - threeEarth01Url | |
76 | + threeEarth01Url, | |
77 | + sankeyUrl | |
84 | 78 | } from '@/api/mock' |
85 | 79 | |
86 | 80 | const props = defineProps({ |
... | ... | @@ -142,6 +136,12 @@ const apiList = [ |
142 | 136 | }, |
143 | 137 | { |
144 | 138 | value: `【三维地球】${threeEarth01Url}` |
139 | + }, | |
140 | + { | |
141 | + value: `【桑基图】${sankeyUrl}` | |
142 | + }, | |
143 | + { | |
144 | + value: `【关系图】${graphUrl}` | |
145 | 145 | } |
146 | 146 | ] |
147 | 147 | </script> |
... | ... | @@ -150,9 +150,11 @@ const apiList = [ |
150 | 150 | .select-time-number { |
151 | 151 | width: 100%; |
152 | 152 | } |
153 | + | |
153 | 154 | .select-time-options { |
154 | 155 | width: 100px; |
155 | 156 | } |
157 | + | |
156 | 158 | .select-type-options { |
157 | 159 | width: 120px; |
158 | 160 | } | ... | ... |
... | ... | @@ -58,7 +58,7 @@ |
58 | 58 | <help-outline-icon></help-outline-icon> |
59 | 59 | </n-icon> |
60 | 60 | </template> |
61 | - <n-text>不支持「静态组件」和「分组」</n-text> | |
61 | + <n-text>不支持「静态组件」</n-text> | |
62 | 62 | </n-tooltip> |
63 | 63 | </template> |
64 | 64 | <n-select |
... | ... | @@ -169,7 +169,27 @@ const fnDimensionsAndSource = (interactOn: InteractEventOn | undefined) => { |
169 | 169 | |
170 | 170 | // 绑定组件列表 |
171 | 171 | const fnEventsOptions = (): Array<SelectOption | SelectGroupOption> => { |
172 | - const filterOptionList = chartEditStore.componentList.filter(item => { | |
172 | + // 扁平化树形数据 | |
173 | + const fnFlattern = ( | |
174 | + data: Array<CreateComponentType | CreateComponentGroupType> | |
175 | + ): Array<CreateComponentType | CreateComponentGroupType> => { | |
176 | + return data.reduce( | |
177 | + ( | |
178 | + iter: Array<CreateComponentType | CreateComponentGroupType>, | |
179 | + val: CreateComponentType | CreateComponentGroupType | |
180 | + ) => { | |
181 | + if (val.groupList && val.groupList.length > 0) { | |
182 | + iter.push(val) | |
183 | + } else { | |
184 | + iter.push(val) | |
185 | + } | |
186 | + return val.groupList ? [...iter, ...fnFlattern(val.groupList)] : iter | |
187 | + }, | |
188 | + [] | |
189 | + ) | |
190 | + } | |
191 | + | |
192 | + const filterOptionList = fnFlattern(chartEditStore.componentList).filter(item => { | |
173 | 193 | // 排除自己 |
174 | 194 | const isNotSelf = item.id !== targetData.value.id |
175 | 195 | // 排除静态组件 | ... | ... |
... | ... | @@ -23,6 +23,8 @@ |
23 | 23 | <script setup lang="ts"> |
24 | 24 | import { computed, PropType } from 'vue' |
25 | 25 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
26 | +import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | |
27 | + | |
26 | 28 | import { useDesignStore } from '@/store/modules/designStore/designStore' |
27 | 29 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' |
28 | 30 | import { useSizeStyle, usePointStyle } from '../../hooks/useStyle.hook' |
... | ... | @@ -55,6 +57,9 @@ const themeColor = computed(() => { |
55 | 57 | |
56 | 58 | // 计算当前选中目标 |
57 | 59 | const hover = computed(() => { |
60 | + const isDrag = chartEditStore.getEditCanvas[EditCanvasTypeEnum.IS_DRAG] | |
61 | + if (isDrag) return false | |
62 | + | |
58 | 63 | if (props.item.status.lock) return false |
59 | 64 | return props.item.id === chartEditStore.getTargetChart.hoverId |
60 | 65 | }) | ... | ... |
... | ... | @@ -24,6 +24,11 @@ export const syncData = () => { |
24 | 24 | }) |
25 | 25 | } |
26 | 26 | |
27 | +// 同步数据到预览页 | |
28 | +export const syncDataToPreview = () => { | |
29 | + dispatchEvent(new CustomEvent(SavePageEnum.CHART_TO_PREVIEW, { detail: chartEditStore.getStorageInfo })) | |
30 | +} | |
31 | + | |
27 | 32 | // 侦听器更新 |
28 | 33 | const useSyncUpdateHandle = () => { |
29 | 34 | // 定义侦听器变量 |
... | ... | @@ -48,8 +53,8 @@ const useSyncUpdateHandle = () => { |
48 | 53 | // document.hasFocus() && syncData() |
49 | 54 | // }, editToJsonInterval) |
50 | 55 | |
51 | - // 失焦同步数据(暂不开启) | |
52 | - // addEventListener('blur', syncData) | |
56 | + // 失焦同步数据 | |
57 | + addEventListener('blur', syncDataToPreview) | |
53 | 58 | |
54 | 59 | // 监听编辑器保存事件 刷新工作台图表 |
55 | 60 | addEventListener(SavePageEnum.JSON, updateFn) | ... | ... |
... | ... | @@ -324,6 +324,15 @@ $asideBottom: 70px; |
324 | 324 | border-radius: 25px; |
325 | 325 | } |
326 | 326 | } |
327 | + &::after { | |
328 | + content: ''; | |
329 | + position: absolute; | |
330 | + left: 0; | |
331 | + width: 100%; | |
332 | + height: 10px; | |
333 | + bottom: -10px; | |
334 | + cursor: pointer; | |
335 | + } | |
327 | 336 | } |
328 | 337 | /* 最小化 */ |
329 | 338 | &.isMini { |
... | ... | @@ -350,6 +359,7 @@ $asideBottom: 70px; |
350 | 359 | 50% { |
351 | 360 | opacity: 0; |
352 | 361 | bottom: calc(#{$dockMiniBottom} - 10px); |
362 | + pointer-events: none; | |
353 | 363 | } |
354 | 364 | 100% { |
355 | 365 | opacity: 1; |
... | ... | @@ -364,15 +374,6 @@ $asideBottom: 70px; |
364 | 374 | display: none; |
365 | 375 | } |
366 | 376 | } |
367 | - &::after { | |
368 | - content: ''; | |
369 | - position: absolute; | |
370 | - left: 0; | |
371 | - width: 100%; | |
372 | - height: 20px; | |
373 | - bottom: -20px; | |
374 | - cursor: pointer; | |
375 | - } | |
376 | 377 | } |
377 | 378 | } |
378 | 379 | </style> | ... | ... |
... | ... | @@ -30,9 +30,16 @@ export const dragHandle = async (e: DragEvent) => { |
30 | 30 | // 修改状态 |
31 | 31 | chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_CREATE, false) |
32 | 32 | const dropData: Exclude<ConfigType, ['image']> = JSONParse(drayDataString) |
33 | + if (dropData.disabled) return | |
33 | 34 | |
34 | 35 | // 创建新图表组件 |
35 | 36 | const newComponent: CreateComponentType = await createComponent(dropData) |
37 | + console.log(newComponent) | |
38 | + if (dropData.redirectComponent) { | |
39 | + dropData.dataset && (newComponent.option.dataset = dropData.dataset) | |
40 | + newComponent.chartConfig.title = dropData.title | |
41 | + newComponent.chartConfig.chartFrame = dropData.chartFrame | |
42 | + } | |
36 | 43 | |
37 | 44 | setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2) |
38 | 45 | chartEditStore.addComponentList(newComponent, false, true) | ... | ... |
... | ... | @@ -5,8 +5,9 @@ import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStor |
5 | 5 | const chartEditStore = useChartEditStore() |
6 | 6 | |
7 | 7 | // 布局处理 |
8 | -export const useLayout = () => { | |
9 | - onMounted(() => { | |
8 | +export const useLayout = (fn: () => Promise<void>) => { | |
9 | + const removeScale: Function = () => { } | |
10 | + onMounted(async () => { | |
10 | 11 | // 设置 Dom 值(ref 不生效先用 document) |
11 | 12 | chartEditStore.setEditCanvas( |
12 | 13 | EditCanvasTypeEnum.EDIT_LAYOUT_DOM, |
... | ... | @@ -17,13 +18,16 @@ export const useLayout = () => { |
17 | 18 | document.getElementById('go-chart-edit-content') |
18 | 19 | ) |
19 | 20 | |
21 | + // 获取数据 | |
22 | + await fn() | |
20 | 23 | // 监听初始化 |
21 | 24 | const removeScale = chartEditStore.listenerScale() |
22 | 25 | |
23 | - onUnmounted(() => { | |
24 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.EDIT_LAYOUT_DOM, null) | |
25 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.EDIT_CONTENT_DOM, null) | |
26 | - removeScale() | |
27 | - }) | |
28 | 26 | }) |
29 | -} | |
\ No newline at end of file | ||
27 | + | |
28 | + onUnmounted(() => { | |
29 | + chartEditStore.setEditCanvas(EditCanvasTypeEnum.EDIT_LAYOUT_DOM, null) | |
30 | + chartEditStore.setEditCanvas(EditCanvasTypeEnum.EDIT_CONTENT_DOM, null) | |
31 | + removeScale() | |
32 | + }) | |
33 | +} | ... | ... |
... | ... | @@ -113,10 +113,10 @@ const { handleContextMenu } = useContextMenu() |
113 | 113 | const { dataSyncFetch, intervalDataSyncUpdate } = useSyncRemote() |
114 | 114 | |
115 | 115 | // 编辑时注入scale变量,消除警告 |
116 | -provide(SCALE_KEY, null); | |
116 | +provide(SCALE_KEY, null) | |
117 | 117 | |
118 | 118 | // 布局处理 |
119 | -useLayout() | |
119 | +useLayout(async () => {}) | |
120 | 120 | |
121 | 121 | // 点击事件 |
122 | 122 | const { mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle } = useMouseHandle() |
... | ... | @@ -188,6 +188,7 @@ const rangeStyle = computed(() => { |
188 | 188 | // 键盘事件 |
189 | 189 | onMounted(() => { |
190 | 190 | useAddKeyboard() |
191 | + // THINGS_KIT | |
191 | 192 | // 获取数据 |
192 | 193 | dataSyncFetch() |
193 | 194 | // 定时更新数据 | ... | ... |
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 | <!-- 模块展示按钮 --> |
12 | 12 | <n-tooltip v-for="item in btnList" :key="item.key" placement="bottom" trigger="hover"> |
13 | 13 | <template #trigger> |
14 | - <n-button size="small" ghost :type="styleHandle(item)" @click="clickHandle(item)"> | |
14 | + <n-button size="small" ghost :type="styleHandle(item)" :focusable="false" @click="clickHandle(item)"> | |
15 | 15 | <component :is="item.icon"></component> |
16 | 16 | </n-button> |
17 | 17 | </template> | ... | ... |
... | ... | @@ -58,7 +58,7 @@ const previewHandle = () => { |
58 | 58 | // 发布 |
59 | 59 | const sendHandle = () => { |
60 | 60 | goDialog({ |
61 | - message: '想体验发布功能,请前往 master-fetch 分支查看: https://demo.mtruning.club/#/login', | |
61 | + message: '想体验发布功能,请前往查看: https://demo.mtruning.club/#/login。源码需切换到:master-fetch 分支。', | |
62 | 62 | positiveText: '了然', |
63 | 63 | closeNegativeText: true, |
64 | 64 | onPositiveCallback: () => {} | ... | ... |
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | </template> |
21 | 21 | |
22 | 22 | <script setup lang="ts"> |
23 | -import { computed, PropType, ref, watch } from 'vue' | |
23 | +import { computed, PropType, ref } from 'vue' | |
24 | 24 | import { requireErrorImg } from '@/utils' |
25 | 25 | import { useDesignStore } from '@/store/modules/designStore/designStore' |
26 | 26 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ... | ... |
... | ... | @@ -137,6 +137,11 @@ export const useSync = () => { |
137 | 137 | ) => { |
138 | 138 | // 补充 class 上的方法 |
139 | 139 | let newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) |
140 | + if (_componentInstance.chartConfig.redirectComponent) { | |
141 | + _componentInstance.chartConfig.dataset && (newComponent.option.dataset = _componentInstance.chartConfig.dataset) | |
142 | + newComponent.chartConfig.title = _componentInstance.chartConfig.title | |
143 | + newComponent.chartConfig.chartFrame = _componentInstance.chartConfig.chartFrame | |
144 | + } | |
140 | 145 | if (callBack) { |
141 | 146 | if (changeId) { |
142 | 147 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) |
... | ... | @@ -190,6 +195,11 @@ export const useSync = () => { |
190 | 195 | } else { |
191 | 196 | await create(comItem as CreateComponentType) |
192 | 197 | } |
198 | + if (percentage === 100) { | |
199 | + // 清除历史记录 | |
200 | + chartHistoryStore.clearBackStack() | |
201 | + chartHistoryStore.clearForwardStack() | |
202 | + } | |
193 | 203 | } |
194 | 204 | } else { |
195 | 205 | // 非组件(顺便排除脏数据) | ... | ... |
... | ... | @@ -59,6 +59,8 @@ |
59 | 59 | <n-form-item path="username"> |
60 | 60 | <n-input |
61 | 61 | v-model:value="formInline.username" |
62 | + type="text" | |
63 | + maxlength="16" | |
62 | 64 | :placeholder="$t('global.form_account')" |
63 | 65 | > |
64 | 66 | <template #prefix> |
... | ... | @@ -72,6 +74,7 @@ |
72 | 74 | <n-input |
73 | 75 | v-model:value="formInline.password" |
74 | 76 | type="password" |
77 | + maxlength="16" | |
75 | 78 | show-password-on="click" |
76 | 79 | :placeholder="$t('global.form_password')" |
77 | 80 | > | ... | ... |
... | ... | @@ -13,13 +13,13 @@ import Preview from './index.vue' |
13 | 13 | |
14 | 14 | let key = ref(Date.now()) |
15 | 15 | |
16 | - // 数据变更 -> 组件销毁重建 | |
17 | - ;[SavePageEnum.JSON, SavePageEnum.CHART].forEach((saveEvent: string) => { | |
18 | - if (!window.opener) return | |
19 | - window.opener.addEventListener(saveEvent, async (e: any) => { | |
20 | - const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType | |
21 | - setSessionStorage(StorageEnum.GO_CHART_STORAGE_LIST, [{ ...e.detail, id: localStorageInfo.id }]) | |
22 | - key.value = Date.now() | |
23 | - }) | |
24 | - }) | |
16 | +// 数据变更 -> 组件销毁重建 | |
17 | +;[SavePageEnum.JSON, SavePageEnum.CHART_TO_PREVIEW].forEach((saveEvent: string) => { | |
18 | + if (!window.opener) return | |
19 | + window.opener.addEventListener(saveEvent, async (e: any) => { | |
20 | + const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType | |
21 | + setSessionStorage(StorageEnum.GO_CHART_STORAGE_LIST, [{ ...e.detail, id: localStorageInfo.id }]) | |
22 | + key.value = Date.now() | |
23 | + }) | |
24 | +}) | |
25 | 25 | </script> | ... | ... |
... | ... | @@ -132,20 +132,6 @@ const selectOptions = ref([ |
132 | 132 | icon: renderIcon(BrowsersOutlineIcon) |
133 | 133 | }, |
134 | 134 | { |
135 | - label: renderLang('global.r_copy'), | |
136 | - key: 'copy', | |
137 | - icon: renderIcon(CopyIcon) | |
138 | - }, | |
139 | - { | |
140 | - label: renderLang('global.r_rename'), | |
141 | - key: 'rename', | |
142 | - icon: renderIcon(PencilIcon) | |
143 | - }, | |
144 | - { | |
145 | - type: 'divider', | |
146 | - key: 'd1' | |
147 | - }, | |
148 | - { | |
149 | 135 | label: props.cardData?.release |
150 | 136 | ? renderLang('global.r_unpublish') |
151 | 137 | : renderLang('global.r_publish'), |
... | ... | @@ -153,15 +139,6 @@ const selectOptions = ref([ |
153 | 139 | icon: renderIcon(SendIcon) |
154 | 140 | }, |
155 | 141 | { |
156 | - label: renderLang('global.r_download'), | |
157 | - key: 'download', | |
158 | - icon: renderIcon(DownloadIcon) | |
159 | - }, | |
160 | - { | |
161 | - type: 'divider', | |
162 | - key: 'd2' | |
163 | - }, | |
164 | - { | |
165 | 142 | label: renderLang('global.r_delete'), |
166 | 143 | key: 'delete', |
167 | 144 | icon: renderIcon(TrashIcon) | ... | ... |
... | ... | @@ -45,8 +45,7 @@ const collapsed = ref<boolean>(false) |
45 | 45 | const { getAsideCollapsedWidth } = toRefs(useSettingStore()) |
46 | 46 | |
47 | 47 | const route = useRoute() |
48 | -const routeRame = computed(() => route.name) | |
49 | -const menuValue = ref(routeRame) | |
48 | +const menuValue = computed(() => route.name) | |
50 | 49 | |
51 | 50 | const menuOptions = menuOptionsInit() |
52 | 51 | ... | ... |