@@ -9,7 +9,7 @@ import Utils from '../../Utils';
99export 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