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);
| }
| }
|
|