luthor/otis/src/app/compliance-list/compliance-list.component.ts

57 lines
1.7 KiB
TypeScript

import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { ActivatedRoute } from '@angular/router';
import { jsPDF } from 'jspdf';
import autoTable from 'jspdf-autotable';
import { ComplianceList } from './compliance-list';
import { ComplianceListDatasource } from './compliance-list-datasource';
@Component({
selector: 'app-compliance-list',
templateUrl: './compliance-list.component.html',
styleUrls: ['./compliance-list.component.css'],
})
export class ComplianceListComponent implements OnInit {
@ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;
info: ComplianceList[] = [];
dataSource: ComplianceListDatasource = new ComplianceListDatasource(this.info);
/** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
displayedColumns = [
'officeFileNumber',
'title',
'proceedings',
'complianceDate',
'nextHearingDate',
];
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.data.subscribe((value) => {
const data = value as { info: ComplianceList[] };
this.info = data.info;
this.dataSource = new ComplianceListDatasource(this.info, this.paginator);
});
}
exportCsv() {
const doc = new jsPDF({
orientation: 'landscape',
});
// doc.autoTable({ html: '#table' });
autoTable(doc, {
head: [['File No.', 'Title', 'Proceedings', 'Next Hearing', 'Compliance Date']],
body: this.info.map((row) => [
row.officeFileNumber,
row.title,
row.proceedings,
row.nextHearingDate,
row.complianceDate,
]),
});
doc.save('compliance-list.pdf');
}
}