Updated to angular 11
Now compiling with strict mode in typescript Need to error checking now
This commit is contained in:
@ -0,0 +1,3 @@
|
||||
export interface BeerSaleExportHeaderInterface {
|
||||
[header: string]: string;
|
||||
}
|
||||
@ -2,4 +2,11 @@ export class BeerSaleReportItem {
|
||||
date: string;
|
||||
name: string;
|
||||
quantity: number;
|
||||
|
||||
public constructor(init?: Partial<BeerSaleReportItem>) {
|
||||
this.date = '';
|
||||
this.name = '';
|
||||
this.quantity = 0;
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
||||
|
||||
import { BeerSaleReportComponent } from './beer-sale-report.component';
|
||||
|
||||
@ -6,11 +6,13 @@ describe('BeerSaleReportComponent', () => {
|
||||
let component: BeerSaleReportComponent;
|
||||
let fixture: ComponentFixture<BeerSaleReportComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [BeerSaleReportComponent],
|
||||
}).compileComponents();
|
||||
}));
|
||||
beforeEach(
|
||||
waitForAsync(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [BeerSaleReportComponent],
|
||||
}).compileComponents();
|
||||
}),
|
||||
);
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(BeerSaleReportComponent);
|
||||
|
||||
@ -5,6 +5,7 @@ import * as moment from 'moment';
|
||||
|
||||
import { ToCsvService } from '../shared/to-csv.service';
|
||||
|
||||
import { BeerSaleExportHeaderInterface } from './beer-sale-export-header-interface';
|
||||
import { BeerSaleReport } from './beer-sale-report';
|
||||
import { BeerSaleReportDataSource } from './beer-sale-report-datasource';
|
||||
|
||||
@ -14,9 +15,9 @@ import { BeerSaleReportDataSource } from './beer-sale-report-datasource';
|
||||
styleUrls: ['./beer-sale-report.component.css'],
|
||||
})
|
||||
export class BeerSaleReportComponent implements OnInit {
|
||||
dataSource: BeerSaleReportDataSource;
|
||||
info: BeerSaleReport = new BeerSaleReport();
|
||||
dataSource: BeerSaleReportDataSource = new BeerSaleReportDataSource(this.info.data);
|
||||
form: FormGroup;
|
||||
info: BeerSaleReport;
|
||||
|
||||
/** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
|
||||
displayedColumns: string[] = ['date'];
|
||||
@ -27,11 +28,16 @@ export class BeerSaleReportComponent implements OnInit {
|
||||
private fb: FormBuilder,
|
||||
private toCsv: ToCsvService,
|
||||
) {
|
||||
this.createForm();
|
||||
// Create form
|
||||
this.form = this.fb.group({
|
||||
startDate: '',
|
||||
finishDate: '',
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.data.subscribe((data: { info: BeerSaleReport }) => {
|
||||
this.route.data.subscribe((value) => {
|
||||
const data = value as { info: BeerSaleReport };
|
||||
this.info = data.info;
|
||||
this.displayedColumns = ['date'].concat(this.info.headers);
|
||||
this.form.setValue({
|
||||
@ -52,32 +58,21 @@ export class BeerSaleReportComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
createForm() {
|
||||
this.form = this.fb.group({
|
||||
startDate: '',
|
||||
finishDate: '',
|
||||
});
|
||||
}
|
||||
|
||||
getInfo(): BeerSaleReport {
|
||||
const formModel = this.form.value;
|
||||
|
||||
return {
|
||||
return new BeerSaleReport({
|
||||
startDate: moment(formModel.startDate).format('DD-MMM-YYYY'),
|
||||
finishDate: moment(formModel.finishDate).format('DD-MMM-YYYY'),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
exportCsv() {
|
||||
const headers = this.info.headers.reduce(
|
||||
(a, c) => {
|
||||
a[c] = c;
|
||||
return a;
|
||||
},
|
||||
{
|
||||
Date: 'date',
|
||||
},
|
||||
);
|
||||
const init: BeerSaleExportHeaderInterface = { Date: 'date' };
|
||||
const headers = this.info.headers.reduce((a, c) => {
|
||||
a[c] = c;
|
||||
return a;
|
||||
}, init);
|
||||
const csvData = new Blob([this.toCsv.toCsv(headers, this.info.data)], {
|
||||
type: 'text/csv;charset=utf-8;',
|
||||
});
|
||||
|
||||
@ -16,7 +16,7 @@ const serviceName = 'BeerSaleReportService';
|
||||
export class BeerSaleReportService {
|
||||
constructor(private http: HttpClient, private log: ErrorLoggerService) {}
|
||||
|
||||
get(startDate: string, finishDate): Observable<BeerSaleReport> {
|
||||
get(startDate: string | null, finishDate: string | null): Observable<BeerSaleReport> {
|
||||
const options = { params: new HttpParams() };
|
||||
if (startDate !== null) {
|
||||
options.params = options.params.set('s', startDate);
|
||||
|
||||
@ -3,6 +3,14 @@ import { BeerSaleReportItem } from './beer-sale-report-item';
|
||||
export class BeerSaleReport {
|
||||
startDate: string;
|
||||
finishDate: string;
|
||||
headers?: string[];
|
||||
data?: BeerSaleReportItem[];
|
||||
headers: string[];
|
||||
data: BeerSaleReportItem[];
|
||||
|
||||
public constructor(init?: Partial<BeerSaleReport>) {
|
||||
this.startDate = '';
|
||||
this.finishDate = '';
|
||||
this.data = [];
|
||||
this.headers = [];
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user