[835] Auto-save in new Item Submission form breaks the form

Store additions:
1. Form AdditionalData: contains the list of the touched metadata
2. Submission metadata: contains the list of the metadata ids assignable for each section

We keep also track whether a section ha focused fields or not.
This commit is contained in:
Alessandro Martelli
2020-11-19 15:47:03 +01:00
parent 82b7b8aa6f
commit 8111bdd3ce
10 changed files with 299 additions and 28 deletions

View File

@@ -13,6 +13,7 @@ import { type } from '../ngrx/type';
export const FormActionTypes = {
FORM_INIT: type('dspace/form/FORM_INIT'),
FORM_CHANGE: type('dspace/form/FORM_CHANGE'),
FORM_ADDITIONAL: type('dspace/form/FORM_ADDITIONAL'),
FORM_REMOVE: type('dspace/form/FORM_REMOVE'),
FORM_STATUS_CHANGE: type('dspace/form/FORM_STATUS_CHANGE'),
FORM_ADD_ERROR: type('dspace/form/FORM_ADD_ERROR'),
@@ -27,6 +28,7 @@ export class FormInitAction implements Action {
formId: string;
formData: any;
valid: boolean;
formAdditional: any;
};
/**
@@ -39,8 +41,8 @@ export class FormInitAction implements Action {
* @param valid
* the Form validation status
*/
constructor(formId: string, formData: any, valid: boolean) {
this.payload = {formId, formData, valid};
constructor(formId: string, formData: any, valid: boolean, formAdditional?: any) {
this.payload = {formId, formData, valid, formAdditional};
}
}
@@ -52,7 +54,7 @@ export class FormChangeAction implements Action {
};
/**
* Create a new FormInitAction
* Create a new FormChangeAction
*
* @param formId
* the Form's ID
@@ -64,6 +66,26 @@ export class FormChangeAction implements Action {
}
}
export class FormSetAdditionalAction implements Action {
type = FormActionTypes.FORM_ADDITIONAL;
payload: {
formId: string;
additionalData: any;
};
/**
* Create a new FormSetAdditionalAction
*
* @param formId
* the Form's ID
* @param additionalData
* the additionalData Object
*/
constructor(formId: string, additionalData: any) {
this.payload = {formId, additionalData};
}
}
export class FormRemoveAction implements Action {
type = FormActionTypes.FORM_REMOVE;
payload: {
@@ -147,6 +169,7 @@ export class FormClearErrorsAction implements Action {
*/
export type FormAction = FormInitAction
| FormChangeAction
| FormSetAdditionalAction
| FormRemoveAction
| FormStatusChangeAction
| FormAddError