From 92ee7ed2e8af8462a38a4bc5420a5936b851a172 Mon Sep 17 00:00:00 2001 From: mkovalua Date: Fri, 16 Jan 2026 16:49:38 +0200 Subject: [PATCH 1/3] show funder awards for registry submissions --- .../registry-submission-item.component.html | 11 ++++++- .../registry-submission-item.component.ts | 12 +++++++- .../funder-awards-list.component.html | 20 +++++++++++++ .../funder-awards-list.component.scss | 0 .../funder-awards-list.component.spec.ts | 22 ++++++++++++++ .../funder-awards-list.component.ts | 30 +++++++++++++++++++ src/assets/i18n/en.json | 1 + 7 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 src/app/shared/funder-awards-list/funder-awards-list.component.html create mode 100644 src/app/shared/funder-awards-list/funder-awards-list.component.scss create mode 100644 src/app/shared/funder-awards-list/funder-awards-list.component.spec.ts create mode 100644 src/app/shared/funder-awards-list/funder-awards-list.component.ts 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 006ce75fc..acff7eaa5 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 @@ -1,5 +1,5 @@
- +
@@ -71,6 +71,15 @@

{{ submission().title }}

+ + +
+ @if (isOpen()) { +

{{submission().id}}

+ + } +
+
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 770db64d4..aa99fe3d4 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 @@ -4,12 +4,13 @@ import { Accordion, AccordionContent, AccordionHeader, AccordionPanel } from 'pr import { Button } from 'primeng/button'; import { DatePipe } from '@angular/common'; -import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core'; +import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core'; import { ContributorsListComponent } from '@osf/shared/components/contributors-list/contributors-list.component'; import { IconComponent } from '@osf/shared/components/icon/icon.component'; import { TruncatedTextComponent } from '@osf/shared/components/truncated-text/truncated-text.component'; import { DateAgoPipe } from '@osf/shared/pipes/date-ago.pipe'; +import { FunderAwardsListComponent } from '@shared/funder-awards-list/funder-awards-list.component'; import { REGISTRY_ACTION_LABEL, ReviewStatusIcon } from '../../constants'; import { ActionStatus, SubmissionReviewStatus } from '../../enums'; @@ -29,6 +30,7 @@ import { RegistryModeration } from '../../models'; AccordionHeader, AccordionContent, ContributorsListComponent, + FunderAwardsListComponent, ], templateUrl: './registry-submission-item.component.html', styleUrl: './registry-submission-item.component.scss', @@ -39,6 +41,7 @@ export class RegistrySubmissionItemComponent { submission = input.required(); loadContributors = output(); loadMoreContributors = output(); + isOpen = signal(false); selected = output(); @@ -67,6 +70,13 @@ export class RegistrySubmissionItemComponent { }); handleOpen() { + console.log(this.submission().id) + this.isOpen.set(true); this.loadContributors.emit(); } + + handleClose() { + console.log('handleClose'); + this.isOpen.set(false); + } } diff --git a/src/app/shared/funder-awards-list/funder-awards-list.component.html b/src/app/shared/funder-awards-list/funder-awards-list.component.html new file mode 100644 index 000000000..84126f64d --- /dev/null +++ b/src/app/shared/funder-awards-list/funder-awards-list.component.html @@ -0,0 +1,20 @@ +
+ @let funders = customItemMetadata()?.funders; + @if (funders?.length) { +

{{ 'resourceCard.labels.funderAwards' | translate }}

+
+ @for (funder of funders; track $index) { + +
{{ funder.funderName }}
+ +
{{ funder.awardNumber }}
+
+ } + +
+ } +
diff --git a/src/app/shared/funder-awards-list/funder-awards-list.component.scss b/src/app/shared/funder-awards-list/funder-awards-list.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/shared/funder-awards-list/funder-awards-list.component.spec.ts b/src/app/shared/funder-awards-list/funder-awards-list.component.spec.ts new file mode 100644 index 000000000..4ab0e277c --- /dev/null +++ b/src/app/shared/funder-awards-list/funder-awards-list.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FunderAwardsListComponent } from './funder-awards-list.component'; + +describe('FunderAwardsListComponent', () => { + let component: FunderAwardsListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [FunderAwardsListComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(FunderAwardsListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/funder-awards-list/funder-awards-list.component.ts b/src/app/shared/funder-awards-list/funder-awards-list.component.ts new file mode 100644 index 000000000..b7295c8ec --- /dev/null +++ b/src/app/shared/funder-awards-list/funder-awards-list.component.ts @@ -0,0 +1,30 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core'; +import { RouterLink } from '@angular/router'; + +import { GetCustomItemMetadata, MetadataSelectors } from '@osf/features/metadata/store'; + +@Component({ + selector: 'osf-funder-awards-list', + imports: [RouterLink, TranslatePipe], + templateUrl: './funder-awards-list.component.html', + styleUrl: './funder-awards-list.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class FunderAwardsListComponent { + registryId = input(null); + private store = inject(Store); + customItemMetadata = this.store.selectSignal(MetadataSelectors.getCustomItemMetadata); + + constructor() { + effect(() => { + const registryId = this.registryId(); + if (registryId) { + this.store.dispatch(new GetCustomItemMetadata(registryId)); + } + }); + } +} diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 13b5ec8f8..3e1af97b6 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -2778,6 +2778,7 @@ "withdrawn": "Withdrawn", "from": "From:", "funder": "Funder:", + "funderAwards": "Funder awards:", "resourceNature": "Resource type:", "dateCreated": "Date created", "dateModified": "Date modified", From cd77a3f8980767e3ac55dd02d1c42a4efbbe8211 Mon Sep 17 00:00:00 2001 From: mkovalua Date: Fri, 16 Jan 2026 16:59:45 +0200 Subject: [PATCH 2/3] fix linter --- .../registry-submission-item.component.html | 2 +- .../registry-submission-item.component.ts | 2 -- .../funder-awards-list.component.html | 25 +++++++++---------- 3 files changed, 13 insertions(+), 16 deletions(-) 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 acff7eaa5..57b0b9404 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 @@ -75,7 +75,7 @@

{{ submission().title }}

@if (isOpen()) { -

{{submission().id}}

+

{{ submission().id }}

}
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 aa99fe3d4..22274f2cb 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 @@ -70,13 +70,11 @@ export class RegistrySubmissionItemComponent { }); handleOpen() { - console.log(this.submission().id) this.isOpen.set(true); this.loadContributors.emit(); } handleClose() { - console.log('handleClose'); this.isOpen.set(false); } } diff --git a/src/app/shared/funder-awards-list/funder-awards-list.component.html b/src/app/shared/funder-awards-list/funder-awards-list.component.html index 84126f64d..34cbeb506 100644 --- a/src/app/shared/funder-awards-list/funder-awards-list.component.html +++ b/src/app/shared/funder-awards-list/funder-awards-list.component.html @@ -2,19 +2,18 @@ @let funders = customItemMetadata()?.funders; @if (funders?.length) {

{{ 'resourceCard.labels.funderAwards' | translate }}

- } From 02ed6339126f0227c3a85ac2dbe04162cf65f67c Mon Sep 17 00:00:00 2001 From: mkovalua Date: Sat, 17 Jan 2026 19:10:02 +0200 Subject: [PATCH 3/3] make metadata calls shared --- src/app/features/metadata/services/index.ts | 1 - src/app/features/metadata/store/metadata.state.ts | 2 +- .../metadata => shared}/services/metadata.service.ts | 7 ++++--- 3 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 src/app/features/metadata/services/index.ts rename src/app/{features/metadata => shared}/services/metadata.service.ts (96%) diff --git a/src/app/features/metadata/services/index.ts b/src/app/features/metadata/services/index.ts deleted file mode 100644 index 92c69e450..000000000 --- a/src/app/features/metadata/services/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './metadata.service'; diff --git a/src/app/features/metadata/store/metadata.state.ts b/src/app/features/metadata/store/metadata.state.ts index 245895fd9..b7172fd61 100644 --- a/src/app/features/metadata/store/metadata.state.ts +++ b/src/app/features/metadata/store/metadata.state.ts @@ -7,7 +7,7 @@ import { inject, Injectable } from '@angular/core'; import { handleSectionError } from '@osf/shared/helpers/state-error.handler'; import { CedarMetadataRecord, CedarMetadataRecordJsonApi, MetadataModel } from '../models'; -import { MetadataService } from '../services'; +import { MetadataService } from '@osf/shared/services/metadata.service'; import { AddCedarMetadataRecordToState, diff --git a/src/app/features/metadata/services/metadata.service.ts b/src/app/shared/services/metadata.service.ts similarity index 96% rename from src/app/features/metadata/services/metadata.service.ts rename to src/app/shared/services/metadata.service.ts index 75ae0c86b..3df9186ff 100644 --- a/src/app/features/metadata/services/metadata.service.ts +++ b/src/app/shared/services/metadata.service.ts @@ -10,7 +10,8 @@ import { LicenseOptions } from '@osf/shared/models/license/license.model'; import { BaseNodeAttributesJsonApi } from '@osf/shared/models/nodes/base-node-attributes-json-api.model'; import { JsonApiService } from '@osf/shared/services/json-api.service'; -import { CedarRecordsMapper, MetadataMapper } from '../mappers'; +// import { CedarRecordsMapper, MetadataMapper } from '../mappers'; +import { CedarRecordsMapper, MetadataMapper } from '@osf/features/metadata/mappers'; import { CedarMetadataRecord, CedarMetadataRecordJsonApi, @@ -20,8 +21,8 @@ import { CustomMetadataJsonApiResponse, MetadataJsonApi, MetadataJsonApiResponse, -} from '../models'; -import { CrossRefFundersResponse, CustomItemMetadataRecord, MetadataModel } from '../models/metadata.model'; +} from '@osf/features/metadata/models'; +import { CrossRefFundersResponse, CustomItemMetadataRecord, MetadataModel } from '@osf/features/metadata/models'; @Injectable({ providedIn: 'root',