forked from rapyuta-robotics/zethus
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathtabTopicName.jsx
More file actions
92 lines (87 loc) · 2.51 KB
/
Copy pathtabTopicName.jsx
File metadata and controls
92 lines (87 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import React from 'react';
import _ from 'lodash';
import { vizOptions } from '../../utils/vizOptions';
import { ros2vizOptions } from '../../utils/vizOptions';
import { ButtonPrimary, FlexGrow } from '../../components/styled';
import {
AddVizForm,
ModalActions,
TopicRow,
TypeContainer,
TypeSelection,
TypeUnsupported,
} from '../../components/styled/modal';
class TopicName extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedViz: '',
};
this.selectViz = this.selectViz.bind(this);
this.onSubmit = this.onSubmit.bind(this);
}
selectViz(vizType, topicName, messageType) {
this.setState({
selectedViz: {
vizType,
topicName,
messageType,
},
});
}
onSubmit(e) {
e.preventDefault();
const { selectViz } = this.props;
const {
selectedViz: { messageType, topicName, vizType },
} = this.state;
selectViz(vizType, topicName, messageType);
}
render() {
const { closeModal, rosTopics, rosVersion } = this.props;
const { selectedViz } = this.state;
return (
<AddVizForm onSubmit={this.onSubmit}>
<TypeContainer>
<TypeSelection>
{_.map(_.sortBy(rosTopics, 'name'), ({ name, messageType }) => {
const vizOption = _.find(rosVersion === 1 ? vizOptions : ros2vizOptions, v =>
_.includes(v.messageTypes, messageType),
);
console.log(vizOptions);
return vizOption ? (
<TopicRow
type="button"
selected={_.get(selectedViz, 'topicName') === name}
key={name}
onClick={() =>
this.selectViz(vizOption.type, name, messageType)
}
>
{name}
<FlexGrow />({messageType})
</TopicRow>
) : (
<TypeUnsupported key={name}>
{name}
<FlexGrow />
(Unsupported type: {messageType})
</TypeUnsupported>
);
})}
</TypeSelection>
</TypeContainer>
<ModalActions>
<FlexGrow />
<ButtonPrimary type="submit" disabled={!selectedViz}>
Proceed
</ButtonPrimary>
<ButtonPrimary type="button" onClick={closeModal}>
Close
</ButtonPrimary>
</ModalActions>
</AddVizForm>
);
}
}
export default TopicName;