提交 7577caae 编写于 作者: P pissang

ts: fix parallel. clean code

上级 fc4c8b37
......@@ -23,7 +23,6 @@ import {createSymbol} from '../../util/symbol';
import {parsePercent, isNumeric} from '../../util/number';
import {setLabel} from './helper';
import ChartView from '../../view/Chart';
import ComponentView from '../../view/Component';
import PictorialBarSeriesModel, {PictorialBarDataItemOption} from './PictorialBarSeries';
import ExtensionAPI from '../../ExtensionAPI';
import List from '../../data/List';
......
......@@ -21,7 +21,15 @@
import {each, createHashMap} from 'zrender/src/core/util';
import SeriesModel from '../../model/Series';
import createListFromArray from '../helper/createListFromArray';
import { SeriesOption, SeriesEncodeOptionMixin, LineStyleOption, LabelOption, AnimationOptionMixin, SeriesTooltipOption, DimensionName } from '../../util/types';
import {
SeriesOption,
SeriesEncodeOptionMixin,
LineStyleOption,
LabelOption,
SeriesTooltipOption,
DimensionName,
OptionDataValue
} from '../../util/types';
import GlobalModel from '../../model/Global';
import List from '../../data/List';
import { ParallelActiveState } from '../../coord/parallel/AxisModel';
......@@ -29,6 +37,20 @@ import Parallel from '../../coord/parallel/Parallel';
import Source from '../../data/Source';
import ParallelModel from '../../coord/parallel/ParallelModel';
type ParallelSeriesDataValue = OptionDataValue[]
export interface ParallelSeriesDataItemOption {
value?: ParallelSeriesDataValue[]
lineStyle?: LineStyleOption
label?: LabelOption
emphasis?: {
lineStyle?: LineStyleOption
label?: LabelOption
}
}
export interface ParallelSeriesOption extends
SeriesOption,
......@@ -52,12 +74,14 @@ export interface ParallelSeriesOption extends
label?: LabelOption;
lineStyle?: LineStyleOption;
}
data?: (ParallelSeriesDataValue | ParallelSeriesDataItemOption)[]
}
class ParallelSeries extends SeriesModel<ParallelSeriesOption> {
class ParallelSeriesModel extends SeriesModel<ParallelSeriesOption> {
static type = 'series.parallel';
readonly type = ParallelSeries.type;
readonly type = ParallelSeriesModel.type;
static dependencies = ['parallel'];
......@@ -126,9 +150,9 @@ class ParallelSeries extends SeriesModel<ParallelSeriesOption> {
}
SeriesModel.registerClass(ParallelSeries);
SeriesModel.registerClass(ParallelSeriesModel);
function setEncodeAndDimensions(source: Source, seriesModel: ParallelSeries): void {
function setEncodeAndDimensions(source: Source, seriesModel: ParallelSeriesModel): void {
// The mapping of parallelAxis dimension to data dimension can
// be specified in parallelAxis.option.dim. For example, if
// parallelAxis.option.dim is 'dim3', it mapping to the third
......@@ -158,4 +182,4 @@ function convertDimNameToNumber(dimName: DimensionName): number {
return +dimName.replace('dim', '');
}
export default ParallelSeries;
export default ParallelSeriesModel;
......@@ -17,42 +17,48 @@
* under the License.
*/
// @ts-nocheck
import * as graphic from '../../util/graphic';
import ChartView from '../../view/Chart';
import List from '../../data/List';
import ParallelSeriesModel, { ParallelSeriesDataItemOption } from './ParallelSeries';
import GlobalModel from '../../model/Global';
import ExtensionAPI from '../../ExtensionAPI';
import { StageHandlerProgressParams, ParsedValue, Payload } from '../../util/types';
import Parallel from '../../coord/parallel/Parallel';
import { StyleProps } from 'zrender/src/graphic/Style';
import { OptionAxisType } from '../../coord/axisCommonTypes';
const DEFAULT_SMOOTH = 0.3;
interface ParallelDrawSeriesScope {
smooth: number
lineStyle: StyleProps
}
class ParallelView extends ChartView {
static type = 'parallel'
type = ParallelView.type
var DEFAULT_SMOOTH = 0.3;
var ParallelView = ChartView.extend({
type: 'parallel',
private _dataGroup = new graphic.Group()
init: function () {
private _data: List
/**
* @type {module:zrender/container/Group}
* @private
*/
this._dataGroup = new graphic.Group();
private _initialized = false
init() {
this.group.add(this._dataGroup);
/**
* @type {module:echarts/data/List}
*/
this._data;
/**
* @type {boolean}
*/
this._initialized;
},
}
/**
* @override
*/
render: function (seriesModel, ecModel, api, payload) {
render(
seriesModel: ParallelSeriesModel,
ecModel: GlobalModel,
api: ExtensionAPI,
payload: Payload & {
animation?: boolean
}
) {
var dataGroup = this._dataGroup;
var data = seriesModel.getData();
var oldData = this._data;
......@@ -66,13 +72,13 @@ var ParallelView = ChartView.extend({
.remove(remove)
.execute();
function add(newDataIndex) {
function add(newDataIndex: number) {
var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);
updateElCommon(line, data, newDataIndex, seriesScope);
}
function update(newDataIndex, oldDataIndex) {
var line = oldData.getItemGraphicEl(oldDataIndex);
function update(newDataIndex: number, oldDataIndex: number) {
var line = oldData.getItemGraphicEl(oldDataIndex) as graphic.Polyline;
var points = createLinePoints(data, newDataIndex, dimensions, coordSys);
data.setItemGraphicEl(newDataIndex, line);
var animationModel = (payload && payload.animation === false) ? null : seriesModel;
......@@ -81,7 +87,7 @@ var ParallelView = ChartView.extend({
updateElCommon(line, data, newDataIndex, seriesScope);
}
function remove(oldDataIndex) {
function remove(oldDataIndex: number) {
var line = oldData.getItemGraphicEl(oldDataIndex);
dataGroup.remove(line);
}
......@@ -101,15 +107,15 @@ var ParallelView = ChartView.extend({
}
this._data = data;
},
}
incrementalPrepareRender: function (seriesModel, ecModel, api) {
incrementalPrepareRender(seriesModel: ParallelSeriesModel, ecModel: GlobalModel, api: ExtensionAPI) {
this._initialized = true;
this._data = null;
this._dataGroup.removeAll();
},
}
incrementalRender: function (taskParams, seriesModel, ecModel) {
incrementalRender(taskParams: StageHandlerProgressParams, seriesModel: ParallelSeriesModel, ecModel: GlobalModel) {
var data = seriesModel.getData();
var coordSys = seriesModel.coordinateSystem;
var dimensions = coordSys.dimensions;
......@@ -120,49 +126,18 @@ var ParallelView = ChartView.extend({
line.incremental = true;
updateElCommon(line, data, dataIndex, seriesScope);
}
},
dispose: function () {},
// _renderForProgressive: function (seriesModel) {
// var dataGroup = this._dataGroup;
// var data = seriesModel.getData();
// var oldData = this._data;
// var coordSys = seriesModel.coordinateSystem;
// var dimensions = coordSys.dimensions;
// var option = seriesModel.option;
// var progressive = option.progressive;
// var smooth = option.smooth ? SMOOTH : null;
// // In progressive animation is disabled, so use simple data diff,
// // which effects performance less.
// // (Typically performance for data with length 7000+ like:
// // simpleDiff: 60ms, addEl: 184ms,
// // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit))
// if (simpleDiff(oldData, data, dimensions)) {
// dataGroup.removeAll();
// data.each(function (dataIndex) {
// addEl(data, dataGroup, dataIndex, dimensions, coordSys);
// });
// }
// updateElCommon(data, progressive, smooth);
// // Consider switch between progressive and not.
// data.__plProgressive = true;
// this._data = data;
// },
}
/**
* @override
*/
remove: function () {
remove() {
this._dataGroup && this._dataGroup.removeAll();
this._data = null;
}
});
}
function createGridClipShape(coordSys, seriesModel, cb) {
function createGridClipShape(coordSys: Parallel, seriesModel: ParallelSeriesModel, cb: () => void) {
var parallelModel = coordSys.model;
var rect = coordSys.getRect();
var rectEl = new graphic.Rect({
......@@ -185,7 +160,7 @@ function createGridClipShape(coordSys, seriesModel, cb) {
return rectEl;
}
function createLinePoints(data, dataIndex, dimensions, coordSys) {
function createLinePoints(data: List, dataIndex: number, dimensions: string[], coordSys: Parallel) {
var points = [];
for (var i = 0; i < dimensions.length; i++) {
var dimName = dimensions[i];
......@@ -197,7 +172,7 @@ function createLinePoints(data, dataIndex, dimensions, coordSys) {
return points;
}
function addEl(data, dataGroup, dataIndex, dimensions, coordSys) {
function addEl(data: List, dataGroup: graphic.Group, dataIndex: number, dimensions: string[], coordSys: Parallel) {
var points = createLinePoints(data, dataIndex, dimensions, coordSys);
var line = new graphic.Polyline({
shape: {points: points},
......@@ -209,20 +184,27 @@ function addEl(data, dataGroup, dataIndex, dimensions, coordSys) {
return line;
}
function makeSeriesScope(seriesModel) {
function makeSeriesScope(seriesModel: ParallelSeriesModel): ParallelDrawSeriesScope {
var smooth = seriesModel.get('smooth', true);
smooth === true && (smooth = DEFAULT_SMOOTH);
return {
lineStyle: seriesModel.getModel('lineStyle').getLineStyle(),
smooth: smooth != null ? smooth : DEFAULT_SMOOTH
smooth: smooth != null ? +smooth : DEFAULT_SMOOTH
};
}
function updateElCommon(el, data, dataIndex, seriesScope) {
function updateElCommon(
el: graphic.Polyline,
data: List,
dataIndex: number,
seriesScope: ParallelDrawSeriesScope
) {
var lineStyle = seriesScope.lineStyle;
if (data.hasItemOption) {
var lineStyleModel = data.getItemModel(dataIndex).getModel('lineStyle');
var lineStyleModel = data.getItemModel<ParallelSeriesDataItemOption>(dataIndex)
.getModel('lineStyle');
lineStyle = lineStyleModel.getLineStyle();
}
......@@ -260,10 +242,12 @@ function updateElCommon(el, data, dataIndex, seriesScope) {
// }
// FIXME put in common util?
function isEmptyValue(val, axisType) {
function isEmptyValue(val: ParsedValue, axisType: OptionAxisType) {
return axisType === 'category'
? val == null
: (val == null || isNaN(val)); // axisType === 'value'
: (val == null || isNaN(val as number)); // axisType === 'value'
}
ChartView.registerClass(ParallelView);
export default ParallelView;
......@@ -18,7 +18,7 @@
*/
import ParallelSeries, { ParallelSeriesOption } from './ParallelSeries';
import ParallelSeriesModel, { ParallelSeriesOption } from './ParallelSeries';
import { StageHandler } from '../../util/types';
......@@ -28,7 +28,7 @@ var parallelVisual: StageHandler = {
seriesType: 'parallel',
reset: function (seriesModel: ParallelSeries, ecModel) {
reset: function (seriesModel: ParallelSeriesModel, ecModel) {
// var itemStyleModel = seriesModel.getModel('itemStyle');
var lineStyleModel = seriesModel.getModel('lineStyle');
......
......@@ -22,7 +22,7 @@ import * as echarts from '../../echarts';
import * as zrUtil from 'zrender/src/core/util';
import BoundingRect from 'zrender/src/core/BoundingRect';
import * as visualSolution from '../../visual/visualSolution';
import selector, { BrushSelectableArea, makeBrushCommonSelectorForSeries } from './selector';
import { BrushSelectableArea, makeBrushCommonSelectorForSeries } from './selector';
import * as throttleUtil from '../../util/throttle';
import BrushTargetManager from '../helper/BrushTargetManager';
import GlobalModel from '../../model/Global';
......@@ -30,7 +30,7 @@ import ExtensionAPI from '../../ExtensionAPI';
import { Payload } from '../../util/types';
import BrushModel, { BrushAreaParamInternal } from './BrushModel';
import SeriesModel from '../../model/Series';
import ParallelSeries from '../../chart/parallel/ParallelSeries';
import ParallelSeriesModel from '../../chart/parallel/ParallelSeries';
import { ZRenderType } from 'zrender/src/zrender';
import { BrushType, BrushDimensionMinMax } from '../helper/BrushController';
......@@ -41,7 +41,7 @@ var DISPATCH_METHOD = '__ecBrushSelect' as const;
var DISPATCH_FLAG = '__ecInBrushSelectEvent' as const;
var PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;
interface BrushGlobalDispatcher extends ZRenderType {
interface BrushGlobalDispatcher extends ZRenderType {
[DISPATCH_FLAG]: boolean;
[DISPATCH_METHOD]: typeof doDispatch
}
......@@ -161,11 +161,11 @@ echarts.registerVisual(PRIORITY_BRUSH, function (ecModel: GlobalModel, api: Exte
var rangeInfoList: BrushSelectableArea[] = rangeInfoBySeries[seriesIndex] = [];
seriesModel.subType === 'parallel'
? stepAParallel(seriesModel as ParallelSeries, seriesIndex)
? stepAParallel(seriesModel as ParallelSeriesModel, seriesIndex)
: stepAOthers(seriesModel, seriesIndex, rangeInfoList);
});
function stepAParallel(seriesModel: ParallelSeries, seriesIndex: number): void {
function stepAParallel(seriesModel: ParallelSeriesModel, seriesIndex: number): void {
var coordSys = seriesModel.coordinateSystem;
hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed();
......
......@@ -18,5 +18,9 @@
*/
import '../coord/parallel/parallelCreator';
import '../coord/parallel/AxisModel';
import '../coord/parallel/ParallelModel';
import './axis/parallelAxisAction';
import './axis/ParallelAxisView';
......@@ -70,7 +70,7 @@ class ParallelAxisModel extends ComponentModel<ParallelAxisOption> {
/**
* @readOnly
*/
activeIntervals: ParallelAxisInterval[];
activeIntervals: ParallelAxisInterval[] = [];
getAreaSelectStyle(): ParallelAreaSelectStyleProps {
return makeStyleMapper(
......
......@@ -37,9 +37,7 @@ import ExtensionAPI from '../../ExtensionAPI';
import { Dictionary, DimensionName, ScaleDataValue } from '../../util/types';
import { CoordinateSystem, CoordinateSystemMaster } from '../CoordinateSystem';
import ParallelAxisModel, { ParallelActiveState } from './AxisModel';
import ParallelSeries from '../../chart/parallel/ParallelSeries';
import List from '../../data/List';
import { ParsedModelFinder } from '../../util/model';
var each = zrUtil.each;
var mathMin = Math.min;
......
......@@ -24,7 +24,7 @@ import Parallel from './Parallel';
import { DimensionName, ComponentOption, BoxLayoutOptionMixin } from '../../util/types';
import ParallelAxisModel, { ParallelAxisOption } from './AxisModel';
import GlobalModel from '../../model/Global';
import ParallelSeries from '../../chart/parallel/ParallelSeries';
import ParallelSeriesModel from '../../chart/parallel/ParallelSeries';
import SeriesModel from '../../model/Series';
......@@ -119,7 +119,7 @@ class ParallelModel extends ComponentModel<ParallelCoordinateSystemOption> {
* Whether series or axis is in this coordinate system.
*/
contains(model: SeriesModel | ParallelAxisModel, ecModel: GlobalModel): boolean {
var parallelIndex = (model as ParallelSeries).get('parallelIndex');
var parallelIndex = (model as ParallelSeriesModel).get('parallelIndex');
return parallelIndex != null
&& ecModel.getComponent('parallel', parallelIndex) === this;
}
......
......@@ -27,7 +27,7 @@ import GlobalModel from '../../model/Global';
import ExtensionAPI from '../../ExtensionAPI';
import ParallelModel from './ParallelModel';
import { CoordinateSystemMaster } from '../CoordinateSystem';
import ParallelSeries from '../../chart/parallel/ParallelSeries';
import ParallelSeriesModel from '../../chart/parallel/ParallelSeries';
import CoordinateSystemManager from '../../CoordinateSystem';
function create(ecModel: GlobalModel, api: ExtensionAPI): CoordinateSystemMaster[] {
......@@ -47,11 +47,11 @@ function create(ecModel: GlobalModel, api: ExtensionAPI): CoordinateSystemMaster
// Inject the coordinateSystems into seriesModel
ecModel.eachSeries(function (seriesModel) {
if ((seriesModel as ParallelSeries).get('coordinateSystem') === 'parallel') {
if ((seriesModel as ParallelSeriesModel).get('coordinateSystem') === 'parallel') {
var parallelModel = ecModel.queryComponents({
mainType: 'parallel',
index: (seriesModel as ParallelSeries).get('parallelIndex'),
id: (seriesModel as ParallelSeries).get('parallelId')
index: (seriesModel as ParallelSeriesModel).get('parallelIndex'),
id: (seriesModel as ParallelSeriesModel).get('parallelId')
})[0] as ParallelModel;
seriesModel.coordinateSystem = parallelModel.coordinateSystem;
}
......
......@@ -151,7 +151,7 @@ function startTests(testsNameList, socket, {
}
threadsCount = Math.min(threadsCount, pendingTests.length);
// Assigning tests to threads
runningThreads = new Array(threadsCount).fill(0).map(a => new Thread() );
runningThreads = new Array(threadsCount).fill(0).map(() => new Thread() );
for (let i = 0; i < pendingTests.length; i++) {
runningThreads[i % threadsCount].tests.push(pendingTests[i]);
}
......@@ -178,7 +178,7 @@ function startTests(testsNameList, socket, {
function checkPuppeteer() {
try {
const packageConfig = require('puppeteer/package.json');
console.log(`puppeteer version: ${packageConfig.version}`)
console.log(`puppeteer version: ${packageConfig.version}`);
return semver.satisfies(packageConfig.version, '>=1.19.0');
}
catch (e) {
......
......@@ -24,7 +24,6 @@ const fs = require('fs');
const rollup = require('rollup');
const resolve = require('rollup-plugin-node-resolve');
const commonjs = require('rollup-plugin-commonjs');
const util = require('util');
const config = require('./config');
function modifyEChartsCode(code) {
......@@ -139,4 +138,4 @@ module.exports.waitTime = function (time) {
resolve();
}, time);
});
}
\ No newline at end of file
};
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册