import { Component, OnInit, ViewChild } from '@angular/core'; import { IonSlides } from '@ionic/angular'; import * as faker from 'faker'; import * as moment from 'moment'; import { Router } from '@angular/router'; @Component({ selector: 'app-booking', templateUrl: './booking.page.html', styleUrls: ['./booking.page.scss'], }) export class BookingPage implements OnInit { @ViewChild('slides') slides: IonSlides; selectedDate: Date; teams = [{ name: 'RCB', image: 'https://i.pinimg.com/originals/4f/f9/99/4ff99925fd51296daf76425b11c04195.jpg' }, { name: 'MI', image: 'assets/logos/mi.svg', }, { name: 'CSK', image: 'https://www.searchpng.com/wp-content/uploads/2019/02/Chennai-Super-Kings-Logo-PNG-Image-.png' }]; stadiums = [{ name: 'Chinnaswamy', sideView: 'https://www.royalchallengers.com/PRRCB01/public/styles/1061x767_landscape/public/2020-04/275679.jpg?h=61617f72&itok=6xKgHpE-', topView: 'assets/home-team/stadium-tv.png', }, { name: 'IS Bindra', sideView: 'https://5.imimg.com/data5/VO/UB/MY-3103550/ae-cricket-stadium-lighting-500x500.jpg', topView: 'assets/home-team/stadium-tv.png' }, { name: 'Chidambaram Stadium', sideView: 'https://sportzwiki.com/wp-content/uploads/2019/03/11.jpg', topView: 'assets/home-team/stadium-tv.png', }]; slideOpts = { slidesPerView: 1.5, spaceBetween: 15, initialSlide: 0, centeredSlides: true, simulateTouch: false, followFinger: false, }; bookingSeatsData: Array<{ dateTime: Date, staduim: { name: string, topView: string, sideView: string, }, matchType: string, matchDetails: { home: { name: string, image: string, }, away: { name: string, image: string, } }, seatsAvailable: Array<{ stand: 'Grand' | 'Pavilion' | 'First' | 'Second', seats: Array<{ id: number | string, price: number }> }> }> = []; constructor( private router: Router ) { } getFormattedDateTime(dateTime: Date) { return moment(dateTime).format('DD MMM'); } ngOnInit() { for (let i = 0; i < 3; i += 1) { this.bookingSeatsData.push({ dateTime: faker.date.future(), staduim : this.stadiums[i], matchType: 'T20 League', matchDetails: { home: i !==1 ? this.teams[i] : { name: 'KXIP', image: 'assets/home-team/KXIP.svg' }, away: i ===1 ? this.teams[i] : { name: 'KXIP', image: 'assets/home-team/KXIP.svg' } }, seatsAvailable: [{ stand: 'Grand', seats: [], }, { stand: 'Pavilion', seats: [], }, { stand: 'First', seats: [], }, { stand: 'Second', seats: [], }] }); } for (let i = 0; i < this.bookingSeatsData.length; i += 1) { for (let j = 0; j < this.bookingSeatsData[i].seatsAvailable.length; j += 1) { let price = faker.commerce.price(); let randomNumber = Math.random() * (15 - 0); for (let k = 0; k < randomNumber; k += 1) { this.bookingSeatsData[i].seatsAvailable[j].seats.push({ id: this.bookingSeatsData[i].seatsAvailable[j].stand + '##' + k.toString(), price }); } } } this.selectedDate = this.bookingSeatsData[0].dateTime; } getEventDateTime(dateTime: Date) { return moment(dateTime).format('ddd, MMM DD YYYY hh:mm a'); } selectMatchDate() { this.slides.getActiveIndex().then((index) => this.selectedDate = this.bookingSeatsData[index].dateTime); } selectMatchCard(index: number) { this.slides.slideTo(index); } showBookingDetails(matchData) { this.router.navigate(['/booking-details' , { matchData: JSON.stringify(matchData) }]); } }