@@ -2,14 +2,10 @@ import React from 'react';
2
2
import Daemon from '../src' ;
3
3
import { WS_STATUS_CONNECTED , AGENT_STATUS_FOUND } from '../src/socket-daemon' ;
4
4
5
- const handleOpen = ( e , port ) => {
6
- e . preventDefault ( ) ;
7
- Daemon . readerWriter . openSerialMonitor ( port ) ;
8
- } ;
9
-
10
- const handleClose = ( e , port ) => {
11
- e . preventDefault ( ) ;
12
- Daemon . readerWriter . closeSerialMonitor ( port ) ;
5
+ const scrollToBottom = ( target ) => {
6
+ if ( target ) {
7
+ target . scrollTop = target . scrollHeight ; // eslint-disable-line no-param-reassign
8
+ }
13
9
} ;
14
10
15
11
class App extends React . Component {
@@ -21,9 +17,13 @@ class App extends React.Component {
21
17
wsStatus : '-' ,
22
18
serialDevices : [ ] ,
23
19
networkDevices : [ ] ,
24
- agentInfo : ''
20
+ agentInfo : '' ,
21
+ serialMonitorContent : ''
25
22
} ;
23
+
26
24
this . connect = this . connect . bind ( this ) ;
25
+ this . handleOpen = this . handleOpen . bind ( this ) ;
26
+ this . handleClose = this . handleClose . bind ( this ) ;
27
27
}
28
28
29
29
componentDidMount ( ) {
@@ -46,6 +46,12 @@ class App extends React.Component {
46
46
networkDevices : Daemon . readerWriter . devicesList . network
47
47
} ) ;
48
48
} ) ;
49
+
50
+ const serialTextarea = document . getElementById ( 'serial-textarea' ) ;
51
+ Daemon . readerWriter . serialMonitorSubject . subscribe ( message => {
52
+ this . setState ( { serialMonitorContent : this . state . serialMonitorContent + message } ) ;
53
+ scrollToBottom ( serialTextarea ) ;
54
+ } ) ;
49
55
}
50
56
51
57
showError ( err ) {
@@ -62,8 +68,19 @@ class App extends React.Component {
62
68
. catch ( this . showError ) ;
63
69
}
64
70
71
+ handleOpen ( e , port ) {
72
+ this . setState ( { serialMonitorContent : '' } ) ;
73
+ e . preventDefault ( ) ;
74
+ Daemon . readerWriter . openSerialMonitor ( port ) ;
75
+ }
76
+
77
+ handleClose ( e , port ) {
78
+ e . preventDefault ( ) ;
79
+ Daemon . readerWriter . closeSerialMonitor ( port ) ;
80
+ }
81
+
65
82
render ( ) {
66
- const listSerialDevices = this . state . serialDevices . map ( ( device , i ) => ( < li key = { i } > { device . Name } - IsOpen: { device . IsOpen ? 'true' : 'false' } - < a href = "#" onClick = { ( e ) => handleOpen ( e , device . Name ) } > open</ a > - < a href = "#" onClick = { ( e ) => handleClose ( e , device . Name ) } > close</ a > </ li > ) ) ;
83
+ const listSerialDevices = this . state . serialDevices . map ( ( device , i ) => ( < li key = { i } > { device . Name } - IsOpen: { device . IsOpen ? 'true' : 'false' } - < a href = "#" onClick = { ( e ) => this . handleOpen ( e , device . Name ) } > open</ a > - < a href = "#" onClick = { ( e ) => this . handleClose ( e , device . Name ) } > close</ a > </ li > ) ) ;
67
84
const listNetworkDevices = this . state . networkDevices . map ( ( device , i ) => < li key = { i } > { device . Name } </ li > ) ;
68
85
69
86
return (
@@ -91,6 +108,10 @@ class App extends React.Component {
91
108
< p id = "error" > </ p >
92
109
</ div >
93
110
< button id = "connect" onClick = { this . connect } > Connect</ button >
111
+ < div className = "serial-monitor" >
112
+ < h2 > Serial Monitor</ h2 >
113
+ < textarea id = "serial-textarea" value = { this . state . serialMonitorContent } />
114
+ </ div >
94
115
</ div >
95
116
) ;
96
117
}
0 commit comments