@@ -20,7 +20,8 @@ | |||
<p> <ion-icon name="information-circle-outline"></ion-icon> {{ currentMatch.Matchdetail.Match.Number }} </p> | |||
<p> <ion-icon name="mic-outline"></ion-icon> {{ currentMatch.Matchdetail.Match.Coverage_level }} </p> | |||
<p> <ion-icon name="radio-outline"></ion-icon> {{ currentMatch.Matchdetail.Status }} </p> | |||
<p *ngIf="currentMatch.Matchdetail.Tosswonby"> {{ currentMatch.Matchdetail.Tosswonby }}, {{ currentMatch.Matchdetail.Toss_elected_to }} </p> | |||
<p *ngIf="currentMatch.Matchdetail.Tosswonby"> {{ currentMatch.Teams[currentMatch.Matchdetail.Tosswonby].Name_Short }} won the toss and elected to {{ currentMatch.Matchdetail.Toss_elected_to }} </p> | |||
<p *ngIf="currentMatch.Matchdetail.Equation"> {{ currentMatch.Matchdetail.Equation }} </p> | |||
<section class="score-card" *ngIf="currentMatch.Innings"> | |||
<div class="team" *ngFor="let inning of currentMatch.Innings"> | |||
@@ -59,7 +60,7 @@ | |||
<ng-container *ngFor="let batsman of inning.Batsmen"> | |||
<tr *ngIf="batsman.Runs !== ''"> | |||
<td> | |||
{{ currentMatch.Teams[inning.Battingteam].Players[batsman].Name_Full }} <br> | |||
{{ currentMatch.Teams[inning.Battingteam].Players[batsman.Batsman].Name_Full }} <br> | |||
<span> {{ batsman.Howout }} </span> | |||
</td> | |||
@@ -171,8 +171,11 @@ | |||
} | |||
.card { | |||
width: 100%; | |||
width: 90%; | |||
margin: 20px auto; | |||
padding: 15px; | |||
background-color: lighten($brand-blue, 1%); | |||
border-radius: 7px; | |||
} | |||
table { | |||
@@ -21,7 +21,7 @@ | |||
<div class="score-container" *ngIf="selectedSegment === 'SCORE' && currentMatch.Innings"> | |||
<section class="score-card" *ngFor="let inning of currentMatch.Innings"> | |||
<section class="score-card" *ngFor="let inning of getReversedArray(currentMatch.Innings)"> | |||
<header> | |||
<h5> {{ currentMatch.Teams[inning.Battingteam].Name_Short }} </h5> | |||
@@ -53,10 +53,10 @@ | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<ng-container *ngIf="batsman.Runs !== ''"> | |||
<tr *ngFor="let batsman of inning.Batsmen"> | |||
<ng-container *ngFor="let batsman of inning.Batsmen"> | |||
<tr> | |||
<td> | |||
<label> {{ currentMatch.Teams[inning.Battingteam].Players[Batsman].Name_Full }} </label> <br> | |||
<label> {{ currentMatch.Teams[inning.Battingteam].Players[batsman.Batsman].Name_Full }} </label> <br> | |||
<span> {{ batsman.Howout }} </span> | |||
</td> | |||
@@ -112,34 +112,33 @@ | |||
</tr> | |||
</thead> | |||
<tbody> | |||
<ng-container *ngIf="bowler.Overs !== ''"> | |||
<ng-container *ngFor="let bowler of inning.Bowlers"> | |||
<tr> | |||
<td> | |||
<label> {{ currentMatch.Teams[inning.Bowlingteam].Players[bowler.Bowler].Name_Full }} </label> | |||
</td> | |||
<td> | |||
{{ bowler.Wickets }} | |||
</td> | |||
<td> | |||
{{ bowler.Overs }} | |||
</td> | |||
<td> | |||
{{ bowler.Dots }} | |||
</td> | |||
<td> | |||
{{ bowler.Runs }} | |||
</td> | |||
<td> | |||
{{ bowler.Economyrate }} | |||
</td> | |||
</tr> | |||
</ng-container> | |||
<tr *ngFor="let bowler of inning.Bowlers"> | |||
<td> | |||
<label> {{ currentMatch.Teams[inning.Battingteam].Players[bowler].Name_Full }} </label> | |||
</td> | |||
<td> | |||
{{ bowler.Wickets }} | |||
</td> | |||
<td> | |||
{{ bowler.Overs }} | |||
</td> | |||
<td> | |||
{{ bowler.Dots }} | |||
</td> | |||
<td> | |||
{{ bowler.Runs }} | |||
</td> | |||
<td> | |||
{{ bowler.Economyrate }} | |||
</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
</div> | |||
@@ -148,26 +147,37 @@ | |||
</div> | |||
<ng-container *ngIf="selectedSegment === 'MATCH'"> | |||
<div class="commentary-container" *ngIf="selectedRoster === 'LIVE'"> | |||
<div class="commentary-container" *ngIf="selectedRoster === 'LIVE' && commentaryList"> | |||
<section class="score-card" *ngIf="currentMatch.Innings"> | |||
<div class="team" *ngFor="let inning of getReversedArray(currentMatch.Innings)"> | |||
<header> <h5> {{ currentMatch.Teams[inning.Battingteam].Name_Short }} </h5> {{ inning.Total }}/{{ inning.Wickets }} <span> ({{ inning.Overs }}) </span> </header> | |||
</div> | |||
</section> | |||
<header> | |||
<h5> Commentary </h5> | |||
</header> | |||
<ul *ngFor="let list of getReversedArray(commentaryList)"> | |||
<header> | |||
<h5> Innings #{{ list.InningNo }} </h5> | |||
</header> | |||
<ul *ngIf="commentaryList"> | |||
<li *ngFor="let commentary of commentaryList"> | |||
<li *ngFor="let commentary of list.Commentary"> | |||
<div class="over-data"> | |||
<label *ngIf="commentary.Isball"> {{ commentary.Over }} </label> | |||
<span *ngIf="commentary.Isball" | |||
[ngClass]="{'boundary' : commentary.Runs === '4', | |||
'six': commentary.Runs === '6', | |||
'wicket': commentary.Iswicket }"> {{ commentary.Runs }} </span> | |||
<span *ngIf="!commentary.Isball"> | |||
<ion-icon name="mic-outline"></ion-icon> | |||
</span> | |||
</div> | |||
<div class="comment"> | |||
<p> | |||
{{ commentary.Commentary }} | |||
</p> | |||
<div class="small-stats"> | |||
<div class="small-stats" *ngIf="commentary.Batsman_Name"> | |||
<span> <strong> Score: </strong> {{ commentary.Score }} </span> | |||
<span> <strong> Strike: </strong> {{ commentary.Batsman_Name }} </span> | |||
<span> <strong> Bowling: </strong> {{ commentary.Bowler_Name }} </span> | |||
@@ -5,6 +5,7 @@ | |||
padding-bottom: 60px; | |||
width: 100%; | |||
z-index: 0; | |||
position: relative; | |||
header { | |||
padding: 0 5%; | |||
@@ -12,6 +13,30 @@ | |||
font-size: 14px; | |||
} | |||
.score-card { | |||
box-shadow: 0px 0px 15px -6px darken($brand-blue, 10%); | |||
margin: 0px auto 30px; | |||
position: sticky; | |||
position: -webkit-sticky; | |||
top: 140px; | |||
z-index: 1; | |||
} | |||
.score-card .team { | |||
header { | |||
background-color: white; | |||
margin-bottom: 0; | |||
&:first-child { | |||
border-bottom: 1px solid rgba($brand-blue, 0.1); | |||
} | |||
h5 { | |||
margin-right: 10px; | |||
} | |||
} | |||
} | |||
ul { | |||
list-style: none; | |||
color: darken($brand-blue, 20%); | |||
@@ -346,7 +371,7 @@ | |||
border-radius: 7px; | |||
overflow: hidden; | |||
width: 90%; | |||
margin: 30px auto; | |||
margin: 10px auto 30px; | |||
.container { | |||
width: 90%; | |||
@@ -29,6 +29,8 @@ interface RawCommentaryForBall { | |||
Ball_Speed: string; | |||
} | |||
// 200556 | |||
export interface RawCommentary { | |||
InningNo: string; | |||
BattingTeam_Id: string; | |||
@@ -59,7 +61,7 @@ export class MatchDetailsPage implements OnInit { | |||
selectedPlayer: string = ''; | |||
commentaryList: Array<RawCommentaryForBall> = []; | |||
commentaryList: Array<RawCommentary> = []; | |||
constructor( | |||
private location: Location, | |||
@@ -75,14 +77,18 @@ export class MatchDetailsPage implements OnInit { | |||
this.currentMatch = match_data; | |||
}); | |||
this.matchService.getCommentary(match_id).then((data: Array<RawCommentaryForBall>) => { | |||
this.commentaryList = data; | |||
this.matchService.getCommentary(match_id).then((data: Array<RawCommentary>) => { | |||
this.commentaryList = data; | |||
}, (err) => { | |||
console.log(err); | |||
this.toastService.presentToastWithOptions("Failed to fetch Commentary", "danger"); | |||
}) | |||
} | |||
getReversedArray(array: Array<RawCommentary>) { | |||
return array.reverse(); | |||
} | |||
back() { | |||
this.location.back(); | |||
} | |||
@@ -22,7 +22,7 @@ export class MatchService { | |||
getFixtures() { | |||
return this.http.get(BASE_URL + '/fixtures/').toPromise(); | |||
} | |||
// 200556 | |||
getMatchDetails(id: number | string) { | |||
return this.http.get(BASE_URL + '/match/' + id).toPromise(); | |||
} | |||
@@ -24,30 +24,6 @@ | |||
<body> | |||
<app-root></app-root> | |||
<noscript>Please enable JavaScript to continue using this application.</noscript> | |||
<!-- The core Firebase JS SDK is always required and must be listed first --> | |||
<!-- <script src="https://www.gstatic.com/firebasejs/8.2.6/firebase-app.js"></script> --> | |||
<!-- TODO: Add SDKs for Firebase products that you want to use | |||
https://firebase.google.com/docs/web/setup#available-libraries --> | |||
<!-- <script src="https://www.gstatic.com/firebasejs/8.2.6/firebase-analytics.js"></script> --> | |||
<!-- <script> | |||
// Your web app's Firebase configuration | |||
// For Firebase JS SDK v7.20.0 and later, measurementId is optional | |||
var firebaseConfig = { | |||
apiKey: "AIzaSyCYlFdGEsSA3bPlYYJMh3TcMiHzAUK2his", | |||
authDomain: "kxip-21.firebaseapp.com", | |||
projectId: "kxip-21", | |||
storageBucket: "kxip-21.appspot.com", | |||
messagingSenderId: "5602499136", | |||
appId: "1:5602499136:web:57b81f812e2cbf4b419da5", | |||
measurementId: "G-4KDJZFCZ59" | |||
}; | |||
// Initialize Firebase | |||
firebase.initializeApp(firebaseConfig); | |||
firebase.analytics(); | |||
</script> --> | |||
</body> | |||
</html> |