diff --git a/src/components/dialog/edit-widget-control-creator.js b/src/components/dialog/edit-widget-control-creator.js index 0d94bcd..9f593ec 100644 --- a/src/components/dialog/edit-widget-control-creator.js +++ b/src/components/dialog/edit-widget-control-creator.js @@ -22,6 +22,7 @@ import React from 'react'; import EditWidgetTextControl from './edit-widget-text-control'; +import EditWidgetNumberControl from './edit-widget-number-control'; import EditWidgetColorControl from './edit-widget-color-control'; import EditWidgetTimeControl from './edit-widget-time-control'; import EditImageWidgetControl from './edit-widget-image-control'; @@ -121,7 +122,11 @@ export default function createControls(widgetType = null, widget = null, session validateForm(id)} simulationModels={simulationModels} handleChange={(e) => handleChange(e)} />, validateForm(id)} simulationModels={simulationModels} handleChange={(e) => handleChange(e)} />, validateForm(id)} simulationModels={simulationModels} handleChange={(e) => handleChange(e)} />, - handleChange(e)} /> + handleChange(e)} />, + handleChange(e)} />, + handleChange(e)} />, + handleChange(e)} />, + handleChange(e)} /> ); break; case 'Button': diff --git a/src/components/widget-slider.js b/src/components/widget-slider.js index 7f823fe..b6b8647 100644 --- a/src/components/widget-slider.js +++ b/src/components/widget-slider.js @@ -25,15 +25,30 @@ class WidgetSlider extends Component { super(props); this.state = { - value: 50 + value: Number.parseFloat(this.props.widget.default_value), + unit: '' }; } componentWillReceiveProps(nextProps) { + if (nextProps.simulationModel == null) { + return; + } + // Update value if (nextProps.widget.value && this.state.value !== nextProps.widget.value) { - this.setState({ value: nextProps.widget.value }) + this.setState({ + value: nextProps.widget.value, + }); } + + // Update unit + if (nextProps.widget.simulationModel && this.state.unit !== nextProps.simulationModel.inputMapping[nextProps.widget.signal].type) { + this.setState({ + unit: nextProps.simulationModel.inputMapping[nextProps.widget.signal].type + }); + } + // Check if the orientation changed, update the size if it did if (this.props.widget.orientation !== nextProps.widget.orientation) { let baseWidget = nextProps.widget; @@ -68,10 +83,13 @@ class WidgetSlider extends Component { let fields = { 'name': this.props.widget.name, - 'control': this.valueIsChanging(v) } onAfterChange={ (v) => this.valueChanged(v) }/>, - 'value': this.state.value + 'control': this.valueIsChanging(v) } onAfterChange={ (v) => this.valueChanged(v) }/>, + 'value': Number.parseFloat(this.state.value).toPrecision(3) } + if (this.props.widget.showUnit) + fields.value += ' [' + this.state.unit + ']'; + var widgetClasses = classNames({ 'slider-widget': true, 'full': true,