Skip to content

Commit

Permalink
chore: merge sprint-2
Browse files Browse the repository at this point in the history
  • Loading branch information
Kleostro committed Sep 2, 2024
1 parent 83263c3 commit 41184b0
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 21 deletions.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@
"@types/geojson": "^7946.0.14",
"@types/jest": "^29.5.12",
"@types/maplibre-gl": "^1.14.0",
"chart.js": "^4.4.4",
"eslint-plugin-unused-imports": "^4.1.3",
"express": "^4.18.2",
"geo-tz": "^8.0.2",
"jest": "^29.7.0",
"jest-preset-angular": "^14.2.2",
"maplibre-gl": "^4.5.2",
Expand Down
20 changes: 7 additions & 13 deletions src/app/admin/components/carriage/carriage.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
}
</div>

<div class="car-bottom">
<div class="car-bottom" [class]="!isInteractive() ? 'disabled' : ''">
<div class="seats">
@if (seatsSchema(); as seatsSchema) {
<div class="right-seats">
Expand All @@ -29,20 +29,15 @@
@for (rightSeat of rightRow; let index = $index; track index) {
@let seatNumber = firstSeat() + rightSeat;
<app-seat
[seatNumber]="seatNumber"
[classes]="[
'right',
i === seatsSchema.rightSeats.length - 1 ? 'first-seat' : '',
isInteractive() ? 'interactive' : '',
isOccupiedSeat(seatNumber) ? 'occupied-seat' : 'free-seat',
seatService.selectedSeat$$() === seatNumber ? 'selected-seat' : '',
seatService.bookedSeatNumber$$() === seatNumber ? 'occupied-seat' : '',
]"
(click)="
seatService.selectedSeat$$.set(seatNumber);
seatService.seatCarriageName$$.set(carriage.name);
seatService.seatCarriageNumber$$.set(carriageNumber())
"
[carriageName]="carriage.name"
[carriageNumber]="carriageNumber()"
[seatNumber]="seatNumber"
></app-seat>
}
</div>
Expand All @@ -56,16 +51,15 @@
@for (leftSeat of leftRow; track leftSeat) {
@let seatNumber = firstSeat() + leftSeat;
<app-seat
[seatNumber]="seatNumber"
[classes]="[
'left',
i === 0 ? 'first-seat' : '',
isInteractive() ? 'interactive' : '',
isOccupiedSeat(seatNumber) ? 'occupied-seat' : 'free-seat',
seatService.selectedSeat$$() === seatNumber ? 'selected-seat' : '',
seatService.bookedSeatNumber$$() === seatNumber ? 'occupied-seat' : '',
]"
(click)="seatService.selectedSeat$$.set(seatNumber)"
[carriageName]="carriage.name"
[carriageNumber]="carriageNumber()"
[seatNumber]="seatNumber"
></app-seat>
}
</div>
Expand Down
5 changes: 5 additions & 0 deletions src/app/admin/components/carriage/carriage.component.scss
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
display: flex;
flex-direction: column;
gap: 3rem;
justify-content: center;

width: 100%;
max-height: 20rem;
Expand Down Expand Up @@ -79,3 +80,7 @@
.right-line {
margin-left: 0.5rem;
}

.disabled {
pointer-events: none;
}
4 changes: 1 addition & 3 deletions src/app/admin/components/carriage/carriage.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { RippleModule } from 'primeng/ripple';
import { Carriage } from '@/app/api/models/carriage';

import { ModalService } from '../../../shared/services/modal/modal.service';
import { SeatService } from '../../services/seat/seat.service';
import createSeatsSchema from '../../utils/createSeatsSchema';
import { SeatComponent } from '../seat/seat.component';

Expand All @@ -26,12 +25,11 @@ export class CarriageComponent {
public firstSeat = input<number>(0);
public freeSeats = input<number | null>(null);
public occupiedSeats = input<number[]>([]);
public carriageNumber = input<number | null>(null);
public carriageNumber = input<number>(NaN);

public seatsSchema = computed(() => createSeatsSchema(this.carriage()));

public modalService = inject(ModalService);
public seatService = inject(SeatService);

@Output() public openEditModal: EventEmitter<Carriage> = new EventEmitter<Carriage>();

Expand Down
10 changes: 9 additions & 1 deletion src/app/admin/components/seat/seat.component.html
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
<div class="seat" [class]="classes()">{{ seatNumber() }}</div>
<div
class="seat"
[class]="classes()"
[class.selected-seat]="seatService.selectedSeat$$() === seatNumber()"
[class.booked-seat]="seatService.bookedSeatNumber$$() === seatNumber()"
(click)="seatService.selectSeat(seatNumber(), carriageName(), carriageNumber())"
>
{{ seatNumber() }}
</div>
6 changes: 3 additions & 3 deletions src/app/admin/components/seat/seat.component.scss
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
}
}

&.occupied-seat {
&.booked-seat {
&::before {
border-color: $occupied-seat-color;
}
Expand Down Expand Up @@ -128,7 +128,7 @@
}
}

&.occupied-seat {
&.booked-seat {
&::before {
border-color: $occupied-seat-color;
}
Expand Down Expand Up @@ -160,7 +160,7 @@
}
}

.occupied-seat {
.booked-seat {
pointer-events: none;
color: $black-100;
background-color: $occupied-seat-color;
Expand Down
7 changes: 6 additions & 1 deletion src/app/admin/components/seat/seat.component.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';

import { SeatService } from '../../services/seat/seat.service';

@Component({
selector: 'app-seat',
Expand All @@ -9,6 +11,9 @@ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class SeatComponent {
public seatService = inject(SeatService);
public carriageName = input<string>('');
public carriageNumber = input<number>(NaN);
public seatNumber = input<number>(NaN);
public classes = input<string[]>([]);
}
12 changes: 12 additions & 0 deletions src/app/admin/services/seat/seat.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,16 @@ export class SeatService {
});
}
}

public selectSeat(seatNumber: number, carriageName: string, carriageNumber: number): void {
if (this.selectedSeat$$() !== seatNumber) {
this.selectedSeat$$.set(seatNumber);
this.seatCarriageName$$.set(carriageName);
this.seatCarriageNumber$$.set(carriageNumber);
} else {
this.selectedSeat$$.set(null);
this.seatCarriageName$$.set(null);
this.seatCarriageNumber$$.set(null);
}
}
}

0 comments on commit 41184b0

Please sign in to comment.