| @@ -61,7 +61,11 @@ const routes: Routes = [ | |||||
| { | { | ||||
| path: 'fan-zone', | path: 'fan-zone', | ||||
| loadChildren: () => import('./fan-zone/fan-zone.module').then( m => m.FanZonePageModule) | loadChildren: () => import('./fan-zone/fan-zone.module').then( m => m.FanZonePageModule) | ||||
| }, | |||||
| }, { | |||||
| path: 'league-table', | |||||
| loadChildren: () => import('./league-table/league-table.module').then( m => m.LeagueTablePageModule) | |||||
| }, | |||||
| ]; | ]; | ||||
| @NgModule({ | @NgModule({ | ||||
| imports: [ | imports: [ | ||||
| @@ -0,0 +1,17 @@ | |||||
| import { NgModule } from '@angular/core'; | |||||
| import { Routes, RouterModule } from '@angular/router'; | |||||
| import { LeagueTablePage } from './league-table.page'; | |||||
| const routes: Routes = [ | |||||
| { | |||||
| path: '', | |||||
| component: LeagueTablePage | |||||
| } | |||||
| ]; | |||||
| @NgModule({ | |||||
| imports: [RouterModule.forChild(routes)], | |||||
| exports: [RouterModule], | |||||
| }) | |||||
| export class LeagueTablePageRoutingModule {} | |||||
| @@ -0,0 +1,20 @@ | |||||
| import { NgModule } from '@angular/core'; | |||||
| import { CommonModule } from '@angular/common'; | |||||
| import { FormsModule } from '@angular/forms'; | |||||
| import { IonicModule } from '@ionic/angular'; | |||||
| import { LeagueTablePageRoutingModule } from './league-table-routing.module'; | |||||
| import { LeagueTablePage } from './league-table.page'; | |||||
| @NgModule({ | |||||
| imports: [ | |||||
| CommonModule, | |||||
| FormsModule, | |||||
| IonicModule, | |||||
| LeagueTablePageRoutingModule | |||||
| ], | |||||
| declarations: [LeagueTablePage] | |||||
| }) | |||||
| export class LeagueTablePageModule {} | |||||
| @@ -0,0 +1,74 @@ | |||||
| <ion-content> | |||||
| <section class="header-with-action-buttons"> | |||||
| <div class="nav"> | |||||
| <button (click)="back()"> <ion-icon name="chevron-back-outline"></ion-icon> <span> BACK </span> </button> | |||||
| </div> | |||||
| <header> IPL Standings Table <br> <span> Season 2021 </span> </header> | |||||
| <div class="action"> | |||||
| <button> <ion-icon name="share-social"></ion-icon> </button> | |||||
| </div> | |||||
| </section> | |||||
| <div class="table-container" *ngIf="tableData"> | |||||
| <table class="team"> | |||||
| <thead> | |||||
| <tr> | |||||
| <th> | |||||
| Teams | |||||
| </th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr *ngFor="let data of tableData"> | |||||
| <td> | |||||
| {{ data.team }} | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| <table class="details"> | |||||
| <thead> | |||||
| <tr> | |||||
| <th> | |||||
| Played | |||||
| </th> | |||||
| <th> | |||||
| Won | |||||
| </th> | |||||
| <th> | |||||
| Lost | |||||
| </th> | |||||
| <th> | |||||
| Tied | |||||
| </th> | |||||
| <th> | |||||
| Net RR | |||||
| </th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr *ngFor="let data of tableData"> | |||||
| <td> | |||||
| {{ data.played }} | |||||
| </td> | |||||
| <td> | |||||
| {{ data.won }} | |||||
| </td> | |||||
| <td> | |||||
| {{ data.lost }} | |||||
| </td> | |||||
| <td> | |||||
| {{ data.tied }} | |||||
| </td> | |||||
| <td> | |||||
| {{ data.netrr }} | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </div> | |||||
| </ion-content> | |||||
| @@ -0,0 +1,59 @@ | |||||
| @import '../colors'; | |||||
| .table-container { | |||||
| width: 100%; | |||||
| display: flex; | |||||
| align-items: flex-start; | |||||
| text-align: center; | |||||
| height: calc(100vh - 70px); | |||||
| overflow: auto; | |||||
| z-index: 0; | |||||
| .team { | |||||
| position: sticky; | |||||
| position: -webkit-sticky; | |||||
| left: 0; | |||||
| top: 0; | |||||
| z-index: 1; | |||||
| width: 100px; | |||||
| background-color: darken($brand-blue, 25%); | |||||
| box-shadow: 0px 0px 10px 0px darken($brand-blue, 30%); | |||||
| thead { | |||||
| background-color: rgba($green, 0.8); | |||||
| } | |||||
| } | |||||
| .details { | |||||
| width: calc(100% - 100px); | |||||
| overflow-x: auto; | |||||
| thead { | |||||
| th { | |||||
| width: 70px; | |||||
| } | |||||
| } | |||||
| } | |||||
| table { | |||||
| color: white; | |||||
| background-color: darken($brand-blue, 15%); | |||||
| table-layout:fixed; | |||||
| thead { | |||||
| background-color: rgba($green, 0.3); | |||||
| font-size: 14px; | |||||
| th { | |||||
| padding: 15px 0; | |||||
| font-weight: normal; | |||||
| } | |||||
| } | |||||
| td { | |||||
| font-size: 16px; | |||||
| height: 50px; | |||||
| padding: 30px 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,24 @@ | |||||
| import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | |||||
| import { IonicModule } from '@ionic/angular'; | |||||
| import { LeagueTablePage } from './league-table.page'; | |||||
| describe('LeagueTablePage', () => { | |||||
| let component: LeagueTablePage; | |||||
| let fixture: ComponentFixture<LeagueTablePage>; | |||||
| beforeEach(async(() => { | |||||
| TestBed.configureTestingModule({ | |||||
| declarations: [ LeagueTablePage ], | |||||
| imports: [IonicModule.forRoot()] | |||||
| }).compileComponents(); | |||||
| fixture = TestBed.createComponent(LeagueTablePage); | |||||
| component = fixture.componentInstance; | |||||
| fixture.detectChanges(); | |||||
| })); | |||||
| it('should create', () => { | |||||
| expect(component).toBeTruthy(); | |||||
| }); | |||||
| }); | |||||
| @@ -0,0 +1,50 @@ | |||||
| import { Component, OnInit } from '@angular/core'; | |||||
| import { Location } from '@angular/common'; | |||||
| @Component({ | |||||
| selector: 'app-league-table', | |||||
| templateUrl: './league-table.page.html', | |||||
| styleUrls: ['./league-table.page.scss'], | |||||
| }) | |||||
| export class LeagueTablePage implements OnInit { | |||||
| tableData = [{ | |||||
| team: 'KXIP', | |||||
| played: '20', | |||||
| won: '10', | |||||
| lost: '9', | |||||
| tied: '1', | |||||
| netrr: '+1.107' | |||||
| }, { | |||||
| team: 'MI', | |||||
| played: '20', | |||||
| won: '10', | |||||
| lost: '9', | |||||
| tied: '1', | |||||
| netrr: '+1.107' | |||||
| }, { | |||||
| team: 'RCB', | |||||
| played: '20', | |||||
| won: '10', | |||||
| lost: '9', | |||||
| tied: '1', | |||||
| netrr: '+1.107' | |||||
| }, { | |||||
| team: 'CSK', | |||||
| played: '20', | |||||
| won: '10', | |||||
| lost: '9', | |||||
| tied: '1', | |||||
| netrr: '+1.107' | |||||
| }]; | |||||
| constructor(private location: Location) { } | |||||
| ngOnInit() { | |||||
| } | |||||
| back() { | |||||
| this.location.back(); | |||||
| } | |||||
| } | |||||
| @@ -124,6 +124,15 @@ | |||||
| </section> | </section> | ||||
| </li> | </li> | ||||
| <li class="collapsible-card"> | |||||
| <header> | |||||
| <label> League Table </label> | |||||
| <button [routerLink]="['/league-table']"> | |||||
| <ion-icon name="chevron-forward-outline"></ion-icon> | |||||
| </button> | |||||
| </header> | |||||
| </li> | |||||
| </ul> | </ul> | ||||
| </div> | </div> | ||||
| @@ -152,6 +152,13 @@ | |||||
| width: 30px; | width: 30px; | ||||
| font-size: 24px; | font-size: 24px; | ||||
| color: white; | color: white; | ||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: center; | |||||
| ion-icon { | |||||
| font-size: 20px; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||