Refactor SelectedSeatsService to use signals
Replaces internal array state with Angular signals for selected seats. Updates methods to use signal API and adds a new method to filter selected seats by category.
This commit is contained in:
@@ -1,30 +1,31 @@
|
|||||||
import {Injectable} from '@angular/core';
|
import { Injectable, signal } from '@angular/core';
|
||||||
import {Sitzplatz} from '@infinimotion/model-frontend';
|
import {Sitzplatz} from '@infinimotion/model-frontend';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class SelectedSeatsService {
|
export class SelectedSeatsService {
|
||||||
private selectedSeatsList: Sitzplatz[] = [];
|
private selectedSeatsSignal = signal<Sitzplatz[]>([]);
|
||||||
|
|
||||||
|
get selectedSeats() {
|
||||||
|
return this.selectedSeatsSignal;
|
||||||
|
}
|
||||||
|
|
||||||
pushSelectedSeat(selectedSeat: Sitzplatz): void {
|
pushSelectedSeat(selectedSeat: Sitzplatz): void {
|
||||||
this.selectedSeatsList.push(selectedSeat);
|
this.selectedSeatsSignal.update(seats => [...seats, selectedSeat]);
|
||||||
//console.log("Added" + selectedSeat);
|
|
||||||
//console.log(this.selectedSeatsList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
removeSelectedSeat(selectedSeat: Sitzplatz): void {
|
removeSelectedSeat(selectedSeat: Sitzplatz): void {
|
||||||
let removeId = this.selectedSeatsList.indexOf(selectedSeat);
|
this.selectedSeatsSignal.update(seats =>
|
||||||
|
seats.filter(seat => seat.id !== selectedSeat.id)
|
||||||
if(removeId !== -1) {
|
);
|
||||||
this.selectedSeatsList.splice(removeId, 1)
|
|
||||||
}
|
|
||||||
//console.log("Removed" + selectedSeat)
|
|
||||||
//console.log(this.selectedSeatsList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getSelectedSeatsList(): Sitzplatz[] {
|
getSelectedSeatsList(): Sitzplatz[] {
|
||||||
return this.selectedSeatsList;
|
return this.selectedSeatsSignal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSelectedSeatsByCategory(categoryId: number): Sitzplatz[] {
|
||||||
|
return this.selectedSeatsSignal().filter(seat => seat.row.category.id === categoryId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user