Skip to content

Commit 1bdfd26

Browse files
Feat/215 registry overview (#158)
* feat(registry-overview): establish revisions * feat(registry-overvoew): registry revisions, statuses * fix(registry-overview): pr fixes
1 parent a737458 commit 1bdfd26

File tree

53 files changed

+875
-204
lines changed

Some content is hidden

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

53 files changed

+875
-204
lines changed

src/app/features/project/overview/components/fork-dialog/fork-dialog.component.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<p>
2-
{{ 'project.overview.dialog.fork.message' | translate }}
2+
@if (config.data.resource.resourceType === ResourceType.Project) {
3+
{{ 'project.overview.dialog.fork.messageProject' | translate }}
4+
} @else if (config.data.resource.resourceType === ResourceType.Registration) {
5+
{{ 'project.overview.dialog.fork.messageRegistry' | translate }}
6+
}
37
</p>
48

59
<div class="flex mt-6 gap-3 justify-content-between">

src/app/features/project/overview/components/fork-dialog/fork-dialog.component.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ import { TranslatePipe } from '@ngx-translate/core';
55
import { Button } from 'primeng/button';
66
import { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';
77

8+
import { finalize } from 'rxjs';
9+
810
import { ChangeDetectionStrategy, Component, DestroyRef, inject } from '@angular/core';
911
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
1012

1113
import { ForkResource, ProjectOverviewSelectors } from '@osf/features/project/overview/store';
14+
import { ResourceType } from '@shared/enums';
1215
import { ToolbarResource } from '@shared/models';
1316
import { ToastService } from '@shared/services';
1417

@@ -33,12 +36,15 @@ export class ForkDialogComponent {
3336

3437
this.store
3538
.dispatch(new ForkResource(resource.id, resource.resourceType))
36-
.pipe(takeUntilDestroyed(this.destroyRef))
37-
.subscribe({
38-
next: () => {
39+
.pipe(
40+
takeUntilDestroyed(this.destroyRef),
41+
finalize(() => {
3942
this.dialogRef.close();
4043
this.toastService.showSuccess('project.overview.dialog.toast.fork.success');
41-
},
42-
});
44+
})
45+
)
46+
.subscribe();
4347
}
48+
49+
protected readonly ResourceType = ResourceType;
4450
}

src/app/features/project/overview/components/overview-toolbar/overview-toolbar.component.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,21 @@ export class OverviewToolbarComponent {
132132

133133
private handleForkResource(): void {
134134
const resource = this.currentResource();
135+
const headerTranslation =
136+
resource?.resourceType === ResourceType.Project
137+
? 'project.overview.dialog.fork.headerProject'
138+
: resource?.resourceType === ResourceType.Registration
139+
? 'project.overview.dialog.fork.headerRegistry'
140+
: '';
135141
if (resource) {
136142
this.dialogService.open(ForkDialogComponent, {
137143
focusOnShow: false,
138-
header: this.translateService.instant('project.overview.dialog.fork.header'),
144+
header: this.translateService.instant(headerTranslation),
139145
closeOnEscape: true,
140146
modal: true,
141147
closable: true,
142148
data: {
143-
resourceId: resource,
149+
resource: resource,
144150
},
145151
});
146152
}

src/app/features/project/overview/services/project-overview.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class ProjectOverviewService {
5959
forkResource(projectId: string, resourceType: string): Observable<void> {
6060
const payload = {
6161
data: {
62-
type: resourceType,
62+
type: 'nodes',
6363
},
6464
};
6565

src/app/features/project/overview/store/project-overview.actions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class ForkResource {
1919
static readonly type = '[Project Overview] Fork Resource';
2020

2121
constructor(
22-
public projectId: string,
22+
public resourceId: string,
2323
public resourceType: ResourceType
2424
) {}
2525
}

src/app/features/project/overview/store/project-overview.state.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,9 @@ export class ProjectOverviewState {
127127
case ResourceType.Registration:
128128
resourceType = 'registrations';
129129
break;
130-
case ResourceType.Preprint:
131-
resourceType = 'preprints';
132-
break;
133130
}
134131

135-
return this.projectOverviewService.forkResource(action.projectId, resourceType).pipe(
132+
return this.projectOverviewService.forkResource(action.resourceId, resourceType).pipe(
136133
tap(() => {
137134
ctx.patchState({
138135
project: {

src/app/features/registries/pages/registries-landing/registries-landing.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<section class="subheader flex flex-column">
2-
<div class="flex flex-column align-items-start gap-4">
2+
<div class="flex flex-column align-items-start">
33
<osf-sub-header
44
[title]="'registries.title' | translate"
55
[icon]="'registries'"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './registry-revisions/registry-revisions.component';
2+
export * from './registry-statuses/registry-statuses.component';
3+
export * from './withdraw-dialog/withdraw-dialog.component';
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<p-accordion class="accordion-border p-4 py-4 no-padding w-full">
2+
<p-accordion-panel value="0">
3+
<p-accordion-header class="flex flex-row column-gap-3 align-items-center">
4+
{{ 'registry.overview.updates' | translate }}
5+
</p-accordion-header>
6+
<p-accordion-content>
7+
<div class="flex flex-column gap-2 pt-4 align-items-center justify-content-center">
8+
@if (registry() && registry()!.schemaResponses.length > 0) {
9+
<p-button
10+
severity="info"
11+
class="w-full"
12+
[class.current-revision]="true"
13+
styleClass="w-full"
14+
[label]="'registry.overview.original' | translate"
15+
(click)="emitOpenRevision(0)"
16+
/>
17+
@for (revision of registry()!.schemaResponses.slice(1); track $index; let last = $last) {
18+
@if (last) {
19+
<p-button
20+
severity="info"
21+
class="w-full"
22+
[class.current-revision]="selectedRevisionIndex() === $index"
23+
styleClass="w-full"
24+
[label]="'registry.overview.latest' | translate"
25+
(click)="emitOpenRevision($index)"
26+
/>
27+
} @else {
28+
<p-button
29+
severity="info"
30+
class="w-full"
31+
[class.current-revision]="selectedRevisionIndex() === $index"
32+
styleClass="w-full"
33+
[label]="('common.buttons.update' | translate) + ($index + 1)"
34+
(click)="emitOpenRevision($index)"
35+
/>
36+
}
37+
}
38+
39+
<!-- [KP] TODO: add links to update pages-->
40+
@if (registry()?.revisionStatus === RevisionReviewStates.Approved) {
41+
<p-button class="w-full" styleClass="w-full" [label]="'common.buttons.update' | translate" />
42+
}
43+
@if (registry()?.revisionStatus === RevisionReviewStates.RevisionInProgress) {
44+
<p-button class="w-full" styleClass="w-full" [label]="'common.buttons.continueUpdate' | translate" />
45+
}
46+
}
47+
</div>
48+
</p-accordion-content>
49+
</p-accordion-panel>
50+
</p-accordion>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
@use "/assets/styles/variables" as var;
2+
@use "assets/styles/mixins" as mix;
3+
4+
.accordion-border {
5+
border: 1px solid var.$grey-2;
6+
border-radius: mix.rem(12px);
7+
height: max-content !important;
8+
}
9+
10+
.no-padding {
11+
--p-accordion-header-padding: 0;
12+
}
13+
14+
.current-revision {
15+
--p-button-info-background: var(--bg-blue-3);
16+
--p-button-info-hover-background: var(--bg-blue-2);
17+
--p-button-info-hover-border-color: transparent;
18+
}

0 commit comments

Comments
 (0)