@visactor/vchart 1.1.0-beta.1 → 1.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +28508 -38879
- package/build/index.min.js +15 -3
- package/cjs/animation/config.js +1 -1
- package/cjs/animation/config.js.map +1 -1
- package/cjs/animation/utils.d.ts +2 -0
- package/cjs/animation/utils.js +20 -6
- package/cjs/animation/utils.js.map +1 -1
- package/cjs/chart/bar/bar.d.ts +1 -0
- package/cjs/chart/bar/bar.js +7 -0
- package/cjs/chart/bar/bar.js.map +1 -1
- package/cjs/chart/polar/rose-like.js.map +1 -1
- package/cjs/chart/radar/radar.js +10 -1
- package/cjs/chart/radar/radar.js.map +1 -1
- package/cjs/chart/rose/rose.js +11 -2
- package/cjs/chart/rose/rose.js.map +1 -1
- package/cjs/compile/compiler.d.ts +1 -0
- package/cjs/compile/compiler.js +10 -4
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/component/common/trigger/config.d.ts +0 -2
- package/cjs/component/common/trigger/config.js +0 -2
- package/cjs/component/common/trigger/config.js.map +1 -1
- package/cjs/component/common/trigger/desktop.js +1 -1
- package/cjs/component/common/trigger/desktop.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +13 -13
- package/cjs/component/crosshair/base.js +21 -21
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +4 -4
- package/cjs/component/crosshair/cartesian.js +22 -8
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +4 -4
- package/cjs/component/crosshair/polar.js +8 -8
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/crosshair/util.d.ts +2 -0
- package/cjs/component/crosshair/util.js +12 -1
- package/cjs/component/crosshair/util.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/interface.d.ts +13 -13
- package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/interface.d.ts +2 -3
- package/cjs/component/data-zoom/scroll-bar/interface.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js +2 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/index.js +1 -2
- package/cjs/component/label/bar.d.ts +4 -1
- package/cjs/component/label/bar.js +2 -2
- package/cjs/component/label/bar.js.map +1 -1
- package/cjs/component/label/label.js +5 -4
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/symbol.d.ts +5 -1
- package/cjs/component/label/symbol.js +8 -11
- package/cjs/component/label/symbol.js.map +1 -1
- package/cjs/component/legend/discrete/interface.d.ts +2 -0
- package/cjs/component/legend/discrete/interface.js.map +1 -1
- package/cjs/component/legend/discrete/legend.d.ts +2 -0
- package/cjs/component/legend/discrete/legend.js +15 -2
- package/cjs/component/legend/discrete/legend.js.map +1 -1
- package/cjs/component/map-label/component.js +0 -1
- package/cjs/component/map-label/component.js.map +1 -1
- package/cjs/component/marker/interface.d.ts +6 -5
- package/cjs/component/marker/interface.js.map +1 -1
- package/cjs/component/marker/mark-area/interface/theme.d.ts +2 -2
- package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-area/mark-area.js +10 -9
- package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/interface/theme.d.ts +2 -2
- package/cjs/component/marker/mark-line/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-line/mark-line.js +16 -15
- package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/interface/theme.d.ts +3 -3
- package/cjs/component/marker/mark-point/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-point/mark-point.js +14 -13
- package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/style-constants.d.ts +1 -0
- package/cjs/component/tooltip/handler/dom/model/style-constants.js +3 -1
- package/cjs/component/tooltip/handler/dom/model/style-constants.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/util.js +7 -7
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/get-spec.js +22 -8
- package/cjs/component/tooltip/handler/utils/get-spec.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +9 -9
- package/cjs/component/tooltip/tooltip.js +20 -20
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/constant/box-plot.js +2 -1
- package/cjs/core/factory.js +1 -2
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +2 -1
- package/cjs/data/transforms/dimension-statistics.js +1 -0
- package/cjs/data/transforms/dimension-statistics.js.map +1 -1
- package/cjs/data/transforms/legend-data/discrete/discrete.js +5 -2
- package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
- package/cjs/data/transforms/legend-data/discrete/interface.d.ts +1 -0
- package/cjs/data/transforms/legend-data/discrete/interface.js.map +1 -1
- package/cjs/event/event.js +2 -1
- package/cjs/interaction/zoom/zoomable.js +7 -10
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/layout/base-layout.js +1 -2
- package/cjs/model/base-model.d.ts +1 -1
- package/cjs/model/base-model.js +2 -2
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +11 -1
- package/cjs/series/base/base-series.js +19 -13
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/cartesian/cartesian.js +7 -1
- package/cjs/series/cartesian/cartesian.js.map +1 -1
- package/cjs/series/interface/series.d.ts +11 -4
- package/cjs/series/interface/series.js.map +1 -1
- package/cjs/series/line/interface.d.ts +1 -1
- package/cjs/series/line/interface.js.map +1 -1
- package/cjs/series/line/line.d.ts +2 -6
- package/cjs/series/line/line.js +6 -17
- package/cjs/series/line/line.js.map +1 -1
- package/cjs/series/progress/linear/linear.js +50 -30
- package/cjs/series/progress/linear/linear.js.map +1 -1
- package/cjs/series/scatter/interface.d.ts +1 -1
- package/cjs/series/scatter/interface.js.map +1 -1
- package/cjs/theme/buildin-theme/light/component/tooltip.js +0 -1
- package/cjs/theme/buildin-theme/light/component/tooltip.js.map +1 -1
- package/esm/animation/config.js +1 -1
- package/esm/animation/config.js.map +1 -1
- package/esm/animation/utils.d.ts +2 -0
- package/esm/animation/utils.js +18 -5
- package/esm/animation/utils.js.map +1 -1
- package/esm/chart/bar/bar.d.ts +1 -0
- package/esm/chart/bar/bar.js +7 -0
- package/esm/chart/bar/bar.js.map +1 -1
- package/esm/chart/polar/rose-like.js.map +1 -1
- package/esm/chart/radar/radar.js +10 -2
- package/esm/chart/radar/radar.js.map +1 -1
- package/esm/chart/rose/rose.js +11 -1
- package/esm/chart/rose/rose.js.map +1 -1
- package/esm/compile/compiler.d.ts +1 -0
- package/esm/compile/compiler.js +11 -5
- package/esm/compile/compiler.js.map +1 -1
- package/esm/component/common/trigger/config.d.ts +0 -2
- package/esm/component/common/trigger/config.js +0 -2
- package/esm/component/common/trigger/config.js.map +1 -1
- package/esm/component/common/trigger/desktop.js +1 -1
- package/esm/component/common/trigger/desktop.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +13 -13
- package/esm/component/crosshair/base.js +21 -21
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +4 -4
- package/esm/component/crosshair/cartesian.js +23 -9
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +4 -4
- package/esm/component/crosshair/polar.js +8 -8
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/crosshair/util.d.ts +2 -0
- package/esm/component/crosshair/util.js +10 -0
- package/esm/component/crosshair/util.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/interface.d.ts +13 -13
- package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/interface.d.ts +2 -3
- package/esm/component/data-zoom/scroll-bar/interface.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js +2 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/index.js +1 -2
- package/esm/component/label/bar.d.ts +4 -1
- package/esm/component/label/bar.js +3 -3
- package/esm/component/label/bar.js.map +1 -1
- package/esm/component/label/label.js +5 -4
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/symbol.d.ts +5 -1
- package/esm/component/label/symbol.js +5 -6
- package/esm/component/label/symbol.js.map +1 -1
- package/esm/component/legend/discrete/interface.d.ts +2 -0
- package/esm/component/legend/discrete/interface.js.map +1 -1
- package/esm/component/legend/discrete/legend.d.ts +2 -0
- package/esm/component/legend/discrete/legend.js +16 -3
- package/esm/component/legend/discrete/legend.js.map +1 -1
- package/esm/component/map-label/component.js +0 -1
- package/esm/component/map-label/component.js.map +1 -1
- package/esm/component/marker/interface.d.ts +6 -5
- package/esm/component/marker/interface.js.map +1 -1
- package/esm/component/marker/mark-area/interface/theme.d.ts +2 -2
- package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-area/mark-area.js +10 -9
- package/esm/component/marker/mark-area/mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/interface/theme.d.ts +2 -2
- package/esm/component/marker/mark-line/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-line/mark-line.js +16 -15
- package/esm/component/marker/mark-line/mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/interface/theme.d.ts +3 -3
- package/esm/component/marker/mark-point/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-point/mark-point.js +14 -13
- package/esm/component/marker/mark-point/mark-point.js.map +1 -1
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/content-column-model.js +2 -2
- package/esm/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/style-constants.d.ts +1 -0
- package/esm/component/tooltip/handler/dom/model/style-constants.js +4 -0
- package/esm/component/tooltip/handler/dom/model/style-constants.js.map +1 -1
- package/esm/component/tooltip/handler/dom/util.js +7 -7
- package/esm/component/tooltip/handler/dom/util.js.map +1 -1
- package/esm/component/tooltip/handler/utils/get-spec.js +22 -8
- package/esm/component/tooltip/handler/utils/get-spec.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +9 -9
- package/esm/component/tooltip/tooltip.js +20 -20
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/constant/box-plot.js +2 -1
- package/esm/core/factory.js +1 -2
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +2 -1
- package/esm/data/transforms/dimension-statistics.js +2 -1
- package/esm/data/transforms/dimension-statistics.js.map +1 -1
- package/esm/data/transforms/legend-data/discrete/discrete.js +5 -2
- package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
- package/esm/data/transforms/legend-data/discrete/interface.d.ts +1 -0
- package/esm/data/transforms/legend-data/discrete/interface.js.map +1 -1
- package/esm/event/event.js +2 -1
- package/esm/interaction/zoom/zoomable.js +7 -10
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/layout/base-layout.js +1 -2
- package/esm/model/base-model.d.ts +1 -1
- package/esm/model/base-model.js +2 -2
- package/esm/model/base-model.js.map +1 -1
- package/esm/series/base/base-series.d.ts +11 -1
- package/esm/series/base/base-series.js +19 -13
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/cartesian/cartesian.js +7 -1
- package/esm/series/cartesian/cartesian.js.map +1 -1
- package/esm/series/interface/series.d.ts +11 -4
- package/esm/series/interface/series.js.map +1 -1
- package/esm/series/line/interface.d.ts +1 -1
- package/esm/series/line/interface.js.map +1 -1
- package/esm/series/line/line.d.ts +2 -6
- package/esm/series/line/line.js +5 -18
- package/esm/series/line/line.js.map +1 -1
- package/esm/series/progress/linear/linear.js +51 -29
- package/esm/series/progress/linear/linear.js.map +1 -1
- package/esm/series/scatter/interface.d.ts +1 -1
- package/esm/series/scatter/interface.js.map +1 -1
- package/esm/theme/buildin-theme/light/component/tooltip.js +0 -1
- package/esm/theme/buildin-theme/light/component/tooltip.js.map +1 -1
- package/package.json +4 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/dimension-statistics.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/dimension-statistics.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,qCAAyE;AAG5D,QAAA,iBAAiB,GAAG;IAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;IAC3B,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE;IAEvB,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;IACnC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;CACpC,CAAC;AACW,QAAA,wBAAwB,GAAG;IACtC,GAAG,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,yBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,GAAG,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,yBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzC,WAAW,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,yBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,WAAW,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,yBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAEF,SAAS,aAAa,CAAC,IAAS,EAAE,KAAU;IAC1C,IAAI,CAAC,IAAA,yBAAkB,EAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,aAAa,CAAC,IAAS,EAAE,KAAU;IAC1C,IAAI,CAAC,IAAA,yBAAkB,EAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAS,EAAE,QAAa;IAClD,MAAM,gBAAgB,GAAG,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,yBAAkB,EAAC,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAS,EAAE,QAAa;IAClD,MAAM,gBAAgB,GAAG,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,yBAAkB,EAAC,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAiB,EAAE,KAAU;IACrD,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAEY,QAAA,gBAAgB,GAAG;IAC9B,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,gBAAgB;IAExB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,kBAAkB;CAChC,CAAC;AAoBK,MAAM,mBAAmB,GAAG,CAAC,IAAqB,EAAE,EAAqB,EAAE,EAAE;;IAClF,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACvB,IAAI,IAAA,iBAAU,EAAC,MAAM,CAAC,EAAE;QACtB,MAAM,GAAG,MAAM,EAAE,CAAC;KACnB;IACD,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE;QACpC,OAAO,MAAM,CAAC;KACf;IAGD,MAAM,GAAG,IAAA,kBAAW,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACpE,MAAM,UAAU,GAAG,MAAA,MAAA,IAAI,CAAC,CAAC,CAAC,EAAC,SAAS,kDAInC,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAEjB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnB,MAAM,cAAc,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAExB,IAAI,CAAC,CAAC,SAAS,EAAE;gBACf,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;aACjC;iBAAM;gBACL,IAAI,cAAc,IAAI,cAAc,CAAC,sBAAsB,IAAI,CAAC,IAAA,cAAK,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE;oBAC5F,IAAI,EAAE,KAAK,KAAK,EAAE;wBAChB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAI,cAAc,CAAC,MAAmB,CAAC,CAAC;wBACrE,OAAO;qBACR;oBACD,IAAI,EAAE,KAAK,KAAK,EAAE;wBAChB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAI,cAAc,CAAC,MAAmB,CAAC,CAAC;wBACrE,OAAO;qBACR;oBACD,IAAI,EAAE,KAAK,QAAQ,EAAE;wBACnB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;wBAC/C,OAAO;qBACR;iBACF;gBACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,yBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;gBAE5C,UAAU,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;oBAC5B,MAAM,KAAK,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,wBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,gCAAwB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpE,IAAI,EAAE,KAAK,WAAW,EAAE;oBACtB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;iBACvC;gBACD,IAAI,EAAE,KAAK,WAAW,EAAE;oBACtB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;iBACvC;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA9DW,QAAA,mBAAmB,uBA8D9B","file":"dimension-statistics.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IFieldsMeta } from '../../typings/spec';\nimport { couldBeValidNumber, isFunction, mergeFields } from '../../util';\nimport type { DataView } from '@visactor/vdataset';\n\nexport const StatisticsDefault = {\n min: () => Number.MAX_VALUE,\n max: () => Number.MIN_VALUE,\n values: () => new Set(),\n //计算数组形式的data中的最大最小值\n 'array-min': () => Number.MAX_VALUE,\n 'array-max': () => Number.MIN_VALUE\n};\nexport const StatisticsValueTransform = {\n min: (v: any) => (v === StatisticsDefault.min() ? 0 : v),\n max: (v: any) => (v === StatisticsDefault.max() ? 0 : v),\n values: (v: Set<string>) => Array.from(v),\n //计算数组形式的data中的最大最小值\n 'array-min': (v: any) => (v === StatisticsDefault.min() ? 0 : v),\n 'array-max': (v: any) => (v === StatisticsDefault.max() ? 0 : v)\n};\n\nfunction StatisticsMin(last: any, value: any) {\n if (!couldBeValidNumber(value)) {\n return last;\n }\n return Math.min(last, value);\n}\nfunction StatisticsMax(last: any, value: any) {\n if (!couldBeValidNumber(value)) {\n return last;\n }\n return Math.max(last, value);\n}\n\nfunction StatisticsArrayMin(last: any, valueArr: any) {\n const filteredValueArr = (valueArr ?? []).filter((v: any) => couldBeValidNumber(v));\n if (filteredValueArr.length === 0) {\n return last;\n }\n return Math.min(last, ...filteredValueArr);\n}\n\nfunction StatisticsArrayMax(last: any, valueArr: any) {\n const filteredValueArr = (valueArr ?? []).filter((v: any) => couldBeValidNumber(v));\n if (filteredValueArr.length === 0) {\n return last;\n }\n return Math.max(last, ...filteredValueArr);\n}\n\nfunction StatisticsValues(last: Set<string>, value: any) {\n if (value === undefined) {\n return last;\n }\n if (last.has(value)) {\n return last;\n }\n last.add(value);\n return last;\n}\n\nexport const StatisticsMethod = {\n min: StatisticsMin,\n max: StatisticsMax,\n values: StatisticsValues,\n //计算数组形式的data中的最大最小值\n 'array-min': StatisticsArrayMin,\n 'array-max': StatisticsArrayMax\n};\n\nexport type StatisticOperations = Array<'max' | 'min' | 'values' | 'array-max' | 'array-min'>;\n\nexport interface IStatisticsOption {\n fields: {\n key: string;\n operations: StatisticOperations;\n customize?: { max: number; min: number } | any[];\n }[];\n // operations: Array<'max' | 'min' | 'values'>;\n target?: 'parser' | 'latest';\n}\n\n/**\n * 聚合统计主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果\n * @param data\n * @param options\n * @returns\n */\nexport const dimensionStatistics = (data: Array<DataView>, op: IStatisticsOption) => {\n const result = {};\n // const operations = op.operations;\n let fields = op.fields;\n if (isFunction(fields)) {\n fields = fields();\n }\n if (!fields?.length || !data?.length) {\n return result;\n }\n\n // merge same key\n fields = mergeFields([], fields);\n\n const dataKey = op.target === 'parser' ? 'parserData' : 'latestData';\n const latestData = data[0][dataKey] ? data[0][dataKey] : data || [];\n const dataFields = data[0].getFields?.() as Record<\n /** 字段key */\n string,\n IFieldsMeta\n >;\n fields.forEach(f => {\n // NOTE: the same key in fields has been merge already\n result[f.key] = {};\n const dataFiledInKey = dataFields?.[f.key];\n // default value\n f.operations.forEach(op => {\n // @chensij 如果指定了计算的domain结果,则忽略计算(目前该逻辑仅在dot series中维护,因为dot series期望在filter data之后x轴改变domain,y轴不改变domain)\n if (f.customize) {\n result[f.key][op] = f.customize;\n } else {\n if (dataFiledInKey && dataFiledInKey.lockStatisticsByDomain && !isNil(dataFiledInKey.domain)) {\n if (op === 'min') {\n result[f.key][op] = Math.min(...(dataFiledInKey.domain as number[]));\n return;\n }\n if (op === 'max') {\n result[f.key][op] = Math.max(...(dataFiledInKey.domain as number[]));\n return;\n }\n if (op === 'values') {\n result[f.key][op] = [...dataFiledInKey.domain];\n return;\n }\n }\n result[f.key][op] = StatisticsDefault[op]();\n\n latestData.forEach((d: any) => {\n const value = d?.[f.key];\n result[f.key][op] = StatisticsMethod[op](result[f.key][op], value);\n });\n result[f.key][op] = StatisticsValueTransform[op](result[f.key][op]);\n if (op === 'array-max') {\n result[f.key].max = result[f.key][op];\n }\n if (op === 'array-min') {\n result[f.key].min = result[f.key][op];\n }\n }\n });\n });\n return result;\n};\n"]}
|
|
@@ -5,9 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
}), exports.discreteLegendFilter = exports.discreteLegendDataMake = void 0;
|
|
6
6
|
|
|
7
7
|
const vutils_1 = require("@visactor/vutils"), discreteLegendDataMake = (data, op) => {
|
|
8
|
-
const result = {}, {series: series} = op;
|
|
8
|
+
const result = {}, {series: series, seriesField: seriesField} = op;
|
|
9
9
|
return series().forEach((s => {
|
|
10
|
-
s
|
|
10
|
+
const field = seriesField(s);
|
|
11
|
+
let infoList;
|
|
12
|
+
infoList = field === s.getSeriesField() ? s.getSeriesInfoList() : s.getSeriesInfoInField(field),
|
|
13
|
+
infoList.forEach((info => {
|
|
11
14
|
result[info.key] || (result[info.key] = info);
|
|
12
15
|
}));
|
|
13
16
|
})), Object.values(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAIpC,MAAM,sBAAsB,GAAG,CAAC,IAAoB,EAAE,EAAiC,EAAE,EAAE;IAChG,MAAM,MAAM,GAER,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAIpC,MAAM,sBAAsB,GAAG,CAAC,IAAoB,EAAE,EAAiC,EAAE,EAAE;IAChG,MAAM,MAAM,GAER,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACnB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;YAChC,QAAQ,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;SAClC;aAAM;YACL,QAAQ,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAC1C;QACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO;aACR;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AArBW,QAAA,sBAAsB,0BAqBjC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAgB,EAAE,EAA+B,EAAE,EAAE;IACxF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAChC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE;QAClD,OAAO,EAAE,CAAC;KACX;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,IAAI,IAAA,gBAAO,EAAC,UAAU,CAAC,EAAE;QACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;KACjE;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AArBW,QAAA,oBAAoB,wBAqB/B","file":"discrete.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';\n\nexport const discreteLegendDataMake = (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => {\n const result: {\n [key in string]: IDiscreteLegendData;\n } = {};\n const { series, seriesField } = op;\n series().forEach(s => {\n const field = seriesField(s);\n let infoList;\n if (field === s.getSeriesField()) {\n infoList = s.getSeriesInfoList();\n } else {\n infoList = s.getSeriesInfoInField(field);\n }\n infoList.forEach(info => {\n if (result[info.key]) {\n return;\n }\n result[info.key] = info;\n });\n });\n return Object.values(result);\n};\n\nexport const discreteLegendFilter = (data: Array<any>, op: IDiscreteLegendFilterOption) => {\n const { selected, field, data: legendData } = op;\n const selectedData = selected();\n const legendKeys = legendData(); // 全量的图例项\n if (selectedData.length === 0 && legendKeys.length) {\n return [];\n }\n\n if (selectedData.length === legendKeys.length) {\n return data;\n }\n\n const selectedFilter = {};\n selectedData.forEach(s => {\n selectedFilter[s] = true;\n });\n const datumField = field();\n if (isValid(datumField)) {\n data = data.filter(d => selectedFilter[d[datumField]] === true);\n }\n return data;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n}\n\nexport interface IDiscreteLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n seriesField: (s: ISeries) => string;\n}\n\nexport interface IDiscreteLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
|
package/cjs/event/event.js
CHANGED
|
@@ -24,28 +24,25 @@ class Zoomable {
|
|
|
24
24
|
consume: !0
|
|
25
25
|
}, (params => {
|
|
26
26
|
if (!params.event) return;
|
|
27
|
-
const
|
|
27
|
+
const event = params.event.clone();
|
|
28
28
|
this._zoomableTrigger.parserZoomEvent(event);
|
|
29
29
|
const {zoomDelta: zoomDelta, zoomX: zoomX, zoomY: zoomY} = event;
|
|
30
|
-
|
|
31
|
-
if (!(0, util_1.isPointInRect)({
|
|
30
|
+
(0, vutils_1.isNil)(zoomDelta) || (0, util_1.isPointInRect)({
|
|
32
31
|
x: zoomX,
|
|
33
32
|
y: zoomY
|
|
34
|
-
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint()))
|
|
35
|
-
this._clickEnable = !1;
|
|
36
|
-
const scale = zoomDelta;
|
|
33
|
+
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint())) && (this._clickEnable = !1,
|
|
37
34
|
callback && callback({
|
|
38
35
|
zoomDelta: zoomDelta,
|
|
39
36
|
zoomX: zoomX,
|
|
40
37
|
zoomY: zoomY
|
|
41
38
|
}, event), this._eventObj.emit("zoom", {
|
|
42
|
-
scale:
|
|
39
|
+
scale: event.zoomDelta,
|
|
43
40
|
scaleCenter: {
|
|
44
|
-
x: zoomX,
|
|
45
|
-
y: zoomY
|
|
41
|
+
x: event.zoomX,
|
|
42
|
+
y: event.zoomY
|
|
46
43
|
},
|
|
47
44
|
model: this
|
|
48
|
-
});
|
|
45
|
+
}));
|
|
49
46
|
}));
|
|
50
47
|
}
|
|
51
48
|
initZoomEventOfSeries(s, callback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil } from '@visactor/vutils';\nimport type { BaseEventParams, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport { isPointInRect } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\n\nexport interface IZoomEventOptions {\n shouldZoom?: boolean;\n zoomCallback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void;\n shouldScroll?: boolean;\n scrollCallback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void;\n}\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => void;\n\n initDragEventOfSeries: (s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) => any;\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n this._clickEnable = true;\n this._zoomableTrigger = new (this.getTriggerEvent('trigger') as any)();\n }\n\n // event\n private getTriggerEvent(type: string): EventType {\n return defaultTriggerEvent[this._renderMode][type];\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this.getTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }, params => {\n this._zoomableTrigger.clearZoom();\n });\n eventObj.on(this.getTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n const { event } = params as BaseEventParams;\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY } = event as any;\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n const scale = zoomDelta;\n\n if (callback) {\n callback({ zoomDelta, zoomX, zoomY }, event);\n }\n\n this._eventObj.emit('zoom', {\n scale,\n scaleCenter: { x: zoomX, y: zoomY },\n model: this\n } as unknown as ExtendEventParam);\n\n // this._eventObj.emit('scroll', {\n // scrollX: event.scrollX,\n // scrollY: event.scrollY,\n // model: this\n // } as unknown as ExtendEventParam);\n });\n }\n\n initZoomEventOfSeries(\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n this._bindZoomEventAsRegion(s.event, s, callback);\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n this._bindScrollEventAsRegion(s.event, s, callback);\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this.getTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }, params => {\n this._zoomableTrigger.clearScroll();\n });\n eventObj.on(this.getTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n const { event } = params as BaseEventParams;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n callback({ scrollX, scrollY }, event);\n }\n\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n });\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this.getTriggerEvent('start'), { level: Event_Bubble_Level.chart }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n\n const { event } = params as BaseEventParams;\n const shouldTrigger = isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback);\n }\n });\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) {\n s.event.on(\n this.getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this.getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n s.event.on('click', { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id }, () => {\n return !this._clickEnable;\n });\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n this._clickEnable = true;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const move = this.getTriggerEvent('move');\n const end = this.getTriggerEvent('end');\n const event = params.event as any;\n let x = event.canvasX;\n let y = event.canvasY;\n\n const mouseup = () => {\n this._zoomableTrigger.pointerId = null;\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n mousemove as unknown as any\n );\n this._eventObj.off(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.window }, mouseup);\n };\n const mousemove = (params: BaseEventParams) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n const event = params.event as any;\n const dx = event.canvasX - x;\n const dy = event.canvasY - y;\n const delta: [number, number] = [dx, dy];\n\n x = event.canvasX;\n y = event.canvasY;\n\n if (callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n };\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n mousemove as unknown as any\n );\n this._eventObj.on(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mouseup);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil } from '@visactor/vutils';\nimport type { BaseEventParams, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport { isPointInRect } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\n\nexport interface IZoomEventOptions {\n shouldZoom?: boolean;\n zoomCallback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void;\n shouldScroll?: boolean;\n scrollCallback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void;\n}\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => void;\n\n initDragEventOfSeries: (s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) => any;\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n this._clickEnable = true;\n this._zoomableTrigger = new (this.getTriggerEvent('trigger') as any)();\n }\n\n // event\n private getTriggerEvent(type: string): EventType {\n return defaultTriggerEvent[this._renderMode][type];\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this.getTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }, params => {\n this._zoomableTrigger.clearZoom();\n });\n eventObj.on(this.getTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n const event = (params as BaseEventParams).event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY } = event as any;\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n // zoomDelta, zoomX, zoomY can be changed in the callback\n callback({ zoomDelta, zoomX, zoomY }, event);\n }\n\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n model: this\n } as unknown as ExtendEventParam);\n\n // this._eventObj.emit('scroll', {\n // scrollX: event.scrollX,\n // scrollY: event.scrollY,\n // model: this\n // } as unknown as ExtendEventParam);\n });\n }\n\n initZoomEventOfSeries(\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n this._bindZoomEventAsRegion(s.event, s, callback);\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n this._bindScrollEventAsRegion(s.event, s, callback);\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this.getTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }, params => {\n this._zoomableTrigger.clearScroll();\n });\n eventObj.on(this.getTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n const { event } = params as BaseEventParams;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n callback({ scrollX, scrollY }, event);\n }\n\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n });\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this.getTriggerEvent('start'), { level: Event_Bubble_Level.chart }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n\n const { event } = params as BaseEventParams;\n const shouldTrigger = isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback);\n }\n });\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) {\n s.event.on(\n this.getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this.getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n s.event.on('click', { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id }, () => {\n return !this._clickEnable;\n });\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n this._clickEnable = true;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const move = this.getTriggerEvent('move');\n const end = this.getTriggerEvent('end');\n const event = params.event as any;\n let x = event.canvasX;\n let y = event.canvasY;\n\n const mouseup = () => {\n this._zoomableTrigger.pointerId = null;\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n mousemove as unknown as any\n );\n this._eventObj.off(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.window }, mouseup);\n };\n const mousemove = (params: BaseEventParams) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n const event = params.event as any;\n const dx = event.canvasX - x;\n const dy = event.canvasY - y;\n const delta: [number, number] = [dx, dy];\n\n x = event.canvasX;\n y = event.canvasY;\n\n if (callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n };\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n mousemove as unknown as any\n );\n this._eventObj.on(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mouseup);\n }\n}\n"]}
|
|
@@ -45,7 +45,7 @@ export declare abstract class BaseModel extends LayoutItem implements IModel {
|
|
|
45
45
|
protected _isLayout: boolean;
|
|
46
46
|
constructor(spec: IModelSpec, option: IModelOption);
|
|
47
47
|
coordinate?: CoordinateType;
|
|
48
|
-
protected
|
|
48
|
+
protected _releaseEvent(): void;
|
|
49
49
|
created(): void;
|
|
50
50
|
updateState(newState: Record<string, unknown>): Promise<void>;
|
|
51
51
|
init(option: IModelInitOption): void;
|
package/cjs/model/base-model.js
CHANGED
|
@@ -58,7 +58,7 @@ class BaseModel extends layout_item_1.LayoutItem {
|
|
|
58
58
|
stateKeyToSignalName: this.stateKeyToSignalName.bind(this)
|
|
59
59
|
}));
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
_releaseEvent() {
|
|
62
62
|
this.event.release();
|
|
63
63
|
}
|
|
64
64
|
created() {
|
|
@@ -85,7 +85,7 @@ class BaseModel extends layout_item_1.LayoutItem {
|
|
|
85
85
|
onDataUpdate() {}
|
|
86
86
|
release() {
|
|
87
87
|
var _a;
|
|
88
|
-
this.
|
|
88
|
+
this._releaseEvent(), this._originalSpec = {}, this._spec = {}, this.getMarks().forEach((m => m.release())),
|
|
89
89
|
this.state.release(), null === (_a = this._data) || void 0 === _a || _a.release(),
|
|
90
90
|
this._data = this._specIndex = this._sceneNodeMap = null, this._marks.clear(), super.release();
|
|
91
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model/base-model.ts"],"names":[],"mappings":"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","file":"base-model.js","sourcesContent":["import { createID, isValid, cloneDeepSpec } from '../util';\nimport { Event } from '../event/event';\nimport type { IEvent } from '../event/interface';\nimport { LayoutItem } from './layout-item';\nimport type {\n IEffect,\n IModel,\n IModelInitOption,\n IModelOption,\n IModelRenderOption,\n IModelEvaluateOption,\n IModelSpec,\n ILayoutRect,\n IModelMarkInfo\n} from './interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IMark, IMarkOption, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { Datum, StateValueType, ConvertToMarkStyleSpec, ICommonSpec, StringOrNumber, IRect } from '../typings';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { CompilableData } from '../compile/data/compilable-data';\nimport { ModelStateManager } from './model-state-manager';\nimport { PREFIX } from '../constant';\nimport type { IElement, IGroupMark, IMark as IVGrammarMark } from '@visactor/vgrammar';\nimport { array, isArray, isEqual, isFunction, isNil, isObject, merge } from '@visactor/vutils';\nimport { Factory } from '../core/factory';\nimport { getActualColor, isColorKey } from '../theme/color-scheme/util';\nimport type { SeriesTypeEnum } from '../series/interface';\nimport { MarkSet } from '../mark/mark-set';\n\nexport abstract class BaseModel extends LayoutItem implements IModel {\n readonly type: string = 'null';\n readonly modelType: string = 'null';\n\n readonly id;\n\n userId: StringOrNumber | undefined = undefined;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // 数据\n protected _data: CompilableData = null;\n getData() {\n return this._data;\n }\n\n protected declare _spec: any;\n getSpec(): any {\n return this._spec;\n }\n\n protected _specIndex: number = 0;\n getSpecIndex() {\n return this._specIndex;\n }\n\n readonly specKey: string = '';\n\n protected _originalSpec: any;\n\n protected declare _option: IModelOption;\n getOption() {\n return this._option;\n }\n\n protected _sceneNodeMap: Map<string, IElement>;\n\n protected _marks: MarkSet = new MarkSet();\n getMarks(): IMark[] {\n return this._marks?.getMarks() ?? [];\n }\n getMarkNameMap() {\n return this._marks?.getMarkNameMap();\n }\n getMarkSet() {\n return this._marks;\n }\n getMarkInfoList(): IModelMarkInfo[] {\n return this.getMarks().map(mark => ({\n type: mark.type as MarkTypeEnum,\n name: mark.name\n }));\n }\n\n getChart() {\n return this._option.getChart();\n }\n\n /** 状态管理器 */\n state: ModelStateManager;\n getState() {\n return this.state._stateMap;\n }\n\n protected _theme?: any; // 非全局 theme,是对应于具体 model 的 theme 对象\n\n /** for layout diff */\n protected _lastLayoutRect: ILayoutRect = null;\n\n protected _tooltipHelper: ITooltipHelper | undefined;\n get tooltipHelper() {\n return this._tooltipHelper;\n }\n\n // TODO: 有些hack,这个tag是为了避免布局逻辑中,轴的数据变化,又由数据变化触发重新布局\n protected _isLayout: boolean = true;\n\n constructor(spec: IModelSpec, option: IModelOption) {\n super(option);\n this.id = createID();\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n this.userId = spec.id;\n this._specIndex = option.specIndex ?? 0;\n this.specKey = option.specKey ?? '';\n this.effect = {};\n this.event = new Event(option.eventDispatcher, option.mode);\n option.map?.set(this.id, this);\n this._sceneNodeMap = new Map();\n this.state = new ModelStateManager({\n ...option,\n stateKeyToSignalName: this.stateKeyToSignalName.bind(this)\n });\n }\n coordinate?: CoordinateType;\n\n protected releaseEvent() {\n this.event.release();\n }\n\n created() {\n this._initTheme();\n this.setAttrFromSpec();\n }\n\n updateState(newState: Record<string, unknown>) {\n return this.state.updateState(newState);\n }\n\n init(option: IModelInitOption) {\n // do nothing\n }\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n this._isLayout = true;\n }\n onLayoutEnd(ctx: any): void {\n // diff layoutRect\n const layoutRect = this.getLayoutRect();\n if (this._forceLayoutTag || !isEqual(this._lastLayoutRect, layoutRect)) {\n this.updateLayoutAttribute();\n }\n this._forceLayoutTag = false;\n this.getMarks().forEach(m => m.updateLayoutState(true, true));\n this._isLayout = false;\n }\n\n protected _forceLayout() {\n if (this._isLayout) {\n return;\n }\n this._forceLayoutTag = true;\n this._option.globalInstance.getChart()?.setLayoutTag(true);\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption) {\n // do nothing\n }\n abstract onRender(ctx: IModelRenderOption): void;\n\n onDataUpdate() {\n // do nothing\n }\n\n release() {\n this.releaseEvent();\n this._originalSpec = {};\n this._spec = {};\n this.getMarks().forEach(m => m.release());\n this.state.release();\n this._data?.release();\n this._data = this._specIndex = this._sceneNodeMap = null;\n this._marks.clear();\n super.release();\n }\n\n updateSpec(spec: any) {\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n return result;\n }\n\n reInit(theme?: any) {\n this._initTheme(theme);\n this.setAttrFromSpec();\n }\n\n protected _initTheme(theme?: any) {\n this._theme = theme;\n\n this._mergeMarkTheme();\n }\n\n /** 将全局的 mark theme 合并进 model theme */\n protected _mergeMarkTheme() {\n const globalTheme = this._option.getTheme?.();\n if (isNil(globalTheme) || isNil(this._theme)) {\n return;\n }\n\n const { mark: markThemeByType, markByName: markThemeByName } = globalTheme;\n this.getMarkInfoList().forEach(({ type, name }) => {\n this._theme[name] = merge(\n {},\n markThemeByType?.[array(type)[0]] ?? {},\n markThemeByName?.[name] ?? {},\n this._theme[name]\n );\n });\n }\n\n /** 对 spec 进行遍历和转换 */\n protected _preprocessSpec(obj?: any): any {\n if (!arguments.length) {\n obj = this._spec;\n }\n\n if (isArray(obj)) {\n return obj.map(element => {\n if (isObject(element) && !isFunction(element)) {\n return this._preprocessSpec(element);\n }\n return element;\n });\n }\n const newObj = { ...obj };\n Object.keys(newObj).forEach(key => {\n // 绕过 DataView 对象\n if (key.includes('data')) {\n return;\n }\n const value = obj[key];\n if (isObject(value) && !isFunction(value)) {\n // 查询、替换语义化颜色\n if (isColorKey(value)) {\n newObj[key] = getActualColor(\n value,\n this._option.getTheme?.()?.colorScheme,\n this.modelType === 'series' ? (this.type as SeriesTypeEnum) : undefined\n );\n } else {\n newObj[key] = this._preprocessSpec(value);\n }\n }\n });\n\n if (!arguments.length) {\n this._spec = newObj;\n }\n return newObj;\n }\n\n setCurrentTheme(theme: any, noRender?: boolean) {\n // do nothing\n }\n\n updateLayoutAttribute() {\n // do nothing\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec(this._spec, this._option.getChartViewRect());\n }\n\n /** mark style 内部转换逻辑,override 使用 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle: any = { ...style };\n return newStyle;\n }\n\n setMarkStyle<T extends ICommonSpec>(\n mark: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) {\n if (!isValid(mark) || !isValid(style)) {\n return;\n }\n mark.setStyle(this._convertMarkStyle(style), state, level);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string) {\n if (!isValid(mark) || !isValid(spec)) {\n return;\n }\n const { style, state } = spec;\n const newSpec = { ...spec };\n\n if (style) {\n newSpec.style = this._convertMarkStyle(style);\n }\n if (state) {\n newSpec.state = {};\n Object.keys(state).forEach(key => {\n newSpec.state[key] = this._convertMarkStyle(state[key]);\n });\n }\n mark.initStyleWithSpec(newSpec, key);\n }\n\n protected stateKeyToSignalName(key: string, opt?: string) {\n let name = `${PREFIX}_${this.modelType}_${this.type}_${this.id}_${key}`;\n opt && (name += `_${opt}`);\n return name;\n }\n\n compileData() {\n this._data?.compile();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n });\n }\n\n compileSignal() {\n this.state?.compile();\n }\n\n bindSceneNode(node: IElement) {\n this._sceneNodeMap.set(node.mark.id(), node as IElement);\n }\n\n getSceneNodes() {\n return Array.from(this._sceneNodeMap.values());\n }\n\n getSceneNodeMarks() {\n return this.getSceneNodes().map(node => node.mark as IVGrammarMark);\n }\n\n protected _createMark<T extends IMark>(markInfo: IModelMarkInfo, option: Partial<IMarkOption> = {}): T {\n const { type, name } = markInfo;\n const m = Factory.createMark(type as any, name, {\n model: this,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._option.globalScale,\n ...option\n }) as T;\n m?.created();\n return m;\n }\n\n /**\n * 数据唯一ID\n * 根据自身动画数据匹配需求设置返回值。\n * 默认返回 undefined 时,根据 VGrammar 默认数据 ID 进行索引和匹配。\n */\n protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined {\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/model/base-model.ts"],"names":[],"mappings":"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","file":"base-model.js","sourcesContent":["import { createID, isValid, cloneDeepSpec } from '../util';\nimport { Event } from '../event/event';\nimport type { IEvent } from '../event/interface';\nimport { LayoutItem } from './layout-item';\nimport type {\n IEffect,\n IModel,\n IModelInitOption,\n IModelOption,\n IModelRenderOption,\n IModelEvaluateOption,\n IModelSpec,\n ILayoutRect,\n IModelMarkInfo\n} from './interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IMark, IMarkOption, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { Datum, StateValueType, ConvertToMarkStyleSpec, ICommonSpec, StringOrNumber, IRect } from '../typings';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { CompilableData } from '../compile/data/compilable-data';\nimport { ModelStateManager } from './model-state-manager';\nimport { PREFIX } from '../constant';\nimport type { IElement, IGroupMark, IMark as IVGrammarMark } from '@visactor/vgrammar';\nimport { array, isArray, isEqual, isFunction, isNil, isObject, merge } from '@visactor/vutils';\nimport { Factory } from '../core/factory';\nimport { getActualColor, isColorKey } from '../theme/color-scheme/util';\nimport type { SeriesTypeEnum } from '../series/interface';\nimport { MarkSet } from '../mark/mark-set';\n\nexport abstract class BaseModel extends LayoutItem implements IModel {\n readonly type: string = 'null';\n readonly modelType: string = 'null';\n\n readonly id;\n\n userId: StringOrNumber | undefined = undefined;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // 数据\n protected _data: CompilableData = null;\n getData() {\n return this._data;\n }\n\n protected declare _spec: any;\n getSpec(): any {\n return this._spec;\n }\n\n protected _specIndex: number = 0;\n getSpecIndex() {\n return this._specIndex;\n }\n\n readonly specKey: string = '';\n\n protected _originalSpec: any;\n\n protected declare _option: IModelOption;\n getOption() {\n return this._option;\n }\n\n protected _sceneNodeMap: Map<string, IElement>;\n\n protected _marks: MarkSet = new MarkSet();\n getMarks(): IMark[] {\n return this._marks?.getMarks() ?? [];\n }\n getMarkNameMap() {\n return this._marks?.getMarkNameMap();\n }\n getMarkSet() {\n return this._marks;\n }\n getMarkInfoList(): IModelMarkInfo[] {\n return this.getMarks().map(mark => ({\n type: mark.type as MarkTypeEnum,\n name: mark.name\n }));\n }\n\n getChart() {\n return this._option.getChart();\n }\n\n /** 状态管理器 */\n state: ModelStateManager;\n getState() {\n return this.state._stateMap;\n }\n\n protected _theme?: any; // 非全局 theme,是对应于具体 model 的 theme 对象\n\n /** for layout diff */\n protected _lastLayoutRect: ILayoutRect = null;\n\n protected _tooltipHelper: ITooltipHelper | undefined;\n get tooltipHelper() {\n return this._tooltipHelper;\n }\n\n // TODO: 有些hack,这个tag是为了避免布局逻辑中,轴的数据变化,又由数据变化触发重新布局\n protected _isLayout: boolean = true;\n\n constructor(spec: IModelSpec, option: IModelOption) {\n super(option);\n this.id = createID();\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n this.userId = spec.id;\n this._specIndex = option.specIndex ?? 0;\n this.specKey = option.specKey ?? '';\n this.effect = {};\n this.event = new Event(option.eventDispatcher, option.mode);\n option.map?.set(this.id, this);\n this._sceneNodeMap = new Map();\n this.state = new ModelStateManager({\n ...option,\n stateKeyToSignalName: this.stateKeyToSignalName.bind(this)\n });\n }\n coordinate?: CoordinateType;\n\n protected _releaseEvent() {\n this.event.release();\n }\n\n created() {\n this._initTheme();\n this.setAttrFromSpec();\n }\n\n updateState(newState: Record<string, unknown>) {\n return this.state.updateState(newState);\n }\n\n init(option: IModelInitOption) {\n // do nothing\n }\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n this._isLayout = true;\n }\n onLayoutEnd(ctx: any): void {\n // diff layoutRect\n const layoutRect = this.getLayoutRect();\n if (this._forceLayoutTag || !isEqual(this._lastLayoutRect, layoutRect)) {\n this.updateLayoutAttribute();\n }\n this._forceLayoutTag = false;\n this.getMarks().forEach(m => m.updateLayoutState(true, true));\n this._isLayout = false;\n }\n\n protected _forceLayout() {\n if (this._isLayout) {\n return;\n }\n this._forceLayoutTag = true;\n this._option.globalInstance.getChart()?.setLayoutTag(true);\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption) {\n // do nothing\n }\n abstract onRender(ctx: IModelRenderOption): void;\n\n onDataUpdate() {\n // do nothing\n }\n\n release() {\n this._releaseEvent();\n this._originalSpec = {};\n this._spec = {};\n this.getMarks().forEach(m => m.release());\n this.state.release();\n this._data?.release();\n this._data = this._specIndex = this._sceneNodeMap = null;\n this._marks.clear();\n super.release();\n }\n\n updateSpec(spec: any) {\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n return result;\n }\n\n reInit(theme?: any) {\n this._initTheme(theme);\n this.setAttrFromSpec();\n }\n\n protected _initTheme(theme?: any) {\n this._theme = theme;\n\n this._mergeMarkTheme();\n }\n\n /** 将全局的 mark theme 合并进 model theme */\n protected _mergeMarkTheme() {\n const globalTheme = this._option.getTheme?.();\n if (isNil(globalTheme) || isNil(this._theme)) {\n return;\n }\n\n const { mark: markThemeByType, markByName: markThemeByName } = globalTheme;\n this.getMarkInfoList().forEach(({ type, name }) => {\n this._theme[name] = merge(\n {},\n markThemeByType?.[array(type)[0]] ?? {},\n markThemeByName?.[name] ?? {},\n this._theme[name]\n );\n });\n }\n\n /** 对 spec 进行遍历和转换 */\n protected _preprocessSpec(obj?: any): any {\n if (!arguments.length) {\n obj = this._spec;\n }\n\n if (isArray(obj)) {\n return obj.map(element => {\n if (isObject(element) && !isFunction(element)) {\n return this._preprocessSpec(element);\n }\n return element;\n });\n }\n const newObj = { ...obj };\n Object.keys(newObj).forEach(key => {\n // 绕过 DataView 对象\n if (key.includes('data')) {\n return;\n }\n const value = obj[key];\n if (isObject(value) && !isFunction(value)) {\n // 查询、替换语义化颜色\n if (isColorKey(value)) {\n newObj[key] = getActualColor(\n value,\n this._option.getTheme?.()?.colorScheme,\n this.modelType === 'series' ? (this.type as SeriesTypeEnum) : undefined\n );\n } else {\n newObj[key] = this._preprocessSpec(value);\n }\n }\n });\n\n if (!arguments.length) {\n this._spec = newObj;\n }\n return newObj;\n }\n\n setCurrentTheme(theme: any, noRender?: boolean) {\n // do nothing\n }\n\n updateLayoutAttribute() {\n // do nothing\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec(this._spec, this._option.getChartViewRect());\n }\n\n /** mark style 内部转换逻辑,override 使用 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle: any = { ...style };\n return newStyle;\n }\n\n setMarkStyle<T extends ICommonSpec>(\n mark: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) {\n if (!isValid(mark) || !isValid(style)) {\n return;\n }\n mark.setStyle(this._convertMarkStyle(style), state, level);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string) {\n if (!isValid(mark) || !isValid(spec)) {\n return;\n }\n const { style, state } = spec;\n const newSpec = { ...spec };\n\n if (style) {\n newSpec.style = this._convertMarkStyle(style);\n }\n if (state) {\n newSpec.state = {};\n Object.keys(state).forEach(key => {\n newSpec.state[key] = this._convertMarkStyle(state[key]);\n });\n }\n mark.initStyleWithSpec(newSpec, key);\n }\n\n protected stateKeyToSignalName(key: string, opt?: string) {\n let name = `${PREFIX}_${this.modelType}_${this.type}_${this.id}_${key}`;\n opt && (name += `_${opt}`);\n return name;\n }\n\n compileData() {\n this._data?.compile();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n });\n }\n\n compileSignal() {\n this.state?.compile();\n }\n\n bindSceneNode(node: IElement) {\n this._sceneNodeMap.set(node.mark.id(), node as IElement);\n }\n\n getSceneNodes() {\n return Array.from(this._sceneNodeMap.values());\n }\n\n getSceneNodeMarks() {\n return this.getSceneNodes().map(node => node.mark as IVGrammarMark);\n }\n\n protected _createMark<T extends IMark>(markInfo: IModelMarkInfo, option: Partial<IMarkOption> = {}): T {\n const { type, name } = markInfo;\n const m = Factory.createMark(type as any, name, {\n model: this,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._option.globalScale,\n ...option\n }) as T;\n m?.created();\n return m;\n }\n\n /**\n * 数据唯一ID\n * 根据自身动画数据匹配需求设置返回值。\n * 默认返回 undefined 时,根据 VGrammar 默认数据 ID 进行索引和匹配。\n */\n protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined {\n return undefined;\n }\n}\n"]}
|
|
@@ -116,7 +116,7 @@ export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseMode
|
|
|
116
116
|
getMarkInName(name: string): IMark | undefined;
|
|
117
117
|
getMarkInId(markId: number): IMark | undefined;
|
|
118
118
|
protected initEvent(): void;
|
|
119
|
-
protected
|
|
119
|
+
protected _releaseEvent(): void;
|
|
120
120
|
protected initTooltip(): void;
|
|
121
121
|
updateSpec(spec: any): {
|
|
122
122
|
change: boolean;
|
|
@@ -132,6 +132,16 @@ export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseMode
|
|
|
132
132
|
onLayoutEnd(ctx: any): void;
|
|
133
133
|
getSeriesKeys(): string[];
|
|
134
134
|
getSeriesStyle(datum: Datum): (attribute: string) => unknown;
|
|
135
|
+
protected _getSeriesInfo(field: string, keys: string[]): {
|
|
136
|
+
key: string;
|
|
137
|
+
style: (attribute: string) => unknown;
|
|
138
|
+
shapeType: string;
|
|
139
|
+
}[];
|
|
140
|
+
getSeriesInfoInField(field: string): {
|
|
141
|
+
key: string;
|
|
142
|
+
style: (attribute: string) => unknown;
|
|
143
|
+
shapeType: string;
|
|
144
|
+
}[];
|
|
135
145
|
getSeriesInfoList(): {
|
|
136
146
|
key: string;
|
|
137
147
|
style: (attribute: string) => unknown;
|
|
@@ -380,8 +380,8 @@ class BaseSeries extends base_model_1.BaseModel {
|
|
|
380
380
|
null === (_d = this._viewDataStatistics) || void 0 === _d || _d.target.addListener("change", this.viewDataStatisticsUpdate.bind(this)),
|
|
381
381
|
null === (_e = this._rawDataStatistics) || void 0 === _e || _e.target.addListener("change", this.rawDataStatisticsUpdate.bind(this));
|
|
382
382
|
}
|
|
383
|
-
|
|
384
|
-
super.
|
|
383
|
+
_releaseEvent() {
|
|
384
|
+
super._releaseEvent(), this._trigger.release();
|
|
385
385
|
}
|
|
386
386
|
initTooltip() {
|
|
387
387
|
this._tooltipHelper = new tooltip_helper_1.BaseSeriesTooltipHelper(this);
|
|
@@ -422,18 +422,24 @@ class BaseSeries extends base_model_1.BaseModel {
|
|
|
422
422
|
return null !== (_b = null === (_a = this._seriesMark) || void 0 === _a ? void 0 : _a.getAttribute(attribute, datum)) && void 0 !== _b ? _b : null;
|
|
423
423
|
};
|
|
424
424
|
}
|
|
425
|
+
_getSeriesInfo(field, keys) {
|
|
426
|
+
const defaultShapeType = this.getDefaultShapeType();
|
|
427
|
+
return keys.map((key => ({
|
|
428
|
+
key: key,
|
|
429
|
+
style: this.getSeriesStyle({
|
|
430
|
+
[field]: key
|
|
431
|
+
}),
|
|
432
|
+
shapeType: defaultShapeType
|
|
433
|
+
})));
|
|
434
|
+
}
|
|
435
|
+
getSeriesInfoInField(field) {
|
|
436
|
+
var _a;
|
|
437
|
+
const keys = null === (_a = this._rawDataStatistics.latestData[field]) || void 0 === _a ? void 0 : _a.values;
|
|
438
|
+
return this._getSeriesInfo(field, keys);
|
|
439
|
+
}
|
|
425
440
|
getSeriesInfoList() {
|
|
426
|
-
|
|
427
|
-
return
|
|
428
|
-
var _a;
|
|
429
|
-
return {
|
|
430
|
-
key: key,
|
|
431
|
-
style: this.getSeriesStyle({
|
|
432
|
-
[null !== (_a = this._seriesField) && void 0 !== _a ? _a : index_1.DEFAULT_DATA_SERIES_FIELD]: key
|
|
433
|
-
}),
|
|
434
|
-
shapeType: defaultShapeType
|
|
435
|
-
};
|
|
436
|
-
}));
|
|
441
|
+
var _a;
|
|
442
|
+
return this._getSeriesInfo(null !== (_a = this._seriesField) && void 0 !== _a ? _a : index_1.DEFAULT_DATA_SERIES_FIELD, this.getSeriesKeys());
|
|
437
443
|
}
|
|
438
444
|
getDefaultColorScale() {
|
|
439
445
|
var _a, _b;
|