@@ -114,66 +114,71 @@ export class AttributeEditor extends React.Component<AttributeEditorProps, Attri
114114 const endpoints = getEndpoints ( device ) ;
115115 const logsFilterFn = ( l : LogMessage ) =>
116116 logStartingStrings . some ( ( startString ) => l . message . startsWith ( startString ) ) ;
117- return (
118- < >
119- < div className = "mb-3 row" >
120- < div className = "col-6 col-sm-3" >
121- < EndpointPicker
122- data-testid = "endpoint-picker"
123- label = { t ( 'zigbee:endpoint' ) }
124- values = { endpoints }
125- value = { endpoint as Endpoint }
126- onChange = { this . onEndpointChange }
127- />
128- </ div >
129- < div className = "col-6 col-sm-3" >
130- < ClusterPicker
131- data-testid = "cluster-picker"
132- label = { t ( 'cluster' ) }
133- pickerType = { PickerType . SINGLE }
134- clusters = { device . endpoints [ endpoint ] . clusters . input }
135- value = { cluster }
136- onChange = { this . onClusterChange }
137- />
138- </ div >
139117
140- < div className = "col-6 col-sm-3" >
141- < AttributePicker
142- data-testid = "attribute-picker"
143- label = { t ( 'attribute' ) }
144- value = { '' }
145- cluster = { cluster }
146- device = { device }
147- clusters = { clusters }
148- onChange = { this . onAttributeSelect }
149- />
118+ if ( ! endpoint ) {
119+ return < > No endpoints</ > ;
120+ } else {
121+ return (
122+ < >
123+ < div className = "mb-3 row" >
124+ < div className = "col-6 col-sm-3" >
125+ < EndpointPicker
126+ data-testid = "endpoint-picker"
127+ label = { t ( 'zigbee:endpoint' ) }
128+ values = { endpoints }
129+ value = { endpoint as Endpoint }
130+ onChange = { this . onEndpointChange }
131+ />
132+ </ div >
133+ < div className = "col-6 col-sm-3" >
134+ < ClusterPicker
135+ data-testid = "cluster-picker"
136+ label = { t ( 'cluster' ) }
137+ pickerType = { PickerType . SINGLE }
138+ clusters = { device . endpoints [ endpoint ] . clusters . input }
139+ value = { cluster }
140+ onChange = { this . onClusterChange }
141+ />
142+ </ div >
143+
144+ < div className = "col-6 col-sm-3" >
145+ < AttributePicker
146+ data-testid = "attribute-picker"
147+ label = { t ( 'attribute' ) }
148+ value = { '' }
149+ cluster = { cluster }
150+ device = { device }
151+ clusters = { clusters }
152+ onChange = { this . onAttributeSelect }
153+ />
154+ </ div >
150155 </ div >
151- </ div >
152- < div className = "mb-3 row" data-testid = "selected-attribute" >
153- { this . renderSelectedAttribute ( ) }
154- </ div >
155- < div className = "mb-3 row" >
156- < div className = "btn-group col col-3" role = "group" >
157- < Button < void >
158- disabled = { noAttributesSelected || noSelectedCluster }
159- className = "btn btn-success me-2"
160- data-testid = "read-attribute"
161- onClick = { this . onReadClick }
162- >
163- { t ( 'read' ) }
164- </ Button >
165- < Button < void >
166- disabled = { noAttributesSelected || noSelectedCluster }
167- className = "btn btn-danger"
168- data-testid = "write-attribute"
169- onClick = { this . onWriteClick }
170- >
171- { t ( 'write' ) }
172- </ Button >
156+ < div className = "mb-3 row" data-testid = "selected-attribute" >
157+ { this . renderSelectedAttribute ( ) }
173158 </ div >
174- </ div >
175- < LastLogResult logs = { this . props . logs } filterFn = { logsFilterFn } />
176- </ >
177- ) ;
159+ < div className = "mb-3 row" >
160+ < div className = "btn-group col col-3" role = "group" >
161+ < Button < void >
162+ disabled = { noAttributesSelected || noSelectedCluster }
163+ className = "btn btn-success me-2"
164+ data-testid = "read-attribute"
165+ onClick = { this . onReadClick }
166+ >
167+ { t ( 'read' ) }
168+ </ Button >
169+ < Button < void >
170+ disabled = { noAttributesSelected || noSelectedCluster }
171+ className = "btn btn-danger"
172+ data-testid = "write-attribute"
173+ onClick = { this . onWriteClick }
174+ >
175+ { t ( 'write' ) }
176+ </ Button >
177+ </ div >
178+ </ div >
179+ < LastLogResult logs = { this . props . logs } filterFn = { logsFilterFn } />
180+ </ >
181+ ) ;
182+ }
178183 }
179184}
0 commit comments