diff --git a/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.html b/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.html index 77523e8b2..ce8e9621b 100644 --- a/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.html +++ b/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.html @@ -7,7 +7,10 @@ link [label]="submission().title" [routerLink]="['/registries/', submission().id, 'overview']" - [queryParams]="{ mode: 'moderator', revisionId: isPendingModeration ? submission().revisionId : null }" + [queryParams]="{ + mode: 'moderator', + revisionId: isPendingModeration && !isPending ? submission().revisionId : null, + }" /> @if (submission().public && !submission().embargoEndDate) { diff --git a/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.ts b/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.ts index 00aabc4c0..2c4d56c18 100644 --- a/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.ts +++ b/src/app/features/moderation/components/registry-submission-item/registry-submission-item.component.ts @@ -6,7 +6,7 @@ import { ChangeDetectionStrategy, Component, input } from '@angular/core'; import { RouterLink } from '@angular/router'; import { IconComponent } from '@osf/shared/components'; -import { RevisionReviewStates } from '@osf/shared/enums'; +import { RegistrationReviewStates, RevisionReviewStates } from '@osf/shared/enums'; import { DateAgoPipe } from '@osf/shared/pipes'; import { REGISTRY_ACTION_LABEL, ReviewStatusIcon } from '../../constants'; @@ -35,6 +35,10 @@ export class RegistrySubmissionItemComponent { return this.submission().revisionStatus === RevisionReviewStates.RevisionPendingModeration; } + get isPending(): boolean { + return this.submission().reviewsState === RegistrationReviewStates.Pending; + } + toggleHistory() { this.showAll = !this.showAll; } diff --git a/src/app/features/registries/components/custom-step/custom-step.component.ts b/src/app/features/registries/components/custom-step/custom-step.component.ts index ac5fb6317..fcc1aeb05 100644 --- a/src/app/features/registries/components/custom-step/custom-step.component.ts +++ b/src/app/features/registries/components/custom-step/custom-step.component.ts @@ -30,12 +30,11 @@ import { ActivatedRoute, Router } from '@angular/router'; import { InfoIconComponent } from '@osf/shared/components'; import { INPUT_VALIDATION_MESSAGES } from '@osf/shared/constants'; -import { FilePayloadJsonApi, OsfFile } from '@osf/shared/models'; +import { FieldType } from '@osf/shared/enums'; +import { FilePayloadJsonApi, OsfFile, PageSchema } from '@osf/shared/models'; import { CustomValidators, findChangedFields } from '@osf/shared/utils'; -import { FieldType } from '../../enums'; import { FilesMapper } from '../../mappers/files.mapper'; -import { PageSchema } from '../../models'; import { RegistriesSelectors, SetUpdatedFields, UpdateStepValidation } from '../../store'; import { FilesControlComponent } from '../files-control/files-control.component'; diff --git a/src/app/features/registries/components/justification-review/justification-review.component.html b/src/app/features/registries/components/justification-review/justification-review.component.html index 36b9301e2..5f8c45cda 100644 --- a/src/app/features/registries/components/justification-review/justification-review.component.html +++ b/src/app/features/registries/components/justification-review/justification-review.component.html @@ -36,16 +36,19 @@

{{ section.title }}

{{ section.description }}

} @if (section.questions?.length) { - + > } } } @else { @if (page.questions?.length) { - + } } diff --git a/src/app/features/registries/components/justification-review/justification-review.component.ts b/src/app/features/registries/components/justification-review/justification-review.component.ts index 50a98a039..902859c73 100644 --- a/src/app/features/registries/components/justification-review/justification-review.component.ts +++ b/src/app/features/registries/components/justification-review/justification-review.component.ts @@ -10,18 +10,18 @@ import { Message } from 'primeng/message'; import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; +import { RegistrationBlocksDataComponent } from '@osf/shared/components'; import { INPUT_VALIDATION_MESSAGES } from '@osf/shared/constants'; -import { RevisionReviewStates } from '@osf/shared/enums'; +import { FieldType, RevisionReviewStates } from '@osf/shared/enums'; import { CustomConfirmationService, ToastService } from '@osf/shared/services'; -import { FieldType, SchemaActionTrigger } from '../../enums'; +import { SchemaActionTrigger } from '../../enums'; import { ClearState, DeleteSchemaResponse, HandleSchemaResponse, RegistriesSelectors } from '../../store'; import { ConfirmContinueEditingDialogComponent } from '../confirm-continue-editing-dialog/confirm-continue-editing-dialog.component'; -import { ReviewDataComponent } from '../review-data/review-data.component'; @Component({ selector: 'osf-justification-review', - imports: [Button, Card, TranslatePipe, Message, ReviewDataComponent], + imports: [Button, Card, TranslatePipe, Message, RegistrationBlocksDataComponent], templateUrl: './justification-review.component.html', styleUrl: './justification-review.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, @@ -62,10 +62,28 @@ export class JustificationReviewComponent { } changes = computed(() => { + let questions: Record = {}; + this.pages().forEach((page) => { + if (page.sections?.length) { + questions = { + ...questions, + ...Object.fromEntries( + page.sections.flatMap( + (section) => section.questions?.map((q) => [q.responseKey, q.displayText || '']) || [] + ) + ), + }; + } else { + questions = { + ...questions, + ...Object.fromEntries(page.questions?.map((q) => [q.responseKey, q.displayText]) || []), + }; + } + }); const updatedFields = this.updatedFields(); const updatedResponseKeys = this.schemaResponse()?.updatedResponseKeys || []; const uniqueKeys = new Set([...updatedResponseKeys, ...Object.keys(updatedFields)]); - return Array.from(uniqueKeys); + return Array.from(uniqueKeys).map((key) => questions[key]); }); submit(): void { diff --git a/src/app/features/registries/components/justification-step/justification-step.component.html b/src/app/features/registries/components/justification-step/justification-step.component.html index df6aeacdc..a833891e3 100644 --- a/src/app/features/registries/components/justification-step/justification-step.component.html +++ b/src/app/features/registries/components/justification-step/justification-step.component.html @@ -18,6 +18,9 @@

{{ 'registries.justification.title' | translate }}

} + + {{ 'registries.justification.caution' | translate }} +
+
-
+

{{ 'registries.new.infoText1' | translate }} {{ 'common.links.clickHere' | translate }} {{ 'registries.new.infoText2' | translate }}

-
+

{{ ('registries.new.steps.title' | translate) + '1' }}

{{ 'registries.new.steps.step1' | translate }}

diff --git a/src/app/features/registries/components/review-data/review-data.component.scss b/src/app/features/registries/components/review-data/review-data.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/features/registries/components/review-data/review-data.component.spec.ts b/src/app/features/registries/components/review-data/review-data.component.spec.ts deleted file mode 100644 index 835eab90c..000000000 --- a/src/app/features/registries/components/review-data/review-data.component.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ReviewDataComponent } from './review-data.component'; - -describe('ReviewDataComponent', () => { - let component: ReviewDataComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ReviewDataComponent], - }).compileComponents(); - - fixture = TestBed.createComponent(ReviewDataComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/features/registries/components/review-data/review-data.component.ts b/src/app/features/registries/components/review-data/review-data.component.ts deleted file mode 100644 index 2b8c11c6d..000000000 --- a/src/app/features/registries/components/review-data/review-data.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { TranslatePipe } from '@ngx-translate/core'; - -import { Message } from 'primeng/message'; -import { Tag } from 'primeng/tag'; - -import { ChangeDetectionStrategy, Component, input } from '@angular/core'; - -import { INPUT_VALIDATION_MESSAGES } from '@osf/shared/constants'; - -import { FieldType } from '../../enums'; -import { Question } from '../../models'; - -@Component({ - selector: 'osf-review-data', - imports: [Tag, TranslatePipe, Message], - templateUrl: './review-data.component.html', - styleUrl: './review-data.component.scss', - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class ReviewDataComponent { - questions = input(); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - reviewData = input>({}); - protected readonly FieldType = FieldType; - protected readonly INPUT_VALIDATION_MESSAGES = INPUT_VALIDATION_MESSAGES; -} diff --git a/src/app/features/registries/components/review/review.component.html b/src/app/features/registries/components/review/review.component.html index 5d8a02834..52fe716af 100644 --- a/src/app/features/registries/components/review/review.component.html +++ b/src/app/features/registries/components/review/review.component.html @@ -25,7 +25,7 @@

{{ 'common.labels.description' | translate }}

-

{{ 'navigation.registration.contributors' | translate }}

+

{{ 'navigation.contributors' | translate }}

@for (contributor of contributors(); let last = $last; track contributor.id) { @@ -101,13 +101,19 @@

{{ section.title }}

{{ section.description }}

} @if (section.questions?.length) { - + }
} } @else { @if (page.questions?.length) { - + } } diff --git a/src/app/features/registries/components/review/review.component.ts b/src/app/features/registries/components/review/review.component.ts index 56d545832..1d774f383 100644 --- a/src/app/features/registries/components/review/review.component.ts +++ b/src/app/features/registries/components/review/review.component.ts @@ -15,8 +15,9 @@ import { ChangeDetectionStrategy, Component, computed, effect, inject } from '@a import { toSignal } from '@angular/core/rxjs-interop'; import { ActivatedRoute, Router, RouterLink } from '@angular/router'; +import { RegistrationBlocksDataComponent } from '@osf/shared/components'; import { INPUT_VALIDATION_MESSAGES } from '@osf/shared/constants'; -import { ResourceType } from '@osf/shared/enums'; +import { FieldType, ResourceType } from '@osf/shared/enums'; import { InterpolatePipe } from '@osf/shared/pipes'; import { CustomConfirmationService, ToastService } from '@osf/shared/services'; import { @@ -26,10 +27,8 @@ import { SubjectsSelectors, } from '@osf/shared/stores'; -import { FieldType } from '../../enums'; import { ClearState, DeleteDraft, FetchLicenses, FetchProjectChildren, RegistriesSelectors } from '../../store'; import { ConfirmRegistrationDialogComponent } from '../confirm-registration-dialog/confirm-registration-dialog.component'; -import { ReviewDataComponent } from '../review-data/review-data.component'; import { SelectComponentsDialogComponent } from '../select-components-dialog/select-components-dialog.component'; @Component({ @@ -46,7 +45,7 @@ import { SelectComponentsDialogComponent } from '../select-components-dialog/sel AccordionHeader, AccordionPanel, InterpolatePipe, - ReviewDataComponent, + RegistrationBlocksDataComponent, ], templateUrl: './review.component.html', styleUrl: './review.component.scss', diff --git a/src/app/features/registries/enums/index.ts b/src/app/features/registries/enums/index.ts index c9ffc93db..3bebc3d38 100644 --- a/src/app/features/registries/enums/index.ts +++ b/src/app/features/registries/enums/index.ts @@ -1,5 +1,3 @@ -export * from './block-type.enum'; -export * from './field-type.enum'; export * from './registration-tab.enum'; export * from './schema-action-trigger.enum'; export * from './submit-type.enum'; diff --git a/src/app/features/registries/mappers/index.ts b/src/app/features/registries/mappers/index.ts index 013703b21..91c916d86 100644 --- a/src/app/features/registries/mappers/index.ts +++ b/src/app/features/registries/mappers/index.ts @@ -1,4 +1,3 @@ export * from './licenses.mapper'; -export * from './page-schema.mapper'; export * from './projects.mapper'; export * from './providers.mapper'; diff --git a/src/app/features/registries/models/index.ts b/src/app/features/registries/models/index.ts index d5ecd4457..abedd2a68 100644 --- a/src/app/features/registries/models/index.ts +++ b/src/app/features/registries/models/index.ts @@ -1,7 +1,5 @@ -export * from './page-schema.model'; export * from './project'; export * from './projects-json-api.model'; export * from './provider-schema.model'; export * from './registry-provider.model'; export * from './registry-provider-json-api.model'; -export * from './schema-blocks-json-api.model'; diff --git a/src/app/features/registries/services/registries.service.ts b/src/app/features/registries/services/registries.service.ts index 3f5a94952..27bbb5695 100644 --- a/src/app/features/registries/services/registries.service.ts +++ b/src/app/features/registries/services/registries.service.ts @@ -4,17 +4,19 @@ import { inject, Injectable } from '@angular/core'; import { JsonApiResponseWithPaging } from '@osf/core/models'; import { JsonApiService } from '@osf/core/services'; -import { RegistrationMapper } from '@osf/shared/mappers/registration'; +import { PageSchemaMapper, RegistrationMapper } from '@osf/shared/mappers/registration'; import { DraftRegistrationDataJsonApi, DraftRegistrationModel, DraftRegistrationRelationshipsJsonApi, DraftRegistrationResponseJsonApi, + PageSchema, RegistrationAttributesJsonApi, RegistrationCard, RegistrationDataJsonApi, RegistrationModel, RegistrationResponseJsonApi, + SchemaBlocksResponseJsonApi, SchemaResponse, SchemaResponseDataJsonApi, SchemaResponseJsonApi, @@ -22,8 +24,6 @@ import { } from '@osf/shared/models'; import { SchemaActionTrigger } from '../enums'; -import { PageSchemaMapper } from '../mappers'; -import { PageSchema, SchemaBlocksResponseJsonApi } from '../models'; import { environment } from 'src/environments/environment'; diff --git a/src/app/features/registries/store/registries.model.ts b/src/app/features/registries/store/registries.model.ts index 908bcdb4c..582df3dc7 100644 --- a/src/app/features/registries/store/registries.model.ts +++ b/src/app/features/registries/store/registries.model.ts @@ -4,13 +4,14 @@ import { DraftRegistrationModel, License, OsfFile, + PageSchema, RegistrationCard, RegistrationModel, Resource, SchemaResponse, } from '@shared/models'; -import { PageSchema, Project, ProviderSchema } from '../models'; +import { Project, ProviderSchema } from '../models'; export interface RegistriesStateModel { providerSchemas: AsyncStateModel; diff --git a/src/app/features/registries/store/registries.selectors.ts b/src/app/features/registries/store/registries.selectors.ts index 596bdc737..346d8cea4 100644 --- a/src/app/features/registries/store/registries.selectors.ts +++ b/src/app/features/registries/store/registries.selectors.ts @@ -4,13 +4,14 @@ import { DraftRegistrationModel, License, OsfFile, + PageSchema, RegistrationCard, RegistrationModel, Resource, SchemaResponse, } from '@shared/models'; -import { PageSchema, Project, ProviderSchema } from '../models'; +import { Project, ProviderSchema } from '../models'; import { RegistriesStateModel } from './registries.model'; import { RegistriesState } from './registries.state'; diff --git a/src/app/features/registry/components/registry-make-decision/registry-make-decision.component.html b/src/app/features/registry/components/registry-make-decision/registry-make-decision.component.html index 4ff0952a3..1f5c602a1 100644 --- a/src/app/features/registry/components/registry-make-decision/registry-make-decision.component.html +++ b/src/app/features/registry/components/registry-make-decision/registry-make-decision.component.html @@ -20,15 +20,17 @@ }
- @if (isPendingModeration) { + @if (isPendingModeration || isPendingReview) {
-