mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-17 15:03:07 +00:00
fixed submission collection list
This commit is contained in:
@@ -17,16 +17,13 @@ import {
|
||||
distinctUntilChanged,
|
||||
filter,
|
||||
find,
|
||||
flatMap,
|
||||
map,
|
||||
mergeMap,
|
||||
reduce,
|
||||
startWith
|
||||
} from 'rxjs/operators';
|
||||
|
||||
import { Collection } from '../../../core/shared/collection.model';
|
||||
import { CommunityDataService } from '../../../core/data/community-data.service';
|
||||
import { Community } from '../../../core/shared/community.model';
|
||||
import { hasValue, isEmpty, isNotEmpty } from '../../../shared/empty.util';
|
||||
import { RemoteData } from '../../../core/data/remote-data';
|
||||
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
|
||||
@@ -35,6 +32,12 @@ import { PaginatedList } from '../../../core/data/paginated-list';
|
||||
import { SubmissionService } from '../../submission.service';
|
||||
import { SubmissionObject } from '../../../core/submission/models/submission-object.model';
|
||||
import { SubmissionJsonPatchOperationsService } from '../../../core/submission/submission-json-patch-operations.service';
|
||||
import { SearchService } from '../../../+search-page/search-service/search.service';
|
||||
import { PaginatedSearchOptions } from '../../../+search-page/paginated-search-options.model';
|
||||
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||
import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model';
|
||||
import { getSucceededRemoteData } from '../../../core/shared/operators';
|
||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
||||
|
||||
/**
|
||||
* An interface to represent a collection entry
|
||||
@@ -148,12 +151,14 @@ export class SubmissionFormCollectionComponent implements OnChanges, OnInit {
|
||||
* @param {JsonPatchOperationsBuilder} operationsBuilder
|
||||
* @param {SubmissionJsonPatchOperationsService} operationsService
|
||||
* @param {SubmissionService} submissionService
|
||||
* @param {SearchService} searchService
|
||||
*/
|
||||
constructor(protected cdr: ChangeDetectorRef,
|
||||
private communityDataService: CommunityDataService,
|
||||
private operationsBuilder: JsonPatchOperationsBuilder,
|
||||
private operationsService: SubmissionJsonPatchOperationsService,
|
||||
private submissionService: SubmissionService) {
|
||||
private submissionService: SubmissionService,
|
||||
private searchService: SearchService) {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,38 +195,40 @@ export class SubmissionFormCollectionComponent implements OnChanges, OnInit {
|
||||
&& hasValue(changes.currentCollectionId.currentValue)) {
|
||||
this.selectedCollectionId = this.currentCollectionId;
|
||||
|
||||
// @TODO replace with search/top browse endpoint
|
||||
// @TODO implement community/subcommunity hierarchy
|
||||
const communities$ = this.communityDataService.findAll().pipe(
|
||||
find((communities: RemoteData<PaginatedList<Community>>) => isNotEmpty(communities.payload)),
|
||||
mergeMap((communities: RemoteData<PaginatedList<Community>>) => communities.payload.page));
|
||||
// // @TODO replace with search/top browse endpoint
|
||||
// // @TODO implement community/subcommunity hierarchy
|
||||
// const communities$ = this.communityDataService.findAll().pipe(
|
||||
// find((communities: RemoteData<PaginatedList<Community>>) => isNotEmpty(communities.payload)),
|
||||
// mergeMap((communities: RemoteData<PaginatedList<Community>>) => communities.payload.page));
|
||||
|
||||
const listCollection$ = communities$.pipe(
|
||||
flatMap((communityData: Community) => {
|
||||
return communityData.collections.pipe(
|
||||
find((collections: RemoteData<PaginatedList<Collection>>) => !collections.isResponsePending && collections.hasSucceeded),
|
||||
mergeMap((collections: RemoteData<PaginatedList<Collection>>) => collections.payload.page),
|
||||
filter((collectionData: Collection) => isNotEmpty(collectionData)),
|
||||
map((collectionData: Collection) => ({
|
||||
communities: [{ id: communityData.id, name: communityData.name }],
|
||||
collection: { id: collectionData.id, name: collectionData.name }
|
||||
}))
|
||||
);
|
||||
}),
|
||||
reduce((acc: any, value: any) => [...acc, ...value], []),
|
||||
startWith([])
|
||||
const listCollection$: Observable<CollectionListEntry[]> = this.searchService.search(
|
||||
new PaginatedSearchOptions({
|
||||
dsoType: DSpaceObjectType.COLLECTION,
|
||||
pagination: new PaginationComponentOptions(),
|
||||
scope: 'c0e4de93-f506-4990-a840-d406f6f2ada7'
|
||||
})
|
||||
).pipe(
|
||||
getSucceededRemoteData(),
|
||||
map((collections: RemoteData<PaginatedList<SearchResult<Collection>>>) => collections.payload.page),
|
||||
filter((collectionData: SearchResult<Collection>[]) => isNotEmpty(collectionData)),
|
||||
map((collectionData: SearchResult<Collection>[]) => {
|
||||
return collectionData.map((collection: SearchResult<Collection>) => {
|
||||
return {
|
||||
communities: [{
|
||||
id: 'c0e4de93-f506-4990-a840-d406f6f2ada7',
|
||||
name: 'Submission test'
|
||||
}],
|
||||
collection: { id: collection.indexableObject.id, name: collection.indexableObject.name }
|
||||
}
|
||||
})
|
||||
})
|
||||
);
|
||||
|
||||
this.selectedCollectionName$ = communities$.pipe(
|
||||
flatMap((communityData: Community) => {
|
||||
return communityData.collections.pipe(
|
||||
find((collections: RemoteData<PaginatedList<Collection>>) => !collections.isResponsePending && collections.hasSucceeded),
|
||||
mergeMap((collections: RemoteData<PaginatedList<Collection>>) => collections.payload.page),
|
||||
filter((collectionData: Collection) => isNotEmpty(collectionData)),
|
||||
filter((collectionData: Collection) => collectionData.id === this.selectedCollectionId),
|
||||
map((collectionData: Collection) => collectionData.name)
|
||||
);
|
||||
}),
|
||||
|
||||
this.selectedCollectionName$ = listCollection$.pipe(
|
||||
map((collectionData: CollectionListEntry[]) => collectionData.find((entry: CollectionListEntry) => entry.collection.id === this.selectedCollectionId)),
|
||||
filter((entry: CollectionListEntry) => hasValue(entry.collection)),
|
||||
map((entry: CollectionListEntry) => entry.collection.name),
|
||||
startWith('')
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user