113938: Added missing comcol structure to workspace/workflow item breadcrumbs

This commit is contained in:
Alexandre Vryghem
2024-04-04 12:04:20 +02:00
parent 692bb991a0
commit 60d93e653f
14 changed files with 222 additions and 25 deletions

View File

@@ -4,7 +4,7 @@ import { Router } from '@angular/router';
import { Observable, of as observableOf, Subscription, timer as observableTimer } from 'rxjs';
import { catchError, concatMap, distinctUntilChanged, filter, find, map, startWith, take, tap } from 'rxjs/operators';
import { Store } from '@ngrx/store';
import { Store, MemoizedSelector, createSelector, select } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core';
import { submissionSelector, SubmissionState } from './submission.reducers';
@@ -47,6 +47,20 @@ import { SubmissionJsonPatchOperationsService } from '../core/submission/submiss
import { SubmissionSectionObject } from './objects/submission-section-object.model';
import { SubmissionError } from './objects/submission-error.model';
function getSubmissionSelector(submissionId: string): MemoizedSelector<SubmissionState, SubmissionObjectEntry> {
return createSelector(
submissionSelector,
(state: SubmissionState) => state.objects[submissionId],
);
}
function getSubmissionCollectionIdSelector(submissionId: string): MemoizedSelector<SubmissionState, string> {
return createSelector(
getSubmissionSelector(submissionId),
(submission: SubmissionObjectEntry) => submission?.collection,
);
}
/**
* A service that provides methods used in submission process.
*/
@@ -96,10 +110,19 @@ export class SubmissionService {
* @param collectionId
* The collection id
*/
changeSubmissionCollection(submissionId, collectionId) {
changeSubmissionCollection(submissionId: string, collectionId: string): void {
this.store.dispatch(new ChangeSubmissionCollectionAction(submissionId, collectionId));
}
/**
* Listen to collection changes for a certain {@link SubmissionObject}
*
* @param submissionId The submission id
*/
getSubmissionCollectionId(submissionId: string): Observable<string> {
return this.store.pipe(select(getSubmissionCollectionIdSelector(submissionId)));
}
/**
* Perform a REST call to create a new workspaceitem and return response
*