fengxiang
2018-07-12 5c0d8040266554b67e852ccb7056c3d0cae4b4ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import { Component, OnDestroy, ViewEncapsulation, OnInit } from '@angular/core';
import { _HttpClient } from '@delon/theme';
 
@Component({
    selector: 'app-data-v-relation',
    templateUrl: './relation.component.html',
    styleUrls: [ './relation.component.less' ]
})
export class RelationComponent implements OnInit, OnDestroy {
 
    ecIntance: any;
 
    options: any = {
        title: {
            text: 'User Releaction'
        },
        tooltip: {},
        animationDurationUpdate: 1500,
        animationEasingUpdate: 'quinticInOut',
        series: [{
            type: 'graph',
            layout: 'force',
            symbolSize: 60,
            focusNodeAdjacency: true,
            roam: true,
            categories: [{
                name: 'User'
            }],
            label: {
                normal: {
                    show: true,
                    textStyle: {
                        fontSize: 12
                    },
                }
            },
            force: {
                repulsion: 2000,
                gravity: .3
            },
            edgeSymbol: ['circle', 'arrow'],
            edgeSymbolSize: [4, 10],
            draggable: true,
            tooltip: {
                triggerOn: 'click',
                formatter: (item) => {
                    if (item.dataType === 'node')
                        return `${item.data.name}:${item.data.arg}`;
                    return item.name;
                }
            },
            data: Array(20).fill({}).map((v, i) => {
                return {
                    name: 'User' + i,
                    arg: i + 10,
                    category: 0
                };
            }),
            links: [{
                source: 'User0',
                target: 'User1'
            }, {
                source: 'User0',
                target: 'User2'
            }, {
                source: 'User0',
                target: 'User3'
            }, {
                source: 'User1',
                target: 'User4'
            }, {
                source: 'User2',
                target: 'User5'
            }, {
                source: 'User3',
                target: 'User6'
            }, {
                source: 'User4',
                target: 'User7'
            }, {
                source: 'User5',
                target: 'User8'
            }, {
                source: 'User6',
                target: 'User9'
            }, {
                source: 'User1',
                target: 'User10'
            }, {
                source: 'User1',
                target: 'User11'
            }, {
                source: 'User11',
                target: 'User12'
            }, {
                source: 'User11',
                target: 'User13'
            }, {
                source: 'User11',
                target: 'User14'
            }, {
                source: 'User11',
                target: 'User15'
            }, {
                source: 'User11',
                target: 'User16'
            }, {
                source: 'User11',
                target: 'User17'
            }, {
                source: 'User11',
                target: 'User18'
            }, {
                source: 'User11',
                target: 'User19'
            }],
            lineStyle: {
                normal: {
                    opacity: 0.7,
                    width: 1,
                    curveness: 0.1
                }
            }
        }]
    };
 
    constructor(private http: _HttpClient) { }
 
    chartInit(ec) {
        this.ecIntance = ec;
    }
 
    ngOnInit() {
        window.addEventListener('resize', () => this.resize);
    }
 
    private resize() {
        if (this.ecIntance) this.ecIntance.resize();
    }
 
    ngOnDestroy(): void {
        window.removeEventListener('resize', () => this.resize);
    }
}