import { Component, Input, OnInit } from '@angular/core'; import { BsModalRef } from 'ngx-bootstrap'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; @Component({ selector: 'espl-export', templateUrl: 'export.component.html', styleUrls: ['export.component.css'] }) export class ExportComponent implements OnInit{ @Input() checkedList: any; @Input() fullDataSet: boolean; exportForm: FormGroup; allFileFormats = [{'file_format': 'Comma Separated -- .csv', 'ext':'.csv'}, {'file_format':'Space Separated -- .txt', 'ext':'.txt'}, {'file_format':'Tab Separated -- .tsv', 'ext':'.tsv'}]; dataScope = [{'data_scope': 'All'}, {'data_scope': 'Selected'}]; constructor( public bsModalRef: BsModalRef, private fb: FormBuilder){} ngOnInit(): void{ this.exportForm = this.fb.group({ file_name: ['', Validators.required], file_format: ['', Validators.required], data_scope: [this.fullDataSet ? 'All' : 'Selected', Validators.required] }); } async onSubmit(){ if(this.exportForm.get('file_name').value === ''){ this.exportForm.controls['file_name'].markAllAsTouched(); } if(this.exportForm.get('file_format').value === ''){ this.exportForm.controls['file_format'].markAllAsTouched() } if(this.exportForm.valid){ var delimiter, headers = [['Date','BUC','ADN','Centre','City','Status','Delivery','Assigned To','Invoice State','Invoice No.','Customer SSO','Delivered Date']]; for (let i = 0; i < this.checkedList.length; i++) { let salesOrder = this.checkedList[i]; var dataArray = [salesOrder.invoice_date, salesOrder.buc, salesOrder.adn, salesOrder.centre, salesOrder.location_name, salesOrder.orderStates, salesOrder.shipment_date, salesOrder.member_name, salesOrder.invoiceStates, salesOrder.invoice_id, salesOrder.customer_id, salesOrder.shipment_date]; headers.push(dataArray); } let fileName = this.exportForm.get('file_name').value + this.exportForm.get('file_format').value; switch(this.exportForm.get('file_format').value){ case '.csv': delimiter = ','; break; case '.tsv': delimiter = '\t'; break; case '.txt': delimiter = ' '; break; } let headerContent = "data:text/csv;charset=utf-8," + headers.map(e => e.join(delimiter)).join("\n"); var encodedUri = encodeURI(headerContent); var link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", fileName); document.body.appendChild(link); link.click(); this.bsModalRef.hide(); } } get file_name() { return this.exportForm.get('file_name') } get file_format() { return this.exportForm.get('file_format') } get data_scope() { return this.exportForm.get('data_scope') } }