1
1
'use strict' ;
2
2
import { Canvas , Layout } from 'butterfly-dag' ;
3
- import { Node } from './node ' ;
3
+ import AutoLayout from '../utils/layout ' ;
4
4
5
5
export default class MonitorCanvas extends Canvas {
6
6
constructor ( opts ) {
@@ -23,64 +23,30 @@ export default class MonitorCanvas extends Canvas {
23
23
result . _onSearchGroup = this . _onSearchGroup ;
24
24
return result ;
25
25
}
26
- draw ( opts , callback ) {
27
-
28
- // group的分页处理
29
- if ( this . _groupEnablePagination && opts . groups && opts . groups . length > 0 ) {
30
-
31
- let _groupsObj = { } ;
32
- let _groupHiddenNodes = { } ;
33
-
34
- for ( let i = 0 ; i < opts . groups . length ; i ++ ) {
35
- let _group = opts . groups [ i ] ;
36
- if ( ! _groupsObj [ _group . id ] ) {
37
- _groupsObj [ _group . id ] = [ ] ;
38
- }
39
- }
40
- for ( let i = 0 ; i < opts . nodes . length ; i ++ ) {
41
- let _node = opts . nodes [ i ] ;
42
- if ( _node . group ) {
43
- _groupsObj [ _node . group ] . push ( _node ) ;
44
- }
45
- }
46
-
47
- opts . groups . forEach ( ( item ) => {
48
- let nodes = _groupsObj [ item . id ] ;
49
- item . _enablePagination = this . _groupEnablePagination ;
50
- item . _allNodeList = item . _showNodeList = nodes ;
51
- item . _pageSize = this . _groupPageSize ;
52
- item . _pageNum = 1 ;
53
- item . _totolNum = nodes . length ;
54
- } ) ;
55
-
56
- let _rmNodes = [ ] ;
57
- for ( let key in _groupsObj ) {
58
- let _group = _groupsObj [ key ] ;
59
- _rmNodes = _rmNodes . concat ( _group . slice ( this . _groupPageSize , _group . length ) ) ;
60
- }
61
-
62
- opts . nodes = opts . nodes . filter ( ( item ) => {
63
- let isRmNode = _ . some ( _rmNodes , ( node ) => node . id === item . id ) ;
64
- if ( isRmNode ) {
65
- _groupHiddenNodes [ item . id ] = item ;
66
- }
67
- return ! isRmNode ;
68
- } ) ;
69
- }
70
-
71
- super . draw ( opts , callback ) ;
72
- }
73
26
redraw ( ) {
74
27
let nodes = this . nodes . map ( ( item ) => {
75
28
return item . options ;
76
29
} ) ;
30
+ let groups = this . groups . map ( ( item ) => {
31
+ return {
32
+ id : item . id ,
33
+ width : item . width ,
34
+ height : item . height ,
35
+ isGroup : true
36
+ }
37
+ } ) ;
77
38
let edges = this . edges . map ( ( item ) => {
78
39
return {
79
- source : item . sourceNode . id ,
80
- target : item . targetNode . id
40
+ sourceNode : item . sourceNode . id ,
41
+ targetNode : item . targetNode . id
81
42
}
82
43
} ) ;
83
- Layout . dagreLayout ( {
44
+
45
+ AutoLayout ( {
46
+ nodes : nodes ,
47
+ groups : groups ,
48
+ edges : edges
49
+ } , {
84
50
rankdir : _ . get ( this . layout , 'options.rankdir' ) || 'TB' ,
85
51
align : _ . get ( this . layout , 'options.align' ) ,
86
52
nodeSize : _ . get ( this . layout , 'options.nodeSize' ) ,
@@ -89,14 +55,10 @@ export default class MonitorCanvas extends Canvas {
89
55
nodesep : _ . get ( this . layout , 'options.nodesep' ) || 50 ,
90
56
ranksep : _ . get ( this . layout , 'options.ranksep' ) || 50 ,
91
57
controlPoints : _ . get ( this . layout , 'options.controlPoints' ) || false ,
92
- data : {
93
- nodes : nodes ,
94
- edges : edges . map ( item => ( {
95
- source : item . type === 'endpoint' ? item . sourceNode : item . source ,
96
- target : item . type === 'endpoint' ? item . targetNode : item . target
97
- } ) )
98
- }
58
+ } , {
59
+ rowCtn : this . _groupRowCnt
99
60
} ) ;
61
+
100
62
this . nodes . forEach ( ( item , index ) => {
101
63
let newLeft = nodes [ index ] . left ;
102
64
let newTop = nodes [ index ] . top ;
@@ -106,6 +68,18 @@ export default class MonitorCanvas extends Canvas {
106
68
item . moveTo ( newLeft , newTop ) ;
107
69
}
108
70
} ) ;
71
+
72
+ this . groups . forEach ( ( item , index ) => {
73
+ let newLeft = groups [ index ] . left ;
74
+ let newTop = groups [ index ] . top ;
75
+ if ( item . top !== newTop || item . left !== newLeft ) {
76
+ item . options . top = newTop ;
77
+ item . options . left = newLeft ;
78
+ item . moveTo ( newLeft , newTop ) ;
79
+ }
80
+ } ) ;
81
+
82
+
109
83
this . focusCenterWithAnimate ( ) ;
110
84
}
111
85
0 commit comments