1
1
import React from 'react' ;
2
- import CPUComponent from './CPUComponent' ;
2
+ import { CPUComponent , CPUComponentDisabled } from './CPUComponent' ;
3
3
import * as server from '../utils/serverAPI' ;
4
4
import { subscribe , unsubscribe } from '../utils/events' ;
5
+ import { State } from './ComponentsLib' ;
6
+ import { useSelection } from '../SelectionProvider' ;
5
7
6
8
function ABCPUComponent ( {
7
- device, title, index, power, percent,
9
+ device, title, index, power, percent, peripherals , messages ,
8
10
} ) {
9
11
const [ dev , setDev ] = React . useState ( 0 ) ;
10
12
const [ name , setName ] = React . useState ( '' ) ;
11
13
const [ ep0 , setEp0 ] = React . useState ( 0 ) ;
12
14
const [ ep1 , setEp1 ] = React . useState ( 0 ) ;
13
15
const [ ep2 , setEp2 ] = React . useState ( 0 ) ;
14
16
const [ ep3 , setEp3 ] = React . useState ( 0 ) ;
17
+ const [ enable , setEnable ] = React . useState ( true ) ;
18
+ const { selectedItem } = useSelection ( ) ;
15
19
16
20
function fetchEndPoint ( href , setEp ) {
17
21
server . GET ( server . peripheralPath ( device , href ) , ( data ) => setEp ( data . consumption . noc_power ) ) ;
18
22
}
19
23
20
24
function update ( ) {
21
- if ( device !== null ) {
22
- server . GET ( server . api . fetch ( server . Elem . peripherals , device ) , ( data ) => {
23
- if ( data [ index ] !== null ) {
24
- const { href } = data [ index ] [ 0 ] ;
25
- server . GET ( server . peripheralPath ( device , href ) , ( cpuData ) => {
26
- setName ( cpuData . name ) ;
27
- fetchEndPoint ( `${ href } /${ cpuData . ports [ 0 ] . href } ` , setEp0 ) ;
28
- fetchEndPoint ( `${ href } /${ cpuData . ports [ 1 ] . href } ` , setEp1 ) ;
29
- fetchEndPoint ( `${ href } /${ cpuData . ports [ 2 ] . href } ` , setEp2 ) ;
30
- fetchEndPoint ( `${ href } /${ cpuData . ports [ 3 ] . href } ` , setEp3 ) ;
31
- } ) ;
32
- }
33
- } ) ;
25
+ if ( ( device !== null ) && ( peripherals !== null ) ) {
26
+ setEnable ( peripherals [ index ] !== undefined ) ;
27
+ if ( peripherals [ index ] !== undefined ) {
28
+ const { href } = peripherals [ index ] [ 0 ] ;
29
+ server . GET ( server . peripheralPath ( device , href ) , ( cpuData ) => {
30
+ setName ( cpuData . name ) ;
31
+ fetchEndPoint ( `${ href } /${ cpuData . ports [ 0 ] . href } ` , setEp0 ) ;
32
+ fetchEndPoint ( `${ href } /${ cpuData . ports [ 1 ] . href } ` , setEp1 ) ;
33
+ fetchEndPoint ( `${ href } /${ cpuData . ports [ 2 ] . href } ` , setEp2 ) ;
34
+ fetchEndPoint ( `${ href } /${ cpuData . ports [ 3 ] . href } ` , setEp3 ) ;
35
+ } ) ;
36
+ }
34
37
}
35
38
}
36
39
@@ -41,6 +44,11 @@ function ABCPUComponent({
41
44
}
42
45
}
43
46
47
+ React . useEffect ( ( ) => {
48
+ update ( ) ;
49
+ // eslint-disable-next-line react-hooks/exhaustive-deps
50
+ } , [ peripherals ] ) ;
51
+
44
52
React . useEffect ( ( ) => {
45
53
subscribe ( 'cpuChanged' , cpuChanged ) ;
46
54
return ( ) => { unsubscribe ( 'cpuChanged' , cpuChanged ) ; } ;
@@ -51,17 +59,29 @@ function ABCPUComponent({
51
59
if ( device !== null ) update ( ) ;
52
60
}
53
61
62
+ function getBaseName ( item ) {
63
+ const base = enable ? 'clickable' : 'disabled' ;
64
+ return ( selectedItem === item && enable ) ? `${ base } selected` : base ;
65
+ }
66
+
54
67
return (
55
- < CPUComponent
56
- title = { title }
57
- power = { power }
58
- percent = { percent }
59
- name = { name }
60
- ep0 = { ep0 }
61
- ep1 = { ep1 }
62
- ep2 = { ep2 }
63
- ep3 = { ep3 }
64
- />
68
+ < State messages = { messages } baseClass = { getBaseName ( title ) } >
69
+ { enable && (
70
+ < CPUComponent
71
+ title = { title }
72
+ power = { power }
73
+ percent = { percent }
74
+ name = { name }
75
+ ep0 = { ep0 }
76
+ ep1 = { ep1 }
77
+ ep2 = { ep2 }
78
+ ep3 = { ep3 }
79
+ />
80
+ ) }
81
+ {
82
+ ! enable && < CPUComponentDisabled title = { title } />
83
+ }
84
+ </ State >
65
85
) ;
66
86
}
67
87
0 commit comments