diff --git a/src/dashboard/dashboard.js b/src/dashboard/dashboard.js index 92484b3..8a2767a 100644 --- a/src/dashboard/dashboard.js +++ b/src/dashboard/dashboard.js @@ -262,6 +262,16 @@ class Dashboard extends Component { startEditing(){ + this.state.widgets.forEach( widget => { + if(widget.type === 'Slider' || widget.type === 'NumberInput' || widget.type === 'Button'){ + console.log("we should move in here"); + AppDispatcher.dispatch({ + type: 'widgets/start-edit', + token: this.state.sessionToken, + data: widget + }); + } + }); this.setState({ editing: true }); }; diff --git a/src/widget/widget-factory.js b/src/widget/widget-factory.js index 3673a63..7fc407d 100644 --- a/src/widget/widget-factory.js +++ b/src/widget/widget-factory.js @@ -134,6 +134,7 @@ class WidgetFactory { widget.customProperties.on_value = 1; widget.customProperties.off_value = 0; widget.customProperties.toggle = false; + widget.customProperties.pressed = false; break; case 'NumberInput': widget.minWidth = 150; @@ -142,6 +143,7 @@ class WidgetFactory { widget.height = 50; widget.customProperties.showUnit = false; widget.customProperties.resizeTopBottomLock = true; + widget.customProperties.value = ''; break; case 'Slider': widget.minWidth = 380; @@ -154,7 +156,8 @@ class WidgetFactory { widget.customProperties.rangeUseMinMax = true; widget.customProperties.showUnit = true; widget.customProperties.continous_update = false; - widget.customProperties.default_value = 0; + widget.customProperties.default_value = '0'; + widget.customProperties.value = ''; widget.customProperties.resizeLeftRightLock = false; widget.customProperties.resizeTopBottomLock = true; diff --git a/src/widget/widgets/button.js b/src/widget/widgets/button.js index c400b54..977a8ae 100644 --- a/src/widget/widgets/button.js +++ b/src/widget/widgets/button.js @@ -24,12 +24,12 @@ class WidgetButton extends Component { super(props); this.state = { - pressed: false + pressed: props.widget.customProperties.pressed } } onPress(e) { - console.log("button was pressed!"); + if (!this.props.widget.customProperties.toggle) { this.setState({ pressed: true }); this.valueChanged(this.props.widget.customProperties.on_value); @@ -37,12 +37,12 @@ class WidgetButton extends Component { } onRelease(e) { - console.log("button was released!"); + let nextState = false; if (this.props.widget.customProperties.toggle) { nextState = !this.state.pressed; } - + this.props.widget.customProperties.pressed = nextState; this.setState({ pressed: nextState }); this.valueChanged(nextState ? this.props.widget.customProperties.on_value : this.props.widget.customProperties.off_value); } diff --git a/src/widget/widgets/input.js b/src/widget/widgets/input.js index 59e2290..58273ad 100644 --- a/src/widget/widgets/input.js +++ b/src/widget/widgets/input.js @@ -31,14 +31,27 @@ class WidgetInput extends Component { static getDerivedStateFromProps(props, state){ - if(props.widget.signalIDs.length === 0){ - return null; - } - let returnState = {}; + if(props.widget.customProperties.value !== ''){ + returnState["value"] = props.widget.customProperties.value; + } + + if(props.widget.signalIDs.length === 0){ + if (props.widget.customProperties.default_value && state.value === undefined && props.widget.customProperties.value === '') { + returnState["value"] = props.widget.customProperties.default_value; + } else { // if no default available + if (returnState !== {}){ + return returnState; + } + else{ + return null; + } + } + } + // Update value - if (props.widget.customProperties.default_value && this.state.value === undefined) { + if (props.widget.customProperties.default_value && this.state.value === undefined && props.widget.customProperties.value === '') { returnState["value"] = props.widget.customProperties.default_value; } @@ -59,6 +72,7 @@ class WidgetInput extends Component { valueIsChanging(newValue) { this.setState({ value: newValue }); + this.props.widget.customProperties.value = newValue; } valueChanged(newValue) { diff --git a/src/widget/widgets/slider.js b/src/widget/widgets/slider.js index 4b9bba5..ce76fc6 100644 --- a/src/widget/widgets/slider.js +++ b/src/widget/widgets/slider.js @@ -42,19 +42,28 @@ class WidgetSlider extends Component { static getDerivedStateFromProps(props, state){ let returnState = {}; + if(props.widget.customProperties.value !== ''){ + returnState["value"] = props.widget.customProperties.value; + } + if(props.widget.signalIDs.length === 0){ // set value to default - if (props.widget.customProperties.default_value && state.value === undefined) { + if (props.widget.customProperties.default_value && state.value === undefined && props.widget.customProperties.value === '') { returnState["value"] = props.widget.customProperties.default_value; } else { // if no default available - return null; + if (returnState !== {}){ + return returnState; + } + else{ + return null; + } } } // Update value - if (props.widget.customProperties.default_value && state.value === undefined) { + if (props.widget.customProperties.default_value && state.value === undefined && props.widget.customProperties.value === '') { returnState["value"] = props.widget.customProperties.default_value; } @@ -96,6 +105,7 @@ class WidgetSlider extends Component { } valueIsChanging(newValue) { + this.props.widget.customProperties.value = newValue; if (this.props.widget.continous_update) this.valueChanged(newValue);