From 9706e18ec894590474c4aa2b27eb49a02f61994b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jarda=20Kot=C4=9B=C5=A1ovec?= Date: Tue, 8 Oct 2024 13:31:41 +0200 Subject: [PATCH 1/2] =?UTF-8?q?pkp/pkp-lib#7495=20Move=20'submissionSummar?= =?UTF-8?q?yModal'=20to=20own=20workflow=20folder=E2=80=A6=20(#423)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * pkp/pkp-lib#7495 Move 'submissionSummaryModal' to own workflow folder + other renaming and moving around for better structure * pkp/pkp-lib#7495 Fix path --- src/components/Container/WorkflowPage.vue | 12 +- .../Form/fields/FieldSelectIssue.vue | 8 +- src/components/Modal/ModalManager.vue | 3 +- src/pages/dashboard/DashboardPage.vue | 5 +- .../metaItems/BasicMetadata.vue | 15 - .../metaItems/IssueAssigned.vue | 31 -- .../submissionSummaryStore.js | 416 ------------------ ...Filters.vue => DashboardActiveFilters.vue} | 0 .../DashboardTable/CellSubmissionActions.vue | 2 +- .../composables/useEditorialLogic.js | 2 +- src/pages/dashboard/dashboardPageStore.js | 22 +- .../DashboardModalFilters.vue} | 0 .../Workflow.vue} | 76 ++-- .../workflow/WorkflowLogResponseForModal.vue | 39 -- .../action/WorkflowActionButton.vue} | 4 +- .../action}/WorkflowRecommendOnlyControls.vue | 6 +- .../header}/WorkflowPaymentDropdown.vue | 0 .../primary}/WorkflowNotificationDisplay.vue | 0 .../primary/WorkflowPrimaryBasicMetadata.vue} | 0 .../primary/WorkflowReviewRoundStatus.vue} | 0 .../primary/WorkflowSubmissionStatus.vue} | 0 .../WorkflowChangeSubmissionLanguage.vue | 4 +- .../WorkflowPublicationEditDisabled.vue} | 0 .../publication/WorkflowPublicationForm.vue} | 0 .../publication/WorkflowPublicationJats.vue} | 0 .../WorkflowPublicationSectionJats.vue} | 1 + .../WorkflowPublicationVersionControl.vue} | 6 +- ...lowRecommendOnlyListingRecommendations.vue | 0 .../composables/useWorkflowActions.js | 12 +- .../composables/useWorkflowAuthorConfig.js | 24 +- .../composables/useWorkflowDecisions.js | 0 .../composables/useWorkflowEditorialConfig.js | 76 ++-- .../useWorkflowNavigationConfig.js | 0 ...WorkflowChangeSubmissionLanguageModal.vue} | 4 +- ...ctRevisionDecisionModalLegacyWorkflow.vue} | 0 .../WorkflowSelectRevisionFormModal.vue} | 0 ...flowChangeSubmissionLanguageModalStore.js} | 8 +- src/pages/workflow/workflowStore.js | 413 +++++++++++++++++ 38 files changed, 548 insertions(+), 641 deletions(-) delete mode 100644 src/pages/dashboard/SubmissionSummaryModal/metaItems/BasicMetadata.vue delete mode 100644 src/pages/dashboard/SubmissionSummaryModal/metaItems/IssueAssigned.vue delete mode 100644 src/pages/dashboard/SubmissionSummaryModal/submissionSummaryStore.js rename src/pages/dashboard/components/{ActiveFilters.vue => DashboardActiveFilters.vue} (100%) rename src/pages/dashboard/{components/DashboardFiltersModal.vue => modals/DashboardModalFilters.vue} (100%) rename src/pages/{dashboard/SubmissionSummaryModal/SubmissionSummaryModal.vue => workflow/Workflow.vue} (65%) delete mode 100644 src/pages/workflow/WorkflowLogResponseForModal.vue rename src/pages/{dashboard/SubmissionSummaryModal/actionItems/ActionButton.vue => workflow/components/action/WorkflowActionButton.vue} (84%) rename src/pages/{dashboard/SubmissionSummaryModal/actionItems => workflow/components/action}/WorkflowRecommendOnlyControls.vue (96%) rename src/pages/{dashboard/SubmissionSummaryModal/actionItems => workflow/components/header}/WorkflowPaymentDropdown.vue (100%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems => workflow/components/primary}/WorkflowNotificationDisplay.vue (100%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems/PrimaryBasicMetadata.vue => workflow/components/primary/WorkflowPrimaryBasicMetadata.vue} (100%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems/ReviewRoundStatus.vue => workflow/components/primary/WorkflowReviewRoundStatus.vue} (100%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems/SubmissionStatus.vue => workflow/components/primary/WorkflowSubmissionStatus.vue} (100%) rename src/pages/{dashboard/SubmissionSummaryModal/publicationControls => workflow/components/publication}/WorkflowChangeSubmissionLanguage.vue (89%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems/PublicationEditDisabled.vue => workflow/components/publication/WorkflowPublicationEditDisabled.vue} (100%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems/PublicationForm.vue => workflow/components/publication/WorkflowPublicationForm.vue} (100%) rename src/pages/{dashboard/SubmissionSummaryModal/primaryItems/PublicationJats.vue => workflow/components/publication/WorkflowPublicationJats.vue} (100%) rename src/pages/workflow/{PublicationSectionJats.vue => components/publication/WorkflowPublicationSectionJats.vue} (99%) rename src/pages/{dashboard/SubmissionSummaryModal/publicationControls/PublicationVersionControl.vue => workflow/components/publication/WorkflowPublicationVersionControl.vue} (94%) rename src/pages/{dashboard/SubmissionSummaryModal/components => workflow/components/secondary}/WorkflowRecommendOnlyListingRecommendations.vue (100%) rename src/pages/{dashboard => workflow}/composables/useWorkflowActions.js (94%) rename src/pages/{dashboard/SubmissionSummaryModal => workflow}/composables/useWorkflowAuthorConfig.js (94%) rename src/pages/{dashboard => workflow}/composables/useWorkflowDecisions.js (100%) rename src/pages/{dashboard/SubmissionSummaryModal => workflow}/composables/useWorkflowEditorialConfig.js (92%) rename src/pages/{dashboard/SubmissionSummaryModal => workflow}/composables/useWorkflowNavigationConfig.js (100%) rename src/pages/workflow/{ChangeSubmissionLanguage.vue => modals/WorkflowChangeSubmissionLanguageModal.vue} (85%) rename src/pages/workflow/{SelectRevisionDecisionModal.vue => modals/WorkflowSelectRevisionDecisionModalLegacyWorkflow.vue} (100%) rename src/pages/{dashboard/components/SelectRevisionFormModal.vue => workflow/modals/WorkflowSelectRevisionFormModal.vue} (100%) rename src/pages/workflow/{changeSubmissionLanguageStore.js => modals/workflowChangeSubmissionLanguageModalStore.js} (95%) create mode 100644 src/pages/workflow/workflowStore.js diff --git a/src/components/Container/WorkflowPage.vue b/src/components/Container/WorkflowPage.vue index 965a02a7a..abca15ab5 100644 --- a/src/components/Container/WorkflowPage.vue +++ b/src/components/Container/WorkflowPage.vue @@ -1,7 +1,7 @@ diff --git a/src/pages/dashboard/SubmissionSummaryModal/metaItems/IssueAssigned.vue b/src/pages/dashboard/SubmissionSummaryModal/metaItems/IssueAssigned.vue deleted file mode 100644 index e0d9ad4a5..000000000 --- a/src/pages/dashboard/SubmissionSummaryModal/metaItems/IssueAssigned.vue +++ /dev/null @@ -1,31 +0,0 @@ - - diff --git a/src/pages/dashboard/SubmissionSummaryModal/submissionSummaryStore.js b/src/pages/dashboard/SubmissionSummaryModal/submissionSummaryStore.js deleted file mode 100644 index 2768e1ae9..000000000 --- a/src/pages/dashboard/SubmissionSummaryModal/submissionSummaryStore.js +++ /dev/null @@ -1,416 +0,0 @@ -import {computed, ref, watch} from 'vue'; - -import {defineComponentStore} from '@/utils/defineComponentStore'; -import {useFetch} from '@/composables/useFetch'; -import {useUrl} from '@/composables/useUrl'; -import {EditorialRoles, useCurrentUser} from '@/composables/useCurrentUser'; -import { - useWorkflowActions, - Actions as WorkflowActions, -} from '../composables/useWorkflowActions'; - -import { - useWorkflowDecisions, - Actions as DecisionActions, -} from '../composables/useWorkflowDecisions'; - -import {DashboardPageTypes} from '../dashboardPageStore'; - -import {useWorkflowEditorialConfig} from './composables/useWorkflowEditorialConfig'; -import {useWorkflowAuthorConfig} from './composables/useWorkflowAuthorConfig'; - -import {useDataChangedProvider} from '@/composables/useDataChangedProvider'; -import {useWorkflowNavigationConfig} from './composables/useWorkflowNavigationConfig'; -import {useSubmission} from '@/composables/useSubmission'; -import {useSideMenu} from '@/composables/useSideMenu'; - -export const useSubmissionSummaryStore = defineComponentStore( - 'submissionSummary', - (props) => { - const dashboardPage = props.pageInitConfig.dashboardPage; - - const {getReviewRound, getCurrentReviewRound} = useSubmission(); - - /** - * Fetch submission details - */ - const {apiUrl: submissionApiUrl} = useUrl( - `submissions/${encodeURIComponent(props.submissionId)}`, - ); - const {data: submission, fetch: fetchSubmission} = - useFetch(submissionApiUrl); - - /** Fetch publications */ - const selectedPublicationId = ref(null); - function selectPublicationId(publicationId) { - if (selectedPublicationId.value !== publicationId) { - selectedPublicationId.value = publicationId; - selectedPublication.value = null; - fetchSelectedPublication(); - } - } - const selectedPublicationUrlRelative = computed( - () => - `submissions/${encodeURIComponent(props.submissionId)}/publications/${selectedPublicationId.value}`, - ); - const {apiUrl: selectedPublicationUrl} = useUrl( - selectedPublicationUrlRelative, - ); - const {data: selectedPublication, fetch: fetchSelectedPublication} = - useFetch(selectedPublicationUrl); - - /** - * Data changes tracking - */ - const {triggerDataChange} = useDataChangedProvider(() => { - return Promise.all([fetchSubmission(), fetchSelectedPublication()]); - }); - - /** Current publication is fetched always when the new submission is fetched */ - watch(submission, (newSubmission, oldSubmission) => { - // Once the submission is fetched, select relevant stage in navigaton - if (!oldSubmission && newSubmission) { - selectedPublicationId.value = - newSubmission.publications[newSubmission.publications.length - 1].id; - fetchSelectedPublication(); - - if ( - newSubmission.stageId === pkp.const.WORKFLOW_STAGE_ID_EXTERNAL_REVIEW - ) { - setActiveItemKey( - `workflow_${newSubmission.stageId}_${ - getCurrentReviewRound( - newSubmission, - pkp.const.WORKFLOW_STAGE_ID_EXTERNAL_REVIEW, - )?.id - }`, - ); - } else if ( - newSubmission.stageId === pkp.const.WORKFLOW_STAGE_ID_PRODUCTION && - newSubmission.status !== pkp.const.STATUS_QUEUED - ) { - setActiveItemKey(`publication_titleAbstract`); - } else { - setActiveItemKey(`workflow_${newSubmission.stageId}`); - } - } - }); - - fetchSubmission(); - - /** - * UI Permissions - */ - - const {getActiveStage, getStageById} = useSubmission(); - const {hasCurrentUserAtLeastOneRole} = useCurrentUser(); - - function hasIntersection(arr1, arr2) { - const set = new Set(arr1); - return arr2.some((item) => set.has(item)); - } - - const permissions = computed(() => { - // View title, metadata, etc. - let canAccessPublication = false; - let canEditPublication = false; - // Access to galleys and issue entry - let canAccessProduction = false; - // Ability to publish, unpublish and create versions - let canPublish = false; - // Access to activity log - let canAccessEditorialHistory = false; - // Changing submission language - let canChangeSubmissionLanguage = false; - - let accessibleStages = []; - - if (!submission.value) { - return { - canAccessPublication, - canAccessProduction, - canEditPublication, - canPublish, - canAccessEditorialHistory, - accessibleStages, - }; - } - - const activeStage = getActiveStage(submission.value); - const productionStage = getStageById( - submission.value, - pkp.const.WORKFLOW_STAGE_ID_PRODUCTION, - ); - - submission.value.stages.forEach((stage) => { - if (stage.currentUserAssignedRoles.length) { - accessibleStages.push(stage.id); - } - }); - - // TODO this will be replaced by with one flag from backend - productionStage.stageAssignments - .filter( - (stageAssignment) => stageAssignment.userId === pkp.currentUser.id, - ) - .forEach((stageAssignment) => { - if (stageAssignment.canChangeMetadata) { - canEditPublication = true; - } - }); - if (hasCurrentUserAtLeastOneRole([pkp.const.ROLE_ID_MANAGER])) { - canEditPublication = true; - } - - if ( - selectedPublication.value && - selectedPublication.value?.status === pkp.const.STATUS_PUBLISHED - ) { - canEditPublication = false; - } - - if ( - hasIntersection(activeStage.currentUserAssignedRoles, [ - ...EditorialRoles, - pkp.const.ROLE_ID_AUTHOR, - ]) - ) { - canAccessPublication = true; - - if ( - hasIntersection(productionStage.currentUserAssignedRoles, [ - ...EditorialRoles, - pkp.const.ROLE_ID_AUTHOR, - ]) - ) { - canAccessProduction = true; - } - if ( - !productionStage.currentUserCanRecommendOnly && - hasIntersection(productionStage.currentUserAssignedRoles, [ - pkp.const.ROLE_ID_SITE_ADMIN, - pkp.const.ROLE_ID_MANAGER, - ]) - ) { - canPublish = true; - } - } - - if ( - hasIntersection(activeStage.currentUserAssignedRoles, [ - pkp.const.ROLE_ID_MANAGER, - pkp.const.ROLE_ID_SITE_ADMIN, - pkp.const.ROLE_ID_SUB_EDITOR, - ]) - ) { - canAccessEditorialHistory = true; - } - - if (canPublish || canEditPublication) { - canChangeSubmissionLanguage = true; - } - - return { - canAccessPublication, - canAccessProduction, - canEditPublication, - canPublish, - canAccessEditorialHistory, - canChangeSubmissionLanguage, - accessibleStages, - }; - }); - - /** - * Handling navigation - */ - const {getMenuItems} = useWorkflowNavigationConfig(props.pageInitConfig); - const menuItems = computed(() => { - if (!submission.value) { - return []; - } - - return getMenuItems({ - submission: submission.value, - permissions: permissions.value, - }); - }); - - function navigateToMenu({key}) { - setActiveItemKey(key); - return; - } - - const { - sideMenuProps, - setExpandedKeys, - setActiveItemKey, - selectedItem: selectedMenuItem, - } = useSideMenu(menuItems); - - const selectedMenuState = computed(() => { - return selectedMenuItem.value?.actionArgs || {}; - }); - - setExpandedKeys([ - 'workflow', - 'publication', - `workflow_${pkp.const.WORKFLOW_STAGE_ID_EXTERNAL_REVIEW}`, - ]); - - const selectedReviewRound = computed(() => { - if (!selectedMenuState.value.reviewRoundId) { - return null; - } - const reviewRound = getReviewRound( - submission.value, - selectedMenuState.value.reviewRoundId, - ); - return reviewRound; - }); - - /** - * Expose workflow actions - * - */ - const _workflowActionsFns = useWorkflowActions(props.pageInitConfig); - const workflowActions = Object.values(WorkflowActions).reduce( - (acc, actionName) => { - acc[actionName] = (noArgs, finishedCallback = null) => - _workflowActionsFns[actionName]( - { - submission: submission.value, - selectedPublication: selectedPublication.value, - reviewRoundId: selectedReviewRound.value?.id, - store, - }, - (finishedData) => { - triggerDataChange(); - if (finishedCallback) { - finishedCallback(finishedData); - } - }, - ); - return acc; - }, - {}, - ); - - /** - * Expose decision functions - * - * */ - const _workflowDecisionsFns = useWorkflowDecisions(); - const decisionActions = Object.values(DecisionActions).reduce( - (acc, actionName) => { - acc[actionName] = (noArgs) => - _workflowDecisionsFns[actionName]({ - submission: submission.value, - selectedPublication: selectedPublication.value, - reviewRoundId: selectedReviewRound.value?.id, - }); - return acc; - }, - {}, - ); - - /** - * Items - * - * */ - - const _workflowEditorialConfigFns = - dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD - ? useWorkflowEditorialConfig() - : useWorkflowAuthorConfig(); - - const stageTitle = computed(() => { - return selectedMenuState.value?.title || ''; - }); - - function _getItemsArgs() { - return { - selectedMenuState: selectedMenuState.value, - submission: submission.value, - pageInitConfig: props.pageInitConfig, - selectedPublication: selectedPublication.value, - selectedPublicationId: selectedPublicationId.value, - selectedReviewRound: selectedReviewRound.value, - permissions: permissions.value, - }; - } - - /** Header Actions */ - const headerItems = computed(() => { - return _workflowEditorialConfigFns.getHeaderItems({ - submission: submission.value, - selectedPublication: selectedPublication.value, - publicationSettings: props.pageInitConfig.publicationSettings, - permissions: permissions.value, - }); - }); - - const primaryItems = computed(() => { - return _workflowEditorialConfigFns.getPrimaryItems(_getItemsArgs()); - }); - - const secondaryItems = computed(() => { - return _workflowEditorialConfigFns.getSecondaryItems(_getItemsArgs()); - }); - - const actionItems = computed(() => { - return _workflowEditorialConfigFns.getActionItems(_getItemsArgs()); - }); - - const publicationControlsLeft = computed(() => { - return _workflowEditorialConfigFns.getPublicationControlsLeft( - _getItemsArgs(), - ); - }); - - const publicationControlsRight = computed(() => { - return _workflowEditorialConfigFns.getPublicationControlsRight( - _getItemsArgs(), - ); - }); - - const store = { - dashboardPage, - submission, - selectedPublication, - selectPublicationId, - - /** - * Navigation - * */ - selectedMenuItem, - sideMenuProps, - selectedMenuState, - navigateToMenu, - - /** Actions - * - */ - ...workflowActions, - ...decisionActions, - - /** - * Summary - */ - stageTitle, - headerItems, - primaryItems, - secondaryItems, - actionItems, - publicationControlsLeft, - publicationControlsRight, - - /** - * Expose for extensions - */ - - _workflowActionsFns, - }; - return store; - }, -); diff --git a/src/pages/dashboard/components/ActiveFilters.vue b/src/pages/dashboard/components/DashboardActiveFilters.vue similarity index 100% rename from src/pages/dashboard/components/ActiveFilters.vue rename to src/pages/dashboard/components/DashboardActiveFilters.vue diff --git a/src/pages/dashboard/components/DashboardTable/CellSubmissionActions.vue b/src/pages/dashboard/components/DashboardTable/CellSubmissionActions.vue index c44006ffb..8c20cdfa7 100644 --- a/src/pages/dashboard/components/DashboardTable/CellSubmissionActions.vue +++ b/src/pages/dashboard/components/DashboardTable/CellSubmissionActions.vue @@ -24,7 +24,7 @@ function handleAction() { if (props.item.submissionProgress) { dashboardPageStore.openSubmissionWizard(props.item.id); } else { - dashboardPageStore.openSummaryModal(props.item.id); + dashboardPageStore.openWorkflowModal(props.item.id); } } diff --git a/src/pages/dashboard/composables/useEditorialLogic.js b/src/pages/dashboard/composables/useEditorialLogic.js index e99c516e7..dd82d3c68 100644 --- a/src/pages/dashboard/composables/useEditorialLogic.js +++ b/src/pages/dashboard/composables/useEditorialLogic.js @@ -2,7 +2,7 @@ import {useSubmission} from '@/composables/useSubmission.js'; import {useLocalize} from '@/composables/useLocalize'; import {useDate} from '@/composables/useDate'; import {Actions as ParticipantManagerActions} from '@/managers/ParticipantManager/useParticipantManagerActions'; -import {Actions as WorkflowActions} from './useWorkflowActions'; +import {Actions as WorkflowActions} from '@/pages/workflow/composables/useWorkflowActions'; import {Actions as ReviewerManagerActions} from '@/managers/ReviewerManager/useReviewerManagerActions'; const {formatShortDate} = useDate(); diff --git a/src/pages/dashboard/dashboardPageStore.js b/src/pages/dashboard/dashboardPageStore.js index 59a70cebd..7fbcc04a3 100644 --- a/src/pages/dashboard/dashboardPageStore.js +++ b/src/pages/dashboard/dashboardPageStore.js @@ -10,7 +10,7 @@ import {useUrl} from '@/composables/useUrl'; import {useQueryParams} from '@/composables/useQueryParams'; import {defineComponentStore} from '@/utils/defineComponentStore'; -import {useWorkflowActions} from './composables/useWorkflowActions'; +import {useWorkflowActions} from '../workflow/composables/useWorkflowActions'; import {useReviewerManagerActions} from '@/managers/ReviewerManager/useReviewerManagerActions'; import {useParticipantManagerActions} from '@/managers/ParticipantManager/useParticipantManagerActions'; @@ -19,8 +19,8 @@ import {useEditorialLogic} from './composables/useEditorialLogic'; import {useReviewActivityLogic} from './composables/useReviewActivityLogic'; import {useSubmission} from '@/composables/useSubmission'; -import DashboardFiltersModal from '@/pages/dashboard/components/DashboardFiltersModal.vue'; -import SubmissionSummaryModal from '@/pages/dashboard/SubmissionSummaryModal/SubmissionSummaryModal.vue'; +import DashboardModalFilters from '@/pages/dashboard/modals/DashboardModalFilters.vue'; +import Workflow from '@/pages/workflow/Workflow.vue'; const {t, tk} = useLocalize(); @@ -127,7 +127,7 @@ export const useDashboardPageStore = defineComponentStore( */ const isModalOpenedFilters = ref(false); function openFiltersModal() { - openSideModal(DashboardFiltersModal, { + openSideModal(DashboardModalFilters, { filtersFormInitial: filtersForm, onUpdateFiltersForm: updateFiltersForm, }); @@ -319,18 +319,18 @@ export const useDashboardPageStore = defineComponentStore( const selectedSubmission = ref(null); /** - * Summary submission Modal + * Workflow submission Modal */ - // Tracking which submissionId is opened in summary modal for query params + // Tracking which submissionId is opened in workflow modal for query params const workflowSubmissionId = computed(() => { return queryParamsUrl.workflowSubmissionId; }); - function openSummaryModal(submissionId) { + function openWorkflowModal(submissionId) { queryParamsUrl.workflowSubmissionId = submissionId; openSideModal( - SubmissionSummaryModal, + Workflow, { submissionId, pageInitConfig, @@ -344,7 +344,7 @@ export const useDashboardPageStore = defineComponentStore( ); } if (queryParamsUrl.workflowSubmissionId) { - openSummaryModal(queryParamsUrl.workflowSubmissionId); + openWorkflowModal(queryParamsUrl.workflowSubmissionId); } function openSubmissionWizard(submissionId) { @@ -425,8 +425,8 @@ export const useDashboardPageStore = defineComponentStore( // Modals selectedSubmission, - // Summary submission Modal - openSummaryModal, + // Workflow Modal + openWorkflowModal, openSubmissionWizard, diff --git a/src/pages/dashboard/components/DashboardFiltersModal.vue b/src/pages/dashboard/modals/DashboardModalFilters.vue similarity index 100% rename from src/pages/dashboard/components/DashboardFiltersModal.vue rename to src/pages/dashboard/modals/DashboardModalFilters.vue diff --git a/src/pages/dashboard/SubmissionSummaryModal/SubmissionSummaryModal.vue b/src/pages/workflow/Workflow.vue similarity index 65% rename from src/pages/dashboard/SubmissionSummaryModal/SubmissionSummaryModal.vue rename to src/pages/workflow/Workflow.vue index 07f4c1a3a..23c4a86b7 100644 --- a/src/pages/dashboard/SubmissionSummaryModal/SubmissionSummaryModal.vue +++ b/src/pages/workflow/Workflow.vue @@ -28,7 +28,7 @@ @@ -36,34 +36,34 @@ -