Skip to content

Commit 141fd22

Browse files
authored
Feat - Preprints Affiliated institutions (#280)
* refactor(institutions): Refactored store, service and models for handling institutions * feat(affiliated-institutions): Implemented shared component for selection, used for preprints * feat(affiliated-institutions-view): Implemented shared component. Unified usage of Institution model * fix(affiliated-institutions-view): Fixed link * fix(affiliated-institutions-view): Fixed warning * fix(affiliated-institutions): Fixed PR comments
1 parent 24f3a40 commit 141fd22

File tree

64 files changed

+671
-445
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+671
-445
lines changed

src/app/core/constants/ngxs-states.constant.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import { RegistrationsState } from '@osf/features/project/registrations/store';
88
import { AccountSettingsState } from '@osf/features/settings/account-settings/store/account-settings.state';
99
import { DeveloperAppsState } from '@osf/features/settings/developer-apps/store';
1010
import { NotificationSubscriptionState } from '@osf/features/settings/notifications/store';
11-
import { AddonsState, InstitutionsState, WikiState } from '@osf/shared/stores';
11+
import { AddonsState, WikiState } from '@osf/shared/stores';
12+
import { InstitutionsState } from '@shared/stores/institutions';
1213
import { LicensesState } from '@shared/stores/licenses';
1314
import { MyResourcesState } from '@shared/stores/my-resources';
1415
import { RegionsState } from '@shared/stores/regions';

src/app/features/home/pages/dashboard/dashboard.component.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { MY_PROJECTS_TABLE_PARAMS } from '@osf/shared/constants';
2121
import { SortOrder } from '@osf/shared/enums';
2222
import { IS_MEDIUM } from '@osf/shared/helpers';
2323
import { MyResourcesItem, MyResourcesSearchFilters, TableParameters } from '@osf/shared/models';
24-
import { ClearMyResources, FetchUserInstitutions, GetMyProjects, MyResourcesSelectors } from '@shared/stores';
24+
import { ClearMyResources, GetMyProjects, MyResourcesSelectors } from '@shared/stores';
2525

2626
import { ConfirmEmailComponent } from '../../components';
2727

@@ -73,7 +73,6 @@ export class DashboardComponent implements OnInit {
7373

7474
ngOnInit() {
7575
this.setupQueryParamsSubscription();
76-
this.store.dispatch(new FetchUserInstitutions());
7776

7877
this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params) => {
7978
const userId = params['userId'];

src/app/features/institutions/pages/institutions-list/institutions-list.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {
3030
import { TABLE_PARAMS } from '@shared/constants';
3131
import { parseQueryFilterParams } from '@shared/helpers';
3232
import { QueryParams } from '@shared/models';
33-
import { FetchInstitutions, InstitutionsSelectors } from '@shared/stores';
33+
import { FetchInstitutions, InstitutionsSelectors } from '@shared/stores/institutions';
3434

3535
@Component({
3636
selector: 'osf-institutions-list',

src/app/features/preprints/components/preprint-details/general-information/general-information.component.html

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,7 @@ <h3>{{ 'preprints.preprintStepper.common.labels.abstract' | translate }}</h3>
88
</section>
99

1010
@if (affiliatedInstitutions().length) {
11-
<section class="flex flex-column gap-2">
12-
<h3>{{ 'preprints.preprintStepper.review.sections.metadata.affiliatedInstitutions' | translate }}</h3>
13-
14-
<div class="flex gap-2">
15-
@for (institution of affiliatedInstitutions(); track institution.id) {
16-
<img alt="Institution logo" [src]="institution.assets.logo" height="45" />
17-
}
18-
</div>
19-
</section>
11+
<osf-affiliated-institutions-view [institutions]="affiliatedInstitutions()" />
2012
}
2113

2214
@if (preprintValue.nodeId) {

src/app/features/preprints/components/preprint-details/general-information/general-information.component.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ import { TranslatePipe } from '@ngx-translate/core';
55
import { Card } from 'primeng/card';
66
import { Skeleton } from 'primeng/skeleton';
77

8-
import { ChangeDetectionStrategy, Component, computed, effect, input, OnDestroy, output, signal } from '@angular/core';
8+
import { ChangeDetectionStrategy, Component, computed, effect, input, OnDestroy, output } from '@angular/core';
99
import { FormsModule } from '@angular/forms';
1010
import { RouterLink } from '@angular/router';
1111

1212
import { PreprintDoiSectionComponent } from '@osf/features/preprints/components/preprint-details/preprint-doi-section/preprint-doi-section.component';
1313
import { ApplicabilityStatus, PreregLinkInfo } from '@osf/features/preprints/enums';
1414
import { PreprintProviderDetails } from '@osf/features/preprints/models';
1515
import { FetchPreprintById, PreprintSelectors } from '@osf/features/preprints/store/preprint';
16-
import { IconComponent, TruncatedTextComponent } from '@shared/components';
16+
import { AffiliatedInstitutionsViewComponent, IconComponent, TruncatedTextComponent } from '@shared/components';
1717
import { ResourceType } from '@shared/enums';
18-
import { Institution } from '@shared/models';
1918
import { ContributorsSelectors, GetAllContributors, ResetContributorsState } from '@shared/stores';
19+
import { FetchResourceInstitutions, InstitutionsSelectors } from '@shared/stores/institutions';
2020

2121
import { environment } from 'src/environments/environment';
2222

@@ -31,6 +31,7 @@ import { environment } from 'src/environments/environment';
3131
PreprintDoiSectionComponent,
3232
RouterLink,
3333
IconComponent,
34+
AffiliatedInstitutionsViewComponent,
3435
],
3536
templateUrl: './general-information.component.html',
3637
styleUrl: './general-information.component.scss',
@@ -44,6 +45,7 @@ export class GeneralInformationComponent implements OnDestroy {
4445
getContributors: GetAllContributors,
4546
resetContributorsState: ResetContributorsState,
4647
fetchPreprintById: FetchPreprintById,
48+
fetchResourceInstitutions: FetchResourceInstitutions,
4749
});
4850
protected readonly environment = environment;
4951

@@ -53,8 +55,7 @@ export class GeneralInformationComponent implements OnDestroy {
5355
preprint = select(PreprintSelectors.getPreprint);
5456
isPreprintLoading = select(PreprintSelectors.isPreprintLoading);
5557

56-
//[RNi] TODO: Implement when institutions available
57-
affiliatedInstitutions = signal<Institution[]>([]);
58+
affiliatedInstitutions = select(InstitutionsSelectors.getResourceInstitutions);
5859

5960
contributors = select(ContributorsSelectors.getContributors);
6061
areContributorsLoading = select(ContributorsSelectors.isContributorsLoading);
@@ -74,6 +75,7 @@ export class GeneralInformationComponent implements OnDestroy {
7475
if (!preprint) return;
7576

7677
this.actions.getContributors(this.preprint()!.id, ResourceType.Preprint);
78+
this.actions.fetchResourceInstitutions(this.preprint()!.id, ResourceType.Preprint);
7779
});
7880
}
7981

src/app/features/preprints/components/stepper/metadata-step/metadata-step.component.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ <h2>{{ 'preprints.preprintStepper.metadata.publicationDoi.title' | translate }}<
4141
</div>
4242
</p-card>
4343

44+
<div class="m-t-24">
45+
<osf-preprints-affiliated-institutions [preprintId]="createdPreprint()?.id" [provider]="provider()" />
46+
</div>
47+
4448
<div class="m-t-24">
4549
<osf-preprints-subjects [control]="metadataForm.controls['subjects']" [preprintId]="createdPreprint()?.id" />
4650
</div>

src/app/features/preprints/components/stepper/metadata-step/metadata-step.component.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ import { InputText } from 'primeng/inputtext';
99
import { Message } from 'primeng/message';
1010
import { Tooltip } from 'primeng/tooltip';
1111

12-
import { ChangeDetectionStrategy, Component, inject, OnInit, output } from '@angular/core';
12+
import { ChangeDetectionStrategy, Component, inject, input, OnInit, output } from '@angular/core';
1313
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
1414

15-
import { PreprintsSubjectsComponent } from '@osf/features/preprints/components/stepper/metadata-step/preprints-subjects/preprints-subjects.component';
1615
import { formInputLimits } from '@osf/features/preprints/constants';
17-
import { MetadataForm, Preprint } from '@osf/features/preprints/models';
16+
import { MetadataForm, Preprint, PreprintProviderDetails } from '@osf/features/preprints/models';
1817
import {
1918
CreatePreprint,
2019
FetchLicenses,
@@ -29,6 +28,8 @@ import { License, LicenseOptions } from '@shared/models';
2928
import { CustomConfirmationService, ToastService } from '@shared/services';
3029

3130
import { ContributorsComponent } from './contributors/contributors.component';
31+
import { PreprintsAffiliatedInstitutionsComponent } from './preprints-affiliated-institutions/preprints-affiliated-institutions.component';
32+
import { PreprintsSubjectsComponent } from './preprints-subjects/preprints-subjects.component';
3233

3334
@Component({
3435
selector: 'osf-preprint-metadata',
@@ -47,6 +48,7 @@ import { ContributorsComponent } from './contributors/contributors.component';
4748
LicenseComponent,
4849
TagsInputComponent,
4950
PreprintsSubjectsComponent,
51+
PreprintsAffiliatedInstitutionsComponent,
5052
],
5153
templateUrl: './metadata-step.component.html',
5254
styleUrl: './metadata-step.component.scss',
@@ -71,6 +73,7 @@ export class MetadataStepComponent implements OnInit {
7173
createdPreprint = select(PreprintStepperSelectors.getPreprint);
7274
isUpdatingPreprint = select(PreprintStepperSelectors.isPreprintSubmitting);
7375

76+
provider = input.required<PreprintProviderDetails | undefined>();
7477
nextClicked = output<void>();
7578
backClicked = output<void>();
7679

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<p-card>
2+
<div>
3+
<h2>{{ 'preprints.preprintStepper.metadata.affiliatedInstitutionsTitle' | translate }}</h2>
4+
<p class="m-t-12">
5+
{{
6+
'preprints.preprintStepper.metadata.affiliatedInstitutionsDescription'
7+
| translate: { preprintWord: provider()?.preprintWord }
8+
}}
9+
</p>
10+
11+
<div class="m-t-24">
12+
<osf-affiliated-institution-select
13+
[calculateSelectedItemsMode]="true"
14+
(selectInstitutions)="institutionsSelected($event)"
15+
/>
16+
</div>
17+
</div>
18+
</p-card>

src/app/features/preprints/components/stepper/metadata-step/preprints-affiliated-institutions/preprints-affiliated-institutions.component.scss

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { PreprintsAffiliatedInstitutionsComponent } from './preprints-affiliated-institutions.component';
4+
5+
describe.skip('PreprintsAffiliatedInstitutionsComponent', () => {
6+
let component: PreprintsAffiliatedInstitutionsComponent;
7+
let fixture: ComponentFixture<PreprintsAffiliatedInstitutionsComponent>;
8+
9+
beforeEach(async () => {
10+
await TestBed.configureTestingModule({
11+
imports: [PreprintsAffiliatedInstitutionsComponent],
12+
}).compileComponents();
13+
14+
fixture = TestBed.createComponent(PreprintsAffiliatedInstitutionsComponent);
15+
component = fixture.componentInstance;
16+
fixture.detectChanges();
17+
});
18+
19+
it('should create', () => {
20+
expect(component).toBeTruthy();
21+
});
22+
});

0 commit comments

Comments
 (0)