Guest User

Untitled

a guest
Jun 20th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.48 KB | None | 0 0
  1. ngAfterViewInit() {
  2. this.paginator.page
  3. .pipe(
  4. tap(() => this.loadLessonsPage())
  5. )
  6. .subscribe();
  7. }
  8.  
  9. export class AllMatchesComponent implements OnInit, OnDestroy, AfterViewInit {
  10. ...
  11. @ViewChild(MatPaginator) paginator: MatPaginator;
  12. ...
  13. ngAfterViewInit(){
  14. console.log(this.paginator);
  15. this.paginator.page
  16. .pipe(
  17. tap(()=> this.loadMatchesPage())
  18. )
  19. .subscribe();
  20. }
  21. ...
  22.  
  23. git clone https://github.com/Atticus29/dataJitsu.git
  24. cd dataJitsu
  25. git checkout SO-paginator-freeze
  26.  
  27. import { Component, OnInit, OnDestroy, AfterViewInit, ViewChild } from '@angular/core';
  28. import { D3Service } from '../d3.service';
  29. import { DatabaseService } from '../database.service';
  30. import { TextTransformationService } from '../text-transformation.service';
  31. import * as firebase from 'firebase/app';
  32. import { MatTableDataSource, MatSort } from '@angular/material';
  33. import { MatPaginatorModule } from '@angular/material/paginator';
  34. import { DataSource } from '@angular/cdk/table';
  35. import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
  36. import { MatchDataSource } from '../matchDataSource.model';
  37. import { AuthorizationService } from '../authorization.service';
  38. import { Subject } from 'rxjs/Subject';
  39. import { tap } from 'rxjs/operators';
  40. import { MatPaginator } from '@angular/material';
  41.  
  42. @Component({
  43. selector: 'app-all-matches',
  44. templateUrl: './all-matches.component.html',
  45. styleUrls: ['./all-matches.component.scss']
  46. })
  47. export class AllMatchesComponent implements OnInit, OnDestroy, AfterViewInit {
  48. private dataSource: MatchDataSource;
  49. private columnsToDisplay = ['rank','weightClass', 'ageClass','athlete1Name', 'athlete2Name', 'gender','tournamentName','location', 'date', 'matchRating', 'videoUrl']; //TODO make this dynamic somehow
  50. private loading = true;
  51. user: any = null;
  52. private ngUnsubscribe: Subject<void> = new Subject<void>();
  53. private matchCount: number;
  54. private pageSize: number;
  55.  
  56. @ViewChild(MatPaginator) paginator: MatPaginator;
  57.  
  58. constructor(private authService: AuthorizationService, private d3Service: D3Service, private dbService: DatabaseService, private textTransformationService: TextTransformationService) { }
  59.  
  60. ngOnInit() {
  61. this.authService.getCurrentUser().takeUntil(this.ngUnsubscribe).subscribe(user=>{
  62. this.user = user;
  63. },err=>{
  64. console.log(err);
  65. });
  66. this.pageSize = 2;
  67. this.dataSource = new MatchDataSource(this.dbService);
  68. this.dataSource.loadMatches('test', '', '', 0, this.pageSize);
  69. this.dbService.getMatchCount().subscribe(results=>{
  70. this.matchCount = results;
  71. });
  72. }
  73.  
  74. ngAfterViewInit(){
  75. console.log(this.paginator);
  76. this.paginator.page
  77. .pipe(
  78. tap(()=> this.loadMatchesPage())
  79. )
  80. .subscribe();
  81. }
  82.  
  83. loadMatchesPage(){
  84. this.dataSource.loadMatches('TODO', '', 'asc', this.paginator.pageIndex, this.paginator.pageSize);
  85. }
  86.  
  87. ngOnDestroy(){
  88. console.log("onDestroy is called");
  89. this.ngUnsubscribe.next();
  90. this.ngUnsubscribe.complete();
  91. }
  92. }
  93.  
  94. <script type='text/javascript' src='http://d3js.org/d3.v3.min.js'></script>
  95. <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>
  96. <script type='text/javascript' src='d3fire.min.js'></script>
  97. <script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?2.1.3"></script>
  98. <script type="text/javascript" src="http://mbostock.github.com/d3/d3.geom.js?2.1.3"></script>
  99. <script type="text/javascript" src="http://mbostock.github.com/d3/d3.layout.js?2.1.3"></script>
  100. <br>
  101. <div class="" *ngIf='user'>
  102. <div class="spinner-container" *ngIf="loading$">
  103. <mat-spinner id="spinner"></mat-spinner>
  104. </div>
  105. <mat-table #table [dataSource]="dataSource" class="mat-elevation-z8" *ngIf="!loading$">
  106. <!-- TODO add paidStatus to ngIf -->
  107. <ng-container matColumnDef="rank">
  108. <mat-header-cell *matHeaderCellDef> Rank </mat-header-cell>
  109. <mat-cell *matCellDef="let entry"> {{entry.rank}} </mat-cell>
  110. </ng-container>
  111. <ng-container matColumnDef="weightClass">
  112. <mat-header-cell *matHeaderCellDef> Weight Class </mat-header-cell>
  113. <mat-cell *matCellDef="let entry"> {{entry.weightClass}} </mat-cell>
  114. </ng-container>
  115. <ng-container matColumnDef="ageClass">
  116. <mat-header-cell *matHeaderCellDef> Age Class </mat-header-cell>
  117. <mat-cell *matCellDef="let entry"> {{entry.ageClass}} </mat-cell>
  118. </ng-container>
  119. <ng-container matColumnDef="athlete1Name">
  120. <mat-header-cell *matHeaderCellDef> Athlete 1 </mat-header-cell>
  121. <mat-cell *matCellDef="let entry"> {{entry.athlete1Name}} </mat-cell>
  122. </ng-container>
  123. <ng-container matColumnDef="athlete2Name">
  124. <mat-header-cell *matHeaderCellDef> Athlete 2 </mat-header-cell>
  125. <mat-cell *matCellDef="let entry"> {{entry.athlete2Name}} </mat-cell>
  126. </ng-container>
  127. <ng-container matColumnDef="gender">
  128. <mat-header-cell *matHeaderCellDef> Gender </mat-header-cell>
  129. <mat-cell *matCellDef="let entry"> {{entry.gender}} </mat-cell>
  130. </ng-container>
  131. <ng-container matColumnDef="location">
  132. <mat-header-cell *matHeaderCellDef> Location </mat-header-cell>
  133. <mat-cell *matCellDef="let entry"> {{entry.location}} </mat-cell>
  134. </ng-container>
  135. <ng-container matColumnDef="tournamentName">
  136. <mat-header-cell *matHeaderCellDef> Tournament </mat-header-cell>
  137. <mat-cell *matCellDef="let entry"> {{entry.tournamentName}} </mat-cell>
  138. </ng-container>
  139. <ng-container matColumnDef="date">
  140. <mat-header-cell *matHeaderCellDef> Date </mat-header-cell>
  141. <mat-cell *matCellDef="let entry"> {{entry.date | date:'shortDate'}} </mat-cell>
  142. </ng-container>
  143. <ng-container matColumnDef="videoUrl">
  144. <mat-header-cell *matHeaderCellDef> Video </mat-header-cell>
  145. <mat-cell *matCellDef="let entry"> <a href='{{entry.videoUrl}}'>Click</a> </mat-cell>
  146. <!-- <i class="material-icons right">video</i> -->
  147. </ng-container>
  148. <ng-container matColumnDef="matchRating">
  149. <mat-header-cell *matHeaderCellDef> Match Rating </mat-header-cell>
  150. <mat-cell *matCellDef="let entry"> {{entry.matchRating}}</mat-cell>
  151. <!-- <i class="material-icons right">video</i> -->
  152. </ng-container>
  153.  
  154. <mat-header-row *matHeaderRowDef="columnsToDisplay"></mat-header-row>
  155. <mat-row *matRowDef="let row; columns: columnsToDisplay;"></mat-row>
  156. </mat-table>
  157.  
  158. <mat-paginator [length]='matchCount' [pageSize]="2" [pageSizeOptions]="[2, 5, 10]"></mat-paginator>
  159. </div>
Add Comment
Please, Sign In to add comment