diff --git a/src/chart/bar.js b/src/chart/bar.js index 32f1cf8483d5c398dda93cf6be1b0afe4da754a0..ed5ef59ed34be45aeb11e074fe1a93098d2b6346 100644 --- a/src/chart/bar.js +++ b/src/chart/bar.js @@ -20,5 +20,5 @@ define(function (require) { }); // In case developer forget to include grid component - require('../component/grid'); + require('../component/gridSimple'); }); \ No newline at end of file diff --git a/src/chart/line.js b/src/chart/line.js index b9171cd748d5349fcbf6e3d6940757b35cbd92c2..dc748a0184d5b19cce55d317a1d7fb9c3abc933a 100644 --- a/src/chart/line.js +++ b/src/chart/line.js @@ -20,5 +20,5 @@ define(function (require) { )); // In case developer forget to include grid component - require('../component/grid'); + require('../component/gridSimple'); }); \ No newline at end of file diff --git a/src/chart/pictorialBar.js b/src/chart/pictorialBar.js index 6e3a7bb0466f2434340fd5e6a2d5cfb75393b526..9027fd3da324820b244818139fea7b5d215109a8 100644 --- a/src/chart/pictorialBar.js +++ b/src/chart/pictorialBar.js @@ -17,5 +17,5 @@ define(function (require) { )); // In case developer forget to include grid component - require('../component/grid'); + require('../component/gridSimple'); }); \ No newline at end of file diff --git a/src/chart/scatter.js b/src/chart/scatter.js index 4a2cc4a72704edcd4252853dd79537fa63cbb78c..dbe42268749207d731e729a404e1b42121c7678e 100644 --- a/src/chart/scatter.js +++ b/src/chart/scatter.js @@ -14,5 +14,5 @@ define(function (require) { )); // In case developer forget to include grid component - require('../component/grid'); + require('../component/gridSimple'); }); \ No newline at end of file diff --git a/src/component/axis/AngleAxisView.js b/src/component/axis/AngleAxisView.js index c1da546f343be928a6cb4c0845133c7cc70359a0..992904946530236ad555cb88a7eca5d54615a58a 100644 --- a/src/component/axis/AngleAxisView.js +++ b/src/component/axis/AngleAxisView.js @@ -4,7 +4,6 @@ define(function (require) { var zrUtil = require('zrender/core/util'); var graphic = require('../../util/graphic'); var Model = require('../../model/Model'); - var PolarAxisPointer = require('../axisPointer/PolarAxisPointer'); var elementList = ['axisLine', 'axisLabel', 'axisTick', 'splitLine', 'splitArea']; @@ -24,7 +23,7 @@ define(function (require) { type: 'angleAxis', - axisPointerClass: PolarAxisPointer, + axisPointerClass: 'PolarAxisPointer', render: function (angleAxisModel, ecModel) { this.group.removeAll(); diff --git a/src/component/axis/AxisView.js b/src/component/axis/AxisView.js index 7960824ab46251c8a2117ed22b1d3acc4ac7df9f..d480dd0a21448a0869d22c2ed8678c6267fc1d82 100644 --- a/src/component/axis/AxisView.js +++ b/src/component/axis/AxisView.js @@ -14,6 +14,10 @@ define(function (require) { */ _axisPointer: null, + /** + * @protected + * @type {string} + */ axisPointerClass: null, /** @@ -25,9 +29,10 @@ define(function (require) { // (axis scale updated), and should be performed each time update. // So put it here temporarily, although it is not appropriate to // put a model-writing procedure in `view`. - axisPointerModelHelper.fixValue(axisModel); + this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel); AxisView.superApply(this, 'render', arguments); + updateAxisPointer(this, axisModel, ecModel, api, payload, true); }, @@ -63,12 +68,13 @@ define(function (require) { }); function updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) { - if (!axisView.axisPointerClass) { + var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass); + if (!Clazz) { return; } var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel); axisPointerModel - ? (axisView._axisPointer || (axisView._axisPointer = new axisView.axisPointerClass())) + ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())) .render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api); } @@ -79,5 +85,20 @@ define(function (require) { axisView._axisPointer = null; } + var axisPointerClazz = []; + + AxisView.registerAxisPointerClass = function (type, clazz) { + if (__DEV__) { + if (axisPointerClazz[type]) { + throw new Error('axisPointer ' + type + ' exists'); + } + } + axisPointerClazz[type] = clazz; + }; + + AxisView.getAxisPointerClass = function (type) { + return type && axisPointerClazz[type]; + }; + return AxisView; }); \ No newline at end of file diff --git a/src/component/axis/CartesianAxisView.js b/src/component/axis/CartesianAxisView.js index 0be74017a229c9a1061c4f293675c6f0e872bf51..d437c8add5efd2914ac12c9c99e35f600cfe69ce 100644 --- a/src/component/axis/CartesianAxisView.js +++ b/src/component/axis/CartesianAxisView.js @@ -3,7 +3,6 @@ define(function (require) { var zrUtil = require('zrender/core/util'); var graphic = require('../../util/graphic'); var AxisBuilder = require('./AxisBuilder'); - var CartesianAxisPointer = require('../axisPointer/CartesianAxisPointer'); var AxisView = require('./AxisView'); var cartesianAxisHelper = require('./cartesianAxisHelper'); var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick; @@ -28,7 +27,7 @@ define(function (require) { type: 'cartesianAxis', - axisPointerClass: CartesianAxisPointer, + axisPointerClass: 'CartesianAxisPointer', /** * @override diff --git a/src/component/axis/RadiusAxisView.js b/src/component/axis/RadiusAxisView.js index 3400511ca5dc379680d3a148a488ded963cdf62b..1346dda8b24a312fe233b645df3108d4da5fc2b0 100644 --- a/src/component/axis/RadiusAxisView.js +++ b/src/component/axis/RadiusAxisView.js @@ -5,7 +5,6 @@ define(function (require) { var zrUtil = require('zrender/core/util'); var graphic = require('../../util/graphic'); var AxisBuilder = require('./AxisBuilder'); - var PolarAxisPointer = require('../axisPointer/PolarAxisPointer'); var axisBuilderAttrs = [ 'axisLine', 'axisLabel', 'axisTick', 'axisName' @@ -18,7 +17,7 @@ define(function (require) { type: 'radiusAxis', - axisPointerClass: PolarAxisPointer, + axisPointerClass: 'PolarAxisPointer', render: function (radiusAxisModel, ecModel) { this.group.removeAll(); diff --git a/src/component/axis/SingleAxisView.js b/src/component/axis/SingleAxisView.js index c46995d4608fd29d7d0675fe47121d9f61117ca8..f2b77fef6c2975c3e51392bdf3477d0773dd2352 100644 --- a/src/component/axis/SingleAxisView.js +++ b/src/component/axis/SingleAxisView.js @@ -3,7 +3,6 @@ define(function (require) { var AxisBuilder = require('./AxisBuilder'); var zrUtil = require('zrender/core/util'); var graphic = require('../../util/graphic'); - var SingleAxisPointer = require('../axisPointer/SingleAxisPointer'); var singleAxisHelper = require('./singleAxisHelper'); var getInterval = AxisBuilder.getInterval; var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick; @@ -18,7 +17,7 @@ define(function (require) { type: 'singleAxis', - axisPointerClass: SingleAxisPointer, + axisPointerClass: 'SingleAxisPointer', render: function (axisModel, ecModel, api, payload) { diff --git a/src/component/axisPointer/CartesianAxisPointer.js b/src/component/axisPointer/CartesianAxisPointer.js index c8cbe84d2d79f2aa2648ea123fe7c6f72d98aa1b..baaf8eade8e32a9728bb358581e350f22e190564 100644 --- a/src/component/axisPointer/CartesianAxisPointer.js +++ b/src/component/axisPointer/CartesianAxisPointer.js @@ -5,6 +5,7 @@ define(function(require) { var BaseAxisPointer = require('./BaseAxisPointer'); var viewHelper = require('./viewHelper'); var cartesianAxisHelper = require('../axis/cartesianAxisHelper'); + var AxisView = require('../axis/AxisView'); var CartesianAxisPointer = BaseAxisPointer.extend({ @@ -119,5 +120,7 @@ define(function(require) { return axis.dim === 'x' ? 0 : 1; } + AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer); + return CartesianAxisPointer; }); \ No newline at end of file diff --git a/src/component/axisPointer/PolarAxisPointer.js b/src/component/axisPointer/PolarAxisPointer.js index 4972b76e5c6609cdc6489bccdc2817f07088839f..3c4a8e5ae4d65f3a1af84305ffa7644766be318f 100644 --- a/src/component/axisPointer/PolarAxisPointer.js +++ b/src/component/axisPointer/PolarAxisPointer.js @@ -7,6 +7,7 @@ define(function(require) { var viewHelper = require('./viewHelper'); var matrix = require('zrender/core/matrix'); var AxisBuilder = require('../axis/AxisBuilder'); + var AxisView = require('../axis/AxisView'); var PolarAxisPointer = BaseAxisPointer.extend({ @@ -135,5 +136,7 @@ define(function(require) { } }; + AxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer); + return PolarAxisPointer; }); \ No newline at end of file diff --git a/src/component/axisPointer/SingleAxisPointer.js b/src/component/axisPointer/SingleAxisPointer.js index 7f1e6b13eef4a7a7f67a7bd5516b25ab6f921498..33144f0928d4a2b7013b5b8af48d4b14e1678866 100644 --- a/src/component/axisPointer/SingleAxisPointer.js +++ b/src/component/axisPointer/SingleAxisPointer.js @@ -5,6 +5,7 @@ define(function(require) { var BaseAxisPointer = require('./BaseAxisPointer'); var viewHelper = require('./viewHelper'); var singleAxisHelper = require('../axis/singleAxisHelper'); + var AxisView = require('../axis/AxisView'); var XY = ['x', 'y']; var WH = ['width', 'height']; @@ -115,5 +116,7 @@ define(function(require) { return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]]; } + AxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer); + return SingleAxisPointer; }); \ No newline at end of file diff --git a/src/component/axisPointer/modelHelper.js b/src/component/axisPointer/modelHelper.js index 5cf2eb5a091e2b7e99e77dbe6467e8a575468e30..05139e3039e1a81ba1176e6534bbcf5a6726da8a 100644 --- a/src/component/axisPointer/modelHelper.js +++ b/src/component/axisPointer/modelHelper.js @@ -305,7 +305,7 @@ define(function(require) { }; helper.getAxisInfo = function (axisModel) { - var coordSysAxesInfo = axisModel.ecModel.getComponent('axisPointer').coordSysAxesInfo; + var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo; return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)]; }; diff --git a/src/component/grid.js b/src/component/grid.js index fb7c90e1e4ba8a414f76b407faae0c1bf9308640..50c5509d8ef5d77f6b0bc62aea6baeda5bf7997f 100644 --- a/src/component/grid.js +++ b/src/component/grid.js @@ -2,6 +2,8 @@ define(function(require) { require('./gridSimple'); + require('./axisPointer/CartesianAxisPointer'); + require('./axisPointer'); }); \ No newline at end of file diff --git a/src/component/polar.js b/src/component/polar.js index fdb85eecc3c140c40b8953b458561673ec2ca96b..b109b2735e1b24970b8537ae508200c43af5f544 100644 --- a/src/component/polar.js +++ b/src/component/polar.js @@ -6,6 +6,8 @@ define(function(require) { require('./radiusAxis'); require('./axisPointer'); + require('./axisPointer/PolarAxisPointer'); + // Polar view require('../echarts').extendComponentView({ type: 'polar' diff --git a/src/component/singleAxis.js b/src/component/singleAxis.js index aa822117ec37791902c4ff6def6723f5c27a245f..138b651aadb3e419c451e10f3ff3f8f3f17e4a4e 100644 --- a/src/component/singleAxis.js +++ b/src/component/singleAxis.js @@ -5,6 +5,8 @@ define(function (require) { require('../coord/single/AxisModel'); require('./axisPointer'); + require('./axisPointer/SingleAxisPointer'); + var echarts = require('../echarts'); echarts.extendComponentView({ diff --git a/test/gridSimple.html b/test/gridSimple.html new file mode 100644 index 0000000000000000000000000000000000000000..0d2b40bde80231c77a91750a53ec920ca1bd1ad0 --- /dev/null +++ b/test/gridSimple.html @@ -0,0 +1,144 @@ + + + + + + + + + + +
+
+ + + \ No newline at end of file