Skip to content

Commit e62a249

Browse files
authored
Merge pull request #89 from PatternAtlas/fix/delete-functionality
Delete Logic and Card Design
2 parents 614d000 + 67ba84c commit e62a249

File tree

16 files changed

+220
-70
lines changed

16 files changed

+220
-70
lines changed

src/app/core/component/cardrenderer/card-renderer.component.ts

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import Pattern from '../../model/hal/pattern.model';
66
import { HalLink } from '../../model/hal/hal-link.interface';
77
import { PatternService } from '../../service/pattern.service';
88
import { ToasterService } from 'angular2-toaster';
9+
import { MatDialog } from "@angular/material/dialog";
10+
import { DeleteConfirmationDialogComponent } from "../delete-confirmation-dialog/delete-confirmation-dialog.component";
911

1012
@Component({
1113
selector: 'pp-card-renderer',
1214
templateUrl: './card-renderer.component.html',
13-
styleUrls: ['./card-renderer.component.scss']
15+
styleUrls: [ './card-renderer.component.scss' ]
1416
})
1517
export class CardRendererComponent {
1618

@@ -22,23 +24,37 @@ export class CardRendererComponent {
2224
private router: Router,
2325
private activatedRoute: ActivatedRoute,
2426
private patternService: PatternService,
25-
private toasterService: ToasterService) {
27+
private toasterService: ToasterService,
28+
private dialog: MatDialog) {
2629
}
2730

2831
navigate(pattern: UriEntity): void {
2932
this.zone.run(() => {
30-
this.router.navigate([UriConverter.doubleEncodeUri(pattern.uri)], { relativeTo: this.activatedRoute });
33+
this.router.navigate([ UriConverter.doubleEncodeUri(pattern.uri) ], { relativeTo: this.activatedRoute });
3134
});
3235
}
3336

3437
delete(pattern: Pattern): void {
35-
this.patternService.deletePattern(pattern._links.self.href)
36-
.subscribe(
37-
value => this.handlePatternDelete(pattern),
38-
error => {
39-
this.toasterService.pop('error', 'Could not delete pattern!');
40-
}
41-
);
38+
this.dialog.open(DeleteConfirmationDialogComponent, {
39+
data: {
40+
name: pattern.name,
41+
}
42+
})
43+
.afterClosed().subscribe(dialoganswer => {
44+
if (dialoganswer) {
45+
this.patternService.deletePattern(pattern._links.self.href)
46+
.subscribe(
47+
value => {
48+
this.handlePatternDelete(pattern);
49+
this.toasterService.pop('success', 'Pattern deleted!');
50+
},
51+
error => {
52+
this.toasterService.pop('error', 'Could not delete pattern!', "A Pattern can only be deleted if it is not a part of any Pattern Views");
53+
}
54+
);
55+
}
56+
});
57+
4258
}
4359

4460
getLinkCount(directedEdges: HalLink[] | HalLink): number {
@@ -51,15 +67,15 @@ export class CardRendererComponent {
5167
private collectAllEdgesOfPattern(pattern: Pattern): HalLink[] {
5268
let collectedEdges: HalLink[] = [];
5369
if (pattern._links.outgoingDirectedEdges) {
54-
Array.isArray(pattern._links.outgoingDirectedEdges) ? collectedEdges = [...collectedEdges, ...pattern._links.outgoingDirectedEdges] :
70+
Array.isArray(pattern._links.outgoingDirectedEdges) ? collectedEdges = [ ...collectedEdges, ...pattern._links.outgoingDirectedEdges ] :
5571
collectedEdges.push(pattern._links.outgoingDirectedEdges);
5672
}
5773
if (pattern._links.ingoingDirectedEdges) {
58-
Array.isArray(pattern._links.ingoingDirectedEdges) ? collectedEdges = [...collectedEdges, ...pattern._links.ingoingDirectedEdges] :
74+
Array.isArray(pattern._links.ingoingDirectedEdges) ? collectedEdges = [ ...collectedEdges, ...pattern._links.ingoingDirectedEdges ] :
5975
collectedEdges.push(pattern._links.ingoingDirectedEdges);
6076
}
6177
if (pattern._links.undirectedEdges) {
62-
Array.isArray(pattern._links.undirectedEdges) ? collectedEdges = [...collectedEdges, ...pattern._links.undirectedEdges] :
78+
Array.isArray(pattern._links.undirectedEdges) ? collectedEdges = [ ...collectedEdges, ...pattern._links.undirectedEdges ] :
6379
collectedEdges.push(pattern._links.undirectedEdges);
6480
}
6581
return collectedEdges;

src/app/core/component/create-edit-pattern-language/create-edit-pattern-language.component.ts

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,12 @@ export class CreateEditPatternLanguageComponent implements OnInit {
9090
if (this.patternLanguageForm.valid) {
9191

9292
switch (this.componentDialogType) {
93-
case CreateEditComponentDialogType.PATTERN_VIEW:
93+
case CreateEditComponentDialogType.PATTERN_VIEW : case CreateEditComponentDialogType.DESIGN_MODEL:
9494

9595
this.saveClicked.emit({
9696
dialogResult: {
97-
name: this.name.value
97+
name: this.name.value,
98+
logo: this.iconUrl.value,
9899
}
99100
});
100101
this.dialogRef.close();
@@ -123,17 +124,6 @@ export class CreateEditPatternLanguageComponent implements OnInit {
123124
});
124125
this.dialogRef.close();
125126
break;
126-
127-
case CreateEditComponentDialogType.DESIGN_MODEL:
128-
129-
this.saveClicked.emit({
130-
dialogResult: {
131-
name: this.name.value,
132-
logo: this.iconUrl.value
133-
}
134-
});
135-
this.dialogRef.close();
136-
break;
137127
}
138128
}
139129
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
<h1 mat-dialog-title>Edit or Delete Relation</h1>
1+
<h1 mat-dialog-title *ngIf="data?.name">Do you really want to delete {{data.name}}?</h1>
2+
<h1 mat-dialog-title *ngIf="!data?.name">Do you really want to delete this item?</h1>
23
<div mat-dialog-actions>
34
<button mat-button (click)="onNoClick()">Cancle</button>
4-
<button [mat-dialog-close]="data" class="pattern-button" mat-raised-button color="warn">
5+
<button [mat-dialog-close]="data" class="pattern-button" style="margin-left: auto;
6+
margin-right: 0;" mat-raised-button color="warn">
57
<i class="material-icons">delete</i>
68
</button>
79
</div>

src/app/core/service/pattern-language.service.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,9 @@ export class PatternLanguageService implements GraphDataService {
107107
getEdgeTypes(): Observable<string[]> {
108108
return of();
109109
}
110+
111+
deletePatternLanguage(patternLanguageId: string){
112+
const url = this.repoEndpoint + '/patternLanguages/' + patternLanguageId;
113+
return this.http.delete(url);
114+
}
110115
}

src/app/core/service/pattern-view.service.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,13 @@ export class PatternViewService implements GraphDataService {
9191
return this.http.get<Embedded<UndirectedEdgesResponse>>(patternContainer._links.undirectedEdges.href);
9292
}
9393

94-
getDirectedEdgeById(patternViewId, edgeId: string) : Observable<DirectedEdgeModel>{
95-
return this.http.get<DirectedEdgeModel>(this.repoEndpoint + /patternViews/+ patternViewId + /directedEdges/ + edgeId)
94+
getDirectedEdgeById(patternViewId, edgeId: string): Observable<DirectedEdgeModel> {
95+
return this.http.get<DirectedEdgeModel>(this.repoEndpoint + /patternViews/ + patternViewId + /directedEdges/ + edgeId)
9696
}
9797

9898

99-
getUndirectedEdgeById(patternViewId, edgeId: string) : Observable<UndirectedEdgeModel>{
100-
return this.http.get<UndirectedEdgeModel>(this.repoEndpoint + /patternViews/+ patternViewId + /undirectedEdges/ + edgeId)
99+
getUndirectedEdgeById(patternViewId, edgeId: string): Observable<UndirectedEdgeModel> {
100+
return this.http.get<UndirectedEdgeModel>(this.repoEndpoint + /patternViews/ + patternViewId + /undirectedEdges/ + edgeId)
101101
}
102102

103103
deleteLink(patternLink: any): Observable<any> {
@@ -116,10 +116,14 @@ export class PatternViewService implements GraphDataService {
116116
return of();
117117
}
118118

119-
removeRelationFromView(patternContainer: PatternContainer, relation: any):void {
120-
relation.markerStart === undefined?
121-
this.http.delete(patternContainer._links.directedEdges.href + '/' + relation.id).subscribe():
119+
removeRelationFromView(patternContainer: PatternContainer, relation: any): void {
120+
relation.markerStart === undefined ?
121+
this.http.delete(patternContainer._links.directedEdges.href + '/' + relation.id).subscribe() :
122122
this.http.delete(patternContainer._links.undirectedEdges.href + '/' + relation.id).subscribe();
123123
}
124124

125+
deletePatternView(patternViewId: PatternContainer) {
126+
return this.http.delete(patternViewId._links.self.href);
127+
}
128+
125129
}

src/app/core/service/pattern.service.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ export class PatternService {
6868
}
6969

7070
getPatternById(patternLanguage: PatternLanguage, patternId: String): Observable<Pattern> {
71-
console.log('patternid');
72-
console.log(patternId);
7371
return this.http.get <Pattern>(this.repoEndpoint + '/patternLanguages/' + patternLanguage.id + '/patterns/' + patternId);
7472
}
7573

src/app/design-model-module/component/design-model-management/design-model-management.component.html

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,28 @@
66

77
<div class="container">
88
<mat-card *ngFor="let designModel of designModelResponse?._embedded?.designModels"
9-
[routerLink]="[designModel.id]" class="landing-card">
10-
9+
class="landing-card">
1110
<mat-card-header>
12-
<img mat-card-avatar [src]="designModel?.logo || '//via.placeholder.com/50x50'" alt=""/>
11+
<img mat-card-avatar (click)="navigate(designModel)" [src]="designModel?.logo || '//via.placeholder.com/50x50'"
12+
alt=""/>
1313

14-
<mat-card-title>
14+
<mat-card-title (click)="navigate(designModel)">
1515
{{designModel.name}}
1616
</mat-card-title>
1717
</mat-card-header>
18-
19-
<img mat-card-image [src]="designModel?.logo || '//via.placeholder.com/200x300'" alt=""/>
18+
<img mat-card-image (click)="navigate(designModel)" [src]="designModel?.logo || '//via.placeholder.com/200x300'"
19+
alt=""/>
2020

2121
<mat-card-actions>
22-
<button mat-stroked-button color="primary">
23-
<mat-icon>pageview</mat-icon>
24-
View
25-
</button>
22+
<div style="text-align: center">
23+
<button mat-stroked-button color="primary"
24+
(click)="navigate(designModel)"><i class="material-icons">pageview</i> View
25+
</button>
26+
<button (click)="delete(designModel)" class="pattern-button" mat-stroked-button style="margin-left: 25px"
27+
color="warn">
28+
<i class="material-icons">delete</i>
29+
</button>
30+
</div>
2631
</mat-card-actions>
2732
</mat-card>
2833
</div>

src/app/design-model-module/component/design-model-management/design-model-management.component.scss

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@
33
word-break: break-word;
44
}
55

6-
.mat-card-actions {
7-
text-align: center;
6+
.mat-card-title {
7+
width: 10rem;
8+
word-break: break-word;
9+
cursor: pointer;
10+
}
11+
12+
.mat-card-image{
13+
cursor: pointer;
814
}
915

10-
.landing-card {
16+
.mat-card-avatar{
1117
cursor: pointer;
1218
}

src/app/design-model-module/component/design-model-management/design-model-management.component.ts

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { Component, NgZone, OnInit } from '@angular/core';
22
import {
33
CreateEditComponentDialogType,
44
CreateEditPatternLanguageComponent
@@ -12,12 +12,15 @@ import { ToasterService } from 'angular2-toaster';
1212
import { Observable } from 'rxjs';
1313
import { DesignModelService } from '../../service/design-model.service';
1414
import { DesignModelResponse } from '../../model/hal/design-model-response';
15+
import { ActivatedRoute, Router } from "@angular/router";
16+
import { DesignModel } from "../../model/hal/design-model";
17+
import { DeleteConfirmationDialogComponent } from "../../../core/component/delete-confirmation-dialog/delete-confirmation-dialog.component";
1518

1619

1720
@Component({
1821
selector: 'pp-design-model-management',
1922
templateUrl: './design-model-management.component.html',
20-
styleUrls: ['./design-model-management.component.scss']
23+
styleUrls: [ './design-model-management.component.scss' ]
2124
})
2225
export class DesignModelManagementComponent implements OnInit {
2326

@@ -27,7 +30,10 @@ export class DesignModelManagementComponent implements OnInit {
2730
constructor(private designModelService: DesignModelService,
2831
private dialog: MatDialog,
2932
private patternLanguageService: PatternLanguageService,
30-
private toastService: ToasterService) {
33+
private toastService: ToasterService,
34+
private activatedRoute: ActivatedRoute,
35+
private router: Router,
36+
private zone: NgZone) {
3137
}
3238

3339

@@ -67,4 +73,29 @@ export class DesignModelManagementComponent implements OnInit {
6773
}
6874
);
6975
}
76+
77+
navigate(model: DesignModel): void {
78+
this.zone.run(() => {
79+
this.router.navigate([ model.id ], { relativeTo: this.activatedRoute });
80+
})
81+
}
82+
83+
delete(designModel: DesignModel) {
84+
const dialogRef = this.dialog.open(DeleteConfirmationDialogComponent, {
85+
data: {
86+
name: designModel.name,
87+
}
88+
}).afterClosed().subscribe(dialogAnswer => {
89+
if (dialogAnswer) {
90+
this.designModelService.deleteDesignModel(designModel).subscribe((respone) => {
91+
for (let i = 0; i < this.designModelResponse._embedded.designModels.length; i++) {
92+
this.designModelResponse._embedded.designModels[i].id === designModel.id ? this.designModelResponse._embedded.designModels.splice(i, 1) : null;
93+
}
94+
this.toastService.pop('success', 'Design Model deleted!');
95+
},(error) => {
96+
this.toastService.pop('error', 'Design Model could not be deleted!');
97+
});
98+
}
99+
})
100+
}
70101
}

src/app/design-model-module/service/design-model.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,4 +232,8 @@ export class DesignModelService implements GraphDataService, GraphDataSavePatter
232232

233233
return of({ graph: graphNodes });
234234
}
235+
236+
deleteDesignModel(designModel: DesignModel){
237+
return this.httpClient.delete(designModel._links.self.href);
238+
}
235239
}

0 commit comments

Comments
 (0)