Add edit war in API
parent
4b617ec67a
commit
6bc6d14b6d
|
@ -168,6 +168,37 @@ wars.route('/:id')
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
.patch(apiAuthenticationMiddleware, checkMT, (req, res, next) => {
|
||||||
|
if (!req.body || (req.body._id && req.body._id !== req.params.id)) {
|
||||||
|
// little bit different as in PUT. :id does not need to be in data, but if the _id and url id must match
|
||||||
|
const err = new Error('id of PATCH resource and send JSON body are not equal ' + req.params.id + ' ' +
|
||||||
|
req.body._id);
|
||||||
|
err.status = codes.notfound;
|
||||||
|
next(err);
|
||||||
|
return; // prevent node to process this function further after next() has finished.
|
||||||
|
}
|
||||||
|
|
||||||
|
req.body.updatedAt = new Date();
|
||||||
|
req.body.$inc = {__v: 1};
|
||||||
|
if (req.body.hasOwnProperty('__v')) {
|
||||||
|
delete req.body.__v;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PATCH is easier with mongoose than PUT. You simply update by all data that comes from outside. no need to
|
||||||
|
// reset attributes that are missing.
|
||||||
|
WarModel.findByIdAndUpdate(req.params.id, req.body, {new: true}, (err, item) => {
|
||||||
|
if (err) {
|
||||||
|
err.status = codes.wrongrequest;
|
||||||
|
} else if (!item) {
|
||||||
|
err = new Error('item not found');
|
||||||
|
err.status = codes.notfound;
|
||||||
|
} else {
|
||||||
|
res.locals.items = item;
|
||||||
|
}
|
||||||
|
next(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
.delete(apiAuthenticationMiddleware, checkMT, (req, res, next) => {
|
.delete(apiAuthenticationMiddleware, checkMT, (req, res, next) => {
|
||||||
WarModel.findByIdAndRemove(req.params.id, (err, item) => {
|
WarModel.findByIdAndRemove(req.params.id, (err, item) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ export class WarService {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateWar(war: War) {
|
updateWar(war: War) {
|
||||||
return this.http.patch(this.config.apiWarPath, war)
|
return this.http.patch(this.config.apiWarPath + '/' + war._id, war)
|
||||||
.map(res => res.json());
|
.map(res => res.json());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ export class WarEditComponent {
|
||||||
updateWar() {
|
updateWar() {
|
||||||
this.warService.updateWar(this.war)
|
this.warService.updateWar(this.war)
|
||||||
.subscribe(war => {
|
.subscribe(war => {
|
||||||
this.router.navigate(['../war/' + war._id], {relativeTo: this.route});
|
this.router.navigate(['../../war/' + war._id], {relativeTo: this.route});
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
this.error = error._body.error.message;
|
this.error = error._body.error.message;
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
<span (click)="delete(); $event.stopPropagation()"
|
<span (click)="delete(); $event.stopPropagation()"
|
||||||
title="Löschen"
|
title="Löschen"
|
||||||
class="glyphicon glyphicon-trash trash"></span>
|
class="glyphicon glyphicon-trash trash"></span>
|
||||||
|
<span (click)="edit(); $event.stopPropagation()"
|
||||||
|
style="padding-right: 10px;"
|
||||||
|
title="Bearbeiten"
|
||||||
|
class="glyphicon glyphicon-edit trash"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,6 +16,8 @@ export class WarItemComponent implements OnInit {
|
||||||
|
|
||||||
@Output() warSelected = new EventEmitter();
|
@Output() warSelected = new EventEmitter();
|
||||||
|
|
||||||
|
@Output() warEdit = new EventEmitter();
|
||||||
|
|
||||||
@Output() warDelete = new EventEmitter();
|
@Output() warDelete = new EventEmitter();
|
||||||
|
|
||||||
constructor(public loginService: LoginService) {
|
constructor(public loginService: LoginService) {
|
||||||
|
@ -28,6 +30,10 @@ export class WarItemComponent implements OnInit {
|
||||||
this.warSelected.emit(this.war._id);
|
this.warSelected.emit(this.war._id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
edit() {
|
||||||
|
this.warEdit.emit(this.war._id);
|
||||||
|
}
|
||||||
|
|
||||||
delete() {
|
delete() {
|
||||||
this.warDelete.emit(this.war);
|
this.warDelete.emit(this.war);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
<div *ngFor="let war of campaign.wars">
|
<div *ngFor="let war of campaign.wars">
|
||||||
<pjm-war-item
|
<pjm-war-item
|
||||||
[war]="war"
|
[war]="war"
|
||||||
|
(warEdit)="editWar($event)"
|
||||||
(warDelete)="deleteWar(war)"
|
(warDelete)="deleteWar(war)"
|
||||||
(warSelected)="selectWar($event)"
|
(warSelected)="selectWar($event)"
|
||||||
[selected]="war._id == selectedWarId">
|
[selected]="war._id == selectedWarId">
|
||||||
|
|
|
@ -49,11 +49,6 @@ export class WarListComponent implements OnInit {
|
||||||
this.router.navigate([{outlets: {'right': ['campaign']}}], {relativeTo: this.route});
|
this.router.navigate([{outlets: {'right': ['campaign']}}], {relativeTo: this.route});
|
||||||
}
|
}
|
||||||
|
|
||||||
selectNewWar() {
|
|
||||||
this.selectedWarId = null;
|
|
||||||
this.router.navigate([{outlets: {'right': ['submit-war']}}], {relativeTo: this.route});
|
|
||||||
}
|
|
||||||
|
|
||||||
selectWar(warId) {
|
selectWar(warId) {
|
||||||
if (this.selectedWarId !== warId) {
|
if (this.selectedWarId !== warId) {
|
||||||
this.selectedWarId = warId;
|
this.selectedWarId = warId;
|
||||||
|
@ -75,6 +70,16 @@ export class WarListComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selectNewWar() {
|
||||||
|
this.selectedWarId = null;
|
||||||
|
this.router.navigate([{outlets: {'right': ['submit-war']}}], {relativeTo: this.route});
|
||||||
|
}
|
||||||
|
|
||||||
|
editWar(warId) {
|
||||||
|
this.selectedWarId = warId;
|
||||||
|
this.router.navigate([{outlets: {'right': ['submit-war', warId]}}], {relativeTo: this.route});
|
||||||
|
}
|
||||||
|
|
||||||
deleteWar(war: War) {
|
deleteWar(war: War) {
|
||||||
if (confirm('Soll die Schlacht ' + war.title + ' wirklich gelöscht werden?')) {
|
if (confirm('Soll die Schlacht ' + war.title + ' wirklich gelöscht werden?')) {
|
||||||
this.warService.deleteWar(war._id)
|
this.warService.deleteWar(war._id)
|
||||||
|
@ -82,7 +87,9 @@ export class WarListComponent implements OnInit {
|
||||||
if (this.selectedWarId === war._id) {
|
if (this.selectedWarId === war._id) {
|
||||||
this.selectOverview('all');
|
this.selectOverview('all');
|
||||||
}
|
}
|
||||||
this.campaigns.splice(this.campaigns.indexOf(war), 1);
|
this.campaigns.forEach(campaign => {
|
||||||
|
campaign.wars.splice(campaign.wars.indexOf(war),1)
|
||||||
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue