mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
65272: EditItemTemplatePageComponent
This commit is contained in:
@@ -9,6 +9,8 @@ import { CreateCollectionPageGuard } from './create-collection-page/create-colle
|
||||
import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component';
|
||||
import { URLCombiner } from '../core/url-combiner/url-combiner';
|
||||
import { getCollectionModulePath } from '../app-routing.module';
|
||||
import { EditItemTemplatePageComponent } from './edit-item-template-page/edit-item-template-page.component';
|
||||
import { ItemTemplatePageResolver } from './edit-item-template-page/item-template-page.resolver';
|
||||
|
||||
export const COLLECTION_PARENT_PARAMETER = 'parent';
|
||||
|
||||
@@ -26,6 +28,7 @@ export function getCollectionCreatePath() {
|
||||
|
||||
const COLLECTION_CREATE_PATH = 'create';
|
||||
const COLLECTION_EDIT_PATH = ':id/edit';
|
||||
const ITEMTEMPLATE_PATH = ':id/itemtemplate';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -49,6 +52,15 @@ const COLLECTION_EDIT_PATH = ':id/edit';
|
||||
dso: CollectionPageResolver
|
||||
}
|
||||
},
|
||||
{
|
||||
path: ITEMTEMPLATE_PATH,
|
||||
component: EditItemTemplatePageComponent,
|
||||
canActivate: [AuthenticatedGuard],
|
||||
resolve: {
|
||||
collection: CollectionPageResolver,
|
||||
item: ItemTemplatePageResolver
|
||||
}
|
||||
},
|
||||
{
|
||||
path: ':id',
|
||||
component: CollectionPageComponent,
|
||||
@@ -61,7 +73,8 @@ const COLLECTION_EDIT_PATH = ':id/edit';
|
||||
],
|
||||
providers: [
|
||||
CollectionPageResolver,
|
||||
CreateCollectionPageGuard
|
||||
CreateCollectionPageGuard,
|
||||
ItemTemplatePageResolver
|
||||
]
|
||||
})
|
||||
export class CollectionPageRoutingModule {
|
||||
|
@@ -9,6 +9,7 @@ import { CreateCollectionPageComponent } from './create-collection-page/create-c
|
||||
import { CollectionFormComponent } from './collection-form/collection-form.component';
|
||||
import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component';
|
||||
import { SearchService } from '../+search-page/search-service/search.service';
|
||||
import { EditItemTemplatePageComponent } from './edit-item-template-page/edit-item-template-page.component';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -20,7 +21,8 @@ import { SearchService } from '../+search-page/search-service/search.service';
|
||||
CollectionPageComponent,
|
||||
CreateCollectionPageComponent,
|
||||
DeleteCollectionPageComponent,
|
||||
CollectionFormComponent
|
||||
CollectionFormComponent,
|
||||
EditItemTemplatePageComponent
|
||||
],
|
||||
exports: [
|
||||
CollectionFormComponent
|
||||
|
@@ -0,0 +1,2 @@
|
||||
|
||||
<!--<ds-item-metadata></ds-item-metadata>-->
|
@@ -0,0 +1,25 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Observable } from 'rxjs/internal/Observable';
|
||||
import { RemoteData } from '../../core/data/remote-data';
|
||||
import { Collection } from '../../core/shared/collection.model';
|
||||
import { Item } from '../../core/shared/item.model';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { first, map } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'ds-edit-item-template-page',
|
||||
templateUrl: './edit-item-template-page.component.html',
|
||||
})
|
||||
export class EditItemTemplatePageComponent implements OnInit {
|
||||
collectionRD$: Observable<RemoteData<Collection>>;
|
||||
itemRD$: Observable<RemoteData<Item>>;
|
||||
|
||||
constructor(protected route: ActivatedRoute) {
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.collectionRD$ = this.route.parent.data.pipe(first(), map((data) => data.collection));
|
||||
this.itemRD$ = this.route.parent.data.pipe(first(), map((data) => data.item));
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,27 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
|
||||
import { RemoteData } from '../../core/data/remote-data';
|
||||
import { Item } from '../../core/shared/item.model';
|
||||
import { ItemTemplateDataService } from '../../core/data/item-template-data.service';
|
||||
import { Observable } from 'rxjs/internal/Observable';
|
||||
import { find } from 'rxjs/operators';
|
||||
import { hasValue } from '../../shared/empty.util';
|
||||
|
||||
@Injectable()
|
||||
export class ItemTemplatePageResolver implements Resolve<RemoteData<Item>> {
|
||||
constructor(private itemTemplateService: ItemTemplateDataService) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for resolving a collection's template item based on the parameters in the current route
|
||||
* @param {ActivatedRouteSnapshot} route The current ActivatedRouteSnapshot
|
||||
* @param {RouterStateSnapshot} state The current RouterStateSnapshot
|
||||
* @returns Observable<<RemoteData<Collection>> Emits the found template item based on the parameters in the current route,
|
||||
* or an error if something went wrong
|
||||
*/
|
||||
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<Item>> {
|
||||
return this.itemTemplateService.findByCollectionID(route.params.id).pipe(
|
||||
find((RD) => hasValue(RD.error) || RD.hasSucceeded),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user