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 { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component';
import { URLCombiner } from '../core/url-combiner/url-combiner'; import { URLCombiner } from '../core/url-combiner/url-combiner';
import { getCollectionModulePath } from '../app-routing.module'; 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'; export const COLLECTION_PARENT_PARAMETER = 'parent';
@@ -26,6 +28,7 @@ export function getCollectionCreatePath() {
const COLLECTION_CREATE_PATH = 'create'; const COLLECTION_CREATE_PATH = 'create';
const COLLECTION_EDIT_PATH = ':id/edit'; const COLLECTION_EDIT_PATH = ':id/edit';
const ITEMTEMPLATE_PATH = ':id/itemtemplate';
@NgModule({ @NgModule({
imports: [ imports: [
@@ -49,6 +52,15 @@ const COLLECTION_EDIT_PATH = ':id/edit';
dso: CollectionPageResolver dso: CollectionPageResolver
} }
}, },
{
path: ITEMTEMPLATE_PATH,
component: EditItemTemplatePageComponent,
canActivate: [AuthenticatedGuard],
resolve: {
collection: CollectionPageResolver,
item: ItemTemplatePageResolver
}
},
{ {
path: ':id', path: ':id',
component: CollectionPageComponent, component: CollectionPageComponent,
@@ -61,7 +73,8 @@ const COLLECTION_EDIT_PATH = ':id/edit';
], ],
providers: [ providers: [
CollectionPageResolver, CollectionPageResolver,
CreateCollectionPageGuard CreateCollectionPageGuard,
ItemTemplatePageResolver
] ]
}) })
export class CollectionPageRoutingModule { 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 { CollectionFormComponent } from './collection-form/collection-form.component';
import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component'; import { DeleteCollectionPageComponent } from './delete-collection-page/delete-collection-page.component';
import { SearchService } from '../+search-page/search-service/search.service'; import { SearchService } from '../+search-page/search-service/search.service';
import { EditItemTemplatePageComponent } from './edit-item-template-page/edit-item-template-page.component';
@NgModule({ @NgModule({
imports: [ imports: [
@@ -20,7 +21,8 @@ import { SearchService } from '../+search-page/search-service/search.service';
CollectionPageComponent, CollectionPageComponent,
CreateCollectionPageComponent, CreateCollectionPageComponent,
DeleteCollectionPageComponent, DeleteCollectionPageComponent,
CollectionFormComponent CollectionFormComponent,
EditItemTemplatePageComponent
], ],
exports: [ exports: [
CollectionFormComponent 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),
);
}
}