This commit is contained in:
Phan Huy Tran 2024-11-13 10:17:58 +01:00
parent 7355cbf630
commit a3a98be940
7 changed files with 80 additions and 8 deletions

@ -1,5 +1,9 @@
<div class="container">
<h1 class="text-center my-5 fw-bold">Homes</h1>
<app-home></app-home>
<div class="text-center my-4">
<a [routerLink]="['/']" class="display-4 text-decoration-none fw-bold text-primary hover:text-decoration-underline">
Homes
</a>
</div>
<router-outlet></router-outlet>
</div>

@ -1,11 +1,11 @@
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import {RouterLink, RouterOutlet} from '@angular/router';
import {HomeComponent} from './home/home.component';
@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet, HomeComponent],
imports: [RouterOutlet, HomeComponent, RouterLink],
templateUrl: './app.component.html',
styleUrl: './app.component.css'
})

@ -1,3 +1,17 @@
import { Routes } from '@angular/router';
import {HomeComponent} from './home/home.component';
import {DetailsComponent} from './details/details.component';
export const routes: Routes = [];
export const routes: Routes = [
{
path: '',
component: HomeComponent,
title: 'Home page',
},
{
path: 'details/:id',
component: DetailsComponent,
title: 'Home Details',
},
];

@ -1 +1,41 @@
<p>details works!</p>
<article class="container my-5">
<div class="row">
<div class="col-md-6">
<img
class="img-fluid rounded shadow mb-4"
style="width: 100%; height: 385px; object-fit: cover;"
[src]="housingLocation?.photo"
alt="Exterior photo of {{ housingLocation?.name }}"
crossorigin
/>
</div>
<div class="col-md-6">
<section class="mb-4">
<h2 class="display-5 fw-bold text-primary mb-3">{{ housingLocation?.name }}</h2>
<p class="fs-4 text-secondary">{{ housingLocation?.city }}, {{ housingLocation?.state }}</p>
</section>
<section class="bg-light p-4 rounded shadow-sm">
<h2 class="h4 mb-4 border-bottom pb-2">About this housing location</h2>
<ul class="list-unstyled">
<li class="mb-3 d-flex align-items-center">
<i class="bi bi-building me-2"></i>
<span class="fs-5">Units available: <strong>{{ housingLocation?.availableUnits }}</strong></span>
</li>
<li class="mb-3 d-flex align-items-center">
<i class="bi bi-wifi me-2"></i>
<span class="fs-5">WiFi:
<strong>{{ housingLocation?.wifi ? 'Yes' : 'No' }}</strong>
</span>
</li>
<li class="mb-3 d-flex align-items-center">
<i class="bi bi-water me-2"></i>
<span class="fs-5">Laundry:
<strong>{{ housingLocation?.laundry ? 'Yes' : 'No' }}</strong>
</span>
</li>
</ul>
</section>
</div>
</div>
</article>

@ -1,4 +1,7 @@
import { Component } from '@angular/core';
import {Component, inject} from '@angular/core';
import {ActivatedRoute} from '@angular/router';
import {HousingService} from '../housing.service';
import {HousingLocation} from '../housing-location';
@Component({
selector: 'app-details',
@ -8,5 +11,12 @@ import { Component } from '@angular/core';
styleUrl: './details.component.css'
})
export class DetailsComponent {
route: ActivatedRoute = inject(ActivatedRoute);
housingService = inject(HousingService);
housingLocation: HousingLocation | undefined;
constructor() {
const housingLocationId = Number(this.route.snapshot.params['id']);
this.housingLocation = this.housingService.getHousingLocationById(housingLocationId);
}
}

@ -11,5 +11,6 @@
<div class="card-body">
<h2 class="card-title">{{ housingLocation.name }}</h2>
<p class="card-text">{{ housingLocation.city }}, {{ housingLocation.state }}</p>
<a [routerLink]="['/details', housingLocation.id]">Learn More</a>
</div>
</section>

@ -1,10 +1,13 @@
import {Component, Input} from '@angular/core';
import {HousingLocation} from '../housing-location';
import {RouterLink} from '@angular/router';
@Component({
selector: 'app-housing-location',
standalone: true,
imports: [],
imports: [
RouterLink
],
templateUrl: './housing-location.component.html',
styleUrl: './housing-location.component.css'
})