💄 Trip manage places: warn on used place toggle

This commit is contained in:
itskovacs 2025-10-28 18:15:52 +01:00
parent ed39da36c0
commit 4c8c505e5e
2 changed files with 16 additions and 1 deletions

View File

@ -1080,7 +1080,10 @@ export class TripComponent implements AfterViewInit {
appendTo: 'body',
closable: true,
width: '50vw',
data: { places: this.places },
data: {
places: this.places,
usedPlaces: this.placesUsedInTable,
},
breakpoints: {
'960px': '80vw',
'640px': '90vw',

View File

@ -24,11 +24,13 @@ export class TripPlaceSelectModalComponent {
places: Place[] = [];
displayedPlaces: Place[] = [];
usedPlacesID: Set<number>;
constructor(
private apiService: ApiService,
private ref: DynamicDialogRef,
private config: DynamicDialogConfig,
private utilsService: UtilsService,
) {
this.apiService.getPlaces().subscribe({
next: (places) => {
@ -38,6 +40,7 @@ export class TripPlaceSelectModalComponent {
});
const places: Place[] | undefined = this.config.data?.places;
this.usedPlacesID = this.config.data?.usedPlaces;
if (places) {
this.selectedPlaces = [...places];
this.selectedPlacesID = places.map((p) => p.id);
@ -60,6 +63,15 @@ export class TripPlaceSelectModalComponent {
togglePlace(p: Place) {
if (this.selectedPlacesID.includes(p.id)) {
if (this.usedPlacesID.has(p.id)) {
this.utilsService.toast(
'error',
'Place in use',
'Place is currently used in your plans, remove it before unselecting it',
4000,
);
return;
}
this.selectedPlacesID.splice(this.selectedPlacesID.indexOf(p.id), 1);
this.selectedPlaces.splice(
this.selectedPlaces.findIndex((place) => place.id === p.id),