From 45a610ce846d5782a68cb9925013e0c3e94e81f6 Mon Sep 17 00:00:00 2001 From: lang Date: Fri, 26 Feb 2016 15:43:19 +0800 Subject: [PATCH] Series add methods dataDimToCoordDim, coordDimToDataDim --- src/chart/helper/whiskerBoxCommon.js | 23 ++++++-------- src/chart/themeRiver/ThemeRiverSeries.js | 2 +- src/component/dataZoom/AxisProxy.js | 4 +-- src/component/marker/MarkLineView.js | 12 ++++++-- src/component/marker/MarkPointView.js | 11 +++++-- src/component/marker/markerHelper.js | 8 ++--- src/component/tooltip/TooltipView.js | 4 +-- src/coord/cartesian/Grid.js | 2 +- src/coord/single/Single.js | 2 +- src/model/Series.js | 38 +++++++++++------------- 10 files changed, 55 insertions(+), 51 deletions(-) diff --git a/src/chart/helper/whiskerBoxCommon.js b/src/chart/helper/whiskerBoxCommon.js index 7ca46a8cd..7671cd3e1 100644 --- a/src/chart/helper/whiskerBoxCommon.js +++ b/src/chart/helper/whiskerBoxCommon.js @@ -72,7 +72,7 @@ define(function(require) { * @param {string} axisDim 'x' or 'y' * @return {Array.} dimensions on the axis. */ - getDimensionsOnAxis: function (axisDim) { + coordDimToDataDim: function (axisDim) { var dims = this.valueDimensions.slice(); var baseDim = ['base']; var map = { @@ -84,25 +84,20 @@ define(function(require) { /** * @override - * @param {string|number} [dataDim] - * @return {Array.} dimension info list. + * @param {string|number} dataDim + * @return {string} coord dimension */ - getCoordDimensionInfo: function (dataDim) { - var data = this.getData(); - var infoList = []; - var info; + dataDimToCoordDim: function (dataDim) { + var dim; zrUtil.each(['x', 'y'], function (coordDim, index) { - var dataDims = this.getDimensionsOnAxis(coordDim); - if (dataDim != null && zrUtil.indexOf(dataDims, dataDim) >= 0) { - info = data.getDimensionInfo(dataDim); - info.name = coordDim; + var dataDims = this.coordDimToDataDim(coordDim); + if (zrUtil.indexOf(dataDims, dataDim) >= 0) { + dim = coordDim; } - infoList[index] = data.getDimensionInfo(dataDims[0]); - infoList[index].name = coordDim; }, this); - return dataDim != null ? info : infoList; + return dim; }, /** diff --git a/src/chart/themeRiver/ThemeRiverSeries.js b/src/chart/themeRiver/ThemeRiverSeries.js index 95c0bc02b..6ddf9b0ea 100644 --- a/src/chart/themeRiver/ThemeRiverSeries.js +++ b/src/chart/themeRiver/ThemeRiverSeries.js @@ -171,7 +171,7 @@ define(function (require) { * @param {string} axisDim * @return {Array. } specified dimensions on the axis. */ - getDimensionsOnAxis: function (axisDim) { + coordDimToDataDim: function (axisDim) { var dims = { oneDim: ['time'] }; diff --git a/src/component/dataZoom/AxisProxy.js b/src/component/dataZoom/AxisProxy.js index 4d14cbe77..a161164f9 100644 --- a/src/component/dataZoom/AxisProxy.js +++ b/src/component/dataZoom/AxisProxy.js @@ -221,7 +221,7 @@ define(function(require) { return; } - each(seriesModel.getDimensionsOnAxis(axisDim), function (dim) { + each(seriesModel.coordDimToDataDim(axisDim), function (dim) { if (filterMode === 'empty') { seriesModel.setData( seriesData.map(dim, function (value) { @@ -247,7 +247,7 @@ define(function(require) { each(seriesModels, function (seriesModel) { var seriesData = seriesModel.getData(); if (seriesData) { - each(seriesModel.getDimensionsOnAxis(axisDim), function (dim) { + each(seriesModel.coordDimToDataDim(axisDim), function (dim) { var seriesExtent = seriesData.getDataExtent(dim); seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]); seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]); diff --git a/src/component/marker/MarkLineView.js b/src/component/marker/MarkLineView.js index f6c10d0b8..968c280b1 100644 --- a/src/component/marker/MarkLineView.js +++ b/src/component/marker/MarkLineView.js @@ -238,8 +238,16 @@ define(function (require) { * @param {module:echarts/model/Model} mpModel */ function createList(coordSys, seriesModel, mlModel) { - var fromData = new List(seriesModel.getCoordDimensionInfo(), mlModel); - var toData = new List(seriesModel.getCoordDimensionInfo(), mlModel); + + var coordDimsInfos = zrUtil.map(coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo( + seriesModel.coordDimToDataDim(coordDim)[0] + ); + info.name = coordDim; + return info; + }); + var fromData = new List(coordDimsInfos, mlModel); + var toData = new List(coordDimsInfos, mlModel); // No dimensions var lineData = new List([], mlModel); diff --git a/src/component/marker/MarkPointView.js b/src/component/marker/MarkPointView.js index 1dd06a8ca..d5e0fd24f 100644 --- a/src/component/marker/MarkPointView.js +++ b/src/component/marker/MarkPointView.js @@ -149,10 +149,15 @@ define(function (require) { * @param {module:echarts/model/Model} mpModel */ function createList(coordSys, seriesModel, mpModel) { - var seriesData = seriesModel.getData(); - var dataDimensions = seriesData.dimensions; + var coordDimsInfos = zrUtil.map(coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo( + seriesModel.coordDimToDataDim(coordDim)[0] + ); + info.name = coordDim; + return info; + }); - var mpData = new List(seriesModel.getCoordDimensionInfo(), mpModel); + var mpData = new List(coordDimsInfos, mpModel); if (coordSys) { mpData.initData( diff --git a/src/component/marker/markerHelper.js b/src/component/marker/markerHelper.js index 2713c30dc..0e11d6013 100644 --- a/src/component/marker/markerHelper.js +++ b/src/component/marker/markerHelper.js @@ -121,15 +121,15 @@ define(function (require) { if (item.valueIndex != null || item.valueDim != null) { ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim; - ret.valueAxis = coordSys.getAxis(seriesModel.getCoordDimensionInfo(ret.valueDataDim).name); + ret.valueAxis = coordSys.getAxis(seriesModel.dataDimToCoordDim(ret.valueDataDim)); ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis); - ret.baseDataDim = seriesModel.getDimensionsOnAxis(ret.baseAxis.dim)[0]; + ret.baseDataDim = seriesModel.coordDimToDataDim(ret.baseAxis.dim)[0]; } else { ret.baseAxis = seriesModel.getBaseAxis(); ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis); - ret.baseDataDim = seriesModel.getDimensionsOnAxis(ret.baseAxis.dim)[0]; - ret.valueDataDim = seriesModel.getDimensionsOnAxis(ret.valueAxis.dim)[0]; + ret.baseDataDim = seriesModel.coordDimToDataDim(ret.baseAxis.dim)[0]; + ret.valueDataDim = seriesModel.coordDimToDataDim(ret.valueAxis.dim)[0]; } return ret; diff --git a/src/component/tooltip/TooltipView.js b/src/component/tooltip/TooltipView.js index 950b55e3f..c79c26643 100644 --- a/src/component/tooltip/TooltipView.js +++ b/src/component/tooltip/TooltipView.js @@ -853,9 +853,9 @@ define(function (require) { return { seriesIndex: series.seriesIndex, dataIndex: series.getAxisTooltipDataIndex - ? series.getAxisTooltipDataIndex(series.getDimensionsOnAxis(baseAxis.dim), value, baseAxis) + ? series.getAxisTooltipDataIndex(series.coordDimToDataDim(baseAxis.dim), value, baseAxis) : series.getData().indexOfNearest( - series.getDimensionsOnAxis(baseAxis.dim)[0], + series.coordDimToDataDim(baseAxis.dim)[0], value[baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1] ) }; diff --git a/src/coord/cartesian/Grid.js b/src/coord/cartesian/Grid.js index c7bb9cc68..4a64e06f7 100644 --- a/src/coord/cartesian/Grid.js +++ b/src/coord/cartesian/Grid.js @@ -349,7 +349,7 @@ define(function(require, factory) { }, this); function unionExtent(data, axis, seriesModel) { - each(seriesModel.getDimensionsOnAxis(axis.dim), function (dim) { + each(seriesModel.coordDimToDataDim(axis.dim), function (dim) { axis.scale.unionExtent(data.getDataExtent( dim, axis.scale.type !== 'ordinal' )); diff --git a/src/coord/single/Single.js b/src/coord/single/Single.js index 0957c15b7..e5db6afaf 100644 --- a/src/coord/single/Single.js +++ b/src/coord/single/Single.js @@ -108,7 +108,7 @@ define(function (require) { var data = seriesModel.getData(); var dim = this.dimension; this._axis.scale.unionExtent( - data.getDataExtent(seriesModel.getDimensionsOnAxis(dim)) + data.getDataExtent(seriesModel.coordDimToDataDim(dim)) ); axisHelper.niceScaleExtent(this._axis, this._axis.model); }, this); diff --git a/src/model/Series.js b/src/model/Series.js index 1b5c253c5..748bd1ff9 100644 --- a/src/model/Series.js +++ b/src/model/Series.js @@ -128,33 +128,29 @@ define(function(require) { }, /** - * Get dimensions on the given axis. - * @param {string} axisDim + * Coord dimension to data dimension. + * + * By default the result is the same as dimensions of series data. + * But some series dimensions are different from coord dimensions (i.e. + * candlestick and boxplot). Override this method to handle those cases. + * + * Coord dimension to data dimension can be one-to-many + * + * @param {string} coordDim * @return {Array.} dimensions on the axis. */ - getDimensionsOnAxis: function (axisDim) { - return [axisDim]; // Retunr axisDim default. + coordDimToDataDim: function (coordDim) { + return [coordDim]; }, /** - * Get coordinate dimensions info. - * By default the result is the same as dimensions info of series data. - * But some series dimensions are different from coord dimensions (i.e. - * candlestick and boxplot). Override this method to handle those cases. - * @param {string|number} [dataDim] - * @return {Array.} If dataDim specified, return cooresponding - * coord dim info, otherwise return dimension - * info list. If no coordinate system, reutrn []. + * Convert data dimension to coord dimension. + * + * @param {string|number} dataDim + * @return {string} */ - getCoordDimensionInfo: function (dataDim) { - var data = this.getData(); - return this.coordinateSystem - ? ( - dataDim != null - ? data.getDimensionInfo(dataDim) - : zrUtil.map(data.dimensions, data.getDimensionInfo, data) - ) - : []; + dataDimToCoordDim: function (dataDim) { + return dataDim; }, /** -- GitLab