diff --git a/package-lock.json b/package-lock.json index c60733a..3e838d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1946,6 +1946,15 @@ "integrity": "sha512-HCfJdaYqJX3BCzeihgZrD7b85Cu05OC/GVJ4kEYIflwUs4jbnUlLLWoq7hw1LBcdvUyehO+gr6P5JQ895/2ZfA==", "dev": true }, + "@types/papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-BNbCHJkTE4RwmAFkCxEalET4mDvGr/1ld7ZtQ4i/laWI/iiVt+GL07stdvufle4KfywyvloqqpIiJscXNCrKxA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -6258,6 +6267,11 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "papaparse": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", + "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", diff --git a/package.json b/package.json index 644c234..5a4fcfe 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "echarts": "^5.3.0", "echarts-gl": "^2.0.8", "ngx-echarts": "^8.0.1", + "papaparse": "^5.3.1", "rxjs": "~7.4.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -31,6 +32,7 @@ "@angular/compiler-cli": "~13.1.0", "@types/jasmine": "~3.10.0", "@types/node": "^12.11.1", + "@types/papaparse": "^5.3.2", "jasmine-core": "~3.10.0", "karma": "~6.3.0", "karma-chrome-launcher": "~3.1.0", diff --git a/src/app/dashboard/partner-details/partner-details.component.html b/src/app/dashboard/partner-details/partner-details.component.html index 971a62a..2be62d0 100644 --- a/src/app/dashboard/partner-details/partner-details.component.html +++ b/src/app/dashboard/partner-details/partner-details.component.html @@ -1,433 +1,451 @@ -
-
-

Partner Profile

-
- -
- - - -
- - -
-
-
Primary Contact
-
- -
-
- - -
- -
- - -
- -
- - -
- -
- - -
-
-
- -
-
-
Basic Info
-
- -
-
- - -
- -
- - -
- -
- - -
- -
-
- -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
-
- -
- -
-
-
Alternative Contact
-
- -
- - -
- - -
- -
- - -
- -
- - -
-
-
- -
-
-
Detailed Profile
-
- -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
-
- +
+
+ +
+
+

Partner Profile

