Finish user awarding
parent
af0dc65d5d
commit
d5ad544a1a
|
@ -20,6 +20,7 @@ export class AwardingService {
|
||||||
*/
|
*/
|
||||||
getUserAwardings(userId: string) {
|
getUserAwardings(userId: string) {
|
||||||
return this.http.get(this.config.apiUrl + this.config.apiAwardPath + '?userId=' + userId)
|
return this.http.get(this.config.apiUrl + this.config.apiAwardPath + '?userId=' + userId)
|
||||||
|
.map(res => res.json())
|
||||||
}
|
}
|
||||||
|
|
||||||
addAwarding(award) {
|
addAwarding(award) {
|
||||||
|
|
|
@ -13,11 +13,32 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-container {
|
.table-container {
|
||||||
|
margin-top: 40px;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
width: 250%;
|
width: 50%;
|
||||||
margin-top: 50px
|
}
|
||||||
|
|
||||||
|
.overview {
|
||||||
|
position: fixed;
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
width: 100%;
|
||||||
|
border-left: thin solid lightgrey;
|
||||||
|
padding-left: 50px;
|
||||||
|
padding-top: 20px;
|
||||||
|
margin-left: 10px;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
width: 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
margin-left: -20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,18 +56,24 @@
|
||||||
Bestätigen
|
Bestätigen
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<span *ngIf="showSuccessLabel"
|
||||||
|
class="label label-success label-small"
|
||||||
|
style="margin-left: inherit">
|
||||||
|
Erfolgreich gespeichert
|
||||||
|
</span>
|
||||||
|
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<table class="table table-hover table-striped">
|
<table class="table table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="col-sm-1">Bild</th>
|
<th class="col-sm-1" style="width: 60px;">Bild</th>
|
||||||
<th class="col-sm-2">Bezeichnung</th>
|
<th class="col-sm-2">Bezeichnung</th>
|
||||||
<th class="col-sm-3">Begründung</th>
|
<th class="col-sm-2">Begründung</th>
|
||||||
<th class="col-sm-1 text-right">Datum</th>
|
<th class="col-sm-1 text-right" style="width: 65px;">Datum</th>
|
||||||
<th class="col-sm-1 text-center" style="width: 45px;"></th>
|
<th class="col-sm-1 text-center" style="width: 45px;"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody *ngFor="let award of user.awards">
|
<tbody *ngFor="let award of awards">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="table-cell-id" *ngIf="award.decorationId.isMedal">
|
<td class="table-cell-id" *ngIf="award.decorationId.isMedal">
|
||||||
<img height="40px" src="resource/decoration/{{award.decorationId._id}}.png">
|
<img height="40px" src="resource/decoration/{{award.decorationId._id}}.png">
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
import {Component, ViewChild} from "@angular/core";
|
import {Component, ViewChild} from "@angular/core";
|
||||||
import {ActivatedRoute, Router} from "@angular/router";
|
import {ActivatedRoute, Router} from "@angular/router";
|
||||||
import * as model from "../../models/model-interfaces";
|
import {Award, Decoration} from "../../models/model-interfaces";
|
||||||
import {Decoration, Squad, User} from "../../models/model-interfaces";
|
|
||||||
import {UserService} from "../../services/user-service/user.service";
|
|
||||||
import {Subscription} from "rxjs";
|
|
||||||
import {NgForm} from "@angular/forms";
|
import {NgForm} from "@angular/forms";
|
||||||
import {AwardingService} from "../../services/awarding-service/awarding.service";
|
import {AwardingService} from "../../services/awarding-service/awarding.service";
|
||||||
import {DecorationService} from "../../services/decoration-service/decoration.service";
|
import {DecorationService} from "../../services/decoration-service/decoration.service";
|
||||||
|
@ -11,91 +8,44 @@ import {DecorationService} from "../../services/decoration-service/decoration.se
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
templateUrl: './user-award.component.html',
|
templateUrl: './user-award.component.html',
|
||||||
styleUrls: ['./user-award.component.css', '../../style/new-entry-form.css'],
|
styleUrls: ['./user-award.component.css'],
|
||||||
})
|
})
|
||||||
export class UserAwardComponent {
|
export class UserAwardComponent {
|
||||||
|
|
||||||
@ViewChild(NgForm) form: NgForm;
|
@ViewChild(NgForm) form: NgForm;
|
||||||
|
|
||||||
subscription: Subscription;
|
|
||||||
|
|
||||||
showSuccessLabel = false;
|
showSuccessLabel = false;
|
||||||
|
|
||||||
user: User = {};
|
userId: string;
|
||||||
|
|
||||||
decorations: Decoration[];
|
decorations: Decoration[];
|
||||||
|
|
||||||
award: { decorationId: '', reason: '' };
|
awards: Award[];
|
||||||
|
|
||||||
saved = false;
|
|
||||||
|
|
||||||
decoPreviewDisplay = 'none';
|
decoPreviewDisplay = 'none';
|
||||||
|
|
||||||
constructor(private router: Router,
|
constructor(private router: Router,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private userService: UserService,
|
|
||||||
private awardingService: AwardingService,
|
private awardingService: AwardingService,
|
||||||
private decorationService: DecorationService) {
|
private decorationService: DecorationService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
this.subscription = this.route.params
|
|
||||||
.map(params => params['id'])
|
|
||||||
.filter(id => id != undefined)
|
|
||||||
.flatMap(id => this.userService.getUser(id))
|
|
||||||
.subscribe(user => {
|
|
||||||
this.user = user;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.decorationService.findDecorations().subscribe(decorations => {
|
this.decorationService.findDecorations().subscribe(decorations => {
|
||||||
this.decorations = decorations;
|
this.decorations = decorations;
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
ngOnDestroy() {
|
this.route.params
|
||||||
this.subscription.unsubscribe();
|
.map(params => params['id'])
|
||||||
}
|
.flatMap(id => this.awardingService.getUserAwardings(id))
|
||||||
|
.subscribe(awards => {
|
||||||
|
this.awards = awards;
|
||||||
|
});
|
||||||
|
|
||||||
saveUser(rankLevel) {
|
this.route.params
|
||||||
const updateObject = {
|
.map(params => params['id'])
|
||||||
_id: this.user._id,
|
.subscribe(id => this.userId = id)
|
||||||
username: this.user.username,
|
|
||||||
squadId: this.user.squad._id,
|
|
||||||
rankLvl: rankLevel
|
|
||||||
};
|
|
||||||
this.userService.updateUser(updateObject)
|
|
||||||
.subscribe(user => {
|
|
||||||
this.user = user;
|
|
||||||
this.showSuccessLabel = true;
|
|
||||||
setTimeout(() => {
|
|
||||||
this.showSuccessLabel = false;
|
|
||||||
}, 2000)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
cancel() {
|
|
||||||
this.router.navigate(['../..'], {relativeTo: this.route});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* compare ngValue with ngModel to assign selected element
|
|
||||||
*/
|
|
||||||
equals(o1: Squad, o2: Squad) {
|
|
||||||
if (o1 && o2) {
|
|
||||||
return o1._id === o2._id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteUser(confirm) {
|
|
||||||
if (confirm.toLowerCase() === this.user.username.toLocaleLowerCase()) {
|
|
||||||
this.userService.deleteUser(this.user)
|
|
||||||
.subscribe((res) => {
|
|
||||||
this.router.navigate(['../..'], {relativeTo: this.route});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,40 +61,23 @@ export class UserAwardComponent {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteAwarding(awardingId) {
|
|
||||||
this.awardingService.deleteAwarding(awardingId).subscribe((res) => {
|
|
||||||
this.awardingService.getUserAwardings(this.user._id)
|
|
||||||
.map((res) => res.json())
|
|
||||||
.subscribe((awards) => {
|
|
||||||
this.user.awards = awards;
|
|
||||||
this.showSuccessLabel = true;
|
|
||||||
setTimeout(() => {
|
|
||||||
this.showSuccessLabel = false;
|
|
||||||
}, 2000)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
addAwarding(decorationField, reasonField, previewImage, descriptionField) {
|
addAwarding(decorationField, reasonField, previewImage, descriptionField) {
|
||||||
const decorationId = decorationField.value;
|
const decorationId = decorationField.value;
|
||||||
const reason = reasonField.value;
|
const reason = reasonField.value;
|
||||||
if (decorationId && reason.length > 0) {
|
if (decorationId && reason.length > 0) {
|
||||||
const award = {
|
const award = {
|
||||||
"userId": this.user._id,
|
"userId": this.userId,
|
||||||
"decorationId": decorationId,
|
"decorationId": decorationId,
|
||||||
"reason": reason,
|
"reason": reason,
|
||||||
"date": Date.now()
|
"date": Date.now()
|
||||||
};
|
};
|
||||||
this.awardingService.addAwarding(award).subscribe(() => {
|
this.awardingService.addAwarding(award).subscribe(() => {
|
||||||
this.awardingService.getUserAwardings(this.user._id)
|
this.awardingService.getUserAwardings(this.userId)
|
||||||
.map((res) => res.json())
|
|
||||||
.subscribe(awards => {
|
.subscribe(awards => {
|
||||||
this.user.awards = awards;
|
this.awards = awards;
|
||||||
this.decoPreviewDisplay = 'none';
|
this.decoPreviewDisplay = 'none';
|
||||||
decorationField.value = undefined;
|
decorationField.value = undefined;
|
||||||
reasonField.value = '';
|
reasonField.value = previewImage.src = descriptionField.innerHTML = '';
|
||||||
previewImage.src = '';
|
|
||||||
descriptionField.innerHTML = '';
|
|
||||||
this.showSuccessLabel = true;
|
this.showSuccessLabel = true;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.showSuccessLabel = false;
|
this.showSuccessLabel = false;
|
||||||
|
@ -154,12 +87,22 @@ export class UserAwardComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deleteAwarding(awardingId) {
|
||||||
|
this.awardingService.deleteAwarding(awardingId).subscribe((res) => {
|
||||||
|
this.awardingService.getUserAwardings(this.userId)
|
||||||
|
.subscribe((awards) => {
|
||||||
|
this.awards = awards;
|
||||||
|
this.showSuccessLabel = true;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.showSuccessLabel = false;
|
||||||
|
}, 2000)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
canDeactivate(): boolean {
|
cancel() {
|
||||||
if (this.saved || !this.form.dirty) {
|
this.router.navigate(['../..'], {relativeTo: this.route});
|
||||||
return true;
|
return false;
|
||||||
}
|
|
||||||
return window.confirm(`Ihr Formular besitzt ungespeicherte Änderungen, möchten Sie die Seite wirklich verlassen?`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
.decoration-preview {
|
|
||||||
background-color: white;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
|
@ -19,10 +19,6 @@ export class UserOverviewComponent {
|
||||||
|
|
||||||
subscription: Subscription;
|
subscription: Subscription;
|
||||||
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
model = model;
|
|
||||||
|
|
||||||
showSuccessLabel = false;
|
showSuccessLabel = false;
|
||||||
|
|
||||||
ranksDisplay = 'none';
|
ranksDisplay = 'none';
|
||||||
|
@ -122,15 +118,6 @@ export class UserOverviewComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteUser(confirm) {
|
|
||||||
if (confirm.toLowerCase() === this.user.username.toLocaleLowerCase()) {
|
|
||||||
this.userService.deleteUser(this.user)
|
|
||||||
.subscribe((res) => {
|
|
||||||
this.router.navigate(['../..'], {relativeTo: this.route});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
canDeactivate(): boolean {
|
canDeactivate(): boolean {
|
||||||
if (this.saved || !this.form.dirty) {
|
if (this.saved || !this.form.dirty) {
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue