1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/web/ synced 2025-03-30 00:00:13 +01:00

NumberInput, Button and Slider now keep their value after changing to layout mode or back

This commit is contained in:
Laura Fuentes Grau 2020-05-08 16:54:38 +02:00
parent f23bdcffb1
commit 6acaf007e0
5 changed files with 50 additions and 13 deletions

View file

@ -262,6 +262,16 @@ class Dashboard extends Component {
startEditing(){ 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 }); this.setState({ editing: true });
}; };

View file

@ -134,6 +134,7 @@ class WidgetFactory {
widget.customProperties.on_value = 1; widget.customProperties.on_value = 1;
widget.customProperties.off_value = 0; widget.customProperties.off_value = 0;
widget.customProperties.toggle = false; widget.customProperties.toggle = false;
widget.customProperties.pressed = false;
break; break;
case 'NumberInput': case 'NumberInput':
widget.minWidth = 150; widget.minWidth = 150;
@ -142,6 +143,7 @@ class WidgetFactory {
widget.height = 50; widget.height = 50;
widget.customProperties.showUnit = false; widget.customProperties.showUnit = false;
widget.customProperties.resizeTopBottomLock = true; widget.customProperties.resizeTopBottomLock = true;
widget.customProperties.value = '';
break; break;
case 'Slider': case 'Slider':
widget.minWidth = 380; widget.minWidth = 380;
@ -154,7 +156,8 @@ class WidgetFactory {
widget.customProperties.rangeUseMinMax = true; widget.customProperties.rangeUseMinMax = true;
widget.customProperties.showUnit = true; widget.customProperties.showUnit = true;
widget.customProperties.continous_update = false; widget.customProperties.continous_update = false;
widget.customProperties.default_value = 0; widget.customProperties.default_value = '0';
widget.customProperties.value = '';
widget.customProperties.resizeLeftRightLock = false; widget.customProperties.resizeLeftRightLock = false;
widget.customProperties.resizeTopBottomLock = true; widget.customProperties.resizeTopBottomLock = true;

View file

@ -24,12 +24,12 @@ class WidgetButton extends Component {
super(props); super(props);
this.state = { this.state = {
pressed: false pressed: props.widget.customProperties.pressed
} }
} }
onPress(e) { onPress(e) {
console.log("button was pressed!");
if (!this.props.widget.customProperties.toggle) { if (!this.props.widget.customProperties.toggle) {
this.setState({ pressed: true }); this.setState({ pressed: true });
this.valueChanged(this.props.widget.customProperties.on_value); this.valueChanged(this.props.widget.customProperties.on_value);
@ -37,12 +37,12 @@ class WidgetButton extends Component {
} }
onRelease(e) { onRelease(e) {
console.log("button was released!");
let nextState = false; let nextState = false;
if (this.props.widget.customProperties.toggle) { if (this.props.widget.customProperties.toggle) {
nextState = !this.state.pressed; nextState = !this.state.pressed;
} }
this.props.widget.customProperties.pressed = nextState;
this.setState({ pressed: nextState }); this.setState({ pressed: nextState });
this.valueChanged(nextState ? this.props.widget.customProperties.on_value : this.props.widget.customProperties.off_value); this.valueChanged(nextState ? this.props.widget.customProperties.on_value : this.props.widget.customProperties.off_value);
} }

View file

@ -31,14 +31,27 @@ class WidgetInput extends Component {
static getDerivedStateFromProps(props, state){ static getDerivedStateFromProps(props, state){
if(props.widget.signalIDs.length === 0){
return null;
}
let returnState = {}; 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 // 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; returnState["value"] = props.widget.customProperties.default_value;
} }
@ -59,6 +72,7 @@ class WidgetInput extends Component {
valueIsChanging(newValue) { valueIsChanging(newValue) {
this.setState({ value: newValue }); this.setState({ value: newValue });
this.props.widget.customProperties.value = newValue;
} }
valueChanged(newValue) { valueChanged(newValue) {

View file

@ -42,19 +42,28 @@ class WidgetSlider extends Component {
static getDerivedStateFromProps(props, state){ static getDerivedStateFromProps(props, state){
let returnState = {}; let returnState = {};
if(props.widget.customProperties.value !== ''){
returnState["value"] = props.widget.customProperties.value;
}
if(props.widget.signalIDs.length === 0){ if(props.widget.signalIDs.length === 0){
// set value to default // 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; returnState["value"] = props.widget.customProperties.default_value;
} else { // if no default available } else { // if no default available
return null; if (returnState !== {}){
return returnState;
}
else{
return null;
}
} }
} }
// Update value // 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; returnState["value"] = props.widget.customProperties.default_value;
} }
@ -96,6 +105,7 @@ class WidgetSlider extends Component {
} }
valueIsChanging(newValue) { valueIsChanging(newValue) {
this.props.widget.customProperties.value = newValue;
if (this.props.widget.continous_update) if (this.props.widget.continous_update)
this.valueChanged(newValue); this.valueChanged(newValue);