Skip to content

Commit eb5afab

Browse files
authored
Merge pull request #179 from CenterForOpenScience/fix/my-reviewing
Fix/my reviewing
2 parents 70fdfd7 + b9435bf commit eb5afab

File tree

46 files changed

+487
-311
lines changed

Some content is hidden

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

46 files changed

+487
-311
lines changed

src/app/core/constants/nav-items.constant.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ export const MENU_ITEMS: MenuItem[] = [
6060
label: 'navigation.preprintsSubRoutes.myPreprints',
6161
routerLinkActiveOptions: { exact: false },
6262
},
63+
{
64+
routerLink: '/preprints/my-reviewing',
65+
label: 'navigation.preprintsSubRoutes.myReviewing',
66+
routerLinkActiveOptions: { exact: true },
67+
},
6368
],
6469
},
6570
{

src/app/features/collections/collections.routes.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import { CollectionsState } from '@osf/features/collections/store/collections';
77
import { ConfirmLeavingGuard } from '@shared/guards';
88
import { ContributorsState, ProjectsState } from '@shared/stores';
99

10-
import { ModeratorsState } from '../moderation/store/moderation';
11-
1210
export const collectionsRoutes: Routes = [
1311
{
1412
path: '',
@@ -45,11 +43,8 @@ export const collectionsRoutes: Routes = [
4543
},
4644
{
4745
path: ':id/moderation',
48-
loadComponent: () =>
49-
import('@osf/features/moderation/pages/collection-moderation/collection-moderation.component').then(
50-
(m) => m.CollectionModerationComponent
51-
),
52-
providers: [provideStates([ModeratorsState])],
46+
loadChildren: () =>
47+
import('@osf/features/moderation/collection-moderation.routes').then((m) => m.collectionModerationRoutes),
5348
},
5449
],
5550
},
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { provideStates } from '@ngxs/store';
2+
3+
import { Routes } from '@angular/router';
4+
5+
import { ResourceType } from '@osf/shared/enums';
6+
7+
import { ModeratorsState } from './store/moderation';
8+
import { CollectionModerationTab } from './enums';
9+
10+
export const collectionModerationRoutes: Routes = [
11+
{
12+
path: '',
13+
loadComponent: () =>
14+
import('@osf/features/moderation/pages/collection-moderation/collection-moderation.component').then(
15+
(m) => m.CollectionModerationComponent
16+
),
17+
children: [
18+
{
19+
path: '',
20+
pathMatch: 'full',
21+
redirectTo: 'all-items',
22+
},
23+
{
24+
path: 'all-items',
25+
loadComponent: () =>
26+
import('./components/collection-moderation-submissions/collection-moderation-submissions.component').then(
27+
(m) => m.CollectionModerationSubmissionsComponent
28+
),
29+
data: { tab: CollectionModerationTab.AllItems },
30+
},
31+
{
32+
path: 'moderators',
33+
loadComponent: () =>
34+
import('./components/moderators-list/moderators-list.component').then((m) => m.ModeratorsListComponent),
35+
data: { resourceType: ResourceType.Collection, tab: CollectionModerationTab.Moderators },
36+
providers: [provideStates([ModeratorsState])],
37+
},
38+
{
39+
path: 'settings',
40+
loadComponent: () =>
41+
import('./components/notification-settings/notification-settings.component').then(
42+
(m) => m.NotificationSettingsComponent
43+
),
44+
data: { tab: CollectionModerationTab.Settings },
45+
},
46+
],
47+
},
48+
];

src/app/features/moderation/components/moderators-list/moderators-list.component.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { DialogService } from 'primeng/dynamicdialog';
77

88
import { debounceTime, distinctUntilChanged, filter, forkJoin, map, of, skip } from 'rxjs';
99

10-
import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, OnInit, signal } from '@angular/core';
10+
import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, OnInit, Signal, signal } from '@angular/core';
1111
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
1212
import { FormControl } from '@angular/forms';
1313
import { ActivatedRoute } from '@angular/router';
@@ -39,8 +39,6 @@ import { ModeratorsTableComponent } from '../moderators-table/moderators-table.c
3939
providers: [DialogService],
4040
})
4141
export class ModeratorsListComponent implements OnInit {
42-
resourceType = input.required<ResourceType>();
43-
4442
protected searchControl = new FormControl<string>('');
4543

4644
private readonly route = inject(ActivatedRoute);
@@ -50,7 +48,10 @@ export class ModeratorsListComponent implements OnInit {
5048
private readonly dialogService = inject(DialogService);
5149
private readonly toastService = inject(ToastService);
5250

53-
providerId = toSignal(this.route.params.pipe(map((params) => params['id'])) ?? of(undefined));
51+
readonly providerId = toSignal(this.route.parent?.params.pipe(map((params) => params['id'])) ?? of(undefined));
52+
readonly resourceType: Signal<ResourceType | undefined> = toSignal(
53+
this.route.data.pipe(map((params) => params['resourceType'])) ?? of(undefined)
54+
);
5455

5556
moderators = signal([]);
5657
initialModerators = select(ModeratorsSelectors.getModerators);

src/app/features/moderation/components/my-reviewing-navigation/my-reviewing-navigation.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ <h4>{{ provider().name }}</h4>
22

33
<div class="flex flex-column gap-2 mt-2">
44
@for (tab of tabOptions; track $index) {
5-
@let badge = tab.value === tabOption.Submissions ? submissionsCount : undefined;
5+
@let badge = tab.value === tabOption.Submissions ? `${provider().submissionCount}` : undefined;
66

77
<p-button
88
class="link-btn"
99
[link]="true"
1010
[label]="tab.label | translate"
1111
[badge]="badge"
12-
[routerLink]="['/preprints', provider().id, 'moderation']"
12+
[routerLink]="['/preprints', provider().id, 'moderation', tab.value]"
1313
></p-button>
1414
}
1515
</div>

src/app/features/moderation/components/my-reviewing-navigation/my-reviewing-navigation.component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { PreprintModerationTab } from '../../enums';
1919
})
2020
export class MyReviewingNavigationComponent {
2121
provider = input.required<PreprintProviderShortInfo>();
22-
submissionsCount = '2';
2322

2423
readonly tabOptions = PREPRINT_REVIEWING_TABS;
2524
readonly tabOption = PreprintModerationTab;

src/app/features/moderation/components/recent-activity-list/recent-activity-list.component.html

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,27 @@
66
<p-skeleton height="2.5rem"></p-skeleton>
77
</div>
88
} @else {
9-
@for (item of reviews(); track $index) {
10-
<div class="recent-activity-item flex justify-content-between py-2">
11-
<div class="flex align-items-center">
12-
<osf-icon
13-
[class]="reviewStatusIcon[item.toState].value"
14-
[iconClass]="reviewStatusIcon[item.toState].icon"
15-
></osf-icon>
16-
<span class="ml-2">{{ item.fromState }}</span>
17-
<span class="capitalize">{{ 'moderation.submissionReview.submitted' | translate }}</span>
18-
<span>{{ 'moderation.submissionReview.by' | translate }}</span>
19-
<span>{{ item.trigger }}</span>
20-
</div>
9+
<div class="overflow-auto">
10+
@for (item of reviews(); track $index) {
11+
<div class="recent-activity-item flex align-items-center justify-content-between py-2 white-space-nowrap">
12+
<div class="flex align-items-center gap-1">
13+
<osf-icon
14+
[class]="reviewStatusIcon[item.toState].value"
15+
[iconClass]="reviewStatusIcon[item.toState].icon"
16+
></osf-icon>
17+
<span class="ml-2">{{ item.creator.name }}</span>
18+
<span>{{ preprintReviewStatus[item.toState].label | translate: { name: item.preprint.name } }}</span>
19+
<span>{{ item.provider.name }}</span>
20+
</div>
2121

22-
<p class="flex flex-wrap gap-1 mt-2">
23-
{{ item.dateModified | date: 'MMM d, y h:mm a' }}
24-
</p>
25-
</div>
26-
}
22+
<p class="flex flex-wrap gap-1 ml-3">
23+
{{ item.dateModified | date: 'MMM d, y h:mm a' }}
24+
</p>
25+
</div>
26+
}
27+
</div>
2728

28-
@if (totalCount()) {
29+
@if (totalCount() > 10) {
2930
<osf-custom-paginator
3031
class="block mt-4"
3132
[first]="first()"

src/app/features/moderation/components/recent-activity-list/recent-activity-list.component.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,24 @@
99

1010
.pending {
1111
color: var(--yellow-1);
12+
width: 16px;
13+
height: 16px;
1214
}
1315

1416
.accepted {
1517
color: var(--green-1);
18+
width: 16px;
19+
height: 16px;
1620
}
1721

1822
.rejected {
1923
color: var(--red-1);
24+
width: 16px;
25+
height: 16px;
2026
}
2127

2228
.withdrawn {
2329
color: var(--dark-blue-1);
30+
width: 16px;
31+
height: 16px;
2432
}

src/app/features/moderation/components/recent-activity-list/recent-activity-list.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { TableModule } from 'primeng/table';
77
import { DatePipe } from '@angular/common';
88
import { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';
99

10-
import { ReviewStatusIcon } from '@osf/features/moderation/constants';
10+
import { PreprintReviewStatus, ReviewStatusIcon } from '@osf/features/moderation/constants';
1111
import { CustomPaginatorComponent, IconComponent } from '@osf/shared/components';
1212

1313
import { PreprintReviewActionModel } from '../../models';
@@ -28,6 +28,7 @@ export class RecentActivityListComponent {
2828

2929
protected first = signal(0);
3030
readonly reviewStatusIcon = ReviewStatusIcon;
31+
readonly preprintReviewStatus = PreprintReviewStatus;
3132

3233
onPageChange(event: PaginatorState) {
3334
this.pageChanged.emit(event.page ?? 1);

src/app/features/moderation/constants/collection-moderation-tabs.const.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { SelectOption, TabOption } from '@osf/shared/models';
1+
import { CustomOption, SelectOption } from '@osf/shared/models';
22

33
import { CollectionModerationTab, ModeratorPermission } from '../enums';
44

5-
export const COLLECTION_MODERATION_TABS: TabOption[] = [
5+
export const COLLECTION_MODERATION_TABS: CustomOption<string>[] = [
66
{ label: 'moderation.allItems', value: CollectionModerationTab.AllItems },
77
{ label: 'moderation.moderators', value: CollectionModerationTab.Moderators },
88
{ label: 'moderation.settings', value: CollectionModerationTab.Settings },

0 commit comments

Comments
 (0)