Skip to content

Commit 1589a05

Browse files
committed
Merge remote-tracking branch 'contrib/w2p-129946_enforce-non-repeatable-fields-in-submission-forms-7.6' into w2p-129946_enforce-non-repeatable-fields-in-submission-forms-main
2 parents 3c38b7e + 4086400 commit 1589a05

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
279279
true,
280280
true,
281281
... itemLinksToFollow(this.fetchThumbnail, this.appConfig.item.showAccessStatuses)).pipe(
282-
getAllSucceededRemoteData(),
282+
getFirstSucceededRemoteData(),
283283
getRemoteDataPayload());
284284
this.relationshipValue$ = observableCombineLatest([this.item$.pipe(take(1)), relationship$]).pipe(
285285
switchMap(([item, relationship]: [Item, Relationship]) =>

src/app/submission/sections/form/section-form.component.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,17 +275,23 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
275275
}
276276
});
277277

278-
const diffResult = [];
279-
280278
// compare current form data state with section data retrieved from store
281-
const diffObj = difference(sectionDataToCheck, this.formData);
279+
const diffFromObj = this.hasDifferences(sectionDataToCheck, this.formData);
280+
const diffToObj = this.hasDifferences(this.formData, sectionDataToCheck);
281+
282+
return diffFromObj || diffToObj;
283+
}
284+
285+
private hasDifferences(object1: object, object2: object) {
286+
const diffResult = [];
287+
const diffObj = difference(object1, object2);
282288

283289
// iterate over differences to check whether they are actually different
284290
Object.keys(diffObj)
285291
.forEach((key) => {
286292
diffObj[key].forEach((value) => {
287293
// the findIndex extra check excludes values already present in the form but in different positions
288-
if (value.hasOwnProperty('value') && findIndex(this.formData[key], { value: value.value }) < 0) {
294+
if (value.hasOwnProperty('value') && findIndex(object2[key], { value: value.value }) < 0) {
289295
diffResult.push(value);
290296
}
291297
});

src/app/submission/sections/sections.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,9 @@ export class SectionsService {
522522
rawData.rows.forEach((currentRow) => {
523523
if (currentRow.fields && !isEmpty(currentRow.fields)) {
524524
currentRow.fields.forEach((field) => {
525+
if (field.selectableRelationship) {
526+
metadata.push(`relation.${field.selectableRelationship.relationshipType}`);
527+
}
525528
if (field.selectableMetadata && !isEmpty(field.selectableMetadata)) {
526529
field.selectableMetadata.forEach((selectableMetadata) => {
527530
if (!metadata.includes(selectableMetadata.metadata)) {

0 commit comments

Comments
 (0)