+
+ +
+ + + +
+ + +
+
+
Primary Contact
+
+ +
+
+ +
- -
- -
-
- + +
+ +
- -
- -
-
- + +
+ +
- -
- -
- - -
- -
-
- + +
+ +
-
- -
-
- +
+ +
+
+
Basic Info
+
+ +
+
+ +
- -
- -
-
- + +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
- -
- -
- - -
- -
- - -
-
-
- -
-
-
- Strength & Capability -
-
- -
-
-
-
- -
- -
- - -
- -
- - -
- -
-
- + +
+ +
+
+
Alternative Contact
+
+ +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
- -
- -
- - -
- -
- - -
- -
- - -
-
-
+
-
-
- - -
-
- - -
-
- - - -
-
-
HII Data
-
-
-
-
- Name -
-
- {{ package.name }} -
+
+
+
Detailed Profile
+
+ +
+
+ +
-
-
- Implementation Status -
-
- {{ package.implementationStatus }} -
+ +
+ +
-
-
- No. of Females -
-
- {{ package.noOfFemales }} -
+ +
+ +
-
-
- No. of Males -
-
- {{ package.noOfMales }} -
+ +
+ +
-
-
- No. of Males -
-
- {{ package.noOfTransgender }} + +
+
+
+
-
-
- Health Package ID -
-
- {{ package.packagesHealth }} + +
+
+
+
-
-
- Health Remarks -
-
- {{ package.healthRemarks }} + +
+
+
+
-
-
- Disaggregation Note -
-
- {{ package.disaggregationNote }} -
+ +
+ +
-
-
- Relevant Documents -
-
- {{ package.relevantDocuments }} + +
+
+
+
-
-
-
-
-
SP Data
-
-
-
-
- Name -
-
- {{ package.name }} +
+
+
+
-
-
- Implementation Status -
-
- {{ package.status }} -
-
-
-
- Total Aggregation -
-
- {{ package.totalAggregation }} + +
+
+
+
-
-
- Other Remarks -
-
- {{ package.otherRemarks }} -
+ +
+ +
-
-
- Relevant Documents -
-
- {{ package.relevantDocuments }} -
-
+ +
+ + +
+
-
-
-
-
SP Scheme
-
-
-
-
- Count -
-
- {{ package.count }} -
+
+
+
+ Strength & Capability +
+
+ +
+
+
+
-
-
- Scheme Id -
-
- {{ package.schemeId }} -
-
+ +
+ +
+ + +
+ +
+ + +
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
-
- - -
\ No newline at end of file diff --git a/src/app/dashboard/partner-details/partner-details.component.scss b/src/app/dashboard/partner-details/partner-details.component.scss index 5079359..b539eb4 100644 --- a/src/app/dashboard/partner-details/partner-details.component.scss +++ b/src/app/dashboard/partner-details/partner-details.component.scss @@ -125,4 +125,53 @@ background-color: var(--input-background); } } -} \ No newline at end of file +} + +.export-options { + width: 190px; + position: absolute; + bottom: 75px; + right: 120px; + z-index: 2; + padding: 10px; + border-radius: var(--common-border-radius); + text-align: center; + background-color: white; + + header { + margin-bottom: 10px; + + h5 { + color: var(--secondary-text); + font-size: 16px; + } + } + + .options { + display: flex; + align-items: center; + justify-content: space-between; + } + + button { + border: 2px solid var(--input-border); + padding: 7px 20px; + margin: 0; + border-radius: var(--common-border-radius); + background-color: white; + color: var(--secondary-text); + font-weight: 500; + } +} + +.shadow { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 2; + background-color: black; + opacity: 0.5; + display: block; + } \ No newline at end of file diff --git a/src/app/dashboard/partner-details/partner-details.component.ts b/src/app/dashboard/partner-details/partner-details.component.ts index aa2af5a..433dede 100644 --- a/src/app/dashboard/partner-details/partner-details.component.ts +++ b/src/app/dashboard/partner-details/partner-details.component.ts @@ -1,5 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import * as Papa from 'papaparse'; + @Component({ selector: 'app-partner-details', @@ -9,10 +11,12 @@ import { ActivatedRoute } from '@angular/router'; export class PartnerDetailsComponent implements OnInit { partnerDetails: any; isFormEditable: boolean = false; - selectedSegment: 1 | 2 | 3 = 2; + selectedSegment: 1 | 2 | 3 = 1; + showExportOptions: boolean = false; + constructor( - private activateRouter:ActivatedRoute + private activateRouter: ActivatedRoute ) { } ngOnInit(): void { @@ -22,4 +26,80 @@ export class PartnerDetailsComponent implements OnInit { }).unsubscribe(); } + + loadCSVData(partnerData: any) { + JSON.stringify(partnerData).split + + let csvArray = [{ + "PortalID": partnerData.portalId ? partnerData.portalId : '-', + + // Primary Contact + + "Primary Name": partnerData.primaryContact.contactNumber, + "Primary Contact Number": partnerData.primaryContact.contactNumber, + "Primary Email": partnerData.primaryContact.contactNumber, + "Primary Designation": partnerData.primaryContact.contactNumber, + + // Basic Info + + "areasOfWork": (partnerData.organizationBasicInfo.areasOfWork).toString(), + "name": partnerData.organizationBasicInfo.name, + "reasonForBecomingMember": partnerData.organizationBasicInfo.reasonForBecomingMember, + "referralName": partnerData.organizationBasicInfo.referralName, + "source": partnerData.organizationBasicInfo.source, + "type": partnerData.organizationBasicInfo.type, + "website": partnerData.organizationBasicInfo.website, + "wouldLikeUpdates": partnerData.organizationBasicInfo.wouldLikeUpdates, + + // Alternative Contact + + 'Alternative Name': partnerData.alternateContact.name, + 'Alternative ContactNumber': partnerData.alternateContact.contactNumber, + 'Alternative Email': partnerData.alternateContact.email, + 'Alternative Designation': partnerData.alternateContact.designation, + + // Detailed Profile + + 'Bio': partnerData.detailedProfile.bio, + 'Branch Location Countries': (partnerData.detailedProfile.branchLocationCountries).toString(), + "Communities": (partnerData.detailedProfile.communities).toString(), + "District": partnerData.detailedProfile.district, + "Districts": (partnerData.detailedProfile.districts).toString(), + "Files": partnerData.detailedProfile.files, + "Have Branches In Other Districts": partnerData.detailedProfile.haveBranchesInOtherDistricts, + "Logo": partnerData.detailedProfile.logo, + "Partner Location": partnerData.detailedProfile.partnerLocation, + "Preferred Languages": (partnerData.detailedProfile.preferredLanguages).toString(), + "Preferred Mode Of Communications": (partnerData.detailedProfile.preferredModeOfCommunications).toString(), + "State": partnerData.detailedProfile.state, + "States": (partnerData.detailedProfile.states).toString(), + "Total Reach Of Organization": partnerData.detailedProfile.totalReachOfOrganization, + "Year Of Establishment": partnerData.detailedProfile.yearOfEstablishment, + + // Strength + + "Other Specific Support Required": partnerData.strengthAndCapability.otherSpecificSupportRequired, + "Primary Areas Of Support Offered": (partnerData.strengthAndCapability.otherSpecificSupportRequired).toString(), + "Primary Areas Of Support Offered Description": partnerData.strengthAndCapability.primaryAreasOfSupportOffered, + "Primary Areas Of Support Offered Other": partnerData.strengthAndCapability.primaryAreasOfSupportOfferedDescription, + "Primary Areas Of Support Required": (partnerData.strengthAndCapability.primaryAreasOfSupportOfferedOther).toString(), + "Primary Areas Of Support Required Description": partnerData.strengthAndCapability.primaryAreasOfSupportRequired, + "Primary Areas Of Support Required Other": partnerData.strengthAndCapability.primaryAreasOfSupportRequiredOther, + }] + return csvArray; + } + + exportCSV() { + let csvData = Papa.unparse(this.loadCSVData(this.partnerDetails)) + let element = document.createElement('a'); + let blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' }); + let url = URL.createObjectURL(blob); + element.href = url; + element.setAttribute('download', 'PartnerProfile.csv'); + element.click(); + } + + exportExcel() { + + } } diff --git a/src/app/dashboard/table/table.component.html b/src/app/dashboard/table/table.component.html index fe8dc6e..0055a78 100644 --- a/src/app/dashboard/table/table.component.html +++ b/src/app/dashboard/table/table.component.html @@ -29,7 +29,7 @@
Export as
- +
diff --git a/src/app/dashboard/table/table.component.ts b/src/app/dashboard/table/table.component.ts index 51fd481..9d5c684 100644 --- a/src/app/dashboard/table/table.component.ts +++ b/src/app/dashboard/table/table.component.ts @@ -1,12 +1,14 @@ import { Component, OnInit } from '@angular/core'; import { PartnerProfileService } from '../../services/partner-profile.service'; import { Router } from '@angular/router'; +import * as Papa from 'papaparse'; @Component({ selector: 'app-table', templateUrl: './table.component.html', styleUrls: ['./table.component.scss'] }) + export class TableComponent implements OnInit { userData: Array = []; tempUserData: Array = []; @@ -25,13 +27,13 @@ export class TableComponent implements OnInit { getFilteredData() { this.partnerProfileService.getPartnersData().then((data: any) => { - this.userData = data; + 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) + 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) }); } @@ -42,7 +44,7 @@ export class TableComponent implements OnInit { } this.partialLoad(this.userData.slice(0, 10)) - + console.log(this.userData); }, (e) => console.log(e)); } @@ -57,7 +59,62 @@ export class TableComponent implements OnInit { } showPartnerDetails(partner: any) { - this.router.navigate(['dashboard/partners/partner-details'], { queryParams : { data: JSON.stringify(partner) } }); + this.router.navigate(['dashboard/partners/partner-details'], { queryParams: { data: JSON.stringify(partner) } }); + } + + loadCSVData(partnerData: any) { + JSON.stringify(partnerData).split + + let csvArray = [{ + "PortalID": partnerData.portalId ? partnerData.portalId : '-', + + // TODO: DetailedProfile + + 'Bio': partnerData.detailedProfile.bio, + 'Branch Location Countries': (partnerData.detailedProfile.branchLocationCountries).toString(), + "Communities": (partnerData.detailedProfile.communities).toString(), + "District": partnerData.detailedProfile.district, + "Districts": (partnerData.detailedProfile.districts).toString(), + "Files": partnerData.detailedProfile.files, + "Have Branches In Other Districts": partnerData.detailedProfile.haveBranchesInOtherDistricts, + "Logo": partnerData.detailedProfile.logo, + "Partner Location": partnerData.detailedProfile.partnerLocation, + "Preferred Languages": (partnerData.detailedProfile.preferredLanguages).toString(), + "Preferred Mode Of Communications": (partnerData.detailedProfile.preferredModeOfCommunications).toString(), + "State": partnerData.detailedProfile.state, + "States": (partnerData.detailedProfile.states).toString(), + "Total Reach Of Organization": partnerData.detailedProfile.totalReachOfOrganization, + "Year Of Establishment": partnerData.detailedProfile.yearOfEstablishment, + + // Primary Contact + + "Primary Name": partnerData.primaryContact.contactNumber, + "Primary Contact Number": partnerData.primaryContact.contactNumber, + "Primary Email": partnerData.primaryContact.contactNumber, + "Primary Designation": partnerData.primaryContact.contactNumber, + + // Alternative Contact + + 'Alternative Name': partnerData.alternateContact.name, + 'Alternative ContactNumber': partnerData.alternateContact.contactNumber, + 'Alternative Email': partnerData.alternateContact.email, + 'Alternative Designation': partnerData.alternateContact.designation, + + // Strength + + "Other Specific Support Required": partnerData.strengthAndCapability.otherSpecificSupportRequired, + "Primary Areas Of Support Offered": (partnerData.strengthAndCapability.otherSpecificSupportRequired).toString(), + "Primary Areas Of Support Offered Description": partnerData.strengthAndCapability.primaryAreasOfSupportOffered, + "Primary Areas Of Support Offered Other": partnerData.strengthAndCapability.primaryAreasOfSupportOfferedDescription, + "Primary Areas Of Support Required": (partnerData.strengthAndCapability.primaryAreasOfSupportOfferedOther).toString(), + "Primary Areas Of Support Required Description": partnerData.strengthAndCapability.primaryAreasOfSupportRequired, + "Primary Areas Of Support Required Other": partnerData.strengthAndCapability.primaryAreasOfSupportRequiredOther, + }] + return csvArray; + } + + exportCSV() { + console.log(this.tempUserData) } } diff --git a/src/app/services/partner-profile.service.ts b/src/app/services/partner-profile.service.ts index 2e4d5c8..f6f3a52 100644 --- a/src/app/services/partner-profile.service.ts +++ b/src/app/services/partner-profile.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { lastValueFrom } from 'rxjs'; -export const BASE_URL = 'http://localhost:8001'; +export const BASE_URL = 'http://143.110.247.94'; // http://localhost:8001 // http://143.110.247.94