| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- var List = require("../../data/List");
- var zrUtil = require("zrender/lib/core/util");
- var SeriesModel = require("../../model/Series");
- var completeDimensions = require("../../data/helper/completeDimensions");
- var _default = SeriesModel.extend({
- type: 'series.parallel',
- dependencies: ['parallel'],
- visualColorAccessPath: 'lineStyle.normal.color',
- getInitialData: function (option, ecModel) {
- var parallelModel = ecModel.getComponent('parallel', this.get('parallelIndex'));
- var parallelAxisIndices = parallelModel.parallelAxisIndex;
- var rawData = option.data;
- var modelDims = parallelModel.dimensions;
- var dataDims = generateDataDims(modelDims, rawData);
- var dataDimsInfo = zrUtil.map(dataDims, function (dim, dimIndex) {
- var modelDimsIndex = zrUtil.indexOf(modelDims, dim);
- var axisModel = modelDimsIndex >= 0 && ecModel.getComponent('parallelAxis', parallelAxisIndices[modelDimsIndex]);
- if (axisModel && axisModel.get('type') === 'category') {
- translateCategoryValue(axisModel, dim, rawData);
- return {
- name: dim,
- type: 'ordinal'
- };
- } else if (modelDimsIndex < 0) {
- return completeDimensions.guessOrdinal(rawData, dimIndex) ? {
- name: dim,
- type: 'ordinal'
- } : dim;
- } else {
- return dim;
- }
- });
- var list = new List(dataDimsInfo, this);
- list.initData(rawData); // Anication is forbiden in progressive data mode.
- if (this.option.progressive) {
- this.option.animation = false;
- }
- return list;
- },
- /**
- * User can get data raw indices on 'axisAreaSelected' event received.
- *
- * @public
- * @param {string} activeState 'active' or 'inactive' or 'normal'
- * @return {Array.<number>} Raw indices
- */
- getRawIndicesByActiveState: function (activeState) {
- var coordSys = this.coordinateSystem;
- var data = this.getData();
- var indices = [];
- coordSys.eachActiveState(data, function (theActiveState, dataIndex) {
- if (activeState === theActiveState) {
- indices.push(data.getRawIndex(dataIndex));
- }
- });
- return indices;
- },
- defaultOption: {
- zlevel: 0,
- // 一级层叠
- z: 2,
- // 二级层叠
- coordinateSystem: 'parallel',
- parallelIndex: 0,
- label: {
- normal: {
- show: false
- },
- emphasis: {
- show: false
- }
- },
- inactiveOpacity: 0.05,
- activeOpacity: 1,
- lineStyle: {
- normal: {
- width: 1,
- opacity: 0.45,
- type: 'solid'
- }
- },
- progressive: false,
- // 100
- smooth: false,
- animationEasing: 'linear'
- }
- });
- function translateCategoryValue(axisModel, dim, rawData) {
- var axisData = axisModel.get('data');
- var numberDim = convertDimNameToNumber(dim);
- if (axisData && axisData.length) {
- zrUtil.each(rawData, function (dataItem) {
- if (!dataItem) {
- return;
- } // FIXME
- // time consuming, should use hash?
- var index = zrUtil.indexOf(axisData, dataItem[numberDim]);
- dataItem[numberDim] = index >= 0 ? index : NaN;
- });
- } // FIXME
- // 如果没有设置axis data, 应自动算出,或者提示。
- }
- function convertDimNameToNumber(dimName) {
- return +dimName.replace('dim', '');
- }
- function generateDataDims(modelDims, rawData) {
- // parallelModel.dimension should not be regarded as data
- // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];
- // We detect max dim by parallelModel.dimensions and fist
- // item in rawData arbitrarily.
- var maxDimNum = 0;
- zrUtil.each(modelDims, function (dimName) {
- var numberDim = convertDimNameToNumber(dimName);
- numberDim > maxDimNum && (maxDimNum = numberDim);
- });
- var firstItem = rawData[0];
- if (firstItem && firstItem.length - 1 > maxDimNum) {
- maxDimNum = firstItem.length - 1;
- }
- var dataDims = [];
- for (var i = 0; i <= maxDimNum; i++) {
- dataDims.push('dim' + i);
- }
- return dataDims;
- }
- module.exports = _default;
|