@@ -12,13 +12,11 @@ import {
1212 OnInit ,
1313} from '@angular/core' ;
1414import { FormsModule } from '@angular/forms' ;
15- import { RouterLink } from '@angular/router' ;
1615import {
1716 TranslateModule ,
1817 TranslateService ,
1918} from '@ngx-translate/core' ;
2019import {
21- BehaviorSubject ,
2220 combineLatest ,
2321 Observable ,
2422 Subscription ,
@@ -41,7 +39,6 @@ import { PaginationService } from '../../core/pagination/pagination.service';
4139import { Item } from '../../core/shared/item.model' ;
4240import {
4341 getAllSucceededRemoteData ,
44- getAllSucceededRemoteDataPayload ,
4542 getFirstCompletedRemoteData ,
4643 getFirstSucceededRemoteData ,
4744 getFirstSucceededRemoteDataPayload ,
@@ -60,16 +57,35 @@ import { PaginationComponent } from '../../shared/pagination/pagination.componen
6057import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model' ;
6158import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model' ;
6259import { followLink } from '../../shared/utils/follow-link-config.model' ;
63- import { VarDirective } from '../../shared/utils/var.directive' ;
64- import { getItemPageRoute } from '../item-page-routing-paths' ;
6560import { ItemVersionsRowElementVersionComponent } from './item-versions-row-element-version/item-versions-row-element-version.component' ;
6661
62+ interface VersionsDTO {
63+ totalElements : number ;
64+ versionDTOs : VersionDTO [ ] ;
65+ }
66+
67+ interface VersionDTO {
68+ version : Version ;
69+ canEditVersion : Observable < boolean > ;
70+ }
71+
6772@Component ( {
6873 selector : 'ds-item-versions' ,
6974 templateUrl : './item-versions.component.html' ,
7075 styleUrls : [ './item-versions.component.scss' ] ,
7176 standalone : true ,
72- imports : [ VarDirective , NgIf , AlertComponent , PaginationComponent , NgFor , RouterLink , NgClass , FormsModule , AsyncPipe , DatePipe , TranslateModule , ItemVersionsRowElementVersionComponent ] ,
77+ imports : [
78+ AlertComponent ,
79+ AsyncPipe ,
80+ DatePipe ,
81+ FormsModule ,
82+ ItemVersionsRowElementVersionComponent ,
83+ NgClass ,
84+ NgFor ,
85+ NgIf ,
86+ PaginationComponent ,
87+ TranslateModule ,
88+ ] ,
7389} )
7490
7591/**
@@ -128,13 +144,7 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
128144 /**
129145 * The version history's list of versions
130146 */
131- versionsRD$ : BehaviorSubject < RemoteData < PaginatedList < Version > > > = new BehaviorSubject < RemoteData < PaginatedList < Version > > > ( null ) ;
132-
133- /**
134- * Verify if the list of versions has at least one e-person to display
135- * Used to hide the "Editor" column when no e-persons are present to display
136- */
137- hasEpersons$ : Observable < boolean > ;
147+ versionsDTO$ : Observable < VersionsDTO > ;
138148
139149 /**
140150 * Verify if there is an inprogress submission in the version history
@@ -162,15 +172,6 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
162172 pageSize : this . pageSize ,
163173 } ) ;
164174
165- /**
166- * The routes to the versions their item pages
167- * Key: Item ID
168- * Value: Route to item page
169- */
170- itemPageRoutes$ : Observable < {
171- [ itemId : string ] : string
172- } > ;
173-
174175 /**
175176 * The number of the version whose summary is currently being edited
176177 */
@@ -186,9 +187,6 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
186187 */
187188 versionBeingEditedSummary : string ;
188189
189- canCreateVersion$ : Observable < boolean > ;
190- createVersionTitle$ : Observable < string > ;
191-
192190 constructor ( private versionHistoryService : VersionHistoryDataService ,
193191 private versionService : VersionDataService ,
194192 private paginationService : PaginationService ,
@@ -257,8 +255,7 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
257255 this . notificationsService . warning ( null , this . translateService . get ( failureMessageKey , { 'version' : this . versionBeingEditedNumber } ) ) ;
258256 }
259257 this . disableVersionEditing ( ) ;
260- } ,
261- ) ;
258+ } ) ;
262259 }
263260
264261 /**
@@ -305,16 +302,22 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
305302 */
306303 getAllVersions ( versionHistory$ : Observable < VersionHistory > ) : void {
307304 const currentPagination = this . paginationService . getCurrentPagination ( this . options . id , this . options ) ;
308- combineLatest ( [ versionHistory$ , currentPagination ] ) . pipe (
305+ this . versionsDTO$ = combineLatest ( [ versionHistory$ , currentPagination ] ) . pipe (
309306 switchMap ( ( [ versionHistory , options ] : [ VersionHistory , PaginationComponentOptions ] ) => {
310307 return this . versionHistoryService . getVersions ( versionHistory . id ,
311308 new PaginatedSearchOptions ( { pagination : Object . assign ( { } , options , { currentPage : options . currentPage } ) } ) ,
312309 false , true , followLink ( 'item' ) , followLink ( 'eperson' ) ) ;
313310 } ) ,
314311 getFirstCompletedRemoteData ( ) ,
315- ) . subscribe ( ( res : RemoteData < PaginatedList < Version > > ) => {
316- this . versionsRD$ . next ( res ) ;
317- } ) ;
312+ getRemoteDataPayload ( ) ,
313+ map ( ( versions : PaginatedList < Version > ) => ( {
314+ totalElements : versions . totalElements ,
315+ versionDTOs : ( versions ?. page ?? [ ] ) . map ( ( version : Version ) => ( {
316+ version : version ,
317+ canEditVersion : this . canEditVersion$ ( version ) ,
318+ } ) ) ,
319+ } ) ) ,
320+ ) ;
318321 }
319322
320323 /**
@@ -348,22 +351,6 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
348351 ) ;
349352
350353 this . getAllVersions ( this . versionHistory$ ) ;
351- this . hasEpersons$ = this . versionsRD$ . pipe (
352- getAllSucceededRemoteData ( ) ,
353- getRemoteDataPayload ( ) ,
354- hasValueOperator ( ) ,
355- map ( ( versions : PaginatedList < Version > ) => versions . page . filter ( ( version : Version ) => version . eperson !== undefined ) . length > 0 ) ,
356- startWith ( false ) ,
357- ) ;
358- this . itemPageRoutes$ = this . versionsRD$ . pipe (
359- getAllSucceededRemoteDataPayload ( ) ,
360- switchMap ( ( versions ) => combineLatest ( versions . page . map ( ( version ) => version . item . pipe ( getAllSucceededRemoteDataPayload ( ) ) ) ) ) ,
361- map ( ( versions ) => {
362- const itemPageRoutes = { } ;
363- versions . forEach ( ( item ) => itemPageRoutes [ item . uuid ] = getItemPageRoute ( item ) ) ;
364- return itemPageRoutes ;
365- } ) ,
366- ) ;
367354 }
368355 }
369356
@@ -380,3 +367,4 @@ export class ItemVersionsComponent implements OnDestroy, OnInit {
380367 }
381368
382369}
370+
0 commit comments