65272: EditItemTemplatePageComponent

This commit is contained in:
Kristof De Langhe
2019-10-03 17:50:48 +02:00
parent cddaf539aa
commit 4cc1f55272
5 changed files with 71 additions and 2 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -0,0 +1,2 @@
<!--<ds-item-metadata></ds-item-metadata>-->

View File

@@ -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));
}
}

View File

@@ -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),
);
}
}