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 | "name": "go-view", | 2 | "name": "go-view", |
3 | - "version": "1.2.0", | 3 | + "version": "1.2.6", |
4 | "engines": { | 4 | "engines": { |
5 | - "node": ">=16.14 <18.0.0" | 5 | + "node": ">=12.0" |
6 | }, | 6 | }, |
7 | "scripts": { | 7 | "scripts": { |
8 | "dev": "vite --host", | 8 | "dev": "vite --host", |
@@ -37,6 +37,7 @@ | @@ -37,6 +37,7 @@ | ||
37 | "html2canvas": "^1.4.1", | 37 | "html2canvas": "^1.4.1", |
38 | "jwt-decode": "^3.1.2", | 38 | "jwt-decode": "^3.1.2", |
39 | "keymaster": "^1.6.2", | 39 | "keymaster": "^1.6.2", |
40 | + "mitt": "^3.0.0", | ||
40 | "monaco-editor": "^0.33.0", | 41 | "monaco-editor": "^0.33.0", |
41 | "naive-ui": "2.34.3", | 42 | "naive-ui": "2.34.3", |
42 | "pinia": "^2.0.13", | 43 | "pinia": "^2.0.13", |
@@ -56,6 +57,8 @@ | @@ -56,6 +57,8 @@ | ||
56 | "devDependencies": { | 57 | "devDependencies": { |
57 | "@commitlint/cli": "^17.0.2", | 58 | "@commitlint/cli": "^17.0.2", |
58 | "@commitlint/config-conventional": "^17.0.2", | 59 | "@commitlint/config-conventional": "^17.0.2", |
60 | + "@iconify/types": "^2.0.0", | ||
61 | + "@iconify/vue": "^4.1.1", | ||
59 | "@types/node": "^16.11.26", | 62 | "@types/node": "^16.11.26", |
60 | "@types/qs": "^6.9.7", | 63 | "@types/qs": "^6.9.7", |
61 | "@types/three": "^0.144.0", | 64 | "@types/three": "^0.144.0", |
@@ -64,8 +67,8 @@ | @@ -64,8 +67,8 @@ | ||
64 | "@typescript-eslint/parser": "^5.18.0", | 67 | "@typescript-eslint/parser": "^5.18.0", |
65 | "@vicons/carbon": "^0.12.0", | 68 | "@vicons/carbon": "^0.12.0", |
66 | "@vicons/ionicons5": "~0.11.0", | 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 | "@vue/compiler-sfc": "^3.2.31", | 72 | "@vue/compiler-sfc": "^3.2.31", |
70 | "@vueuse/core": "^7.7.1", | 73 | "@vueuse/core": "^7.7.1", |
71 | "commitlint": "^17.0.2", | 74 | "commitlint": "^17.0.2", |
@@ -84,7 +87,7 @@ | @@ -84,7 +87,7 @@ | ||
84 | "sass": "^1.49.11", | 87 | "sass": "^1.49.11", |
85 | "sass-loader": "^12.6.0", | 88 | "sass-loader": "^12.6.0", |
86 | "typescript": "4.6.3", | 89 | "typescript": "4.6.3", |
87 | - "vite": "2.9.9", | 90 | + "vite": "4.3.6", |
88 | "vite-plugin-compression": "^0.5.1", | 91 | "vite-plugin-compression": "^0.5.1", |
89 | "vite-plugin-html": "^3.2.0", | 92 | "vite-plugin-html": "^3.2.0", |
90 | "vite-plugin-importer": "^0.2.5", | 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 | dependencies: | 7 | dependencies: |
4 | '@amap/amap-jsapi-loader': | 8 | '@amap/amap-jsapi-loader': |
@@ -61,6 +65,9 @@ dependencies: | @@ -61,6 +65,9 @@ dependencies: | ||
61 | keymaster: | 65 | keymaster: |
62 | specifier: ^1.6.2 | 66 | specifier: ^1.6.2 |
63 | version: 1.6.2 | 67 | version: 1.6.2 |
68 | + mitt: | ||
69 | + specifier: ^3.0.0 | ||
70 | + version: 3.0.0 | ||
64 | monaco-editor: | 71 | monaco-editor: |
65 | specifier: ^0.33.0 | 72 | specifier: ^0.33.0 |
66 | version: 0.33.0 | 73 | version: 0.33.0 |
@@ -85,6 +92,9 @@ dependencies: | @@ -85,6 +92,9 @@ dependencies: | ||
85 | vue: | 92 | vue: |
86 | specifier: ^3.2.31 | 93 | specifier: ^3.2.31 |
87 | version: 3.2.37 | 94 | version: 3.2.37 |
95 | + vue-3d-loader: | ||
96 | + specifier: ^2.1.7 | ||
97 | + version: 2.1.7 | ||
88 | vue-demi: | 98 | vue-demi: |
89 | specifier: ^0.13.1 | 99 | specifier: ^0.13.1 |
90 | version: 0.13.1(vue@3.2.37) | 100 | version: 0.13.1(vue@3.2.37) |
@@ -111,6 +121,12 @@ devDependencies: | @@ -111,6 +121,12 @@ devDependencies: | ||
111 | '@commitlint/config-conventional': | 121 | '@commitlint/config-conventional': |
112 | specifier: ^17.0.2 | 122 | specifier: ^17.0.2 |
113 | version: 17.0.2 | 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 | '@types/node': | 130 | '@types/node': |
115 | specifier: ^16.11.26 | 131 | specifier: ^16.11.26 |
116 | version: 16.11.40 | 132 | version: 16.11.40 |
@@ -136,11 +152,11 @@ devDependencies: | @@ -136,11 +152,11 @@ devDependencies: | ||
136 | specifier: ~0.11.0 | 152 | specifier: ~0.11.0 |
137 | version: 0.11.0 | 153 | version: 0.11.0 |
138 | '@vitejs/plugin-vue': | 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 | '@vitejs/plugin-vue-jsx': | 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 | '@vue/compiler-sfc': | 160 | '@vue/compiler-sfc': |
145 | specifier: ^3.2.31 | 161 | specifier: ^3.2.31 |
146 | version: 3.2.37 | 162 | version: 3.2.37 |
@@ -196,20 +212,20 @@ devDependencies: | @@ -196,20 +212,20 @@ devDependencies: | ||
196 | specifier: 4.6.3 | 212 | specifier: 4.6.3 |
197 | version: 4.6.3 | 213 | version: 4.6.3 |
198 | vite: | 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 | vite-plugin-compression: | 217 | vite-plugin-compression: |
202 | specifier: ^0.5.1 | 218 | specifier: ^0.5.1 |
203 | - version: 0.5.1(vite@2.9.9) | 219 | + version: 0.5.1(vite@4.3.6) |
204 | vite-plugin-html: | 220 | vite-plugin-html: |
205 | specifier: ^3.2.0 | 221 | specifier: ^3.2.0 |
206 | - version: 3.2.0(vite@2.9.9) | 222 | + version: 3.2.0(vite@4.3.6) |
207 | vite-plugin-importer: | 223 | vite-plugin-importer: |
208 | specifier: ^0.2.5 | 224 | specifier: ^0.2.5 |
209 | version: 0.2.5 | 225 | version: 0.2.5 |
210 | vite-plugin-mock: | 226 | vite-plugin-mock: |
211 | specifier: ^2.9.6 | 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 | vite-plugin-monaco-editor: | 229 | vite-plugin-monaco-editor: |
214 | specifier: ^1.1.0 | 230 | specifier: ^1.1.0 |
215 | version: 1.1.0(monaco-editor@0.33.0) | 231 | version: 1.1.0(monaco-editor@0.33.0) |
@@ -245,11 +261,23 @@ packages: | @@ -245,11 +261,23 @@ packages: | ||
245 | '@babel/highlight': 7.17.12 | 261 | '@babel/highlight': 7.17.12 |
246 | dev: true | 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 | /@babel/compat-data@7.18.5: | 271 | /@babel/compat-data@7.18.5: |
249 | resolution: {integrity: sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==} | 272 | resolution: {integrity: sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==} |
250 | engines: {node: '>=6.9.0'} | 273 | engines: {node: '>=6.9.0'} |
251 | dev: true | 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 | /@babel/core@7.18.5: | 281 | /@babel/core@7.18.5: |
254 | resolution: {integrity: sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==} | 282 | resolution: {integrity: sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==} |
255 | engines: {node: '>=6.9.0'} | 283 | engines: {node: '>=6.9.0'} |
@@ -273,6 +301,29 @@ packages: | @@ -273,6 +301,29 @@ packages: | ||
273 | - supports-color | 301 | - supports-color |
274 | dev: true | 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 | /@babel/generator@7.18.2: | 327 | /@babel/generator@7.18.2: |
277 | resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} | 328 | resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} |
278 | engines: {node: '>=6.9.0'} | 329 | engines: {node: '>=6.9.0'} |
@@ -282,11 +333,21 @@ packages: | @@ -282,11 +333,21 @@ packages: | ||
282 | jsesc: 2.5.2 | 333 | jsesc: 2.5.2 |
283 | dev: true | 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 | engines: {node: '>=6.9.0'} | 338 | engines: {node: '>=6.9.0'} |
288 | dependencies: | 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 | dev: true | 351 | dev: true |
291 | 352 | ||
292 | /@babel/helper-compilation-targets@7.18.2(@babel/core@7.18.5): | 353 | /@babel/helper-compilation-targets@7.18.2(@babel/core@7.18.5): |
@@ -302,20 +363,36 @@ packages: | @@ -302,20 +363,36 @@ packages: | ||
302 | semver: 6.3.0 | 363 | semver: 6.3.0 |
303 | dev: true | 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 | engines: {node: '>=6.9.0'} | 368 | engines: {node: '>=6.9.0'} |
308 | peerDependencies: | 369 | peerDependencies: |
309 | '@babel/core': ^7.0.0 | 370 | '@babel/core': ^7.0.0 |
310 | dependencies: | 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 | transitivePeerDependencies: | 396 | transitivePeerDependencies: |
320 | - supports-color | 397 | - supports-color |
321 | dev: true | 398 | dev: true |
@@ -325,6 +402,11 @@ packages: | @@ -325,6 +402,11 @@ packages: | ||
325 | engines: {node: '>=6.9.0'} | 402 | engines: {node: '>=6.9.0'} |
326 | dev: true | 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 | /@babel/helper-function-name@7.17.9: | 410 | /@babel/helper-function-name@7.17.9: |
329 | resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} | 411 | resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} |
330 | engines: {node: '>=6.9.0'} | 412 | engines: {node: '>=6.9.0'} |
@@ -333,6 +415,14 @@ packages: | @@ -333,6 +415,14 @@ packages: | ||
333 | '@babel/types': 7.18.4 | 415 | '@babel/types': 7.18.4 |
334 | dev: true | 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 | /@babel/helper-hoist-variables@7.16.7: | 426 | /@babel/helper-hoist-variables@7.16.7: |
337 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} | 427 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} |
338 | engines: {node: '>=6.9.0'} | 428 | engines: {node: '>=6.9.0'} |
@@ -340,11 +430,18 @@ packages: | @@ -340,11 +430,18 @@ packages: | ||
340 | '@babel/types': 7.18.4 | 430 | '@babel/types': 7.18.4 |
341 | dev: true | 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 | engines: {node: '>=6.9.0'} | 435 | engines: {node: '>=6.9.0'} |
346 | dependencies: | 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 | dev: true | 445 | dev: true |
349 | 446 | ||
350 | /@babel/helper-module-imports@7.16.7: | 447 | /@babel/helper-module-imports@7.16.7: |
@@ -354,6 +451,13 @@ packages: | @@ -354,6 +451,13 @@ packages: | ||
354 | '@babel/types': 7.18.4 | 451 | '@babel/types': 7.18.4 |
355 | dev: true | 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 | /@babel/helper-module-transforms@7.18.0: | 461 | /@babel/helper-module-transforms@7.18.0: |
358 | resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} | 462 | resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} |
359 | engines: {node: '>=6.9.0'} | 463 | engines: {node: '>=6.9.0'} |
@@ -370,11 +474,27 @@ packages: | @@ -370,11 +474,27 @@ packages: | ||
370 | - supports-color | 474 | - supports-color |
371 | dev: true | 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 | engines: {node: '>=6.9.0'} | 479 | engines: {node: '>=6.9.0'} |
376 | dependencies: | 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 | dev: true | 498 | dev: true |
379 | 499 | ||
380 | /@babel/helper-plugin-utils@7.17.12: | 500 | /@babel/helper-plugin-utils@7.17.12: |
@@ -382,15 +502,21 @@ packages: | @@ -382,15 +502,21 @@ packages: | ||
382 | engines: {node: '>=6.9.0'} | 502 | engines: {node: '>=6.9.0'} |
383 | dev: true | 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 | engines: {node: '>=6.9.0'} | 512 | engines: {node: '>=6.9.0'} |
388 | dependencies: | 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 | transitivePeerDependencies: | 520 | transitivePeerDependencies: |
395 | - supports-color | 521 | - supports-color |
396 | dev: true | 522 | dev: true |
@@ -402,6 +528,20 @@ packages: | @@ -402,6 +528,20 @@ packages: | ||
402 | '@babel/types': 7.18.4 | 528 | '@babel/types': 7.18.4 |
403 | dev: true | 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 | /@babel/helper-split-export-declaration@7.16.7: | 545 | /@babel/helper-split-export-declaration@7.16.7: |
406 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} | 546 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} |
407 | engines: {node: '>=6.9.0'} | 547 | engines: {node: '>=6.9.0'} |
@@ -409,15 +549,37 @@ packages: | @@ -409,15 +549,37 @@ packages: | ||
409 | '@babel/types': 7.18.4 | 549 | '@babel/types': 7.18.4 |
410 | dev: true | 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 | /@babel/helper-validator-identifier@7.16.7: | 564 | /@babel/helper-validator-identifier@7.16.7: |
413 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} | 565 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} |
414 | engines: {node: '>=6.9.0'} | 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 | /@babel/helper-validator-option@7.16.7: | 573 | /@babel/helper-validator-option@7.16.7: |
417 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} | 574 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} |
418 | engines: {node: '>=6.9.0'} | 575 | engines: {node: '>=6.9.0'} |
419 | dev: true | 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 | /@babel/helpers@7.18.2: | 583 | /@babel/helpers@7.18.2: |
422 | resolution: {integrity: sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==} | 584 | resolution: {integrity: sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==} |
423 | engines: {node: '>=6.9.0'} | 585 | engines: {node: '>=6.9.0'} |
@@ -429,6 +591,17 @@ packages: | @@ -429,6 +591,17 @@ packages: | ||
429 | - supports-color | 591 | - supports-color |
430 | dev: true | 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 | /@babel/highlight@7.17.12: | 605 | /@babel/highlight@7.17.12: |
433 | resolution: {integrity: sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==} | 606 | resolution: {integrity: sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==} |
434 | engines: {node: '>=6.9.0'} | 607 | engines: {node: '>=6.9.0'} |
@@ -438,6 +611,15 @@ packages: | @@ -438,6 +611,15 @@ packages: | ||
438 | js-tokens: 4.0.0 | 611 | js-tokens: 4.0.0 |
439 | dev: true | 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 | /@babel/parser@7.18.5: | 623 | /@babel/parser@7.18.5: |
442 | resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==} | 624 | resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==} |
443 | engines: {node: '>=6.0.0'} | 625 | engines: {node: '>=6.0.0'} |
@@ -445,6 +627,14 @@ packages: | @@ -445,6 +627,14 @@ packages: | ||
445 | dependencies: | 627 | dependencies: |
446 | '@babel/types': 7.18.4 | 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 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.5): | 638 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.5): |
449 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} | 639 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} |
450 | peerDependencies: | 640 | peerDependencies: |
@@ -454,36 +644,37 @@ packages: | @@ -454,36 +644,37 @@ packages: | ||
454 | '@babel/helper-plugin-utils': 7.17.12 | 644 | '@babel/helper-plugin-utils': 7.17.12 |
455 | dev: true | 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 | resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==} | 648 | resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==} |
459 | engines: {node: '>=6.9.0'} | 649 | engines: {node: '>=6.9.0'} |
460 | peerDependencies: | 650 | peerDependencies: |
461 | '@babel/core': ^7.0.0-0 | 651 | '@babel/core': ^7.0.0-0 |
462 | dependencies: | 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 | dev: true | 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 | engines: {node: '>=6.9.0'} | 659 | engines: {node: '>=6.9.0'} |
470 | peerDependencies: | 660 | peerDependencies: |
471 | '@babel/core': ^7.0.0-0 | 661 | '@babel/core': ^7.0.0-0 |
472 | dependencies: | 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 | dev: true | 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 | engines: {node: '>=6.9.0'} | 669 | engines: {node: '>=6.9.0'} |
480 | peerDependencies: | 670 | peerDependencies: |
481 | '@babel/core': ^7.0.0-0 | 671 | '@babel/core': ^7.0.0-0 |
482 | dependencies: | 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 | transitivePeerDependencies: | 678 | transitivePeerDependencies: |
488 | - supports-color | 679 | - supports-color |
489 | dev: true | 680 | dev: true |
@@ -504,6 +695,15 @@ packages: | @@ -504,6 +695,15 @@ packages: | ||
504 | '@babel/types': 7.18.4 | 695 | '@babel/types': 7.18.4 |
505 | dev: true | 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 | /@babel/traverse@7.18.5: | 707 | /@babel/traverse@7.18.5: |
508 | resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==} | 708 | resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==} |
509 | engines: {node: '>=6.9.0'} | 709 | engines: {node: '>=6.9.0'} |
@@ -522,6 +722,24 @@ packages: | @@ -522,6 +722,24 @@ packages: | ||
522 | - supports-color | 722 | - supports-color |
523 | dev: true | 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 | /@babel/types@7.18.4: | 743 | /@babel/types@7.18.4: |
526 | resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} | 744 | resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} |
527 | engines: {node: '>=6.9.0'} | 745 | engines: {node: '>=6.9.0'} |
@@ -529,6 +747,15 @@ packages: | @@ -529,6 +747,15 @@ packages: | ||
529 | '@babel/helper-validator-identifier': 7.16.7 | 747 | '@babel/helper-validator-identifier': 7.16.7 |
530 | to-fast-properties: 2.0.0 | 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 | /@commitlint/cli@17.0.2: | 759 | /@commitlint/cli@17.0.2: |
533 | resolution: {integrity: sha512-Axe89Js0YzGGd4gxo3JLlF7yIdjOVpG1LbOorGc6PfYF+drBh14PvarSDLzyd2TNqdylUCq9wb9/A88ZjIdyhA==} | 760 | resolution: {integrity: sha512-Axe89Js0YzGGd4gxo3JLlF7yIdjOVpG1LbOorGc6PfYF+drBh14PvarSDLzyd2TNqdylUCq9wb9/A88ZjIdyhA==} |
534 | engines: {node: '>=v14'} | 761 | engines: {node: '>=v14'} |
@@ -689,32 +916,230 @@ packages: | @@ -689,32 +916,230 @@ packages: | ||
689 | chalk: 4.1.2 | 916 | chalk: 4.1.2 |
690 | dev: true | 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 | engines: {node: '>=12'} | 1137 | engines: {node: '>=12'} |
695 | - dependencies: | ||
696 | - '@jridgewell/trace-mapping': 0.3.9 | 1138 | + cpu: [x64] |
1139 | + os: [win32] | ||
1140 | + requiresBuild: true | ||
697 | dev: true | 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 | /@eslint/eslintrc@1.3.0: | 1144 | /@eslint/eslintrc@1.3.0: |
720 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} | 1145 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} |
@@ -748,6 +1173,19 @@ packages: | @@ -748,6 +1173,19 @@ packages: | ||
748 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} | 1173 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} |
749 | dev: true | 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 | /@intlify/core-base@9.2.2: | 1189 | /@intlify/core-base@9.2.2: |
752 | resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==} | 1190 | resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==} |
753 | engines: {node: '>= 14'} | 1191 | engines: {node: '>= 14'} |
@@ -803,6 +1241,15 @@ packages: | @@ -803,6 +1241,15 @@ packages: | ||
803 | '@jridgewell/trace-mapping': 0.3.13 | 1241 | '@jridgewell/trace-mapping': 0.3.13 |
804 | dev: true | 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 | /@jridgewell/resolve-uri@3.0.7: | 1253 | /@jridgewell/resolve-uri@3.0.7: |
807 | resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} | 1254 | resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} |
808 | engines: {node: '>=6.0.0'} | 1255 | engines: {node: '>=6.0.0'} |
@@ -1049,6 +1496,12 @@ packages: | @@ -1049,6 +1496,12 @@ packages: | ||
1049 | '@types/node': 17.0.43 | 1496 | '@types/node': 17.0.43 |
1050 | dev: true | 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 | /@types/three@0.144.0: | 1505 | /@types/three@0.144.0: |
1053 | resolution: {integrity: sha512-psvEs6q5rLN50jUYZ3D4pZMfxTbdt3A243blt0my7/NcL6chaCZpHe2csbCtx0SOD9fI/XnF3wnVUAYZGqCSYg==} | 1506 | resolution: {integrity: sha512-psvEs6q5rLN50jUYZ3D4pZMfxTbdt3A243blt0my7/NcL6chaCZpHe2csbCtx0SOD9fI/XnF3wnVUAYZGqCSYg==} |
1054 | dependencies: | 1507 | dependencies: |
@@ -1067,7 +1520,6 @@ packages: | @@ -1067,7 +1520,6 @@ packages: | ||
1067 | 1520 | ||
1068 | /@types/webxr@0.5.0: | 1521 | /@types/webxr@0.5.0: |
1069 | resolution: {integrity: sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==} | 1522 | resolution: {integrity: sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==} |
1070 | - dev: true | ||
1071 | 1523 | ||
1072 | /@typescript-eslint/eslint-plugin@5.28.0(@typescript-eslint/parser@5.28.0)(eslint@8.17.0)(typescript@4.6.3): | 1524 | /@typescript-eslint/eslint-plugin@5.28.0(@typescript-eslint/parser@5.28.0)(eslint@8.17.0)(typescript@4.6.3): |
1073 | resolution: {integrity: sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA==} | 1525 | resolution: {integrity: sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA==} |
@@ -1236,27 +1688,31 @@ packages: | @@ -1236,27 +1688,31 @@ packages: | ||
1236 | is-function: 1.0.2 | 1688 | is-function: 1.0.2 |
1237 | dev: false | 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 | dependencies: | 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 | transitivePeerDependencies: | 1703 | transitivePeerDependencies: |
1250 | - supports-color | 1704 | - supports-color |
1251 | dev: true | 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 | peerDependencies: | 1710 | peerDependencies: |
1257 | - vite: ^2.5.10 | 1711 | + vite: ^4.0.0 |
1712 | + vue: ^3.2.25 | ||
1258 | dependencies: | 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 | dev: true | 1716 | dev: true |
1261 | 1717 | ||
1262 | /@volar/code-gen@0.38.9: | 1718 | /@volar/code-gen@0.38.9: |
@@ -1293,11 +1749,11 @@ packages: | @@ -1293,11 +1749,11 @@ packages: | ||
1293 | resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} | 1749 | resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} |
1294 | dev: true | 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 | resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} | 1753 | resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} |
1298 | dependencies: | 1754 | dependencies: |
1299 | '@babel/helper-module-imports': 7.16.7 | 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 | '@babel/template': 7.16.7 | 1757 | '@babel/template': 7.16.7 |
1302 | '@babel/traverse': 7.18.5 | 1758 | '@babel/traverse': 7.18.5 |
1303 | '@babel/types': 7.18.4 | 1759 | '@babel/types': 7.18.4 |
@@ -1803,6 +2259,17 @@ packages: | @@ -1803,6 +2259,17 @@ packages: | ||
1803 | picocolors: 1.0.0 | 2259 | picocolors: 1.0.0 |
1804 | dev: true | 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 | /buffer-from@1.1.2: | 2273 | /buffer-from@1.1.2: |
1807 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} | 2274 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} |
1808 | dev: true | 2275 | dev: true |
@@ -1867,6 +2334,10 @@ packages: | @@ -1867,6 +2334,10 @@ packages: | ||
1867 | resolution: {integrity: sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg==} | 2334 | resolution: {integrity: sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg==} |
1868 | dev: true | 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 | /capital-case@1.0.4: | 2341 | /capital-case@1.0.4: |
1871 | resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} | 2342 | resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} |
1872 | dependencies: | 2343 | dependencies: |
@@ -2471,6 +2942,10 @@ packages: | @@ -2471,6 +2942,10 @@ packages: | ||
2471 | resolution: {integrity: sha512-niPzKBSYPG06gxLKO0c2kEmgdRMTtIbNrBlvD31Ld8Q57b/K0218U4j8u/OOt25XE1eFOn47FcmQVdx9R1qqxA==} | 2942 | resolution: {integrity: sha512-niPzKBSYPG06gxLKO0c2kEmgdRMTtIbNrBlvD31Ld8Q57b/K0218U4j8u/OOt25XE1eFOn47FcmQVdx9R1qqxA==} |
2472 | dev: true | 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 | /emoji-regex@8.0.0: | 2949 | /emoji-regex@8.0.0: |
2475 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} | 2950 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} |
2476 | dev: true | 2951 | dev: true |
@@ -2546,218 +3021,40 @@ packages: | @@ -2546,218 +3021,40 @@ packages: | ||
2546 | is-symbol: 1.0.4 | 3021 | is-symbol: 1.0.4 |
2547 | dev: true | 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 | /esbuild@0.11.3: | 3024 | /esbuild@0.11.3: |
2730 | resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==} | 3025 | resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==} |
2731 | hasBin: true | 3026 | hasBin: true |
2732 | requiresBuild: true | 3027 | requiresBuild: true |
2733 | dev: true | 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 | engines: {node: '>=12'} | 3032 | engines: {node: '>=12'} |
2738 | hasBin: true | 3033 | hasBin: true |
2739 | requiresBuild: true | 3034 | requiresBuild: true |
2740 | optionalDependencies: | 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 | dev: true | 3058 | dev: true |
2762 | 3059 | ||
2763 | /escalade@3.1.1: | 3060 | /escalade@3.1.1: |
@@ -3469,10 +3766,6 @@ packages: | @@ -3469,10 +3766,6 @@ packages: | ||
3469 | dependencies: | 3766 | dependencies: |
3470 | function-bind: 1.1.1 | 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 | /he@1.2.0: | 3769 | /he@1.2.0: |
3477 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} | 3770 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} |
3478 | hasBin: true | 3771 | hasBin: true |
@@ -3928,6 +4221,12 @@ packages: | @@ -3928,6 +4221,12 @@ packages: | ||
3928 | hasBin: true | 4221 | hasBin: true |
3929 | dev: true | 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 | /jsonfile@6.1.0: | 4230 | /jsonfile@6.1.0: |
3932 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} | 4231 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} |
3933 | dependencies: | 4232 | dependencies: |
@@ -4053,6 +4352,12 @@ packages: | @@ -4053,6 +4352,12 @@ packages: | ||
4053 | tslib: 2.4.0 | 4352 | tslib: 2.4.0 |
4054 | dev: true | 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 | /lru-cache@6.0.0: | 4361 | /lru-cache@6.0.0: |
4057 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} | 4362 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} |
4058 | engines: {node: '>=10'} | 4363 | engines: {node: '>=10'} |
@@ -4185,6 +4490,10 @@ packages: | @@ -4185,6 +4490,10 @@ packages: | ||
4185 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} | 4490 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} |
4186 | dev: true | 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 | /mkdirp@1.0.4: | 4497 | /mkdirp@1.0.4: |
4189 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} | 4498 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} |
4190 | engines: {node: '>=10'} | 4499 | engines: {node: '>=10'} |
@@ -4267,6 +4576,12 @@ packages: | @@ -4267,6 +4576,12 @@ packages: | ||
4267 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} | 4576 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} |
4268 | hasBin: true | 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 | /natural-compare@1.4.0: | 4585 | /natural-compare@1.4.0: |
4271 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} | 4586 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} |
4272 | dev: true | 4587 | dev: true |
@@ -4308,6 +4623,10 @@ packages: | @@ -4308,6 +4623,10 @@ packages: | ||
4308 | upper-case: 2.0.2 | 4623 | upper-case: 2.0.2 |
4309 | dev: true | 4624 | dev: true |
4310 | 4625 | ||
4626 | + /node-releases@2.0.12: | ||
4627 | + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} | ||
4628 | + dev: true | ||
4629 | + | ||
4311 | /node-releases@2.0.5: | 4630 | /node-releases@2.0.5: |
4312 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} | 4631 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} |
4313 | dev: true | 4632 | dev: true |
@@ -4697,6 +5016,15 @@ packages: | @@ -4697,6 +5016,15 @@ packages: | ||
4697 | picocolors: 1.0.0 | 5016 | picocolors: 1.0.0 |
4698 | source-map-js: 1.0.2 | 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 | /prelude-ls@1.2.1: | 5028 | /prelude-ls@1.2.1: |
4701 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} | 5029 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} |
4702 | engines: {node: '>= 0.8.0'} | 5030 | engines: {node: '>= 0.8.0'} |
@@ -4904,6 +5232,14 @@ packages: | @@ -4904,6 +5232,14 @@ packages: | ||
4904 | fsevents: 2.3.2 | 5232 | fsevents: 2.3.2 |
4905 | dev: true | 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 | /run-async@2.4.1: | 5243 | /run-async@2.4.1: |
4908 | resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} | 5244 | resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} |
4909 | engines: {node: '>=0.12.0'} | 5245 | engines: {node: '>=0.12.0'} |
@@ -5294,6 +5630,10 @@ packages: | @@ -5294,6 +5630,10 @@ packages: | ||
5294 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} | 5630 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} |
5295 | dev: true | 5631 | dev: true |
5296 | 5632 | ||
5633 | + /three@0.143.0: | ||
5634 | + resolution: {integrity: sha512-oKcAGYHhJ46TGEuHjodo2n6TY2R6lbvrkp+feKZxqsUL/WkH7GKKaeu6RHeyb2Xjfk2dPLRKLsOP0KM2VgT8Zg==} | ||
5635 | + dev: false | ||
5636 | + | ||
5297 | /three@0.145.0: | 5637 | /three@0.145.0: |
5298 | resolution: {integrity: sha512-EKoHQEtEJ4CB6b2BGMBgLZrfwLjXcSUfoI/MiIXUuRpeYsfK5aPWbYhdtIVWOH+x6X0TouldHKHBuc/LAiFzAw==} | 5638 | resolution: {integrity: sha512-EKoHQEtEJ4CB6b2BGMBgLZrfwLjXcSUfoI/MiIXUuRpeYsfK5aPWbYhdtIVWOH+x6X0TouldHKHBuc/LAiFzAw==} |
5299 | dev: false | 5639 | dev: false |
@@ -5477,6 +5817,17 @@ packages: | @@ -5477,6 +5817,17 @@ packages: | ||
5477 | engines: {node: '>= 0.8'} | 5817 | engines: {node: '>= 0.8'} |
5478 | dev: true | 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 | /upper-case-first@2.0.2: | 5831 | /upper-case-first@2.0.2: |
5481 | resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} | 5832 | resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} |
5482 | dependencies: | 5833 | dependencies: |
@@ -5571,7 +5922,7 @@ packages: | @@ -5571,7 +5922,7 @@ packages: | ||
5571 | global: 4.4.0 | 5922 | global: 4.4.0 |
5572 | dev: false | 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 | resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} | 5926 | resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} |
5576 | peerDependencies: | 5927 | peerDependencies: |
5577 | vite: '>=2.0.0' | 5928 | vite: '>=2.0.0' |
@@ -5579,12 +5930,12 @@ packages: | @@ -5579,12 +5930,12 @@ packages: | ||
5579 | chalk: 4.1.2 | 5930 | chalk: 4.1.2 |
5580 | debug: 4.3.4 | 5931 | debug: 4.3.4 |
5581 | fs-extra: 10.1.0 | 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 | transitivePeerDependencies: | 5934 | transitivePeerDependencies: |
5584 | - supports-color | 5935 | - supports-color |
5585 | dev: true | 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 | resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} | 5939 | resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} |
5589 | peerDependencies: | 5940 | peerDependencies: |
5590 | vite: '>=2.0.0' | 5941 | vite: '>=2.0.0' |
@@ -5601,7 +5952,7 @@ packages: | @@ -5601,7 +5952,7 @@ packages: | ||
5601 | html-minifier-terser: 6.1.0 | 5952 | html-minifier-terser: 6.1.0 |
5602 | node-html-parser: 5.4.2 | 5953 | node-html-parser: 5.4.2 |
5603 | pathe: 0.2.0 | 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 | dev: true | 5956 | dev: true |
5606 | 5957 | ||
5607 | /vite-plugin-importer@0.2.5: | 5958 | /vite-plugin-importer@0.2.5: |
@@ -5614,7 +5965,7 @@ packages: | @@ -5614,7 +5965,7 @@ packages: | ||
5614 | - supports-color | 5965 | - supports-color |
5615 | dev: true | 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 | resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==} | 5969 | resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==} |
5619 | engines: {node: '>=12.0.0'} | 5970 | engines: {node: '>=12.0.0'} |
5620 | peerDependencies: | 5971 | peerDependencies: |
@@ -5631,7 +5982,7 @@ packages: | @@ -5631,7 +5982,7 @@ packages: | ||
5631 | fast-glob: 3.2.11 | 5982 | fast-glob: 3.2.11 |
5632 | mockjs: 1.1.0 | 5983 | mockjs: 1.1.0 |
5633 | path-to-regexp: 6.2.1 | 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 | transitivePeerDependencies: | 5986 | transitivePeerDependencies: |
5636 | - rollup | 5987 | - rollup |
5637 | - supports-color | 5988 | - supports-color |
@@ -5645,26 +5996,35 @@ packages: | @@ -5645,26 +5996,35 @@ packages: | ||
5645 | monaco-editor: 0.33.0 | 5996 | monaco-editor: 0.33.0 |
5646 | dev: true | 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 | hasBin: true | 6002 | hasBin: true |
5652 | peerDependencies: | 6003 | peerDependencies: |
6004 | + '@types/node': '>= 14' | ||
5653 | less: '*' | 6005 | less: '*' |
5654 | sass: '*' | 6006 | sass: '*' |
5655 | stylus: '*' | 6007 | stylus: '*' |
6008 | + sugarss: '*' | ||
6009 | + terser: ^5.4.0 | ||
5656 | peerDependenciesMeta: | 6010 | peerDependenciesMeta: |
6011 | + '@types/node': | ||
6012 | + optional: true | ||
5657 | less: | 6013 | less: |
5658 | optional: true | 6014 | optional: true |
5659 | sass: | 6015 | sass: |
5660 | optional: true | 6016 | optional: true |
5661 | stylus: | 6017 | stylus: |
5662 | optional: true | 6018 | optional: true |
6019 | + sugarss: | ||
6020 | + optional: true | ||
6021 | + terser: | ||
6022 | + optional: true | ||
5663 | dependencies: | 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 | sass: 1.52.3 | 6028 | sass: 1.52.3 |
5669 | optionalDependencies: | 6029 | optionalDependencies: |
5670 | fsevents: 2.3.2 | 6030 | fsevents: 2.3.2 |
@@ -5679,6 +6039,14 @@ packages: | @@ -5679,6 +6039,14 @@ packages: | ||
5679 | vue: 3.2.37 | 6039 | vue: 3.2.37 |
5680 | dev: false | 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 | /vue-demi@0.12.5(vue@3.2.37): | 6050 | /vue-demi@0.12.5(vue@3.2.37): |
5683 | resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} | 6051 | resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} |
5684 | engines: {node: '>=12'} | 6052 | engines: {node: '>=12'} |
@@ -5870,7 +6238,7 @@ packages: | @@ -5870,7 +6238,7 @@ packages: | ||
5870 | '@webassemblyjs/wasm-parser': 1.11.1 | 6238 | '@webassemblyjs/wasm-parser': 1.11.1 |
5871 | acorn: 8.7.1 | 6239 | acorn: 8.7.1 |
5872 | acorn-import-assertions: 1.8.0(acorn@8.7.1) | 6240 | acorn-import-assertions: 1.8.0(acorn@8.7.1) |
5873 | - browserslist: 4.20.4 | 6241 | + browserslist: 4.21.7 |
5874 | chrome-trace-event: 1.0.3 | 6242 | chrome-trace-event: 1.0.3 |
5875 | enhanced-resolve: 5.12.0 | 6243 | enhanced-resolve: 5.12.0 |
5876 | es-module-lexer: 0.9.3 | 6244 | es-module-lexer: 0.9.3 |
@@ -5945,6 +6313,10 @@ packages: | @@ -5945,6 +6313,10 @@ packages: | ||
5945 | engines: {node: '>=10'} | 6313 | engines: {node: '>=10'} |
5946 | dev: true | 6314 | dev: true |
5947 | 6315 | ||
6316 | + /yallist@3.1.1: | ||
6317 | + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} | ||
6318 | + dev: true | ||
6319 | + | ||
5948 | /yallist@4.0.0: | 6320 | /yallist@4.0.0: |
5949 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} | 6321 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} |
5950 | dev: true | 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 | + } |
@@ -19,6 +19,8 @@ export const capsuleUrl = '/mock/capsule' | @@ -19,6 +19,8 @@ export const capsuleUrl = '/mock/capsule' | ||
19 | export const wordCloudUrl = '/mock/wordCloud' | 19 | export const wordCloudUrl = '/mock/wordCloud' |
20 | export const treemapUrl = '/mock/treemap' | 20 | export const treemapUrl = '/mock/treemap' |
21 | export const threeEarth01Url = '/mock/threeEarth01Data' | 21 | export const threeEarth01Url = '/mock/threeEarth01Data' |
22 | +export const sankeyUrl = '/mock/sankey' | ||
23 | +export const graphUrl = '/mock/graphData' | ||
22 | 24 | ||
23 | const mockObject: MockMethod[] = [ | 25 | const mockObject: MockMethod[] = [ |
24 | { | 26 | { |
@@ -103,6 +105,16 @@ const mockObject: MockMethod[] = [ | @@ -103,6 +105,16 @@ const mockObject: MockMethod[] = [ | ||
103 | method: RequestHttpEnum.GET, | 105 | method: RequestHttpEnum.GET, |
104 | response: () => test.threeEarth01Data | 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 | export default mockObject | 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,6 +2,8 @@ import heatmapJson from './heatMapData.json' | ||
2 | import scatterJson from './scatter.json' | 2 | import scatterJson from './scatter.json' |
3 | import mapJson from './map.json' | 3 | import mapJson from './map.json' |
4 | import tTreemapJson from './treemap.json' | 4 | import tTreemapJson from './treemap.json' |
5 | +import sankeyJson from './sankey.json' | ||
6 | +import graphDataJson from './graph.json' | ||
5 | 7 | ||
6 | export default { | 8 | export default { |
7 | // 单图表 | 9 | // 单图表 |
@@ -219,5 +221,19 @@ export default { | @@ -219,5 +221,19 @@ export default { | ||
219 | 'endArray|10': [{ name: '@name', N: '@integer(10, 100)', E: '@integer(10, 100)' }] | 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,7 +35,11 @@ import Person from './person.png' | ||
35 | 35 | ||
36 | import { icon } from '@/plugins' | 36 | import { icon } from '@/plugins' |
37 | import { useUserStore } from '@/store/external/modules/user' | 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 | const t = window['$t'] | 44 | const t = window['$t'] |
41 | 45 |
@@ -257,9 +257,36 @@ | @@ -257,9 +257,36 @@ | ||
257 | <n-switch v-model:value="legend.show" size="small"></n-switch> | 257 | <n-switch v-model:value="legend.show" size="small"></n-switch> |
258 | </template> | 258 | </template> |
259 | <setting-item-box name="图例文字"> | 259 | <setting-item-box name="图例文字"> |
260 | - <setting-item> | 260 | + <setting-item name="颜色"> |
261 | <n-color-picker size="small" v-model:value="legend.textStyle.color"></n-color-picker> | 261 | <n-color-picker size="small" v-model:value="legend.textStyle.color"></n-color-picker> |
262 | </setting-item> | 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 | </setting-item-box> | 290 | </setting-item-box> |
264 | </collapse-item> | 291 | </collapse-item> |
265 | 292 | ||
@@ -309,9 +336,9 @@ | @@ -309,9 +336,9 @@ | ||
309 | </template> | 336 | </template> |
310 | 337 | ||
311 | <script setup lang="ts"> | 338 | <script setup lang="ts"> |
312 | -import { PropType, computed } from 'vue' | 339 | +import { PropType, computed, watch } from 'vue' |
313 | import { GlobalThemeJsonType } from '@/settings/chartThemes/index' | 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 | import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting' | 342 | import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting' |
316 | import { icon } from '@/plugins' | 343 | import { icon } from '@/plugins' |
317 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 344 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
@@ -360,4 +387,14 @@ const grid = computed(() => { | @@ -360,4 +387,14 @@ const grid = computed(() => { | ||
360 | const visualMap = computed(() => { | 387 | const visualMap = computed(() => { |
361 | return props.optionData.visualMap | 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 | </script> | 400 | </script> |
1 | <template> | 1 | <template> |
2 | - <div class="go-Flipper" :class="[flipType, { go: isFlipping }]"> | 2 | + <div class="go-flipper" :class="[flipType, { go: isFlipping }]"> |
3 | <div class="digital front" :data-front="frontTextFromData"></div> | 3 | <div class="digital front" :data-front="frontTextFromData"></div> |
4 | <div class="digital back" :data-back="backTextFromData"></div> | 4 | <div class="digital back" :data-back="backTextFromData"></div> |
5 | </div> | 5 | </div> |
6 | </template> | 6 | </template> |
7 | 7 | ||
8 | <script lang="ts" setup> | 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 | const props = defineProps({ | 12 | const props = defineProps({ |
13 | flipType: { | 13 | flipType: { |
@@ -43,6 +43,10 @@ const props = defineProps({ | @@ -43,6 +43,10 @@ const props = defineProps({ | ||
43 | backColor: { | 43 | backColor: { |
44 | type: String, | 44 | type: String, |
45 | default: '#000000' | 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,19 +54,27 @@ const isFlipping = ref(false) | ||
50 | const frontTextFromData = ref(props.count || 0) | 54 | const frontTextFromData = ref(props.count || 0) |
51 | const backTextFromData = ref(props.count || 0) | 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 | backTextFromData.value = back | 71 | backTextFromData.value = back |
59 | frontTextFromData.value = front | 72 | frontTextFromData.value = front |
60 | - | ||
61 | // 设置翻转状态为true | 73 | // 设置翻转状态为true |
62 | isFlipping.value = true | 74 | isFlipping.value = true |
63 | 75 | ||
64 | // 翻牌结束的行为 | 76 | // 翻牌结束的行为 |
65 | - setTimeout(() => { | 77 | + timeoutID = setTimeout(() => { |
66 | isFlipping.value = false // 设置翻转状态为false | 78 | isFlipping.value = false // 设置翻转状态为false |
67 | frontTextFromData.value = back | 79 | frontTextFromData.value = back |
68 | }, props.duration) | 80 | }, props.duration) |
@@ -86,6 +98,7 @@ $radius: v-bind('`${props.radius}px`'); | @@ -86,6 +98,7 @@ $radius: v-bind('`${props.radius}px`'); | ||
86 | $width: v-bind('`${props.width}px`'); | 98 | $width: v-bind('`${props.width}px`'); |
87 | $height: v-bind('`${props.height}px`'); | 99 | $height: v-bind('`${props.height}px`'); |
88 | $perspective: v-bind('`${props.height * 2}px`'); | 100 | $perspective: v-bind('`${props.height * 2}px`'); |
101 | +$borderWidth: v-bind('`${props.borderWidth * 2}px`'); | ||
89 | $speed: v-bind('`${props.duration / 1000}s`'); | 102 | $speed: v-bind('`${props.duration / 1000}s`'); |
90 | $shadowColor: #000000; | 103 | $shadowColor: #000000; |
91 | $lineColor: #4a9ef8; | 104 | $lineColor: #4a9ef8; |
@@ -125,13 +138,12 @@ $lineColor: #4a9ef8; | @@ -125,13 +138,12 @@ $lineColor: #4a9ef8; | ||
125 | } | 138 | } |
126 | // #endregion | 139 | // #endregion |
127 | 140 | ||
128 | -.go-Flipper { | 141 | +.go-flipper { |
129 | display: inline-block; | 142 | display: inline-block; |
130 | position: relative; | 143 | position: relative; |
131 | width: $width; | 144 | width: $width; |
132 | height: $height; | 145 | height: $height; |
133 | line-height: $height; | 146 | line-height: $height; |
134 | - border: solid 1px $backColor; | ||
135 | border-radius: $radius; | 147 | border-radius: $radius; |
136 | background: $frontColor; | 148 | background: $frontColor; |
137 | font-size: $width; | 149 | font-size: $width; |
@@ -139,6 +151,17 @@ $lineColor: #4a9ef8; | @@ -139,6 +151,17 @@ $lineColor: #4a9ef8; | ||
139 | box-shadow: 0 0 6px rgba($color: $shadowColor, $alpha: 0.5); // 阴影部分 | 151 | box-shadow: 0 0 6px rgba($color: $shadowColor, $alpha: 0.5); // 阴影部分 |
140 | text-align: center; | 152 | text-align: center; |
141 | // font-family: 'Helvetica Neue'; | 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 | .digital:before, | 166 | .digital:before, |
144 | .digital:after { | 167 | .digital:after { |
@@ -191,6 +214,8 @@ $lineColor: #4a9ef8; | @@ -191,6 +214,8 @@ $lineColor: #4a9ef8; | ||
191 | } | 214 | } |
192 | &.down.go .back:after { | 215 | &.down.go .back:after { |
193 | animation: backFlipDown $speed ease-in-out both; | 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 | &.up .front:after { | 221 | &.up .front:after { |
@@ -213,6 +238,8 @@ $lineColor: #4a9ef8; | @@ -213,6 +238,8 @@ $lineColor: #4a9ef8; | ||
213 | } | 238 | } |
214 | &.up.go .back:before { | 239 | &.up.go .back:before { |
215 | animation: backFlipUp $speed ease-in-out both; | 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 | </style> | 245 | </style> |
@@ -12,6 +12,7 @@ export enum DragKeyEnum { | @@ -12,6 +12,7 @@ export enum DragKeyEnum { | ||
12 | // 不同页面保存操作 | 12 | // 不同页面保存操作 |
13 | export enum SavePageEnum { | 13 | export enum SavePageEnum { |
14 | CHART = 'SaveChart', | 14 | CHART = 'SaveChart', |
15 | + CHART_TO_PREVIEW = 'ChartToPreview', | ||
15 | JSON = 'SaveJSON', | 16 | JSON = 'SaveJSON', |
16 | CLOSE = 'close' | 17 | CLOSE = 'close' |
17 | } | 18 | } |
@@ -12,5 +12,7 @@ export enum StorageEnum { | @@ -12,5 +12,7 @@ export enum StorageEnum { | ||
12 | // 工作台布局配置 | 12 | // 工作台布局配置 |
13 | GO_CHART_LAYOUT_STORE = 'GO_CHART_LAYOUT', | 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,10 +80,11 @@ export const originUseChartDataFetch = ( | ||
80 | if (res) { | 80 | if (res) { |
81 | try { | 81 | try { |
82 | const filter = targetComponent.filter | 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 | if (updateCallback) { | 86 | if (updateCallback) { |
86 | - updateCallback(newFunctionHandle(res?.data, res, filter)) | 87 | + updateCallback(newFunctionHandle(data, res, filter)) |
87 | } | 88 | } |
88 | } catch (error) { | 89 | } catch (error) { |
89 | console.error(error) | 90 | console.error(error) |
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <router-view #default="{ Component, route }"> | 2 | <router-view #default="{ Component, route }"> |
3 | <transition name="fade" mode="out-in" appear> | 3 | <transition name="fade" mode="out-in" appear> |
4 | <component | 4 | <component |
5 | - v-if="route.noKeepAlive" | 5 | + v-if="route.meta.noKeepAlive" |
6 | :is="Component" | 6 | :is="Component" |
7 | :key="route.fullPath" | 7 | :key="route.fullPath" |
8 | ></component> | 8 | ></component> |
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 | <template> | 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 | :update-options="{ | 3 | :update-options="{ |
9 | replaceMerge: replaceMergeArr | 4 | replaceMerge: replaceMergeArr |
10 | - }" | ||
11 | - autoresize | ||
12 | - ></v-chart> | 5 | + }" autoresize></v-chart> |
13 | </template> | 6 | </template> |
14 | 7 | ||
15 | <script setup lang="ts"> | 8 | <script setup lang="ts"> |
@@ -27,6 +20,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | @@ -27,6 +20,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | ||
27 | import { isPreview } from '@/utils' | 20 | import { isPreview } from '@/utils' |
28 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' | 21 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' |
29 | import isObject from 'lodash/isObject' | 22 | import isObject from 'lodash/isObject' |
23 | +import cloneDeep from 'lodash/cloneDeep' | ||
30 | 24 | ||
31 | const props = defineProps({ | 25 | const props = defineProps({ |
32 | themeSetting: { | 26 | themeSetting: { |
@@ -61,11 +55,23 @@ watch( | @@ -61,11 +55,23 @@ watch( | ||
61 | if (!isObject(newData) || !('dimensions' in newData)) return | 55 | if (!isObject(newData) || !('dimensions' in newData)) return |
62 | if (Array.isArray(newData?.dimensions)) { | 56 | if (Array.isArray(newData?.dimensions)) { |
63 | const seriesArr = [] | 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 | replaceMergeArr.value = ['series'] | 74 | replaceMergeArr.value = ['series'] |
68 | - props.chartConfig.option.series = seriesArr | ||
69 | nextTick(() => { | 75 | nextTick(() => { |
70 | replaceMergeArr.value = [] | 76 | replaceMergeArr.value = [] |
71 | }) | 77 | }) |
@@ -26,6 +26,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | @@ -26,6 +26,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | ||
26 | import { isPreview } from '@/utils' | 26 | import { isPreview } from '@/utils' |
27 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' | 27 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' |
28 | import isObject from 'lodash/isObject' | 28 | import isObject from 'lodash/isObject' |
29 | +import cloneDeep from 'lodash/cloneDeep' | ||
29 | 30 | ||
30 | const props = defineProps({ | 31 | const props = defineProps({ |
31 | themeSetting: { | 32 | themeSetting: { |
@@ -61,7 +62,7 @@ watch( | @@ -61,7 +62,7 @@ watch( | ||
61 | if (Array.isArray(newData?.dimensions)) { | 62 | if (Array.isArray(newData?.dimensions)) { |
62 | const seriesArr = [] | 63 | const seriesArr = [] |
63 | for (let i = 0; i < newData.dimensions.length - 1; i++) { | 64 | for (let i = 0; i < newData.dimensions.length - 1; i++) { |
64 | - seriesArr.push(seriesItem) | 65 | + seriesArr.push(cloneDeep(seriesItem)) |
65 | } | 66 | } |
66 | replaceMergeArr.value = ['series'] | 67 | replaceMergeArr.value = ['series'] |
67 | props.chartConfig.option.series = seriesArr | 68 | props.chartConfig.option.series = seriesArr |
@@ -16,7 +16,8 @@ export enum ThemeEnum { | @@ -16,7 +16,8 @@ export enum ThemeEnum { | ||
16 | MACARON = 'macaron', | 16 | MACARON = 'macaron', |
17 | BLUE = 'blue', | 17 | BLUE = 'blue', |
18 | DARKBLUE = 'darkblue', | 18 | DARKBLUE = 'darkblue', |
19 | - WINE = 'wine' | 19 | + WINE = 'wine', |
20 | + WEIXIN = 'tileLayer' | ||
20 | } | 21 | } |
21 | 22 | ||
22 | export enum LangEnum { | 23 | export enum LangEnum { |
@@ -8,7 +8,7 @@ import AMapLoader from '@amap/amap-jsapi-loader' | @@ -8,7 +8,7 @@ import AMapLoader from '@amap/amap-jsapi-loader' | ||
8 | import { CreateComponentType } from '@/packages/index.d' | 8 | import { CreateComponentType } from '@/packages/index.d' |
9 | import { useChartDataFetch } from '@/hooks' | 9 | import { useChartDataFetch } from '@/hooks' |
10 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 10 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
11 | -import { MarkerEnum } from './config' | 11 | +import { MarkerEnum, ThemeEnum } from './config' |
12 | import { isArray } from '@/utils' | 12 | import { isArray } from '@/utils' |
13 | 13 | ||
14 | const props = defineProps({ | 14 | const props = defineProps({ |
@@ -51,7 +51,6 @@ const initMap = (newData: any) => { | @@ -51,7 +51,6 @@ const initMap = (newData: any) => { | ||
51 | resizeEnable: true, | 51 | resizeEnable: true, |
52 | zoom: amapZindex.value, // 地图显示的缩放级别 | 52 | zoom: amapZindex.value, // 地图显示的缩放级别 |
53 | center: [amapLon.value, amapLat.value], | 53 | center: [amapLon.value, amapLat.value], |
54 | - mapStyle: `amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`, //自定义地图的显示样式 | ||
55 | lang: lang.value, | 54 | lang: lang.value, |
56 | features: features.value, | 55 | features: features.value, |
57 | pitch: pitch.value, // 地图俯仰角度,有效范围 0 度- 83 度 | 56 | pitch: pitch.value, // 地图俯仰角度,有效范围 0 度- 83 度 |
@@ -60,6 +59,14 @@ const initMap = (newData: any) => { | @@ -60,6 +59,14 @@ const initMap = (newData: any) => { | ||
60 | willReadFrequently: true | 59 | willReadFrequently: true |
61 | }) | 60 | }) |
62 | dataHandle(props.chartConfig.option.dataset) | 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 | .catch(e => {}) | 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 | + |
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 | + } |
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> |
@@ -8,7 +8,6 @@ | @@ -8,7 +8,6 @@ | ||
8 | <SettingItemBox name="内容"> | 8 | <SettingItemBox name="内容"> |
9 | <SettingItem name="数值"> | 9 | <SettingItem name="数值"> |
10 | <n-input-number | 10 | <n-input-number |
11 | - :disabled="true" | ||
12 | v-model:value="item.data[0]" | 11 | v-model:value="item.data[0]" |
13 | :min="0" | 12 | :min="0" |
14 | :step="0.01" | 13 | :step="0.01" |
@@ -4,5 +4,8 @@ import { FunnelConfig } from './Funnel/index' | @@ -4,5 +4,8 @@ import { FunnelConfig } from './Funnel/index' | ||
4 | import { HeatmapConfig } from './Heatmap/index' | 4 | import { HeatmapConfig } from './Heatmap/index' |
5 | import { WaterPoloConfig } from './WaterPolo/index' | 5 | import { WaterPoloConfig } from './WaterPolo/index' |
6 | import { TreeMapConfig } from './TreeMap/index' | 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] |
@@ -18,7 +18,14 @@ export const PieTypeObject = { | @@ -18,7 +18,14 @@ export const PieTypeObject = { | ||
18 | [PieTypeEnum.ROSE]: 'rose' | 18 | [PieTypeEnum.ROSE]: 'rose' |
19 | } | 19 | } |
20 | 20 | ||
21 | +// 其它配置 | ||
22 | +const otherConfig = { | ||
23 | + // 轮播动画 | ||
24 | + isCarousel: false, | ||
25 | +} | ||
26 | + | ||
21 | const option = { | 27 | const option = { |
28 | + ...otherConfig, | ||
22 | type: 'ring', | 29 | type: 'ring', |
23 | tooltip: { | 30 | tooltip: { |
24 | show: true, | 31 | show: true, |
@@ -7,6 +7,17 @@ | @@ -7,6 +7,17 @@ | ||
7 | <n-select v-model:value="optionData.type" size="small" :options="fontWeightOptions" /> | 7 | <n-select v-model:value="optionData.type" size="small" :options="fontWeightOptions" /> |
8 | </SettingItem> | 8 | </SettingItem> |
9 | </SettingItemBox> | 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 | <SettingItemBox name="标签"> | 21 | <SettingItemBox name="标签"> |
11 | <SettingItem> | 22 | <SettingItem> |
12 | <n-space> | 23 | <n-space> |
1 | <template> | 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 | </template> | 4 | </template> |
4 | 5 | ||
5 | <script setup lang="ts"> | 6 | <script setup lang="ts"> |
6 | -import { computed, PropType, reactive, watch } from 'vue' | 7 | +import { computed, onMounted, PropType, reactive, watch } from 'vue' |
7 | import VChart from 'vue-echarts' | 8 | import VChart from 'vue-echarts' |
8 | import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | 9 | import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' |
9 | import { use } from 'echarts/core' | 10 | import { use } from 'echarts/core' |
@@ -15,6 +16,7 @@ import { useChartDataFetch } from '@/hooks' | @@ -15,6 +16,7 @@ import { useChartDataFetch } from '@/hooks' | ||
15 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 16 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
16 | import { isPreview } from '@/utils' | 17 | import { isPreview } from '@/utils' |
17 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' | 18 | import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components' |
19 | +import dataJson from './data.json' | ||
18 | 20 | ||
19 | const props = defineProps({ | 21 | const props = defineProps({ |
20 | themeSetting: { | 22 | themeSetting: { |
@@ -30,8 +32,10 @@ const props = defineProps({ | @@ -30,8 +32,10 @@ const props = defineProps({ | ||
30 | required: true | 32 | required: true |
31 | } | 33 | } |
32 | }) | 34 | }) |
33 | - | ||
34 | const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | 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 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent]) | 40 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent]) |
37 | 41 | ||
@@ -39,6 +43,54 @@ const option = computed(() => { | @@ -39,6 +43,54 @@ const option = computed(() => { | ||
39 | return mergeTheme(props.chartConfig.option, props.themeSetting, includes) | 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 | watch( | 94 | watch( |
43 | () => props.chartConfig.option.type, | 95 | () => props.chartConfig.option.type, |
44 | newData => { | 96 | newData => { |
@@ -60,5 +112,27 @@ watch( | @@ -60,5 +112,27 @@ watch( | ||
60 | { deep: false, immediate: true } | 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 | const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore) | 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 | </script> | 138 | </script> |
@@ -16,6 +16,7 @@ export interface OptionType { | @@ -16,6 +16,7 @@ export interface OptionType { | ||
16 | flipperGap: number | 16 | flipperGap: number |
17 | flipperType: FlipType | 17 | flipperType: FlipType |
18 | flipperSpeed: number | 18 | flipperSpeed: number |
19 | + flipperBorderWidth: number | ||
19 | } | 20 | } |
20 | 21 | ||
21 | export const option: OptionType = { | 22 | export const option: OptionType = { |
@@ -28,7 +29,8 @@ export const option: OptionType = { | @@ -28,7 +29,8 @@ export const option: OptionType = { | ||
28 | flipperRadius: 5, | 29 | flipperRadius: 5, |
29 | flipperGap: 10, | 30 | flipperGap: 10, |
30 | flipperType: 'down', | 31 | flipperType: 'down', |
31 | - flipperSpeed: 450 | 32 | + flipperSpeed: 450, |
33 | + flipperBorderWidth: 0, | ||
32 | } | 34 | } |
33 | 35 | ||
34 | export default class Config extends PublicConfigClass implements CreateComponentType { | 36 | export default class Config extends PublicConfigClass implements CreateComponentType { |
@@ -16,12 +16,16 @@ | @@ -16,12 +16,16 @@ | ||
16 | <setting-item name="高度"> | 16 | <setting-item name="高度"> |
17 | <n-input-number v-model:value="optionData.flipperHeight" size="small" :min="1"></n-input-number> | 17 | <n-input-number v-model:value="optionData.flipperHeight" size="small" :min="1"></n-input-number> |
18 | </setting-item> | 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 | </setting-item> | 21 | </setting-item> |
22 | <setting-item name="圆角"> | 22 | <setting-item name="圆角"> |
23 | <n-input-number v-model:value="optionData.flipperRadius" size="small" :min="0"></n-input-number> | 23 | <n-input-number v-model:value="optionData.flipperRadius" size="small" :min="0"></n-input-number> |
24 | </setting-item> | 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 | <setting-item name="背景色"> | 29 | <setting-item name="背景色"> |
26 | <n-color-picker | 30 | <n-color-picker |
27 | size="small" | 31 | size="small" |
@@ -9,6 +9,7 @@ | @@ -9,6 +9,7 @@ | ||
9 | :radius="flipperRadius" | 9 | :radius="flipperRadius" |
10 | :flip-type="flipperType" | 10 | :flip-type="flipperType" |
11 | :duration="flipperSpeed" | 11 | :duration="flipperSpeed" |
12 | + :border-width="flipperBorderWidth" | ||
12 | v-for="(item, index) in flipperData" | 13 | v-for="(item, index) in flipperData" |
13 | :key="index" | 14 | :key="index" |
14 | class="go-d-block" | 15 | class="go-d-block" |
@@ -42,7 +43,8 @@ const { | @@ -42,7 +43,8 @@ const { | ||
42 | flipperRadius, | 43 | flipperRadius, |
43 | flipperGap, | 44 | flipperGap, |
44 | flipperType, | 45 | flipperType, |
45 | - flipperSpeed | 46 | + flipperSpeed, |
47 | + flipperBorderWidth | ||
46 | } = toRefs(props.chartConfig.option as OptionType) | 48 | } = toRefs(props.chartConfig.option as OptionType) |
47 | 49 | ||
48 | const flipperData = ref<string[] | number[]>([]) | 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,5 +3,7 @@ import { TimeCommonConfig } from './TimeCommon/index' | ||
3 | import { ClockConfig } from './Clock/index' | 3 | import { ClockConfig } from './Clock/index' |
4 | import { CountDownConfig } from './CountDown/index' | 4 | import { CountDownConfig } from './CountDown/index' |
5 | import { FlipperNumberConfig } from './FlipperNumber' | 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,11 +15,11 @@ export interface IResources { | ||
15 | const fileSuffix = ['earth', 'gradient', 'redCircle', 'label', 'aperture', 'glow', 'light_column', 'aircraft'] | 15 | const fileSuffix = ['earth', 'gradient', 'redCircle', 'label', 'aperture', 'glow', 'light_column', 'aircraft'] |
16 | const textures: ITextures[] = [] | 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 | const n = item.split('/').pop() | 21 | const n = item.split('/').pop() |
22 | - if(n) { | 22 | + if (n) { |
23 | textures.push({ | 23 | textures.push({ |
24 | name: n.split('.')[0], | 24 | name: n.split('.')[0], |
25 | url: modules[item].default | 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
src/packages/components/Icons/index.ts
0 → 100644
@@ -12,7 +12,9 @@ export const option = { | @@ -12,7 +12,9 @@ export const option = { | ||
12 | [COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATE, | 12 | [COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATE, |
13 | // 下拉展示 | 13 | // 下拉展示 |
14 | isPanel: 0, | 14 | isPanel: 0, |
15 | - dataset: dayjs().valueOf() | 15 | + dataset: dayjs().valueOf(), |
16 | + differValue: 0 | ||
17 | + | ||
16 | } | 18 | } |
17 | 19 | ||
18 | export default class Config extends PublicConfigClass implements CreateComponentType { | 20 | export default class Config extends PublicConfigClass implements CreateComponentType { |
1 | <template> | 1 | <template> |
2 | <collapse-item name="展示方式" :expanded="true"> | 2 | <collapse-item name="展示方式" :expanded="true"> |
3 | <setting-item-box name="选择方式"> | 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 | </setting-item-box> | 5 | </setting-item-box> |
10 | </collapse-item> | 6 | </collapse-item> |
11 | 7 | ||
12 | <collapse-item name="时间配置" :expanded="true"> | 8 | <collapse-item name="时间配置" :expanded="true"> |
13 | <setting-item-box name="基础"> | 9 | <setting-item-box name="基础"> |
14 | <setting-item name="类型"> | 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 | </setting-item> | 12 | </setting-item> |
21 | </setting-item-box> | 13 | </setting-item-box> |
22 | 14 | ||
23 | <setting-item-box name="默认值" :alone="true"> | 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 | </setting-item-box> | 34 | </setting-item-box> |
30 | </collapse-item> | 35 | </collapse-item> |
31 | </template> | 36 | </template> |
@@ -39,9 +39,9 @@ const onChange = (v: number | number[]) => { | @@ -39,9 +39,9 @@ const onChange = (v: number | number[]) => { | ||
39 | props.chartConfig, | 39 | props.chartConfig, |
40 | useChartEditStore, | 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 | InteractEventOn.CHANGE | 46 | InteractEventOn.CHANGE |
47 | ) | 47 | ) |
@@ -50,7 +50,7 @@ const onChange = (v: number | number[]) => { | @@ -50,7 +50,7 @@ const onChange = (v: number | number[]) => { | ||
50 | useChartInteract( | 50 | useChartInteract( |
51 | props.chartConfig, | 51 | props.chartConfig, |
52 | useChartEditStore, | 52 | useChartEditStore, |
53 | - { [ComponentInteractParamsEnum.DATE]: v }, | 53 | + { [ComponentInteractParamsEnum.DATE]: v || dayjs().valueOf() }, |
54 | InteractEventOn.CHANGE | 54 | InteractEventOn.CHANGE |
55 | ) | 55 | ) |
56 | } | 56 | } |
@@ -68,6 +68,25 @@ watch( | @@ -68,6 +68,25 @@ watch( | ||
68 | immediate: true | 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 | </script> | 90 | </script> |
72 | 91 | ||
73 | <style lang="scss" scoped> | 92 | <style lang="scss" scoped> |
@@ -3,11 +3,11 @@ import { CreateComponentType } from '@/packages/index.d' | @@ -3,11 +3,11 @@ import { CreateComponentType } from '@/packages/index.d' | ||
3 | import { CarouselConfig } from './index' | 3 | import { CarouselConfig } from './index' |
4 | import cloneDeep from 'lodash/cloneDeep' | 4 | import cloneDeep from 'lodash/cloneDeep' |
5 | import logo from '@/assets/logo.png' | 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 | const dataset = [logo] | 9 | const dataset = [logo] |
10 | -for (var item in modules) { | 10 | +for (const item in modules) { |
11 | dataset.push(modules[item].default) | 11 | dataset.push(modules[item].default) |
12 | } | 12 | } |
13 | 13 |
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | <collapse-item name="信息" :expanded="true"> | 2 | <collapse-item name="信息" :expanded="true"> |
3 | <setting-item-box name="文字" :alone="true"> | 3 | <setting-item-box name="文字" :alone="true"> |
4 | <setting-item> | 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 | </setting-item> | 6 | </setting-item> |
7 | </setting-item-box> | 7 | </setting-item-box> |
8 | <setting-item-box name="链接" :alone="true"> | 8 | <setting-item-box name="链接" :alone="true"> |
@@ -30,11 +30,7 @@ | @@ -30,11 +30,7 @@ | ||
30 | <n-input-number v-model:value="optionData.fontSize" size="small" placeholder="字体大小"></n-input-number> | 30 | <n-input-number v-model:value="optionData.fontSize" size="small" placeholder="字体大小"></n-input-number> |
31 | </setting-item> | 31 | </setting-item> |
32 | <setting-item name="字体粗细"> | 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 | </setting-item> | 34 | </setting-item> |
39 | <setting-item name="X轴内边距"> | 35 | <setting-item name="X轴内边距"> |
40 | <n-input-number v-model:value="optionData.paddingX" size="small" placeholder="输入内边距"></n-input-number> | 36 | <n-input-number v-model:value="optionData.paddingX" size="small" placeholder="输入内边距"></n-input-number> |
@@ -87,9 +83,7 @@ | @@ -87,9 +83,7 @@ | ||
87 | 83 | ||
88 | <script setup lang="ts"> | 84 | <script setup lang="ts"> |
89 | import { PropType } from 'vue' | 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 | import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | 87 | import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' |
94 | const props = defineProps({ | 88 | const props = defineProps({ |
95 | optionData: { | 89 | optionData: { |
@@ -117,13 +111,13 @@ const verticalOptions = [ | @@ -117,13 +111,13 @@ const verticalOptions = [ | ||
117 | const fontWeightOptions = [ | 111 | const fontWeightOptions = [ |
118 | { | 112 | { |
119 | label: FontWeightEnum.NORMAL, | 113 | label: FontWeightEnum.NORMAL, |
120 | - value: FontWeightObject[FontWeightEnum.NORMAL], | 114 | + value: FontWeightObject[FontWeightEnum.NORMAL] |
121 | }, | 115 | }, |
122 | { | 116 | { |
123 | label: FontWeightEnum.BOLD, | 117 | label: FontWeightEnum.BOLD, |
124 | - value: FontWeightObject[FontWeightEnum.BOLD], | ||
125 | - }, | ||
126 | -]; | 118 | + value: FontWeightObject[FontWeightEnum.BOLD] |
119 | + } | ||
120 | +] | ||
127 | const handleLinkClick = () => { | 121 | const handleLinkClick = () => { |
128 | window.open(props.optionData.linkHead + props.optionData.link) | 122 | window.open(props.optionData.linkHead + props.optionData.link) |
129 | } | 123 | } |
1 | <template> | 1 | <template> |
2 | <div class="go-text-box"> | 2 | <div class="go-text-box"> |
3 | <div class="content"> | 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 | </div> | 6 | </div> |
7 | </div> | 7 | </div> |
8 | </template> | 8 | </template> |
@@ -82,7 +82,7 @@ const click = () => { | @@ -82,7 +82,7 @@ const click = () => { | ||
82 | border-width: v-bind('borderWidth + "px"'); | 82 | border-width: v-bind('borderWidth + "px"'); |
83 | border-radius: v-bind('borderRadius + "px"'); | 83 | border-radius: v-bind('borderRadius + "px"'); |
84 | border-color: v-bind('borderColor'); | 84 | border-color: v-bind('borderColor'); |
85 | - | 85 | + |
86 | background-color: v-bind('backgroundColor'); | 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,12 +3,8 @@ | ||
3 | <setting-item-box name="背景上传" :alone="true"> | 3 | <setting-item-box name="背景上传" :alone="true"> |
4 | <setting-item> | 4 | <setting-item> |
5 | <n-card class="upload-box"> | 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 | <n-upload-dragger> | 8 | <n-upload-dragger> |
13 | <img v-if="optionData.backgroundImage" class="upload-show" :src="optionData.backgroundImage" alt="背景" /> | 9 | <img v-if="optionData.backgroundImage" class="upload-show" :src="optionData.backgroundImage" alt="背景" /> |
14 | <div class="upload-img" v-show="!optionData.backgroundImage"> | 10 | <div class="upload-img" v-show="!optionData.backgroundImage"> |
@@ -32,14 +28,8 @@ | @@ -32,14 +28,8 @@ | ||
32 | </setting-item-box> | 28 | </setting-item-box> |
33 | <setting-item-box name="背景选择" :alone="true"> | 29 | <setting-item-box name="背景选择" :alone="true"> |
34 | <setting-item> | 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 | </setting-item> | 33 | </setting-item> |
44 | </setting-item-box> | 34 | </setting-item-box> |
45 | <setting-item-box name="文字" :alone="true"> | 35 | <setting-item-box name="文字" :alone="true"> |
@@ -83,11 +73,7 @@ | @@ -83,11 +73,7 @@ | ||
83 | </setting-item-box> | 73 | </setting-item-box> |
84 | <setting-item-box name="文字"> | 74 | <setting-item-box name="文字"> |
85 | <setting-item name="字体大小"> | 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 | </setting-item> | 77 | </setting-item> |
92 | <setting-item name="字体位置x轴"> | 78 | <setting-item name="字体位置x轴"> |
93 | <n-input-number v-model:value="optionData.xT" size="small" placeholder="字体位置"></n-input-number> | 79 | <n-input-number v-model:value="optionData.xT" size="small" placeholder="字体位置"></n-input-number> |
@@ -133,7 +119,7 @@ const selectValue = ref('headerBg08') | @@ -133,7 +119,7 @@ const selectValue = ref('headerBg08') | ||
133 | 119 | ||
134 | // TODO待封装 成传文件夹名字获取下面所有图片 | 120 | // TODO待封装 成传文件夹名字获取下面所有图片 |
135 | const getFetchImages = () => { | 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 | selectBgOptions.value = Object.keys(imagesModules).map(item => ({ | 123 | selectBgOptions.value = Object.keys(imagesModules).map(item => ({ |
138 | label: imagesModules[item]?.default.split('/').at(-1), | 124 | label: imagesModules[item]?.default.split('/').at(-1), |
139 | value: imagesModules[item]?.default | 125 | value: imagesModules[item]?.default |
@@ -199,31 +185,38 @@ const clearImage = () => { | @@ -199,31 +185,38 @@ const clearImage = () => { | ||
199 | <style lang="scss" scoped> | 185 | <style lang="scss" scoped> |
200 | // $uploadWidth: 215px; | 186 | // $uploadWidth: 215px; |
201 | $uploadHeight: 193px; | 187 | $uploadHeight: 193px; |
188 | + | ||
202 | .upload-box { | 189 | .upload-box { |
203 | cursor: pointer; | 190 | cursor: pointer; |
204 | margin-bottom: 20px; | 191 | margin-bottom: 20px; |
192 | + | ||
205 | @include deep() { | 193 | @include deep() { |
206 | .n-card__content { | 194 | .n-card__content { |
207 | padding: 0; | 195 | padding: 0; |
208 | overflow: hidden; | 196 | overflow: hidden; |
209 | } | 197 | } |
198 | + | ||
210 | .n-upload-dragger { | 199 | .n-upload-dragger { |
211 | padding: 5px; | 200 | padding: 5px; |
212 | // width: $uploadWidth; | 201 | // width: $uploadWidth; |
213 | } | 202 | } |
214 | } | 203 | } |
204 | + | ||
215 | .upload-show { | 205 | .upload-show { |
216 | width: -webkit-fill-available; | 206 | width: -webkit-fill-available; |
217 | height: $uploadHeight; | 207 | height: $uploadHeight; |
218 | border-radius: 5px; | 208 | border-radius: 5px; |
219 | } | 209 | } |
210 | + | ||
220 | .upload-img { | 211 | .upload-img { |
221 | display: flex; | 212 | display: flex; |
222 | flex-direction: column; | 213 | flex-direction: column; |
223 | align-items: center; | 214 | align-items: center; |
215 | + | ||
224 | img { | 216 | img { |
225 | height: 150px; | 217 | height: 150px; |
226 | } | 218 | } |
219 | + | ||
227 | .upload-desc { | 220 | .upload-desc { |
228 | padding: 10px 0; | 221 | padding: 10px 0; |
229 | } | 222 | } |
@@ -3,16 +3,24 @@ import { ConfigType } from "../index.d" | @@ -3,16 +3,24 @@ import { ConfigType } from "../index.d" | ||
3 | import { matchExternalPrefixReg } from "./useWidgetKey" | 3 | import { matchExternalPrefixReg } from "./useWidgetKey" |
4 | 4 | ||
5 | const getAllConfigFile = async () => { | 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 | const getChartConfigFile = async (path: string) => { | 9 | const getChartConfigFile = async (path: string) => { |
10 | const fileList = await getAllConfigFile() | 10 | const fileList = await getAllConfigFile() |
11 | return fileList[path]() as any | 11 | return fileList[path]() as any |
12 | -} | 12 | +} |
13 | 13 | ||
14 | export const createComponent = async (configType: ConfigType) => { | 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 | const hasExternalPrefix = matchExternalPrefixReg.test(chartKey) | 24 | const hasExternalPrefix = matchExternalPrefixReg.test(chartKey) |
17 | const filePath = `../components${hasExternalPrefix ? '/external' : ''}/${packageName}/${category}/${key}/config.ts` | 25 | const filePath = `../components${hasExternalPrefix ? '/external' : ''}/${packageName}/${category}/${key}/config.ts` |
18 | const chart = await getChartConfigFile(filePath) | 26 | const chart = await getChartConfigFile(filePath) |
@@ -15,15 +15,34 @@ export enum ChartFrameEnum { | @@ -15,15 +15,34 @@ export enum ChartFrameEnum { | ||
15 | 15 | ||
16 | // 组件配置 | 16 | // 组件配置 |
17 | export type ConfigType = { | 17 | export type ConfigType = { |
18 | + // 组件 key | ||
18 | key: string | 19 | key: string |
20 | + // 画布组件 key | ||
19 | chartKey: string | 21 | chartKey: string |
22 | + // 右侧设置面板组件 key | ||
20 | conKey: string | 23 | conKey: string |
24 | + // 标题 | ||
21 | title: string | 25 | title: string |
26 | + // 分类 | ||
22 | category: string | 27 | category: string |
28 | + // 分类名称 | ||
23 | categoryName: string | 29 | categoryName: string |
30 | + // 所属包 | ||
24 | package: string | 31 | package: string |
32 | + // 归类 | ||
25 | chartFrame?: ChartFrameEnum | 33 | chartFrame?: ChartFrameEnum |
34 | + // 预览图 | ||
26 | image: string | 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,7 +139,7 @@ export interface PublicConfigType { | ||
120 | } | 139 | } |
121 | filter?: string | 140 | filter?: string |
122 | status: StatusType | 141 | status: StatusType |
123 | - interactActions?: InteractActionsType[], | 142 | + interactActions?: InteractActionsType[] |
124 | events: { | 143 | events: { |
125 | baseEvent: { | 144 | baseEvent: { |
126 | [K in BaseEvent]?: string | 145 | [K in BaseEvent]?: string |
@@ -139,7 +158,8 @@ export interface PublicConfigType { | @@ -139,7 +158,8 @@ export interface PublicConfigType { | ||
139 | export interface CreateComponentType extends PublicConfigType, requestConfig { | 158 | export interface CreateComponentType extends PublicConfigType, requestConfig { |
140 | key: string | 159 | key: string |
141 | chartConfig: ConfigType | 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,6 +175,8 @@ export enum PackagesCategoryEnum { | ||
155 | CHARTS = 'Charts', | 175 | CHARTS = 'Charts', |
156 | TABLES = 'Tables', | 176 | TABLES = 'Tables', |
157 | INFORMATIONS = 'Informations', | 177 | INFORMATIONS = 'Informations', |
178 | + PHOTOS = 'Photos', | ||
179 | + ICONS = 'Icons', | ||
158 | DECORATES = 'Decorates' | 180 | DECORATES = 'Decorates' |
159 | } | 181 | } |
160 | 182 | ||
@@ -163,6 +185,8 @@ export enum PackagesCategoryName { | @@ -163,6 +185,8 @@ export enum PackagesCategoryName { | ||
163 | CHARTS = '图表', | 185 | CHARTS = '图表', |
164 | TABLES = '列表', | 186 | TABLES = '列表', |
165 | INFORMATIONS = '信息', | 187 | INFORMATIONS = '信息', |
188 | + PHOTOS = '图片', | ||
189 | + ICONS = '图标', | ||
166 | DECORATES = '小组件' | 190 | DECORATES = '小组件' |
167 | } | 191 | } |
168 | 192 | ||
@@ -177,5 +201,7 @@ export type PackagesType = { | @@ -177,5 +201,7 @@ export type PackagesType = { | ||
177 | [PackagesCategoryEnum.CHARTS]: ConfigType[] | 201 | [PackagesCategoryEnum.CHARTS]: ConfigType[] |
178 | [PackagesCategoryEnum.INFORMATIONS]: ConfigType[] | 202 | [PackagesCategoryEnum.INFORMATIONS]: ConfigType[] |
179 | [PackagesCategoryEnum.TABLES]: ConfigType[] | 203 | [PackagesCategoryEnum.TABLES]: ConfigType[] |
204 | + [PackagesCategoryEnum.PHOTOS]: ConfigType[] | ||
205 | + [PackagesCategoryEnum.ICONS]: ConfigType[] | ||
180 | [PackagesCategoryEnum.DECORATES]: ConfigType[] | 206 | [PackagesCategoryEnum.DECORATES]: ConfigType[] |
181 | } | 207 | } |
@@ -2,19 +2,31 @@ import { ChartList } from '@/packages/components/Charts/index' | @@ -2,19 +2,31 @@ import { ChartList } from '@/packages/components/Charts/index' | ||
2 | import { DecorateList } from '@/packages/components/Decorates/index' | 2 | import { DecorateList } from '@/packages/components/Decorates/index' |
3 | import { InformationList } from '@/packages/components/Informations/index' | 3 | import { InformationList } from '@/packages/components/Informations/index' |
4 | import { TableList } from '@/packages/components/Tables/index' | 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 | import { PackagesCategoryEnum, PackagesType, ConfigType, FetchComFlagType } from '@/packages/index.d' | 8 | import { PackagesCategoryEnum, PackagesType, ConfigType, FetchComFlagType } from '@/packages/index.d' |
6 | import { useInjectLib } from './components/external/utils/useInjectLib' | 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 | export const packagesList: PackagesType = { | 23 | export const packagesList: PackagesType = { |
14 | [PackagesCategoryEnum.CHARTS]: ChartList, | 24 | [PackagesCategoryEnum.CHARTS]: ChartList, |
15 | [PackagesCategoryEnum.INFORMATIONS]: InformationList, | 25 | [PackagesCategoryEnum.INFORMATIONS]: InformationList, |
16 | [PackagesCategoryEnum.TABLES]: TableList, | 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,7 +34,13 @@ export const packagesList: PackagesType = { | ||
22 | * @param targetData | 34 | * @param targetData |
23 | */ | 35 | */ |
24 | export const createComponent = async (targetData: ConfigType) => { | 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 | const chart = await import(`./components/${targetData.package}/${category}/${key}/config.ts`) | 44 | const chart = await import(`./components/${targetData.package}/${category}/${key}/config.ts`) |
27 | return new chart.default() | 45 | return new chart.default() |
28 | } | 46 | } |
@@ -66,6 +84,8 @@ export const fetchConfigComponent = (dropData: ConfigType) => { | @@ -66,6 +84,8 @@ export const fetchConfigComponent = (dropData: ConfigType) => { | ||
66 | */ | 84 | */ |
67 | export const fetchImages = async (targetData?: ConfigType) => { | 85 | export const fetchImages = async (targetData?: ConfigType) => { |
68 | if (!targetData) return '' | 86 | if (!targetData) return '' |
87 | + // 正则判断图片是否为 url,是则直接返回该 url | ||
88 | + if (/^(http|https):\/\/([\w.]+\/?)\S*/.test(targetData.image)) return targetData.image | ||
69 | // 新数据动态处理 | 89 | // 新数据动态处理 |
70 | const { image, package: targetDataPackage } = targetData | 90 | const { image, package: targetDataPackage } = targetData |
71 | // 兼容旧数据 | 91 | // 兼容旧数据 |
@@ -61,13 +61,14 @@ import { | @@ -61,13 +61,14 @@ import { | ||
61 | Pulse as PulseIcon, | 61 | Pulse as PulseIcon, |
62 | Folder as FolderIcon, | 62 | Folder as FolderIcon, |
63 | FolderOpen as FolderOpenIcon, | 63 | FolderOpen as FolderOpenIcon, |
64 | - Image as ImageIcon, | 64 | + ImageOutline as ImageIcon, |
65 | Images as ImagesIcon, | 65 | Images as ImagesIcon, |
66 | List as ListIcon, | 66 | List as ListIcon, |
67 | EyeOutline as EyeOutlineIcon, | 67 | EyeOutline as EyeOutlineIcon, |
68 | EyeOffOutline as EyeOffOutlineIcon, | 68 | EyeOffOutline as EyeOffOutlineIcon, |
69 | Albums as AlbumsIcon, | 69 | Albums as AlbumsIcon, |
70 | - Analytics as AnalyticsIcon | 70 | + Analytics as AnalyticsIcon, |
71 | + AirplaneOutline as AirPlaneOutlineIcon | ||
71 | } from '@vicons/ionicons5' | 72 | } from '@vicons/ionicons5' |
72 | 73 | ||
73 | import { | 74 | import { |
@@ -238,10 +239,12 @@ const ionicons5 = { | @@ -238,10 +239,12 @@ const ionicons5 = { | ||
238 | // 眼睛 | 239 | // 眼睛 |
239 | EyeOutlineIcon, | 240 | EyeOutlineIcon, |
240 | EyeOffOutlineIcon, | 241 | EyeOffOutlineIcon, |
241 | - // 图表列表 | 242 | + // 图表列表 |
242 | AlbumsIcon, | 243 | AlbumsIcon, |
243 | // 分析 | 244 | // 分析 |
244 | - AnalyticsIcon | 245 | + AnalyticsIcon, |
246 | + // 飞机 | ||
247 | + AirPlaneOutlineIcon | ||
245 | } | 248 | } |
246 | 249 | ||
247 | const carbon = { | 250 | const carbon = { |
@@ -86,8 +86,18 @@ | @@ -86,8 +86,18 @@ | ||
86 | }, | 86 | }, |
87 | "legend": { | 87 | "legend": { |
88 | "show": true, | 88 | "show": true, |
89 | - "top": "5%", | 89 | + "type": "scroll", |
90 | + "x": "center", | ||
91 | + "y": "top", | ||
92 | + "icon": "circle", | ||
93 | + "orient": "horizontal", | ||
90 | "textStyle": { | 94 | "textStyle": { |
95 | + "color": "#B9B8CE", | ||
96 | + "fontSize": 18 | ||
97 | + }, | ||
98 | + "itemHeight": 15, | ||
99 | + "itemWidth": 15, | ||
100 | + "pageTextStyle": { | ||
91 | "color": "#B9B8CE" | 101 | "color": "#B9B8CE" |
92 | } | 102 | } |
93 | }, | 103 | }, |
@@ -2212,9 +2212,9 @@ | @@ -2212,9 +2212,9 @@ | ||
2212 | "pinyin": "tengluozi" | 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 | "name": "槿紫", | 2218 | "name": "槿紫", |
2219 | "pinyin": "jinzi" | 2219 | "pinyin": "jinzi" |
2220 | }, | 2220 | }, |
@@ -9,12 +9,12 @@ export const lang = LangEnum.ZH | @@ -9,12 +9,12 @@ export const lang = LangEnum.ZH | ||
9 | export const watermarkText = "GoView 低代码平台" | 9 | export const watermarkText = "GoView 低代码平台" |
10 | 10 | ||
11 | // 分组名称 | 11 | // 分组名称 |
12 | -export const groupTitle = '分组' | 12 | +export const groupTitle = "分组" |
13 | 13 | ||
14 | // 主题配置 | 14 | // 主题配置 |
15 | export const theme = { | 15 | export const theme = { |
16 | // 默认是否开启深色主题 | 16 | // 默认是否开启深色主题 |
17 | - darkTheme: false, | 17 | + darkTheme: true, |
18 | //默认主题色 | 18 | //默认主题色 |
19 | appTheme: '#51d6a9', | 19 | appTheme: '#51d6a9', |
20 | appThemeDetail: null, | 20 | appThemeDetail: null, |
@@ -191,7 +191,7 @@ export const useChartEditStore = defineStore({ | @@ -191,7 +191,7 @@ export const useChartEditStore = defineStore({ | ||
191 | this.targetChart.hoverId = hoverId | 191 | this.targetChart.hoverId = hoverId |
192 | }, | 192 | }, |
193 | // * 设置目标数据 select | 193 | // * 设置目标数据 select |
194 | - setTargetSelectChart(selectId?: string | string[], push = false) { | 194 | + setTargetSelectChart(selectId?: string | string[], push: boolean = false) { |
195 | // 重复选中 | 195 | // 重复选中 |
196 | if (this.targetChart.selectId.find((e: string) => e === selectId)) return | 196 | if (this.targetChart.selectId.find((e: string) => e === selectId)) return |
197 | 197 | ||
@@ -512,7 +512,7 @@ export const useChartEditStore = defineStore({ | @@ -512,7 +512,7 @@ export const useChartEditStore = defineStore({ | ||
512 | item.id = getUUID() | 512 | item.id = getUUID() |
513 | }) | 513 | }) |
514 | } | 514 | } |
515 | - | 515 | + |
516 | return e | 516 | return e |
517 | } | 517 | } |
518 | const isCut = recordCharts.type === HistoryActionTypeEnum.CUT | 518 | const isCut = recordCharts.type === HistoryActionTypeEnum.CUT |
@@ -55,7 +55,11 @@ export const useChartLayoutStore = defineStore({ | @@ -55,7 +55,11 @@ export const useChartLayoutStore = defineStore({ | ||
55 | } | 55 | } |
56 | }, | 56 | }, |
57 | actions: { | 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 | this.$patch(state => { | 63 | this.$patch(state => { |
60 | state[key] = value | 64 | state[key] = value |
61 | }) | 65 | }) |
@@ -64,9 +68,11 @@ export const useChartLayoutStore = defineStore({ | @@ -64,9 +68,11 @@ export const useChartLayoutStore = defineStore({ | ||
64 | // 这里需要标记重置画布位置 | 68 | // 这里需要标记重置画布位置 |
65 | this.rePositionCanvas = true; | 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 | setItemUnHandle<T extends keyof ChartLayoutType, K extends ChartLayoutType[T]>(key: T, value: K): void { | 77 | setItemUnHandle<T extends keyof ChartLayoutType, K extends ChartLayoutType[T]>(key: T, value: K): void { |
72 | this.$patch(state => { | 78 | this.$patch(state => { |
@@ -4,5 +4,6 @@ export { ConfigType } | @@ -4,5 +4,6 @@ export { ConfigType } | ||
4 | 4 | ||
5 | export { PackagesType } | 5 | export { PackagesType } |
6 | export interface PackagesStoreType { | 6 | export interface PackagesStoreType { |
7 | - packagesList: PackagesType | 7 | + packagesList: PackagesType, |
8 | + newPhoto?: ConfigType | ||
8 | } | 9 | } |
1 | import { defineStore } from 'pinia' | 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 | export const usePackagesStore = defineStore({ | 8 | export const usePackagesStore = defineStore({ |
7 | id: 'usePackagesStore', | 9 | id: 'usePackagesStore', |
8 | state: (): PackagesStoreType => ({ | 10 | state: (): PackagesStoreType => ({ |
9 | - packagesList: Object.freeze(packagesList) | 11 | + packagesList: Object.freeze(packagesList), |
12 | + newPhoto: undefined | ||
10 | }), | 13 | }), |
11 | getters: { | 14 | getters: { |
12 | getPackagesList(): PackagesType { | 15 | getPackagesList(): PackagesType { |
13 | return this.packagesList | 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,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 | * * JSON反序列化,支持函数和 undefined | 326 | * * JSON反序列化,支持函数和 undefined |
322 | * @param data | 327 | * @param data |
@@ -9,11 +9,12 @@ | @@ -9,11 +9,12 @@ | ||
9 | <div | 9 | <div |
10 | class="item-box" | 10 | class="item-box" |
11 | v-for="(item, index) in menuOptions" | 11 | v-for="(item, index) in menuOptions" |
12 | - :key="index" | 12 | + :key="item.title" |
13 | draggable | 13 | draggable |
14 | - @dragstart="dragStartHandle($event, item)" | ||
15 | - @dragend="dragendHandle" | 14 | + @dragstart="!item.disabled && dragStartHandle($event, item)" |
15 | + @dragend="!item.disabled && dragendHandle" | ||
16 | @dblclick="dblclickHandle(item)" | 16 | @dblclick="dblclickHandle(item)" |
17 | + @click="clickHandle(item)" | ||
17 | > | 18 | > |
18 | <div class="list-header"> | 19 | <div class="list-header"> |
19 | <mac-os-control-btn class="list-header-control-btn" :mini="true" :disabled="true"></mac-os-control-btn> | 20 | <mac-os-control-btn class="list-header-control-btn" :mini="true" :disabled="true"></mac-os-control-btn> |
@@ -21,14 +22,28 @@ | @@ -21,14 +22,28 @@ | ||
21 | <n-ellipsis>{{ item.title }}</n-ellipsis> | 22 | <n-ellipsis>{{ item.title }}</n-ellipsis> |
22 | </n-text> | 23 | </n-text> |
23 | </div> | 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 | </div> | 28 | </div> |
27 | <div class="list-bottom"> | 29 | <div class="list-bottom"> |
28 | <n-text class="list-bottom-text" depth="3"> | 30 | <n-text class="list-bottom-text" depth="3"> |
29 | <n-ellipsis style="max-width: 90%">{{ item.title }}</n-ellipsis> | 31 | <n-ellipsis style="max-width: 90%">{{ item.title }}</n-ellipsis> |
30 | </n-text> | 32 | </n-text> |
31 | </div> | 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 | </div> | 47 | </div> |
33 | </div> | 48 | </div> |
34 | </div> | 49 | </div> |
@@ -42,11 +57,15 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | @@ -42,11 +57,15 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | ||
42 | import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | 57 | import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' |
43 | import { ChartModeEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 58 | import { ChartModeEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
44 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' | 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 | import { DragKeyEnum } from '@/enums/editPageEnum' | 62 | import { DragKeyEnum } from '@/enums/editPageEnum' |
47 | // import { createComponent } from '@/packages' | 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 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' | 66 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' |
67 | +import { Icon } from '@iconify/vue' | ||
68 | +import { icon } from '@/plugins' | ||
50 | 69 | ||
51 | // THINGS_KIT 覆盖原始创建组件逻辑 | 70 | // THINGS_KIT 覆盖原始创建组件逻辑 |
52 | import { createComponent } from '@/packages/external/override' | 71 | import { createComponent } from '@/packages/external/override' |
@@ -54,8 +73,10 @@ import { createComponent } from '@/packages/external/override' | @@ -54,8 +73,10 @@ import { createComponent } from '@/packages/external/override' | ||
54 | import omit from 'lodash/omit' | 73 | import omit from 'lodash/omit' |
55 | 74 | ||
56 | const chartEditStore = useChartEditStore() | 75 | const chartEditStore = useChartEditStore() |
76 | +const { TrashIcon } = icon.ionicons5 | ||
57 | 77 | ||
58 | -defineProps({ | 78 | +const emit = defineEmits(['deletePhoto']) |
79 | +const props = defineProps({ | ||
59 | menuOptions: { | 80 | menuOptions: { |
60 | type: Array as PropType<ConfigType[]>, | 81 | type: Array as PropType<ConfigType[]>, |
61 | default: () => [] | 82 | default: () => [] |
@@ -65,6 +86,11 @@ defineProps({ | @@ -65,6 +86,11 @@ defineProps({ | ||
65 | const chartLayoutStore = useChartLayoutStore() | 86 | const chartLayoutStore = useChartLayoutStore() |
66 | const contentChartsItemBoxRef = ref() | 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 | const chartMode: Ref<ChartModeEnum> = computed(() => { | 95 | const chartMode: Ref<ChartModeEnum> = computed(() => { |
70 | return chartLayoutStore.getChartType | 96 | return chartLayoutStore.getChartType |
@@ -72,6 +98,7 @@ const chartMode: Ref<ChartModeEnum> = computed(() => { | @@ -72,6 +98,7 @@ const chartMode: Ref<ChartModeEnum> = computed(() => { | ||
72 | 98 | ||
73 | // 拖拽处理 | 99 | // 拖拽处理 |
74 | const dragStartHandle = (e: DragEvent, item: ConfigType) => { | 100 | const dragStartHandle = (e: DragEvent, item: ConfigType) => { |
101 | + if (item.disabled) return | ||
75 | // 动态注册图表组件 | 102 | // 动态注册图表组件 |
76 | componentInstall(item.chartKey, fetchChartComponent(item)) | 103 | componentInstall(item.chartKey, fetchChartComponent(item)) |
77 | componentInstall(item.conKey, fetchConfigComponent(item)) | 104 | componentInstall(item.conKey, fetchConfigComponent(item)) |
@@ -88,6 +115,7 @@ const dragendHandle = () => { | @@ -88,6 +115,7 @@ const dragendHandle = () => { | ||
88 | 115 | ||
89 | // 双击添加 | 116 | // 双击添加 |
90 | const dblclickHandle = async (item: ConfigType) => { | 117 | const dblclickHandle = async (item: ConfigType) => { |
118 | + if (item.disabled) return | ||
91 | try { | 119 | try { |
92 | loadingStart() | 120 | loadingStart() |
93 | // 动态注册图表组件 | 121 | // 动态注册图表组件 |
@@ -95,18 +123,39 @@ const dblclickHandle = async (item: ConfigType) => { | @@ -95,18 +123,39 @@ const dblclickHandle = async (item: ConfigType) => { | ||
95 | componentInstall(item.conKey, fetchConfigComponent(item)) | 123 | componentInstall(item.conKey, fetchConfigComponent(item)) |
96 | // 创建新图表组件 | 124 | // 创建新图表组件 |
97 | let newComponent: CreateComponentType = await createComponent(item) | 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 | chartEditStore.addComponentList(newComponent, false, true) | 132 | chartEditStore.addComponentList(newComponent, false, true) |
100 | // 选中 | 133 | // 选中 |
101 | chartEditStore.setTargetSelectChart(newComponent.id) | 134 | chartEditStore.setTargetSelectChart(newComponent.id) |
102 | loadingFinish() | 135 | loadingFinish() |
103 | } catch (error) { | 136 | } catch (error) { |
104 | - console.log(error) | ||
105 | loadingError() | 137 | loadingError() |
106 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 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 | watch( | 159 | watch( |
111 | () => chartMode.value, | 160 | () => chartMode.value, |
112 | (newValue: ChartModeEnum) => { | 161 | (newValue: ChartModeEnum) => { |
@@ -139,6 +188,7 @@ $halfCenterHeight: 50px; | @@ -139,6 +188,7 @@ $halfCenterHeight: 50px; | ||
139 | gap: 9px; | 188 | gap: 9px; |
140 | transition: all 0.7s linear; | 189 | transition: all 0.7s linear; |
141 | .item-box { | 190 | .item-box { |
191 | + position: relative; | ||
142 | margin: 0; | 192 | margin: 0; |
143 | width: $itemWidth; | 193 | width: $itemWidth; |
144 | overflow: hidden; | 194 | overflow: hidden; |
@@ -149,7 +199,10 @@ $halfCenterHeight: 50px; | @@ -149,7 +199,10 @@ $halfCenterHeight: 50px; | ||
149 | &:hover { | 199 | &:hover { |
150 | @include hover-border-color('background-color4'); | 200 | @include hover-border-color('background-color4'); |
151 | .list-img { | 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 | .list-header { | 208 | .list-header { |
@@ -161,6 +214,7 @@ $halfCenterHeight: 50px; | @@ -161,6 +214,7 @@ $halfCenterHeight: 50px; | ||
161 | &-text { | 214 | &-text { |
162 | font-size: 12px; | 215 | font-size: 12px; |
163 | margin-left: 8px; | 216 | margin-left: 8px; |
217 | + user-select: none; | ||
164 | } | 218 | } |
165 | } | 219 | } |
166 | .list-center { | 220 | .list-center { |
@@ -169,8 +223,9 @@ $halfCenterHeight: 50px; | @@ -169,8 +223,9 @@ $halfCenterHeight: 50px; | ||
169 | overflow: hidden; | 223 | overflow: hidden; |
170 | .list-img { | 224 | .list-img { |
171 | height: 100px; | 225 | height: 100px; |
172 | - width: 140px; | 226 | + max-width: 140px; |
173 | border-radius: 6px; | 227 | border-radius: 6px; |
228 | + object-fit: contain; | ||
174 | @extend .go-transition; | 229 | @extend .go-transition; |
175 | } | 230 | } |
176 | } | 231 | } |
@@ -181,6 +236,33 @@ $halfCenterHeight: 50px; | @@ -181,6 +236,33 @@ $halfCenterHeight: 50px; | ||
181 | padding-left: 5px; | 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 | &.single { | 267 | &.single { |
186 | .item-box { | 268 | .item-box { |
@@ -200,6 +282,9 @@ $halfCenterHeight: 50px; | @@ -200,6 +282,9 @@ $halfCenterHeight: 50px; | ||
200 | .item-box { | 282 | .item-box { |
201 | width: $halfItemWidth; | 283 | width: $halfItemWidth; |
202 | max-width: $maxItemWidth; | 284 | max-width: $maxItemWidth; |
285 | + .list-img { | ||
286 | + max-width: 76px; | ||
287 | + } | ||
203 | } | 288 | } |
204 | .list-center { | 289 | .list-center { |
205 | height: $halfCenterHeight; | 290 | height: $halfCenterHeight; |
@@ -208,6 +293,7 @@ $halfCenterHeight: 50px; | @@ -208,6 +293,7 @@ $halfCenterHeight: 50px; | ||
208 | height: $halfCenterHeight; | 293 | height: $halfCenterHeight; |
209 | width: auto; | 294 | width: auto; |
210 | transition: all 0.2s; | 295 | transition: all 0.2s; |
296 | + object-fit: contain; | ||
211 | } | 297 | } |
212 | } | 298 | } |
213 | .list-bottom { | 299 | .list-bottom { |
@@ -11,8 +11,8 @@ | @@ -11,8 +11,8 @@ | ||
11 | @update:value="clickItemHandle" | 11 | @update:value="clickItemHandle" |
12 | ></n-menu> | 12 | ></n-menu> |
13 | <div class="chart-content-list"> | 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 | </n-scrollbar> | 16 | </n-scrollbar> |
17 | </div> | 17 | </div> |
18 | </div> | 18 | </div> |
@@ -23,8 +23,11 @@ import { ref, watch, computed, reactive } from 'vue' | @@ -23,8 +23,11 @@ import { ref, watch, computed, reactive } from 'vue' | ||
23 | import { ConfigType } from '@/packages/index.d' | 23 | import { ConfigType } from '@/packages/index.d' |
24 | import { useSettingStore } from '@/store/modules/settingStore/settingStore' | 24 | import { useSettingStore } from '@/store/modules/settingStore/settingStore' |
25 | import { loadAsyncComponent } from '@/utils' | 25 | import { loadAsyncComponent } from '@/utils' |
26 | +import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' | ||
27 | +import { PackagesCategoryEnum } from '@/packages/index.d' | ||
26 | 28 | ||
27 | const ChartsItemBox = loadAsyncComponent(() => import('../ChartsItemBox/index.vue')) | 29 | const ChartsItemBox = loadAsyncComponent(() => import('../ChartsItemBox/index.vue')) |
30 | +const packagesStore = usePackagesStore() | ||
28 | 31 | ||
29 | const props = defineProps({ | 32 | const props = defineProps({ |
30 | selectOptions: { | 33 | selectOptions: { |
@@ -61,7 +64,7 @@ let packages = reactive<{ | @@ -61,7 +64,7 @@ let packages = reactive<{ | ||
61 | saveSelectOptions: {} | 64 | saveSelectOptions: {} |
62 | }) | 65 | }) |
63 | 66 | ||
64 | -const selectValue = ref<string>() | 67 | +const selectValue = ref<string>('all') |
65 | 68 | ||
66 | // 设置初始列表 | 69 | // 设置初始列表 |
67 | const setSelectOptions = (categorys: any) => { | 70 | const setSelectOptions = (categorys: any) => { |
@@ -79,7 +82,6 @@ watch( | @@ -79,7 +82,6 @@ watch( | ||
79 | if (!newData) return | 82 | if (!newData) return |
80 | newData.list.forEach((e: ConfigType) => { | 83 | newData.list.forEach((e: ConfigType) => { |
81 | const value: ConfigType[] = (packages.categorys as any)[e.category] | 84 | const value: ConfigType[] = (packages.categorys as any)[e.category] |
82 | - // @ts-ignore | ||
83 | packages.categorys[e.category] = value && value.length ? [...value, e] : [e] | 85 | packages.categorys[e.category] = value && value.length ? [...value, e] : [e] |
84 | packages.categoryNames[e.category] = e.categoryName | 86 | packages.categoryNames[e.category] = e.categoryName |
85 | packages.categorys['all'].push(e) | 87 | packages.categorys['all'].push(e) |
@@ -100,6 +102,22 @@ watch( | @@ -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 | const clickItemHandle = (key: string) => { | 122 | const clickItemHandle = (key: string) => { |
105 | packages.selectOptions = packages.categorys[key] | 123 | packages.selectOptions = packages.categorys[key] |
@@ -119,6 +137,7 @@ $menuWidth: 65px; | @@ -119,6 +137,7 @@ $menuWidth: 65px; | ||
119 | @include fetch-bg-color('background-color2-shallow'); | 137 | @include fetch-bg-color('background-color2-shallow'); |
120 | } | 138 | } |
121 | .chart-content-list { | 139 | .chart-content-list { |
140 | + width: 200px; | ||
122 | flex: 1; | 141 | flex: 1; |
123 | display: flex; | 142 | display: flex; |
124 | flex-direction: column; | 143 | flex-direction: column; |
@@ -37,7 +37,8 @@ | @@ -37,7 +37,8 @@ | ||
37 | :title="item.title" | 37 | :title="item.title" |
38 | @click="selectChartHandle(item)" | 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 | <n-text class="list-item-fs" depth="2">{{ item.title }}</n-text> | 42 | <n-text class="list-item-fs" depth="2">{{ item.title }}</n-text> |
42 | </div> | 43 | </div> |
43 | </n-scrollbar> | 44 | </n-scrollbar> |
@@ -72,7 +73,7 @@ import { icon } from '@/plugins' | @@ -72,7 +73,7 @@ import { icon } from '@/plugins' | ||
72 | // THINGS_KIT 覆盖原始创建组件逻辑 | 73 | // THINGS_KIT 覆盖原始创建组件逻辑 |
73 | import { createComponent } from '@/packages/external/override' | 74 | import { createComponent } from '@/packages/external/override' |
74 | import { ConfigType, CreateComponentType } from '@/packages/index.d' | 75 | import { ConfigType, CreateComponentType } from '@/packages/index.d' |
75 | -import { themeColor, MenuOptionsType } from '../../hooks/useAside.hook' | 76 | +import { themeColor } from '../../hooks/useLayout.hook' |
76 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 77 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
77 | import { ChartModeEnum, ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 78 | import { ChartModeEnum, ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
78 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' | 79 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' |
@@ -80,6 +81,7 @@ import { isString, addEventListener, removeEventListener } from '@/utils' | @@ -80,6 +81,7 @@ import { isString, addEventListener, removeEventListener } from '@/utils' | ||
80 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' | 81 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' |
81 | import { componentInstall, loadingStart, loadingFinish, loadingError } from '@/utils' | 82 | import { componentInstall, loadingStart, loadingFinish, loadingError } from '@/utils' |
82 | import { ChartGlobImage } from '@/components/Pages/ChartGlobImage' | 83 | import { ChartGlobImage } from '@/components/Pages/ChartGlobImage' |
84 | +import { Icon } from '@iconify/vue' | ||
83 | 85 | ||
84 | const props = defineProps({ | 86 | const props = defineProps({ |
85 | menuOptions: { | 87 | menuOptions: { |
@@ -131,7 +133,9 @@ const searchHandle = (key: string | null) => { | @@ -131,7 +133,9 @@ const searchHandle = (key: string | null) => { | ||
131 | } | 133 | } |
132 | loading.value = true | 134 | loading.value = true |
133 | showPopover.value = true | 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 | setTimeout(() => { | 139 | setTimeout(() => { |
136 | loading.value = undefined | 140 | loading.value = undefined |
137 | }, 500) | 141 | }, 500) |
@@ -148,6 +152,7 @@ const listenerCloseHandle = (e: Event) => { | @@ -148,6 +152,7 @@ const listenerCloseHandle = (e: Event) => { | ||
148 | 152 | ||
149 | // 选择处理 | 153 | // 选择处理 |
150 | const selectChartHandle = async (item: ConfigType) => { | 154 | const selectChartHandle = async (item: ConfigType) => { |
155 | + if (item.disabled) return | ||
151 | try { | 156 | try { |
152 | loadingStart() | 157 | loadingStart() |
153 | // 动态注册图表组件 | 158 | // 动态注册图表组件 |
@@ -155,6 +160,11 @@ const selectChartHandle = async (item: ConfigType) => { | @@ -155,6 +160,11 @@ const selectChartHandle = async (item: ConfigType) => { | ||
155 | componentInstall(item.conKey, fetchConfigComponent(item)) | 160 | componentInstall(item.conKey, fetchConfigComponent(item)) |
156 | // 创建新图表组件 | 161 | // 创建新图表组件 |
157 | let newComponent: CreateComponentType = await createComponent(item) | 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 | chartEditStore.addComponentList(newComponent, false, true) | 169 | chartEditStore.addComponentList(newComponent, false, true) |
160 | // 选中 | 170 | // 选中 |
@@ -163,7 +173,6 @@ const selectChartHandle = async (item: ConfigType) => { | @@ -163,7 +173,6 @@ const selectChartHandle = async (item: ConfigType) => { | ||
163 | closeHandle() | 173 | closeHandle() |
164 | loadingFinish() | 174 | loadingFinish() |
165 | } catch (error) { | 175 | } catch (error) { |
166 | - console.log(error) | ||
167 | loadingError() | 176 | loadingError() |
168 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 177 | window['$message'].warning(`图表正在研发中, 敬请期待...`) |
169 | } | 178 | } |
@@ -224,10 +233,16 @@ $searchWidth: 176px; | @@ -224,10 +233,16 @@ $searchWidth: 176px; | ||
224 | font-size: 12px; | 233 | font-size: 12px; |
225 | } | 234 | } |
226 | &-img { | 235 | &-img { |
227 | - height: 28px; | 236 | + height: 20px; |
237 | + max-width: 30px; | ||
228 | margin-right: 5px; | 238 | margin-right: 5px; |
229 | border-radius: 5px; | 239 | border-radius: 5px; |
230 | } | 240 | } |
241 | + & > svg { | ||
242 | + min-width: 20px; | ||
243 | + min-height: 20px; | ||
244 | + margin-right: 5px; | ||
245 | + } | ||
231 | &:hover { | 246 | &:hover { |
232 | &::before { | 247 | &::before { |
233 | content: ''; | 248 | content: ''; |
1 | -import { shallowReactive, ref } from 'vue' | 1 | +import { ref, watch, computed } from 'vue' |
2 | import { icon } from '@/plugins' | 2 | import { icon } from '@/plugins' |
3 | import { renderLang, renderIcon } from '@/utils' | 3 | import { renderLang, renderIcon } from '@/utils' |
4 | import { themeColor, setItem, getCharts } from './useLayout.hook' | 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 | import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' | 6 | import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' |
8 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 7 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
9 | // THINGS_KIT 追加组件库进入aside 侧边栏 | 8 | // THINGS_KIT 追加组件库进入aside 侧边栏 |
10 | import { useInjectAside } from './external/useInjectAside' | 9 | import { useInjectAside } from './external/useInjectAside' |
10 | + | ||
11 | // 图标 | 11 | // 图标 |
12 | -const { BarChartIcon } = icon.ionicons5 | 12 | +const { AirPlaneOutlineIcon, ImageIcon, BarChartIcon } = icon.ionicons5 |
13 | const { | 13 | const { |
14 | TableSplitIcon, | 14 | TableSplitIcon, |
15 | RoadmapIcon, | 15 | RoadmapIcon, |
@@ -32,65 +32,77 @@ const menuOptions: MenuOptionsType[] = [] | @@ -32,65 +32,77 @@ const menuOptions: MenuOptionsType[] = [] | ||
32 | const packagesListObj = { | 32 | const packagesListObj = { |
33 | [PackagesCategoryEnum.CHARTS]: { | 33 | [PackagesCategoryEnum.CHARTS]: { |
34 | icon: renderIcon(RoadmapIcon), | 34 | icon: renderIcon(RoadmapIcon), |
35 | - label: PackagesCategoryName.CHARTS, | 35 | + label: PackagesCategoryName.CHARTS |
36 | }, | 36 | }, |
37 | [PackagesCategoryEnum.INFORMATIONS]: { | 37 | [PackagesCategoryEnum.INFORMATIONS]: { |
38 | icon: renderIcon(SpellCheckIcon), | 38 | icon: renderIcon(SpellCheckIcon), |
39 | - label: PackagesCategoryName.INFORMATIONS, | 39 | + label: PackagesCategoryName.INFORMATIONS |
40 | }, | 40 | }, |
41 | [PackagesCategoryEnum.TABLES]: { | 41 | [PackagesCategoryEnum.TABLES]: { |
42 | icon: renderIcon(TableSplitIcon), | 42 | icon: renderIcon(TableSplitIcon), |
43 | - label: PackagesCategoryName.TABLES, | 43 | + label: PackagesCategoryName.TABLES |
44 | }, | 44 | }, |
45 | [PackagesCategoryEnum.DECORATES]: { | 45 | [PackagesCategoryEnum.DECORATES]: { |
46 | icon: renderIcon(GraphicalDataFlowIcon), | 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 | // THINGS_KIT 追加组件库进入aside 侧边栏 | 58 | // THINGS_KIT 追加组件库进入aside 侧边栏 |
51 | useInjectAside(packagesListObj as any) | 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,7 +9,7 @@ import { useDesignStore } from '@/store/modules/designStore/designStore' | ||
9 | const designStore = useDesignStore() | 9 | const designStore = useDesignStore() |
10 | const themeColor = ref(designStore.getAppTheme) | 10 | const themeColor = ref(designStore.getAppTheme) |
11 | 11 | ||
12 | -// 结构控制 | 12 | +// 结构控制 |
13 | const { setItem } = useChartLayoutStore() | 13 | const { setItem } = useChartLayoutStore() |
14 | const { getCharts } = toRefs(useChartLayoutStore()) | 14 | const { getCharts } = toRefs(useChartLayoutStore()) |
15 | 15 | ||
@@ -17,4 +17,4 @@ export { | @@ -17,4 +17,4 @@ export { | ||
17 | themeColor, | 17 | themeColor, |
18 | setItem, | 18 | setItem, |
19 | getCharts | 19 | getCharts |
20 | -} | ||
20 | +} |
1 | <template> | 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 | <template #icon> | 4 | <template #icon> |
11 | <n-icon size="14" :depth="2"> | 5 | <n-icon size="14" :depth="2"> |
12 | <bar-chart-icon></bar-chart-icon> | 6 | <bar-chart-icon></bar-chart-icon> |
@@ -28,13 +22,7 @@ | @@ -28,13 +22,7 @@ | ||
28 | @update:value="clickItemHandle" | 22 | @update:value="clickItemHandle" |
29 | ></n-menu> | 23 | ></n-menu> |
30 | <div class="menu-component-box"> | 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 | <charts-option-content | 26 | <charts-option-content |
39 | v-if="selectOptions" | 27 | v-if="selectOptions" |
40 | :selectOptions="selectOptions" | 28 | :selectOptions="selectOptions" |
@@ -50,15 +38,9 @@ | @@ -50,15 +38,9 @@ | ||
50 | import { ContentBox } from '../ContentBox/index' | 38 | import { ContentBox } from '../ContentBox/index' |
51 | import { ChartsOptionContent } from './components/ChartsOptionContent' | 39 | import { ChartsOptionContent } from './components/ChartsOptionContent' |
52 | import { ChartsSearch } from './components/ChartsSearch' | 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 | </script> | 44 | </script> |
63 | 45 | ||
64 | <style lang="scss" scoped> | 46 | <style lang="scss" scoped> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | :onBeforeUpload="beforeUploadHandle" | 30 | :onBeforeUpload="beforeUploadHandle" |
31 | > | 31 | > |
32 | <n-upload-dragger> | 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 | <div class="upload-img" v-show="!canvasConfig.backgroundImage"> | 34 | <div class="upload-img" v-show="!canvasConfig.backgroundImage"> |
35 | <img src="@/assets/images/canvas/noImage.png" /> | 35 | <img src="@/assets/images/canvas/noImage.png" /> |
36 | <n-text class="upload-desc" depth="3"> | 36 | <n-text class="upload-desc" depth="3"> |
@@ -130,8 +130,9 @@ const sendHandle = async () => { | @@ -130,8 +130,9 @@ const sendHandle = async () => { | ||
130 | const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.getRequestGlobalConfig)) | 130 | const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.getRequestGlobalConfig)) |
131 | loading.value = false | 131 | loading.value = false |
132 | if (res) { | 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 | showMatching.value = true | 136 | showMatching.value = true |
136 | return | 137 | return |
137 | } | 138 | } |
1 | <template> | 1 | <template> |
2 | <!-- 组件配置 --> | 2 | <!-- 组件配置 --> |
3 | <n-divider class="go-my-3" title-placement="left"></n-divider> | 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 | <template #name> | 7 | <template #name> |
11 | 地址 | 8 | 地址 |
12 | <n-tooltip trigger="hover" v-if="isDev()"> | 9 | <n-tooltip trigger="hover" v-if="isDev()"> |
@@ -37,13 +34,8 @@ | @@ -37,13 +34,8 @@ | ||
37 | </setting-item> | 34 | </setting-item> |
38 | <setting-item name="更新间隔,为 0 只会初始化"> | 35 | <setting-item name="更新间隔,为 0 只会初始化"> |
39 | <n-input-group> | 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 | </n-input-number> | 39 | </n-input-number> |
48 | <!-- 单位 --> | 40 | <!-- 单位 --> |
49 | <n-select class="select-time-options" v-model:value="requestIntervalUnit" :options="selectTimeOptions" /> | 41 | <n-select class="select-time-options" v-model:value="requestIntervalUnit" :options="selectTimeOptions" /> |
@@ -65,6 +57,7 @@ import { RequestHeader } from '../RequestHeader' | @@ -65,6 +57,7 @@ import { RequestHeader } from '../RequestHeader' | ||
65 | import { isDev } from '@/utils' | 57 | import { isDev } from '@/utils' |
66 | import { icon } from '@/plugins' | 58 | import { icon } from '@/plugins' |
67 | import { | 59 | import { |
60 | + graphUrl, | ||
68 | chartDataUrl, | 61 | chartDataUrl, |
69 | chartSingleDataUrl, | 62 | chartSingleDataUrl, |
70 | rankListUrl, | 63 | rankListUrl, |
@@ -80,7 +73,8 @@ import { | @@ -80,7 +73,8 @@ import { | ||
80 | capsuleUrl, | 73 | capsuleUrl, |
81 | wordCloudUrl, | 74 | wordCloudUrl, |
82 | treemapUrl, | 75 | treemapUrl, |
83 | - threeEarth01Url | 76 | + threeEarth01Url, |
77 | + sankeyUrl | ||
84 | } from '@/api/mock' | 78 | } from '@/api/mock' |
85 | 79 | ||
86 | const props = defineProps({ | 80 | const props = defineProps({ |
@@ -142,6 +136,12 @@ const apiList = [ | @@ -142,6 +136,12 @@ const apiList = [ | ||
142 | }, | 136 | }, |
143 | { | 137 | { |
144 | value: `【三维地球】${threeEarth01Url}` | 138 | value: `【三维地球】${threeEarth01Url}` |
139 | + }, | ||
140 | + { | ||
141 | + value: `【桑基图】${sankeyUrl}` | ||
142 | + }, | ||
143 | + { | ||
144 | + value: `【关系图】${graphUrl}` | ||
145 | } | 145 | } |
146 | ] | 146 | ] |
147 | </script> | 147 | </script> |
@@ -150,9 +150,11 @@ const apiList = [ | @@ -150,9 +150,11 @@ const apiList = [ | ||
150 | .select-time-number { | 150 | .select-time-number { |
151 | width: 100%; | 151 | width: 100%; |
152 | } | 152 | } |
153 | + | ||
153 | .select-time-options { | 154 | .select-time-options { |
154 | width: 100px; | 155 | width: 100px; |
155 | } | 156 | } |
157 | + | ||
156 | .select-type-options { | 158 | .select-type-options { |
157 | width: 120px; | 159 | width: 120px; |
158 | } | 160 | } |
@@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
58 | <help-outline-icon></help-outline-icon> | 58 | <help-outline-icon></help-outline-icon> |
59 | </n-icon> | 59 | </n-icon> |
60 | </template> | 60 | </template> |
61 | - <n-text>不支持「静态组件」和「分组」</n-text> | 61 | + <n-text>不支持「静态组件」</n-text> |
62 | </n-tooltip> | 62 | </n-tooltip> |
63 | </template> | 63 | </template> |
64 | <n-select | 64 | <n-select |
@@ -169,7 +169,27 @@ const fnDimensionsAndSource = (interactOn: InteractEventOn | undefined) => { | @@ -169,7 +169,27 @@ const fnDimensionsAndSource = (interactOn: InteractEventOn | undefined) => { | ||
169 | 169 | ||
170 | // 绑定组件列表 | 170 | // 绑定组件列表 |
171 | const fnEventsOptions = (): Array<SelectOption | SelectGroupOption> => { | 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 | const isNotSelf = item.id !== targetData.value.id | 194 | const isNotSelf = item.id !== targetData.value.id |
175 | // 排除静态组件 | 195 | // 排除静态组件 |
@@ -23,6 +23,8 @@ | @@ -23,6 +23,8 @@ | ||
23 | <script setup lang="ts"> | 23 | <script setup lang="ts"> |
24 | import { computed, PropType } from 'vue' | 24 | import { computed, PropType } from 'vue' |
25 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 25 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
26 | +import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | ||
27 | + | ||
26 | import { useDesignStore } from '@/store/modules/designStore/designStore' | 28 | import { useDesignStore } from '@/store/modules/designStore/designStore' |
27 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' | 29 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' |
28 | import { useSizeStyle, usePointStyle } from '../../hooks/useStyle.hook' | 30 | import { useSizeStyle, usePointStyle } from '../../hooks/useStyle.hook' |
@@ -55,6 +57,9 @@ const themeColor = computed(() => { | @@ -55,6 +57,9 @@ const themeColor = computed(() => { | ||
55 | 57 | ||
56 | // 计算当前选中目标 | 58 | // 计算当前选中目标 |
57 | const hover = computed(() => { | 59 | const hover = computed(() => { |
60 | + const isDrag = chartEditStore.getEditCanvas[EditCanvasTypeEnum.IS_DRAG] | ||
61 | + if (isDrag) return false | ||
62 | + | ||
58 | if (props.item.status.lock) return false | 63 | if (props.item.status.lock) return false |
59 | return props.item.id === chartEditStore.getTargetChart.hoverId | 64 | return props.item.id === chartEditStore.getTargetChart.hoverId |
60 | }) | 65 | }) |
@@ -24,6 +24,11 @@ export const syncData = () => { | @@ -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 | const useSyncUpdateHandle = () => { | 33 | const useSyncUpdateHandle = () => { |
29 | // 定义侦听器变量 | 34 | // 定义侦听器变量 |
@@ -48,8 +53,8 @@ const useSyncUpdateHandle = () => { | @@ -48,8 +53,8 @@ const useSyncUpdateHandle = () => { | ||
48 | // document.hasFocus() && syncData() | 53 | // document.hasFocus() && syncData() |
49 | // }, editToJsonInterval) | 54 | // }, editToJsonInterval) |
50 | 55 | ||
51 | - // 失焦同步数据(暂不开启) | ||
52 | - // addEventListener('blur', syncData) | 56 | + // 失焦同步数据 |
57 | + addEventListener('blur', syncDataToPreview) | ||
53 | 58 | ||
54 | // 监听编辑器保存事件 刷新工作台图表 | 59 | // 监听编辑器保存事件 刷新工作台图表 |
55 | addEventListener(SavePageEnum.JSON, updateFn) | 60 | addEventListener(SavePageEnum.JSON, updateFn) |
@@ -324,6 +324,15 @@ $asideBottom: 70px; | @@ -324,6 +324,15 @@ $asideBottom: 70px; | ||
324 | border-radius: 25px; | 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 | &.isMini { | 338 | &.isMini { |
@@ -350,6 +359,7 @@ $asideBottom: 70px; | @@ -350,6 +359,7 @@ $asideBottom: 70px; | ||
350 | 50% { | 359 | 50% { |
351 | opacity: 0; | 360 | opacity: 0; |
352 | bottom: calc(#{$dockMiniBottom} - 10px); | 361 | bottom: calc(#{$dockMiniBottom} - 10px); |
362 | + pointer-events: none; | ||
353 | } | 363 | } |
354 | 100% { | 364 | 100% { |
355 | opacity: 1; | 365 | opacity: 1; |
@@ -364,15 +374,6 @@ $asideBottom: 70px; | @@ -364,15 +374,6 @@ $asideBottom: 70px; | ||
364 | display: none; | 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 | </style> | 379 | </style> |
@@ -30,9 +30,16 @@ export const dragHandle = async (e: DragEvent) => { | @@ -30,9 +30,16 @@ export const dragHandle = async (e: DragEvent) => { | ||
30 | // 修改状态 | 30 | // 修改状态 |
31 | chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_CREATE, false) | 31 | chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_CREATE, false) |
32 | const dropData: Exclude<ConfigType, ['image']> = JSONParse(drayDataString) | 32 | const dropData: Exclude<ConfigType, ['image']> = JSONParse(drayDataString) |
33 | + if (dropData.disabled) return | ||
33 | 34 | ||
34 | // 创建新图表组件 | 35 | // 创建新图表组件 |
35 | const newComponent: CreateComponentType = await createComponent(dropData) | 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 | setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2) | 44 | setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2) |
38 | chartEditStore.addComponentList(newComponent, false, true) | 45 | chartEditStore.addComponentList(newComponent, false, true) |
@@ -5,8 +5,9 @@ import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStor | @@ -5,8 +5,9 @@ import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStor | ||
5 | const chartEditStore = useChartEditStore() | 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 | // 设置 Dom 值(ref 不生效先用 document) | 11 | // 设置 Dom 值(ref 不生效先用 document) |
11 | chartEditStore.setEditCanvas( | 12 | chartEditStore.setEditCanvas( |
12 | EditCanvasTypeEnum.EDIT_LAYOUT_DOM, | 13 | EditCanvasTypeEnum.EDIT_LAYOUT_DOM, |
@@ -17,13 +18,16 @@ export const useLayout = () => { | @@ -17,13 +18,16 @@ export const useLayout = () => { | ||
17 | document.getElementById('go-chart-edit-content') | 18 | document.getElementById('go-chart-edit-content') |
18 | ) | 19 | ) |
19 | 20 | ||
21 | + // 获取数据 | ||
22 | + await fn() | ||
20 | // 监听初始化 | 23 | // 监听初始化 |
21 | const removeScale = chartEditStore.listenerScale() | 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 | -} | ||
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,10 +113,10 @@ const { handleContextMenu } = useContextMenu() | ||
113 | const { dataSyncFetch, intervalDataSyncUpdate } = useSyncRemote() | 113 | const { dataSyncFetch, intervalDataSyncUpdate } = useSyncRemote() |
114 | 114 | ||
115 | // 编辑时注入scale变量,消除警告 | 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 | const { mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle } = useMouseHandle() | 122 | const { mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle } = useMouseHandle() |
@@ -188,6 +188,7 @@ const rangeStyle = computed(() => { | @@ -188,6 +188,7 @@ const rangeStyle = computed(() => { | ||
188 | // 键盘事件 | 188 | // 键盘事件 |
189 | onMounted(() => { | 189 | onMounted(() => { |
190 | useAddKeyboard() | 190 | useAddKeyboard() |
191 | + // THINGS_KIT | ||
191 | // 获取数据 | 192 | // 获取数据 |
192 | dataSyncFetch() | 193 | dataSyncFetch() |
193 | // 定时更新数据 | 194 | // 定时更新数据 |
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | <!-- 模块展示按钮 --> | 11 | <!-- 模块展示按钮 --> |
12 | <n-tooltip v-for="item in btnList" :key="item.key" placement="bottom" trigger="hover"> | 12 | <n-tooltip v-for="item in btnList" :key="item.key" placement="bottom" trigger="hover"> |
13 | <template #trigger> | 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 | <component :is="item.icon"></component> | 15 | <component :is="item.icon"></component> |
16 | </n-button> | 16 | </n-button> |
17 | </template> | 17 | </template> |
@@ -58,7 +58,7 @@ const previewHandle = () => { | @@ -58,7 +58,7 @@ const previewHandle = () => { | ||
58 | // 发布 | 58 | // 发布 |
59 | const sendHandle = () => { | 59 | const sendHandle = () => { |
60 | goDialog({ | 60 | goDialog({ |
61 | - message: '想体验发布功能,请前往 master-fetch 分支查看: https://demo.mtruning.club/#/login', | 61 | + message: '想体验发布功能,请前往查看: https://demo.mtruning.club/#/login。源码需切换到:master-fetch 分支。', |
62 | positiveText: '了然', | 62 | positiveText: '了然', |
63 | closeNegativeText: true, | 63 | closeNegativeText: true, |
64 | onPositiveCallback: () => {} | 64 | onPositiveCallback: () => {} |
@@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
20 | </template> | 20 | </template> |
21 | 21 | ||
22 | <script setup lang="ts"> | 22 | <script setup lang="ts"> |
23 | -import { computed, PropType, ref, watch } from 'vue' | 23 | +import { computed, PropType, ref } from 'vue' |
24 | import { requireErrorImg } from '@/utils' | 24 | import { requireErrorImg } from '@/utils' |
25 | import { useDesignStore } from '@/store/modules/designStore/designStore' | 25 | import { useDesignStore } from '@/store/modules/designStore/designStore' |
26 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 26 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
@@ -88,6 +88,7 @@ export const useSyncRemote = () => { | @@ -88,6 +88,7 @@ export const useSyncRemote = () => { | ||
88 | return | 88 | return |
89 | } | 89 | } |
90 | projectInfoStore.setSaveStatus(SyncEnum.START) | 90 | projectInfoStore.setSaveStatus(SyncEnum.START) |
91 | + console.log(dataViewContent) | ||
91 | // 保存数据 | 92 | // 保存数据 |
92 | const saveContent = { | 93 | const saveContent = { |
93 | dataViewContent: { | 94 | dataViewContent: { |
@@ -137,6 +137,11 @@ export const useSync = () => { | @@ -137,6 +137,11 @@ export const useSync = () => { | ||
137 | ) => { | 137 | ) => { |
138 | // 补充 class 上的方法 | 138 | // 补充 class 上的方法 |
139 | let newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) | 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 | if (callBack) { | 145 | if (callBack) { |
141 | if (changeId) { | 146 | if (changeId) { |
142 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) | 147 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) |
@@ -190,6 +195,11 @@ export const useSync = () => { | @@ -190,6 +195,11 @@ export const useSync = () => { | ||
190 | } else { | 195 | } else { |
191 | await create(comItem as CreateComponentType) | 196 | await create(comItem as CreateComponentType) |
192 | } | 197 | } |
198 | + if (percentage === 100) { | ||
199 | + // 清除历史记录 | ||
200 | + chartHistoryStore.clearBackStack() | ||
201 | + chartHistoryStore.clearForwardStack() | ||
202 | + } | ||
193 | } | 203 | } |
194 | } else { | 204 | } else { |
195 | // 非组件(顺便排除脏数据) | 205 | // 非组件(顺便排除脏数据) |
@@ -59,6 +59,8 @@ | @@ -59,6 +59,8 @@ | ||
59 | <n-form-item path="username"> | 59 | <n-form-item path="username"> |
60 | <n-input | 60 | <n-input |
61 | v-model:value="formInline.username" | 61 | v-model:value="formInline.username" |
62 | + type="text" | ||
63 | + maxlength="16" | ||
62 | :placeholder="$t('global.form_account')" | 64 | :placeholder="$t('global.form_account')" |
63 | > | 65 | > |
64 | <template #prefix> | 66 | <template #prefix> |
@@ -72,6 +74,7 @@ | @@ -72,6 +74,7 @@ | ||
72 | <n-input | 74 | <n-input |
73 | v-model:value="formInline.password" | 75 | v-model:value="formInline.password" |
74 | type="password" | 76 | type="password" |
77 | + maxlength="16" | ||
75 | show-password-on="click" | 78 | show-password-on="click" |
76 | :placeholder="$t('global.form_password')" | 79 | :placeholder="$t('global.form_password')" |
77 | > | 80 | > |
@@ -13,13 +13,13 @@ import Preview from './index.vue' | @@ -13,13 +13,13 @@ import Preview from './index.vue' | ||
13 | 13 | ||
14 | let key = ref(Date.now()) | 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 | </script> | 25 | </script> |
@@ -132,20 +132,6 @@ const selectOptions = ref([ | @@ -132,20 +132,6 @@ const selectOptions = ref([ | ||
132 | icon: renderIcon(BrowsersOutlineIcon) | 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 | label: props.cardData?.release | 135 | label: props.cardData?.release |
150 | ? renderLang('global.r_unpublish') | 136 | ? renderLang('global.r_unpublish') |
151 | : renderLang('global.r_publish'), | 137 | : renderLang('global.r_publish'), |
@@ -153,15 +139,6 @@ const selectOptions = ref([ | @@ -153,15 +139,6 @@ const selectOptions = ref([ | ||
153 | icon: renderIcon(SendIcon) | 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 | label: renderLang('global.r_delete'), | 142 | label: renderLang('global.r_delete'), |
166 | key: 'delete', | 143 | key: 'delete', |
167 | icon: renderIcon(TrashIcon) | 144 | icon: renderIcon(TrashIcon) |
@@ -45,8 +45,7 @@ const collapsed = ref<boolean>(false) | @@ -45,8 +45,7 @@ const collapsed = ref<boolean>(false) | ||
45 | const { getAsideCollapsedWidth } = toRefs(useSettingStore()) | 45 | const { getAsideCollapsedWidth } = toRefs(useSettingStore()) |
46 | 46 | ||
47 | const route = useRoute() | 47 | const route = useRoute() |
48 | -const routeRame = computed(() => route.name) | ||
49 | -const menuValue = ref(routeRame) | 48 | +const menuValue = computed(() => route.name) |
50 | 49 | ||
51 | const menuOptions = menuOptionsInit() | 50 | const menuOptions = menuOptionsInit() |
52 | 51 |