File

src/app/courses/course-list/course-list.component.ts

Metadata

selector app-course-list
styleUrls course-list.component.scss
templateUrl course-list.component.html

Inputs

scale

Type: number

Default value: 7

Constructor

constructor(courses: any)

Methods

trackById
trackById(index: number, item: ClassData)
Returns: void

Properties

classes
classes: ClassData[]
dataSource
dataSource: MatTableDataSource<ClassData>
displayedColumns
displayedColumns: string[]
MatSort
MatSort: any
objectKeys
objectKeys: (o: any) => string[]
sort
sort: boolean
import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { ClassService } from 'src/app/services/classes/class.service';
import { ClassData } from '../../shared/class/class'

@Component({
  selector: 'app-course-list',
  templateUrl: './course-list.component.html',
  styleUrls: ['./course-list.component.scss']
})
export class CourseListComponent implements AfterViewInit {
  @Input() scale: number = 7
  classes: ClassData[] = []
  dataSource = new MatTableDataSource<ClassData>()
  displayedColumns: string[] = [
    'CourseNumber',
    'ClassName',
    'RatingCount',
    'RatingAvg',
    'DifficultyAvg',
    'WorkloadAvg',
    'BookUsefulnessAvg',
    'Semester',
  ]
  objectKeys = Object.keys
  
  @ViewChild(MatSort) sort!: MatSort
   
  constructor(
    private courses: ClassService
  ) { }

  ngAfterViewInit(): void {
    this.courses.classes.subscribe(data => {
      this.classes = data
      this.dataSource = new MatTableDataSource(this.classes)
      this.dataSource.sort = this.sort
    })
  }

  trackById(index: number, item: ClassData) {
    return item.ClassName
  }
}

results matching ""

    No results matching ""