diff --git a/libs/portals/admin/signature-collection/src/lib/messages.ts b/libs/portals/admin/signature-collection/src/lib/messages.ts index a90cbdaccbb1..04147e17217e 100644 --- a/libs/portals/admin/signature-collection/src/lib/messages.ts +++ b/libs/portals/admin/signature-collection/src/lib/messages.ts @@ -442,6 +442,27 @@ export const m = defineMessages({ defaultMessage: 'Opna fyrir úrvinnslu', description: '', }, + collectionReviewedTitle: { + id: 'admin-portal.signature-collection:collectionReviewedTitle', + defaultMessage: 'Meðmælasöfnun vegna framboðs til Alþingis lokið', + description: '', + }, + collectionReviewedMessage: { + id: 'admin-portal.signature-collection:collectionReviewedMessage', + defaultMessage: + 'Nú hefur úrvinnslu verið lokið á öllum listum í öllum kjördæmum.', + description: '', + }, + collectionProcessedTitle: { + id: 'admin-portal.signature-collection:collectionProcessedTitle', + defaultMessage: 'Úrvinnsla meðmælasöfnunar lokið', + description: '', + }, + collectionProcessedMessage: { + id: 'admin-portal.signature-collection:collectionReviewedTitle', + defaultMessage: 'Nú er hægt að framlengja stökum listum.', + description: '', + }, listReviewedModalDescription: { id: 'admin-portal.signature-collection:listReviewedModalDescription#markdown', defaultMessage: diff --git a/libs/portals/admin/signature-collection/src/screens-parliamentary/Constituency/index.tsx b/libs/portals/admin/signature-collection/src/screens-parliamentary/Constituency/index.tsx index c58fa93adda5..c0ddcfdf8772 100644 --- a/libs/portals/admin/signature-collection/src/screens-parliamentary/Constituency/index.tsx +++ b/libs/portals/admin/signature-collection/src/screens-parliamentary/Constituency/index.tsx @@ -30,7 +30,10 @@ import electionsCommitteeLogo from '../../../assets/electionsCommittee.svg' import nationalRegistryLogo from '../../../assets/nationalRegistry.svg' import { useSignatureCollectionAdminRemoveListMutation } from './removeList.generated' import { useSignatureCollectionAdminRemoveCandidateMutation } from './removeCandidate.generated' -import { SignatureCollectionList } from '@island.is/api/schema' +import { + CollectionStatus, + SignatureCollectionList, +} from '@island.is/api/schema' export const Constituency = ({ allowedToProcess, @@ -41,7 +44,8 @@ export const Constituency = ({ const navigate = useNavigate() const { revalidate } = useRevalidator() - const { collection, allLists } = useLoaderData() as ListsLoaderReturn + const { collection, collectionStatus, allLists } = + useLoaderData() as ListsLoaderReturn const { constituencyName } = useParams() as { constituencyName: string } const constituencyLists = allLists.filter( @@ -127,7 +131,7 @@ export const Constituency = ({ ': ' + constituencyLists.length} - {allowedToProcess && constituencyLists?.length > 0 && ( + {allowedToProcess && ( ( diff --git a/libs/portals/admin/signature-collection/src/screens-parliamentary/List/index.tsx b/libs/portals/admin/signature-collection/src/screens-parliamentary/List/index.tsx index 109d19479753..49581f3a8171 100644 --- a/libs/portals/admin/signature-collection/src/screens-parliamentary/List/index.tsx +++ b/libs/portals/admin/signature-collection/src/screens-parliamentary/List/index.tsx @@ -87,7 +87,12 @@ const List = ({ allowedToProcess }: { allowedToProcess: boolean }) => { ? formatMessage(m.listStatusReviewedStatusAlert) : formatMessage(m.listStatusActiveAlert) } - type={listStatus === ListStatus.Reviewed ? 'success' : undefined} + type={ + listStatus === ListStatus.Reviewed || + listStatus === ListStatus.Inactive + ? 'success' + : undefined + } /> { )} {allowedToProcess && ( - {!list.active && } + {!list.active && !list.reviewed && ( + + )} )} diff --git a/libs/portals/admin/signature-collection/src/screens-parliamentary/List/paperSignees/index.tsx b/libs/portals/admin/signature-collection/src/screens-parliamentary/List/paperSignees/index.tsx index a156005bd07e..38d624aeec34 100644 --- a/libs/portals/admin/signature-collection/src/screens-parliamentary/List/paperSignees/index.tsx +++ b/libs/portals/admin/signature-collection/src/screens-parliamentary/List/paperSignees/index.tsx @@ -20,10 +20,12 @@ import { useIdentityQuery, } from './identityAndCanSignLookup.generated' import { useSignatureCollectionAdminUploadPaperSignatureMutation } from './uploadPaperSignee.generated' +import { useRevalidator } from 'react-router-dom' export const PaperSignees = ({ listId }: { listId: string }) => { useNamespaces('sp.signatureCollection') const { formatMessage } = useLocale() + const { revalidate } = useRevalidator() const { control, reset } = useForm() const [nationalIdInput, setNationalIdInput] = useState('') @@ -76,6 +78,7 @@ export const PaperSignees = ({ listId }: { listId: string }) => { toast.error(formatMessage(m.paperSigneeError)) } reset() + revalidate() setNationalIdTypo(false) setName('') }, diff --git a/libs/portals/admin/signature-collection/src/screens-parliamentary/index.tsx b/libs/portals/admin/signature-collection/src/screens-parliamentary/index.tsx index 0e9835535ba2..d5fa2a151572 100644 --- a/libs/portals/admin/signature-collection/src/screens-parliamentary/index.tsx +++ b/libs/portals/admin/signature-collection/src/screens-parliamentary/index.tsx @@ -9,6 +9,7 @@ import { Breadcrumbs, Table as T, Text, + AlertMessage, } from '@island.is/island-ui/core' import { useLocale } from '@island.is/localization' import { IntroHeader, PortalNavigation } from '@island.is/portals/core' @@ -24,6 +25,8 @@ import nationalRegistryLogo from '../../assets/nationalRegistry.svg' import { useState } from 'react' import { useSignatureCollectionSignatureLookupQuery } from './findSignature.generated' import { SkeletonSingleRow } from '../shared-components/compareLists/skeleton' +import { CollectionStatus } from '@island.is/api/schema' +import ActionCompleteCollectionProcessing from '../shared-components/completeCollectionProcessing' const ParliamentaryRoot = ({ allowedToProcess, @@ -33,7 +36,8 @@ const ParliamentaryRoot = ({ const { formatMessage } = useLocale() const navigate = useNavigate() - const { collection, allLists } = useLoaderData() as ListsLoaderReturn + const { collection, collectionStatus, allLists } = + useLoaderData() as ListsLoaderReturn const [searchTerm, setSearchTerm] = useState('') @@ -179,41 +183,80 @@ const ParliamentaryRoot = ({ ))} - {collection?.areas.map((area) => ( - l.area.name === area.name).length - } - heading={area.name} - cta={{ - label: formatMessage(m.viewConstituency), - variant: 'text', - onClick: () => { - navigate( - SignatureCollectionPaths.ParliamentaryConstituency.replace( - ':constituencyName', - area.name, - ), - ) - }, - }} - tag={ - allLists - .filter((l) => l.area.name === area.name) - .every((l) => l.reviewed === true) - ? { - label: formatMessage(m.confirmListReviewed), - variant: 'mint', - outlined: true, - } - : undefined - } - /> - ))} + {collection?.areas.map((area) => { + const areaLists = allLists.filter( + (l) => l.area.name === area.name, + ) + return ( + { + navigate( + SignatureCollectionPaths.ParliamentaryConstituency.replace( + ':constituencyName', + area.name, + ), + ) + }, + }} + tag={ + areaLists.length > 0 && + areaLists.every((l) => l.reviewed === true) + ? { + label: formatMessage(m.confirmListReviewed), + variant: 'mint', + outlined: true, + } + : undefined + } + /> + ) + })} - {allowedToProcess && } + {allowedToProcess && ( + + {(collectionStatus === CollectionStatus.InInitialReview || + collectionStatus === CollectionStatus.InReview) && ( + + )} + {(collectionStatus === CollectionStatus.InitialActive || + collectionStatus === CollectionStatus.InInitialReview) && ( + l.reviewed === true) + } + /> + )} + + )} + {collectionStatus === CollectionStatus.Processed && ( + + + + )} + {collectionStatus === CollectionStatus.InReview && ( + + + + )} diff --git a/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/index.tsx b/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/index.tsx index 956d4bcb0743..294770affbaf 100644 --- a/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/index.tsx +++ b/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/index.tsx @@ -29,13 +29,13 @@ import { import { format as formatNationalId } from 'kennitala' import electionsCommitteeLogo from '../../../assets/electionsCommittee.svg' import nationalRegistryLogo from '../../../assets/nationalRegistry.svg' -import ActionCompleteCollectionProcessing from './components/completeCollectionProcessing' import ListInfo from '../../shared-components/listInfoAlert' import EmptyState from '../../shared-components/emptyState' import ReviewCandidates from './components/reviewCandidates' import CompareLists from '../../shared-components/compareLists' import { ListsLoaderReturn } from '../../loaders/AllLists.loader' import CreateCollection from '../../shared-components/createCollection' +import ActionCompleteCollectionProcessing from '../../shared-components/completeCollectionProcessing' const Lists = ({ allowedToProcess }: { allowedToProcess: boolean }) => { const { formatMessage } = useLocale() diff --git a/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/components/completeCollectionProcessing/finishCollectionProcess.graphql b/libs/portals/admin/signature-collection/src/shared-components/completeCollectionProcessing/finishCollectionProcess.graphql similarity index 100% rename from libs/portals/admin/signature-collection/src/screens-presidential/AllLists/components/completeCollectionProcessing/finishCollectionProcess.graphql rename to libs/portals/admin/signature-collection/src/shared-components/completeCollectionProcessing/finishCollectionProcess.graphql diff --git a/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/components/completeCollectionProcessing/index.tsx b/libs/portals/admin/signature-collection/src/shared-components/completeCollectionProcessing/index.tsx similarity index 95% rename from libs/portals/admin/signature-collection/src/screens-presidential/AllLists/components/completeCollectionProcessing/index.tsx rename to libs/portals/admin/signature-collection/src/shared-components/completeCollectionProcessing/index.tsx index 9d20f821e91e..4b281f23ac1c 100644 --- a/libs/portals/admin/signature-collection/src/screens-presidential/AllLists/components/completeCollectionProcessing/index.tsx +++ b/libs/portals/admin/signature-collection/src/shared-components/completeCollectionProcessing/index.tsx @@ -1,6 +1,6 @@ import { useLocale } from '@island.is/localization' import { Box, Button, Text, toast } from '@island.is/island-ui/core' -import { m } from '../../../../lib/messages' +import { m } from '../../lib/messages' import { useState } from 'react' import { Modal } from '@island.is/react/components' import { useRevalidator } from 'react-router-dom' @@ -8,8 +8,10 @@ import { useProcessCollectionMutation } from './finishCollectionProcess.generate const ActionCompleteCollectionProcessing = ({ collectionId, + canProcess, }: { collectionId: string + canProcess?: boolean }) => { const { formatMessage } = useLocale() const [modalSubmitReviewIsOpen, setModalSubmitReviewIsOpen] = useState(false) @@ -45,6 +47,7 @@ const ActionCompleteCollectionProcessing = ({ colorScheme="destructive" variant="text" onClick={() => setModalSubmitReviewIsOpen(true)} + disabled={!canProcess} > {formatMessage(m.completeCollectionProcessing)}