diff --git a/common/changes/@visactor/vchart/fix-datazoom-bug_2026-03-24-08-50.json b/common/changes/@visactor/vchart/fix-datazoom-bug_2026-03-24-08-50.json new file mode 100644 index 0000000000..469fda2c71 --- /dev/null +++ b/common/changes/@visactor/vchart/fix-datazoom-bug_2026-03-24-08-50.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vchart", + "comment": "fix: datazoom update domain after data change. fix#4186", + "type": "none" + } + ], + "packageName": "@visactor/vchart" +} \ No newline at end of file diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index e0efb19a63..0e068aa8d4 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: specifier: 1.2.4-alpha.5 version: 1.2.4-alpha.5 '@visactor/vrender': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-kits': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vtable': specifier: 1.19.0-alpha.0 version: 1.19.0-alpha.0 @@ -203,11 +203,11 @@ importers: specifier: workspace:2.0.19 version: link:../vchart '@visactor/vrender-core': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-kits': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vutils': specifier: ~1.0.23 version: 1.0.23 @@ -294,11 +294,11 @@ importers: specifier: workspace:2.0.19 version: link:../vchart-extension '@visactor/vrender-core': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-kits': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vutils': specifier: ~1.0.23 version: 1.0.23 @@ -529,17 +529,17 @@ importers: specifier: ~1.0.23 version: 1.0.23 '@visactor/vrender-animate': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-components': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-core': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-kits': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vscale': specifier: ~1.0.23 version: 1.0.23 @@ -692,17 +692,17 @@ importers: specifier: ~1.0.23 version: 1.0.23 '@visactor/vrender-animate': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-components': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-core': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-kits': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vutils': specifier: ~1.0.23 version: 1.0.23 @@ -1260,14 +1260,14 @@ importers: specifier: workspace:2.0.19 version: link:../../packages/vchart '@visactor/vrender': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-core': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vrender-kits': - specifier: ~1.0.42 - version: 1.0.42 + specifier: 1.0.44 + version: 1.0.44 '@visactor/vutils': specifier: ~1.0.23 version: 1.0.23 @@ -3073,29 +3073,29 @@ packages: '@visactor/vrender-animate@1.0.0-alpha.18': resolution: {integrity: sha512-9kTtvp1ef+1t+AtUiza6A7qBQP7SmvOu3/ILGrqs/HGdZVj1XGjbYvD/X/zwKJ3LEb7gGV5fa8x95e4czTvRSA==} - '@visactor/vrender-animate@1.0.42': - resolution: {integrity: sha512-SeTHzm6opLqrBNM6ueK92LNwPbpVt4Zw0PAMrnfeccMazYIMQ9ZTC9uAjo8ecWwJIG+NO6dhTaL97fe7mhCBKQ==} + '@visactor/vrender-animate@1.0.44': + resolution: {integrity: sha512-MKtoaucmbQNJnuff5F6ws+c8+mRBz1gXVY/bHw38nfvSTZcsJcXYug2aDPf4V9XaUSValDnkx9TyLLbKJ0o0TA==} '@visactor/vrender-components@1.0.0-alpha.18': resolution: {integrity: sha512-7Euq+ZfswL74n2pgkaqZSsPxoSa5SPIGyXatN1eUrdzM2Z0kX6U0RcJg01fctvRs4op6WhcecRLqGvnHcBeb9Q==} - '@visactor/vrender-components@1.0.42': - resolution: {integrity: sha512-S6lbjABk3OOCNN2KMmvLRWS7RWLvw1Cklwb8MJNsb1IxpwTuivjUyz+HGhzj1ju9TkQf64ooA+gX1OgOlDJIaQ==} + '@visactor/vrender-components@1.0.44': + resolution: {integrity: sha512-vbCa/eME1UJL2iy0l4JHYJh1m6SG3rR5jt5umblLVRQjjBEWPAnhnPwQAA2TNiyO5eHG6qnyvcjgV5aeCeuJYw==} '@visactor/vrender-core@1.0.0-alpha.18': resolution: {integrity: sha512-0ihtNvCyNkOsWPFgRqowHzq0IcQgS2Wl/nPpKbVtxWKveenwlhA+ZKoQvam6VJyBY7jeNe1pROy0mJMDyVAJQw==} - '@visactor/vrender-core@1.0.42': - resolution: {integrity: sha512-EcSH0SyFb6zlWYyt37NgOKCFXkv9At0HW91EreYunmQpr0Bj1oRNtKDm3GAmc7hMLp4PYMRR6q4mwuFYY9U4lg==} + '@visactor/vrender-core@1.0.44': + resolution: {integrity: sha512-DrB+cg9//RkCZjchWConeXGOC99xwvEDdPfY7eEqajjPxUooJpSQ+pt51uD0VIwQCYtpsc2jVspefqdBh/e2Cg==} '@visactor/vrender-kits@1.0.0-alpha.18': resolution: {integrity: sha512-Tvolkq+4G8qiPFZo0Aj8M//Yr6jR2h8FNkFEyWM9gbQbEiTkjpmHAJOYnoSsaPtPrcMSlG4EhJSFDk6ymANHVg==} - '@visactor/vrender-kits@1.0.42': - resolution: {integrity: sha512-GgXRJlsm8A+dpq/htSbe1SmX5dyattveDvEAPfq458ws/7iGunWqKXa5UpGJb3RLAncGjmU7BXKIB0svF08+1w==} + '@visactor/vrender-kits@1.0.44': + resolution: {integrity: sha512-B28zr+aTWlFIziH3b/ufUlpKQMv1Ie9ck8kTkHIGdBM/ES+CO6//GHMa/5OxuId19a9UhJxzj8cpeE/9mZLIoQ==} - '@visactor/vrender@1.0.42': - resolution: {integrity: sha512-3DAbCJMV/0MZ7DmnwQzgaopbBkYsxGQ6EAwVVOg1vbm/pssDqjLL0scqgyBB2eXlwwSbAe2okcIaHKM6YfyZkg==} + '@visactor/vrender@1.0.44': + resolution: {integrity: sha512-ozYCl57YxY5MVGFS3Pmwu2Q4+h3y6z1tLVu6fVaan6YDZEc1eFIhvVjskGBRd3lFdbTLdL8xRJh+LdMMoIRodQ==} '@visactor/vscale@0.18.18': resolution: {integrity: sha512-iRG4kv+5Fv4KX3AxEfV95XU3I6OmF0QizyAhqHxKa7L1MaT+MRvDDk5zHWf1E8gialLbL2xDe3GnT6g/4u5jhA==} @@ -13582,8 +13582,8 @@ snapshots: jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@4.9.5)) - jest-runtime: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@4.9.5)) + jest-runner: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + jest-runtime: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) jest-snapshot: 26.6.2 jest-util: 26.6.2 jest-validate: 26.6.2 @@ -13716,6 +13716,20 @@ snapshots: - ts-node - utf-8-validate + '@jest/test-sequencer@26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5))': + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.11 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + jest-runtime: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + '@jest/transform@24.9.0': dependencies: '@babel/core': 7.20.12 @@ -15012,9 +15026,9 @@ snapshots: '@visactor/vrender-core': 1.0.0-alpha.18 '@visactor/vutils': 1.0.4 - '@visactor/vrender-animate@1.0.42': + '@visactor/vrender-animate@1.0.44': dependencies: - '@visactor/vrender-core': 1.0.42 + '@visactor/vrender-core': 1.0.44 '@visactor/vutils': 1.0.23 '@visactor/vrender-components@1.0.0-alpha.18': @@ -15025,11 +15039,11 @@ snapshots: '@visactor/vscale': 1.0.4 '@visactor/vutils': 1.0.4 - '@visactor/vrender-components@1.0.42': + '@visactor/vrender-components@1.0.44': dependencies: - '@visactor/vrender-animate': 1.0.42 - '@visactor/vrender-core': 1.0.42 - '@visactor/vrender-kits': 1.0.42 + '@visactor/vrender-animate': 1.0.44 + '@visactor/vrender-core': 1.0.44 + '@visactor/vrender-kits': 1.0.44 '@visactor/vscale': 1.0.23 '@visactor/vutils': 1.0.23 @@ -15038,7 +15052,7 @@ snapshots: '@visactor/vutils': 1.0.4 color-convert: 2.0.1 - '@visactor/vrender-core@1.0.42': + '@visactor/vrender-core@1.0.44': dependencies: '@visactor/vutils': 1.0.23 color-convert: 2.0.1 @@ -15052,21 +15066,21 @@ snapshots: lottie-web: 5.13.0 roughjs: 4.5.2 - '@visactor/vrender-kits@1.0.42': + '@visactor/vrender-kits@1.0.44': dependencies: '@resvg/resvg-js': 2.4.1 - '@visactor/vrender-core': 1.0.42 + '@visactor/vrender-core': 1.0.44 '@visactor/vutils': 1.0.23 gifuct-js: 2.1.2 lottie-web: 5.13.0 roughjs: 4.6.6 - '@visactor/vrender@1.0.42': + '@visactor/vrender@1.0.44': dependencies: - '@visactor/vrender-animate': 1.0.42 - '@visactor/vrender-components': 1.0.42 - '@visactor/vrender-core': 1.0.42 - '@visactor/vrender-kits': 1.0.42 + '@visactor/vrender-animate': 1.0.44 + '@visactor/vrender-components': 1.0.44 + '@visactor/vrender-core': 1.0.44 + '@visactor/vrender-kits': 1.0.44 '@visactor/vscale@0.18.18': dependencies: @@ -20868,7 +20882,7 @@ snapshots: jest-environment-jsdom: 26.6.2(canvas@2.11.2(encoding@0.1.13)) jest-environment-node: 26.6.2 jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3 + jest-jasmine2: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@4.9.5)) jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-util: 26.6.2 @@ -20886,7 +20900,7 @@ snapshots: jest-config@26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)): dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@4.9.5)) + '@jest/test-sequencer': 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) '@jest/types': 26.6.2 babel-jest: 26.6.3(@babel/core@7.20.12) chalk: 4.1.2 @@ -20896,7 +20910,7 @@ snapshots: jest-environment-jsdom: 26.6.2(canvas@2.11.2(encoding@0.1.13)) jest-environment-node: 26.6.2 jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3 + jest-jasmine2: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) jest-regex-util: 26.0.0 jest-resolve: 26.6.2 jest-util: 26.6.2 @@ -21085,7 +21099,7 @@ snapshots: transitivePeerDependencies: - supports-color - jest-jasmine2@26.6.3: + jest-jasmine2@26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@4.9.5)): dependencies: '@babel/traverse': 7.28.5 '@jest/environment': 26.6.2 @@ -21106,7 +21120,38 @@ snapshots: pretty-format: 26.6.2 throat: 5.0.0 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - ts-node + - utf-8-validate + + jest-jasmine2@26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)): + dependencies: + '@babel/traverse': 7.28.5 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.14.10 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate jest-leak-detector@24.9.0: dependencies: @@ -21254,6 +21299,35 @@ snapshots: - ts-node - utf-8-validate + jest-runner@26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)): + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 20.14.10 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + jest-runtime@24.9.0: dependencies: '@jest/console': 24.9.0 @@ -21318,6 +21392,42 @@ snapshots: - ts-node - utf-8-validate + jest-runtime@26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)): + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.20 + chalk: 4.1.2 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.3 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-config: 26.6.3(canvas@2.11.2(encoding@0.1.13))(ts-node@10.9.0(@types/node@20.14.10)(typescript@5.4.5)) + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + jest-serializer@24.9.0: {} jest-serializer@26.6.2: diff --git a/docs/package.json b/docs/package.json index b5f3f0fa87..193d24886b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -19,8 +19,8 @@ "@visactor/vchart-theme": "~1.6.6", "@visactor/vmind": "1.2.4-alpha.5", "@visactor/vutils": "~1.0.23", - "@visactor/vrender": "~1.0.42", - "@visactor/vrender-kits": "~1.0.42", + "@visactor/vrender": "1.0.44", + "@visactor/vrender-kits": "1.0.44", "@visactor/vtable": "1.19.0-alpha.0", "@visactor/vtable-editors": "1.19.0-alpha.0", "@visactor/vtable-gantt": "1.19.0-alpha.0", diff --git a/packages/openinula-vchart/package.json b/packages/openinula-vchart/package.json index 27a4cefb70..6a2168d547 100644 --- a/packages/openinula-vchart/package.json +++ b/packages/openinula-vchart/package.json @@ -30,8 +30,8 @@ "dependencies": { "@visactor/vchart": "workspace:2.0.19", "@visactor/vutils": "~1.0.23", - "@visactor/vrender-core": "~1.0.42", - "@visactor/vrender-kits": "~1.0.42", + "@visactor/vrender-core": "1.0.44", + "@visactor/vrender-kits": "1.0.44", "react-is": "^18.2.0" }, "devDependencies": { diff --git a/packages/react-vchart/package.json b/packages/react-vchart/package.json index b8fb0eaf90..a82e51a3fb 100644 --- a/packages/react-vchart/package.json +++ b/packages/react-vchart/package.json @@ -31,8 +31,8 @@ "@visactor/vchart": "workspace:2.0.19", "@visactor/vchart-extension": "workspace:2.0.19", "@visactor/vutils": "~1.0.23", - "@visactor/vrender-core": "~1.0.42", - "@visactor/vrender-kits": "~1.0.42", + "@visactor/vrender-core": "1.0.44", + "@visactor/vrender-kits": "1.0.44", "react-is": "^18.2.0" }, "devDependencies": { diff --git a/packages/vchart-extension/package.json b/packages/vchart-extension/package.json index bb5221459d..2728808a75 100644 --- a/packages/vchart-extension/package.json +++ b/packages/vchart-extension/package.json @@ -21,10 +21,10 @@ "start": "ts-node __tests__/runtime/browser/scripts/initVite.ts && vite serve __tests__/runtime/browser" }, "dependencies": { - "@visactor/vrender-core": "~1.0.42", - "@visactor/vrender-kits": "~1.0.42", - "@visactor/vrender-components": "~1.0.42", - "@visactor/vrender-animate": "~1.0.42", + "@visactor/vrender-core": "1.0.44", + "@visactor/vrender-kits": "1.0.44", + "@visactor/vrender-components": "1.0.44", + "@visactor/vrender-animate": "1.0.44", "@visactor/vchart": "workspace:2.0.19", "@visactor/vutils": "~1.0.23", "@visactor/vdataset": "~1.0.23", diff --git a/packages/vchart/package.json b/packages/vchart/package.json index a3ad0cc7a0..6a34da83d7 100644 --- a/packages/vchart/package.json +++ b/packages/vchart/package.json @@ -122,10 +122,10 @@ "@visactor/vdataset": "~1.0.23", "@visactor/vscale": "~1.0.23", "@visactor/vlayouts": "~1.0.23", - "@visactor/vrender-core": "~1.0.42", - "@visactor/vrender-kits": "~1.0.42", - "@visactor/vrender-components": "~1.0.42", - "@visactor/vrender-animate": "~1.0.42", + "@visactor/vrender-core": "1.0.44", + "@visactor/vrender-kits": "1.0.44", + "@visactor/vrender-components": "1.0.44", + "@visactor/vrender-animate": "1.0.44", "@visactor/vutils-extension": "workspace:2.0.19" }, "publishConfig": { diff --git a/packages/vchart/src/component/brush/brush.ts b/packages/vchart/src/component/brush/brush.ts index 22b43a4ccb..d130fc57d1 100644 --- a/packages/vchart/src/component/brush/brush.ts +++ b/packages/vchart/src/component/brush/brush.ts @@ -700,14 +700,29 @@ export class Brush extends BaseComponent i const boundsStart = isHorizontal ? x1 : y1; const boundsEnd = isHorizontal ? x2 : y2; + const range = axis.getScale().range(); + const rangeFactor = axis.scaleRangeFactor() ?? [0, 1]; + + // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上 + // 如果是反向轴, 计算start和end时, 也要保持 start < end + const isAxisReverse = last(range) < range[0]; + const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr]; + const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr]; + const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp); + const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp); + + const start = + ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0]; + const end = + ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0]; + const newStart = this._stateClamp(start - axisRangeExpand); + const newEnd = this._stateClamp(end + axisRangeExpand); + if (this._axisDataZoomMap[axis.id]) { const dataZoom = this._axisDataZoomMap[axis.id]; - const startPercent = - (boundsStart - region.getLayoutStartPoint()[regionStartAttr]) / region.getLayoutRect()[regionSizeAttr]; - const endPercent = - (boundsEnd - region.getLayoutStartPoint()[regionStartAttr]) / region.getLayoutRect()[regionSizeAttr]; - const newStartPercent = this._stateClamp(startPercent - axisRangeExpand); - const newEndPercent = this._stateClamp(endPercent + axisRangeExpand); + + const newStartPercent = isAxisReverse ? 1 - newStart : newStart; + const newEndPercent = isAxisReverse ? 1 - newEnd : newEnd; dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [ 'percent', 'percent' @@ -729,23 +744,6 @@ export class Brush extends BaseComponent i ) }); } else { - const range = axis.getScale().range(); - const rangeFactor = axis.scaleRangeFactor() ?? [0, 1]; - - // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上 - // 如果是反向轴, 计算start和end时, 也要保持 start < end - const isAxisReverse = last(range) < range[0]; - const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr]; - const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr]; - const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp); - const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp); - - const start = - ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0]; - const end = - ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0]; - const newStart = this._stateClamp(start - axisRangeExpand); - const newEnd = this._stateClamp(end + axisRangeExpand); axis.scaleRangeFactor([newStart, newEnd]); axis.effect.scaleUpdate(); diff --git a/packages/vchart/src/component/data-zoom/data-zoom/data-zoom.ts b/packages/vchart/src/component/data-zoom/data-zoom/data-zoom.ts index 74be85dae7..a23dde19e5 100644 --- a/packages/vchart/src/component/data-zoom/data-zoom/data-zoom.ts +++ b/packages/vchart/src/component/data-zoom/data-zoom/data-zoom.ts @@ -108,6 +108,8 @@ export class DataZoom extends DataFilte protected _handleDataCollectionChange() { const data = this._data.getDataView(); data.reRunAllTransform(); + // 数据更新后,重新计算scale的domain和range,保证datazoom组件的预览图和数据保持一致 + this._initAfterLayout(); const domain = this._computeDomainOfValueScale(); @@ -117,6 +119,7 @@ export class DataZoom extends DataFilte } this._valueScale.domain(domain); this._updateValueScaleRange(); + if (this._component) { this._createOrUpdateComponent(true); } @@ -453,10 +456,7 @@ export class DataZoom extends DataFilte protected _createOrUpdateComponent(changeData?: boolean) { if (this._visible) { - const xScale = this._isHorizontal ? this._stateScale : this._valueScale; - const yScale = this._isHorizontal ? this._valueScale : this._stateScale; - const isNeedPreview = - this._isScaleValid(xScale) && this._isScaleValid(yScale) && this._spec.showBackgroundChart !== false; + const isNeedPreview = this._spec.showBackgroundChart !== false; const attrs = this._getAttrs(isNeedPreview); const axis = this._relatedAxisComponent as CartesianAxis; diff --git a/packages/vchart/src/mark/base/base-mark.ts b/packages/vchart/src/mark/base/base-mark.ts index 81d292edee..b6591cb974 100644 --- a/packages/vchart/src/mark/base/base-mark.ts +++ b/packages/vchart/src/mark/base/base-mark.ts @@ -257,13 +257,13 @@ export class BaseMark extends GrammarItem implements IMar protected _stateSort?: (stateA: string, stateB: string) => number; - protected declare _product: Maybe; + declare protected _product: Maybe; getProduct() { return this._product; } // 保存上一次的mark,用于morph的时候获取上次的图元 - protected declare _lastMark?: IMark; + declare protected _lastMark?: IMark; /** 初始化 mark data */ protected initMarkData(option: ICompilableInitOption) { @@ -526,7 +526,7 @@ export class BaseMark extends GrammarItem implements IMar return this._simpleStyle; } - protected declare _option: IMarkOption; + declare protected _option: IMarkOption; protected _attributeContext: IModelMarkAttributeContext; @@ -1152,8 +1152,8 @@ export class BaseMark extends GrammarItem implements IMar this._keyGetter = isFunction(this.key) ? (this.key as (datum: Datum) => string) : isValid(this.key) - ? (datum: Datum) => datum?.[this.key as string] - : (datum: Datum) => datum?.[DEFAULT_DATA_KEY]; + ? (datum: Datum) => datum?.[this.key as string] + : (datum: Datum) => datum?.[DEFAULT_DATA_KEY]; this._groupKeyGetter = isValid(this._groupKey) ? (datum: Datum) => { return `${datum?.[this._groupKey]}`; @@ -1168,8 +1168,8 @@ export class BaseMark extends GrammarItem implements IMar const animationState = graphicsAnimationStates.every(state => state === AnimationStateEnum.appear) ? AnimationStateEnum.appear : graphicsAnimationStates.every(state => state === AnimationStateEnum.disappear) - ? AnimationStateEnum.disappear - : graphicsAnimationStates[0]; + ? AnimationStateEnum.disappear + : graphicsAnimationStates[0]; return animationState ?? AnimationStateEnum.none; } @@ -1190,7 +1190,7 @@ export class BaseMark extends GrammarItem implements IMar ? { ...config, // 循环动画的优先级定为最高,不会被屏蔽掉 - priority: type === 'normal' ? config.priority ?? Infinity : config.priority + priority: type === 'normal' ? (config.priority ?? Infinity) : config.priority } : config; } @@ -1315,8 +1315,8 @@ export class BaseMark extends GrammarItem implements IMar return diffState === AnimationStateEnum.exit ? AnimationStateEnum.exit : diffState === AnimationStateEnum.update - ? AnimationStateEnum.update - : AnimationStateEnum.appear; + ? AnimationStateEnum.update + : AnimationStateEnum.appear; }); const customizedState = callback(g); diff --git a/packages/vchart/src/series/base/base-series.ts b/packages/vchart/src/series/base/base-series.ts index 5214cbbf02..c639b4420a 100644 --- a/packages/vchart/src/series/base/base-series.ts +++ b/packages/vchart/src/series/base/base-series.ts @@ -111,7 +111,7 @@ export abstract class BaseSeries extends BaseModel imp declare getSpecInfo: () => ISeriesSpecInfo; - protected declare _option: ISeriesOption; + declare protected _option: ISeriesOption; // 坐标系信息 readonly coordinate: CoordinateType = 'none'; @@ -240,7 +240,7 @@ export abstract class BaseSeries extends BaseModel imp } protected _dataSet: DataSet; - protected declare _tooltipHelper: ISeriesTooltipHelper | undefined; + declare protected _tooltipHelper: ISeriesTooltipHelper | undefined; get tooltipHelper() { if (!this._tooltipHelper) { this.initTooltip(); @@ -842,8 +842,8 @@ export abstract class BaseSeries extends BaseModel imp const triggerOff = isValid(finalSelectSpec.triggerOff) ? finalSelectSpec.triggerOff : isMultiple - ? ['empty'] - : ['empty', finalSelectSpec.trigger]; + ? ['empty'] + : ['empty', finalSelectSpec.trigger]; return { type: TRIGGER_TYPE_ENUM.ELEMENT_SELECT as string, trigger: finalSelectSpec.trigger as GraphicEventType, @@ -1282,7 +1282,7 @@ export abstract class BaseSeries extends BaseModel imp attributeContext: this._markAttributeContext, componentType: option.componentType, noSeparateStyle, - parent: parent !== false ? parent ?? this._rootMark : null + parent: parent !== false ? (parent ?? this._rootMark) : null }); if (isValid(m)) { diff --git a/tools/story-player/package.json b/tools/story-player/package.json index 5e687d15f2..081c27ce9a 100644 --- a/tools/story-player/package.json +++ b/tools/story-player/package.json @@ -56,10 +56,10 @@ "vite": "3.2.6" }, "dependencies": { - "@visactor/vrender-core": "~1.0.42", - "@visactor/vrender-kits": "~1.0.42", + "@visactor/vrender-core": "1.0.44", + "@visactor/vrender-kits": "1.0.44", "@visactor/vchart": "workspace:2.0.19", - "@visactor/vrender": "~1.0.42", + "@visactor/vrender": "1.0.44", "@visactor/vutils": "~1.0.23" } } \ No newline at end of file