1
1
import React , { useState , useContext , useEffect , useRef } from 'react' ;
2
- import { useIsMount } from '../context/helpers ' ;
2
+ import { useParams } from 'react-router-dom ' ;
3
3
import 'antd/dist/antd.less' ;
4
4
import { Switch , Table , Tag , Transfer , Button } from 'antd' ;
5
5
import { PoweroffOutlined } from '@ant-design/icons' ;
@@ -9,6 +9,7 @@ import { HealthContext } from '../context/HealthContext';
9
9
import { EventContext } from '../context/EventContext' ;
10
10
import AvQueuePlayNext from 'material-ui/svg-icons/av/queue-play-next' ;
11
11
12
+
12
13
const TableTransfer = ( { leftColumns, rightColumns, ...restProps } ) => (
13
14
< Transfer { ...restProps } >
14
15
{ ( {
@@ -65,33 +66,113 @@ const TableTransfer = ({ leftColumns, rightColumns, ...restProps }) => (
65
66
const TransferColumns = React . memo ( ( ) => {
66
67
const [ targetKeys , setTargetKeys ] = useState ( [ ] ) ;
67
68
const [ metricsPool , setMetricsPool ] = useState < any [ ] > ( [ ] ) ;
68
- const [ listReady , setListReady ] = useState ( false ) ;
69
- const [ isEvent , setIsEvent ] = useState ( false ) ;
69
+ const [ healthMetricsReady , setHealthMetricsReady ] = useState ( false ) ;
70
+ const [ healthMetrics , setHealthMetrics ] = useState < any [ ] > ( [ ] ) ;
71
+ const [ eventMetricsReady , setEventMetricsReady ] = useState ( false ) ;
72
+ const [ eventMetrics , setEventMetrics ] = useState < any [ ] > ( [ ] ) ;
73
+
70
74
const [ disabled , setDisabled ] = useState ( false ) ;
71
75
const [ showSearch , setShowSearch ] = useState ( true ) ;
72
76
const { setSelectedMetrics } = useContext ( QueryContext ) ;
73
77
const { healthData} = useContext ( HealthContext ) ;
74
78
const { eventData } = useContext ( EventContext ) ;
79
+ const { service } = useParams < any > ( ) ;
80
+
75
81
const eventDataList = eventData . eventDataList ;
76
82
const healthDataList = healthData . healthDataList ;
77
83
78
- // const datalist = [
79
- // {
80
- // Memory: [
81
- // { books: [{ disk_usage: [10, 20] }, { clockSpeed: [8, 16] }] },
82
- // { orders: [{ disk_usage: [5, 25] }, { clockSpeed: [7, 14] }] },
83
- // ],
84
- // },
85
- // {
86
- // CPU: [{ books: [{ cpu_temp: [100, 200] }] }, { orders: [{ cpu_temp: [150, 250] }] }],
87
- // },
88
- // ];
89
-
90
- const appendMetrics = ( eventDataList , healthDatalist ) => {
84
+
85
+ useEffect ( ( ) => {
86
+ if ( healthDataList && healthDataList . length > 0 ) {
87
+ setHealthMetricsReady ( true ) ;
88
+ }
89
+ } , [ healthDataList ] ) ;
90
+
91
+ useEffect ( ( ) => {
92
+ if ( eventDataList && eventDataList . length > 0 ) {
93
+ setEventMetricsReady ( true ) ;
94
+ }
95
+ } , [ eventDataList ] ) ;
96
+
97
+ useEffect ( ( ) => {
98
+ // console.log("newhealthmetrics", JSON.stringify(getMetrics('health',healthDataList)))
99
+ //console.log("healthDataList:", JSON.stringify(healthDataList));
100
+ setHealthMetrics ( getMetrics ( 'health' , healthDataList ) )
101
+
102
+ } , [ healthMetricsReady ] ) ;
103
+
104
+ useEffect ( ( ) => {
105
+ // console.log("neweventhmetrics", JSON.stringify(getMetrics('event',eventDataList)))
106
+ setEventMetrics ( getMetrics ( 'event' , eventDataList ) )
107
+ //console.log("eventDataList:", JSON.stringify(eventDataList));
108
+
109
+ } , [ eventMetricsReady ] ) ;
110
+
111
+
112
+
113
+ useEffect ( ( ) => {
114
+
115
+ console . log ( "current service:" , service ) ;
116
+ console . log ( "healthData in else:" , healthDataList . length ) ;
117
+ console . log ( "eventData in else:" , eventDataList . length ) ;
118
+ console . log ( "healthMetricsReady:" , healthMetricsReady ) ;
119
+ console . log ( "eventMetricsReady:" , eventMetricsReady ) ;
120
+ if ( service === '' ) {
121
+ return ;
122
+ }
123
+ else if ( service === 'kafkametrics' ) {
124
+ // console.log("set event metrics:", JSON.stringify(eventMetrics));
125
+ console . log ( "eventDataList:" , JSON . stringify ( eventDataList ) ) ;
126
+ if ( eventDataList && eventDataList . length > 0 ) {
127
+ setMetricsPool ( getMetrics ( 'event' , eventDataList ) ) ;
128
+ }
129
+ else if ( eventMetricsReady ) {
130
+ setMetricsPool ( eventMetrics ) ;
131
+ }
132
+
133
+ }
134
+ else if ( ! service . includes ( 'kafkametrics' ) ) { //all health data
135
+ console . log ( "healthDataList in elseif:" , JSON . stringify ( healthDataList ) ) ;
136
+ // console.log("set health metrics:", JSON.stringify(healthMetrics));
137
+ if ( healthDataList && healthDataList . length > 0 ) {
138
+ setMetricsPool ( getMetrics ( 'health' , healthDataList ) ) ;
139
+ }
140
+ else if ( healthMetricsReady ) {
141
+ setMetricsPool ( healthMetrics ) ;
142
+ }
143
+
144
+ }
145
+ else {
146
+
147
+ if ( healthDataList && healthDataList . length > 0 && eventDataList && eventDataList . length > 0 ) {
148
+ console . log ( "eventDataList:" , eventDataList . length ) ;
149
+ console . log ( "healthDataList" , healthDataList . length ) ;
150
+ setMetricsPool ( getMetrics ( 'event' , eventDataList ) . concat ( getMetrics ( 'health' , healthDataList ) ) ) ;
151
+ }
152
+ else if ( healthMetricsReady && eventMetricsReady ) {
153
+ console . log ( "set concat metrics:" , JSON . stringify ( eventMetrics . concat ( healthMetrics ) ) ) ;
154
+ setMetricsPool ( eventMetrics . concat ( healthMetrics ) ) ;
155
+ }
156
+ }
157
+
158
+ // },[service, healthMetricsReady, eventMetricsReady])
159
+ } , [ service , eventData , healthData ] )
160
+
161
+ const getMetrics = ( type , datalist ) => {
91
162
let pool : any [ ] = [ ] ;
92
- if ( healthDatalist && healthDatalist . length > 0 ) {
93
- setIsEvent ( false ) ;
94
- healthDatalist . forEach ( category => {
163
+ if ( type === 'event' ) {
164
+ datalist . forEach ( metric => {
165
+ const temp = { } ;
166
+ const metricName : string = Object . keys ( metric ) [ 0 ] ;
167
+ const key = 'Event | ' + metricName ;
168
+ temp [ 'key' ] = key ;
169
+ temp [ 'title' ] = key ;
170
+ temp [ 'tag' ] = 'Event' ;
171
+ pool . push ( temp ) ;
172
+ } ) ;
173
+ }
174
+ else {
175
+ datalist . forEach ( category => {
95
176
const tag : string = Object . keys ( category ) [ 0 ] ; //Memory
96
177
const serviceObj : { } = category [ tag ] [ 0 ] ; // { books: [{ disk_usage: [10, 20] }, { clockSpeed: [8, 16] }] }
97
178
const valuesOfServiceObj : any [ ] = Object . values ( serviceObj ) ;
@@ -109,38 +190,9 @@ const TransferColumns = React.memo(() => {
109
190
} ) ;
110
191
111
192
}
112
- if ( eventDataList && eventDataList . length > 0 ) {
113
- setIsEvent ( true ) ;
114
- eventDataList . forEach ( metric => {
115
- const temp = { } ;
116
- const metricName : string = Object . keys ( metric ) [ 0 ] ;
117
- const key = 'Event | ' + metricName ;
118
- temp [ 'key' ] = key ;
119
- temp [ 'title' ] = key ;
120
- temp [ 'tag' ] = 'Event' ;
121
- pool . push ( temp ) ;
122
- } ) ;
123
-
124
- }
193
+ return pool ;
194
+ }
125
195
126
- setMetricsPool ( pool ) ;
127
- } ;
128
-
129
- // useEffect(() => {
130
- // if ((healthDataList && healthDataList.length >0) || (eventDataList && eventDataList.length > 0)) {
131
- // setListReady(true);
132
- // }
133
- // }, [healthDataList, eventDataList]);
134
-
135
-
136
- //const isMount = useIsMount();
137
-
138
- useEffect ( ( ) => {
139
- // if (!isMount) {
140
- appendMetrics ( eventDataList , healthDataList ) ;
141
- // }
142
- } , [ isEvent , healthDataList , eventDataList ] ) ;
143
-
144
196
145
197
const leftTableColumns = [
146
198
{
@@ -225,7 +277,7 @@ const TransferColumns = React.memo(() => {
225
277
rightColumns = { rightTableColumns }
226
278
listStyle = { {
227
279
width : 700 ,
228
- height : 700 ,
280
+ height : 1000 ,
229
281
} }
230
282
/>
231
283
< Switch
0 commit comments