MCPcopy
hub / github.com/apache/echarts / lineAnimationDiff

Function lineAnimationDiff

src/chart/line/lineAnimationDiff.ts:51–185  ·  view source on GitHub ↗
(
    oldData: SeriesData, newData: SeriesData,
    oldStackedOnPoints: ArrayLike<number>, newStackedOnPoints: ArrayLike<number>,
    oldCoordSys: Cartesian2D | Polar, newCoordSys: Cartesian2D | Polar,
    oldValueOrigin: LineSeriesOption['areaStyle']['origin'],
    newValueOrigin: LineSeriesOption['areaStyle']['origin']
)

Source from the content-addressed store, hash-verified

49}
50
51export default function lineAnimationDiff(
52 oldData: SeriesData, newData: SeriesData,
53 oldStackedOnPoints: ArrayLike<number>, newStackedOnPoints: ArrayLike<number>,
54 oldCoordSys: Cartesian2D | Polar, newCoordSys: Cartesian2D | Polar,
55 oldValueOrigin: LineSeriesOption['areaStyle']['origin'],
56 newValueOrigin: LineSeriesOption['areaStyle']['origin']
57) {
58 const diff = diffData(oldData, newData);
59
60 // let newIdList = newData.mapArray(newData.getId);
61 // let oldIdList = oldData.mapArray(oldData.getId);
62
63 // convertToIntId(newIdList, oldIdList);
64
65 // // FIXME One data ?
66 // diff = arrayDiff(oldIdList, newIdList);
67
68 const currPoints: number[] = [];
69 const nextPoints: number[] = [];
70 // Points for stacking base line
71 const currStackedPoints: number[] = [];
72 const nextStackedPoints: number[] = [];
73
74 const status = [];
75 const sortedIndices: number[] = [];
76 const rawIndices: number[] = [];
77
78 const newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);
79 // const oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);
80
81 const oldPoints = oldData.getLayout('points') as number[] || [];
82 const newPoints = newData.getLayout('points') as number[] || [];
83
84 for (let i = 0; i < diff.length; i++) {
85 const diffItem = diff[i];
86 let pointAdded = true;
87
88 let oldIdx2: number;
89 let newIdx2: number;
90
91 // FIXME, animation is not so perfect when dataZoom window moves fast
92 // Which is in case remvoing or add more than one data in the tail or head
93 switch (diffItem.cmd) {
94 case '=':
95 oldIdx2 = diffItem.idx * 2;
96 newIdx2 = diffItem.idx1 * 2;
97 let currentX = oldPoints[oldIdx2];
98 let currentY = oldPoints[oldIdx2 + 1];
99 const nextX = newPoints[newIdx2];
100 const nextY = newPoints[newIdx2 + 1];
101
102 // If previous data is NaN, use next point directly
103 if (isNaN(currentX) || isNaN(currentY)) {
104 currentX = nextX;
105 currentY = nextY;
106 }
107 currPoints.push(currentX, currentY);
108 nextPoints.push(nextX, nextY);

Callers 1

_doUpdateAnimationMethod · 0.85

Calls 8

prepareDataCoordInfoFunction · 0.90
getStackedOnPointFunction · 0.90
createFloat32ArrayFunction · 0.90
diffDataFunction · 0.85
getLayoutMethod · 0.65
getRawIndexMethod · 0.65
dataToPointMethod · 0.65
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…