From 1d680fc6f2ecc0ff67dd6020b4bc0c70ee85f26d Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Fri, 26 Jun 2020 18:48:16 +0200 Subject: [PATCH] NG_UI : SSDM-7583 : ObjectType form - simple 'You have unsaved changes.' implementation (a flag is set when sth is changed) --- .../src/js/components/types/form/TypeForm.jsx | 2 ++ .../src/js/components/types/form/TypeFormButtons.jsx | 10 +++++++++- .../types/form/TypeFormControllerAddProperty.js | 3 ++- .../types/form/TypeFormControllerAddSection.js | 3 ++- .../components/types/form/TypeFormControllerChange.js | 9 ++++++--- .../js/components/types/form/TypeFormControllerLoad.js | 3 ++- .../types/form/TypeFormControllerOrderChange.js | 9 ++++++--- .../components/types/form/TypeFormControllerRemove.js | 6 ++++-- 8 files changed, 33 insertions(+), 12 deletions(-) diff --git a/openbis_ng_ui/src/js/components/types/form/TypeForm.jsx b/openbis_ng_ui/src/js/components/types/form/TypeForm.jsx index 27dd562c81d..94b78d55be2 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeForm.jsx +++ b/openbis_ng_ui/src/js/components/types/form/TypeForm.jsx @@ -97,6 +97,7 @@ class TypeForm extends React.PureComponent { selection, removePropertyDialogOpen, removeSectionDialogOpen, + changed, mode } = this.state @@ -157,6 +158,7 @@ class TypeForm extends React.PureComponent { onSave={controller.handleSave} onCancel={controller.handleCancel} selection={selection} + changed={changed} mode={mode} /> <TypeFormDialogRemoveSection diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormButtons.jsx b/openbis_ng_ui/src/js/components/types/form/TypeFormButtons.jsx index 494160cad8b..1eda5fae7a0 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormButtons.jsx +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormButtons.jsx @@ -4,6 +4,8 @@ import Container from '@src/js/components/common/form/Container.jsx' import Button from '@src/js/components/common/form/Button.jsx' import logger from '@src/js/common/logger.js' +import TypeFormMessage from './TypeFormMessage.jsx' + const styles = theme => ({ container: { display: 'flex' @@ -76,7 +78,8 @@ class TypeFormButtons extends React.PureComponent { onAddProperty, onRemove, onSave, - onCancel + onCancel, + changed } = this.props return ( @@ -104,6 +107,11 @@ class TypeFormButtons extends React.PureComponent { /> </div> <div className={classes.rightContainer}> + {changed && ( + <TypeFormMessage type='warning'> + You have unsaved changes. + </TypeFormMessage> + )} <Button name='save' label='Save' diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddProperty.js b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddProperty.js index f6092c673d8..9446254461b 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddProperty.js +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddProperty.js @@ -100,7 +100,8 @@ export default class TypeFormControllerAddProperty { sections: newSections, properties: newProperties, propertiesCounter, - selection: newSelection + selection: newSelection, + changed: true })) } diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddSection.js b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddSection.js index 8fc87eb53cf..94158583b21 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddSection.js +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerAddSection.js @@ -41,7 +41,8 @@ export default class TypeFormControllerAddSection { ...state, sections: newSections, sectionsCounter, - selection: newSelection + selection: newSelection, + changed: true })) } diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerChange.js b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerChange.js index 82bbf40270b..ab83b4f4ef1 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerChange.js +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerChange.js @@ -31,7 +31,8 @@ export default class TypeFormControllerChange { ...state.type[field], value } - } + }, + changed: true })) } @@ -52,7 +53,8 @@ export default class TypeFormControllerChange { this.context.setState(state => ({ ...state, - sections: newSections + sections: newSections, + changed: true })) } @@ -79,7 +81,8 @@ export default class TypeFormControllerChange { this.context.setState(state => ({ ...state, - properties: newProperties + properties: newProperties, + changed: true })) } diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerLoad.js b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerLoad.js index 9e03e95ca8d..f6f53dfd628 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerLoad.js +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerLoad.js @@ -13,7 +13,8 @@ export default class TypeFormControllerLoad { await this.context.setState({ mode: 'view', loading: true, - validate: false + validate: false, + changed: false }) const typePromise = new TypeFormControllerLoadType( diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerOrderChange.js b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerOrderChange.js index f8fdda74d41..533eff58350 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerOrderChange.js +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerOrderChange.js @@ -27,7 +27,8 @@ export default class TypeFormControllerOrderChange { newSections.splice(toIndex, 0, section) this.context.setState(state => ({ ...state, - sections: newSections + sections: newSections, + changed: true })) } @@ -49,7 +50,8 @@ export default class TypeFormControllerOrderChange { this.context.setState(state => ({ ...state, - sections: newSections + sections: newSections, + changed: true })) } else { let { sections } = this.context.getState() @@ -89,7 +91,8 @@ export default class TypeFormControllerOrderChange { this.context.setState(state => ({ ...state, sections: newSections, - properties: newProperties + properties: newProperties, + changed: true })) } } diff --git a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerRemove.js b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerRemove.js index c0a75b7d0a0..337fe56321b 100644 --- a/openbis_ng_ui/src/js/components/types/form/TypeFormControllerRemove.js +++ b/openbis_ng_ui/src/js/components/types/form/TypeFormControllerRemove.js @@ -57,7 +57,8 @@ export default class TypeFormControllerRemove { ...state, sections: newSections, properties: newProperties, - selection: null + selection: null, + changed: true })) } @@ -100,7 +101,8 @@ export default class TypeFormControllerRemove { ...state, sections: newSections, properties: newProperties, - selection: null + selection: null, + changed: true })) } -- GitLab