@@ -31,6 +31,9 @@ import { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle';
31
31
import { getECData } from '../../util/innerStore' ;
32
32
import { isString , retrieve3 } from 'zrender/src/core/util' ;
33
33
import type { GraphEdge } from '../../data/Graph' ;
34
+ import RoamController from '../../component/helper/RoamController' ;
35
+ import * as roamHelper from '../../component/helper/roamHelper' ;
36
+ import View from '../../coord/View' ;
34
37
35
38
class SankeyPathShape {
36
39
x1 = 0 ;
@@ -106,15 +109,28 @@ class SankeyView extends ChartView {
106
109
readonly type = SankeyView . type ;
107
110
108
111
private _model : SankeySeriesModel ;
109
-
112
+ private _mainGroup = new graphic . Group ( ) ;
110
113
private _focusAdjacencyDisabled = false ;
111
114
112
115
private _data : SeriesData ;
113
116
117
+ private _controller : RoamController ;
118
+ private _controllerHost : roamHelper . RoamControllerHost ;
119
+
120
+ init ( ecModel : GlobalModel , api : ExtensionAPI ) : void {
121
+ this . _controller = new RoamController ( api . getZr ( ) ) ;
122
+
123
+ this . _controllerHost = {
124
+ target : this . group
125
+ } as roamHelper . RoamControllerHost ;
126
+
127
+ this . group . add ( this . _mainGroup ) ;
128
+ }
129
+
114
130
render ( seriesModel : SankeySeriesModel , ecModel : GlobalModel , api : ExtensionAPI ) {
115
131
const sankeyView = this ;
116
132
const graph = seriesModel . getGraph ( ) ;
117
- const group = this . group ;
133
+ const group = this . _mainGroup ;
118
134
const layoutInfo = seriesModel . layoutInfo ;
119
135
// view width
120
136
const width = layoutInfo . width ;
@@ -128,8 +144,8 @@ class SankeyView extends ChartView {
128
144
129
145
group . removeAll ( ) ;
130
146
131
- group . x = layoutInfo . x ;
132
- group . y = layoutInfo . y ;
147
+ this . _updateViewCoordSys ( seriesModel , api ) ;
148
+ roamHelper . updateController ( seriesModel , api , group , this . _controller , this . _controllerHost ) ;
133
149
134
150
// generate a bezire Curve for each edge
135
151
graph . eachEdge ( function ( edge ) {
@@ -346,6 +362,25 @@ class SankeyView extends ChartView {
346
362
}
347
363
348
364
dispose ( ) {
365
+ this . _controller && this . _controller . dispose ( ) ;
366
+ this . _controllerHost = null ;
367
+ }
368
+
369
+ private _updateViewCoordSys ( seriesModel : SankeySeriesModel , api : ExtensionAPI ) {
370
+ const layoutInfo = seriesModel . layoutInfo ;
371
+ const width = layoutInfo . width ;
372
+ const height = layoutInfo . height ;
373
+
374
+ const viewCoordSys = seriesModel . coordinateSystem = new View ( ) ;
375
+ viewCoordSys . zoomLimit = seriesModel . get ( 'scaleLimit' ) ;
376
+
377
+ viewCoordSys . setBoundingRect ( 0 , 0 , width , height ) ;
378
+
379
+ viewCoordSys . setCenter ( seriesModel . get ( 'center' ) , api ) ;
380
+ viewCoordSys . setZoom ( seriesModel . get ( 'zoom' ) ) ;
381
+
382
+ this . _mainGroup . x = layoutInfo . x ;
383
+ this . _mainGroup . y = layoutInfo . y ;
349
384
}
350
385
}
351
386
0 commit comments