@@ -127,8 +127,6 @@ export class BookingPage implements OnInit { | |||||
this.selectedDate = this.bookingSeatsData[0].dateTime; | this.selectedDate = this.bookingSeatsData[0].dateTime; | ||||
console.log(this.bookingSeatsData); | |||||
} | } | ||||
@@ -132,7 +132,7 @@ export class ChatPage implements OnInit { | |||||
setTimeout(() => { | setTimeout(() => { | ||||
this.scrollToEnd(); | this.scrollToEnd(); | ||||
}, 500); | |||||
}, 300); | |||||
}, 200); | }, 200); | ||||
@@ -15,37 +15,76 @@ | |||||
<section class="match-card" [routerLink]="['/match-details']"> | <section class="match-card" [routerLink]="['/match-details']"> | ||||
<span class="format"> T20 Qualifiers </span> | <span class="format"> T20 Qualifiers </span> | ||||
<header> <h4> Kings XI Punjab v/s Mumbai Indians </h4> </header> | |||||
<header> <h4> {{ matchStats.homeTeam.teamName }} v/s {{ matchStats.awayTeam.teamName }} </h4> </header> | |||||
<p> <ion-icon src="assets/icons/helmet.svg"></ion-icon> Sehwag, KL Rahul </p> | <p> <ion-icon src="assets/icons/helmet.svg"></ion-icon> Sehwag, KL Rahul </p> | ||||
<p> <ion-icon name="baseball-outline"></ion-icon> <span> Pollard </span> </p> | <p> <ion-icon name="baseball-outline"></ion-icon> <span> Pollard </span> </p> | ||||
<section class="score-card"> | <section class="score-card"> | ||||
<div class="team"> | <div class="team"> | ||||
<header> <img src="assets/home-team/KXIP.svg"> <h5> Kings XI Punjab </h5> </header> | |||||
<div class="score"> 179/9 <span> (19.3) </span> </div> | |||||
<header> <img [src]="matchStats.homeTeam.teamLogo"> <h5> {{ matchStats.homeTeam.teamName }} </h5> </header> | |||||
<div class="score"> {{ matchStats.homeTeam.totalScore }}/{{ matchStats.homeTeam.totalWickets }} <span> ({{ matchStats.homeTeam.overs }}) </span> </div> | |||||
</div> | </div> | ||||
<div class="team"> | <div class="team"> | ||||
<header> <img src="assets/logos/mi.svg"> <h5> Mumbai Indians </h5> </header> | |||||
<div class="score"> 10/2 <span> (5.5) </span> </div> | |||||
<header> <img [src]="matchStats.awayTeam.teamLogo"> <h5> {{ matchStats.awayTeam.teamName }} </h5> </header> | |||||
<div class="score"> {{ matchStats.awayTeam.totalScore }}/{{ matchStats.awayTeam.totalWickets }} <span> ({{ matchStats.awayTeam.overs }}) </span> </div> | |||||
</div> | </div> | ||||
</section> | </section> | ||||
</section> | </section> | ||||
<ul class="statistical-pages"> | <ul class="statistical-pages"> | ||||
<li> | |||||
<label> Scorecard </label> | |||||
<button> + </button> | |||||
</li> | |||||
<li class="collapsible-card" [ngClass]="{'active' : showScoreCard}"> | |||||
<header> | |||||
<label> Scorecard </label> | |||||
<button (click)="showScoreCard = !showScoreCard"> | |||||
<span *ngIf="!showScoreCard"> + </span> | |||||
<span *ngIf="showScoreCard"> - </span> | |||||
</button> | |||||
</header> | |||||
<section class="card"> | |||||
<table> | |||||
<thead> | |||||
<tr> | |||||
<th> | |||||
Player | |||||
</th> | |||||
<th> | |||||
Score | |||||
</th> | |||||
<th> | |||||
Balls | |||||
</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr *ngFor="let player of matchStats.awayTeam.batting"> | |||||
<td> | |||||
{{ player.name }} <br> | |||||
<span> {{ player.wicketTo }} </span> | |||||
</td> | |||||
<td> | |||||
{{ player.score }} | |||||
</td> | |||||
<td> | |||||
{{ player.ballsPlayed }} | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
<button class="view-more-button"> View More </button> | |||||
</section> | |||||
<li> | |||||
<label> Statistical Analysis </label> | |||||
<button> + </button> | |||||
</li> | </li> | ||||
<li> | |||||
<label> Matches </label> | |||||
<button> + </button> | |||||
<li class="collapsible-card"> | |||||
<header> | |||||
<label> Matches </label> | |||||
<button> + </button> | |||||
</header> | |||||
</li> | </li> | ||||
</ul> | </ul> | ||||
@@ -8,6 +8,10 @@ ion-content { | |||||
background: linear-gradient(90deg, $dark-blue-shade1 50%, $dark-blue-shade2); | background: linear-gradient(90deg, $dark-blue-shade1 50%, $dark-blue-shade2); | ||||
} | } | ||||
.content-container { | |||||
padding-bottom: 50px; | |||||
} | |||||
.heading-holder { | .heading-holder { | ||||
margin-bottom: 2.7rem; | margin-bottom: 2.7rem; | ||||
padding: 0px 7%; | padding: 0px 7%; | ||||
@@ -129,39 +133,113 @@ ion-content { | |||||
width: 86%; | width: 86%; | ||||
margin: 0 auto; | margin: 0 auto; | ||||
li { | |||||
display: flex; | |||||
width: 100%; | |||||
background: linear-gradient(90deg, darken($dark-blue-shade2, 10%) 50%, $dark-blue-shade2); | |||||
.collapsible-card { | |||||
margin: 30px auto; | margin: 30px auto; | ||||
border-radius: 10px; | |||||
padding: 0px 15px; | |||||
justify-content: space-between; | |||||
border-radius: 10px; | |||||
overflow: hidden; | |||||
background: linear-gradient(90deg, darken($dark-blue-shade2, 10%) 50%, $dark-blue-shade2); | |||||
box-shadow: 0px 0px 5px darken($dark-blue-shade2, 30%); | |||||
height: 50px; | height: 50px; | ||||
align-items: center; | |||||
label { | |||||
-webkit-perspective: 1200px; | |||||
-moz-perspective: 1200px; | |||||
-ms-perspective: 1200px; | |||||
perspective: 1200px; | |||||
&.active { | |||||
height: auto; | |||||
header { | |||||
border-bottom: 1px solid rgba(white, 0.1); | |||||
} | |||||
} | |||||
header { | |||||
margin: 0 auto; | |||||
display: flex; | |||||
width: calc(100% - 30px); | |||||
justify-content: space-between; | |||||
height: 50px; | |||||
align-items: center; | |||||
label { | |||||
font-size: 1rem; | |||||
color: white; | |||||
font-weight: 500; | |||||
letter-spacing: 0.5px; | |||||
opacity: 0.9; | |||||
} | |||||
button { | |||||
border-radius: 50%; | |||||
background-color: $green; | |||||
height: 30px; | |||||
width: 30px; | |||||
font-size: 24px; | |||||
color: white; | |||||
} | |||||
} | |||||
.view-more-button { | |||||
display: block; | |||||
width: 100%; | |||||
border-radius: 7px; | |||||
background-color: $pink; | |||||
color: white; | |||||
font-size: 1rem; | font-size: 1rem; | ||||
height: 40px; | |||||
margin-top: 15px; | |||||
box-shadow: 0px 0px 5px 2px darken($dark-blue-shade2, 10%); | |||||
} | |||||
.card { | |||||
width: 100%; | |||||
padding: 15px; | |||||
} | |||||
table { | |||||
width: 100%; | |||||
color: white; | color: white; | ||||
font-weight: 500; | |||||
letter-spacing: 0.5px; | |||||
opacity: 0.9; | |||||
font-size: 1rem; | |||||
thead { | |||||
line-height: 2; | |||||
} | |||||
} | } | ||||
button { | |||||
border-radius: 50%; | |||||
background-color: $green; | |||||
height: 30px; | |||||
width: 30px; | |||||
font-size: 24px; | |||||
color: white; | |||||
tr { | |||||
&:last-child { | |||||
td { | |||||
padding-bottom: 0px; | |||||
} | |||||
} | |||||
td { | |||||
overflow: hidden; | |||||
width: 100%; | |||||
padding-bottom: 15px; | |||||
span { | |||||
font-size: 0.8rem; | |||||
color: rgba(white, 0.5); | |||||
} | |||||
&:nth-child(1) { | |||||
width: 60%; | |||||
} | |||||
&:nth-child(2) { | |||||
width: 20%; | |||||
} | |||||
&:nth-child(3) { | |||||
width: 20%; | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
ion-fab { | |||||
transform: translateX(-30%); | |||||
} | |||||
.chat-button { | .chat-button { | ||||
--background: #d73e53; | --background: #d73e53; |
@@ -1,6 +1,34 @@ | |||||
import { Component, OnInit } from '@angular/core'; | import { Component, OnInit } from '@angular/core'; | ||||
import { ModalController } from '@ionic/angular'; | import { ModalController } from '@ionic/angular'; | ||||
import * as moment from 'moment'; | |||||
import { ChatPage } from '../chat/chat.page'; | import { ChatPage } from '../chat/chat.page'; | ||||
import * as faker from 'faker'; | |||||
import { Router } from '@angular/router'; | |||||
type IscoreCard = { | |||||
teamName: string, | |||||
teamLogo: string, | |||||
batting: Array<{ | |||||
name: string, | |||||
jersey: number, | |||||
score: number, | |||||
ballsPlayed: number, | |||||
wicketTo?: string, | |||||
boundaries: number, | |||||
sixes: number | |||||
}>, | |||||
bowling: Array<{ | |||||
name: string, | |||||
jersey: number, | |||||
runs: number, | |||||
overs: number, | |||||
wickets: number | |||||
}>, | |||||
totalScore: number, | |||||
totalWickets: number, | |||||
overs: number, | |||||
extras: number | |||||
} | |||||
@Component({ | @Component({ | ||||
selector: 'app-live', | selector: 'app-live', | ||||
@@ -8,12 +36,218 @@ import { ChatPage } from '../chat/chat.page'; | |||||
styleUrls: ['./live.page.scss'], | styleUrls: ['./live.page.scss'], | ||||
}) | }) | ||||
export class LivePage implements OnInit { | export class LivePage implements OnInit { | ||||
showScoreCard: boolean = true; | |||||
matchStats: { | |||||
homeTeam: IscoreCard, | |||||
awayTeam: IscoreCard | |||||
}; | |||||
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.svg', | |||||
}, { | |||||
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.svg' | |||||
}, { | |||||
name: 'Chidambaram Stadium', | |||||
sideView: 'https://sportzwiki.com/wp-content/uploads/2019/03/11.jpg', | |||||
topView: 'assets/home-team/stadium-tv.svg', | |||||
}]; | |||||
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( | constructor( | ||||
public modalController: ModalController | |||||
public modalController: ModalController, | |||||
private router: Router | |||||
) { } | ) { } | ||||
getFormattedDateTime(dateTime: Date) { | |||||
return moment(dateTime).format('DD MMM'); | |||||
} | |||||
ngOnInit() { | 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) + 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.matchStats = { | |||||
homeTeam: { | |||||
teamName: 'KXIP', | |||||
teamLogo: 'assets/home-team/KXIP.svg', | |||||
batting: [{ | |||||
name: 'V Sehwag', | |||||
jersey: 44, | |||||
score: 62, | |||||
ballsPlayed: 30, | |||||
wicketTo: 'c Sachin, b D.Steyn', | |||||
boundaries: 8, | |||||
sixes: 4, | |||||
}, { | |||||
name: 'KL Rahul', | |||||
jersey: 10, | |||||
score: 85, | |||||
ballsPlayed: 80, | |||||
boundaries: 10, | |||||
sixes: 3, | |||||
}, { | |||||
name: 'G Maxwell', | |||||
jersey: 11, | |||||
score: 10, | |||||
ballsPlayed: 10, | |||||
boundaries: 0, | |||||
sixes: 1, | |||||
}], | |||||
bowling: [{ | |||||
name: 'Harmeet Singh', | |||||
jersey: 13, | |||||
runs: 22, | |||||
overs: 2, | |||||
wickets: 1 | |||||
}, { | |||||
name: 'Mishra', | |||||
jersey: 25, | |||||
runs: 10, | |||||
overs: 1, | |||||
wickets: 0 | |||||
}], | |||||
totalScore: 157, | |||||
overs: 20, | |||||
extras: 0, | |||||
totalWickets: 1, | |||||
}, | |||||
awayTeam : { | |||||
teamName: 'MI', | |||||
teamLogo: 'assets/logos/mi.svg', | |||||
batting: [{ | |||||
name: 'S Tendulkar', | |||||
jersey: 10, | |||||
score: 10, | |||||
ballsPlayed: 12, | |||||
wicketTo: 'b H.Singh', | |||||
boundaries: 0, | |||||
sixes: 1, | |||||
}, { | |||||
name: 'K Pollard', | |||||
jersey: 22, | |||||
score: 44, | |||||
ballsPlayed: 11, | |||||
boundaries: 1, | |||||
sixes: 5, | |||||
}, { | |||||
name: 'D Bravo', | |||||
jersey: 38, | |||||
score: 5, | |||||
ballsPlayed: 3, | |||||
boundaries: 1, | |||||
sixes: 0, | |||||
}], | |||||
bowling: [{ | |||||
name: 'D Steyn', | |||||
jersey: 12, | |||||
runs: 55, | |||||
overs: 4, | |||||
wickets: 1 | |||||
}, { | |||||
name: 'D Bravo', | |||||
jersey: 38, | |||||
runs: 40, | |||||
overs: 4, | |||||
wickets: 0 | |||||
}, { | |||||
name: 'S Tendulkar', | |||||
jersey: 10, | |||||
runs: 25, | |||||
overs: 4, | |||||
wickets: 0 | |||||
}, { | |||||
name: 'Trent Boult', | |||||
jersey: 17, | |||||
runs: 37, | |||||
overs: 4, | |||||
wickets: 0 | |||||
}], | |||||
totalScore: 60, | |||||
overs: 3.2, | |||||
extras: 1, | |||||
totalWickets: 1, | |||||
} | |||||
} | |||||
} | } | ||||
async presentChatModal() { | async presentChatModal() { | ||||
@@ -24,4 +258,8 @@ export class LivePage implements OnInit { | |||||
return await modal.present(); | return await modal.present(); | ||||
} | } | ||||
showBookingDetails(matchData) { | |||||
this.router.navigate(['/booking-details' , { matchData: JSON.stringify(matchData) }]); | |||||
} | |||||
} | } |