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:
parent
f23bdcffb1
commit
6acaf007e0
5 changed files with 50 additions and 13 deletions
|
@ -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 });
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue