Angular app for CAC desktop
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

table.component.ts 8.2 KiB

hace 3 años
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import { Component, OnInit } from '@angular/core';
  2. import { PartnerProfileService } from '../../services/partner-profile.service';
  3. import { Router } from '@angular/router';
  4. import * as Papa from 'papaparse';
  5. import * as XLSX from 'xlsx'
  6. @Component({
  7. selector: 'app-table',
  8. templateUrl: './table.component.html',
  9. styleUrls: ['./table.component.scss']
  10. })
  11. export class TableComponent implements OnInit {
  12. userData: Array<any> = [];
  13. tempUserData: Array<any> = [];
  14. showExportOptions: boolean = false;
  15. shouldHaveImplementationData: boolean = false;
  16. searchText: string = '';
  17. selectedPartnerList: Array<any> = [];
  18. constructor(
  19. private partnerProfileService: PartnerProfileService,
  20. private router: Router
  21. ) { }
  22. ngOnInit(): void {
  23. this.getFilteredData();
  24. }
  25. getFilteredData() {
  26. this.partnerProfileService.getPartnersData().then((data: any) => {
  27. this.userData = data;
  28. if (this.shouldHaveImplementationData) {
  29. this.userData = this.userData.filter(user => {
  30. return (user.surveyCtoData.hiiData && user.surveyCtoData.hiiData.length > 0) ||
  31. (user.surveyCtoData.spData && user.surveyCtoData.spData.length > 0) ||
  32. (user.surveyCtoData.spSchemeData && user.surveyCtoData.spSchemeData.length > 0)
  33. });
  34. }
  35. if (this.searchText) {
  36. this.userData = this.userData.filter(user => {
  37. return user.organizationBasicInfo.name && user.organizationBasicInfo.name.toLowerCase().trim().includes(this.searchText.toLowerCase().trim());
  38. })
  39. }
  40. this.partialLoad(this.userData.slice(0, 10))
  41. console.log(this.userData);
  42. }, (e) => console.log(e));
  43. }
  44. partialLoad(data: Array<any>) {
  45. this.tempUserData = data;
  46. console.log(this.tempUserData);
  47. }
  48. loadMore() {
  49. this.partialLoad(this.userData.slice(0, this.tempUserData.length + 10));
  50. }
  51. showPartnerDetails(partner: any) {
  52. this.router.navigate(['dashboard/partners/partner-details'], { queryParams: { data: JSON.stringify(partner) } });
  53. }
  54. selectPartner(partner: any) {
  55. if (this.selectedPartnerList) {
  56. console.log(!this.checkedInput(partner))
  57. if (this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner))) {
  58. this.selectedPartnerList = this.selectedPartnerList.filter(x => JSON.stringify(x) !== JSON.stringify(partner))
  59. } else this.selectedPartnerList.push(partner)
  60. }
  61. }
  62. loadExportData() {
  63. let tempArray = [];
  64. for (const partner of this.selectedPartnerList) {
  65. let csvArray = [{
  66. "PortalID": partner.portalId ? partner.portalId : '-',
  67. // Primary Contact
  68. "Primary Name": partner.primaryContact.contactNumber,
  69. "Primary Contact Number": partner.primaryContact.contactNumber,
  70. "Primary Email": partner.primaryContact.contactNumber,
  71. "Primary Designation": partner.primaryContact.contactNumber,
  72. // Basic Info
  73. "areasOfWork": partner.organizationBasicInfo.areasOfWork ? partner.organizationBasicInfo.areasOfWork.toString() : '',
  74. "name": partner.organizationBasicInfo.name,
  75. "reasonForBecomingMember": partner.organizationBasicInfo.reasonForBecomingMember,
  76. "referralName": partner.organizationBasicInfo.referralName,
  77. "source": partner.organizationBasicInfo.source,
  78. "type": partner.organizationBasicInfo.type,
  79. "website": partner.organizationBasicInfo.website,
  80. "wouldLikeUpdates": partner.organizationBasicInfo.wouldLikeUpdates,
  81. // Alternative Contact
  82. 'Alternative Name': partner.alternateContact.name,
  83. 'Alternative ContactNumber': partner.alternateContact.contactNumber,
  84. 'Alternative Email': partner.alternateContact.email,
  85. 'Alternative Designation': partner.alternateContact.designation,
  86. // Detailed Profile
  87. 'Bio': partner.detailedProfile.bio,
  88. 'Branch Location Countries': partner.detailedProfile.branchLocationCountries ? partner.detailedProfile.branchLocationCountries.toString() : '',
  89. "Communities": partner.detailedProfile.communities ? partner.detailedProfile.communities.toString() : '',
  90. "District": partner.detailedProfile.district,
  91. "Districts": partner.detailedProfile.districts ? partner.detailedProfile.districts.toString() : '',
  92. "Files": partner.detailedProfile.files,
  93. "Have Branches In Other Districts": partner.detailedProfile.haveBranchesInOtherDistricts,
  94. "Logo": partner.detailedProfile.logo,
  95. "Partner Location": partner.detailedProfile.partnerLocation,
  96. "Preferred Languages": partner.detailedProfile.preferredLanguages ? partner.detailedProfile.preferredLanguages.toString() : '',
  97. "Preferred Mode Of Communications": partner.detailedProfile.preferredModeOfCommunications ? partner.detailedProfile.preferredModeOfCommunications.toString() : '',
  98. "State": partner.detailedProfile.state,
  99. "States": partner.detailedProfile.states ? partner.detailedProfile.states.toString() : '',
  100. "Total Reach Of Organization": partner.detailedProfile.totalReachOfOrganization,
  101. "Year Of Establishment": partner.detailedProfile.yearOfEstablishment,
  102. // Strength
  103. "Other Specific Support Required": partner.strengthAndCapability.otherSpecificSupportRequired,
  104. "Primary Areas Of Support Offered": partner.strengthAndCapability.otherSpecificSupportRequired ? partner.strengthAndCapability.otherSpecificSupportRequired.toString() : '',
  105. "Primary Areas Of Support Offered Description": partner.strengthAndCapability.primaryAreasOfSupportOffered,
  106. "Primary Areas Of Support Offered Other": partner.strengthAndCapability.primaryAreasOfSupportOfferedDescription,
  107. "Primary Areas Of Support Required": partner.strengthAndCapability.primaryAreasOfSupportOfferedOther ? partner.strengthAndCapability.primaryAreasOfSupportOfferedOther.toString() : '',
  108. "Primary Areas Of Support Required Description": partner.strengthAndCapability.primaryAreasOfSupportRequired,
  109. "Primary Areas Of Support Required Other": partner.strengthAndCapability.primaryAreasOfSupportRequiredOther,
  110. }]
  111. tempArray.push(csvArray[0])
  112. }
  113. return tempArray;
  114. }
  115. checkedInput(partner: any) {
  116. return this.selectedPartnerList.some(x => JSON.stringify(x) === JSON.stringify(partner))
  117. }
  118. checkedAllInput() {
  119. return JSON.stringify(this.selectedPartnerList) === JSON.stringify(this.tempUserData)
  120. }
  121. selectAllPartner() {
  122. if (JSON.stringify(this.selectedPartnerList) === JSON.stringify(this.tempUserData)) {
  123. this.selectedPartnerList = []
  124. } else this.selectedPartnerList = this.tempUserData
  125. }
  126. exportProfileData(index: number) {
  127. let fileTypeXLS = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
  128. let fileTypeCSV = 'text/csv;charset=utf-8;';
  129. let fileExtension = index === 0 ? '.csv' : '.xlsx';
  130. let element = document.createElement('a');
  131. let blob;
  132. if (index === 0) {
  133. let csvData = Papa.unparse(this.loadExportData());
  134. blob = new Blob([csvData], { type: fileTypeCSV });
  135. } else {
  136. let ws = XLSX.utils.json_to_sheet(this.loadExportData());
  137. let wb = { Sheets: { 'data': ws }, SheetNames: ['data'] };
  138. let excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
  139. blob = new Blob([excelBuffer], { type: fileTypeXLS });
  140. }
  141. let url = URL.createObjectURL(blob);
  142. element.href = url;
  143. element.setAttribute('download', 'PartnerProfile' + fileExtension);
  144. element.click();
  145. }
  146. }