import { Component, OnInit } from '@angular/core'; import { Location } from '@angular/common'; import { ActivatedRoute } from '@angular/router'; import { MatchService } from '../services/match.service'; import { ToastService } from '../services/toast.service'; import { RawMatchData } from '../live/live.page'; import { SocialSharing } from '@ionic-native/social-sharing/ngx'; interface RawCommentaryForBall { Over: string; Id: string; Runs: string; ZAD: string; Detail: string; Isball: boolean; Bowler: string; Bowler_Name: string; Batsman: string; Batsman_Name: string; Batsman_Style: string; Commentary: string; Timestamp: string; Non_Striker: string; Non_Striker_Name: string; Score: string; Batsman_Runs: string; Bowler_Conceded_Runs: string; Extras_Runs: string; Ball_Speed: string; } // 200556 export interface RawCommentary { InningNo: string; BattingTeam_Id: string; BattingTeam: string; BowlingTeam_Id: string; BowlingTeam: string; GameCode: string; MatchId: string; Timestamp: string; Commentary: Array; } @Component({ selector: 'app-match-details', templateUrl: './match-details.page.html', styleUrls: ['./match-details.page.scss'], }) export class MatchDetailsPage implements OnInit { isPlayerSelected: boolean = false; isHomeTeamSelected: boolean = true; selectedSegment: 'MATCH' | 'SCORE' = 'MATCH'; selectedRoster: 'LIVE' | 'HOME' | 'AWAY' = 'LIVE'; currentMatch: RawMatchData; selectedPlayer: string = ''; commentaryList: Array = []; commentaryInterval: any; constructor( private location: Location, private route: ActivatedRoute, private matchService: MatchService, private toastService: ToastService, private socialSharing: SocialSharing ) { } shareMatchDetails() { console.log("Sharing match details..."); let message: string; if (this.currentMatch.Innings) { this.currentMatch.Innings.forEach(inning => { message = this.currentMatch.Teams[inning.Battingteam].Name_Short + ' ' + inning.Total + '/' + inning.Wickets + '(' + inning.Overs + ')' + '\n'; }); } else { message = 'Match to start on, ' + this.currentMatch.Matchdetail.Match.Date + ' @' + this.currentMatch.Matchdetail.Match.Time + '\n' + this.currentMatch.Teams[this.currentMatch.Matchdetail.Team_Home].Name_Short + ' v/s ' + this.currentMatch.Teams[this.currentMatch.Matchdetail.Team_Away].Name_Short; } this.socialSharing.share(message); } ngOnInit() { let match_id = JSON.parse(this.route.snapshot.paramMap.get('match_id')); this.matchService.getMatchDetails(match_id).then((match_data: RawMatchData) => { this.currentMatch = match_data; }); this.callCommentary(match_id); this.commentaryInterval = setInterval(() => { this.callCommentary(match_id); }, 30000); } callCommentary(match_id) { this.matchService.getCommentary(match_id).then((data: Array) => { this.commentaryList = data; }, (err) => { console.log(err); this.toastService.presentToastWithOptions("Failed to fetch Commentary", "danger"); }); } ngOnDestroy() { clearInterval(this.commentaryInterval); } getReversedArray(array: Array) { return array.reverse(); } back() { this.location.back(); } selectPlayerDetails(playerId: string) { this.selectedPlayer = playerId; this.isPlayerSelected = true; } limitDecimals(value: number) { return value.toPrecision(2); } getArrayOfPlayers(players) { return Object.keys(players); } }