@@ -80,11 +80,52 @@ | |||||
</li> | </li> | ||||
<li class="collapsible-card"> | |||||
<li class="collapsible-card" [ngClass]="{'active' : showFixtures}"> | |||||
<header> | <header> | ||||
<label> Matches </label> | |||||
<button> + </button> | |||||
</header> | |||||
<label> Fixtures </label> | |||||
<button (click)="showFixtures = !showFixtures"> | |||||
<span *ngIf="!showFixtures"> + </span> | |||||
<span *ngIf="showFixtures"> - </span> | |||||
</button> | |||||
</header> | |||||
<section class="card"> | |||||
<ion-slides #slides [options]="slideOpts" (ionSlideDidChange)="selectIndex()"> | |||||
<ion-slide *ngFor="let matchDay of bookingSeatsData" | |||||
(click)="showBookingDetails(matchDay)"> | |||||
<div class="image-holder"> | |||||
<figure> | |||||
<img [src]="matchDay.staduim.sideView"> | |||||
</figure> | |||||
</div> | |||||
<section class="content"> | |||||
<section class="match-day-card"> | |||||
<div class="teams"> | |||||
<img [src]="matchDay.matchDetails.home.image" alt=""> | |||||
<span></span> | |||||
<img [src]="matchDay.matchDetails.away.image" alt=""> | |||||
</div> | |||||
<p class="event-details"> | |||||
{{ getEventDateTime(matchDay.dateTime) }} <br> | |||||
{{ matchDay.staduim.name }} Stadium | |||||
</p> | |||||
<h4> {{ matchDay.matchDetails.home.name }} v/s {{ matchDay.matchDetails.away.name }}</h4> | |||||
<h5> {{ matchDay.matchType }} </h5> | |||||
</section> | |||||
</section> | |||||
</ion-slide> | |||||
</ion-slides> | |||||
<button class="view-more-button" (click)="showBookingDetailsByIndex()"> | |||||
Book Now | |||||
</button> | |||||
</section> | |||||
</li> | </li> | ||||
</ul> | </ul> | ||||
@@ -1,3 +1,4 @@ | |||||
$lumous-blue: #1a2389; | |||||
$dark-blue-shade1: #24367c; | $dark-blue-shade1: #24367c; | ||||
$dark-blue-shade2: #263982; | $dark-blue-shade2: #263982; | ||||
$green: #01b868; | $green: #01b868; | ||||
@@ -188,7 +189,6 @@ ion-content { | |||||
color: white; | color: white; | ||||
font-size: 1rem; | font-size: 1rem; | ||||
height: 40px; | height: 40px; | ||||
margin-top: 15px; | |||||
box-shadow: 0px 0px 5px 2px darken($dark-blue-shade2, 10%); | box-shadow: 0px 0px 5px 2px darken($dark-blue-shade2, 10%); | ||||
} | } | ||||
@@ -203,17 +203,14 @@ ion-content { | |||||
font-size: 1rem; | font-size: 1rem; | ||||
thead { | thead { | ||||
line-height: 2; | |||||
} | |||||
} | |||||
tr { | |||||
&:last-child { | |||||
td { | |||||
padding-bottom: 0px; | |||||
th { | |||||
padding-bottom: 20px; | |||||
} | } | ||||
} | } | ||||
} | |||||
tr { | |||||
td { | td { | ||||
overflow: hidden; | overflow: hidden; | ||||
width: 100%; | width: 100%; | ||||
@@ -243,4 +240,126 @@ ion-content { | |||||
.chat-button { | .chat-button { | ||||
--background: #d73e53; | --background: #d73e53; | ||||
} | |||||
ion-slides { | |||||
padding: 30px 0 20px 0; | |||||
position: relative; | |||||
left: 0; | |||||
top: 0; | |||||
z-index: 1; | |||||
overflow: visible; | |||||
height: 40vh; | |||||
overflow: hidden; | |||||
ion-slide { | |||||
display: block; | |||||
overflow: visible; | |||||
text-align: left; | |||||
height: 80%; | |||||
position: relative; | |||||
transform: scale(0.9); | |||||
background-color: transparent; | |||||
transition: transform 0.3s; | |||||
&.swiper-slide-active { | |||||
transform: scale(1); | |||||
} | |||||
} | |||||
.image-holder { | |||||
position: relative; | |||||
height: 100%; | |||||
overflow: hidden; | |||||
border-radius: 7px; | |||||
box-shadow: 0px 10px 25px -7px darken($lumous-blue, 80%); | |||||
figure { | |||||
margin: 0; | |||||
display: block; | |||||
width: 100%; | |||||
height: 100%; | |||||
filter: brightness(60%); | |||||
transition: filter 0.3s; | |||||
border: 0px; | |||||
padding: 0; | |||||
border-radius: 7px; | |||||
overflow: hidden; | |||||
img { | |||||
height: 100%; | |||||
object-fit: cover; | |||||
display: block; | |||||
width: 100%; | |||||
} | |||||
} | |||||
} | |||||
.content { | |||||
height: auto; | |||||
position: relative; | |||||
transform: translateY(-80%); | |||||
box-shadow: 0px 20px 25px -10px darken($lumous-blue, 80%); | |||||
background-color: white; | |||||
width: 90%; | |||||
margin: 0 auto; | |||||
border-radius: 7px; | |||||
overflow: visible; | |||||
z-index: 1; | |||||
padding-bottom: 10px; | |||||
opacity: 0.8; | |||||
} | |||||
.teams { | |||||
display: flex; | |||||
justify-content: space-between; | |||||
width: 130px; | |||||
margin: 0 auto -25px auto; | |||||
height: 50px; | |||||
border-radius: 30px; | |||||
background-color: lighten(#cecece, 10%); | |||||
align-items: center; | |||||
padding: 0 15px; | |||||
position: relative; | |||||
transform: translateY(-25px); | |||||
z-index: 1; | |||||
span { | |||||
font-size: 1rem; | |||||
width: 12px; | |||||
height: 3px; | |||||
background-color: darken(#cecece, 15%); | |||||
} | |||||
img { | |||||
width: 33px; | |||||
height: 33px; | |||||
border-radius: 50%; | |||||
} | |||||
} | |||||
p, h4, h5 { | |||||
margin: 0; | |||||
padding: 0 10%; | |||||
text-align: center; | |||||
} | |||||
.event-details { | |||||
margin: 20px 0 5px; | |||||
color: darken(#cecece, 30%); | |||||
font-size: 0.8rem; | |||||
font-weight: 500; | |||||
} | |||||
h4 { | |||||
color: darken(#cecece, 50%); | |||||
font-size: 1.1rem; | |||||
line-height: 1.5; | |||||
} | |||||
h5 { | |||||
color: darken(#cecece, 50%); | |||||
font-size: 0.9rem; | |||||
line-height: 1.5; | |||||
} | |||||
} | } |
@@ -1,5 +1,5 @@ | |||||
import { Component, OnInit } from '@angular/core'; | |||||
import { ModalController } from '@ionic/angular'; | |||||
import { Component, OnInit, ViewChild } from '@angular/core'; | |||||
import { IonSlides, ModalController } from '@ionic/angular'; | |||||
import * as moment from 'moment'; | import * as moment from 'moment'; | ||||
import { ChatPage } from '../chat/chat.page'; | import { ChatPage } from '../chat/chat.page'; | ||||
import * as faker from 'faker'; | import * as faker from 'faker'; | ||||
@@ -36,7 +36,21 @@ type IscoreCard = { | |||||
styleUrls: ['./live.page.scss'], | styleUrls: ['./live.page.scss'], | ||||
}) | }) | ||||
export class LivePage implements OnInit { | export class LivePage implements OnInit { | ||||
@ViewChild('slides') slides: IonSlides; | |||||
showScoreCard: boolean = true; | showScoreCard: boolean = true; | ||||
showFixtures: boolean = true; | |||||
selectedIndex: number = 0; | |||||
slideOpts = { | |||||
slidesPerView: 1.5, | |||||
spaceBetween: 15, | |||||
initialSlide: 0, | |||||
centeredSlides: true, | |||||
simulateTouch: false, | |||||
followFinger: false, | |||||
}; | |||||
matchStats: { | matchStats: { | ||||
homeTeam: IscoreCard, | homeTeam: IscoreCard, | ||||
@@ -104,6 +118,14 @@ export class LivePage implements OnInit { | |||||
return moment(dateTime).format('DD MMM'); | return moment(dateTime).format('DD MMM'); | ||||
} | } | ||||
getEventDateTime(dateTime: Date) { | |||||
return moment(dateTime).format('ddd, MMM DD YYYY hh:mm a'); | |||||
} | |||||
selectIndex() { | |||||
this.slides.getActiveIndex().then((index) => this.selectedIndex = index); | |||||
} | |||||
ngOnInit() { | ngOnInit() { | ||||
for (let i = 0; i < 3; i += 1) { | for (let i = 0; i < 3; i += 1) { | ||||
this.bookingSeatsData.push({ | this.bookingSeatsData.push({ | ||||
@@ -262,4 +284,9 @@ export class LivePage implements OnInit { | |||||
this.router.navigate(['/booking-details' , { matchData: JSON.stringify(matchData) }]); | this.router.navigate(['/booking-details' , { matchData: JSON.stringify(matchData) }]); | ||||
} | } | ||||
showBookingDetailsByIndex() { | |||||
let index = this.selectedIndex; | |||||
this.router.navigate(['/booking-details' , { matchData: JSON.stringify(this.bookingSeatsData[index]) }]); | |||||
} | |||||
} | } |