Skip to content

Commit dd70fa6

Browse files
authored
Merge pull request #802 from MetaCell/feature/187-drop-downs-selection-2
Fixed issues on NETPYNE-189 and NETPYNE-187
2 parents 1738525 + c06fc85 commit dd70fa6

2 files changed

Lines changed: 59 additions & 18 deletions

File tree

webapp/components/definition/subcellConnectivity/NetPyNESubcellsConnectivityRule.js

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,34 @@ export default class NetPyNESubCellsConnectivityRule extends React.Component {
3232
sectionId: 'General',
3333
errorMessage: undefined,
3434
errorDetails: undefined,
35-
type: 'uniform',
36-
coord: '',
35+
type: undefined,
36+
density: undefined,
37+
coord: undefined,
3738
};
3839
}
3940

41+
refreshComponent() {
42+
//get initial values
43+
Utils.evalPythonMessage(`netpyne_geppetto.netParams.subConnParams["${
44+
this.props.name
45+
}"]`)
46+
.then((response) => {
47+
if ((typeof response == 'object') && (response.density))
48+
{
49+
this.setState({ type: response.density.type, density: response.density }) //splitting so it fires update
50+
}
51+
})
52+
}
53+
54+
componentDidUpdate(prevProps, prevState) {
55+
if (JSON.stringify(prevProps.model) != JSON.stringify(this.props.model))
56+
this.refreshComponent();
57+
}
58+
59+
componentDidMount() {
60+
this.refreshComponent();
61+
}
62+
4063
handleRenameChange = (event) => {
4164
const storedValue = this.props.name;
4265
const newValue = Utils.nameValidation(event.target.value);
@@ -105,20 +128,14 @@ export default class NetPyNESubCellsConnectivityRule extends React.Component {
105128
}
106129

107130
UNSAFE_componentWillReceiveProps (nextProps) {
108-
this.setState({ currentName: nextProps.name });
131+
this.setState({ currentName: nextProps.name, type: nextProps.model.density });
109132
}
110133

111134
handleDensity (value) {
112135
this.setState({ type: value })
113-
if (value === 'uniform') {
114-
Utils.execPythonMessage(
115-
`netpyne_geppetto.netParams.subConnParams['${this.props.name}']['density'] = 'uniform'`,
116-
)
117-
} else {
118-
Utils.execPythonMessage(
119-
`netpyne_geppetto.netParams.subConnParams['${this.props.name}']['density'] = {}`,
120-
)
121-
}
136+
Utils.execPythonMessage(
137+
`netpyne_geppetto.netParams.subConnParams['${this.props.name}']['density'] = { 'type': '${value}' }`,
138+
)
122139
}
123140

124141
handleCoord(value) {

webapp/components/general/Select.js

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,32 @@ import FormControl from '@material-ui/core/FormControl';
44
import MuiSelect from '@material-ui/core/Select';
55

66
class Select extends React.Component {
7+
8+
constructor(props) {
9+
super(props);
10+
this.state = {
11+
selectOpen: false,
12+
};
13+
}
14+
15+
handleOpen = () => {
16+
this.setState({ selectOpen: true });
17+
};
18+
19+
handleClose = () => {
20+
this.setState({ selectOpen: false });
21+
};
722

823
componentDidUpdate (prevProps, prevState) {
924
if (this.props.commands !== prevProps.commands)
1025
this.forceUpdate();
1126
}
1227

1328
render () {
29+
const { id, multiple, pythonparams, children, onChange } = this.props;
30+
1431
let value = this.props.value || '';
32+
const { selectOpen } = this.state;
1533
if (this.props.multiple && value.constructor.name != 'Array') {
1634
// when loading values from a script, we can't allow strings if *multiple* is enabled
1735
value = [value];
@@ -23,14 +41,20 @@ class Select extends React.Component {
2341
<FormControl variant="filled" fullWidth>
2442
<InputLabel>{this.props.label}</InputLabel>
2543
<MuiSelect
26-
id={this.props.id}
44+
id={id}
2745
value={value}
28-
onChange={this.props.onChange}
29-
multiple={!!this.props.multiple}
30-
pythonparams={this.props.pythonparams}
46+
onChange={ (event) => {
47+
onChange(event);
48+
this.handleClose();
49+
}}
50+
multiple={!!multiple}
51+
pythonparams={pythonparams}
52+
open={selectOpen}
53+
onOpen={this.handleOpen}
54+
onClose={this.handleClose}
3155
>
32-
{this.props.children}
33-
</MuiSelect>
56+
{children}
57+
</MuiSelect>
3458

3559
</FormControl>
3660

0 commit comments

Comments
 (0)