From e0ed960d4c814fec1413f40648bfdc3b3d1052ee Mon Sep 17 00:00:00 2001 From: lotte Date: Wed, 2 Jan 2019 07:44:38 +0100 Subject: [PATCH] refactoring continued --- .../create-collection-page.component.ts | 61 +++++-------------- .../create-community-page.component.ts | 4 +- .../create-comcol-page.component.ts | 17 +++--- .../edit-comcol-page.component.ts | 45 ++++++++++++++ 4 files changed, 73 insertions(+), 54 deletions(-) create mode 100644 src/app/comcol-forms/edit-comcol-page/edit-comcol-page.component.ts diff --git a/src/app/+collection-page/create-collection-page/create-collection-page.component.ts b/src/app/+collection-page/create-collection-page/create-collection-page.component.ts index 6ece21c388..8dbc9183e5 100644 --- a/src/app/+collection-page/create-collection-page/create-collection-page.component.ts +++ b/src/app/+collection-page/create-collection-page/create-collection-page.component.ts @@ -1,55 +1,26 @@ -import { Component, OnInit } from '@angular/core'; -import {Collection} from '../../core/shared/collection.model'; -import {CollectionDataService} from '../../core/data/collection-data.service'; -import { Observable } from 'rxjs'; +import { Component } from '@angular/core'; +import { CommunityDataService } from '../../core/data/community-data.service'; import { RouteService } from '../../shared/services/route.service'; import { Router } from '@angular/router'; -import { RemoteData } from '../../core/data/remote-data'; -import { isNotEmpty, isNotUndefined } from '../../shared/empty.util'; -import { take } from 'rxjs/operators'; -import { getSucceededRemoteData } from '../../core/shared/operators'; -import {Community} from '../../core/shared/community.model'; -import {CommunityDataService} from '../../core/data/community-data.service'; +import { CreateComColPageComponent } from '../../comcol-forms/create-comcol-page/create-comcol-page.component'; +import { NormalizedCollection } from '../../core/cache/models/normalized-collection.model'; +import { Collection } from '../../core/shared/collection.model'; +import { CollectionDataService } from '../../core/data/collection-data.service'; @Component({ - selector: 'ds-create-collection', - styleUrls: ['./create-collection-page.component.scss'], - templateUrl: './create-collection-page.component.html' + selector: 'ds-create-community', + styleUrls: ['./create-community-page.component.scss'], + templateUrl: './create-community-page.component.html' }) -export class CreateCommunityPageComponent implements OnInit { - - public parentUUID$: Observable; - public parentRD$: Observable>; +export class CreateCommunityPageComponent extends CreateComColPageComponent { + protected frontendURL = 'collections'; public constructor( - private communityDataService: CommunityDataService, - private collectionDataService: CollectionDataService, - private routeService: RouteService, - private router: Router + protected communityDataService: CommunityDataService, + protected collectionDataService: CollectionDataService, + protected routeService: RouteService, + protected router: Router ) { - + super(collectionDataService, communityDataService, routeService, router); } - - ngOnInit(): void { - this.parentUUID$ = this.routeService.getQueryParameterValue('parent'); - this.parentUUID$.subscribe((parentID: string) => { - if (isNotEmpty(parentID)) { - this.parentRD$ = this.communityDataService.findById(parentID); - } - }); - } - - onSubmit(collection: Collection) { - this.parentUUID$.pipe(take(1)).subscribe((uuid: string) => { - this.collectionDataService.create(collection, uuid) - .pipe(getSucceededRemoteData()) - .subscribe((collectionRD: RemoteData) => { - if (isNotUndefined(collectionRD)) { - const newUUID = collectionRD.payload.uuid; - this.router.navigate(['/collections/' + newUUID]); - } - }); - }); - } - } diff --git a/src/app/+community-page/create-community-page/create-community-page.component.ts b/src/app/+community-page/create-community-page/create-community-page.component.ts index 98156f5a8a..5a3cf1f4a8 100644 --- a/src/app/+community-page/create-community-page/create-community-page.component.ts +++ b/src/app/+community-page/create-community-page/create-community-page.component.ts @@ -4,13 +4,15 @@ import { CommunityDataService } from '../../core/data/community-data.service'; import { RouteService } from '../../shared/services/route.service'; import { Router } from '@angular/router'; import { CreateComColPageComponent } from '../../comcol-forms/create-comcol-page/create-comcol-page.component'; +import { NormalizedCommunity } from '../../core/cache/models/normalized-community.model'; @Component({ selector: 'ds-create-community', styleUrls: ['./create-community-page.component.scss'], templateUrl: './create-community-page.component.html' }) -export class CreateCommunityPageComponent extends CreateComColPageComponent { +export class CreateCommunityPageComponent extends CreateComColPageComponent { + protected frontendURL = 'communities'; public constructor( protected communityDataService: CommunityDataService, protected routeService: RouteService, diff --git a/src/app/comcol-forms/create-comcol-page/create-comcol-page.component.ts b/src/app/comcol-forms/create-comcol-page/create-comcol-page.component.ts index e36f45ad18..18f23cf528 100644 --- a/src/app/comcol-forms/create-comcol-page/create-comcol-page.component.ts +++ b/src/app/comcol-forms/create-comcol-page/create-comcol-page.component.ts @@ -10,20 +10,21 @@ import { take } from 'rxjs/operators'; import { getSucceededRemoteData } from '../../core/shared/operators'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; import { DataService } from '../../core/data/data.service'; +import { NormalizedDSpaceObject } from '../../core/cache/models/normalized-dspace-object.model'; @Component({ selector: 'ds-create-community', styleUrls: ['./create-community-page.component.scss'], templateUrl: './create-community-page.component.html' }) -export class CreateComColPageComponent implements OnInit { +export class CreateComColPageComponent implements OnInit { protected frontendURL: string; public parentUUID$: Observable; - public parentRD$: Observable>; + public parentRD$: Observable>; public constructor( - protected dsoDataService: DataService, - protected parentoDataService: CommunityDataService, + protected dsoDataService: DataService, + protected parentDataService: CommunityDataService, protected routeService: RouteService, protected router: Router ) { @@ -34,19 +35,19 @@ export class CreateComColPageComponent implements OnInit this.parentUUID$ = this.routeService.getQueryParameterValue('parent'); this.parentUUID$.subscribe((parentID: string) => { if (isNotEmpty(parentID)) { - this.parentRD$ = this.parentoDataService.findById(parentID); + this.parentRD$ = this.parentDataService.findById(parentID); } }); } - onSubmit(dso: T) { + onSubmit(dso: TDomain) { this.parentUUID$.pipe(take(1)).subscribe((uuid: string) => { this.dsoDataService.create(dso, uuid) .pipe(getSucceededRemoteData()) - .subscribe((dsoRD: RemoteData) => { + .subscribe((dsoRD: RemoteData) => { if (isNotUndefined(dsoRD)) { const newUUID = dsoRD.payload.uuid; - this.router.navigate([frontendURL + newUUID]); + this.router.navigate([this.frontendURL + newUUID]); } }); }); diff --git a/src/app/comcol-forms/edit-comcol-page/edit-comcol-page.component.ts b/src/app/comcol-forms/edit-comcol-page/edit-comcol-page.component.ts new file mode 100644 index 0000000000..5e11a71c2e --- /dev/null +++ b/src/app/comcol-forms/edit-comcol-page/edit-comcol-page.component.ts @@ -0,0 +1,45 @@ +import {Component, OnInit} from '@angular/core'; +import { Community } from '../../core/shared/community.model'; +import { Observable } from 'rxjs'; +import { RouteService } from '../../shared/services/route.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { RemoteData } from '../../core/data/remote-data'; +import { isNotUndefined } from '../../shared/empty.util'; +import { first, map } from 'rxjs/operators'; +import { getSucceededRemoteData } from '../../core/shared/operators'; +import { DataService } from '../../core/data/data.service'; +import { NormalizedDSpaceObject } from '../../core/cache/models/normalized-dspace-object.model'; +import { DSpaceObject } from '../../core/shared/dspace-object.model'; + +@Component({ + selector: 'ds-edit-community', + styleUrls: ['./edit-community-page.component.scss'], + templateUrl: './edit-community-page.component.html' +}) +export class EditComColPageComponent implements OnInit { + protected frontendURL: string; + public dsoRD$: Observable>; + + public constructor( + protected dsoDataService: DataService, + private routeService: RouteService, + private router: Router, + private route: ActivatedRoute + ) { + } + + ngOnInit(): void { + this.dsoRD$ = this.route.data.pipe(first(), map((data) => data.dso)); + } + + onSubmit(dso: TDomain) { + this.dsoDataService.update(dso) + .pipe(getSucceededRemoteData()) + .subscribe((dsoRD: RemoteData) => { + if (isNotUndefined(dsoRD)) { + const newUUID = dsoRD.payload.uuid; + this.router.navigate([this.frontendURL + newUUID]); + } + }); + } +}