Compare commits

...

2 Commits

Author SHA1 Message Date
54c7e09687 chore(deps): update devdependencies (non-major)
Some checks failed
renovate/artifacts Artifact file update failure
Build / Build and analyze (pull_request) Successful in 1m37s
2024-10-22 06:01:01 +00:00
26ea503cbd
feat: update hotel service to use observables
All checks were successful
Build / Build and analyze (push) Successful in 1m41s
2024-10-22 07:31:24 +02:00
5 changed files with 13 additions and 22 deletions

BIN
bun.lockb

Binary file not shown.

@ -28,7 +28,7 @@
"@angular/compiler-cli": "^18.2.3", "@angular/compiler-cli": "^18.2.3",
"@types/jasmine": "~5.1.0", "@types/jasmine": "~5.1.0",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"jasmine-core": "~5.1.0", "jasmine-core": "~5.4.0",
"karma": "~6.4.0", "karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0", "karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0", "karma-coverage": "~2.2.0",
@ -36,6 +36,6 @@
"karma-jasmine-html-reporter": "~2.1.0", "karma-jasmine-html-reporter": "~2.1.0",
"postcss": "^8.4.41", "postcss": "^8.4.41",
"tailwindcss": "^3.4.10", "tailwindcss": "^3.4.10",
"typescript": "~5.5.2" "typescript": "~5.6.0"
} }
} }

@ -1,10 +1,11 @@
import { Injectable } from "@angular/core"; import { Injectable } from "@angular/core";
import { Hotel } from "../../HotelItem/hotel"; import { Hotel } from "../../HotelItem/hotel";
import { from, Observable } from "rxjs";
@Injectable() @Injectable()
export class HotelService { export class HotelService {
public getHotels(): Hotel[] { public getHotels(): Observable<Hotel> {
return [ return from([
{ {
"hotelId": 1, "hotelId": 1,
"hotelName": "Buea süßes Leben", "hotelName": "Buea süßes Leben",
@ -37,6 +38,6 @@ export class HotelService {
"imageUrl": "assets/img/4.jpg", "imageUrl": "assets/img/4.jpg",
"rating": 2.5 "rating": 2.5
} }
]; ]);
} }
} }

@ -1,11 +1,7 @@
<h1>{{'hello' | uppercase | text}}</h1> <h1>{{'hello' | uppercase | text}}</h1>
<app-search [(input)]="search"></app-search> <app-search [(input)]="search"></app-search>
@for (hotel of hotels; track hotel.hotelId) { @for (let hotel of foundHotels | async) {
@let should_show = search === "" || hotel.hotelName.includes(search); @if (search === "") {
@if (should_show) {
<app-hotel-item [hotel]="hotel"></app-hotel-item> <app-hotel-item [hotel]="hotel"></app-hotel-item>
} }
} }
@if (!has_hotels()) {
<p>No hotels found</p>
}

@ -1,7 +1,7 @@
import { Component, input } from '@angular/core'; import { Component, input } from '@angular/core';
import { HotelItem } from './HotelItem/HotelItem.component'; import { HotelItem } from './HotelItem/HotelItem.component';
import { SearchComponent } from './Search/search.component'; import { SearchComponent } from './Search/search.component';
import { UpperCasePipe } from '@angular/common'; import { AsyncPipe, UpperCasePipe } from '@angular/common';
import { TextPipe } from '../text.pipe'; import { TextPipe } from '../text.pipe';
import { HotelService } from './Parent/services/hotel.service'; import { HotelService } from './Parent/services/hotel.service';
import { inject } from '@angular/core'; import { inject } from '@angular/core';
@ -10,7 +10,7 @@ import { filter, map, Observable, range } from 'rxjs';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
standalone: true, standalone: true,
imports: [HotelItem, SearchComponent, UpperCasePipe, TextPipe], imports: [HotelItem, SearchComponent, UpperCasePipe, TextPipe, AsyncPipe],
templateUrl: './app.component.html', templateUrl: './app.component.html',
providers: [HotelService], providers: [HotelService],
styleUrl: './app.component.css' styleUrl: './app.component.css'
@ -37,15 +37,9 @@ export class AppComponent {
console.log(this.search); console.log(this.search);
} }
public has_hotels(): boolean {
for (let hotel of this.hotels) {
if (hotel.hotelName.includes(this.search)) {
return true;
}
}
return false;
}
public hotels = this.hotelService.getHotels(); public hotels = this.hotelService.getHotels();
public foundHotels = this.hotels.pipe(
filter((hotel) => hotel.hotelName.includes(this.search)),
)
} }