US10: Show a list of the owned horses on the owner view page
This commit is contained in:
parent
89e5f7980a
commit
3cc36466df
@ -29,6 +29,7 @@
|
|||||||
<td>{{ id + 1 }}</td>
|
<td>{{ id + 1 }}</td>
|
||||||
<td>{{ owner.name }}</td>
|
<td>{{ owner.name }}</td>
|
||||||
<td>
|
<td>
|
||||||
|
<a class="btn btn-primary" href="owner/{{ owner.id }}"><i class="fas fa-external-link-alt"></i></a>
|
||||||
<a class="btn btn-success" href="owner/{{ owner.id }}/edit"><i class="fas fa-edit"></i></a>
|
<a class="btn btn-success" href="owner/{{ owner.id }}/edit"><i class="fas fa-edit"></i></a>
|
||||||
<button class="btn btn-danger" (click)="deleteOwner(owner.id, owner.name)"><i class="fas fa-trash"></i></button>
|
<button class="btn btn-danger" (click)="deleteOwner(owner.id, owner.name)"><i class="fas fa-trash"></i></button>
|
||||||
</td>
|
</td>
|
||||||
|
@ -6,14 +6,28 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container mt-3" *ngIf="owner">
|
<div class="container mt-3" *ngIf="owner">
|
||||||
<div class="alert alert-success" role="alert">
|
<h1>Owner Info for {{ owner.name }}</h1>
|
||||||
<h4 class="alert-heading">Well done!</h4>
|
|
||||||
<p>Your application is up and running</p>
|
|
||||||
<hr>
|
<hr>
|
||||||
<p>This is the name of the owner with id 1 from your backend system:
|
<h4>Horses:</h4>
|
||||||
<span class="font-weight-bold">{{owner.name}}</span>
|
<table class="table" *ngIf="horses; else noHorses">
|
||||||
</p>
|
<thead>
|
||||||
</div>
|
<tr>
|
||||||
|
<th scope="col">#</th>
|
||||||
|
<th scope="col">Name</th>
|
||||||
|
<th scope="col">Actions</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr *ngFor="let horse of horses; let id = index">
|
||||||
|
<td>{{ id + 1 }}</td>
|
||||||
|
<td>{{ horse.name }}</td>
|
||||||
|
<td>
|
||||||
|
<a class="btn btn-primary" href="horse/{{ horse.id }}"><i class="fas fa-external-link-alt"></i></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<ng-template #noHorses>
|
||||||
|
<p>Owner has no horses assigned.</p>
|
||||||
|
</ng-template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import {Component, OnInit} from '@angular/core';
|
import {Component, OnInit} from '@angular/core';
|
||||||
import {OwnerService} from '../../service/owner.service';
|
import {OwnerService} from '../../service/owner.service';
|
||||||
import {Owner} from '../../dto/owner';
|
import {Owner} from '../../dto/owner';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { Horse } from 'src/app/dto/horse';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-owner',
|
selector: 'app-owner',
|
||||||
@ -12,12 +14,15 @@ export class OwnerComponent implements OnInit {
|
|||||||
error = false;
|
error = false;
|
||||||
errorMessage = '';
|
errorMessage = '';
|
||||||
owner: Owner;
|
owner: Owner;
|
||||||
|
horses: Array<Horse>
|
||||||
|
|
||||||
constructor(private ownerService: OwnerService) {
|
constructor(private ownerService: OwnerService, private route: ActivatedRoute) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.loadOwner(1);
|
const ownerId: string = this.route.snapshot.paramMap.get('id');
|
||||||
|
this.loadOwner(parseInt(ownerId));
|
||||||
|
this.loadOwnerHorses(parseInt(ownerId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,6 +47,21 @@ export class OwnerComponent implements OnInit {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the horses of the owner
|
||||||
|
* @param id of the owner
|
||||||
|
*/
|
||||||
|
private loadOwnerHorses(id: number) {
|
||||||
|
this.ownerService.getOwnerHorses(id).subscribe(
|
||||||
|
(horses: Array<Horse>) => {
|
||||||
|
this.horses = horses;
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private defaultServiceErrorHandling(error: any) {
|
private defaultServiceErrorHandling(error: any) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
this.error = true;
|
this.error = true;
|
||||||
|
@ -3,6 +3,7 @@ import {HttpClient, HttpParams} from '@angular/common/http';
|
|||||||
import {Globals} from '../global/globals';
|
import {Globals} from '../global/globals';
|
||||||
import {Observable} from 'rxjs';
|
import {Observable} from 'rxjs';
|
||||||
import {Owner} from '../dto/owner';
|
import {Owner} from '../dto/owner';
|
||||||
|
import { Horse } from '../dto/horse';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@ -40,6 +41,15 @@ export class OwnerService {
|
|||||||
return this.httpClient.get<Array<Owner>>(this.messageBaseUri, { params: filter });
|
return this.httpClient.get<Array<Owner>>(this.messageBaseUri, { params: filter });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load all horses, owned by the specified owner, from the backend
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
getOwnerHorses(id: number): Observable<Array<Horse>> {
|
||||||
|
console.log('Load all horses for owner ' + id);
|
||||||
|
return this.httpClient.get<Array<Horse>>(this.messageBaseUri + '/' + id + '/horses');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a specific owner to the backend and loads it if successful
|
* Adds a specific owner to the backend and loads it if successful
|
||||||
* @param owner
|
* @param owner
|
||||||
|
Reference in New Issue
Block a user