Skip to content
Snippets Groups Projects
metadata-table.component.ts 1.69 KiB
Newer Older
import {
  Component,
  Input,
  Output,
  EventEmitter,
  ViewChild,
  OnInit,
} from '@angular/core';
import { AuditMetadata } from '../models/audit-metadata';
import { MatPaginator } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';

@Component({
  selector: 'cse-dars-metadata-table',
  templateUrl: './metadata-table.component.html',
  styleUrls: ['./metadata-table.component.scss'],
})
export class DarsMetadataTableComponent implements OnInit {
  @Input() public metadata: Observable<AuditMetadata[]>;
  @Input() public title: string;
  @Input() public tagline: string;
  @Input() public button: string;

  @Output() public openAudit = new EventEmitter<AuditMetadata>();
  @Output() buttonClick = new EventEmitter();

  @ViewChild(MatPaginator) paginator: MatPaginator;

  public dataSource: MatTableDataSource<AuditMetadata>;
  public displayedColumns = [
    'view',
    'school',
    'program',
    'honors',
    'plan',
    'status',
    'download',
  ];
  public static sortMetadata(metadata: AuditMetadata[]): AuditMetadata[] {
    return metadata.sort((a, b) => {
      const aDate = new Date(a.darsAuditRunDate);
      const bDate = new Date(b.darsAuditRunDate);

Scott Berg's avatar
Scott Berg committed
      if (aDate < bDate) {
Scott Berg's avatar
Scott Berg committed
      if (aDate > bDate) {

  public ngOnInit() {
    this.metadata.pipe(
      tap(metadata => {
        const sorted = DarsMetadataTableComponent.sortMetadata(metadata);
        this.dataSource = new MatTableDataSource<AuditMetadata>(sorted);
        this.dataSource.paginator = this.paginator;
      }),
    );
  }