11import React , { useState , useCallback } from 'react' ;
22import Electron from 'electron' ;
3+ import { eventTransformer } from './helpers' ;
34
45const { ipcRenderer } = window . require ( 'electron' ) ;
56
@@ -10,127 +11,57 @@ export const EventContext = React.createContext<any>(null);
1011 * @property {Object } eventData
1112 * @method fetchEventData
1213 * @method setEventData
13-
1414 */
1515
1616interface Props {
17- children : any
17+ children : any ;
1818}
1919
2020const EventContextProvider : React . FC < Props > = React . memo ( ( { children } ) => {
21- const [ eventData , setEventData ] = useState ( { eventDataList : [ ] , eventTimeList : [ ] } ) ;
22- // const [eventKafkaData, setEventKafkaData] = useState({ eventDataList: [], eventTimeList: [] });
23- // const [eventKubernetesData, setEventKubernetesData] = useState({ eventDataList: [], eventTimeList: [] });
21+ const [ eventData , setEventData ] = useState ( { } ) ;
2422
2523 function tryParseJSON ( jsonString : any ) {
2624 try {
27- const o = JSON . parse ( jsonString ) ;
28- if ( o && typeof o === 'object' ) {
25+ const obj = JSON . parse ( jsonString ) ;
26+ if ( obj && typeof obj === 'object' ) {
2927 return true ;
3028 }
31- } catch ( e ) {
32- console . log ( { error : e } ) ;
29+ } catch ( err ) {
30+ console . log ( { error : err } ) ;
3331 }
3432 return false ;
3533 }
3634
3735 /**
38- * @function fetchEventData - takes parameter arg.
39- * Checks if arg is strictly equals to 'kafkametrics', if so removes the event listerner suing the ipcRenderer.removeAllListeners.
40- * Sends a message using 'ipcRenderer.send'.
41- * This function seems to be fetching event data and updating the state accordingly.
42- * Problem: trying to change type any to something some concrete.
36+ * @function fetchEventData - takes an argument that is a string representing which metric type to be requested from the backend.
37+ * Sends a message using 'ipcRenderer.send'.
38+ * Fetches event data and updates the EventData state after transforming the data.
4339 */
4440
45- const fetchEventData = useCallback ( ( arg : any ) => {
46- if ( arg === 'kafkametrics' ) {
47- ipcRenderer . removeAllListeners ( 'kafkaResponse' ) ;
48- ipcRenderer . send ( 'kafkaRequest' ) ;
49- ipcRenderer . on ( 'kafkaResponse' , ( event : Electron . Event , data : any ) => {
50- let result : any ;
51- if ( tryParseJSON ( data ) ) result = JSON . parse ( data ) ;
52- let transformedData : any = { } ;
53- if ( result && result . length > 0 ) {
54- transformedData = transformEventData ( result [ 0 ] [ 'kafkametrics' ] ) ;
55- setEventData ( transformedData ) ;
56- }
57- } ) ;
58- } else if ( arg === 'kubernetesmetrics' ) {
59- ipcRenderer . removeAllListeners ( 'kubernetesResponse' ) ;
60- ipcRenderer . send ( 'kubernetesRequest' ) ;
61- ipcRenderer . on ( 'kubernetesResponse' , ( event : Electron . Event , data : any ) => {
62- let result : any ;
63- if ( tryParseJSON ( data ) ) result = JSON . parse ( data ) ;
64- let transformedData : any = { } ;
41+ const fetchEventData = useCallback ( ( arg : string ) => {
42+ const argDict = {
43+ kafkametrics : {
44+ request : 'kafkaRequest' ,
45+ response : 'kafkaResponse' ,
46+ } ,
47+ kubernetesmetrics : {
48+ request : 'kubernetesRequest' ,
49+ response : 'kubernetesResponse' ,
50+ } ,
51+ } ;
52+
53+ ipcRenderer . removeAllListeners ( argDict [ arg ] . response ) ;
54+ ipcRenderer . send ( argDict [ arg ] . request ) ;
55+ ipcRenderer . on ( argDict [ arg ] . response , ( event : Electron . Event , data : any ) => {
56+ if ( tryParseJSON ( data ) ) {
57+ const result : object [ ] = JSON . parse ( data ) ;
6558 if ( result && result . length > 0 ) {
66- transformedData = transformEventData ( result [ 0 ] [ 'kubernetesmetrics' ] ) ;
59+ const transformedData : object = eventTransformer ( result [ 0 ] [ arg ] ) ;
6760 setEventData ( transformedData ) ;
6861 }
69- } ) ;
70- }
71- } , [ ] ) ;
72-
73- // const fetchKafkaEventData = useCallback(() => {
74- // ipcRenderer.removeAllListeners('kafkaResponse');
75- // ipcRenderer.send('kafkaRequest');
76- // ipcRenderer.on('kafkaResponse', (event: Electron.Event, data: any) => {
77- // let result: any;
78- // if (tryParseJSON(data)) result = JSON.parse(data);
79- // let transformedData: any = {};
80- // if (result && result.length > 0) {
81- // transformedData = transformEventData(result[0]['kafkametrics']);
82- // setEventData(transformedData);
83- // }
84- // });
85- // }, []);
86-
87- // const fetchKubernetesEventData = useCallback(() => {
88- // ipcRenderer.removeAllListeners('kafkaResponse');
89- // ipcRenderer.send('kafkaRequest');
90- // ipcRenderer.on('kafkaResponse', (event: Electron.Event, data: any) => {
91- // let result: any;
92- // if (tryParseJSON(data)) result = JSON.parse(data);
93- // let transformedData: any = {};
94- // if (result && result.length > 0) {
95- // transformedData = transformEventData(result[0]['kafkametrics']);
96- // setEventData(transformedData);
97- // }
98- // });
99- // }, []);
100- /**
101- * @function transformEventData - seems like this function tranforms raw data into a format that can be visualize in graphs.
102- */
103- const transformEventData = ( data : any [ ] ) => {
104- const dataList : any [ ] = [ ] ;
105- const timeList : any [ ] = [ ] ;
106- const metricSet = new Set ( ) ;
107- data . forEach ( element => {
108- const metricName = element . metric ;
109- const time = element . time ;
110- const value = element . value ;
111- if ( ! metricSet . has ( metricName ) ) {
112- metricSet . add ( metricName ) ;
113- const metricObj_data : any = { } ;
114- const metricObj_time : any = { } ;
115- metricObj_data [ metricName ] = [ value ] ;
116- metricObj_time [ metricName ] = [ time ] ;
117- dataList . push ( metricObj_data ) ;
118- timeList . push ( metricObj_time ) ;
119- } else {
120- dataList . forEach ( element => {
121- if ( Object . keys ( element ) [ 0 ] === metricName ) {
122- element [ metricName ] . push ( value ) ;
123- }
124- } ) ;
125- timeList . forEach ( element => {
126- if ( Object . keys ( element ) [ 0 ] === metricName ) {
127- element [ metricName ] . push ( time ) ;
128- }
129- } ) ;
13062 }
13163 } ) ;
132- return { eventDataList : dataList , eventTimeList : timeList } ;
133- } ;
64+ } , [ ] ) ;
13465
13566 return (
13667 < EventContext . Provider
0 commit comments