From 29ef6250e475ba51ec0059da50edc39b3d87f456 Mon Sep 17 00:00:00 2001 From: Gertjan van Oosten Date: Tue, 9 Jul 2024 17:20:10 +0200 Subject: [PATCH] AB#1163 Disable left merge column when pre-selected --- client/src/pages/admin/merge/MergeLocations.js | 5 +++++ client/src/pages/admin/merge/MergeOrganizations.js | 5 +++++ client/src/pages/admin/merge/MergePeople.js | 12 +++++++++++- client/src/pages/admin/merge/MergePositions.js | 12 +++++++++++- .../tests/webdriver/baseSpecs/showLocation.spec.js | 4 ++++ .../webdriver/baseSpecs/showOrganization.spec.js | 4 ++++ client/tests/webdriver/baseSpecs/showPerson.spec.js | 3 +++ .../tests/webdriver/baseSpecs/showPosition.spec.js | 4 ++++ 8 files changed, 47 insertions(+), 2 deletions(-) diff --git a/client/src/pages/admin/merge/MergeLocations.js b/client/src/pages/admin/merge/MergeLocations.js index 3cba8489eb..a91435e2e8 100644 --- a/client/src/pages/admin/merge/MergeLocations.js +++ b/client/src/pages/admin/merge/MergeLocations.js @@ -119,6 +119,7 @@ const MergeLocations = ({ pageDispatchers }) => { locationFormat={locationFormat} setLocationFormat={setLocationFormat} locationFormatLabel={locationFormatLabel} + disabled={!!initialLeftUuid} /> @@ -386,6 +387,7 @@ function getLocationFilters() { const LocationColumn = ({ align, label, + disabled, mergeState, dispatchMergeActions, locationFormat, @@ -418,6 +420,8 @@ const LocationColumn = ({ fields={Location.allFieldsQuery} addon={LOCATIONS_ICON} vertical + disabled={disabled} + showRemoveButton={!disabled} /> {areAllSet(location) && ( @@ -644,6 +648,7 @@ const LocationColumn = ({ LocationColumn.propTypes = { align: PropTypes.oneOf(["left", "right"]).isRequired, label: PropTypes.string.isRequired, + disabled: PropTypes.bool, mergeState: PropTypes.object, dispatchMergeActions: PropTypes.func, locationFormat: PropTypes.oneOf(Object.keys(Location.LOCATION_FORMATS)) diff --git a/client/src/pages/admin/merge/MergeOrganizations.js b/client/src/pages/admin/merge/MergeOrganizations.js index adc48d03cc..0ed4f668c2 100644 --- a/client/src/pages/admin/merge/MergeOrganizations.js +++ b/client/src/pages/admin/merge/MergeOrganizations.js @@ -108,6 +108,7 @@ const MergeOrganizations = ({ pageDispatchers }) => { dispatchMergeActions={dispatchMergeActions} align={ALIGN_OPTIONS.LEFT} label="Organization 1" + disabled={!!initialLeftUuid} /> @@ -456,6 +457,7 @@ const organizationsFilters = { const OrganizationColumn = ({ align, label, + disabled, mergeState, dispatchMergeActions }) => { @@ -488,6 +490,8 @@ const OrganizationColumn = ({ fields={Organization.allFieldsQuery} addon={ORGANIZATIONS_ICON} vertical + disabled={disabled} + showRemoveButton={!disabled} /> {areAllSet(organization) && ( @@ -856,6 +860,7 @@ const OrganizationCol = styled.div` OrganizationColumn.propTypes = { align: PropTypes.oneOf(["left", "right"]).isRequired, label: PropTypes.string.isRequired, + disabled: PropTypes.bool, mergeState: PropTypes.object, dispatchMergeActions: PropTypes.func } diff --git a/client/src/pages/admin/merge/MergePeople.js b/client/src/pages/admin/merge/MergePeople.js index 9ea22edd56..0235669fee 100644 --- a/client/src/pages/admin/merge/MergePeople.js +++ b/client/src/pages/admin/merge/MergePeople.js @@ -107,6 +107,7 @@ const MergePeople = ({ pageDispatchers }) => { dispatchMergeActions={dispatchMergeActions} align={ALIGN_OPTIONS.LEFT} label="Person 1" + disabled={!!initialLeftUuid} /> @@ -469,7 +470,13 @@ const peopleFilters = { } } -const PersonColumn = ({ align, label, mergeState, dispatchMergeActions }) => { +const PersonColumn = ({ + align, + label, + disabled, + mergeState, + dispatchMergeActions +}) => { const person = mergeState[align] const idForPerson = label.replace(/\s+/g, "") @@ -496,6 +503,8 @@ const PersonColumn = ({ align, label, mergeState, dispatchMergeActions }) => { fields={Person.allFieldsQuery} addon={PEOPLE_ICON} vertical + disabled={disabled} + showRemoveButton={!disabled} /> {areAllSet(person) && ( @@ -855,6 +864,7 @@ const PersonCol = styled.div` PersonColumn.propTypes = { align: PropTypes.oneOf(["left", "right"]).isRequired, label: PropTypes.string.isRequired, + disabled: PropTypes.bool, mergeState: PropTypes.object, dispatchMergeActions: PropTypes.func } diff --git a/client/src/pages/admin/merge/MergePositions.js b/client/src/pages/admin/merge/MergePositions.js index 0e08a74059..85254e3f37 100644 --- a/client/src/pages/admin/merge/MergePositions.js +++ b/client/src/pages/admin/merge/MergePositions.js @@ -108,6 +108,7 @@ const MergePositions = ({ pageDispatchers }) => { dispatchMergeActions={dispatchMergeActions} align={ALIGN_OPTIONS.LEFT} label="Position 1" + disabled={!!initialLeftUuid} /> @@ -429,7 +430,13 @@ function getPositionFilters(mergeState, align) { } } -const PositionColumn = ({ align, label, mergeState, dispatchMergeActions }) => { +const PositionColumn = ({ + align, + label, + disabled, + mergeState, + dispatchMergeActions +}) => { const position = mergeState[align] const hideWhenEmpty = !Location.hasCoordinates(mergeState[MERGE_SIDES.LEFT]?.location) && @@ -458,6 +465,8 @@ const PositionColumn = ({ align, label, mergeState, dispatchMergeActions }) => { fields={Position.allFieldsQuery} addon={POSITIONS_ICON} vertical + disabled={disabled} + showRemoveButton={!disabled} /> {areAllSet(position) && ( @@ -712,6 +721,7 @@ const PositionCol = styled.div` PositionColumn.propTypes = { align: PropTypes.oneOf(["left", "right"]).isRequired, label: PropTypes.string.isRequired, + disabled: PropTypes.bool, mergeState: PropTypes.object, dispatchMergeActions: PropTypes.func } diff --git a/client/tests/webdriver/baseSpecs/showLocation.spec.js b/client/tests/webdriver/baseSpecs/showLocation.spec.js index 7b0153f33d..f64e99cbc8 100644 --- a/client/tests/webdriver/baseSpecs/showLocation.spec.js +++ b/client/tests/webdriver/baseSpecs/showLocation.spec.js @@ -72,6 +72,10 @@ describe("Show location page", () => { expect( await (await MergeLocations.getLeftLocationField()).getValue() ).to.contain("Antarctica") + // eslint-disable-next-line no-unused-expressions + expect( + await (await MergeLocations.getLeftOrganizationField()).isEnabled() + ).to.be.false }) }) }) diff --git a/client/tests/webdriver/baseSpecs/showOrganization.spec.js b/client/tests/webdriver/baseSpecs/showOrganization.spec.js index bde3cbae7e..4ba7a6c3d0 100644 --- a/client/tests/webdriver/baseSpecs/showOrganization.spec.js +++ b/client/tests/webdriver/baseSpecs/showOrganization.spec.js @@ -156,6 +156,10 @@ describe("Show organization page", () => { expect( await (await MergeOrganizations.getLeftOrganizationField()).getValue() ).to.contain("EF 2.2") + // eslint-disable-next-line no-unused-expressions + expect( + await (await MergeOrganizations.getLeftOrganizationField()).isEnabled() + ).to.be.false }) }) }) diff --git a/client/tests/webdriver/baseSpecs/showPerson.spec.js b/client/tests/webdriver/baseSpecs/showPerson.spec.js index 3c87700a5f..ef5ddedf40 100644 --- a/client/tests/webdriver/baseSpecs/showPerson.spec.js +++ b/client/tests/webdriver/baseSpecs/showPerson.spec.js @@ -54,6 +54,9 @@ describe("Show person page", () => { expect( await (await MergePeople.getLeftPersonField()).getValue() ).to.contain("BRATTON, Creed") + // eslint-disable-next-line no-unused-expressions + expect(await (await MergePeople.getLeftOrganizationField()).isEnabled()) + .to.be.false }) }) }) diff --git a/client/tests/webdriver/baseSpecs/showPosition.spec.js b/client/tests/webdriver/baseSpecs/showPosition.spec.js index 1c62d2f794..1c4a4a2950 100644 --- a/client/tests/webdriver/baseSpecs/showPosition.spec.js +++ b/client/tests/webdriver/baseSpecs/showPosition.spec.js @@ -36,6 +36,10 @@ describe("Show position page", () => { expect( await (await MergePositions.getLeftPositionField()).getValue() ).to.contain("EF 5.1 Advisor Quality Assurance") + // eslint-disable-next-line no-unused-expressions + expect( + await (await MergePositions.getLeftOrganizationField()).isEnabled() + ).to.be.false }) }) })