echarts 3.5.4 → 3.6.0
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/LICENSE +21 -18
- package/dist/echarts.common.js +10072 -9330
- package/dist/echarts.common.min.js +13 -13
- package/dist/echarts.js +13084 -11412
- package/dist/echarts.min.js +22 -21
- package/dist/echarts.simple.js +9454 -8889
- package/dist/echarts.simple.min.js +9 -10
- package/index.js +1 -0
- package/lib/chart/bar/BarView.js +141 -49
- package/lib/chart/bar/BaseBarSeries.js +2 -6
- package/lib/chart/bar.js +1 -0
- package/lib/chart/boxplot/BoxplotSeries.js +1 -1
- package/lib/chart/boxplot/boxplotLayout.js +23 -7
- package/lib/chart/candlestick/CandlestickSeries.js +1 -21
- package/lib/chart/candlestick/candlestickLayout.js +23 -7
- package/lib/chart/custom.js +442 -0
- package/lib/chart/graph/categoryVisual.js +3 -2
- package/lib/chart/heatmap/HeatmapView.js +75 -73
- package/lib/chart/helper/Symbol.js +8 -31
- package/lib/chart/helper/createListFromArray.js +15 -10
- package/lib/chart/helper/labelHelper.js +48 -0
- package/lib/chart/helper/whiskerBoxCommon.js +25 -44
- package/lib/chart/map/mapDataStatistic.js +9 -8
- package/lib/chart/pie/pieLayout.js +25 -17
- package/lib/chart/radar/RadarSeries.js +1 -1
- package/lib/chart/scatter/ScatterSeries.js +2 -3
- package/lib/chart/themeRiver/ThemeRiverSeries.js +6 -5
- package/lib/chart/themeRiver/themeRiverVisual.js +1 -1
- package/lib/chart/treemap/TreemapSeries.js +3 -3
- package/lib/component/axisPointer/BaseAxisPointer.js +7 -6
- package/lib/component/axisPointer/axisTrigger.js +62 -51
- package/lib/component/axisPointer.js +1 -2
- package/lib/component/calendar/CalendarView.js +5 -5
- package/lib/component/dataZoom/AxisProxy.js +76 -13
- package/lib/component/dataZoom/DataZoomModel.js +21 -5
- package/lib/component/dataZoom/InsideZoomModel.js +4 -1
- package/lib/component/dataZoom/InsideZoomView.js +16 -26
- package/lib/component/dataZoom/SliderZoomView.js +63 -26
- package/lib/component/dataZoom/roams.js +8 -3
- package/lib/component/graphic.js +13 -12
- package/lib/component/helper/BrushTargetManager.js +5 -5
- package/lib/component/helper/MapDraw.js +3 -3
- package/lib/component/helper/RoamController.js +43 -20
- package/lib/component/helper/brushHelper.js +2 -13
- package/lib/component/helper/selectableMixin.js +7 -7
- package/lib/component/helper/sliderMove.js +65 -36
- package/lib/component/legend/LegendView.js +6 -6
- package/lib/component/legend/legendAction.js +1 -1
- package/lib/component/marker/MarkAreaView.js +3 -6
- package/lib/component/marker/MarkLineView.js +3 -5
- package/lib/component/marker/MarkPointView.js +3 -5
- package/lib/component/marker/MarkerView.js +10 -12
- package/lib/component/polar.js +5 -0
- package/lib/component/timeline/SliderTimelineView.js +1 -1
- package/lib/component/toolbox/feature/DataZoom.js +14 -1
- package/lib/component/tooltip/TooltipView.js +3 -3
- package/lib/component/visualMap/ContinuousView.js +6 -4
- package/lib/coord/Axis.js +34 -2
- package/lib/coord/axisDefault.js +2 -1
- package/lib/coord/axisHelper.js +6 -25
- package/lib/coord/axisModelCommonMixin.js +1 -1
- package/lib/coord/calendar/Calendar.js +14 -17
- package/lib/coord/calendar/prepareCustom.js +31 -0
- package/lib/coord/cartesian/Axis2D.js +0 -12
- package/lib/coord/cartesian/Cartesian2D.js +1 -0
- package/lib/coord/cartesian/Grid.js +5 -2
- package/lib/coord/cartesian/prepareCustom.js +36 -0
- package/lib/coord/geo/Geo.js +9 -14
- package/lib/coord/geo/GeoModel.js +5 -5
- package/lib/coord/geo/geoCreator.js +3 -3
- package/lib/coord/geo/prepareCustom.js +36 -0
- package/lib/coord/parallel/Parallel.js +12 -11
- package/lib/coord/polar/Polar.js +2 -1
- package/lib/coord/polar/prepareCustom.js +53 -0
- package/lib/coord/single/Single.js +9 -8
- package/lib/coord/single/SingleAxis.js +0 -27
- package/lib/coord/single/prepareCustom.js +33 -0
- package/lib/data/DataDiffer.js +2 -1
- package/lib/data/Graph.js +11 -7
- package/lib/data/List.js +58 -19
- package/lib/data/helper/completeDimensions.js +184 -23
- package/lib/echarts.js +38 -33
- package/lib/helper.js +1 -8
- package/lib/layout/barGrid.js +87 -18
- package/lib/layout/barPolar.js +286 -0
- package/lib/layout/points.js +22 -16
- package/lib/model/Global.js +34 -31
- package/lib/model/Series.js +41 -29
- package/lib/model/mixin/colorPalette.js +2 -1
- package/lib/model/mixin/textStyle.js +7 -13
- package/lib/scale/Interval.js +21 -14
- package/lib/scale/Log.js +5 -7
- package/lib/scale/Time.js +13 -7
- package/lib/scale/helper.js +5 -1
- package/lib/util/format.js +12 -0
- package/lib/util/graphic.js +53 -1
- package/lib/util/model.js +63 -7
- package/map/js/world.js +1 -1
- package/map/json/world.json +1 -1
- package/package.json +3 -3
- package/src/chart/bar/BarView.js +141 -49
- package/src/chart/bar/BaseBarSeries.js +2 -6
- package/src/chart/bar.js +1 -0
- package/src/chart/boxplot/BoxplotSeries.js +1 -1
- package/src/chart/boxplot/boxplotLayout.js +23 -7
- package/src/chart/candlestick/CandlestickSeries.js +1 -21
- package/src/chart/candlestick/candlestickLayout.js +23 -7
- package/src/chart/custom.js +442 -0
- package/src/chart/graph/categoryVisual.js +3 -2
- package/src/chart/heatmap/HeatmapView.js +75 -73
- package/src/chart/helper/Symbol.js +8 -31
- package/src/chart/helper/createListFromArray.js +15 -10
- package/src/chart/helper/labelHelper.js +49 -0
- package/src/chart/helper/whiskerBoxCommon.js +25 -44
- package/src/chart/map/mapDataStatistic.js +9 -8
- package/src/chart/pie/pieLayout.js +25 -17
- package/src/chart/radar/RadarSeries.js +1 -1
- package/src/chart/scatter/ScatterSeries.js +2 -3
- package/src/chart/themeRiver/ThemeRiverSeries.js +6 -5
- package/src/chart/themeRiver/themeRiverVisual.js +1 -1
- package/src/chart/treemap/TreemapSeries.js +3 -3
- package/src/component/axisPointer/BaseAxisPointer.js +7 -6
- package/src/component/axisPointer/axisTrigger.js +62 -51
- package/src/component/axisPointer.js +1 -2
- package/src/component/calendar/CalendarView.js +5 -5
- package/src/component/dataZoom/AxisProxy.js +76 -13
- package/src/component/dataZoom/DataZoomModel.js +21 -5
- package/src/component/dataZoom/InsideZoomModel.js +4 -1
- package/src/component/dataZoom/InsideZoomView.js +16 -26
- package/src/component/dataZoom/SliderZoomView.js +63 -26
- package/src/component/dataZoom/roams.js +8 -3
- package/src/component/graphic.js +13 -12
- package/src/component/helper/BrushTargetManager.js +5 -5
- package/src/component/helper/MapDraw.js +3 -3
- package/src/component/helper/RoamController.js +43 -20
- package/src/component/helper/brushHelper.js +2 -13
- package/src/component/helper/selectableMixin.js +7 -7
- package/src/component/helper/sliderMove.js +65 -36
- package/src/component/legend/LegendView.js +6 -6
- package/src/component/legend/legendAction.js +1 -1
- package/src/component/marker/MarkAreaView.js +3 -6
- package/src/component/marker/MarkLineView.js +3 -5
- package/src/component/marker/MarkPointView.js +3 -5
- package/src/component/marker/MarkerView.js +10 -12
- package/src/component/polar.js +5 -0
- package/src/component/timeline/SliderTimelineView.js +1 -1
- package/src/component/toolbox/feature/DataZoom.js +14 -1
- package/src/component/tooltip/TooltipView.js +3 -3
- package/src/component/visualMap/ContinuousView.js +6 -4
- package/src/coord/Axis.js +34 -2
- package/src/coord/axisDefault.js +2 -1
- package/src/coord/axisHelper.js +6 -25
- package/src/coord/axisModelCommonMixin.js +1 -1
- package/src/coord/calendar/Calendar.js +14 -17
- package/src/coord/calendar/prepareCustom.js +32 -0
- package/src/coord/cartesian/Axis2D.js +0 -12
- package/src/coord/cartesian/Cartesian2D.js +1 -0
- package/src/coord/cartesian/Grid.js +5 -2
- package/src/coord/cartesian/prepareCustom.js +37 -0
- package/src/coord/geo/Geo.js +9 -14
- package/src/coord/geo/GeoModel.js +5 -5
- package/src/coord/geo/geoCreator.js +3 -3
- package/src/coord/geo/prepareCustom.js +37 -0
- package/src/coord/parallel/Parallel.js +12 -11
- package/src/coord/polar/Polar.js +2 -1
- package/src/coord/polar/prepareCustom.js +54 -0
- package/src/coord/single/Single.js +9 -8
- package/src/coord/single/SingleAxis.js +0 -27
- package/src/coord/single/prepareCustom.js +34 -0
- package/src/data/DataDiffer.js +2 -1
- package/src/data/Graph.js +11 -7
- package/src/data/List.js +58 -19
- package/src/data/helper/completeDimensions.js +184 -23
- package/src/echarts.js +38 -33
- package/src/helper.js +1 -8
- package/src/layout/barGrid.js +87 -18
- package/src/layout/barPolar.js +287 -0
- package/src/layout/points.js +22 -16
- package/src/model/Global.js +34 -31
- package/src/model/Series.js +41 -29
- package/src/model/mixin/colorPalette.js +2 -1
- package/src/model/mixin/textStyle.js +7 -13
- package/src/scale/Interval.js +21 -14
- package/src/scale/Log.js +5 -7
- package/src/scale/Time.js +13 -7
- package/src/scale/helper.js +5 -1
- package/src/util/format.js +12 -0
- package/src/util/graphic.js +53 -1
- package/src/util/model.js +63 -7
- package/src/coord/cartesian/axisLabelInterval.js +0 -26
|
@@ -248,11 +248,12 @@ define(function (require) {
|
|
|
248
248
|
return [0, this._size[0]];
|
|
249
249
|
},
|
|
250
250
|
|
|
251
|
-
_renderBackground
|
|
251
|
+
_renderBackground: function () {
|
|
252
252
|
var dataZoomModel = this.dataZoomModel;
|
|
253
253
|
var size = this._size;
|
|
254
|
+
var barGroup = this._displayables.barGroup;
|
|
254
255
|
|
|
255
|
-
|
|
256
|
+
barGroup.add(new Rect({
|
|
256
257
|
silent: true,
|
|
257
258
|
shape: {
|
|
258
259
|
x: 0, y: 0, width: size[0], height: size[1]
|
|
@@ -262,6 +263,18 @@ define(function (require) {
|
|
|
262
263
|
},
|
|
263
264
|
z2: -40
|
|
264
265
|
}));
|
|
266
|
+
|
|
267
|
+
// Click panel, over shadow, below handles.
|
|
268
|
+
barGroup.add(new Rect({
|
|
269
|
+
shape: {
|
|
270
|
+
x: 0, y: 0, width: size[0], height: size[1]
|
|
271
|
+
},
|
|
272
|
+
style: {
|
|
273
|
+
fill: 'transparent'
|
|
274
|
+
},
|
|
275
|
+
z2: 0,
|
|
276
|
+
onclick: zrUtil.bind(this._onClickPanelClick, this)
|
|
277
|
+
}));
|
|
265
278
|
},
|
|
266
279
|
|
|
267
280
|
_renderDataShadow: function () {
|
|
@@ -450,7 +463,7 @@ define(function (require) {
|
|
|
450
463
|
|
|
451
464
|
var iconStr = dataZoomModel.get('handleIcon');
|
|
452
465
|
each([0, 1], function (handleIndex) {
|
|
453
|
-
var
|
|
466
|
+
var iconOpt = {
|
|
454
467
|
style: {
|
|
455
468
|
strokeNoScale: true
|
|
456
469
|
},
|
|
@@ -465,12 +478,21 @@ define(function (require) {
|
|
|
465
478
|
ondragend: bind(this._onDragEnd, this),
|
|
466
479
|
onmouseover: bind(this._showDataInfo, this, true),
|
|
467
480
|
onmouseout: bind(this._showDataInfo, this, false)
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
481
|
+
};
|
|
482
|
+
var iconStyle = {x: -1, y: 0, width: 2, height: 2};
|
|
483
|
+
|
|
484
|
+
var path = iconStr.indexOf('image://') === 0
|
|
485
|
+
? (
|
|
486
|
+
iconStyle.image = iconStr.slice(8),
|
|
487
|
+
iconOpt.style = iconStyle,
|
|
488
|
+
new graphic.Image(iconOpt)
|
|
489
|
+
)
|
|
490
|
+
: graphic.makePath(
|
|
491
|
+
iconStr.replace('path://', ''),
|
|
492
|
+
iconOpt,
|
|
493
|
+
iconStyle,
|
|
494
|
+
'center'
|
|
495
|
+
);
|
|
474
496
|
|
|
475
497
|
var bRect = path.getBoundingRect();
|
|
476
498
|
this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);
|
|
@@ -520,25 +542,29 @@ define(function (require) {
|
|
|
520
542
|
/**
|
|
521
543
|
* @private
|
|
522
544
|
* @param {(number|string)} handleIndex 0 or 1 or 'all'
|
|
523
|
-
* @param {number}
|
|
524
|
-
* @param {number} dy
|
|
545
|
+
* @param {number} delta
|
|
525
546
|
*/
|
|
526
547
|
_updateInterval: function (handleIndex, delta) {
|
|
548
|
+
var dataZoomModel = this.dataZoomModel;
|
|
527
549
|
var handleEnds = this._handleEnds;
|
|
528
550
|
var viewExtend = this._getViewExtent();
|
|
551
|
+
var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
|
|
552
|
+
var percentExtent = [0, 100];
|
|
529
553
|
|
|
530
554
|
sliderMove(
|
|
531
555
|
delta,
|
|
532
556
|
handleEnds,
|
|
533
557
|
viewExtend,
|
|
534
|
-
(
|
|
535
|
-
|
|
536
|
-
|
|
558
|
+
dataZoomModel.get('zoomLock') ? 'all' : handleIndex,
|
|
559
|
+
minMaxSpan.minSpan != null
|
|
560
|
+
? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null,
|
|
561
|
+
minMaxSpan.maxSpan != null
|
|
562
|
+
? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null
|
|
537
563
|
);
|
|
538
564
|
|
|
539
565
|
this._range = asc([
|
|
540
|
-
linearMap(handleEnds[0], viewExtend,
|
|
541
|
-
linearMap(handleEnds[1], viewExtend,
|
|
566
|
+
linearMap(handleEnds[0], viewExtend, percentExtent, true),
|
|
567
|
+
linearMap(handleEnds[1], viewExtend, percentExtent, true)
|
|
542
568
|
]);
|
|
543
569
|
},
|
|
544
570
|
|
|
@@ -556,7 +582,7 @@ define(function (require) {
|
|
|
556
582
|
var handle = displaybles.handles[handleIndex];
|
|
557
583
|
var handleHeight = this._handleHeight;
|
|
558
584
|
handle.attr({
|
|
559
|
-
scale: [handleHeight, handleHeight],
|
|
585
|
+
scale: [handleHeight / 2, handleHeight / 2],
|
|
560
586
|
position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]
|
|
561
587
|
});
|
|
562
588
|
}, this);
|
|
@@ -682,7 +708,8 @@ define(function (require) {
|
|
|
682
708
|
this._dragging = true;
|
|
683
709
|
|
|
684
710
|
// Transform dx, dy to bar coordination.
|
|
685
|
-
var
|
|
711
|
+
var barTransform = this._displayables.barGroup.getLocalTransform();
|
|
712
|
+
var vertex = graphic.applyTransform([dx, dy], barTransform, true);
|
|
686
713
|
|
|
687
714
|
this._updateInterval(handleIndex, vertex[0]);
|
|
688
715
|
|
|
@@ -701,6 +728,24 @@ define(function (require) {
|
|
|
701
728
|
this._dispatchZoomAction();
|
|
702
729
|
},
|
|
703
730
|
|
|
731
|
+
_onClickPanelClick: function (e) {
|
|
732
|
+
var size = this._size;
|
|
733
|
+
var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);
|
|
734
|
+
|
|
735
|
+
if (localPoint[0] < 0 || localPoint[0] > size[0]
|
|
736
|
+
|| localPoint[1] < 0 || localPoint[1] > size[1]
|
|
737
|
+
) {
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
var handleEnds = this._handleEnds;
|
|
742
|
+
var center = (handleEnds[0] + handleEnds[1]) / 2;
|
|
743
|
+
|
|
744
|
+
this._updateInterval('all', localPoint[0] - center);
|
|
745
|
+
this._updateView();
|
|
746
|
+
this._dispatchZoomAction();
|
|
747
|
+
},
|
|
748
|
+
|
|
704
749
|
/**
|
|
705
750
|
* This action will be throttled.
|
|
706
751
|
* @private
|
|
@@ -717,14 +762,6 @@ define(function (require) {
|
|
|
717
762
|
});
|
|
718
763
|
},
|
|
719
764
|
|
|
720
|
-
/**
|
|
721
|
-
* @private
|
|
722
|
-
*/
|
|
723
|
-
_applyBarTransform: function (vertex, inverse) {
|
|
724
|
-
var barTransform = this._displayables.barGroup.getLocalTransform();
|
|
725
|
-
return graphic.applyTransform(vertex, barTransform, inverse);
|
|
726
|
-
},
|
|
727
|
-
|
|
728
765
|
/**
|
|
729
766
|
* @private
|
|
730
767
|
*/
|
|
@@ -29,6 +29,8 @@ define(function(require) {
|
|
|
29
29
|
* @param {number} dataZoomInfo.throttleRate
|
|
30
30
|
* @param {Function} dataZoomInfo.panGetRange
|
|
31
31
|
* @param {Function} dataZoomInfo.zoomGetRange
|
|
32
|
+
* @param {boolean} [dataZoomInfo.zoomLock]
|
|
33
|
+
* @param {boolean} [dataZoomInfo.disabled]
|
|
32
34
|
*/
|
|
33
35
|
register: function (api, dataZoomInfo) {
|
|
34
36
|
var store = giveStore(api);
|
|
@@ -57,9 +59,13 @@ define(function(require) {
|
|
|
57
59
|
dataZoomInfos: {},
|
|
58
60
|
count: 0
|
|
59
61
|
};
|
|
60
|
-
record.controller = createController(api,
|
|
62
|
+
record.controller = createController(api, record);
|
|
61
63
|
record.dispatchAction = zrUtil.curry(dispatchAction, api);
|
|
62
64
|
}
|
|
65
|
+
record.controller.enable(
|
|
66
|
+
dataZoomInfo.disabled ? false : dataZoomInfo.zoomLock ? 'move' : true,
|
|
67
|
+
dataZoomInfo.roamControllerOpt
|
|
68
|
+
);
|
|
63
69
|
|
|
64
70
|
// Consider resize, area should be always updated.
|
|
65
71
|
record.controller.setPointerChecker(dataZoomInfo.containsPoint);
|
|
@@ -130,9 +136,8 @@ define(function(require) {
|
|
|
130
136
|
return zr[ATTR] || (zr[ATTR] = {});
|
|
131
137
|
}
|
|
132
138
|
|
|
133
|
-
function createController(api,
|
|
139
|
+
function createController(api, newRecord) {
|
|
134
140
|
var controller = new RoamController(api.getZr());
|
|
135
|
-
controller.enable();
|
|
136
141
|
controller.on('pan', curry(onPan, newRecord));
|
|
137
142
|
controller.on('zoom', curry(onZoom, newRecord));
|
|
138
143
|
|
package/src/component/graphic.js
CHANGED
|
@@ -214,9 +214,9 @@ define(function (require) {
|
|
|
214
214
|
|
|
215
215
|
/**
|
|
216
216
|
* @private
|
|
217
|
-
* @type {
|
|
217
|
+
* @type {module:zrender/core/util.HashMap}
|
|
218
218
|
*/
|
|
219
|
-
this._elMap =
|
|
219
|
+
this._elMap = zrUtil.createHashMap();
|
|
220
220
|
|
|
221
221
|
/**
|
|
222
222
|
* @private
|
|
@@ -270,9 +270,9 @@ define(function (require) {
|
|
|
270
270
|
zrUtil.each(elOptionsToUpdate, function (elOption) {
|
|
271
271
|
var $action = elOption.$action;
|
|
272
272
|
var id = elOption.id;
|
|
273
|
-
var existEl = elMap
|
|
273
|
+
var existEl = elMap.get(id);
|
|
274
274
|
var parentId = elOption.parentId;
|
|
275
|
-
var targetElParent = parentId != null ? elMap
|
|
275
|
+
var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;
|
|
276
276
|
|
|
277
277
|
// In top/bottom mode, textVertical should not be used. And textBaseline
|
|
278
278
|
// should not be 'alphabetic', which cause inaccurately locating.
|
|
@@ -305,9 +305,10 @@ define(function (require) {
|
|
|
305
305
|
removeEl(existEl, elMap);
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
308
|
+
var el = elMap.get(id);
|
|
309
|
+
if (el) {
|
|
310
|
+
el.__ecGraphicWidth = elOption.width;
|
|
311
|
+
el.__ecGraphicHeight = elOption.height;
|
|
311
312
|
}
|
|
312
313
|
});
|
|
313
314
|
},
|
|
@@ -327,7 +328,7 @@ define(function (require) {
|
|
|
327
328
|
// Bottom-up tranvese all elements (consider ec resize) to locate elements.
|
|
328
329
|
for (var i = elOptions.length - 1; i >= 0; i--) {
|
|
329
330
|
var elOption = elOptions[i];
|
|
330
|
-
var el = elMap
|
|
331
|
+
var el = elMap.get(elOption.id);
|
|
331
332
|
|
|
332
333
|
if (!el) {
|
|
333
334
|
continue;
|
|
@@ -358,10 +359,10 @@ define(function (require) {
|
|
|
358
359
|
*/
|
|
359
360
|
_clear: function () {
|
|
360
361
|
var elMap = this._elMap;
|
|
361
|
-
|
|
362
|
+
elMap.each(function (el) {
|
|
362
363
|
removeEl(el, elMap);
|
|
363
364
|
});
|
|
364
|
-
this._elMap =
|
|
365
|
+
this._elMap = zrUtil.createHashMap();
|
|
365
366
|
},
|
|
366
367
|
|
|
367
368
|
/**
|
|
@@ -387,7 +388,7 @@ define(function (require) {
|
|
|
387
388
|
|
|
388
389
|
var el = new Clz(elOption);
|
|
389
390
|
targetElParent.add(el);
|
|
390
|
-
elMap
|
|
391
|
+
elMap.set(id, el);
|
|
391
392
|
el.__ecGraphicId = id;
|
|
392
393
|
}
|
|
393
394
|
|
|
@@ -397,7 +398,7 @@ define(function (require) {
|
|
|
397
398
|
existEl.type === 'group' && existEl.traverse(function (el) {
|
|
398
399
|
removeEl(el, elMap);
|
|
399
400
|
});
|
|
400
|
-
|
|
401
|
+
elMap.removeKey(existEl.__ecGraphicId);
|
|
401
402
|
existElParent.remove(existEl);
|
|
402
403
|
}
|
|
403
404
|
}
|
|
@@ -244,7 +244,7 @@ define(function(require) {
|
|
|
244
244
|
var yAxisModels = foundCpts.yAxisModels;
|
|
245
245
|
var gridModels = foundCpts.gridModels;
|
|
246
246
|
// Remove duplicated.
|
|
247
|
-
var gridModelMap =
|
|
247
|
+
var gridModelMap = zrUtil.createHashMap();
|
|
248
248
|
var xAxesHas = {};
|
|
249
249
|
var yAxesHas = {};
|
|
250
250
|
|
|
@@ -254,21 +254,21 @@ define(function(require) {
|
|
|
254
254
|
|
|
255
255
|
each(xAxisModels, function (axisModel) {
|
|
256
256
|
var gridModel = axisModel.axis.grid.model;
|
|
257
|
-
gridModelMap
|
|
257
|
+
gridModelMap.set(gridModel.id, gridModel);
|
|
258
258
|
xAxesHas[gridModel.id] = true;
|
|
259
259
|
});
|
|
260
260
|
each(yAxisModels, function (axisModel) {
|
|
261
261
|
var gridModel = axisModel.axis.grid.model;
|
|
262
|
-
gridModelMap
|
|
262
|
+
gridModelMap.set(gridModel.id, gridModel);
|
|
263
263
|
yAxesHas[gridModel.id] = true;
|
|
264
264
|
});
|
|
265
265
|
each(gridModels, function (gridModel) {
|
|
266
|
-
gridModelMap
|
|
266
|
+
gridModelMap.set(gridModel.id, gridModel);
|
|
267
267
|
xAxesHas[gridModel.id] = true;
|
|
268
268
|
yAxesHas[gridModel.id] = true;
|
|
269
269
|
});
|
|
270
270
|
|
|
271
|
-
each(
|
|
271
|
+
gridModelMap.each(function (gridModel) {
|
|
272
272
|
var grid = gridModel.coordinateSystem;
|
|
273
273
|
var cartesians = [];
|
|
274
274
|
|
|
@@ -156,7 +156,7 @@ define(function (require) {
|
|
|
156
156
|
var hoverItemStyleAccessPath = ['itemStyle', 'emphasis'];
|
|
157
157
|
var labelAccessPath = ['label', 'normal'];
|
|
158
158
|
var hoverLabelAccessPath = ['label', 'emphasis'];
|
|
159
|
-
var nameMap =
|
|
159
|
+
var nameMap = zrUtil.createHashMap();
|
|
160
160
|
|
|
161
161
|
zrUtil.each(geo.regions, function (region) {
|
|
162
162
|
|
|
@@ -165,8 +165,8 @@ define(function (require) {
|
|
|
165
165
|
// colonies). And it is not appropriate to merge them in geo, which
|
|
166
166
|
// will make them share the same label and bring trouble in label
|
|
167
167
|
// location calculation.
|
|
168
|
-
var regionGroup = nameMap
|
|
169
|
-
|| (
|
|
168
|
+
var regionGroup = nameMap.get(region.name)
|
|
169
|
+
|| nameMap.set(region.name, new graphic.Group());
|
|
170
170
|
|
|
171
171
|
var compoundPath = new graphic.CompoundPath({
|
|
172
172
|
shape: {
|
|
@@ -27,6 +27,11 @@ define(function (require) {
|
|
|
27
27
|
*/
|
|
28
28
|
this._zr = zr;
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* @type {Object}
|
|
32
|
+
*/
|
|
33
|
+
this._opt = {};
|
|
34
|
+
|
|
30
35
|
// Avoid two roamController bind the same handler
|
|
31
36
|
var bind = zrUtil.bind;
|
|
32
37
|
var mousedownHandler = bind(mousedown, this);
|
|
@@ -54,11 +59,22 @@ define(function (require) {
|
|
|
54
59
|
* @param {boolean|string} [controlType=true] Specify the control type,
|
|
55
60
|
* which can be null/undefined or true/false
|
|
56
61
|
* or 'pan/move' or 'zoom'/'scale'
|
|
62
|
+
* @param {Object} [opt]
|
|
63
|
+
* @param {Object} [opt.zoomOnMouseWheel=true]
|
|
64
|
+
* @param {Object} [opt.moveOnMouseMove=true]
|
|
65
|
+
* @param {Object} [opt.preventDefaultMouseMove=true] When pan.
|
|
57
66
|
*/
|
|
58
|
-
this.enable = function (controlType) {
|
|
67
|
+
this.enable = function (controlType, opt) {
|
|
68
|
+
|
|
59
69
|
// Disable previous first
|
|
60
70
|
this.disable();
|
|
61
71
|
|
|
72
|
+
this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, {
|
|
73
|
+
zoomOnMouseWheel: true,
|
|
74
|
+
moveOnMouseMove: true,
|
|
75
|
+
preventDefaultMouseMove: true
|
|
76
|
+
});
|
|
77
|
+
|
|
62
78
|
if (controlType == null) {
|
|
63
79
|
controlType = true;
|
|
64
80
|
}
|
|
@@ -114,33 +130,33 @@ define(function (require) {
|
|
|
114
130
|
}
|
|
115
131
|
|
|
116
132
|
function mousemove(e) {
|
|
117
|
-
if (!this._dragging) {
|
|
133
|
+
if (!checkKeyBinding(this, 'moveOnMouseMove', e) || !this._dragging) {
|
|
118
134
|
return;
|
|
119
135
|
}
|
|
120
136
|
|
|
121
|
-
|
|
137
|
+
if (e.gestureEvent === 'pinch') {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
122
140
|
|
|
123
|
-
if (
|
|
141
|
+
if (interactionMutex.isTaken(this._zr, 'globalPan')) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
124
144
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
145
|
+
var x = e.offsetX;
|
|
146
|
+
var y = e.offsetY;
|
|
128
147
|
|
|
129
|
-
|
|
130
|
-
|
|
148
|
+
var oldX = this._x;
|
|
149
|
+
var oldY = this._y;
|
|
131
150
|
|
|
132
|
-
|
|
133
|
-
|
|
151
|
+
var dx = x - oldX;
|
|
152
|
+
var dy = y - oldY;
|
|
134
153
|
|
|
135
|
-
|
|
136
|
-
|
|
154
|
+
this._x = x;
|
|
155
|
+
this._y = y;
|
|
137
156
|
|
|
138
|
-
|
|
139
|
-
this._y = y;
|
|
157
|
+
this._opt.preventDefaultMouseMove && eventTool.stop(e.event);
|
|
140
158
|
|
|
141
|
-
|
|
142
|
-
this.trigger('pan', dx, dy, oldX, oldY, x, y);
|
|
143
|
-
}
|
|
159
|
+
this.trigger('pan', dx, dy, oldX, oldY, x, y);
|
|
144
160
|
}
|
|
145
161
|
|
|
146
162
|
function mouseup(e) {
|
|
@@ -149,9 +165,10 @@ define(function (require) {
|
|
|
149
165
|
|
|
150
166
|
function mousewheel(e) {
|
|
151
167
|
// wheelDelta maybe -0 in chrome mac.
|
|
152
|
-
if (e.wheelDelta === 0) {
|
|
168
|
+
if (!checkKeyBinding(this, 'zoomOnMouseWheel', e) || e.wheelDelta === 0) {
|
|
153
169
|
return;
|
|
154
170
|
}
|
|
171
|
+
|
|
155
172
|
// Convenience:
|
|
156
173
|
// Mac and VM Windows on Mac: scroll up: zoom out.
|
|
157
174
|
// Windows: scroll up: zoom in.
|
|
@@ -170,7 +187,7 @@ define(function (require) {
|
|
|
170
187
|
function zoom(e, zoomDelta, zoomX, zoomY) {
|
|
171
188
|
if (this.pointerChecker && this.pointerChecker(e, zoomX, zoomY)) {
|
|
172
189
|
// When mouse is out of roamController rect,
|
|
173
|
-
// default befavoius should be be disabled, otherwise
|
|
190
|
+
// default befavoius should not be be disabled, otherwise
|
|
174
191
|
// page sliding is disabled, contrary to expectation.
|
|
175
192
|
eventTool.stop(e.event);
|
|
176
193
|
|
|
@@ -178,5 +195,11 @@ define(function (require) {
|
|
|
178
195
|
}
|
|
179
196
|
}
|
|
180
197
|
|
|
198
|
+
function checkKeyBinding(roamController, prop, e) {
|
|
199
|
+
var setting = roamController._opt[prop];
|
|
200
|
+
return setting
|
|
201
|
+
&& (!zrUtil.isString(setting) || e.event[setting + 'Key']);
|
|
202
|
+
}
|
|
203
|
+
|
|
181
204
|
return RoamController;
|
|
182
205
|
});
|
|
@@ -1,26 +1,15 @@
|
|
|
1
1
|
define(function (require) {
|
|
2
2
|
|
|
3
|
-
var zrUtil = require('zrender/core/util');
|
|
4
3
|
var cursorHelper = require('./cursorHelper');
|
|
5
4
|
var BoundingRect = require('zrender/core/BoundingRect');
|
|
6
|
-
|
|
7
|
-
var mathMax = Math.max;
|
|
8
|
-
var mathMin = Math.min;
|
|
5
|
+
var graphicUtil = require('../../util/graphic');
|
|
9
6
|
|
|
10
7
|
var helper = {};
|
|
11
8
|
|
|
12
9
|
helper.makeRectPanelClipPath = function (rect) {
|
|
13
10
|
rect = normalizeRect(rect);
|
|
14
11
|
return function (localPoints, transform) {
|
|
15
|
-
return
|
|
16
|
-
var x = localPoint[0];
|
|
17
|
-
x = mathMax(x, rect.x);
|
|
18
|
-
x = mathMin(x, rect.x + rect.width);
|
|
19
|
-
var y = localPoint[1];
|
|
20
|
-
y = mathMax(y, rect.y);
|
|
21
|
-
y = mathMin(y, rect.y + rect.height);
|
|
22
|
-
return [x, y];
|
|
23
|
-
});
|
|
12
|
+
return graphicUtil.clipPointsByRect(localPoints, rect);
|
|
24
13
|
};
|
|
25
14
|
};
|
|
26
15
|
|
|
@@ -13,9 +13,9 @@ define(function (require) {
|
|
|
13
13
|
|
|
14
14
|
updateSelectedMap: function (targetList) {
|
|
15
15
|
this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {
|
|
16
|
-
targetMap
|
|
16
|
+
targetMap.set(target.name, target);
|
|
17
17
|
return targetMap;
|
|
18
|
-
},
|
|
18
|
+
}, zrUtil.createHashMap());
|
|
19
19
|
},
|
|
20
20
|
/**
|
|
21
21
|
* @param {string} name
|
|
@@ -23,10 +23,10 @@ define(function (require) {
|
|
|
23
23
|
// PENGING If selectedMode is null ?
|
|
24
24
|
select: function (name) {
|
|
25
25
|
var targetMap = this._selectTargetMap;
|
|
26
|
-
var target = targetMap
|
|
26
|
+
var target = targetMap.get(name);
|
|
27
27
|
var selectedMode = this.get('selectedMode');
|
|
28
28
|
if (selectedMode === 'single') {
|
|
29
|
-
|
|
29
|
+
targetMap.each(function (target) {
|
|
30
30
|
target.selected = false;
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -37,7 +37,7 @@ define(function (require) {
|
|
|
37
37
|
* @param {string} name
|
|
38
38
|
*/
|
|
39
39
|
unSelect: function (name) {
|
|
40
|
-
var target = this._selectTargetMap
|
|
40
|
+
var target = this._selectTargetMap.get(name);
|
|
41
41
|
// var selectedMode = this.get('selectedMode');
|
|
42
42
|
// selectedMode !== 'single' && target && (target.selected = false);
|
|
43
43
|
target && (target.selected = false);
|
|
@@ -47,7 +47,7 @@ define(function (require) {
|
|
|
47
47
|
* @param {string} name
|
|
48
48
|
*/
|
|
49
49
|
toggleSelected: function (name) {
|
|
50
|
-
var target = this._selectTargetMap
|
|
50
|
+
var target = this._selectTargetMap.get(name);
|
|
51
51
|
if (target != null) {
|
|
52
52
|
this[target.selected ? 'unSelect' : 'select'](name);
|
|
53
53
|
return target.selected;
|
|
@@ -58,7 +58,7 @@ define(function (require) {
|
|
|
58
58
|
* @param {string} name
|
|
59
59
|
*/
|
|
60
60
|
isSelected: function (name) {
|
|
61
|
-
var target = this._selectTargetMap
|
|
61
|
+
var target = this._selectTargetMap.get(name);
|
|
62
62
|
return target && target.selected;
|
|
63
63
|
}
|
|
64
64
|
};
|
|
@@ -2,53 +2,82 @@ define(function (require) {
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Calculate slider move result.
|
|
5
|
+
* Usage:
|
|
6
|
+
* (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as
|
|
7
|
+
* maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.
|
|
8
|
+
* (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.
|
|
5
9
|
*
|
|
6
10
|
* @param {number} delta Move length.
|
|
7
|
-
* @param {Array.<number>} handleEnds handleEnds[0]
|
|
8
|
-
*
|
|
11
|
+
* @param {Array.<number>} handleEnds handleEnds[0] can be bigger then handleEnds[1].
|
|
12
|
+
* handleEnds will be modified in this method.
|
|
9
13
|
* @param {Array.<number>} extent handleEnds is restricted by extent.
|
|
10
|
-
*
|
|
11
|
-
* @param {string}
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* extent[0] should less or equals than extent[1].
|
|
15
|
+
* @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds,
|
|
16
|
+
* where the input minSpan and maxSpan will not work.
|
|
17
|
+
* @param {number} [minSpan] The range of dataZoom can not be smaller than that.
|
|
18
|
+
* If not set, handle0 and cross handle1. If set as a non-negative
|
|
19
|
+
* number (including `0`), handles will push each other when reaching
|
|
20
|
+
* the minSpan.
|
|
21
|
+
* @param {number} [maxSpan] The range of dataZoom can not be larger than that.
|
|
16
22
|
* @return {Array.<number>} The input handleEnds.
|
|
17
23
|
*/
|
|
18
|
-
return function (delta, handleEnds, extent,
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
return function (delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {
|
|
25
|
+
// Normalize firstly.
|
|
26
|
+
handleEnds[0] = restrict(handleEnds[0], extent);
|
|
27
|
+
handleEnds[1] = restrict(handleEnds[1], extent);
|
|
28
|
+
|
|
29
|
+
delta = delta || 0;
|
|
30
|
+
|
|
31
|
+
var extentSpan = extent[1] - extent[0];
|
|
32
|
+
|
|
33
|
+
// Notice maxSpan and minSpan can be null/undefined.
|
|
34
|
+
if (minSpan != null) {
|
|
35
|
+
minSpan = restrict(minSpan, [0, extentSpan]);
|
|
21
36
|
}
|
|
37
|
+
if (maxSpan != null) {
|
|
38
|
+
maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);
|
|
39
|
+
}
|
|
40
|
+
if (handleIndex === 'all') {
|
|
41
|
+
minSpan = maxSpan = Math.abs(handleEnds[1] - handleEnds[0]);
|
|
42
|
+
handleIndex = 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var originalDistSign = getSpanSign(handleEnds, handleIndex);
|
|
22
46
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
47
|
+
handleEnds[handleIndex] += delta;
|
|
48
|
+
|
|
49
|
+
// Restrict in extent.
|
|
50
|
+
var extentMinSpan = minSpan || 0;
|
|
51
|
+
var realExtent = extent.slice();
|
|
52
|
+
originalDistSign.sign < 0 ? (realExtent[0] += extentMinSpan) : (realExtent[1] -= extentMinSpan);
|
|
53
|
+
handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent);
|
|
54
|
+
|
|
55
|
+
// Expand span.
|
|
56
|
+
var currDistSign = getSpanSign(handleEnds, handleIndex);
|
|
57
|
+
if (minSpan != null && (
|
|
58
|
+
currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan
|
|
59
|
+
)) {
|
|
60
|
+
// If minSpan exists, 'cross' is forbinden.
|
|
61
|
+
handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;
|
|
27
62
|
}
|
|
28
|
-
else {
|
|
29
|
-
delta = getRealDelta(delta, handleEnds[handleIndex], extent);
|
|
30
|
-
handleEnds[handleIndex] += delta;
|
|
31
63
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
64
|
+
// Shrink span.
|
|
65
|
+
var currDistSign = getSpanSign(handleEnds, handleIndex);
|
|
66
|
+
if (maxSpan != null && currDistSign.span > maxSpan) {
|
|
67
|
+
handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;
|
|
35
68
|
}
|
|
36
69
|
|
|
37
70
|
return handleEnds;
|
|
38
|
-
|
|
39
|
-
function getRealDelta(delta, handleEnds, extent) {
|
|
40
|
-
var handleMinMax = !handleEnds.length
|
|
41
|
-
? [handleEnds, handleEnds]
|
|
42
|
-
: handleEnds.slice();
|
|
43
|
-
handleEnds[0] > handleEnds[1] && handleMinMax.reverse();
|
|
44
|
-
|
|
45
|
-
if (delta < 0 && handleMinMax[0] + delta < extent[0]) {
|
|
46
|
-
delta = extent[0] - handleMinMax[0];
|
|
47
|
-
}
|
|
48
|
-
if (delta > 0 && handleMinMax[1] + delta > extent[1]) {
|
|
49
|
-
delta = extent[1] - handleMinMax[1];
|
|
50
|
-
}
|
|
51
|
-
return delta;
|
|
52
|
-
}
|
|
53
71
|
};
|
|
72
|
+
|
|
73
|
+
function getSpanSign(handleEnds, handleIndex) {
|
|
74
|
+
var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex];
|
|
75
|
+
// If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]
|
|
76
|
+
// is at left of handleEnds[1] for non-cross case.
|
|
77
|
+
return {span: Math.abs(dist), sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function restrict(value, extend) {
|
|
81
|
+
return Math.min(extend[1], Math.max(extend[0], value));
|
|
82
|
+
}
|
|
54
83
|
});
|