Skip to content

Commit a45fba1

Browse files
committed
Competed missing functionality in CoordsRange component
1 parent 0734552 commit a45fba1

1 file changed

Lines changed: 43 additions & 35 deletions

File tree

webapp/components/general/NetPyNECoordsRange.js

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Utils from '../../Utils';
99
export default class NetPyNECoordsRange extends Component {
1010
constructor (props) {
1111
super(props);
12-
this.state = { rangeType: undefined };
12+
this.state = { rangeType: undefined, rangeValue: [undefined, undefined] };
1313

1414
this._isMounted = false;
1515
}
@@ -48,17 +48,34 @@ export default class NetPyNECoordsRange extends Component {
4848

4949
const message = `netpyne_geppetto.${model}['${name}']${(conds !== undefined)
5050
? `['${conds}']` : ''}`;
51+
const evalMessage = `[key in ${message} for key in ['${items[0].value}', '${items[1].value}']]` ;
52+
5153
Utils
52-
.evalPythonMessage(`[key in ${message} for key in ['${items[0].value}', '${items[1].value}']]`)
53-
.then((response) => {
54-
if (response[0] && this._isMounted === true) {
55-
this.setState({ rangeType: items[0].value });
56-
} else if (response[1] && this._isMounted === true) {
57-
this.setState({ rangeType: items[1].value });
58-
} else if (this._isMounted === true) {
59-
this.setState({ rangeType: undefined });
60-
}
61-
});
54+
.evalPythonMessage(evalMessage)
55+
.then((response) => {
56+
57+
let rangeType = undefined ;
58+
59+
if (response[0] && this._isMounted === true) {
60+
rangeType = items[0].value ;
61+
} else if (response[1] && this._isMounted === true) {
62+
rangeType = items[1].value ;
63+
}
64+
65+
this.setState({ rangeType });
66+
67+
if (rangeType)
68+
{
69+
const pythonMessage = `netpyne_geppetto.${model}['${name}']['${this.state.rangeType}']` ;
70+
71+
Utils
72+
.evalPythonMessage(pythonMessage)
73+
.then((response) => {
74+
if (response && response.length > 0 ) {
75+
this.setState({ rangeValue: response });
76+
}});
77+
}
78+
});
6279
}
6380

6481
createMenuItems = () => this.props.items.map((obj) => (
@@ -76,11 +93,18 @@ export default class NetPyNECoordsRange extends Component {
7693
}
7794

7895
//preConds: pop, cellType, cellModel, x, y, z, xnorm, ynorm, znorm
79-
handleCoordParamChange(a, b, newValue) {
80-
const pythonMessage = `netpyne_geppetto.${this.model} = [${newValue}]` ;
96+
handleCoordParamChange(index, newValue) {
97+
const {
98+
model,
99+
name,
100+
} = this.props;
101+
const rangeValue = this.state.rangeValue ;
102+
rangeValue[index] = newValue ;
103+
const pythonMessage = `netpyne_geppetto.${model}['${name}']['${this.state.rangeType}'] = [${rangeValue}]` ;
81104
Utils.execPythonMessage(
82105
pythonMessage
83106
);
107+
this.setState({ rangeValue })
84108
}
85109

86110
render () {
@@ -93,6 +117,10 @@ export default class NetPyNECoordsRange extends Component {
93117
}
94118
const min = `${this.props.id}MinRange`;
95119
const max = `${this.props.id}MaxRange`;
120+
121+
const minVal = this.state.rangeValue[0];
122+
const maxVal = this.state.rangeValue[1];
123+
96124
return (
97125
<div>
98126
<NetPyNEField id={meta}>
@@ -108,28 +136,8 @@ export default class NetPyNECoordsRange extends Component {
108136
{(this.state.rangeType != undefined)
109137
? (
110138
<Box width="100%" p={1}>
111-
<AdapterComponent
112-
model={path}
113-
convertToPython={(state) => {
114-
if (!state[state.lastUpdated].toString()
115-
.endsWith('.')
116-
&& ((!isNaN(parseFloat(state[min]))) && (!isNaN(parseFloat(state[max]))))) {
117-
return [parseFloat(state[min]), parseFloat(state[max])];
118-
}
119-
}}
120-
convertFromPython={(prevProps, prevState, value) => {
121-
if (value != undefined && prevProps.value != value && value != '') {
122-
const output = {};
123-
output[min] = value[0];
124-
output[max] = value[1];
125-
return output;
126-
}
127-
}}
128-
onChange={this.handleCoordParamChange}
129-
>
130-
<TextField label="Minimum" id={min} variant="filled" fullWidth />
131-
<TextField label="Maximum" id={max} variant="filled" fullWidth />
132-
</AdapterComponent>
139+
<TextField label="Minimum" id={minVal} variant="filled" value={minVal} fullWidth onChange={ (e) => { this.handleCoordParamChange(0, parseInt(e.target.value)) } } />
140+
<TextField label="Maximum" id={maxVal} variant="filled" value={maxVal} fullWidth onChange={ (e) => { this.handleCoordParamChange(1, parseInt(e.target.value)) } } />
133141
</Box>
134142
)
135143
: null}

0 commit comments

Comments
 (0)