import { Component, OnInit } from '@angular/core'; import { PartnerProfileService } from '../../services/partner-profile.service'; import { Router } from '@angular/router'; import * as Papa from 'papaparse'; import * as XLSX from 'xlsx' @Component({ selector: 'app-table', templateUrl: './table.component.html', styleUrls: ['./table.component.scss'] }) export class TableComponent implements OnInit { userData: Array = []; tempUserData: Array = []; showExportOptions: boolean = false; shouldHaveImplementationData: boolean = false; searchText: string = ''; selectedPartnerList: Array = []; constructor( private partnerProfileService: PartnerProfileService, private router: Router ) { } ngOnInit(): void { this.getFilteredData(); } getFilteredData() { this.partnerProfileService.getPartnersData().then((data: any) => { this.userData = data; if (this.shouldHaveImplementationData) { this.userData = this.userData.filter(user => { return (user.surveyCtoData.hiiData && user.surveyCtoData.hiiData.length > 0) || (user.surveyCtoData.spData && user.surveyCtoData.spData.length > 0) || (user.surveyCtoData.spSchemeData && user.surveyCtoData.spSchemeData.length > 0) }); } if (this.searchText) { this.userData = this.userData.filter(user => { return user.organizationBasicInfo.name && user.organizationBasicInfo.name.toLowerCase().trim().includes(this.searchText.toLowerCase().trim()); }) } this.partialLoad(this.userData.slice(0, 10)) console.log(this.userData); }, (e) => console.log(e)); } partialLoad(data: Array) { this.tempUserData = data; console.log(this.tempUserData); } loadMore() { this.partialLoad(this.userData.slice(0, this.tempUserData.length + 10)); } showPartnerDetails(partner: any) { this.router.navigate(['dashboard/partners/partner-details'], { queryParams: { data: JSON.stringify(partner) } }); } selectPartner(partner: any) { if (this.selectedPartnerList) { console.log(!this.checkedInput(partner)) if (this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner))) { this.selectedPartnerList = this.selectedPartnerList.filter(x => JSON.stringify(x) !== JSON.stringify(partner)) } else this.selectedPartnerList.push(partner) } } loadExportData() { let tempArray = []; for (const partner of this.selectedPartnerList) { let csvArray = [{ "PortalID": partner.portalId ? partner.portalId : '-', // Primary Contact "Primary Name": partner.primaryContact.contactNumber, "Primary Contact Number": partner.primaryContact.contactNumber, "Primary Email": partner.primaryContact.contactNumber, "Primary Designation": partner.primaryContact.contactNumber, // Basic Info "areasOfWork": partner.organizationBasicInfo.areasOfWork ? partner.organizationBasicInfo.areasOfWork.toString() : '', "name": partner.organizationBasicInfo.name, "reasonForBecomingMember": partner.organizationBasicInfo.reasonForBecomingMember, "referralName": partner.organizationBasicInfo.referralName, "source": partner.organizationBasicInfo.source, "type": partner.organizationBasicInfo.type, "website": partner.organizationBasicInfo.website, "wouldLikeUpdates": partner.organizationBasicInfo.wouldLikeUpdates, // Alternative Contact 'Alternative Name': partner.alternateContact.name, 'Alternative ContactNumber': partner.alternateContact.contactNumber, 'Alternative Email': partner.alternateContact.email, 'Alternative Designation': partner.alternateContact.designation, // Detailed Profile 'Bio': partner.detailedProfile.bio, 'Branch Location Countries': partner.detailedProfile.branchLocationCountries ? partner.detailedProfile.branchLocationCountries.toString() : '', "Communities": partner.detailedProfile.communities ? partner.detailedProfile.communities.toString() : '', "District": partner.detailedProfile.district, "Districts": partner.detailedProfile.districts ? partner.detailedProfile.districts.toString() : '', "Files": partner.detailedProfile.files, "Have Branches In Other Districts": partner.detailedProfile.haveBranchesInOtherDistricts, "Logo": partner.detailedProfile.logo, "Partner Location": partner.detailedProfile.partnerLocation, "Preferred Languages": partner.detailedProfile.preferredLanguages ? partner.detailedProfile.preferredLanguages.toString() : '', "Preferred Mode Of Communications": partner.detailedProfile.preferredModeOfCommunications ? partner.detailedProfile.preferredModeOfCommunications.toString() : '', "State": partner.detailedProfile.state, "States": partner.detailedProfile.states ? partner.detailedProfile.states.toString() : '', "Total Reach Of Organization": partner.detailedProfile.totalReachOfOrganization, "Year Of Establishment": partner.detailedProfile.yearOfEstablishment, // Strength "Other Specific Support Required": partner.strengthAndCapability.otherSpecificSupportRequired, "Primary Areas Of Support Offered": partner.strengthAndCapability.otherSpecificSupportRequired ? partner.strengthAndCapability.otherSpecificSupportRequired.toString() : '', "Primary Areas Of Support Offered Description": partner.strengthAndCapability.primaryAreasOfSupportOffered, "Primary Areas Of Support Offered Other": partner.strengthAndCapability.primaryAreasOfSupportOfferedDescription, "Primary Areas Of Support Required": partner.strengthAndCapability.primaryAreasOfSupportOfferedOther ? partner.strengthAndCapability.primaryAreasOfSupportOfferedOther.toString() : '', "Primary Areas Of Support Required Description": partner.strengthAndCapability.primaryAreasOfSupportRequired, "Primary Areas Of Support Required Other": partner.strengthAndCapability.primaryAreasOfSupportRequiredOther, }] tempArray.push(csvArray[0]) } return tempArray; } checkedInput(partner: any) { return this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner)) } checkedAllInput() { return JSON.stringify(this.selectedPartnerList) === JSON.stringify(this.tempUserData) } selectAllPartner() { if (JSON.stringify(this.selectedPartnerList) === JSON.stringify(this.tempUserData)) { this.selectedPartnerList = [] } else this.selectedPartnerList = this.tempUserData } exportProfileData(index: number) { let fileTypeXLS = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'; let fileTypeCSV = 'text/csv;charset=utf-8;'; let fileExtension = index === 0 ? '.csv' : '.xlsx'; let element = document.createElement('a'); let blob; if (index === 0) { let csvData = Papa.unparse(this.loadExportData()); blob = new Blob([csvData], { type: fileTypeCSV }); } else { let ws = XLSX.utils.json_to_sheet(this.loadExportData()); let wb = { Sheets: { 'data': ws }, SheetNames: ['data'] }; let excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' }); blob = new Blob([excelBuffer], { type: fileTypeXLS }); } let url = URL.createObjectURL(blob); element.href = url; element.setAttribute('download', 'PartnerProfile' + fileExtension); element.click(); } }