Showing
115 changed files
with
5124 additions
and
597 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] |
| 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> |
| @@ -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,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 |