ezlibrary_v2 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2020/ezlibrary_v2.mjs +5 -0
- package/esm2020/lib/admin-service/admin-service.service.mjs +34 -0
- package/esm2020/lib/analysis-search/analysis-search.component.mjs +1077 -0
- package/esm2020/lib/assort-service/assort-service.service.mjs +28 -0
- package/esm2020/lib/attribute-definition/attribute-definition.component.mjs +225 -0
- package/esm2020/lib/auth/auth.guard.mjs +37 -0
- package/esm2020/lib/bi-service/bi.service.mjs +57 -0
- package/esm2020/lib/call-info/callinfo.component.mjs +125 -0
- package/esm2020/lib/comman-service/comman-service.service.mjs +678 -0
- package/esm2020/lib/comman-service/share-data-service.service.mjs +23 -0
- package/esm2020/lib/contact-search/contact-search.component.mjs +690 -0
- package/esm2020/lib/contact-service/contact-service.service.mjs +45 -0
- package/esm2020/lib/ez-lib.component.mjs +26 -0
- package/esm2020/lib/ez-lib.module.mjs +232 -0
- package/esm2020/lib/ez-lib.service.mjs +14 -0
- package/esm2020/lib/ezheader/header.component.mjs +400 -0
- package/esm2020/lib/file-upload/fileupload.component.mjs +918 -0
- package/esm2020/lib/file-upload-log/file-upload-log.component.mjs +169 -0
- package/esm2020/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.mjs +14 -0
- package/esm2020/lib/fileupload-module/fileupload-routing.module.mjs +28 -0
- package/esm2020/lib/fileupload-module/fileupload.module.mjs +80 -0
- package/esm2020/lib/footer/footer.component.mjs +18 -0
- package/esm2020/lib/globle/common-pdf.service.mjs +28 -0
- package/esm2020/lib/globle/globle-env.service.mjs +45 -0
- package/esm2020/lib/globle/memo-report.service.mjs +2798 -0
- package/esm2020/lib/globle/shared-services.service.mjs +25 -0
- package/esm2020/lib/globle/upload-service.service.mjs +63 -0
- package/esm2020/lib/header/header.component.mjs +172 -0
- package/esm2020/lib/invalid/invalid.component.mjs +70 -0
- package/esm2020/lib/logout/logout.component.mjs +104 -0
- package/esm2020/lib/menu-right/menu-right.component.mjs +258 -0
- package/esm2020/lib/pipes/number-with-commas.pipe.mjs +24 -0
- package/esm2020/lib/pipes/order-by-pipe.pipe.mjs +17 -0
- package/esm2020/lib/pipes/selectedCount.mjs +19 -0
- package/esm2020/lib/pipes/sum.pipe.mjs +17 -0
- package/esm2020/lib/pkt-data/pkt-data.component.mjs +1109 -0
- package/esm2020/lib/pricing-service/pricing.service.mjs +64 -0
- package/esm2020/lib/qa-analysis/qa-analysis.component.mjs +1028 -0
- package/esm2020/lib/report-format/report-format.component.mjs +403 -0
- package/esm2020/lib/sessionend/session-end.guard.mjs +27 -0
- package/esm2020/lib/stock-service/lazyload.service.mjs +21 -0
- package/esm2020/lib/stock-service/stock-service.service.mjs +58 -0
- package/esm2020/lib/system-module/subform/subform.component.mjs +2817 -0
- package/esm2020/lib/system-module/system/system.component.mjs +970 -0
- package/esm2020/lib/system-module/system-service/system-service.service.mjs +83 -0
- package/esm2020/lib/system-module/system-service/upload-file.service.mjs +83 -0
- package/esm2020/lib/utility/app-no-dbl-click.directive.mjs +24 -0
- package/esm2020/lib/utility/constants.mjs +5 -0
- package/esm2020/lib/utility/contact-table-search.pipe.mjs +25 -0
- package/esm2020/lib/utility/formate-num-field.pipe.mjs +19 -0
- package/esm2020/lib/utility/search-pipe.pipe.mjs +26 -0
- package/esm2020/lib/utility/selective-preloading-strategy.mjs +23 -0
- package/esm2020/lib/utility/table-search.pipe.mjs +25 -0
- package/esm2020/lib/utility/tranform.directive.mjs +27 -0
- package/esm2020/lib/websearch-history/websearch-history.component.mjs +273 -0
- package/esm2020/public-api.mjs +59 -0
- package/ezlibrary_v2.d.ts +5 -0
- package/fesm2015/ezlibrary_v2.mjs +15300 -0
- package/fesm2015/ezlibrary_v2.mjs.map +1 -0
- package/fesm2020/ezlibrary_v2.mjs +15291 -0
- package/fesm2020/ezlibrary_v2.mjs.map +1 -0
- package/lib/admin-service/admin-service.service.d.ts +13 -0
- package/lib/analysis-search/analysis-search.component.d.ts +118 -0
- package/lib/assort-service/assort-service.service.d.ts +12 -0
- package/lib/attribute-definition/attribute-definition.component.d.ts +43 -0
- package/lib/auth/auth.guard.d.ts +14 -0
- package/lib/bi-service/bi.service.d.ts +16 -0
- package/lib/call-info/callinfo.component.d.ts +26 -0
- package/lib/comman-service/comman-service.service.d.ts +106 -0
- package/lib/comman-service/share-data-service.service.d.ts +10 -0
- package/lib/contact-search/contact-search.component.d.ts +111 -0
- package/lib/contact-service/contact-service.service.d.ts +15 -0
- package/lib/ez-lib.component.d.ts +8 -0
- package/lib/ez-lib.module.d.ts +43 -0
- package/lib/ez-lib.service.d.ts +6 -0
- package/lib/ezheader/header.component.d.ts +57 -0
- package/lib/file-upload/fileupload.component.d.ts +127 -0
- package/lib/file-upload-log/file-upload-log.component.d.ts +49 -0
- package/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.d.ts +8 -0
- package/lib/fileupload-module/fileupload-routing.module.d.ts +7 -0
- package/lib/fileupload-module/fileupload.module.d.ts +15 -0
- package/lib/footer/footer.component.d.ts +9 -0
- package/lib/globle/common-pdf.service.d.ts +9 -0
- package/lib/globle/globle-env.service.d.ts +16 -0
- package/lib/globle/memo-report.service.d.ts +107 -0
- package/lib/globle/shared-services.service.d.ts +12 -0
- package/lib/globle/upload-service.service.d.ts +16 -0
- package/lib/header/header.component.d.ts +41 -0
- package/lib/invalid/invalid.component.d.ts +12 -0
- package/lib/logout/logout.component.d.ts +19 -0
- package/lib/menu-right/menu-right.component.d.ts +43 -0
- package/lib/pipes/number-with-commas.pipe.d.ts +7 -0
- package/lib/pipes/order-by-pipe.pipe.d.ts +7 -0
- package/lib/pipes/selectedCount.d.ts +7 -0
- package/lib/pipes/sum.pipe.d.ts +7 -0
- package/lib/pkt-data/pkt-data.component.d.ts +184 -0
- package/lib/pricing-service/pricing.service.d.ts +16 -0
- package/lib/qa-analysis/qa-analysis.component.d.ts +95 -0
- package/lib/report-format/report-format.component.d.ts +74 -0
- package/lib/sessionend/session-end.guard.d.ts +10 -0
- package/lib/stock-service/lazyload.service.d.ts +7 -0
- package/lib/stock-service/stock-service.service.d.ts +15 -0
- package/lib/system-module/subform/subform.component.d.ts +222 -0
- package/lib/system-module/system/system.component.d.ts +109 -0
- package/lib/system-module/system-service/system-service.service.d.ts +23 -0
- package/lib/system-module/system-service/upload-file.service.d.ts +12 -0
- package/lib/utility/app-no-dbl-click.directive.d.ts +7 -0
- package/lib/utility/constants.d.ts +4 -0
- package/lib/utility/contact-table-search.pipe.d.ts +7 -0
- package/lib/utility/formate-num-field.pipe.d.ts +7 -0
- package/lib/utility/search-pipe.pipe.d.ts +7 -0
- package/lib/utility/selective-preloading-strategy.d.ts +9 -0
- package/lib/utility/table-search.pipe.d.ts +7 -0
- package/lib/utility/tranform.directive.d.ts +10 -0
- package/lib/websearch-history/websearch-history.component.d.ts +56 -0
- package/package.json +31 -0
- package/public-api.d.ts +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ezlibrary_v2.mjs","sources":["../../../projects/ez-lib/src/lib/ez-lib.service.ts","../../../projects/ez-lib/src/lib/ez-lib.component.ts","../../../projects/ez-lib/src/lib/globle/globle-env.service.ts","../../../projects/ez-lib/src/lib/pricing-service/pricing.service.ts","../../../projects/ez-lib/src/lib/comman-service/comman-service.service.ts","../../../projects/ez-lib/src/lib/utility/app-no-dbl-click.directive.ts","../../../projects/ez-lib/src/lib/attribute-definition/attribute-definition.component.ts","../../../projects/ez-lib/src/lib/attribute-definition/attribute-definition.component.html","../../../projects/ez-lib/src/lib/bi-service/bi.service.ts","../../../projects/ez-lib/src/lib/analysis-search/analysis-search.component.ts","../../../projects/ez-lib/src/lib/analysis-search/analysis-search.component.html","../../../projects/ez-lib/src/lib/call-info/callinfo.component.ts","../../../projects/ez-lib/src/lib/call-info/callinfo.component.html","../../../projects/ez-lib/src/lib/contact-service/contact-service.service.ts","../../../projects/ez-lib/src/lib/stock-service/stock-service.service.ts","../../../projects/ez-lib/src/lib/utility/contact-table-search.pipe.ts","../../../projects/ez-lib/src/lib/contact-search/contact-search.component.ts","../../../projects/ez-lib/src/lib/contact-search/contact-search.component.html","../../../projects/ez-lib/src/lib/utility/table-search.pipe.ts","../../../projects/ez-lib/src/lib/ezheader/header.component.ts","../../../projects/ez-lib/src/lib/ezheader/header.component.html","../../../projects/ez-lib/src/lib/footer/footer.component.ts","../../../projects/ez-lib/src/lib/footer/footer.component.html","../../../projects/ez-lib/src/lib/comman-service/share-data-service.service.ts","../../../projects/ez-lib/src/lib/header/header.component.ts","../../../projects/ez-lib/src/lib/header/header.component.html","../../../projects/ez-lib/src/lib/invalid/invalid.component.ts","../../../projects/ez-lib/src/lib/invalid/invalid.component.html","../../../projects/ez-lib/src/lib/logout/logout.component.ts","../../../projects/ez-lib/src/lib/logout/logout.component.html","../../../projects/ez-lib/src/lib/admin-service/admin-service.service.ts","../../../projects/ez-lib/src/lib/menu-right/menu-right.component.ts","../../../projects/ez-lib/src/lib/menu-right/menu-right.component.html","../../../projects/ez-lib/src/lib/pipes/number-with-commas.pipe.ts","../../../projects/ez-lib/src/lib/pipes/order-by-pipe.pipe.ts","../../../projects/ez-lib/src/lib/pipes/selectedCount.ts","../../../projects/ez-lib/src/lib/pipes/sum.pipe.ts","../../../projects/ez-lib/src/lib/pkt-data/pkt-data.component.ts","../../../projects/ez-lib/src/lib/pkt-data/pkt-data.component.html","../../../projects/ez-lib/src/lib/qa-analysis/qa-analysis.component.ts","../../../projects/ez-lib/src/lib/qa-analysis/qa-analysis.component.html","../../../projects/ez-lib/src/lib/file-upload/fileupload.component.ts","../../../projects/ez-lib/src/lib/file-upload/fileupload.component.html","../../../projects/ez-lib/src/lib/globle/upload-service.service.ts","../../../projects/ez-lib/src/lib/file-upload-log/file-upload-log.component.ts","../../../projects/ez-lib/src/lib/file-upload-log/file-upload-log.component.html","../../../projects/ez-lib/src/lib/system-module/system-service/system-service.service.ts","../../../projects/ez-lib/src/lib/utility/search-pipe.pipe.ts","../../../projects/ez-lib/src/lib/system-module/system/system.component.ts","../../../projects/ez-lib/src/lib/system-module/system/system.component.html","../../../projects/ez-lib/src/lib/system-module/system-service/upload-file.service.ts","../../../projects/ez-lib/src/lib/system-module/subform/subform.component.ts","../../../projects/ez-lib/src/lib/system-module/subform/subform.component.html","../../../projects/ez-lib/src/lib/report-format/report-format.component.ts","../../../projects/ez-lib/src/lib/report-format/report-format.component.html","../../../projects/ez-lib/src/lib/utility/formate-num-field.pipe.ts","../../../projects/ez-lib/src/lib/utility/tranform.directive.ts","../../../projects/ez-lib/src/lib/websearch-history/websearch-history.component.ts","../../../projects/ez-lib/src/lib/websearch-history/websearch-history.component.html","../../../projects/ez-lib/src/lib/ez-lib.module.ts","../../../projects/ez-lib/src/lib/auth/auth.guard.ts","../../../projects/ez-lib/src/lib/assort-service/assort-service.service.ts","../../../projects/ez-lib/src/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.ts","../../../projects/ez-lib/src/lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component.html","../../../projects/ez-lib/src/lib/sessionend/session-end.guard.ts","../../../projects/ez-lib/src/lib/fileupload-module/fileupload-routing.module.ts","../../../projects/ez-lib/src/lib/fileupload-module/fileupload.module.ts","../../../projects/ez-lib/src/lib/globle/common-pdf.service.ts","../../../projects/ez-lib/src/lib/globle/memo-report.service.ts","../../../projects/ez-lib/src/lib/globle/shared-services.service.ts","../../../projects/ez-lib/src/lib/stock-service/lazyload.service.ts","../../../projects/ez-lib/src/lib/utility/constants.ts","../../../projects/ez-lib/src/lib/utility/selective-preloading-strategy.ts","../../../projects/ez-lib/src/public-api.ts","../../../projects/ez-lib/src/ezlibrary_v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EzLibService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-ezLib',\n template: `\n <p>\n ez-lib works!\n </p>\n `,\n styles: [\n ]\n})\nexport class EzLibComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobleEnvService {\r\n\r\n\r\n \r\n baseUrl = 'https://ws.kapugems.com/';\r\n readonly hostname = window.location.hostname;\r\n readonly pathname = window.location.pathname;\r\n readonly origin = window.location.origin;\r\n applNme=\"\";\r\n cUrl;\r\n\r\n constructor(\r\n private router: Router,\r\n ) {\r\n\r\n if(localStorage.getItem('enviroment') == 'dev'){\r\n this.baseUrl='https://apilb.kapugems.in/'\r\n }\r\n\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.cUrl = event.url;\r\n }\r\n });\r\n }\r\n\r\n getCookie() {\r\n return Cookie.get('_ck');\r\n }\r\n \r\n changeEnviroment(enviroment){\r\n console.log('enviroment',enviroment)\r\n localStorage.setItem('enviroment',enviroment) \r\n if(localStorage.getItem('enviroment') == 'dev'){\r\n this.baseUrl='https://apilb.kapugems.in/'\r\n }else{\r\n this.baseUrl='https://apilb.kapugems.com/'\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { pipe, throwError } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PricingService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private glbEnv: GlobleEnvService,\r\n // private _spinnerService: Ng4LoadingSpinnerService,\r\n // private _flashMessagesService: FlashMessagesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n private header: any = {};\r\n\r\n data(reqObj, method, url): Observable<any> {\r\n // this._spinnerService.show();\r\n if (localStorage.getItem('mdlKey') != null) {\r\n let cUrl = this.router.url;\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs',\r\n 'method': method\r\n };\r\n }\r\n console.log(this.header);\r\n // let options: any = new RequestOptions({ headers: this.header });\r\n let options: any = new HttpHeaders({ headers: this.header });\r\n // return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n // .map((res: any) => res)\r\n // .pipe(catchError((error) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // return throwError(error);\r\n // }));\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n pipe( map((res: any) => res))\r\n pipe(catchError((error) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n}\r\n","import { Injectable,Component } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { DatePipe } from '@angular/common';\r\nimport { map } from 'rxjs/operators';\r\nimport { HeadObjectOutputFilterSensitiveLog } from '@aws-sdk/client-s3';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class CommanServiceService {\r\n\r\n readonly cDate = new Date();\r\n header;\r\n a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];\r\n b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];\r\n\r\n constructor(\r\n public router: Router,\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService,\r\n // private FlashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private datePipe:DatePipe\r\n ) { }\r\n\r\n loadList(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'dashbord/module', JSON.stringify(reqObj), {headers:headers})\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n menuList(reqObj, headers) {\r\n JSON.stringify(reqObj);\r\n return this.http.post(this.glbEnv.baseUrl + 'login/loadMenu', JSON.stringify(reqObj), {headers:headers})\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n loadmenuList(reqObj, headers) {\r\n JSON.stringify(reqObj);\r\n return this.http.post(this.glbEnv.baseUrl + 'login/getMenu', JSON.stringify(reqObj), {headers:headers})\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n logout(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'login/authentication', JSON.stringify(reqObj), {headers:headers})\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n authLogout(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'login/authLogout', JSON.stringify(reqObj), {headers:headers})\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n \r\n async getVnmseq(reqObj, headers) {\r\n console.log(\"headers\",headers);\r\n return await this.http.post(this.glbEnv.baseUrl + 'accounts/masterdata', JSON.stringify(reqObj), {headers:headers})\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n CSVConvertor(JSONData, ReportTitle, ShowLabel) {\r\n let arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;\r\n console.log(\"arrData\", arrData);\r\n\r\n let CSV = '';\r\n if (ShowLabel) {\r\n let row = \"\";\r\n for (let index in arrData[0]) {\r\n row += index + ',';\r\n }\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n for (let i = 0; i < arrData.length; i++) {\r\n let row = \"\";\r\n if (arrData[i] != 'br') {\r\n for (let index in arrData[i]) {\r\n row += '\"' + arrData[i][index] + '\",';\r\n }\r\n row.slice(0, row.length - 1);\r\n }\r\n\r\n CSV += row + '\\r\\n';\r\n }\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n // console.log(\"arrData\", arrData);\r\n let fileName = \"Report_\";\r\n let cTime = new Date().toISOString().substring(0, 19);\r\n fileName += ReportTitle.replace(/ /g, \"_\") + cTime + \".csv\";\r\n var blob = new Blob([CSV], {\r\n type: \"application/csv;charset=utf-8;\"\r\n });\r\n\r\n var link = document.createElement(\"a\");\r\n var csvUrl = URL.createObjectURL(blob);\r\n link.href = csvUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n //let uri = 'data:text/csv;charset=utf-8,' + escape(CSV);\r\n // let link = document.createElement(\"a\");\r\n //link.href = uri;\r\n // link.style = \"visibility:hidden\";\r\n // link.download = fileName + \".csv\";\r\n // document.body.appendChild(link);\r\n // link.click();\r\n // document.body.removeChild(link);\r\n }\r\n\r\n COmparisionCSVConvertor(Headers, HdrDtl, JSONData, ReportTitle, ShowLabel) {\r\n let arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;\r\n let CSV = '';\r\n if (ShowLabel) {\r\n let row = \"\";\r\n row += 'Sr' + ',';\r\n row += 'Employee' + ',';\r\n row += 'Trans Id' + ',';\r\n row += 'Process Name' + ',';\r\n row += 'Status' + ',';\r\n row += 'Packet Code' + ',';\r\n row += 'Date' + ',';\r\n\r\n Headers.forEach(element => {\r\n row += HdrDtl[element] + ',';\r\n });\r\n\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n for (let i = 0; i < arrData.length; i++) {\r\n let row = \"\";\r\n\r\n row += '\"' + arrData[i]['sr'] + '\",';\r\n row += '\"' + arrData[i]['employee'] + '\",';\r\n row += '\"' + arrData[i]['transaction_qc_idn'] + '\",';\r\n row += '\"' + arrData[i]['processNme'] + '\",';\r\n row += '\"' + arrData[i]['status'] + '\",';\r\n row += '\"' + arrData[i]['pkt_code'] + '\",';\r\n\r\n row += '\"' + arrData[i]['issue_ts'] + '\\n' + arrData[i]['modified_ts'] + '\",';\r\n\r\n Headers.forEach(element => {\r\n let issval = \"\";\r\n let rtval = \"\";\r\n issval = arrData[i]['issval'][element] == undefined ? '' : arrData[i]['issval'][element];\r\n rtval = arrData[i]['rtnval'][element] == undefined ? '' : arrData[i]['rtnval'][element];\r\n row += '\"' + issval + '\\n' + rtval + '\",';\r\n });\r\n \r\n row.slice(0, row.length - 1);\r\n\r\n CSV += row + '\\r\\n';\r\n }\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n let fileName = \"Report_\";\r\n let cTime = new Date().toISOString().substring(0, 19);\r\n fileName += ReportTitle.replace(/ /g, \"_\") + cTime + \".csv\";\r\n var blob = new Blob([CSV], {\r\n type: \"application/csv;charset=utf-8;\"\r\n });\r\n\r\n var link = document.createElement(\"a\");\r\n var csvUrl = URL.createObjectURL(blob);\r\n link.href = csvUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n }\r\n\r\n //Title, groupSummary, attrDtl, attrDisplayDtl, GrpList, finalGrpVal\r\n CSVConvertorGrpWise(groupSummary, attrDtl, attrDisplayDtl, GrpList, finalGrpVal, ReportTitle, ShowLabel) {\r\n\r\n let Ovals = Object.values(attrDisplayDtl);\r\n\r\n let arrData = typeof finalGrpVal != 'object' ? JSON.parse(finalGrpVal) : finalGrpVal;\r\n console.log(\"arrData\", arrData);\r\n\r\n\r\n let CSV = '';\r\n if (ShowLabel) {\r\n let row = \"\";\r\n for (let index in Ovals) {\r\n row += Ovals[index] + ',';\r\n }\r\n row = row.slice(0, -1);\r\n CSV += row + '\\r\\n';\r\n }\r\n\r\n\r\n\r\n GrpList.forEach(element => {\r\n let grp = '', qty = '', cts = '', rte = '', amt = '';\r\n grp = \"Group : \" + element.grp == undefined ? \"\" : \"Group : \" + element.grp;\r\n qty = groupSummary[element.grp + '_QTY'] == undefined ? \"\" : \"QTY : \" + groupSummary[element.grp + '_QTY'];\r\n cts = groupSummary[element.grp + '_CTS'] == undefined ? \"\" : \"Carats : \" + groupSummary[element.grp + '_CTS'];\r\n rte = groupSummary[element.grp + '_RTE'] == undefined ? \"\" : \"Rate : \" + groupSummary[element.grp + '_RTE'];\r\n amt = groupSummary[element.grp + '_AMT'] == undefined ? \"\" : \"Amount : \" + groupSummary[element.grp + '_AMT'];\r\n\r\n\r\n\r\n let row = \"\";\r\n row = grp + \" \" + qty + \" \" + cts + \" \" + rte + \" \" + amt;\r\n //row = \"Group : \" + element.grp +\r\n // groupSummary[element.grp + '_QTY'] == undefined ? \"\" : \"QTY : \" + groupSummary[element.grp + '_QTY'] +\r\n // groupSummary[element.grp + '_CTS'] == undefined ? \"\" : \"Carats : \" + groupSummary[element.grp + '_CTS'] +\r\n // groupSummary[element.grp + '_RTE'] == undefined ? \"\" : \"Rate : \" + groupSummary[element.grp + '_RTE'] +\r\n // groupSummary[element.grp + '_AMT'] == undefined ? \"\" : \"Amount : \" + groupSummary[element.grp + '_AMT'];\r\n CSV += row + '\\r\\n';\r\n finalGrpVal[element.grp].forEach(pktdtl => {\r\n let r = \"\";\r\n attrDtl.forEach(att => {\r\n r += pktdtl[att] + ',';\r\n });\r\n r = r.slice(0, -1);\r\n CSV += r + '\\r\\n';\r\n });\r\n });\r\n\r\n if (CSV == '') {\r\n alert(\"Invalid data\");\r\n return;\r\n }\r\n\r\n\r\n console.log(\"arrData\", arrData);\r\n let fileName = \"Report_\";\r\n fileName += ReportTitle.replace(/ /g, \"_\") + \".csv\";\r\n var blob = new Blob([CSV], {\r\n type: \"application/csv;charset=utf-8;\"\r\n });\r\n\r\n var link = document.createElement(\"a\");\r\n var csvUrl = URL.createObjectURL(blob);\r\n link.href = csvUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n }\r\n\r\n\r\n modifyDataByHeader(searchResultDtl, resultView, resultViewDtl) {\r\n let obj = {}\r\n let modifiedObjArr = [];\r\n for (let i = 0; i < searchResultDtl.length; i++) {\r\n for (let j = 0; j < resultView.length; j++) {\r\n let vals = searchResultDtl[i][resultView[j]];\r\n obj[resultViewDtl[resultView[j]]] = vals;\r\n }\r\n modifiedObjArr.push(obj);\r\n obj = {};\r\n }\r\n console.log(modifiedObjArr);\r\n return modifiedObjArr;\r\n }\r\n\r\n modifyGrpDataByHeader(searchResultDtl, resultView, resultViewDtl) {\r\n let obj = {}\r\n let modifiedObjArr = [];\r\n for (let grpk in searchResultDtl) {\r\n searchResultDtl[grpk].forEach(pkts => {\r\n for (let j = 0; j < resultView.length; j++) {\r\n let vals = pkts[resultView[j]];\r\n obj[resultViewDtl[resultView[j]]] = vals;\r\n }\r\n modifiedObjArr.push(obj);\r\n obj = {};\r\n });\r\n modifiedObjArr.push(\"br\");\r\n }\r\n return modifiedObjArr;\r\n }\r\n\r\n formatDate(date) {\r\n let d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return [day, month, year].join('-');\r\n }\r\n\r\n formatDateSC(date) {\r\n \r\n let d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return [year, month, day].join('-');\r\n }\r\n\r\n ddMMYYYY(date) {\r\n let d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return [day, month, year].join('-');\r\n }\r\n \r\n FormatDate(date,format){\r\n let d = this.datePipe.transform(date, format);\r\n return d;\r\n }\r\n\r\n ddMMYYYYnum(date) {\r\n let d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\ndebugger\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return year+month+day;\r\n }\r\n\r\n formatDateSCMonthBefore(date) {\r\n if(date!=undefined && date!=\"\"){\r\n\r\n let d = new Date(date),\r\n month = '' + (d.getMonth()),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n d.setDate(d.getDate() - 30);\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return [year, month, day].join('-');\r\n }\r\n }\r\n \r\n numberFloat(number){\r\n debugger\r\n number=number||0;\r\n return parseFloat(number);\r\n\r\n }\r\n \r\n dateValidation(date,formate){\r\n debugger;\r\n var dd; \r\n var mm; \r\n var yy; \r\n date=date.replace('-','/')\r\n date=date.replace('-','/')\r\n var parts = date.split('/');\r\n \r\n if (formate == 'dd/mm/yy') {\r\n dd = parts[0];\r\n mm = parts[1];\r\n yy = parts[2]; \t \r\n } else if(formate == 'mm/dd/yy'){\r\n mm = parts[0];\r\n dd = parts[1];\r\n yy = parts[2]; \r\n }else if(formate == 'dd/Mon/yy'){ \r\n dd = parts[0];\r\n mm = parts[1];\r\n yy = parts[2]; \r\n let d = new Date(date)\r\n mm = (d.getMonth())+1\r\n mm =mm.toString();\r\n }\r\n \r\n if(mm.length < 2)\r\n mm = '0'+mm;\r\n if(dd.length < 2)\r\n dd = '0'+dd;\r\n if(yy.length < 4)\r\n yy = '20'+yy;\r\n\r\n let mmint = parseInt(mm);\r\n\r\n let ddint = parseInt(dd);\r\n if(ddint > 31)\r\n return 'invaild'\r\n else if(mmint > 12)\r\n return 'invaild'\r\n else\r\n return yy+mm+dd;\r\n }\r\n\r\n splitToTwoDecimal(inputval) {\r\n if (inputval && inputval != Infinity) {\r\n return inputval.toString().toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)[0];\r\n }\r\n }\r\n\r\n splitToThreeDecimal(inputval) {\r\n if (inputval && inputval != Infinity) {\r\n return inputval.toString().toString().match(/^-?\\d+(?:\\.\\d{0,3})?/)[0];\r\n }\r\n }\r\n\r\n\r\n roundval(inputval) {\r\n if (inputval) {\r\n return Math.round(inputval);\r\n }\r\n }\r\n\r\n roundUp(num, precision) {\r\n precision = Math.pow(10, precision)\r\n return Math.ceil(num * precision) / precision\r\n }\r\n\r\n getSignedUrl(s3details,doc_nme,bucket){\r\n debugger\r\n let urlParams = {\r\n Bucket: s3details[\"docbucket\"],\r\n Key: s3details[\"docfolder\"]+\"/\"+doc_nme\r\n };\r\n bucket.getSignedUrl(\"getObject\", urlParams, function( err, url ) {\r\n return url;\r\n });\r\n }\r\n numbertofixed(inputval,decimal) {\r\n if (inputval) {\r\n inputval=inputval.toFixed(decimal);\r\n return inputval;\r\n }else{\r\n return inputval;\r\n }\r\n }\r\n\r\n floorFigure(figure, decimals) {\r\n let a;\r\n if(figure!=null && figure!=undefined ){\r\n if (decimals == -1)\r\n return Math.floor(figure);\r\n if (decimals == 0)\r\n return Math.trunc(figure);\r\n if (!decimals) decimals = 2;\r\n let d = Math.pow(10, decimals);\r\n\r\n var str = figure.toString(); \r\n a= parseFloat(str); \r\n decimals = parseInt(decimals);\r\n if(str.indexOf(\".\") != -1){\r\n var fctr ;\r\n debugger\r\n if (((figure.toString().split(\".\")[1]).length) == 2) {\r\n fctr = figure.toString().split(\".\")[1];\r\n } \r\n if (((figure.toString().split(\".\")[1]).length) == 1) {\r\n fctr = figure.toString().split(\".\")[1].concat(\"0\");\r\n } \r\n \r\n if (((figure.toString().split(\".\")[1]).length) > 2) {\r\n fctr = figure.toString().split(\".\")[1].substring(0,decimals);\r\n } \r\n \r\n a = Math.trunc(figure) + \".\" + fctr;\r\n } \r\n \r\n}else{\r\n a=figure;\r\n}\r\n return a;\r\n}\r\n\r\n scrollToDiv(el) {\r\n let x = document.getElementById(el);\r\n return x.scrollIntoView();\r\n }\r\n\r\n getIp() : any {\r\n return this.http.get(\"http://ipinfo.io/json/\")\r\n .pipe(map((res: any) => res))\r\n }\r\n\r\n pageBck = () => window.history.back();\r\n\r\n getBrowserInfo() {\r\n let nVer = navigator.appVersion;\r\n let nAgt = navigator.userAgent;\r\n let browserName = navigator.appName;\r\n let fullVersion = '' + parseFloat(navigator.appVersion);\r\n let majorVersion = parseInt(navigator.appVersion, 10);\r\n let nameOffset, verOffset, ix;\r\n\r\n // In Opera 15+, the true version is after \"OPR/\" \r\n if ((verOffset = nAgt.indexOf(\"OPR/\")) != -1) {\r\n browserName = \"Opera\";\r\n fullVersion = nAgt.substring(verOffset + 4);\r\n }\r\n // In older Opera, the true version is after \"Opera\" or after \"Version\"\r\n else if ((verOffset = nAgt.indexOf(\"Opera\")) != -1) {\r\n browserName = \"Opera\";\r\n fullVersion = nAgt.substring(verOffset + 6);\r\n if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\r\n fullVersion = nAgt.substring(verOffset + 8);\r\n }\r\n // In MSIE, the true version is after \"MSIE\" in userAgent\r\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) != -1) {\r\n browserName = \"Microsoft Internet Explorer\";\r\n fullVersion = nAgt.substring(verOffset + 5);\r\n }\r\n // In Chrome, the true version is after \"Chrome\" \r\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) != -1) {\r\n browserName = \"Chrome\";\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n // In Safari, the true version is after \"Safari\" or after \"Version\" \r\n else if ((verOffset = nAgt.indexOf(\"Safari\")) != -1) {\r\n browserName = \"Safari\";\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\r\n fullVersion = nAgt.substring(verOffset + 8);\r\n }\r\n // In Firefox, the true version is after \"Firefox\" \r\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) != -1) {\r\n browserName = \"Firefox\";\r\n fullVersion = nAgt.substring(verOffset + 8);\r\n }\r\n // In most other browsers, \"name/version\" is at the end of userAgent \r\n else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) <\r\n (verOffset = nAgt.lastIndexOf('/'))) {\r\n browserName = nAgt.substring(nameOffset, verOffset);\r\n fullVersion = nAgt.substring(verOffset + 1);\r\n if (browserName.toLowerCase() == browserName.toUpperCase()) {\r\n browserName = navigator.appName;\r\n }\r\n }\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(\";\")) != -1)\r\n fullVersion = fullVersion.substring(0, ix);\r\n if ((ix = fullVersion.indexOf(\" \")) != -1)\r\n fullVersion = fullVersion.substring(0, ix);\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n let Obj = {\r\n 'browserName': browserName,\r\n 'version': fullVersion,\r\n 'majorVersion': majorVersion,\r\n 'appName': navigator.appName,\r\n 'userAgent': navigator.userAgent\r\n }\r\n return Obj;\r\n }\r\n\r\n editorConfig = {\r\n \"editable\": true,\r\n \"spellcheck\": true,\r\n \"height\": \"110px\",\r\n \"minHeight\": \"110px\",\r\n \"width\": \"auto\",\r\n \"minWidth\": \"0\",\r\n \"translate\": \"yes\",\r\n \"enableToolbar\": true,\r\n \"showToolbar\": true,\r\n \"placeholder\": \"Enter text here...\",\r\n \"imageEndPoint\": \"\",\r\n \"toolbar\": [\r\n [\"bold\", \"italic\", \"underline\", \"strikeThrough\", \"superscript\", \"subscript\"],\r\n [\"fontName\", \"fontSize\", \"color\"],\r\n [\"justifyLeft\", \"justifyCenter\", \"justifyRight\", \"justifyFull\", \"indent\", \"outdent\"],\r\n [\"cut\", \"copy\", \"delete\", \"removeFormat\", \"undo\", \"redo\"],\r\n [\"paragraph\", \"blockquote\", \"removeBlockquote\", \"horizontalLine\", \"orderedList\", \"unorderedList\"],\r\n [\"link\", \"unlink\", \"image\", \"video\"]\r\n ]\r\n }\r\n\r\n formateStr(str) {\r\n str = str.trim();\r\n str = str.replace(/[ ,]+/g, \",\");\r\n str = str.replace(/\\n/g, \",\");\r\n return str;\r\n }\r\n\r\n startRFIDScan(deviceId, formNme) {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n let cUrl = this.router.url;\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'method': 'startBarCodeReading',\r\n 'source': 'qs'\r\n };\r\n let reqObj = {};\r\n reqObj['formNme'] = formNme;\r\n reqObj['deviceId'] = deviceId;\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n // let options = new RequestOptions({ headers: this.header });\r\n this.load(reqObj, options, 'marketing/barCodeReader').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.FlashMessagesService.show('Scan Started...', { cssClass: 'alert-success', timeout: 3000 });\r\n return response.scan_idn;\r\n }\r\n });\r\n }\r\n\r\n StopRFIDScan(scan_idn, formNme) {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n let cUrl = this.router.url;\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'method': 'stopBarCodeReading',\r\n 'source': 'qs'\r\n };\r\n let reqObj = {};\r\n reqObj['formNme'] = formNme;\r\n reqObj['scanId'] = scan_idn;\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n // let options = new RequestOptions({ headers: this.header });\r\n this.load(reqObj, options, 'marketing/barCodeReader').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.FlashMessagesService.show('Scan Stopped...', { cssClass: 'alert-success', timeout: 3000 });\r\n return response.scan_idn;\r\n }\r\n });\r\n }\r\n\r\n//{ headers: this.header }\r\n load(reqObj, headers, url) {\r\n console.log(headers);\r\n // return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), { headers: headers })\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), { headers: headers })\r\n .toPromise()\r\n .then((response) => response).catch(err => {\r\n debugger;\r\n // this.spinnerService.hide();\r\n // this.FlashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n loadiFile(reqObj, header, url) {\r\n // let options: any = new RequestOptions({ headers: header });\r\n let options: any = new HttpHeaders({ headers: header });\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n .toPromise()\r\n .then((response) => response).catch(err => {\r\n // this.spinnerService.hide();\r\n // this.FlashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n \r\n numberWithCommas(x) {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n }\r\n\r\n // new function for indian and english format commas\r\n numberWithCommasFormat(num) {\r\n if (localStorage.getItem('commaFormat') == 'eng') {\r\n var parts = num.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n }\r\n else {\r\n var parts = num.toString().split(\".\");\r\n let x = parts[0];\r\n x = x.replaceAll(',', ''); //removing pre existing commas if any\r\n var lastThree = x.substring(x.length-3);\r\n var otherNumbers = x.substring(0,x.length-3);\r\n if(otherNumbers != '')\r\n lastThree = ',' + lastThree;\r\n var res = otherNumbers.replace(/\\B(?=(\\d{2})+(?!\\d))/g, \",\") + lastThree;\r\n parts[0] = res;\r\n return parts.join(\".\");\r\n }\r\n}\r\n\r\n inWordsINR(num) {\r\n if ((num = num.toString()).length > 9) return 'overflow';\r\n let n = [];\r\n n = ('000000000' + num).substr(-9).match(/^(\\d{2})(\\d{2})(\\d{2})(\\d{1})(\\d{2})$/);\r\n if (!n) return; var str = '';\r\n str += (n[1] != 0) ? (this.a[Number(n[1])] || this.b[n[1][0]] + ' ' + this.a[n[1][1]]) + 'crore ' : '';\r\n str += (n[2] != 0) ? (this.a[Number(n[2])] || this.b[n[2][0]] + ' ' + this.a[n[2][1]]) + 'lakh ' : '';\r\n str += (n[3] != 0) ? (this.a[Number(n[3])] || this.b[n[3][0]] + ' ' + this.a[n[3][1]]) + 'thousand ' : '';\r\n str += (n[4] != 0) ? (this.a[Number(n[4])] || this.b[n[4][0]] + ' ' + this.a[n[4][1]]) + 'hundred ' : '';\r\n str += (n[5] != 0) ? ((str != '') ? 'and ' : '') + (this.a[Number(n[5])] || this.b[n[5][0]] + ' ' + this.a[n[5][1]]) + 'only ' : '';\r\n console.log(str);\r\n return str;\r\n }\r\n\r\n\r\n randomnumber() {\r\n let num = Math.floor((Math.random() * 10000) + 100);\r\n return num;\r\n }\r\n\r\n tagboxSettings: {\r\n enableFilterSelectAll: false,\r\n singleSelection: false,\r\n text: \"Select status\",\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n enableSearchFilter: true,\r\n classes: \"myclass custom-class\"\r\n }\r\n\r\n removeEmpty(obj) {\r\n return Object.keys(obj)\r\n .filter(function (k) {\r\n return obj[k]||'' != '';\r\n })\r\n .reduce(function (acc, k) {\r\n acc[k] = obj[k];\r\n return acc;\r\n }, {});\r\n }\r\n\r\n config = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '15rem',\r\n minHeight: '5rem',\r\n placeholder: 'Enter text here...',\r\n translate: 'no',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: 'Arial',\r\n customClasses: [\r\n {\r\n name: \"quote\",\r\n class: \"quote\",\r\n },\r\n {\r\n name: 'redText',\r\n class: 'redText'\r\n },\r\n {\r\n name: \"titleText\",\r\n class: \"titleText\",\r\n tag: \"h1\",\r\n },\r\n ]\r\n };\r\n\r\n}","// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appAppNoDblClick]'\r\n})\r\nexport class AppNoDblClickDirective {\r\n\r\n constructor() { }\r\n\r\n @HostListener('click', ['$event'])\r\n clickEvent(event) {\r\n event.srcElement.setAttribute('disabled', true);\r\n setTimeout(function () {\r\n event.srcElement.removeAttribute('disabled');\r\n }, 2000);\r\n }\r\n\r\n}\r\n","import { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { PricingService } from './../pricing-service/pricing.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { FormArray, FormGroup, FormBuilder } from '@angular/forms';\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-attribute-definition',\r\n templateUrl: './attribute-definition.component.html',\r\n styleUrls: ['./attribute-definition.component.css']\r\n})\r\nexport class AttributeDefinitionComponent implements OnInit {\r\n\r\n myFormmm: FormGroup;\r\n\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private ps: PricingService,\r\n public cs: CommanServiceService,\r\n private fb: FormBuilder\r\n ) { }\r\n\r\n addNew;\r\n pageInfo;\r\n attibutes;\r\n priceDefination: any = [];\r\n attribute;\r\n btnAction;\r\n pageSize;\r\n searchF;\r\n btnName;\r\n //load page defination \r\n getPageDefination() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'priceGroupForm';\r\n reqObj['grpIdn'] = this.route.snapshot.params['id'];\r\n this.ps.data(reqObj, 'loadData', 'pricing/load')\r\n .subscribe(response => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n let res = response.result;\r\n let pageDefination = res.pageDefination;\r\n // this.spinnerService.hide();\r\n this.priceDefination = [...res.priceDefination];\r\n this.btnAction = res.pageDefination.action;\r\n this.addNew = pageDefination.button[0];\r\n this.pageInfo = res.pageDefination;\r\n this.attibutes = res.attrStructureDtl.map(option => ({\r\n sort: option.sort,\r\n label: option.print + ' ' + '(' + option.attr + ')',\r\n type: option.dataType,\r\n value: option.attr,\r\n prpList: option.prpList\r\n }));\r\n // this.pkf = response.pageInfo.primary_key_field;\r\n // this.datalist = response.dataList;\r\n // this.actions = response.actions;\r\n // this.navigation = response.navigation;\r\n // this.spinnerService.hide();\r\n } else {\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n console.log(error);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"response\");\r\n this.myFormmm = this.fb.group({\r\n attr: '',\r\n display: '',\r\n sort: '',\r\n values: this.fb.array([]),\r\n grid: '',\r\n status: ''\r\n })\r\n this.getPageDefination();\r\n this.myFormmm.valueChanges.subscribe(console.log);\r\n }\r\n\r\n get fromToForms() {\r\n return this.myFormmm.get('values') as FormArray;\r\n }\r\n\r\n get attr() {\r\n return this.myFormmm.get('attr');\r\n }\r\n\r\n get disType() {\r\n return this.myFormmm.get('display').value;\r\n }\r\n\r\n addFromTo() {\r\n const values = this.fb.group({\r\n srt_frm: [],\r\n srt_to: []\r\n })\r\n this.fromToForms.push(values);\r\n }\r\n\r\n deletePhone(i) {\r\n // this.fromToForms.setValue()\r\n this.fromToForms.removeAt(i);\r\n }\r\n\r\n type;\r\n frmPrps;\r\n toPrps;\r\n\r\n getAttriBute(val) {\r\n let attrval;\r\n if (val == null) {\r\n attrval = this.attr.value;\r\n } else {\r\n attrval = val;\r\n }\r\n this.attibutes.forEach(element => {\r\n if (element.value == attrval) {\r\n console.log(element);\r\n this.type = element.type;\r\n if (element.type == 'c') {\r\n this.frmPrps = element.prpList;\r\n this.toPrps = element.prpList;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private currObj;\r\n\r\n userAction(obj, call, actionObj) {\r\n console.log(obj, call, actionObj);\r\n this.currObj = null;\r\n this.currObj = obj;\r\n this.getAttriBute(obj.attr);\r\n let fromvalueList: any=[];\r\n let valuelst = obj.values||[];\r\n valuelst.forEach(element => {\r\n let valCon= this.fb.group({\r\n \"srt_frm\":element.srt_frm,\r\n \"srt_to\":element.srt_to\r\n });\r\n fromvalueList.push(valCon);\r\n });\r\n // let values = (obj.values|| []).map((x) => this.fb.group(x))\r\n if (call == 'edit') {\r\n document.getElementById('datamdbtn').click();\r\n this.btnName = 'Edit';\r\n this.myFormmm = this.fb.group({\r\n attr: obj.attr,\r\n display: obj.display,\r\n sort: obj.sort,\r\n values: new FormArray(fromvalueList),\r\n grid: obj.grid,\r\n status: obj.status\r\n })\r\n \r\n\r\n } else if (call == 'delete') {\r\n document.getElementById('deletebtn').click();\r\n }\r\n }\r\n setBtnAdd() {\r\n this.btnName = 'Add';\r\n this.myFormmm = this.fb.group({\r\n attr: '',\r\n display: '',\r\n sort: '',\r\n values: this.fb.array([]),\r\n grid: '',\r\n status: ''\r\n })\r\n }\r\n deleteData() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'priceGroupDefinition';\r\n reqObj['trnsType'] = 'DELETE';\r\n reqObj['attr'] = this.currObj.attr;\r\n reqObj['grpIdn'] = this.route.snapshot.params['id'];\r\n console.log(reqObj);\r\n this.ps.data(reqObj, 'savePriceGroupDef', 'pricing/load')\r\n .subscribe(response => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n let res = response.result;\r\n // let index = this.priceDefination.indexOf(this.currObj);\r\n // this.priceDefination.splice(index, 1);\r\n this.getPageDefination();\r\n document.getElementById('deleteCloseMd').click();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n onSubmit() {\r\n // this.spinnerService.show();\r\n let formsVal = this.myFormmm.value;\r\n let reqObj = {};\r\n reqObj['formNme'] = 'priceGroupDefinition';\r\n reqObj['trnsType'] = this.btnName == 'Add' ? 'ADD' : 'EDIT';//this.currObj != null ? 'EDIT' : 'ADD';\r\n formsVal['status'] = '1';\r\n reqObj['dataTrnsDtl'] = formsVal;\r\n reqObj['grpIdn'] = this.route.snapshot.params['id'];\r\n if (this.currObj != null) {\r\n reqObj['attr'] = formsVal['attr'];\r\n }\r\n console.log(JSON.stringify(reqObj));\r\n this.ps.data(reqObj, 'savePriceGroupDef', 'pricing/load')\r\n .subscribe(response => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n let res = response.result;\r\n document.getElementById('closeMd').click();\r\n this.getPageDefination();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <span class=\"fa fa-chevron-left cp\" (click)=\"cs.pageBck();\"> Back</span> {{pageInfo?.title}}\r\n <span class=\"f-12\">({{cs.cDate | date:'medium'}})</span>\r\n </h3>\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info pull-right\" *ngIf=\"addNew?.is_compulsory == 1\" (click)=\"f.reset();\" data-toggle=\"modal\"\r\n data-target=\"#datamodal\" (click)=\"setBtnAdd()\">{{addNew?.form_field_title}}</button>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <!-- <div class=\"content-frame-left\" *ngIf=\"navigation.length > 0\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == cLink}\" *ngFor=\"let nav of navigation;let i=index\"\r\n (click)=\"navigationFun(nav,i);\">{{nav.form_field_title}} </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"content-frame-body\" style=\"margin-left:0;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-8\"></div>\r\n <div class=\"col-sm-4\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size </label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\">\r\n <!-- (change)=\"onPageSizeChange(pageSize)\" -->\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\"\r\n data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th class=\"align-center\">SR No</th>\r\n <th class=\"align-center\">Action</th>\r\n <th class=\"align-center\">Attribute</th>\r\n <th class=\"align-center\">Grid</th>\r\n <th class=\"align-center\">Display</th>\r\n <th class=\"align-center\">Sort</th>\r\n <th class=\"align-center\">Date</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceDef of priceDefination;let i = index\">\r\n <!-- | searchPipe:searchF | orderBy: order:reverse:'case-insensitive' | paginate: { itemsPerPage: pageSize, currentPage: p }; let i = index; -->\r\n <td class=\"align-center\">{{i + 1}}</td>\r\n <td class=\"align-center\">\r\n <div class=\"btn-group\">\r\n <a href=\"#\" data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Action\r\n <span class=\"caret\"></span>\r\n </a>\r\n <ul class=\"dropdown-menu\" role=\"menu\">\r\n <li *ngFor=\"let action of btnAction\">\r\n <a href=\"javascript:void(0)\" (click)=\"userAction(priceDef,action.form_field_typ,action);\">\r\n {{action.form_field_title}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n <td class=\"align-center\">{{priceDef.attr}}</td>\r\n <td class=\"align-center\">{{priceDef.grid}}</td>\r\n <td class=\"align-center\">{{priceDef.display}}</td>\r\n <td class=\"align-center\">{{priceDef.sort}}</td>\r\n <td class=\"align-center\">{{priceDef.start_dt}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- <pagination-controls (pageChange)=\"p = $event\" class=\"pull-right\"></pagination-controls> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"datamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" [formGroup]=\"myFormmm\" #f=\"ngForm\" > \r\n <!-- ng-submit=\"onSubmit()\" -->\r\n <!-- (ngSubmit)=\"onSubmit(f,submitBtn)\" -->\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" id=\"closeMd\">\r\n <!-- (click)=\"closeNull();\" -->\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">Add Group</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <!-- {{myFormmm.value | json}} -->\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Attribute\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"attibutes\" formControlName=\"attr\" (selected)=\"getAttriBute(null)\">\r\n </ng-select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Display\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"grid\">\r\n <option value=\"\">Select</option>\r\n <option value=\"group\">Group</option>\r\n <option value=\"side\">Side</option>\r\n <option value=\"head\">Head</option>\r\n </select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Type\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"display\">\r\n <option value=\"\">Select</option>\r\n <option value=\"range\">Range</option>\r\n <option value=\"plusminus\">With plus minus</option>\r\n <option value=\"woplusminus\">Without plus minus </option>\r\n <option value=\"userdefined\">User Defined </option>\r\n\r\n </select>\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div formArrayName=\"values\" *ngIf=\"disType == 'userdefined'\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\" style=\"text-align: center\"><label class=\"control-label\">From</label></div>\r\n <div class=\"col-md-4\" style=\"text-align: center\"><label class=\"control-label\">To</label></div>\r\n </div>\r\n <div class=\"form-group\">\r\n <div *ngFor=\"let value of fromToForms.controls;let i = index\" class=\"row\" style=\"margin-top: 5px;\"\r\n [formGroupName]=\"i\">\r\n <div class=\"col-md-2\"></div>\r\n <div *ngIf=\"type == 't'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'n'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'c'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"srt_frm\" >\r\n <option *ngFor=\"let prp of frmPrps\" [value]=\"prp.sort\">{{prp.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" formControlName=\"srt_to\">\r\n <option *ngFor=\"let prp of toPrps\" [value]=\"prp.sort\">{{prp.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"type == 'd'\">\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" formControlName=\"srt_frm\" />\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" formControlName=\"srt_to\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" style=\"text-align:center\">\r\n <button class=\"w-100 btn btn-danger\" (click)=\"deletePhone(i);\"><i class=\"fa fa-times\"\r\n aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" style=\"text-align:center;\">\r\n <a class=\"btn btn-success\" (click)=\"addFromTo();\">Add More</a>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Sort\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <input class=\"form-control\" formControlName=\"sort\" />\r\n </div>\r\n <!-- <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-success\" appAppNoDblClick (click)=\"onSubmit()\">{{btnName}}</button>\r\n <button type=\"reset\" class=\"btn btn-danger\">Reset</button>\r\n <!-- (click)=\"reset(f)\" -->\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"deletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" id=\"deleteCloseMd\">\r\n <!-- (click)=\"closeNull();\" #deleteclsbtn -->\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteData();\" data-dismiss=\"modal\">Delete</button>\r\n <!-- (click)=\"deleteDataList();\" -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button id=\"deletebtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#deletemodal\"></button>\r\n <button id=\"datamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"clsMd\" [hidden]=\"true\" data-dismiss=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"popdatamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popdatamodal\"></button>\r\n <button id=\"popResmodalbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popResmodal\"></button>\r\n</div>","// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Observable, pipe, throwError } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BiService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private glbEnv: GlobleEnvService,\r\n // private _spinnerService: Ng4LoadingSpinnerService,\r\n // private _flashMessagesService: FlashMessagesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n private header: any = {};\r\n\r\n data(reqObj, method, url): Observable<any> {\r\n // this._spinnerService.show();\r\n if (localStorage.getItem('mdlKey') != null) {\r\n let cUrl = this.router.url;\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs',\r\n 'method': method\r\n };\r\n }\r\n console.log(JSON.stringify( this.header));\r\n // let options: any = new RequestOptions({ headers: this.header });\r\n let options: any = new HttpHeaders({ headers: this.header });\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n pipe(map((res: any) => res))\r\n pipe(catchError((error) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { BiService } from './../bi-service/bi.service';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute ,Params} from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-analysis-search',\r\n templateUrl: './analysis-search.component.html',\r\n styleUrls: ['./analysis-search.component.css']\r\n})\r\nexport class AnalysisSearchComponent implements OnInit {\r\n\r\n constructor(\r\n public cs: CommanServiceService,\r\n private bis: BiService,\r\n // private _spinnerService: Ng4LoadingSpinnerService,\r\n // private _flashMessagesService: FlashMessagesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n attrStructureDtl;\r\n bi_sale_dys = [];\r\n salePeriod;\r\n statusList = [];\r\n sizePrp = [];\r\n biPeriodList = [];\r\n viewOptions;\r\n employees;\r\n empId;\r\n buyers;\r\n selectedSugg;\r\n header;\r\n schId;\r\n count;\r\n defaultStatusList;\r\n selectedStatus = [];\r\n // anaAllGrpStt = ['Marketing', 'Sold'];\r\n anaAllGrpStt = [];\r\n chk;\r\n\r\n\r\n newArrObj;\r\n attr;\r\n attrType;\r\n attrVal;\r\n attrt;\r\n attrTypet\r\n attrValt;\r\n callFrom = '';\r\n trm: any = \"\";\r\n selectedCriteria = [];\r\n searchId: any = [];\r\n period: any = 1;\r\n p1: any = new Array(2);\r\n p2 = new Array(2);\r\n p3 = new Array(2);\r\n p4 = new Array(2);\r\n viewFormate = 'grid';\r\n groups = [];\r\n viewGrp;\r\n // p1date = new Date().toISOString().substr(0, 10);\r\n // p2date = new Date().toISOString().substr(0, 10);\r\n cnt = 1;\r\n modfytxt;\r\n modify;\r\n ;\r\n modifySch: any = []; modfystat\r\n terms = [];\r\n\r\n formname;\r\n dropdownList = [];\r\n selectedItems = [];\r\n dropdownSettings = {};\r\n venderList=[];\r\n vender;\r\n szprp;\r\n attribute;\r\n modulename;\r\n cUrl;\r\n showvender=false;\r\n onItemSelect(item: any) {\r\n console.log(item);\r\n console.log(this.selectedItems);\r\n }\r\n OnItemDeSelect(item: any) {\r\n console.log(item);\r\n console.log(this.selectedItems);\r\n }\r\n onSelectAll(items: any) {\r\n console.log(items);\r\n }\r\n onDeSelectAll(items: any) {\r\n console.log(items);\r\n }\r\n loadAnalysisSearchPage() {\r\n this.formname=this.route.snapshot.params['frmnme'];\r\n this.showvender=false;\r\n this.searchId=[];\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n console.log(JSON.stringify(reqObj));\r\n this.bis.data(reqObj, 'load', 'marketing/search')\r\n .subscribe(data => {\r\n // this._spinnerService.hide();\r\n if (data.status == 'SUCCESS') {\r\n let res = data.result;\r\n debugger\r\n console.log(res);\r\n this.bi_sale_dys = res.bi_sale_dys;\r\n this.attrStructureDtl = res.attrStructureDtl;\r\n this.attrStructureDtl.forEach(ele1 => {\r\n ele1.component.forEach(ele2 => {\r\n if (ele2.attr == 'sz') {\r\n ele2.prpList.forEach(element => {\r\n let subObj = {};\r\n // subObj['label'] = element.print;\r\n // subObj['val'] = element.val;\r\n // subObj['value'] = element.sort;\r\n\r\n subObj['itemName'] = element.print;\r\n subObj['id'] = element.sort;\r\n\r\n this.sizePrp.push(subObj);\r\n });\r\n ele2.prpList = this.sizePrp;\r\n }\r\n ele2.values = [];\r\n });\r\n });\r\n this.statusList = res.statusList;\r\n this.groups = res.attrGridFormat;\r\n this.viewGrp = this.groups[0];\r\n this.viewOptions = res.pageDefination.trns_buttons;\r\n let vender = res.pageDefination.add_new||[];\r\n if(vender.length>0){\r\n this.showvender=true;\r\n }\r\n this.employees = res.employeeList;\r\n this.biPeriodList = res.bi_period;\r\n this.onChangeSalePeriod(0);\r\n this.salePeriod = \"0\";\r\n setTimeout(() => {\r\n if (this.attrStructureDtl.length != null) {\r\n\r\n let stts = JSON.parse(localStorage.getItem('BIanaStt'));\r\n if (localStorage.getItem('BIcall') != null && this.attrStructureDtl.length > 0) {\r\n this.modifySearchFun();\r\n\r\n let crtwt = localStorage.getItem('BIcrtwt');\r\n if (crtwt != null && crtwt != undefined && crtwt != \"\") {\r\n let wt = JSON.parse(crtwt)\r\n if (wt != null && wt != undefined && wt != \"\") {\r\n (document.getElementById('crtwt0') as any).value = wt[0];\r\n (document.getElementById('crtwt1') as any).value = wt[1];\r\n }\r\n }\r\n\r\n\r\n\r\n let byr = JSON.parse(localStorage.getItem('BIbyr'));\r\n if (byr != null && byr != undefined && byr != \"\") {\r\n let buyerList = [];\r\n buyerList.push(byr);\r\n let id = byr['value'];\r\n this.buyers = buyerList;\r\n this.selectedSugg = id;//JSON.parse(localStorage.getItem('byr'));\r\n }\r\n\r\n let emp = localStorage.getItem('BIeId');\r\n if (emp != null && emp != undefined && emp != \"\") {\r\n this.empId = emp;\r\n }\r\n let pfrm = localStorage.getItem('BIpFrom');\r\n if (pfrm != null && pfrm != undefined && pfrm != \"\") {\r\n (document.getElementById('pFrom') as any).value = JSON.parse(pfrm);\r\n }\r\n\r\n let pto = localStorage.getItem('BIpTo');\r\n if (pto != null && pto != undefined && pto != \"\") {\r\n (document.getElementById('pTo') as any).value = JSON.parse(pto);\r\n }\r\n\r\n \r\n\r\n\r\n let saleP = localStorage.getItem('BIsalePeriod');\r\n if (saleP != null && saleP != undefined && saleP != \"\") {\r\n this.salePeriod = saleP;\r\n }\r\n\r\n let period = localStorage.getItem('BIPeriod');\r\n if (period != null && period != undefined && period != \"\") {\r\n this.period = period;\r\n }\r\n\r\n\r\n\r\n\r\n stts = JSON.parse(localStorage.getItem('BIanaStt'));\r\n if (stts != null && stts != undefined && stts.length < 1) {\r\n stts.forEach(element => {\r\n if ((document.getElementById(element) as any).checked == 'false') {\r\n document.getElementById(element).click();\r\n }\r\n });\r\n }\r\n let szs = JSON.parse(localStorage.getItem('BIsize'))\r\n {\r\n if (szs != null && szs != undefined && szs.length > 0) {\r\n this.szprp = szs;\r\n }\r\n }\r\n if (stts != null) {\r\n if (stts.includes('mkt')) {\r\n document.getElementById('Marketing').click();\r\n }\r\n if (stts.includes('sold')) {\r\n document.getElementById('Sold').click();\r\n }\r\n if (stts.includes('cs')) {\r\n document.getElementById('Consignment').click();\r\n }\r\n if (stts.includes('asrt')) {\r\n document.getElementById('Assort').click();\r\n }\r\n if (stts.includes('lab')) {\r\n document.getElementById('Lab').click();\r\n }\r\n }\r\n\r\n }\r\n else {\r\n document.getElementById('Marketing').click();\r\n document.getElementById('Sold').click();\r\n }\r\n\r\n // else {\r\n // document.getElementById('Marketing').click();\r\n // document.getElementById('Sold').click();\r\n\r\n // }\r\n\r\n\r\n // if (this.selectedSugg != undefined || this.selectedSugg != null || this.selectedSugg != \"\") {\r\n // localStorage.removeItem('BIbyr');\r\n // }\r\n // if (this.empId != undefined || this.empId != null || this.empId != \"\") {\r\n // localStorage.removeItem('BIeId');\r\n // }\r\n // localStorage.removeItem('BIcrtwt');\r\n\r\n // localStorage.removeItem('BIsize');\r\n\r\n\r\n this.addScrollBar();\r\n localStorage.removeItem('BIcall');\r\n ////// this.clearLocalStorages();\r\n }\r\n }, 500);\r\n } else {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(data.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n selectAll(attcompoObj, e) {\r\n if (e.target.checked == false) {\r\n attcompoObj.prpList.map(value => { document.getElementById(attcompoObj.attr + '_' + value.val).click(); })\r\n } else {\r\n attcompoObj.prpList.map(value => {\r\n if (attcompoObj.values.indexOf(value.sort) != -1) {\r\n } else { document.getElementById(attcompoObj.attr + '_' + value.val).click(); }\r\n })\r\n }\r\n }\r\n\r\n addScrollBar() {\r\n let divs = (document.querySelectorAll('[id^=\"scr_\"]') as any);\r\n divs.forEach((element, index) => {\r\n let offsetwi = 0;\r\n let scrollwi = 0;\r\n let div = document.getElementById(element.id);\r\n offsetwi = div.offsetWidth;\r\n scrollwi = div.scrollWidth;\r\n if (offsetwi != scrollwi) {\r\n let pele = div.parentElement;\r\n let fchild: any = pele.firstElementChild;\r\n let lchild: any = pele.lastElementChild;\r\n document.getElementById(fchild.id).style.display = 'block';\r\n document.getElementById(lchild.id).style.display = 'block';\r\n pele.style.paddingLeft = \"30px\";\r\n pele.style.paddingRight = \"30px\";\r\n }\r\n });\r\n }\r\n\r\n onselect(bId) {\r\n // console.log(bId);\r\n let obj = this.buyers.find(x => x.value == bId);\r\n localStorage.setItem('BIbyr', JSON.stringify(obj));\r\n }\r\n\r\n getBuyers(employee) {\r\n // this.buyers = [];\r\n if (employee == undefined || employee == '') return;\r\n let reqObj = {};\r\n reqObj['empIdn'] = this.empId;\r\n reqObj['likeStr'] = employee;\r\n reqObj['formNme'] =this.route.snapshot.params['frmnme'];\r\n reqObj['key'] = 'buyername';\r\n reqObj['stt'] = '-1';\r\n console.log(reqObj);\r\n this.bis.data(reqObj, 'loadBuyer', 'marketing/search')\r\n .subscribe(data => {\r\n let res = data.result;\r\n this.buyers = res.buyerList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n // this._spinnerService.hide();\r\n }, error => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n getVender(e) {\r\n // this.buyers = [];\r\n let reqObj = {};\r\n reqObj['likeStr'] = e\r\n reqObj['formNme'] =this.route.snapshot.params['frmnme'];\r\n reqObj['typ'] = 'vender';\r\n console.log(reqObj);\r\n this.bis.data(reqObj, 'loadBuyer', 'marketing/search')\r\n .subscribe(data => {\r\n let res = data.result;\r\n this.venderList = res.buyerList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n // this._spinnerService.hide();\r\n }, error => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n leftScroll(div) {\r\n document.querySelector('div.' + div).scrollLeft -= 250;\r\n }\r\n\r\n rightScroll(div) {\r\n document.querySelector('div.' + div).scrollLeft += 250;\r\n }\r\n\r\n checkBoxFun(attOj, val, status, id) {\r\n console.log(attOj.attr);\r\n if (id == 'tinge_No BGM' && status == true) {\r\n (document.getElementById('milky_na') as any).click();\r\n (document.getElementById('tinge_BR') as any).disabled = true;\r\n (document.getElementById('tinge_GR') as any).disabled = true;\r\n (document.getElementById('tinge_MT') as any).disabled = true;\r\n (document.getElementById('milky_ml1') as any).disabled = true;\r\n (document.getElementById('milky_ml2') as any).disabled = true;\r\n (document.getElementById('milky_ml3') as any).disabled = true;\r\n (document.getElementById('milky_ml4') as any).disabled = true;\r\n\r\n (document.getElementById('tinge_15@20@25') as any).style.backgroundColor = '#ddd';\r\n (document.getElementById('tinge_35@40@45@50@55') as any).style.backgroundColor = '#ddd';\r\n (document.getElementById('tinge_60@61@62@63') as any).style.backgroundColor = '#ddd';\r\n (document.getElementById('milky_7') as any).style.backgroundColor = '#ddd';\r\n (document.getElementById('milky_15') as any).style.backgroundColor = '#ddd';\r\n (document.getElementById('milky_20') as any).style.backgroundColor = '#ddd';\r\n (document.getElementById('milky_30') as any).style.backgroundColor = '#ddd';\r\n } else if (id == 'tinge_No BGM' && status == false) {\r\n (document.getElementById('milky_na') as any).click();\r\n (document.getElementById('tinge_BR') as any).disabled = false;\r\n (document.getElementById('tinge_GR') as any).disabled = false;\r\n (document.getElementById('tinge_MT') as any).disabled = false;\r\n (document.getElementById('milky_ml1') as any).disabled = false;\r\n (document.getElementById('milky_ml2') as any).disabled = false;\r\n (document.getElementById('milky_ml3') as any).disabled = false;\r\n (document.getElementById('milky_ml4') as any).disabled = false;\r\n\r\n (document.getElementById('tinge_15@20@25') as any).style.backgroundColor = '#fff';\r\n (document.getElementById('tinge_35@40@45@50@55') as any).style.backgroundColor = '#fff';\r\n (document.getElementById('tinge_60@61@62@63') as any).style.backgroundColor = '#fff';\r\n (document.getElementById('milky_7') as any).style.backgroundColor = '#fff';\r\n (document.getElementById('milky_15') as any).style.backgroundColor = '#fff';\r\n (document.getElementById('milky_20') as any).style.backgroundColor = '#fff';\r\n (document.getElementById('milky_30') as any).style.backgroundColor = '#fff';\r\n }\r\n // this.active = true;\r\n // let ele = document.getElementById('pr_' + val);\r\n // if (attOj.attr == 'sh') {\r\n // if (status == true) {\r\n // ele.classList.add(\"selectedRow\");\r\n // } else {\r\n // ele.classList.remove(\"selectedRow\");\r\n // }\r\n // }\r\n let found = 0;\r\n let found2 = 0;\r\n attOj.values.forEach((element, index) => {\r\n if (status == false && element == val) {\r\n attOj.values.splice(index, 1);\r\n (document.getElementById('all' + attOj.attr) as any).checked = false;\r\n return;\r\n } else if (status == true && element == val) {\r\n found = 1;\r\n return;\r\n }\r\n });\r\n this.modifySch.forEach((element, index) => {\r\n if (status == false && element == id) {\r\n this.modifySch.splice(index, 1);\r\n return;\r\n } else if (status == true && element == id) {\r\n found2 = 1;\r\n return;\r\n }\r\n });\r\n if (status) {\r\n if (attOj.attr == 'sz') {\r\n attOj.values.push(val[val.length - 1]);\r\n this.modifySch.push(id[id.length - 1]);\r\n } else {\r\n attOj.values.push(val);\r\n this.modifySch.push(id);\r\n }\r\n }\r\n localStorage.setItem('BImodifySearchString', this.modifySch);\r\n\r\n // console.log(attOj, val, status, id);\r\n this.attrMaker('c');\r\n }\r\n\r\n one;\r\n two;\r\n three;\r\n thvgup;\r\n exRate;\r\n selectEle(c, s) {\r\n if (c == 0) {\r\n if (s == true) {\r\n (document.getElementById('ct_ex') as any).click();\r\n (document.getElementById('po_ex') as any).click();\r\n (document.getElementById('sy_ex') as any).click();\r\n (document.getElementById(\"two\") as any).checked = false;\r\n (document.getElementById(\"three\") as any).checked = false;\r\n this.two = true;\r\n this.three = true;\r\n this.thvgup = true;\r\n } else {\r\n (document.getElementById('ct_ex') as any).click();\r\n (document.getElementById('po_ex') as any).click();\r\n (document.getElementById('sy_ex') as any).click();\r\n this.two = false;\r\n this.three = false;\r\n this.thvgup = false;\r\n }\r\n } else if (c == 1) {\r\n if (s == true) {\r\n (document.getElementById('ct_ex') as any).click();\r\n (document.getElementById('po_ex') as any).click();\r\n (document.getElementById(\"one\") as any).checked = false;\r\n (document.getElementById(\"three\") as any).checked = false;\r\n (document.getElementById(\"thvgup\") as any).checked = false;\r\n this.one = true;\r\n this.three = true;\r\n this.thvgup = true;\r\n } else {\r\n (document.getElementById('ct_ex') as any).click();\r\n (document.getElementById('po_ex') as any).click();\r\n this.one = false;\r\n this.three = false;\r\n this.thvgup = false;\r\n }\r\n } else if (c == 2) {\r\n if (s == true) {\r\n (document.getElementById('ct_vg') as any).click();\r\n (document.getElementById('po_vg') as any).click();\r\n (document.getElementById('sy_vg') as any).click();\r\n (document.getElementById(\"one\") as any).checked = false;\r\n (document.getElementById(\"two\") as any).checked = false;\r\n (document.getElementById(\"thvgup\") as any).checked = false;\r\n this.one = true;\r\n this.two = true;\r\n this.thvgup = true;\r\n } else {\r\n (document.getElementById('ct_vg') as any).click();\r\n (document.getElementById('po_vg') as any).click();\r\n (document.getElementById('sy_vg') as any).click();\r\n this.one = false;\r\n this.two = false;\r\n this.thvgup = false;\r\n }\r\n } else if (c == 3) {\r\n if (s == true) {\r\n (document.getElementById('ct_ex') as any).click();\r\n (document.getElementById('po_ex') as any).click();\r\n (document.getElementById('sy_ex') as any).click();\r\n (document.getElementById('ct_vg') as any).click();\r\n (document.getElementById('po_vg') as any).click();\r\n (document.getElementById('sy_vg') as any).click();\r\n (document.getElementById(\"one\") as any).checked = false;\r\n (document.getElementById(\"two\") as any).checked = false;\r\n (document.getElementById(\"three\") as any).checked = false;\r\n this.one = true;\r\n this.two = true;\r\n this.three = true;\r\n } else {\r\n (document.getElementById('ct_ex') as any).click();\r\n (document.getElementById('po_ex') as any).click();\r\n (document.getElementById('sy_ex') as any).click();\r\n (document.getElementById('ct_vg') as any).click();\r\n (document.getElementById('po_vg') as any).click();\r\n (document.getElementById('sy_vg') as any).click();\r\n this.one = false;\r\n this.two = false;\r\n this.three = false;\r\n }\r\n }\r\n }\r\n singleVal(attOj, val, i) {\r\n\r\n if (i == \"t\") {\r\n let spaceTocomma = val.replace(/[ ,]+/g, \",\");\r\n let newLineToComma = spaceTocomma.replace(/\\n/g, \",\");\r\n let plines = newLineToComma.split(',');\r\n plines = plines.filter(v => v != '');\r\n plines = plines.filter(v => v != ' ');\r\n attOj.values = [...plines];\r\n this.attrMaker('c');\r\n return;\r\n }\r\n\r\n\r\n if (val != '') {\r\n attOj.values.push(val);\r\n } else {\r\n attOj.values.splice(i, 1);\r\n }\r\n console.log(attOj);\r\n this.attrMaker('t');\r\n }\r\n\r\n onDateChange(attrObj, val, i) {\r\n let attr = attrObj.attr;\r\n let frmId = attr + 0;\r\n let frmVal = (document.getElementById(frmId) as any).value;\r\n attrObj.values.push(frmVal);\r\n\r\n attrObj.values.push(val); //tovalue\r\n\r\n\r\n this.attrMaker('t');\r\n }\r\n\r\n modifySearchFun() {\r\n // localStorage.removeItem('Mfoogle');\r\n // let byr = JSON.parse( localStorage.getItem('byr'));\r\n\r\n // this.trm = localStorage.getItem('trm');\r\n var event = new Event('change');\r\n if (localStorage.getItem('BIcall') != null == null) {\r\n return;\r\n } else {\r\n if (localStorage.getItem('BImodifySchTxt') != null) {\r\n this.modfytxt.forEach((ele, index) => {\r\n if (ele.id != null) {\r\n (document.getElementById(ele.id) as any).value = ele.val\r\n let id = document.getElementById(ele.id);\r\n id.dispatchEvent(event);\r\n }\r\n })\r\n }\r\n this.modify.forEach((ele, index) => {\r\n document.getElementById(ele).click();\r\n if (index + 1 == this.modify.length) {\r\n localStorage.removeItem('BIcall');\r\n // setTimeout(function removelocals() {\r\n // localStorage.removeItem('modifySearchString');\r\n // localStorage.removeItem('modifySchTxt');\r\n // localStorage.removeItem('modifystat');\r\n // }, 500)\r\n }\r\n localStorage.removeItem('BIcall'); // for resetting after modify search\r\n })\r\n }\r\n }\r\n range(attOj, val, index) {\r\n let txtObj = {}\r\n let valu = val.target.value;\r\n let first = attOj.values[0];\r\n let second = attOj.values[1];\r\n // console.log(second);\r\n // if (index == 0 && second == undefined) {\r\n // (document.getElementById(oppid) as any).value = valu;\r\n // attOj.values[index] = valu;\r\n // attOj.values[opp] = valu;\r\n // } else if (index == 1 && first == undefined) {\r\n // (document.getElementById(oppid) as any).value = valu;\r\n // attOj.values[index] = valu;\r\n // attOj.values[opp] = valu;\r\n // } else {\r\n // attOj.values[index] = valu;\r\n // }\r\n // attOj.values[index] = valu;\r\n if (valu != '') {\r\n attOj.values[index] = valu;\r\n } else {\r\n attOj.values.splice(index, 1);\r\n }\r\n // console.log(attOj.values);\r\n // if (val.target.value == '') {\r\n // this.modifyTxt.forEach((element, index) => {\r\n // if (element.id == id) {\r\n // this.modifyTxt.splice(index, 1);\r\n // localStorage.setItem('modifySchTxt', JSON.stringify(this.modifyTxt));\r\n // }\r\n // });\r\n // } else {\r\n // txtObj['id'] = id;\r\n // txtObj['val'] = attOj.values[index];\r\n // this.modifyTxt.push(txtObj);\r\n // localStorage.setItem('modifySchTxt', JSON.stringify(this.modifyTxt));\r\n // }\r\n this.attrMaker('c');\r\n }\r\n\r\n additional(attOj, val, index, call) {\r\n this.callFrom = call;\r\n let txtObj = {}\r\n let valu = val.target.value;\r\n let first = attOj.values[0];\r\n let second = attOj.values[1];\r\n if (valu != '') {\r\n attOj.values[index] = valu;\r\n } else {\r\n attOj.values.splice(index, 1);\r\n }\r\n\r\n let fcw = (document.getElementById('crtwt0') as any).value;\r\n let tcw = (document.getElementById('crtwt1') as any).value;\r\n\r\n // if (attOj.values.length == 2) {\r\n if (fcw != null && fcw != undefined && fcw != \"\" && tcw != null && tcw != undefined && tcw != \"\") {\r\n\r\n\r\n // localStorage.setItem('BIcrtwt', JSON.stringify(attOj.values));\r\n localStorage.setItem('BIcrtwt', JSON.stringify([fcw, tcw]));\r\n\r\n this.attrMaker('c');\r\n }\r\n\r\n }\r\n\r\n multiselect(attOj, val) {\r\n localStorage.setItem('size', val);\r\n attOj.values = [];\r\n var tempArr = [];\r\n val.forEach(element => {\r\n if (element != '' && element != null) {\r\n if (attOj.values.indexOf(val) != -1) {\r\n } else {\r\n // attOj.values.push(element);\r\n attOj.values.push(element.id);\r\n tempArr.push(element);\r\n localStorage.setItem('BIsize', JSON.stringify(tempArr));\r\n }\r\n }\r\n });\r\n this.attrMaker('c');\r\n }\r\n\r\n deselect(attOj, val) {\r\n attOj.values = [];\r\n localStorage.removeItem('BIsize');\r\n this.attrMaker('c');\r\n }\r\n\r\n attrMaker(c) {\r\n if (c == 'c') {\r\n this.attr = '';\r\n this.attrType = '';\r\n this.attrVal = '';\r\n this.attrStructureDtl.forEach(ele1 => {\r\n ele1.component.forEach(ele2 => {\r\n if (ele2.values.length > 0) {\r\n this.attr += ele2.attr + \"#\";\r\n this.attrType += ele2.dataType + \"#\";\r\n if(ele2.dataType=='d')\r\n this.attrVal += ele2.values.join(\"@\").replace(/-/g, '') + \"#\";\r\n else\r\n this.attrVal += ele2.values.join(\"@\") + \"#\";\r\n }\r\n });\r\n });\r\n } else if (c == 't') {\r\n this.attr = '';\r\n this.attrType = '';\r\n this.attrVal = '';\r\n this.attrStructureDtl.forEach(ele1 => {\r\n ele1.component.forEach(ele2 => {\r\n if (ele2.values.length > 0) {\r\n // this.attr += ele2.attr + \"#\";\r\n // this.attrType += ele2.dataType + \"#\";\r\n // this.attrVal += ele2.values[0].split(' ').join('@') + \"#\";\r\n if (this.attr != undefined) {\r\n this.attr += ele2.attr + \"#\";\r\n this.attrType += ele2.dataType + \"#\";\r\n this.attrVal += ele2.values.join(\"@\").replace(/-/g, '') + \"#\";\r\n }\r\n else {\r\n this.attr = ele2.attr + \"#\";\r\n this.attrType = ele2.dataType + \"#\";\r\n this.attrVal = ele2.values.join(\"@\").replace(/-/g, '') + \"#\";\r\n\r\n }\r\n\r\n console.log(ele2.values);\r\n }\r\n });\r\n });\r\n }\r\n console.log(this.attr, this.attrType, this.attrVal);\r\n }\r\n\r\n getVal(v, s) {\r\n if (s == true) {\r\n if (this.selectedStatus.indexOf(v) != -1) {\r\n } else {\r\n this.selectedStatus.push(v)\r\n }\r\n } else {\r\n let index = this.selectedStatus.indexOf(v);\r\n this.selectedStatus.splice(index, 1);\r\n }\r\n\r\n this.setStt(v, s)\r\n\r\n\r\n console.log(this.selectedStatus);\r\n\r\n }\r\n anaAllGrpSttLBL = [];\r\n setStt(v, s) {\r\n if (s == true) {\r\n if (this.anaAllGrpStt.indexOf(v.key) != -1) {\r\n }\r\n else {\r\n this.anaAllGrpStt.push(v.key);\r\n this.anaAllGrpSttLBL.push(v.label);\r\n\r\n }\r\n } else {\r\n let anaindex = this.anaAllGrpStt.indexOf(v.key);\r\n let analblindex = this.anaAllGrpSttLBL.indexOf(v.label);\r\n this.anaAllGrpSttLBL.splice(analblindex, 1);\r\n this.anaAllGrpStt.splice(anaindex, 1);\r\n }\r\n\r\n\r\n localStorage.setItem('BIanaStt', JSON.stringify(this.anaAllGrpStt));\r\n localStorage.setItem('BIanaSttLBL', JSON.stringify(this.anaAllGrpSttLBL));\r\n\r\n console.log(this.anaAllGrpStt);\r\n\r\n }\r\n\r\n soldStatus = [];\r\n otherStatus = [];\r\n\r\n pattr = '';\r\n pattrType = '';\r\n pattrVal = '';\r\n first;\r\n second;\r\n gPfrom;\r\n gPto;\r\n addDate(val, index, call) {\r\n if (index == 0) {\r\n this.first = new Date(val);\r\n this.gPfrom = val;\r\n } else {\r\n this.second = new Date(val);\r\n this.gPto = val;\r\n }\r\n this.pattr = '';\r\n this.pattrType = '';\r\n // this.pattrVal = '';\r\n this.p1\r\n if (val != '' && val != null) {\r\n this.pattr = 'sal_dte';\r\n this.pattrType = 'd';\r\n if (call == 'p1') {\r\n this.p1[index] = val.replace(/-/g, '');\r\n this.pattrVal = this.p1.join(\"@\");\r\n } else if (call == 'p2') {\r\n this.p2[index] = val.replace(/-/g, '');\r\n this.pattrVal += this.p2.join(\"@\") + '~';\r\n } else if (call == 'p3') {\r\n this.p3[index] = val.replace(/-/g, '');\r\n this.pattrVal += this.p3.join(\"@\") + '~';\r\n } else if (call == 'p4') {\r\n this.p4[index] = val.replace(/-/g, '');\r\n this.pattrVal += this.p4.join(\"@\") + '~';\r\n }\r\n }\r\n // console.log(this.pattrVal);\r\n this.attrMaker('c');\r\n\r\n }\r\n\r\n onChangeSalePeriod(days) {\r\n // this.period = 1;\r\n let dt = new Date();\r\n dt.setDate(dt.getDate() - days);\r\n let month = '' + (dt.getMonth() + 1),\r\n day = '' + dt.getDate(),\r\n year = dt.getFullYear();\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n let backDt = [year, month, day].join('-');\r\n\r\n (document.getElementById('pFrom') as any).value = backDt;\r\n\r\n\r\n let d = new Date(),\r\n tmonth = '' + (d.getMonth() + 1),\r\n tday = '' + d.getDate(),\r\n tyear = d.getFullYear();\r\n if (tmonth.length < 2) tmonth = '0' + tmonth;\r\n if (tday.length < 2) tday = '0' + tday;\r\n let tdate = [tyear, tmonth, tday].join('-');\r\n (document.getElementById('pTo') as any).value = tdate;\r\n\r\n\r\n this.addDate(backDt, 0, 'p1');\r\n this.addDate(tdate, 1, 'p1');\r\n\r\n\r\n }\r\n\r\n viewResult(type) {\r\n \r\n if (type == 'grid') {\r\n this.getSchResult('g');\r\n localStorage.setItem('viewType', 'gridView');\r\n if (this.viewGrp != undefined) {\r\n localStorage.setItem('anaGrpType', JSON.stringify(this.viewGrp));\r\n }\r\n } else if (type == 'packetView') {\r\n this.getSchResult('p');\r\n localStorage.setItem('viewType', 'listView');\r\n }\r\n if (this.empId != null && this.empId != undefined && this.empId != \"\") {\r\n localStorage.setItem('BIeId', this.empId);\r\n }\r\n\r\n\r\n if (this.salePeriod != undefined && this.salePeriod != null && this.salePeriod != \"\") {\r\n localStorage.setItem('BIsalePeriod', this.salePeriod);\r\n }\r\n\r\n\r\n // if (this.period != undefined && this.period != null && this.period != \"\") {\r\n // localStorage.setItem('BIPeriod', this.salePeriod);\r\n // }\r\n\r\n \r\n\r\n\r\n }\r\n\r\n oac = {};\r\n getSchResult(view) {\r\n \r\n let frmdt = (document.getElementById('pFrom') as any).value;\r\n let todt = (document.getElementById('pTo') as any).value;\r\n\r\n let fromDate: any = new Date(frmdt);\r\n let toDate: any = new Date(todt);\r\n \r\n \r\n let diffDays: any = Math.round(Math.abs((fromDate - toDate) / (24 * 60 * 60 * 1000)));\r\n localStorage.setItem('diff', diffDays);\r\n\r\n localStorage.setItem('stt', JSON.stringify(this.defaultStatusList));\r\n if (this.oac != {} && this.oac != null) {\r\n localStorage.setItem('BIacwt', JSON.stringify(this.oac));\r\n }\r\n this.selectedStatus.forEach(ele1 => {\r\n let lKey = (ele1.k).toLowerCase();\r\n let lVal = ele1.v;\r\n if (lKey == 'sold') {\r\n this.soldStatus = [...lVal.split()];\r\n } else {\r\n let temp = this.arrayConversion(lVal);\r\n this.otherStatus = this.otherStatus.concat(temp);\r\n }\r\n })\r\n \r\n this.getSchId(this.otherStatus, view);\r\n }\r\n\r\n onPeriodChange(period) {\r\n this.period = period;\r\n }\r\n\r\n getSchId(status, view) {\r\n\r\n // debugger\r\n // let fromDate: any = new Date(this.first.getFullYear(), this.first.getMonth(), this.first.getDate());\r\n // let toDate: any = new Date(this.second.getFullYear(), this.second.getMonth(), this.second.getDate());\r\n // let frmdt = (document.getElementById('pFrom') as any).value;\r\n // let todt = (document.getElementById('pTo') as any).value;\r\n\r\n // let diffDays: any = Math.round(Math.abs((frmdt - todt) / (24 * 60 * 60 * 1000)));\r\n // localStorage.setItem('diff', diffDays);\r\n\r\n let crtfrm = (document.getElementById('crtwt0') as any).value;\r\n let crtto = (document.getElementById('crtwt1') as any).value;\r\n\r\n if (crtfrm != null && crtfrm != undefined && crtfrm != \"\" && crtto != null && crtto != undefined && crtto != \"\" && crtfrm > 0 && crtto > 0) {\r\n crtfrm = parseFloat(crtfrm);\r\n crtto = parseFloat(crtto);\r\n this.attrStructureDtl.forEach(ele1 => {\r\n ele1.component.forEach(ele2 => {\r\n if (ele2.attr == 'crtwt') {\r\n ele2.values = [crtfrm, crtto];\r\n // this.attr += ele2.attr + \"#\";\r\n // this.attrType += ele2.dataType + \"#\";\r\n // this.attrVal += ele2.values.join(\"@\") + \"#\";\r\n }\r\n\r\n });\r\n });\r\n\r\n this.attrMaker('c');\r\n\r\n }\r\n\r\n\r\n debugger\r\n console.log(\"status\",status);\r\n let reqObj = {};\r\n reqObj['formNme'] =this.route.snapshot.params['frmnme'];\r\n reqObj['count'] = 'N';\r\n if(this.attr.indexOf('vnm')==-1)\r\n reqObj['statusList'] = status;\r\n if(this.modulename=='inward'){\r\n this.attr=this.attr+\"pur#\";\r\n this.attrType=this.attrType+\"c#\";\r\n this.attrVal=this.attrVal+\"60#\";\r\n }\r\n if (status.length != 0) {\r\n \r\n reqObj['attr'] = this.attr.endsWith('#') ? this.attr.slice(0, -1) : this.attr;\r\n reqObj['attrType'] = this.attrType.endsWith('#') ? this.attrType.slice(0, -1) : this.attrType;\r\n reqObj['attrVal'] = this.attrVal.endsWith('#') ? this.attrVal.slice(0, -1) : this.attrVal;\r\n } else {\r\n this.getSoldSchId(this.soldStatus, view);\r\n return;\r\n }\r\n console.log(reqObj);\r\n console.log(JSON.stringify(reqObj));\r\n\r\n // this._spinnerService.show();\r\n this.bis.data(reqObj, 'searchCount', 'marketing/search')\r\n .subscribe(response => {\r\n\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n // this._spinnerService.hide();\r\n let result = response.result;\r\n this.schId = result.searchIdn;\r\n this.schId = '';\r\n if(this.attr.indexOf('vnm')==-1)\r\n this.searchId.push(response.searchIdn);\r\n else{\r\n this.searchId=[];\r\n this.searchId.push(response.searchIdn);\r\n }\r\n if (status.length != 0) {\r\n localStorage.setItem('srcIdns', this.searchId);\r\n if (view == 'g') {\r\n if (this.soldStatus.length != 0) {\r\n this.getSoldSchId(this.soldStatus, view);\r\n return;\r\n } else {\r\n this.router.navigate([this.modulename+'/analysis-result/'+this.route.snapshot.params['frmnme']]);\r\n }\r\n\r\n } else if (view == 'p') {\r\n if (this.soldStatus.length != 0) {\r\n this.getSoldSchId(this.soldStatus, view);\r\n return;\r\n } else {\r\n this.router.navigate([this.modulename+'/pkt-list/'+this.route.snapshot.params['frmnme']]);\r\n }\r\n }\r\n }\r\n } else {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n })\r\n }\r\n getSoldSchId(status, view) {\r\n\r\n let crtfrm = (document.getElementById('crtwt0') as any).value;\r\n let crtto = (document.getElementById('crtwt1') as any).value;\r\n\r\n if (crtfrm != null && crtfrm != undefined && crtfrm != \"\" && crtto != null && crtto != undefined && crtto != \"\" && crtfrm > 0 && crtto > 0) {\r\n crtfrm = parseFloat(crtfrm);\r\n crtto = parseFloat(crtto);\r\n this.attrStructureDtl.forEach(ele1 => {\r\n ele1.component.forEach(ele2 => {\r\n if (ele2.attr == 'crtwt') {\r\n ele2.values = [crtfrm, crtto];\r\n // this.attr += ele2.attr + \"#\";\r\n // this.attrType += ele2.dataType + \"#\";\r\n // this.attrVal += ele2.values.join(\"@\") + \"#\";\r\n }\r\n });\r\n });\r\n this.attrMaker('c');\r\n }\r\n\r\n\r\n localStorage.setItem('BIPeriod', this.period);\r\n // if (this.pObj != null && this.pObj != {} && this.schId.pObj != undefined) {\r\n // localStorage.setItem('BIpFrom', JSON.stringify(this.pObj));\r\n // }\r\n console.log(status);\r\n let reqObj = {};\r\n reqObj['formNme'] =this.route.snapshot.params['frmnme'];\r\n\r\n // if (this.selectedSugg != undefined) {\r\n // reqObj['buyerIdn'] = this.selectedSugg;\r\n // }\r\n\r\n reqObj['count'] = 'N';\r\n reqObj['statusList'] = status;\r\n if (status.length != 0) {\r\n debugger\r\n if (this.pattr != '') {\r\n let pfrm = (document.getElementById('pFrom') as any).value;\r\n let pto = (document.getElementById('pTo') as any).value;\r\n console.log(\"indexvnm\",this.attr.indexOf(\"vnm\"))\r\n if (this.pattr == 'sal_dte' && this.attr.indexOf('sal_dte') ==-1 && this.attr.indexOf(\"vnm\")==-1) {\r\n this.attr += this.pattr;\r\n this.attrType += this.pattrType;\r\n\r\n let p1 = pfrm.replace(/-/g, '');\r\n let p2 = pto.replace(/-/g, '');\r\n\r\n\r\n this.attrVal += p1 + '@' + p2;\r\n }\r\n\r\n if (this.attr.indexOf(\"vnm\")==-1 && this.pattr != 'sal_dte' && this.pattr != '#sal_dte') {\r\n this.attr += this.pattr;\r\n this.attrType += this.pattrType;\r\n this.attrVal += this.pattrVal;\r\n }\r\n\r\n\r\n // if (this.gPfrom != null && this.gPfrom != \"\" && this.gPfrom != undefined) {\r\n // localStorage.setItem('BIpFrom', JSON.stringify(this.gPfrom));\r\n // }\r\n // if (this.gPto != null && this.gPto != \"\" && this.gPto != undefined) {\r\n // localStorage.setItem('BIpTo', JSON.stringify(this.gPto));\r\n // }\r\n\r\n\r\n localStorage.setItem('BIpFrom', JSON.stringify(pfrm));\r\n localStorage.setItem('BIpTo', JSON.stringify(pto));\r\n\r\n\r\n }\r\n if (this.selectedSugg != undefined) {\r\n this.attr += '#sal_byr';\r\n this.attrType += '#t';\r\n this.attrVal += '#' + this.selectedSugg;\r\n\r\n }\r\n\r\n if (this.empId != undefined) {\r\n //reqObj['empIdn'] = this.empId;\r\n this.attr += '#sal_emp';\r\n this.attrType += '#t';\r\n this.attrVal += '#' + this.empId;\r\n\r\n localStorage.setItem('BIEmp', JSON.stringify(this.empId));\r\n }\r\n\r\n reqObj['attr'] = this.attr.endsWith('#') ? this.attr.slice(0, -1) : this.attr;\r\n reqObj['attrType'] = this.attrType.endsWith('#') ? this.attrType.slice(0, -1) : this.attrType;\r\n reqObj['attrVal'] = this.attrVal.endsWith('#') ? this.attrVal.slice(0, -1) : this.attrVal;\r\n } else {\r\n return;\r\n }\r\n this.searchId=this.searchId||[];\r\n console.log(reqObj);\r\n console.log(JSON.stringify(reqObj));\r\n var isExcute =true;\r\n if(this.attr.indexOf(\"vnm\")!=-1 && this.searchId.length>0)\r\n isExcute =false;\r\n if(isExcute){\r\n // this._spinnerService.show();\r\n this.bis.data(reqObj, 'searchCount', 'marketing/search')\r\n .subscribe(response => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n // this._spinnerService.hide();\r\n let result = response.result;\r\n this.schId = result.searchIdn;\r\n //this.schId = '';\r\n this.cnt++;\r\n this.searchId.push(response.searchIdn);\r\n localStorage.setItem('srcIdns', this.searchId);\r\n console.log(\"view\", view);\r\n if (view == 'g') {\r\n\r\n this.router.navigate([this.modulename+'/analysis-result/'+this.route.snapshot.params['frmnme']]);\r\n } else if (view == 'p') {\r\n\r\n this.router.navigate([this.modulename+'/pkt-list/'+this.route.snapshot.params['frmnme']]);\r\n }\r\n } else {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n })\r\n\r\n }else{\r\n if (view == 'g') {\r\n\r\n this.router.navigate([this.modulename+'/analysis-result/'+this.route.snapshot.params['frmnme']]);\r\n } else if (view == 'p') {\r\n\r\n this.router.navigate([this.modulename+'/pkt-list/'+this.route.snapshot.params['frmnme']]);\r\n }\r\n }\r\n \r\n }\r\n\r\n arrayConversion = value => value.split();\r\n\r\n\r\n clearLocalStorages() {\r\n localStorage.removeItem('BIPeriod');\r\n localStorage.removeItem('BIacwt');\r\n localStorage.removeItem('BIanaStt');\r\n localStorage.removeItem('BIanaSttLBL');\r\n localStorage.removeItem('BImodifySearchString');\r\n localStorage.removeItem('BIpFrom');\r\n localStorage.removeItem('BIpTo');\r\n localStorage.removeItem('BIsalePeriod');\r\n localStorage.removeItem('stt');\r\n localStorage.removeItem('diff');\r\n localStorage.removeItem('BIeId');\r\n localStorage.removeItem('BIEmp');\r\n localStorage.removeItem('BIbyr');\r\n localStorage.removeItem('BIcall');\r\n localStorage.removeItem('BILegends');\r\n localStorage.removeItem('BIcrtwt');\r\n localStorage.removeItem('BI-PKT_GROUP_BY');\r\n localStorage.removeItem('BI-gridAvg'); \r\n }\r\n ngOnInit() {\r\n this.route.params.subscribe((params: Params) => {\r\n this.dropdownSettings = {\r\n enableFilterSelectAll: false,\r\n singleSelection: false,\r\n text: \"Select sizes\",\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n enableSearchFilter: true,\r\n classes: \"myclass custom-class\",\r\n escapeToClose: true\r\n };\r\n this.cUrl = this.router.url;\r\n this.modulename=this.cUrl.split('/')[1];\r\nlet biCall =localStorage.getItem('BIcall') ||'';\r\n if (biCall != '') {\r\n if (localStorage.getItem('BImodifySearchString') != null) {\r\n this.modify = localStorage.getItem('BImodifySearchString').split(',');\r\n }\r\n if (localStorage.getItem('BImodifySchTxt') != null) {\r\n this.modfytxt = JSON.parse(localStorage.getItem('BImodifySchTxt'));\r\n }\r\n if (localStorage.getItem('BImodifystat') != null) {\r\n this.modfystat = localStorage.getItem('BImodifystat');\r\n }\r\n \r\n }\r\n\r\n else {\r\n this.clearLocalStorages();\r\n }\r\n console.log(this.anaAllGrpStt);\r\n\r\n this.loadAnalysisSearchPage();\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n// let resobj = {}\r\n// resobj['empid'] = this.empId;\r\n// resobj['buyerid'] = this.selectedSugg;\r\n// // resobj['trmid'] = this.trm.buyer_terms_idn;\r\n// resobj['exrate'] = this.trm.xrte;\r\n// localStorage.setItem('resreqpara', JSON.stringify(resobj));\r\n// if (this.searchDesc.length > 1) {\r\n// localStorage.setItem('srcIdns', JSON.stringify(this.searchDesc));\r\n// localStorage.setItem('resreqpara', JSON.stringify(resobj))\r\n// this.router.navigate(['/solitaires/result/', 'stockResultForm']);//this.schId\r\n// }\r\n// else {\r\n// localStorage.setItem('resreqpara', JSON.stringify(resobj))\r\n// localStorage.setItem('srcIdns', JSON.stringify(this.searchDesc));\r\n// this.router.navigate(['/solitaires/result/', 'stockResultForm']);\r\n// }","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">Analysis Search\r\n <span class=\"f-12\">({{cs.cDate | date:'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"content-frame-body\" style=\"margin-left:0;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"infoSec\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12\">\r\n <form class=\"form-inline\" target=\"_blank\">\r\n <label class=\"text-capitalize lblcolor\"> <strong>Status: </strong> </label>\r\n <ul class=\"ulclass\">\r\n <li *ngFor=\"let status of statusList\">\r\n <ng-container *ngIf=\"status.k != ''\">\r\n <input id=\"{{status?.k}}\" type=\"checkbox\" name=\"anaStatus\" value=\"{{status?.v}}\"\r\n (change)=\"getVal(status, $event.target.checked);\">\r\n <label for=\"{{status?.v}}\" class=\"text-capitalize\"> {{status?.k}}</label>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n \r\n <label class=\"text-capitalize lblcolor\"> <strong>Employee: </strong> </label>\r\n \r\n <select class=\"form-control\" name=\"employee\" [(ngModel)]=\"empId\">\r\n <option>Select </option>\r\n <option *ngFor=\"let employee of employees\" value=\"{{employee?.k}}\">{{employee?.v}}\r\n </option>\r\n </select>\r\n \r\n <label class=\"text-capitalize lblcolor\"> <strong>Buyer: </strong> </label>\r\n \r\n <div style=\"width:200px;display: inline-block;\">\r\n <ng-select style=\"z-index: 5;\" placeholder=\"Select Buyers\" [allowClear]=\"true\" [options]=\"buyers\"\r\n [(ngModel)]=\"selectedSugg\" name=\"buyer\" (filterInputChanged)=\"getBuyers($event)\"\r\n (selected)=\"onselect(selectedSugg)\">\r\n </ng-select>\r\n </div>\r\n \r\n <label class=\"text-capitalize lblcolor\" *ngIf=\"showvender\"> <strong>Vender: </strong> </label>\r\n \r\n <div style=\"width:200px;display: inline-block;\" *ngIf=\"showvender\">\r\n <ng-select style=\"z-index: 5;\" placeholder=\"Select Vender\" [allowClear]=\"true\" [options]=\"venderList\"\r\n [(ngModel)]=\"vender\" name=\"vender\" (filterInputChanged)=\"getVender($event)\"\r\n >\r\n </ng-select>\r\n </div>\r\n <!-- (selected)=\"getTerms(selectedSugg)\" -->\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <span> <strong> Period: </strong> </span>\r\n <div style=\"width: 115px;display: inline-block;\">\r\n <!-- <input type=\"number\" class=\"form-control\" value=\"1\" [(ngModel)]=\"period\" /> -->\r\n <select class=\"form-control\" [(ngModel)]=\"period\" (change)=\"onPeriodChange(period)\">\r\n <option>Select </option>\r\n <option *ngFor=\"let bi of biPeriodList\" value=\"{{bi?.k}}\">{{bi?.v}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"periodicsch\">\r\n <div class=\"periodicdate\">\r\n <strong>P1</strong>\r\n From <input type=\"date\" class=\"form-control\" id=\"pFrom\"\r\n (blur)=\"addDate($event.target.value,0,'p1');\">\r\n To <input type=\"date\" class=\"form-control\" id=\"pTo\" (blur)=\"addDate($event.target.value,1,'p1');\">\r\n \r\n\r\n <!-- <strong>P2</strong>\r\n From <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,0,'p2');\">\r\n To <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,1,'p2');\"> -->\r\n </div>\r\n\r\n <!-- <div class=\"periodicdate\">\r\n <strong>P3</strong>\r\n From <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,0,'p3');\">\r\n To <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,1, 'p3');\">\r\n \r\n <strong>P4</strong>\r\n From <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,0,'p4');\">\r\n To <input type=\"date\" class=\"form-control\" (change)=\"addDate($event.target.value,1,'p4');\">\r\n </div> -->\r\n </div>\r\n <div class=\"periodicsch\">\r\n <strong>Sale Days</strong>\r\n <select class=\"form-control\" id=\"salePeriod\" [(ngModel)]=\"salePeriod\"\r\n (change)=onChangeSalePeriod(salePeriod)>\r\n <option *ngFor=\"let days of bi_sale_dys\" value=\"{{days.k}}\">{{days.v}}</option>\r\n </select>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"searchsec\">\r\n <div class=\"tabssec\">\r\n <ul class=\"nav nav-tabs\" style=\"margin: 10px 0;\" role=\"tablist\">\r\n <li role=\"presentation\" *ngFor=\"let attrStructure of attrStructureDtl;\"\r\n (click)=\"cs.scrollToDiv(attrStructure.grp)\"><a href=\"#{{attrStructure.grp}}\" aria-controls=\"home\"\r\n role=\"tab\" data-toggle=\"tab\">{{attrStructure.grp}}</a></li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"schcrateria\">\r\n <div style=\"margin-bottom: 10px;\" id=\"{{attrStructure.grp}}\"\r\n *ngFor=\"let attrStructure of attrStructureDtl;\">\r\n <div class=\"grpheader\">\r\n <h6>{{attrStructure.grp}}</h6>\r\n </div>\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let attcompo of attrStructure.component;let i = index\">\r\n\r\n <div id=\"{{attrStructure.grp}}\">\r\n <label class=\"control-label headers col-md-1 text-right\" *ngIf=\"attcompo.attr == 'ct'\"\r\n style=\"margin-top: 10px;\">CPS</label>\r\n <div class=\"col-md-11\" *ngIf=\"attcompo.attr == 'ct'\"\r\n style=\"overflow-x: auto;white-space: nowrap;margin-top: 10px;\">\r\n <div class=\"ck-button\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" id=\"one\" class=\"prntchk\" [disabled]=\"one\"\r\n (click)=\"selectEle(0 , $event.target.checked);\">\r\n <span>3EX</span>\r\n </label>\r\n </div>\r\n </div>\r\n <!-- <div class=\"ck-button\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" id=\"two\" class=\"prntchk\" [disabled]=\"two\" (click)=\"selectEle(1 , $event.target.checked);\">\r\n <span>2EX</span>\r\n </label>\r\n </div>\r\n </div> -->\r\n <div class=\"ck-button\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" id=\"thvgup\" class=\"prntchk\" [disabled]=\"thvgup\"\r\n (click)=\"selectEle(3 , $event.target.checked);\">\r\n <span><b> ↑</b> 3VG</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"col-md-1\">\r\n <label style=\"margin-top:15px;\"\r\n [ngStyle]=\"{'margin-top':((attcompo.dataType == 't' && attcompo.attr=='vnm') || attcompo.dataType == 'd' || attcompo.dataType == 'n' )?'30px':'15px'}\"\r\n class=\"pull-right\">{{attcompo.print}}</label>\r\n </div>\r\n <div class=\"col-md-{{attcompo.displayType}}\"\r\n [ngStyle]=\"{'overflow-x' : attcompo.attr == 'sz' ? 'unset': 'auto'}\"\r\n style=\"margin-top: 10px;white-space: nowrap;\">\r\n <!-- <span id=\"l{{attcompo.attr}}\" class=\"button larr\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"leftScroll(attcompo.attr+''+attcompo.dataType)\"><i style=\"font-size: 16px;color: #3b5998;\"\r\n class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i></span>\r\n <div style=\"overflow-x: auto;\" class=\"{{attcompo.attr+''+attcompo.dataType}}\" id=\"scr_{{attcompo.displayType+''+attcompo.attr+''+attcompo.dataType}}\">\r\n <ng-container *ngFor=\"let prpLst of attcompo.prpList;let i =index\">\r\n <div style=\"display: inline-block;\">\r\n <div class=\"ck-button\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\" id=\"{{attcompo.attr+'_'+prpLst.sort}}\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" value=\"{{prpLst.sort}}\" name=\"{{prpLst.sort}}\" id=\"{{attcompo.attr+'_'+prpLst.val}}\"\r\n (click)=\"checkBoxFun(attcompo, prpLst.sort, $event.target.checked,attcompo.attr+'_'+prpLst.val)\">\r\n <span>{{prpLst.print}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <span id=\"r{{attcompo.attr}}\" class=\"button rarr\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"rightScroll(attcompo.attr+''+attcompo.dataType)\"><i style=\"font-size: 16px;color: #3b5998;\"\r\n class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i></span> -->\r\n <span id=\"l{{attcompo.attr}}\" class=\"button larr\"\r\n *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"leftScroll(attcompo.attr+''+attcompo.dataType)\"><i\r\n style=\"font-size: 16px;color: #3b5998;\" class=\"fa fa-chevron-left\"\r\n aria-hidden=\"true\"></i></span>\r\n <div style=\"overflow-x: hidden;\" class=\"{{attcompo.attr+''+attcompo.dataType}}\"\r\n id=\"scr_{{attcompo.displayType+''+attcompo.attr+''+attcompo.dataType}}\">\r\n <div style=\"display: inline-block;\">\r\n <div class=\"ck-button\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" [checked]=\"chk\" id=\"all{{attcompo.attr}}\"\r\n (click)=\"selectAll(attcompo, $event);\">\r\n <span>All</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let prpLst of attcompo.prpList;let i =index\">\r\n <div style=\"display: inline-block;\">\r\n <div class=\"ck-button\" *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n id=\"{{attcompo.attr+'_'+prpLst.sort}}\">\r\n <div class=\"outChkCls\">\r\n <label style=\"margin-bottom: 0;\">\r\n <input type=\"checkbox\" value=\"{{prpLst.sort}}\" name=\"{{prpLst.sort}}\"\r\n id=\"{{attcompo.attr+'_'+prpLst.val}}\"\r\n (click)=\"checkBoxFun(attcompo, prpLst.sort, $event.target.checked,attcompo.attr+'_'+prpLst.val)\">\r\n <span>{{prpLst.print}}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <span id=\"r{{attcompo.attr}}\" class=\"button rarr\"\r\n *ngIf=\"attcompo.dataType == 'c' && attcompo.attr != 'sz'\"\r\n (click)=\"rightScroll(attcompo.attr+''+attcompo.dataType)\"><i\r\n style=\"font-size: 16px;color: #3b5998;\" class=\"fa fa-chevron-right\"\r\n aria-hidden=\"true\"></i></span>\r\n <div *ngIf=\"attcompo.attr == 'sz'\"\r\n [ngStyle]=\"{'margin-top' : attcompo.attr == 'sz' ? '-20px' : '0'}\">\r\n\r\n\r\n <!-- <ng-select placeholder=\"Select Sizes\" id=\"{{attcompo.attr}}\" [options]=\"attcompo.prpList\"\r\n [(ngModel)]=\"szprp\" name=\"{{attcompo.attr}}\" [multiple]=\"true\"\r\n (deselected)=\"multiselect(attcompo,szprp)\" (selected)=\"multiselect(attcompo,szprp)\"\r\n [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value.toLowerCase()}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select> -->\r\n\r\n\r\n <angular2-multiselect [data]=\"attcompo.prpList\" [(ngModel)]=\"szprp\"\r\n [settings]=\"dropdownSettings\" (onSelect)=\"multiselect(attcompo,szprp)\"\r\n (onDeSelect)=\"multiselect(attcompo,szprp)\" (onSelectAll)=\"multiselect(attcompo,szprp)\"\r\n (onDeSelectAll)=\"deselect(attcompo,szprp)\">\r\n </angular2-multiselect>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <div style=\"overflow-x: hidden;\" *ngIf=\"attcompo.dataType == 'n'\">\r\n <div class=\"col-md-6\">\r\n <input type=\"number\" class=\"form-control form-control-sm\" id=\"{{attcompo.attr+''+0}}\"\r\n name=\"{{attcompo.attr}}\" (change)=\"additional(attcompo,$event,0, 'cwrtm')\"\r\n placeholder=\"From\">\r\n </div>\r\n <div class=\"col-md-6\" style=\"margin: 0;\">\r\n <input type=\"number\" class=\"form-control form-control-sm\" id=\"{{attcompo.attr+1}}\"\r\n name=\"{{attcompo.attr}}\" (change)=\"additional(attcompo,$event,1, 'cwrtm')\"\r\n placeholder=\"To\">\r\n </div>\r\n <!-- <span *ngIf=\"attcompo.attr == 'crtwt'\" class=\"addbtn\" (click)=\"addCwrt();\"><i [ngClass]=\"tg == true ? 'fa fa-minus' : 'fa fa-plus'\"\r\n aria-hidden=\"true\"></i></span>\r\n <div *ngIf=\"attcompo.attr == 'crtwt' && tg\">\r\n <ul class=\"additionalDiv\">\r\n <li *ngFor=\"let wtg of wtgArry;let i = index\">\r\n {{i+1}}\r\n <input type=\"text\" (change)=\"additional(wtg, $event, 0, 'cwrtc')\" style=\"border-radius: 2px;border: 1px solid #c9c9c9;height: 25px;\">\r\n <input type=\"text\" (change)=\"additional(wtg, $event, 1,'cwrtc')\"\r\n style=\"border-radius: 2px;border: 1px solid #c9c9c9;height: 25px;\">\r\n </li>\r\n </ul>\r\n </div> -->\r\n </div>\r\n <div *ngIf=\"attcompo.dataType == 't'\">\r\n <div>\r\n\r\n <textarea class=\"form-control form-control-sm\" id=\"{{attcompo.attr+''+0}}\"\r\n name=\"{{attcompo.attr}}\" (change)=\"singleVal(attcompo,$event.target.value, 't')\"\r\n cols=\"50\" rows=\"3\"></textarea>\r\n\r\n <!-- <input type=\"text\" id=\"{{attcompo.attr+''+0}}\" style=\"width:20%\" name=\"{{attcompo.attr}}\"\r\n (change)=\"singleVal(attcompo,$event.target.value, 't')\" class=\"form-control form-control-sm\"> -->\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- <div *ngIf=\"attcompo.dataType == 'd'\">\r\n <div>\r\n <input type=\"date\" id=\"{{attcompo.attr+''+0}}\" name=\"{{attcompo.attr}}\" (blur)=\"singleVal(attcompo,$event.target.value, 0)\"\r\n class=\"form-control form-control-sm\">\r\n </div>\r\n </div> -->\r\n\r\n\r\n <div *ngIf=\"attcompo.dataType == 'd'\">\r\n <div class=\"form-row\">\r\n <div class=\"form-group col-md-6\">\r\n <input type=\"date\" #todte id=\"{{attcompo.attr+''+0}}\" name=\"{{attcompo.attr}}\"\r\n placeholder=\"From\" class=\"form-control form-control-sm\">\r\n </div>\r\n <div class=\"form-group col-md-6\" style=\"margin: 0;\">\r\n <input type=\"date\" id=\"{{attcompo.attr+''+1}}\" name=\"{{attcompo.attr}}\"\r\n (blur)=\"onDateChange(attcompo,$event.target.value,1)\"\r\n class=\"form-control form-control-sm\" placeholder=\"To\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div *ngIf=\"(i+1)%3==0\" style=\"clear:both\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"pagefooter\">\r\n <div class=\"col-md-6\">\r\n </div>\r\n <div class=\"col-md-6\">\r\n <form class=\"form-inline\">\r\n <div class=\"pull-right\">\r\n <span class=\"schCount\" *ngIf=\"count > '0'\">Count : {{count}}</span>\r\n <select class=\"form-control\" name=\"viewGrp\" [(ngModel)]=\"viewGrp\">\r\n <option>Select Group</option>\r\n <option *ngFor=\"let group of groups\" [ngValue]=\"group\">{{group.name}}</option>\r\n </select> \r\n <!-- <select class=\"form-control\" name=\"viewFormate\" [(ngModel)]=\"viewFormate\">\r\n <option>Select </option>\r\n <option *ngFor=\"let view of viewOptions\" value=\"{{view?.form_field}}\">{{view?.form_field_title}}\r\n </option>\r\n </select> -->\r\n <!-- <a class=\"btn btn-success\" (click)=\"viewResult();\" target=\"_blank\">Submit</a> -->\r\n <!-- [(ngModel)]=\"viewFormate\" -->\r\n <ng-container *ngFor=\"let view of viewOptions\">\r\n <a class=\"btn btn-success\" (click)=\"viewResult(view.form_field);\" target=\"_blank\"\r\n style=\"margin-right: 15px;\">{{view?.form_field_title}}</a>\r\n </ng-container>\r\n\r\n\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\n\r\n@Component({\r\n selector: 'app-callinfo',\r\n templateUrl: './callinfo.component.html',\r\n styleUrls: ['./callinfo.component.css']\r\n})\r\nexport class CallInfoComponent implements OnInit {\r\n\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n private cs: CommanServiceService,\r\n // private flashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private globlEnv: GlobleEnvService\r\n ) { }\r\n\r\n header;\r\n communictionMode=[];\r\n contactDate;\r\n medium;\r\n subject;\r\n summary;\r\n detail;\r\n emp_idn;\r\n nme_idn;\r\n ngOnInit() {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n let mdlKey = Object.keys(mdlk);\r\n let cUrl = this.router.url;\r\n this.header = {\r\n 'Content-Type': 'application/json',\r\n 'clientkey': Cookie.get('_ck'),\r\n 'modulekey':mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n\r\n this.route.params.subscribe((params: Params) => {\r\n this.loadCallInfo();\r\n });\r\n }\r\n\r\n loadCallInfo(){\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n this.header['method'] = 'loadCommunicationLogForm';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'marketing/transaction').then((response: any) => {\r\n if(response.status == 'SUCCESS') {\r\n let result = response.result||{};\r\n this.communictionMode=result.communicationMediumList||[];\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n\r\n SaveCallInfo(){\r\n this.contactDate=this.contactDate||'';\r\n this.medium = this.medium||'';\r\n this.subject=this.subject||'';\r\n this.summary=this.summary||'';\r\n this.detail=this.detail||'';\r\n let isValid = true;\r\n if(this.contactDate==''){\r\n // this.flashMessagesService.show(\"Please specify ContactDate\", { cssClass: 'alert-danger', timeout: 3000 });\r\n isValid = false;\r\n }\r\n\r\n if(this.medium==''){\r\n // this.flashMessagesService.show(\"Please specify Medium\", { cssClass: 'alert-danger', timeout: 3000 });\r\n isValid = false;\r\n }\r\n\r\n if(this.subject==''){\r\n // this.flashMessagesService.show(\"Please specify subject\", { cssClass: 'alert-danger', timeout: 3000 });\r\n isValid = false;\r\n }\r\n if(this.summary==''){\r\n // this.flashMessagesService.show(\"Please specify summary\", { cssClass: 'alert-danger', timeout: 3000 });\r\n isValid = false;\r\n }\r\n if(isValid){\r\n\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n reqObj['emp_idn'] = this.emp_idn;\r\n reqObj['nme_idn'] = this.nme_idn;\r\n reqObj['log_ts'] = this.cs.formatDate(this.contactDate);\r\n reqObj['auto_yn'] =\"0\"\r\n reqObj['channel'] = this.medium;\r\n reqObj['subject'] = this.subject;\r\n reqObj['summary'] = this.summary;\r\n reqObj['details'] = this.detail;\r\n reqObj['pvt']=0;\r\n reqObj['attrMap']={};\r\n reqObj['recipientListMap']={};\r\n\r\n this.header['method'] = 'saveMailLogDetails';\r\n\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'marketing/transaction').then((response: any) => {\r\n if(response.status == 'SUCCESS') {\r\n let result = response.result||{};\r\n\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"row\">\r\n <div class=\"form-group\" >\r\n <label class=\"col-md-4 control-label\" style=\"margin-top:10px;text-align: right\"><span style=\"color:red\">*</span> Contact Date\r\n </label>\r\n <div class=\"col-md-6\" style=\"margin-top:10px\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <input class=\"form-control\" type=\"date\" [(ngModel)]=\"contactDate\" name=\"contactDate\"/>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" >\r\n <label class=\"col-md-4 control-label\" style=\"margin-top:10px;text-align: right\"><span style=\"color:red\">*</span> Channel / Medium\r\n </label>\r\n <div class=\"col-md-6\" style=\"margin-top:10px\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <select class=\"form-control\" name=\"medium\" [(ngModel)]=\"medium\" >\r\n <option value=\"\">Select Channel / Medium</option>\r\n <option *ngFor=\"let prp of communictionMode\" [ngValue]=\"prp.k\">{{prp.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\" >\r\n <label class=\"col-md-4 control-label\" style=\"margin-top:10px;text-align: right\"><span style=\"color:red\">*</span> Subject\r\n </label>\r\n <div class=\"col-md-6\" style=\"margin-top:10px\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <input type=\"text\" class=\"form-control\" name=\"subject\" [(ngModel)]=\"subject\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"form-group\">\r\n <label class=\"col-md-4 control-label\" style=\"margin-top:10px;text-align: right\"><span style=\"color:red\">*</span> Summary / Topic\r\n </label>\r\n <div class=\"col-md-6\" style=\"margin-top:10px\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <input type=\"text\" class=\"form-control\" name=\"summary\" [(ngModel)]=\"summary\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"col-md-4 control-label\" style=\"margin-top:10px;text-align: right\">Detail\r\n </label>\r\n <div class=\"col-md-6\" style=\"margin-top:10px\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <textarea class=\"form-control\" name=\"detail\" [(ngModel)]=\"detail\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"form-group\"><div class=\"col-md-12\" style=\"margin-top:10px;;text-align: center\">\r\n <button class=\"btn btn-success\" \r\n appAppNoDblClick (click)=\"SaveCallInfo()\">Save Changes</button>\r\n </div></div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContactServiceService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService,\r\n ) { }\r\n\r\n\r\n getMenuRights(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n saveUserMenuRights(reqObj, headers){\r\n return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n //added by jayesh\r\n loadMenuRightsUserWise(reqObj, headers){\r\n return this.http.post(this.glbEnv.baseUrl + 'contact/loadContact', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n saveUserMenuRightsContact(reqObj, headers){\r\n return this.http.post(this.glbEnv.baseUrl + 'contact/loadContact', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n load(reqObj, headers,url){\r\n return this.http.post(this.glbEnv.baseUrl+url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n}\r\n","// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { throwError,forkJoin } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StockServiceService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService,\r\n // private FlashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService\r\n ) { }\r\n\r\n load(reqObj, headers, url) {\r\n console.log(\"url\",this.glbEnv.baseUrl + url);\r\n console.log(\"headers\",headers);\r\n return this.http.post(this.glbEnv.baseUrl + url, typeof(reqObj)==\"object\"? JSON.stringify(reqObj):reqObj, headers)\r\n .toPromise()\r\n .then((response) => response).catch(err => {\r\n // this.spinnerService.hide();\r\n // this.FlashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n Getdata(reqObj, header, url) {\r\n \r\n let options: any = new HttpHeaders({ headers: header });\r\n // let options: any = new RequestOptions({ headers: header });\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n .pipe(catchError((error) => {\r\n // this.spinnerService.hide();\r\n // this.FlashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n public requestDataFromMultipleSources(MultipleReqList): Observable<any[]> {\r\n if(MultipleReqList.length>0){\r\n let forkJoinReqList = [];\r\n MultipleReqList.forEach(element => {\r\n forkJoinReqList.push(this.Getdata(element.reqObj,element.header,element.url));\r\n });\r\n return forkJoin(forkJoinReqList);\r\n }\r\n\r\n\r\n }\r\n getCookies() {\r\n return Cookie.get('_logid');\r\n }\r\n\r\n}\r\n\r\n\r\n// getIp(header) {\r\n// return this.http.get(\"http://freegeoip.net/json/\", header)\r\n// .toPromise()\r\n// .then((response) => response);\r\n// }","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'ContactTableSrcPipe'\r\n})\r\nexport class ContacttableSearch implements PipeTransform {\r\n\r\n transform(value: any, args?: any, para?:any): any {\r\n if (!value) { return null; }\r\n if (!args) { return value; }\r\n args = args.toLowerCase();\r\n return value.filter(function (item) {\r\n return JSON.stringify(item).toLowerCase().includes(args);\r\n });\r\n }\r\n\r\n}\r\n ","import { Component, OnInit, ElementRef, ViewChild, Pipe, AfterViewInit } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { ContactServiceService } from '../contact-service/contact-service.service';\r\nimport { StockServiceService } from '../stock-service/stock-service.service';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { AbstractControl } from '@angular/forms';\r\n//import { ToolbarService, LinkService, ImageService, HtmlEditorService, TableService, QuickToolbarService } from '@syncfusion/ej2-angular-richtexteditor';\r\n//import * as ClassicEditor from '@ckeditor/ckeditor5-build-classic';\r\nimport { FormGroup, FormBuilder,Validators } from '@angular/forms';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-contact-search',\r\n templateUrl: './contact-search.component.html',\r\n styleUrls: ['./contact-search.component.css']\r\n})\r\nexport class ContactSearchComponent implements OnInit {\r\n\r\n\r\n\r\n\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n private cs: ContactServiceService,\r\n private ss: StockServiceService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private cmncs: CommanServiceService,\r\n private fb: FormBuilder\r\n ) { }\r\n\r\n @ViewChild('submitBtn') submitbtn: ElementRef;\r\n @ViewChild('slexclosebtn') slexclosebtn: ElementRef;\r\n @ViewChild('mailclosebtn') mailclosebtn: ElementRef;\r\n @ViewChild('notificlosebtn') notificlosebtn: ElementRef;\r\n\r\npublic config = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '15rem',\r\n minHeight: '5rem',\r\n placeholder: 'Enter text here...',\r\n translate: 'no',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: 'Arial'\r\n \r\n};\r\n\r\npublic noticonfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '5rem',\r\n minHeight: '3rem',\r\n placeholder: 'Enter text here...',\r\n translate: 'no',\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n toolbarHiddenButtons: [\r\n [\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strikeThrough',\r\n 'subscript',\r\n 'superscript',\r\n 'justifyLeft',\r\n 'justifyCenter',\r\n 'justifyRight',\r\n 'justifyFull',\r\n 'indent',\r\n 'outdent',\r\n 'insertUnorderedList',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName'\r\n ],\r\n [\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor',\r\n 'customClasses',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'insertHorizontalRule',\r\n 'removeFormat',\r\n 'toggleEditorMode'\r\n ]\r\n ]\r\n};\r\n\r\n\r\n cUrl;\r\n header;\r\n cDt = new Date();\r\n editorConfig;\r\n\r\n contactTypeList;\r\n currencyList;\r\n termsList;\r\n pageDefination;\r\n htmlcontent;\r\n searchF;\r\n\r\n employeeList = [];\r\n countryList = [];\r\n buyerList = [];\r\n saleExecutiveList = [];\r\n cityList = [];\r\n contactType = '';\r\n actions = [];\r\n buyerSugg;\r\n empId;\r\n Terms = '';\r\n currency = '';\r\n userName;\r\n City = '';\r\n trns_buttons;\r\n dataHeader = [];\r\n dataList = [];\r\n dataHeaderPrint;\r\n buttons;\r\n tabs;\r\n status;\r\n\r\n MailMsg;\r\n saleExcute;\r\n nameIdnList;\r\n myFormmm: FormGroup;\r\n myNotification: FormGroup;\r\n notificationMdlList=[];\r\n buyer;\r\n mmtimeList=[];\r\n hhtimeList=[];\r\n loadProcess() {\r\n this.status=\"0\";\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frm']; //'contactSearchForm';//;\r\n this.header['method'] = 'load';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(reqObj));\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n this.contactTypeList = response.contactTypeList;\r\n this.currencyList = response.currencyList;\r\n this.termsList = response.termsList;\r\n this.countryList = response.countryList;\r\n // this.buyerList = response.buyerList;\r\n this.saleExecutiveList = response.saleExecutiveList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n this.actions = response.pageDefination.action||[];\r\n this.tabs = response.pageDefination.tabs||[]\r\n this.trns_buttons=response.pageDefination.trns_buttons||[];\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n addNewContact(dtl){\r\n console.log(dtl);\r\n this.router.navigate([dtl.lov_qry]);\r\n }\r\n\r\n \r\n\r\n loadBuyer(searchTerm) {\r\n \r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['likeStr'] = searchTerm;\r\n reqObj['typ'] = 'All';\r\n this.header['method'] = 'loadBuyer';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.buyerList = result.buyerList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n EmployeeList=[];\r\n loadSaleExcutive(searchTerm) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['likeStr'] = searchTerm;\r\n reqObj['typ'] = 'employee';\r\n this.header['method'] = 'loadBuyer';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.EmployeeList = result.buyerList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n getCity(counrytId) {\r\n if (counrytId == undefined || counrytId == '') return\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frm']; \r\n reqObj['countryIdn'] = counrytId;\r\n this.header['method'] = 'getCityBasedOnCountry';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.cityList = [];\r\n this.City = '';\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n this.cityList = response.cityList;\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n onSubmit(formVal, subBtn) {\r\n \r\n var t = Object.keys(formVal.form.controls).forEach(field => {\r\n const control = formVal.form.get(field);\r\n });\r\n // this.searchContact(formVal.value, subBtn);\r\n }\r\n\r\n searchContact() {\r\n debugger\r\n //console.log(frmFld);\r\n // \"formNme\":\"contactSearchForm\",\r\n // \"tableNameVar\":\"nme_m#nme_m#nme_m#buyer_terms#buyer_terms\",\r\n // \"tableFieldVar\":\"emp_idn#nme_idn#typ#currency_idn#terms_idn\",\r\n // \"typeVar\":\"n#n#n#n#n\",\r\n // \"attrVar\":\"emp_idn#nme_idn#typ#currency_idn#terms_idn\",\r\n // \"valuesVar\":\"27588#28173#buyer#206#246\",\r\n // \"dataTypeVar\":\"n#n#c#n#n\"\r\n\r\n //*****for username******** ///\r\n // \"tableNameVar\":\"appl_user\",\r\n // \"tableFieldVar\":\"username\",\r\n // \"typeVar\":\"n\",\r\n // \"attrVar\":\"username\",\r\n // \"valuesVar\":\"nilamweb\",\r\n // \"dataTypeVar\":\"c\"\r\n\r\n // this.spinnerService.show();\r\n\r\n let tableNameVar = '';\r\n let tableFieldVar = '';\r\n let typeVar = '';\r\n let attrVar = '';\r\n let valuesVar = '';\r\n let dataTypeVar = '';\r\n if (this.userName != null && this.userName != \"\" && this.userName != undefined) {\r\n tableNameVar += 'appl_user' + '#';\r\n tableFieldVar += 'username' + '#';\r\n typeVar += 'n' + '#';\r\n attrVar += 'username' + '#';\r\n valuesVar += this.userName + '#';\r\n dataTypeVar += 'c' + '#';\r\n }\r\n\r\n if (this.contactType != null && this.contactType != \"\" && this.contactType != undefined) {\r\n tableNameVar += 'nme_m' + '#';\r\n tableFieldVar += 'typ' + '#';\r\n typeVar += 'n' + '#';\r\n attrVar += 'typ' + '#';\r\n valuesVar += this.contactType+ '#';\r\n dataTypeVar += 'c' + '#';\r\n }\r\n\r\n if (this.buyer != null && this.buyer != \"\" && this.buyer != undefined) {\r\n tableNameVar += 'nme_m' + '#';\r\n tableFieldVar += 'nme_idn' + '#';\r\n typeVar += 'n' + '#';\r\n attrVar += 'nme_idn' + '#';\r\n valuesVar += this.buyer + '#';\r\n dataTypeVar += 'n' + '#';\r\n }\r\n if (this.empId != null && this.empId != \"\" && this.empId != undefined) {\r\n tableNameVar += 'nme_m' + '#';\r\n tableFieldVar += 'emp_idn' + '#';\r\n typeVar += 'n' + '#';\r\n attrVar += 'emp_idn' + '#';\r\n valuesVar += this.empId + '#';\r\n dataTypeVar += 'n' + '#';\r\n }\r\n\r\n if (this.Terms != null && this.Terms != \"\" && this.Terms != undefined) {\r\n tableNameVar += 'buyer_terms' + '#';\r\n tableFieldVar += 'terms_idn' + '#';\r\n typeVar += 'n' + '#';\r\n attrVar += 'terms_idn' + '#';\r\n valuesVar += this.Terms + '#';\r\n dataTypeVar += 'n' + '#';\r\n }\r\n\r\n if (this.currency != null && this.currency != \"\" && this.currency != undefined) {\r\n tableNameVar += 'buyer_terms' + '#';\r\n tableFieldVar += 'currency_idn' + '#';\r\n typeVar += 'n' + '#';\r\n attrVar += 'currency_idn' + '#';\r\n valuesVar += this.currency + '#';\r\n dataTypeVar += 'n' + '#';\r\n }\r\n\r\n \r\n\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frm']; \r\n reqObj['tableNameVar'] = tableNameVar.slice(0, -1);//'nme_m';\r\n reqObj['tableFieldVar'] = tableFieldVar.slice(0, -1);//'typ';\r\n reqObj['typeVar'] = typeVar.slice(0, -1);//'n';\r\n reqObj['attrVar'] = attrVar.slice(0, -1);//'typ';\r\n reqObj['valuesVar'] = valuesVar.slice(0, -1); //contactType.print.toLowerCase();\r\n reqObj['dataTypeVar'] = dataTypeVar.slice(0, -1);//'c';\r\n if (this.nameIdnList != \"\" && this.nameIdnList != undefined && this.nameIdnList != null) {\r\n this.nameIdnList=this.nameIdnList.trim();\r\n let spaceTocomma = this.nameIdnList.replace(/[ ,]+/g, \",\");\r\n let newLineToComma = spaceTocomma.replace(/\\n/g, \",\");\r\n reqObj['nmeIdnList']= newLineToComma.split(',');\r\n }\r\n this.header['method'] = 'searchContact';\r\n console.log(JSON.stringify(reqObj));\r\n \r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n this.dataHeader = response.dataHeader;\r\n this.dataList = response.dataList;\r\n this.dataHeaderPrint = response.dataHeaderPrint;\r\n this.pageDefination = response.pageDefination;\r\n this.selectedItm=[];\r\n this.nameIdnList=\"\";\r\n document.getElementById(\"wrap\").addEventListener(\"scroll\", function () {\r\n var translate = \"translate(0,\" + this.scrollTop + \"px)\";\r\n this.querySelector(\"thead\").style.transform = translate;\r\n });\r\n \r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n userAction(ua, c, a) {\r\n debugger\r\n if (ua && c.trim() == 'subform') {\r\n this.router.navigate([a.lov_qry.trim(), a.column_key, ua.nme_idn]);\r\n }\r\n }\r\n toolactions(tab){\r\n \r\n // console.log(\"process\", process);\r\n switch (tab.form_field) {\r\n\r\n case \"addnotification\": {\r\n this.NotificationPopup();\r\n break;\r\n } default: {\r\n console.log(\"Invalid choice\");\r\n break;\r\n }\r\n }\r\n \r\n \r\n }\r\n\r\n NotificationPopup(){\r\n if(this.selectedItm.length>0){\r\n this.notificationFormreset();\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frm'];\r\n this.header['method'] = 'loadNotification';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/notification').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result||{};\r\n this.notificationMdlList = result.notificationMdlList||[];\r\n document.getElementById('btnNotification').click();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n \r\n }else{\r\n // this.flashMessagesService.show(\"Please select contacts\", { cssClass: 'alert-danger', timeout: 3000 });\r\n \r\n }\r\n }\r\n\r\n AddNotification(){\r\n if (this.myNotification.valid) {\r\n let formsVal = this.myNotification.value;\r\n let buyerList=[];\r\n this.selectedItm.forEach(element=>{\r\n let nme_idn = element.nme_idn||[];\r\n buyerList.push(nme_idn);\r\n })\r\n debugger\r\n let dateString = formsVal['logdate']+' '+formsVal['hh']+':'+formsVal['mm']+':00';\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frm'];\r\n reqObj['log_ts'] =dateString;\r\n reqObj['pub_pvt'] = formsVal['pub_pvt'];\r\n reqObj['mdl'] = formsVal['mdl'];\r\n reqObj['src'] = formsVal['src'];\r\n reqObj['msg'] = formsVal['massage'];\r\n reqObj['status'] = formsVal['status'];\r\n reqObj['buyerList'] = buyerList;\r\n reqObj['action'] = 'add' ;\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = 'saveNotification';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/notification').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result||{};\r\n this.notificationFormreset();\r\n this.selectedItm=[];\r\n // this.spinnerService.hide();\r\n this.notificlosebtn.nativeElement.click();\r\n // this.flashMessagesService.show(\"Notification added successfully.\", { cssClass: 'alert-success', timeout: 3000 });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }else{\r\n // this.flashMessagesService.show(\"Please specify all required field\", { cssClass: 'alert-danger', timeout: 3000 });\r\n\r\n }\r\n\r\n }\r\n\r\n exportExcel() {\r\n this.cmncs.CSVConvertor(this.dataList, 'Contact_Search_', true);\r\n }\r\n\r\n MailPopup(){\r\n if(this.selectedItm.length>0){\r\n document.getElementById('btnsendMail').click();\r\n }else{\r\n // this.flashMessagesService.show(\"Please select contacts\", { cssClass: 'alert-danger', timeout: 3000 });\r\n\r\n }\r\n }\r\n\r\n UpdateSaleExecutivePop(){\r\n if(this.selectedItm.length>0){\r\n document.getElementById('btnsaleex').click();\r\n }else{\r\n // this.flashMessagesService.show(\"Please select contacts\", { cssClass: 'alert-danger', timeout: 3000 });\r\n\r\n }\r\n }\r\n\r\n UpdateSaleExecutive(){\r\n let nmeIdnList=[];\r\n this.selectedItm.forEach(element=>{\r\n let nme_idn = element.nme_idn||[];\r\n nmeIdnList.push(nme_idn);\r\n })\r\n this.saleExcute=this.saleExcute||\"\";\r\n if(this.saleExcute!=\"\"){\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frm']; \r\n reqObj['nmeIdnList']=nmeIdnList;\r\n reqObj['emp_idn']=this.saleExcute;\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = 'assignSaleExecutive';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if(response.status == 'SUCCESS') {\r\n this.saleExcute=\"\";\r\n this.slexclosebtn.nativeElement.click();\r\n // this.flashMessagesService.show(\"Update done successfully\", { cssClass: 'alert-success', timeout: 3000 });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }else{\r\n // this.flashMessagesService.show(\"Please Specify Sale Executive\", { cssClass: 'alert-danger', timeout: 3000 });\r\n\r\n }\r\n \r\n }\r\n\r\n SendMail(){\r\n let formsVal = this.myFormmm.value;\r\ndebugger\r\n let isValid = true;\r\n let massage=\"\";\r\n let htmlcontent =formsVal['htmlcontent']||'';\r\n let subject=formsVal['subject']||'';\r\n let senderName=formsVal['senderName']||'';\r\n if(this.selectedItm.length==0){\r\n isValid = false;\r\n massage=\"Please select contacts for mail\";\r\n\r\n }\r\n if(subject==''){\r\n isValid = false;\r\n massage=\"Please Specify Subject\";\r\n\r\n }\r\n if(htmlcontent==''){\r\n isValid = false;\r\n massage=\"Please Specify Mail Body\";\r\n\r\n }\r\n\r\n if(senderName==''){\r\n isValid = false;\r\n massage=\"Please Specify Sender Name\";\r\n\r\n }\r\n\r\n if(isValid){\r\n let CClst =formsVal['CC'] ||'';\r\n let BCClst = formsVal['BCC']||'';\r\n let cc=[];\r\n let bcc=[];\r\n\r\n // this.spinnerService.show();\r\n \r\n\r\n if(CClst!=''){\r\n let spaceTocomma = CClst.replace(/[ ,]+/g, \",\");\r\n let newLineToComma = spaceTocomma.replace(/\\n/g, \",\");\r\n cc = newLineToComma.split(',');\r\n }\r\n if(BCClst!=''){\r\n let spaceTocomma = BCClst.replace(/[ ,]+/g, \",\");\r\n let newLineToComma = spaceTocomma.replace(/\\n/g, \",\");\r\n bcc = newLineToComma.split(',');\r\n }\r\n let emailDetails=[];\r\n this.selectedItm.forEach(element=>{\r\n let emailIdns = element.emailIdns||[];\r\n let nme_idn=element.nme_idn;\r\n let emp_idn=element.emp_idn;\r\n if(emailIdns.length>0){\r\n emailDetails.push({\r\n \"emails\":emailIdns,\r\n \"nme_idn\":nme_idn,\r\n \"emp_idn\":emp_idn\r\n })\r\n }\r\n })\r\n debugger\r\n \r\n let reqObj = {};\r\n reqObj['formNme'] = \"ContactMassMail\";\r\n reqObj['sendername']=senderName;\r\n reqObj['subject']=subject;\r\n reqObj['maildetails']=emailDetails;\r\n reqObj['cc']=cc;\r\n reqObj['bcc']=bcc;\r\n reqObj['mailBody']=htmlcontent;\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = 'sendBulkMail';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if(response.status == 'SUCCESS') {\r\n this.myFormmm = this.fb.group({\r\n senderName: ['', Validators.required],\r\n subject: ['', Validators.required],\r\n htmlcontent: ['', [Validators.required]],\r\n CC: \"\",\r\n BCC:\"\"\r\n });\r\n this.mailclosebtn.nativeElement.click();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }else{\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(massage, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n\r\n }\r\n\r\n\r\n get notificationControl() {\r\n return this.myNotification.controls;\r\n }\r\n\r\n selectRow(nme_idn) {\r\n document.getElementById('cb_'+nme_idn).click();\r\n }\r\n selectAll(e) {\r\n this.dataList.forEach(ele=>{\r\n debugger\r\n this.selectRow(ele.nme_idn);\r\n })\r\n \r\n }\r\n\r\n selectedObj = [];\r\n selectedItm = [];\r\n selectedCrtWeight = 0;\r\n checkedRow(data, nme_idn) {\r\n debugger\r\n if ((document.getElementById('cb_'+nme_idn) as any).checked == false) {\r\n let element = document.getElementById('cb_'+nme_idn);//pktId\r\n element.parentElement.parentElement.classList.remove(\"selectedRow\");\r\n element.parentElement.parentElement.classList.add(\"notselectedRow\");\r\n this.selectedItm.forEach((element, index) => {\r\n if (element.nme_idn == nme_idn) {\r\n this.selectedItm.splice(index, 1);\r\n }\r\n });\r\n } else {\r\n var element = document.getElementById('cb_'+nme_idn);//pktId\r\n element.parentElement.parentElement.classList.remove(\"notselectedRow\");\r\n element.parentElement.parentElement.classList.add(\"selectedRow\");\r\n this.selectedItm.push(data);\r\n }\r\nconsole.log(this.selectedItm);\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.editorConfig = this.cmncs.editorConfig;\r\n\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n this.cUrl = this.router.url;\r\n console.log(this.cUrl.split('/')[1]);\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n \r\n this.myFormmm = this.fb.group({\r\n senderName: ['', Validators.required],\r\n subject: ['', Validators.required],\r\n htmlcontent: ['', [Validators.required]],\r\n CC: \"\",\r\n BCC:\"\"\r\n });\r\n this.mmtimeList=[];\r\n for(var i=0;i<24;i++){\r\n if(i<10)\r\n this.mmtimeList.push(\"0\"+i);\r\n else\r\n this.mmtimeList.push(\"\"+i);\r\n }\r\n\r\n this.hhtimeList=[];\r\n for(var i=0;i<60;i++){\r\n if(i<10)\r\n this.hhtimeList.push(\"0\"+i);\r\n else\r\n this.hhtimeList.push(\"\"+i);\r\n }\r\n\r\n this.notificationFormreset();\r\n this.loadProcess();\r\n }\r\n notificationFormreset(){\r\n this.myNotification = this.fb.group({\r\n logdate: ['', Validators.required],\r\n pub_pvt: \"PVT\",\r\n mdl: ['', Validators.required],\r\n src:\"ez\",\r\n hh:\"00\",\r\n mm:\"00\",\r\n massage:['', Validators.required],\r\n status:\"P\"\r\n });\r\n }\r\n}\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <span class=\"fa fa-chevron-left cp\"> Back</span> Contact Search \r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n <div class=\"pull-right\" *ngIf=\"trns_buttons.length>0\">\r\n <button type=\"button\" (click)=\"addNewContact(trns_buttons[0])\" class=\"btn btn-success\" style=\"background-color:#3c5998;border-color: #3c5998;\">Add New Contact</button>\r\n </div> \r\n </div>\r\n </div>\r\n <div class=\"content-frame\" style=\"background: #fff;height: calc(100vh - 100px);\">\r\n <div class=\"innerD\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"row\" style=\"margin: 10px 0;\">\r\n \r\n <div class=\"form-group w-100\">\r\n <select class=\"form-control w-100\" name=\"contactType\" [(ngModel)]=\"contactType\" style=\"height: 100%;\">\r\n <option value=\"\">Select ContactType</option>\r\n <option *ngFor=\"let type of contactTypeList\" [ngValue]=\"type.val\">{{type.print}}</option>\r\n </select>\r\n </div>\r\n <div class=\"form-group w-100\">\r\n <div class=\"input-group w-100\">\r\n <!-- <ng-select [items]=\"buyerList\" [searchable]=\"false\" name=\"buyerSugg\" [(ngModel)]=\"buyerSugg\"\r\n bindLabel=\"v\" bindValue=\"k\" placeholder=\"Select Buyer\">\r\n <ng-template ng-header-tmp>\r\n <input style=\"width: 100%; line-height: 24px\" #buyer type=\"text\" (keyup)=\"loadBuyer(buyer.value);\"\r\n [autofocus]=\"testt\" />\r\n </ng-template>\r\n </ng-select> -->\r\n <ng-select style=\"z-index: 5;\" placeholder=\"Select Buyer\" [options]=\"buyerList\"\r\n [(ngModel)]=\"buyer\" name=\"buyer\" (filterInputChanged)=\"loadBuyer($event)\" [allowClear]=\"true\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\">\r\n <div class=\"input-group w-100\">\r\n <ng-select placeholder=\"Select employee\" name=\"empId\"\r\n [options]=\"saleExecutiveList\"\r\n [(ngModel)]=\"empId\" [allowClear]=\"true\">\r\n </ng-select>\r\n <!-- <ng-select [items]=\"saleExecutiveList\" [(ngModel)]=\"empId\" bindLabel=\"v\" name=\"empId\" bindValue=\"k\"\r\n placeholder=\"Select employee\" #buyerFil=\"ngModel\" required>\r\n <ng-template ng-header-tmp>\r\n </ng-template>\r\n </ng-select> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\">\r\n <select class=\"form-control w-100\" name=\"Terms\" [(ngModel)]=\"Terms\" style=\"height: 100%;\">\r\n <option value=\"\">Select Terms</option>\r\n <option *ngFor=\"let term of termsList\" value=\"{{term.terms_idn}}\">{{term.print}}</option>\r\n </select>\r\n </div>\r\n <div class=\"form-group w-100\">\r\n <select class=\"form-control w-100\" name=\"currency\" [(ngModel)]=\"currency\" style=\"height: 100%;\">\r\n <option value=\"\">Select currency</option>\r\n <option *ngFor=\"let currency of currencyList\" value=\"{{currency.currency_idn}}\">{{currency.print}}</option>\r\n </select>\r\n </div>\r\n <div class=\"form-group w-100\">\r\n <input class=\"form-control w-100\" placeholder=\"User Name\" type=\"text\" name=\"userName\" [(ngModel)]=\"userName\" />\r\n </div>\r\n <div class=\"form-group w-100\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"NameIdn List\" \r\n [(ngModel)]=\"nameIdnList\" id=\"nameIdnList\" name=\"nameIdnList\" cols=\"38\" rows=\"3\" ></textarea>\r\n </div>\r\n \r\n <div class=\" w-100\" style=\"padding-top: 10px;\">\r\n <button id=\"savebtn\" (click)=\"searchContact()\" type=\"button\" style=\"background-color:#3c5998;border-color: #3c5998\"\r\n class=\"btn btn-success pull-left\">submit</button>\r\n <!-- (click)=\"searchContact(contactType,buyerSugg,empId,Terms,currency,userName)\" -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 custCls\">\r\n <form class=\"form-horizontal\">\r\n <div class=\"row\" *ngIf=\"dataList?.length > 0\">\r\n <div class=\"col-md-1 pull-right\">\r\n <!-- <button type=\"submit\" class=\"btn btn-success\" (click)=\"togtsl();\" style=\"background-color:#3c5998;border-color: #3c5998;margin-top: 7px;margin-bottom: 7px\">tools</button> -->\r\n <!-- <div class=\"tlsdrp\" *ngIf=\"tsl\">\r\n <ul class=\"tlsul\">\r\n <li *ngFor=\"let action of actions\">\r\n <span class=\"{{action?.form_field_icon}} tslico\"></span>{{action?.form_field_title}}</li>\r\n </ul>\r\n </div> -->\r\n <div class=\"dropdown\">\r\n <button type=\"submit\" class=\"btn btn-success\" style=\"background-color:#3c5998;border-color: #3c5998;margin-top: 7px;margin-bottom: 7px\"\r\n data-toggle=\"dropdown\">tools\r\n <span class=\"caret\"></span>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-right\">\r\n <li *ngFor=\"let tab of tabs\" (click)=\"toolactions(tab);\" style=\"padding: 10px;\">\r\n <span class=\"{{tab?.form_field_icon}} tslico\"></span>{{tab?.form_field_title}}</li>\r\n\r\n <li style=\"padding: 10px;cursor: pointer;\" (click)=\"exportExcel();\">\r\n Excel</li>\r\n \r\n <li style=\"padding: 10px;cursor: pointer;\" (click)=\"UpdateSaleExecutivePop();\">\r\n Update Sales Executive\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 pull-left\">\r\n <div class=\"form-group\" style=\"padding-top: 10px;\">\r\n <div class=\"col-md-2\">\r\n <label for=\"exampleInputName2\" style=\"padding-top: 5px;\">Search </label>\r\n </div>\r\n\r\n <div class=\"col-md-5\">\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"table-responsive\" style=\"height: calc(100vh - 100px);\" id=\"wrap\">\r\n <table class=\"displayTable\" *ngIf=\"dataList?.length > 0\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <th>SR No<input type=\"checkbox\" (click)=\"selectAll($event);\"></th>\r\n <th>Action</th>\r\n <th *ngFor=\"let hdr of dataHeader\">{{dataHeaderPrint[hdr]}}</th>\r\n <th>Add.Emails</th>\r\n </tr>\r\n </thead>\r\n <tbody >\r\n <tr *ngFor=\"let data of dataList | ContactTableSrcPipe:searchF; let i = index\">\r\n <!-- | searchPipe:searchF -->\r\n <td (click)=\"selectRow(data.nme_idn)\">{{i + 1}}\r\n\r\n <input type=\"checkbox\" [hidden]=\"true\" id=\"cb_{{data.nme_idn}}\"\r\n (click)=\"checkedRow(data,data.nme_idn)\" value=\"{{data.nme_idn}}\" />\r\n </td>\r\n <td (click)=\"selectRow(data.nme_idn)\">\r\n <div class=\"btn-group\">\r\n <a href=\"#\" data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Action\r\n <span class=\"caret\"></span>\r\n </a>\r\n <ul class=\"dropdown-menu\" role=\"menu\">\r\n <li *ngFor=\"let action of pageDefination.action\">\r\n <a href=\"javascript:void(0)\" (click)=\"userAction(data,action.form_field_typ,action);\">\r\n {{action.form_field_title}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n <td *ngFor=\"let hdr of dataHeader\" (click)=\"selectRow(data.nme_idn)\">{{data[hdr]}}</td>\r\n <td>{{data['emailIdns']}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actionFooter pull-right\">\r\n <div class=\"row\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"modal\" id=\"modelSaleEx\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mailModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"true\">\r\n <div class=\"modal-dialog modal-md\" >\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"mailModalHead\">Update Sale Executive</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Sale Executive\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <ng-select style=\"z-index: 5;\" placeholder=\"Select Buyer\" [options]=\"EmployeeList\"\r\n [(ngModel)]=\"saleExcute\" name=\"saleExcute\" (filterInputChanged)=\"loadSaleExcutive($event)\" [allowClear]=\"true\">\r\n </ng-select> \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"modal-footer\">\r\n <!-- <p> dff {{htmlContent}}</p> -->\r\n <button type=\"button\" (click)=\"UpdateSaleExecutive()\" class=\"btn btn-success\">Update</button>\r\n <button type=\"button\" #slexclosebtn class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n<div class=\"modal\" id=\"modelMail\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mailModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"true\">\r\n <div class=\"modal-dialog modal-lg\" style=\"width: 705px\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" [formGroup]=\"myFormmm\" (ngSubmit)=\"SendMail()\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"mailModalHead\">Send Mail</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n \r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Sender Name\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <input type=\"text\" class=\"form-control posrel\" formControlName=\"senderName\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">Subject\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control posrel\" formControlName=\"subject\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">CC\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control posrel\" formControlName=\"CC\" name=\"CC\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\">BCC\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control posrel\" formControlName=\"BCC\" name=\"BCC\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <angular-editor [placeholder]=\"'Enter text here...'\" [config]=\"config\" formControlName=\"htmlcontent\"></angular-editor>\r\n <!-- <ejs-richtexteditor id='defaultRTE' [(value)]='value' ></ejs-richtexteditor> -->\r\n\r\n <!-- <ckeditor [(ngModel)]=\"value\" ></ckeditor> -->\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <!-- <p> dff {{htmlContent}}</p> -->\r\n <button type=\"submit\" class=\"btn btn-success\">Send</button>\r\n <button type=\"button\" #mailclosebtn class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n\r\n<div class=\"modal\" id=\"modelNotification\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"true\">\r\n <div class=\"modal-dialog modal-lg\" style=\"width: 705px\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" [formGroup]=\"myNotification\" (ngSubmit)=\"AddNotification()\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"mailModalHead\">Add Notification</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n \r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\"> <span style=\"color:red\">*</span> Date\r\n </label>\r\n <div class=\"col-md-4\">\r\n <div class=\"input-group input-group-sm w-100\">\r\n <input\r\n formControlName=\"logdate\"\r\n onfocus=\"(this.type='date')\"\r\n onblur=\"(this.type='text')\"\r\n class=\"form-control\"\r\n placeholder=\"dd/mm/yyyy\" \r\n />\r\n\r\n <span class=\"text-danger\"\r\n *ngIf=\"notificationControl.logdate.invalid && (notificationControl.logdate.dirty || notificationControl.logdate.touched) && notificationControl.logdate.errors.required\">\r\n Date is required\r\n </span>\r\n </div>\r\n </div>\r\n <label class=\"col-md-2 control-label\"> <span style=\"color:red\">*</span>Time(HH:MM)\r\n </label>\r\n <div class=\"col-md-1\" style=\"padding:2px;margin:0px;\">\r\n \r\n <select formControlName=\"hh\" style=\"padding:5px 5px\" class=\"form-control\" >\r\n \r\n <option *ngFor=\"let mmt of mmtimeList\" [ngValue]=\"mmt\">{{mmt}}</option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-1\" style=\"padding:2px;margin:0px;\">\r\n \r\n <select formControlName=\"mm\" style=\"padding:5px 5px\" class=\"form-control\" >\r\n \r\n <option *ngFor=\"let hht of hhtimeList\" [ngValue]=\"hht\">{{hht}}</option>\r\n </select>\r\n </div>\r\n \r\n \r\n \r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\"> <span style=\"color:red\">*</span>Module\r\n </label>\r\n <div class=\"col-md-10\">\r\n <div class=\"input-group w-100\">\r\n <select formControlName=\"mdl\" class=\"form-control\" >\r\n \r\n <option *ngFor=\"let notificate of notificationMdlList\" [ngValue]=\"notificate.k\">{{notificate['v']}}</option>\r\n \r\n \r\n </select>\r\n <span class=\"text-danger\"\r\n *ngIf=\"notificationControl.mdl.invalid && (notificationControl.mdl.dirty || notificationControl.mdl.touched) && notificationControl.mdl.errors.required\">\r\n Module is required\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n\r\n <div class=\"form-group\">\r\n <label class=\"col-md-2 control-label\"><span style=\"color:red\">*</span>Massage</label>\r\n <div class=\"col-md-10\">\r\n <angular-editor [placeholder]=\"\" [config]=\"noticonfig\" formControlName=\"massage\"></angular-editor>\r\n <span class=\"text-danger\"\r\n *ngIf=\"notificationControl.massage.invalid && (notificationControl.massage.dirty || notificationControl.massage.touched) && notificationControl.massage.errors.required\">\r\n Notification massage is required\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <!-- <p> dff {{htmlContent}}</p> -->\r\n <button type=\"submit\" class=\"btn btn-success\">Add</button>\r\n <button type=\"button\" #notificlosebtn class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n<button id=\"btnNotification\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#modelNotification\"></button>\r\n\r\n\r\n<button id=\"btnsaleex\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#modelSaleEx\"></button>\r\n\r\n<button id=\"btnsendMail\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#modelMail\"></button>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'tableSearch'\r\n})\r\nexport class TableSearchPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any, para?:any): any {\r\n if (!value) { return null; }\r\n if (!args) { return value; }\r\n args = args.toLowerCase();\r\n return value.filter(function (item) {\r\n return JSON.stringify(item).toLowerCase().includes(args);\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { filter } from 'rxjs-compat/operator/filter';\r\n\r\n@Component({\r\n selector: 'app-ezheader',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\nexport class EzHeaderComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n // private flashMessagesService: FlashMessagesService,\r\n private cs: CommanServiceService,\r\n public globlEnv: GlobleEnvService\r\n // private spinnerService: Ng4LoadingSpinnerService\r\n ) { }\r\n @ViewChild('closebtn') closebtn: ElementRef;\r\n\r\n cDate = new Date();\r\n ds = Cookie.get('_ds');\r\n uUsr = Cookie.get('_username');\r\n company = \"\"\r\n year = \"\"\r\n userDetails = [];\r\n historyLinkMap = {};\r\n historyLink = [];\r\n cUrl;\r\n header;\r\n accMenuList = {};\r\n flag = false;\r\n keyList = [];\r\n searchF;\r\n uname;\r\n qkSch;\r\n schId;\r\n sttsA;\r\n count;\r\n ntSch: boolean;\r\n srchCnt = 0;\r\n cnt = 0;\r\n feedbackComment = '';\r\n\r\n\r\n\r\n clickFilter(kc) {\r\n\r\n if (kc.which == 13) {\r\n // this.getSrchCount(this.qkSch);\r\n this.packetLookupSrcCount(this.qkSch);\r\n } else {\r\n }\r\n }\r\n\r\n backHome() {\r\n window.location.href = this.globlEnv.origin + \"#home\";\r\n }\r\n\r\n routehome() {\r\n const url = this.router.serializeUrl(this.router.createUrlTree(['home']));\r\n window.open(\"/#\" + url, 'Home');\r\n }\r\n packetLookupSrcCount(fglstr) {\r\n this.srchCnt = this.srchCnt + 1\r\n let logDtl = JSON.parse(localStorage.getItem('resreqpara'));\r\n if (fglstr == undefined || fglstr == '') {\r\n // this.flashMessagesService.show('Please enter Search Parameter', { cssClass: 'alert-danger', timeout: 3000 });\r\n return;\r\n }\r\n let r = this.cs.formateStr(fglstr);\r\n localStorage.setItem('packetLookupStr', r);\r\n\r\n if (this.cUrl == '/solitaires') {\r\n this.router.navigate(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } });\r\n } else {\r\n const url = this.router.serializeUrl(this.router.createUrlTree(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } }));\r\n window.open(\"/solitaires/#\" + url, 'Solitaires');\r\n }\r\n\r\n }\r\n\r\n\r\n logout() {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'Logout'\r\n this.header['method'] = 'logOut';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.logout(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let ds = Cookie.get('_ds');\r\n Cookie.delete('_username');\r\n Cookie.delete('_logtime');\r\n Cookie.delete('_ck');\r\n Cookie.delete('_logid');\r\n Cookie.delete('_accCompany');\r\n Cookie.delete('_accyear');\r\n localStorage.removeItem('OTP');\r\n localStorage.removeItem('clientKey');\r\n localStorage.removeItem('logIdn');\r\n localStorage.removeItem('mdlKey');\r\n localStorage.removeItem('username');\r\n localStorage.removeItem('selMd');\r\n localStorage.setItem('chg', 'false');\r\n localStorage.removeItem('transactionInfo');\r\n\r\n Cookie.delete('_username', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logtime', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_ck', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logid', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);\r\n window.location.href = this.globlEnv.origin;\r\n } else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n menuList() {\r\n let reqObj = {};\r\n let moduleKeys = this.mdlk[this.cUrl.split('/')[1]];\r\n\r\n if (Cookie.get('_logid') == null) return;\r\n let header: any = {\r\n 'Content-Type': 'application/json',\r\n 'clientkey': Cookie.get('_ck'),\r\n 'loginid': Cookie.get('_logid'),\r\n 'method': 'getMenuList',\r\n 'modulekey': moduleKeys,\r\n 'source': 'qs'\r\n }\r\n\r\n reqObj['moduleKeys'] = moduleKeys;\r\n\r\n // let options = new RequestOptions({ headers: header });\r\n // let options = new HttpHeaders({ headers: header });\r\n let options = { headers: this.header };\r\n console.log(reqObj);\r\n this.cs.menuList(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(reqObj);\r\n let lochistoryMap = JSON.parse(localStorage.getItem('historyLink')) || {};\r\n let lochistoryLink = lochistoryMap[moduleKeys] || [];\r\n this.historyLinkMap = {};\r\n this.historyLink = [];\r\n let menuList = response.result;\r\n let cnt = 0\r\n menuList.forEach(ele => {\r\n cnt = cnt + ele.SubMenu.length + 1;\r\n });\r\n let div = cnt / 4;\r\n div = Math.round(div);\r\n if (div < 1) {\r\n let newMenuList = [];\r\n menuList.forEach(ele => {\r\n ele[\"ishdr\"] = \"Y\";\r\n newMenuList.push(ele)\r\n let extmenu_idn = ele.menu_idn;\r\n if (lochistoryLink.indexOf(extmenu_idn) != -1) {\r\n this.historyLink.push(extmenu_idn);\r\n this.historyLinkMap[extmenu_idn] = ele\r\n }\r\n ele.SubMenu.forEach(subele => {\r\n newMenuList.push(subele)\r\n extmenu_idn = subele.menu_idn;\r\n\r\n if (lochistoryLink.indexOf(extmenu_idn) != -1) {\r\n this.historyLink.push(extmenu_idn);\r\n this.historyLinkMap[extmenu_idn] = subele;\r\n }\r\n\r\n });\r\n });\r\n this.accMenuList[1] = newMenuList;\r\n } else {\r\n let key = 1;\r\n let newMenuList = [];\r\n let lsCnt = 0;\r\n menuList.forEach(ele => {\r\n lsCnt = lsCnt + ele.SubMenu.length + 1;\r\n ele[\"ishdr\"] = \"Y\";\r\n newMenuList.push(ele)\r\n let extmenu_idn = ele.menu_idn;\r\n if (lochistoryLink.indexOf(extmenu_idn) != -1) {\r\n this.historyLink.push(extmenu_idn);\r\n this.historyLinkMap[extmenu_idn] = ele\r\n }\r\n ele.SubMenu.forEach(subele => {\r\n subele[\"ishdr\"] = \"N\";\r\n newMenuList.push(subele)\r\n extmenu_idn = subele.menu_idn;\r\n\r\n if (lochistoryLink.indexOf(extmenu_idn) != -1) {\r\n this.historyLink.push(extmenu_idn);\r\n this.historyLinkMap[extmenu_idn] = subele;\r\n }\r\n\r\n });\r\n\r\n if (lsCnt >= div && newMenuList.length > 0) {\r\n this.accMenuList[key] = newMenuList;\r\n key = key + 1;\r\n newMenuList = [];\r\n lsCnt = 0;\r\n }\r\n\r\n\r\n\r\n\r\n });\r\n if (lsCnt != 0)\r\n this.accMenuList[key] = newMenuList;\r\n }\r\n\r\n\r\n this.keyList = Object.keys(this.accMenuList);\r\n } else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n logOutBox() {\r\n var display = document.getElementById('mb-signout').style.display;\r\n\r\n if (display == 'none' || display == '') {\r\n document.getElementById('mb-signout').style.display = 'block';\r\n } else {\r\n document.getElementById('mb-signout').style.display = 'none';\r\n }\r\n }\r\n ispasswordChange = false;\r\n ChangePassword() {\r\n\r\n let reqObj = {};\r\n if (Cookie.get('_logid') == null) return;\r\n let header: any = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': this.mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n }\r\n\r\n // this.spinnerService.show();\r\n reqObj[\"formNme\"] = \"applicationAccessMaster\";\r\n reqObj[\"username\"] = this.uUsr;\r\n header[\"method\"] = \"loadChangePass\";\r\n // let options = new RequestOptions({ headers: header });\r\n // let options = new HttpHeaders({ headers: header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n // this.spinnerService.hide();\r\n let result = response.result;\r\n this.userDetails = result.userDetails;\r\n this.ispasswordChange = false;\r\n\r\n document.getElementById('changePwdBtn').click();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n\r\n }\r\n passwordChange() {\r\n this.ispasswordChange = true;\r\n\r\n }\r\n SavePassword() {\r\n if (this.ispasswordChange) {\r\n // this.spinnerService.show();\r\n if (Cookie.get('_logid') == null) return;\r\n let header: any = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': this.mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n }\r\n debugger\r\n let usrDtl = this.userDetails[0];\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = \"setPasswordForm\";\r\n reqObj[\"userIdn\"] = usrDtl.userIdn;\r\n reqObj[\"password\"] = usrDtl.password;\r\n header[\"method\"] = \"changePassword\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: header });\r\n // let options = new HttpHeaders({ headers: header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'contact/loadContact').then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n let result = response.result;\r\n this.closebtn.nativeElement.click();\r\n // this.spinnerService.hide();\r\n this.ispasswordChange = false;\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n\r\n } else {\r\n\r\n // this.flashMessagesService.show(\"Please specify new password\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n\r\n\r\n }\r\n\r\n ShowMenu(typ, menudtl) {\r\n var menudiv = document.getElementById('menuDiv').style.display;\r\n if (menudiv == 'none')\r\n document.getElementById('menuDiv').style.display = 'block';\r\n else\r\n document.getElementById('menuDiv').style.display = 'none';\r\n if (typ == 'lnk') {\r\n debugger\r\n let menu_idn = menudtl.menu_idn || '';\r\n let modulkey = this.mdlk[this.cUrl.split('/')[1]]\r\n let historyLinkmap = JSON.parse(localStorage.getItem('historyLink')) || {};\r\n let moduleLink = historyLinkmap[modulkey] || [];\r\n if (menu_idn != '') {\r\n debugger\r\n if (moduleLink.indexOf(menu_idn) != -1) {\r\n moduleLink.splice(moduleLink.indexOf(menu_idn), 1);\r\n }\r\n moduleLink.splice(0, 0, menu_idn);\r\n if (moduleLink.length > 10) {\r\n let numOfremove = moduleLink.length - 10;\r\n moduleLink.splice(10, numOfremove);\r\n }\r\n historyLinkmap[modulkey] = moduleLink;\r\n this.historyLink = moduleLink;\r\n this.historyLinkMap[menu_idn] = menudtl;\r\n localStorage.setItem('historyLink', JSON.stringify(historyLinkmap));\r\n }\r\n }\r\n }\r\n EditCompany() {\r\n Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);\r\n this.router.navigate(['facompany']);\r\n }\r\n rbi = \"\";\r\n bank = \"\";\r\n cutomimp = \"\";\r\n cutomexp = \"\";\r\n mdlk\r\n\r\n ngOnInit() {\r\n this.mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n // this.cUrl = window.location.hash;\r\n // this.cUrl=this.cUrl.replace(\"#\",'');\r\n\r\n // Getting the final url\r\n // this.router.events\r\n // .filter(e => e instanceof NavigationEnd)\r\n // .subscribe((navEnd: NavigationEnd) => {\r\n // this.cUrl = navEnd.urlAfterRedirects;\r\n // this.menuList();\r\n // // console.log(this.cUrl);\r\n // });\r\n // this.router.events.pipe(filter(e => e instanceof NavigationEnd))\r\n // .subscribe((navEnd: NavigationEnd) => {\r\n // this.cUrl = navEnd.urlAfterRedirects;\r\n // this.menuList();\r\n // // console.log(this.cUrl);\r\n // });\r\n\r\n if (this.cUrl == '')\r\n this.cUrl = \"/home\";\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'ds': localStorage.getItem('DS'),\r\n 'appkey': 'O91YK*Dw$kE7dNpcVmGLvLxWMJ0C00eO',\r\n 'modulekey': 'WHi6SRLY6#$82bzJf@4IUx9oHSLbn2qH',// mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n\r\n\r\n }\r\n\r\n OpenOption() {\r\n var isdisplay = document.getElementById('moreoption').style.display;\r\n if (isdisplay == 'none') {\r\n document.getElementById('moreoption').style.display = 'block';\r\n } else {\r\n document.getElementById('moreoption').style.display = 'none';\r\n\r\n }\r\n }\r\n\r\n\r\n}\r\n","<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel\" style=\"padding-right: 0px;z-index: 1000\">\r\n <li style=\"background: #3b5998;\">\r\n <a (click)=\"routehome()\" *ngIf=\"cUrl != '/home'\" class=\"profile-mini\">\r\n <span class=\"head\">EZ</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"cUrl != '/home' \">\r\n <nav class=\"navbar navbar-expand-md navbar-light bg-light\">\r\n <div class=\"navbar-collapse justify-content-between mtop\" id=\"navbarCollapse\">\r\n <div class=\"navbar-nav\">\r\n <div class=\"nav-item dropdown\" style=\"z-index:10\">\r\n <a (click)=\"ShowMenu('bar','')\" class=\"nav-link dropdown-toggle\"\r\n style=\"color: #fff; font-size: 20px;padding:0px ;margin-top: 5px\" data-toggle=\"dropdown\"> <i\r\n class=\"fa fa-bars\" aria-hidden=\"true\"></i></a>\r\n <div id=\"menuDiv\" class=\"dropdown-menu\" style=\"display: none;background-color: #1d2127\">\r\n <div class=\"row\">\r\n <div class=\"menu-history-column col-md-2\">\r\n <h2>History</h2>\r\n <ul id=\"nav-history\" style=\"display:inline\">\r\n <li class=\"service-item\" *ngFor=\"let menu_idn of historyLink\">\r\n <a href=\"#/{{historyLinkMap[menu_idn]['lnk']}}\" class=\"headerlink\"\r\n (click)=\"ShowMenu('bar','')\"><span\r\n class=\"service-label\">{{historyLinkMap[menu_idn]['hdr']}}</span></a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-md-10\">\r\n <div class=\"row col-md-12 awsc-services-search\">\r\n <div id=\"awsc-input-wrapper\">\r\n <input id=\"awsc-services-search-autocomplete\" type=\"text\" placeholder=\"Find a Menu by name\"\r\n class=\"ui-autocomplete-input\" name=\"searchF\" [(ngModel)]=\"searchF\">\r\n </div>\r\n </div>\r\n <div id=\"awsc-services-container\" class=\"row\">\r\n <ng-container *ngFor=\"let key of keyList\">\r\n <div class=\"col-md-3\">\r\n <ul>\r\n <ng-container *ngFor=\"let accmenu of accMenuList[key] | tableSearch:searchF;\">\r\n <li *ngIf=\"accmenu.ishdr=='Y'\" class=\"awsc-header ico-compute\">\r\n <ng-container *ngIf=\"accmenu.lnk !='#' && accmenu.lnk !=''\">\r\n <i class=\"fa fa-angle-double-right\" style=\"font-size:20px;color:white;\"></i>\r\n <a href=\"#/{{accmenu.lnk}}\" (click)=\"ShowMenu('lnk',accmenu)\" class=\"headerlink\"> <span\r\n class=\"service-label\"> {{accmenu.hdr}}</span> </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"accmenu.lnk =='#' || accmenu.lnk ==''\">\r\n <i class=\"fa fa-angle-double-down\" style=\"font-size:20px;color:white;\"></i>\r\n {{accmenu.hdr}}\r\n </ng-container>\r\n </li>\r\n <li *ngIf=\"accmenu.ishdr=='N'\" class=\"service-item\">\r\n <a href=\"#/{{accmenu.lnk}}\" (click)=\"ShowMenu('lnk',accmenu)\"><span\r\n class=\"service-label\">{{accmenu.hdr}}</span></a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </nav>\r\n </li>\r\n <li class=\"rs-none\" [ngStyle]=\"{'width' : cUrl == '/home' ? '250px' : '0px'}\">\r\n \r\n </li>\r\n <li class=\"rs-none\" style=\"margin: 10px;\">\r\n <form class=\"form-inline my-2\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" [(ngModel)]=\"qkSch\"\r\n id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\"></textarea>\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 35px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n </span>\r\n <span class=\"helpc mr-sm-2\" data-toggle=\"tooltip\" data-placement=\"bottom\"\r\n title=\"STONE / CERT NO / GIA RD 1.20-1.30 F VS1 3EX N\"><i class=\"fa fa-info\"></i></span>\r\n </form>\r\n </li>\r\n <li class=\"pull-right\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Change password\">\r\n <a (click)=\"ChangePassword()\" style=\"padding:15px 5px\" class=\"mb-control\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-key\"></span>\r\n </a>\r\n </li>\r\n <li class=\"pull-right\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Log Out\">\r\n <a (click)=\"logOutBox()\" class=\"mb-control\" style=\"padding:15px 5px\" data-box=\"#mb-signout\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-sign-out\"></span>\r\n </a>\r\n </li>\r\n <li class=\"pull-right\">\r\n <label class=\"ud\"> <span class=\"text-capitalize\">{{uUsr +' |'}}</span> {{ds}} </label>\r\n </li>\r\n</ul>\r\n<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel sr-none\" style=\"background-color: #bfbfbf\">\r\n <li style=\"margin: 10px;\">\r\n <form class=\"form-inline my-2\">\r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" [(ngModel)]=\"qkSch\"\r\n id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\"></textarea>\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 30px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n </span>\r\n </form>\r\n </li>\r\n</ul>\r\n\r\n<div class=\"modal\" id=\"changePwdPop\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" #closebtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Change Password</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-container *ngFor=\"let user of userDetails; let i=index;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" class=\"col-md-2\" style=\"text-align: left\">Username : </label>\r\n <label class=\"col-md-2\" style=\"text-align: left\">{{user?.username}}</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin-top: 5px\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" class=\"col-md-2\" style=\"text-align: left\">Password:</label>\r\n\r\n <input type=\"text\" class=\"form-control\" class=\"col-md-10\" style=\"text-align: left\"\r\n (change)=\"passwordChange()\" [(ngModel)]=\"user.password\" name=\"password\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" #closebtn data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" (click)=\"SavePassword()\" class=\"btn btn-success\" appAppNoDblClick>Confirm</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<button id=\"changePwdBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#changePwdPop\"></button>","import { Component, OnInit } from '@angular/core';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n cDate = new Date(Cookie.get('_logtime'));\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<p class=\"footerp\">{{cDate | date:'medium'}}</p> ","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ShareDataService {\r\n\r\n constructor() { }\r\n\r\n private _listners = new Subject<any>();\r\n\r\n listen(): Observable<any> {\r\n return this._listners.asObservable();\r\n }\r\n\r\n filter(filterBy: string) {\r\n this._listners.next(filterBy);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Router } from '@angular/router';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { ShareDataService } from '../comman-service/share-data-service.service';\r\nimport { StockServiceService } from '../stock-service/stock-service.service';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n // private flashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n public globlEnv: GlobleEnvService,\r\n private cs: CommanServiceService,\r\n private _shdata: ShareDataService,\r\n private ss: StockServiceService,\r\n ) { }\r\n\r\n cDate = new Date();\r\n ds = Cookie.get('_ds');\r\n uUsr = Cookie.get('_username');\r\n logDtl;\r\n uname;\r\n qkSch;\r\n schId;\r\n sttsA;\r\n header;\r\n count;\r\n ntSch: boolean;\r\n srchCnt=0;\r\n cnt = 0;\r\n feedbackComment = '';\r\n isError: boolean = false;\r\n\r\n @Output() checkStat = new EventEmitter();\r\n flag = false;\r\n\r\n toggle() {\r\n this.flag = !this.flag;\r\n this.checkStat.emit(this.flag);\r\n }\r\n\r\n clickFilter(kc) {\r\n \r\n if (kc.which == 13) {\r\n // this.getSrchCount(this.qkSch);\r\n this.packetLookupSrcCount(this.qkSch);\r\n } else {\r\n }\r\n }\r\n\r\n // getSrchCount(fglstr) {\r\n // let logDtl = JSON.parse(localStorage.getItem('resreqpara'));\r\n // if (fglstr == undefined || fglstr == '') {\r\n // this.flashMessagesService.show('Please enter Search Parameter', { cssClass: 'alert-danger', timeout: 3000 });\r\n // return;\r\n // }\r\n // this.spinnerService.show();\r\n // let reqObj = {};\r\n // reqObj['formNme'] = 'webStockSearchForm';\r\n // // reqObj['empIdn'] = logDtl.empid;//\r\n // // reqObj['buyerIdn'] = logDtl.buyerid;//\r\n // // reqObj['buyer_terms_idn'] = logDtl.trmid;//\r\n // reqObj['foogleStr'] = fglstr;\r\n // reqObj['searchIdn'] = this.schId == null ? '' : this.schId;\r\n // //reqObj['statusList'] =['MKAV']; //this.sttsA.value.split(\",\");\r\n // console.log(JSON.stringify(reqObj));\r\n // this.header['method'] = 'searchCount';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // this.ss.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n // if (response.message == 'SUCCESS') {\r\n // this.schId = response.result.searchIdn;\r\n // this.count = parseInt(response.result.count);\r\n // let srchidns = [];\r\n // srchidns.push(this.schId);\r\n // localStorage.setItem('srcIdns', JSON.stringify(srchidns));\r\n // this.router.navigate(['/solitaires/result/stockResultForm']);//this.schId//pass search id in arry\r\n // // if (this.count < 500) {\r\n // // this._shdata.filter('Register click');\r\n // // this.router.navigate(['/solitaires/result/stockResultForm', this.schId]);\r\n // // this.ntSch = false;\r\n // // } else {\r\n // // this.ntSch = true;\r\n // // if (response.status == 'LOGOUT') {\r\n // // this.logout();\r\n // // }\r\n // // }\r\n // this.spinnerService.hide();\r\n // }\r\n // }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // });\r\n // }\r\n backHome(){\r\n window.location.href = this.globlEnv.origin+\"#home\";\r\n }\r\n\r\n packetLookupSrcCount(fglstr) {\r\n this.srchCnt=this.srchCnt+1\r\n let logDtl = JSON.parse(localStorage.getItem('resreqpara'));\r\n if (fglstr == undefined || fglstr == '') {\r\n // this.flashMessagesService.show('Please enter Search Parameter', { cssClass: 'alert-danger', timeout: 3000 });\r\n return;\r\n }\r\n // this.spinnerService.show();\r\n let r= this.cs.formateStr(fglstr);\r\n localStorage.setItem('packetLookupStr', r);\r\n \r\n this.router.navigate(['solitaires/packet-lookup/'], { queryParams: { schId: this.srchCnt } });\r\n \r\n }\r\n\r\n logOutBox(){\r\n var display= document.getElementById('mb-signout').style.display;\r\n debugger\r\n if(display=='none' || display==''){\r\n document.getElementById('mb-signout').style.display='block';\r\n }else{\r\n document.getElementById('mb-signout').style.display='none';\r\n }\r\n }\r\n\r\n logout() {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'Logout'\r\n this.header['method'] = 'logOut';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.logout(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let ds = Cookie.get('_ds');\r\n Cookie.delete('_username');\r\n Cookie.delete('_logtime');\r\n Cookie.delete('_ck');\r\n Cookie.delete('_logid');\r\n Cookie.delete('_accCompany');\r\n Cookie.delete('_accyear');\r\n localStorage.removeItem('OTP');\r\n localStorage.removeItem('clientKey');\r\n localStorage.removeItem('logIdn');\r\n localStorage.removeItem('mdlKey');\r\n localStorage.removeItem('username');\r\n localStorage.removeItem('selMd');\r\n localStorage.setItem('chg', 'false');\r\n localStorage.removeItem('transactionInfo');\r\n\r\n // window.location.href = \"http://localhost:4200/\";\r\n\r\n Cookie.delete('_username', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logtime', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_ck', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logid', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);\r\n window.location.href = this.globlEnv.origin;\r\n } else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n\r\n let cUrl = this.router.url;\r\n\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'ds': localStorage.getItem('DS'),\r\n 'appkey': 'O91YK*Dw$kE7dNpcVmGLvLxWMJ0C00eO',\r\n 'source': 'qs'\r\n };\r\n }\r\n\r\n}\r\n","\r\n<ul class=\"x-navigation x-navigation-horizontal x-navigation-panel\">\r\n <li class=\"xn-icon-button\">\r\n <a href=\"javascript:void(0)\" class=\"x-navigation-minimize\" id=\"tg\">\r\n <span class=\"fa fa-dedent\"></span>\r\n </a>\r\n </li>\r\n <li style=\"margin: 10px;\" >\r\n \r\n\r\n <form class=\"form-inline my-2\">\r\n \r\n <textarea style=\"white-space: pre;\" class=\"form-control\" placeholder=\"STONE ID/ RF ID search\" \r\n [(ngModel)]=\"qkSch\" id=\"foggle\" name=\"foogle\" cols=\"45\" rows=\"1\" ></textarea>\r\n\r\n\r\n\r\n <span style=\"position: absolute; \r\n top: -2px;\r\n right: 28px;\r\n color: rgb(150, 144, 144);\r\n cursor: pointer !important;\r\n z-index: 6;\r\n width: 35px;\r\n height: 36px;\r\n line-height: 34px;\r\n text-align: center;\r\n /* pointer-events: none; */\r\n font-size: 17px;\">\r\n <i class=\"fa fa-search\" (click)=\"packetLookupSrcCount(qkSch);\"></i>\r\n\r\n </span>\r\n <span class=\"helpc mr-sm-2\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"STONE / CERT NO / GIA RD 1.20-1.30 F VS1 3EX N\"><i\r\n class=\"fa fa-info\"></i></span>\r\n \r\n </form>\r\n </li>\r\n \r\n <li class=\"xn-icon-button pull-right\">\r\n <a (click)=\"logOutBox()\" class=\"mb-control\" data-box=\"#mb-signout\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-sign-out\"></span>\r\n </a>\r\n \r\n \r\n </li>\r\n <li class=\"xn-icon-button pull-right\">\r\n <a (click)=\"backHome()\" style=\"cursor: pointer\" class=\"mb-control\">\r\n <span style=\"font-size: 18px\" class=\"fa fa-home\"></span>\r\n </a>\r\n </li>\r\n <li class=\"xn-icon-button pull-right\">\r\n <label class=\"ud\">Welcome <span class=\"text-capitalize\">{{uUsr +' |'}}</span> {{ds}} </label>\r\n </li>\r\n \r\n</ul>","import { Component, OnInit } from '@angular/core';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n\r\n@Component({\r\n selector: 'app-invalid',\r\n templateUrl: './invalid.component.html',\r\n styleUrls: ['./invalid.component.css']\r\n})\r\nexport class InvalidComponent implements OnInit {\r\n\r\n constructor(\r\n private globlEnv: GlobleEnvService\r\n ) { }\r\n ds;\r\n ngOnInit() {\r\n let ds = localStorage.getItem('DS');\r\n if (ds == undefined) {\r\n this.ds = ''\r\n } else {\r\n this.ds = ds;\r\n }\r\n }\r\n\r\n redirectOrg() {\r\n let ds = Cookie.get('_ds');\r\n Cookie.delete('_username');\r\n Cookie.delete('_logtime');\r\n Cookie.delete('_ck');\r\n Cookie.delete('_accCompany');\r\n Cookie.delete('_accyear');\r\n localStorage.removeItem('OTP');\r\n localStorage.removeItem('clientKey');\r\n localStorage.removeItem('logIdn');\r\n localStorage.removeItem('mdlKey');\r\n localStorage.removeItem('username');\r\n localStorage.removeItem('selMd');\r\n localStorage.setItem('chg', 'false');\r\n localStorage.removeItem('transactionInfo');\r\n localStorage.removeItem('acwt');\r\n localStorage.removeItem('byr');\r\n localStorage.removeItem('chg');\r\n localStorage.removeItem('eId');\r\n localStorage.removeItem('modifySearchString');\r\n localStorage.removeItem('stt');\r\n localStorage.removeItem('trm');\r\n localStorage.removeItem('trmObj');\r\n localStorage.removeItem('BIEmp');\r\n localStorage.removeItem('BIacwt');\r\n localStorage.removeItem('BIbyr');\r\n localStorage.removeItem('BImodifySearchString');\r\n localStorage.removeItem('appointment-transactionId');\r\n localStorage.removeItem('demand-transactionId');\r\n localStorage.removeItem('BIeId');\r\n localStorage.removeItem('BIbyr');\r\n localStorage.removeItem('BIpFrom');\r\n localStorage.removeItem('BIpTo');\r\n localStorage.removeItem('BIsalePeriod');\r\n localStorage.removeItem('BIcrtwt');\r\n localStorage.removeItem('BIanaStt');\r\n localStorage.removeItem('BIPeriod');\r\n Cookie.delete('_username', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logtime', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_ck', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logid', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);\r\n window.location.href = this.globlEnv.origin;\r\n }\r\n\r\n}\r\n","<div class=\"text-center mt-5\">\r\n <h4>Session has ended, kindly re-login</h4>\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" (click)=\"redirectOrg();\">Login</button>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\nimport { Router, ActivatedRoute, NavigationEnd, Params } from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-logout',\r\n templateUrl: './logout.component.html',\r\n styleUrls: ['./logout.component.css']\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private cs: CommanServiceService,\r\n // private flashMessagesService: FlashMessagesService,\r\n private globlEnv: GlobleEnvService\r\n ) {\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.logidn = Cookie.get('_logid');\r\n this.clientKey = Cookie.get('_ck');\r\n }\r\n });\r\n\r\n }\r\n\r\n header;\r\n logidn;\r\n clientKey;\r\n logout() {\r\n // this.header = {\r\n // 'Content-Type': 'application/json',\r\n // 'clientkey': Cookie.get('_ck'),\r\n // 'ds': localStorage.getItem('DS'),\r\n // 'appkey': 'O91YK*Dw$kE7dNpcVmGLvLxWMJ0C00eO',\r\n // 'loginid': Cookie.get('_logid'),\r\n // 'source':'qs'\r\n // };\r\n // let reqObj = {};\r\n // reqObj['formNme'] = 'Logout'\r\n // this.header['method'] = 'logOut';\r\n // console.log(JSON.stringify(reqObj));\r\n // console.log(JSON.stringify(this.header));\r\n\r\n // let options = new RequestOptions({ headers: this.header });\r\n // this.cs.authLogout(reqObj, options).then((response: any) => {\r\n // if (response.status == 'SUCCESS') {\r\n // let ds = Cookie.get('_ds');\r\n Cookie.delete('_username');\r\n Cookie.delete('_logtime');\r\n Cookie.delete('_ck');\r\n Cookie.delete('_accCompany');\r\n Cookie.delete('_accyear');\r\n localStorage.removeItem('OTP');\r\n localStorage.removeItem('clientKey');\r\n localStorage.removeItem('logIdn');\r\n localStorage.removeItem('mdlKey');\r\n localStorage.removeItem('username');\r\n localStorage.removeItem('selMd');\r\n localStorage.setItem('chg', 'false');\r\n localStorage.removeItem('transactionInfo');\r\n\r\n\r\n\r\n\r\n\r\n localStorage.removeItem('acwt');\r\n localStorage.removeItem('byr');\r\n localStorage.removeItem('chg');\r\n localStorage.removeItem('eId');\r\n localStorage.removeItem('modifySearchString');\r\n localStorage.removeItem('stt');\r\n localStorage.removeItem('trm');\r\n localStorage.removeItem('trmObj');\r\n\r\n localStorage.removeItem('BIEmp');\r\n localStorage.removeItem('BIacwt');\r\n localStorage.removeItem('BIbyr');\r\n localStorage.removeItem('BImodifySearchString');\r\n\r\n localStorage.removeItem('appointment-transactionId');\r\n localStorage.removeItem('demand-transactionId');\r\n\r\n\r\n localStorage.removeItem('BIeId');\r\n localStorage.removeItem('BIbyr');\r\n localStorage.removeItem('BIpFrom');\r\n localStorage.removeItem('BIpTo');\r\n localStorage.removeItem('BIsalePeriod');\r\n localStorage.removeItem('BIcrtwt');\r\n localStorage.removeItem('BIanaStt');\r\n localStorage.removeItem('BIPeriod');\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // window.location.href = \"http://localhost:4200/\";\r\n\r\n Cookie.delete('_username', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logtime', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_ck', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_logid', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accCompany', this.globlEnv.pathname, this.globlEnv.hostname);\r\n Cookie.delete('_accyear', this.globlEnv.pathname, this.globlEnv.hostname);\r\n window.location.href = this.globlEnv.origin;\r\n // } else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // }\r\n // }).catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // });\r\n }\r\n\r\n logoutNo() {\r\n document.getElementById('mb-signout').style.display = 'none';\r\n }\r\n ngOnInit() {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n\r\n }\r\n\r\n}\r\n","<div class=\"message-box animated fadeIn\" id=\"mb-signout\">\r\n <div class=\"mb-container\">\r\n <div class=\"mb-middle\">\r\n <div class=\"mb-title\">\r\n <span class=\"fa fa-sign-out\"></span> Log\r\n <strong>Out</strong> ?</div>\r\n <div class=\"mb-content\">\r\n <p>Are you sure you want to log out?</p>\r\n <p>Press No if you want to continue work. Press Yes to logout current user.</p>\r\n </div>\r\n <div class=\"mb-footer\">\r\n <div class=\"pull-right\">\r\n <a href=\"javascript:void(0)\" class=\"btn btn-success btn-lg\" (click)=\"logout();\">Yes</a>\r\n <button class=\"btn btn-default btn-lg mb-control-close\" (click)=\"logoutNo();\" style=\"margin-left: 10px;\">No</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpHeaders, HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminServiceService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService,\r\n ) { }\r\n\r\n\r\n getMenuRights(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n saveUserMenuRights(reqObj, headers){\r\n return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n load(reqObj, headers,url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Router } from '@angular/router';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { AdminServiceService } from '../admin-service/admin-service.service';\r\n\r\n@Component({\r\n selector: 'app-menu-right',\r\n templateUrl: './menu-right.component.html',\r\n styleUrls: ['./menu-right.component.css']\r\n})\r\nexport class MenuRightComponent implements OnInit {\r\n\r\n constructor(private http: HttpClient,\r\n private router: Router,\r\n private as: AdminServiceService,\r\n // private flashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService\r\n ) { }\r\n\r\n\r\n navigation = [];\r\n mdllist = [];\r\n btn: any = [];\r\n pageinfo;\r\n menulvl1List = [];\r\n menulvl2List = [];\r\n usrLst = [];\r\n userIdns = [];\r\n usrRightLst\r\n header;\r\n selectedSlaves: { [key: number]: boolean; } = {};\r\n cblen = 0;\r\n v = \"\";\r\n v1 = \"\";\r\n v2 = \"\";\r\n app = \"\";\r\n applicationList = [];\r\n\r\n fillApp() {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"menuRightsMaster\";\r\n this.header['method'] = 'load';\r\n // const options = new RequestOptions({ headers: this.header });\r\n // const options = new HttpHeaders({ headers: this.header });\r\n console.log(\"this.header\", this.header);\r\n let options = { headers: this.header };\r\n this.as.getMenuRights(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n this.applicationList = response.applicationList;\r\n this.btn = response.buttons[0];\r\n\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n fillModule(applId) {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"menuRightsMaster\";\r\n reqObj[\"applcationIdn\"] = applId;\r\n this.header['method'] = 'loadModule';\r\n // const options = new RequestOptions({ headers: this.header });\r\n // const options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.as.getMenuRights(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n this.usrLst = [];\r\n this.mdllist = response.moduleList;\r\n this.pageinfo = response.pageInfo;\r\n console.log(this.btn);\r\n console.log(this.mdllist);\r\n // this.spinnerService.hide();\r\n\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n fillLevel1(module_idn) {\r\n // this.spinnerService.show();\r\n console.log(module_idn)\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"menuRightsMaster\";\r\n reqObj[\"moduleIdn\"] = module_idn;\r\n this.header['method'] = 'loadMenulevel1';\r\n // const options = new RequestOptions({ headers: this.header });\r\n // const options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.as.getMenuRights(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n this.usrLst = [];\r\n this.menulvl2List = [];\r\n this.menulvl1List = response.kv;\r\n console.log(this.menulvl1List);\r\n // this.spinnerService.hide();\r\n\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n fillLevel2(module_idn, menuIdn) {\r\n // this.spinnerService.show();\r\n console.log(module_idn);\r\n console.log(menuIdn);\r\n\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"menuRightsMaster\";\r\n reqObj[\"moduleIdn\"] = module_idn;\r\n reqObj[\"menuIdn\"] = menuIdn;\r\n this.header['method'] = 'loadMenulevel2';\r\n // const options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n // const options = new RequestOptions({ headers: this.header });\r\n this.as.getMenuRights(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n this.menulvl2List = response.kv;\r\n this.usrLst = [];\r\n // this.spinnerService.hide();\r\n console.log(this.menulvl2List);\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n submenuChange() {\r\n this.usrLst = [];\r\n }\r\n getUserRight(module_idn, menuIdn, submenu, applid) {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"applcationIdn\"] = applid;\r\n reqObj[\"moduleIdn\"] = module_idn;\r\n reqObj[\"menuIdn\"] = (submenu == undefined || submenu == \"\") ? menuIdn : submenu;\r\n reqObj[\"formNme\"] = \"menuRightsMaster\";\r\n this.header['method'] = 'loaduserRights';\r\n console.log(reqObj);\r\n console.log(\"this.header\", this.header);\r\n // const options = new RequestOptions({ headers: this.header });\r\n // const options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.as.getMenuRights(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n this.usrLst = response.userList;\r\n this.usrRightLst = response.userRightList;\r\n // this.spinnerService.hide();\r\n console.log(this.usrLst);\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n //e,v,v1,user.user_idn,v2,app // parameter sequence in html\r\n onChange(e, moduleidn, menuIdn, user_idn, submenuid, applId) {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"menuIdn\"] = (submenuid == undefined || submenuid == \"\") ? menuIdn : submenuid;\r\n reqObj[\"userIdn\"] = [user_idn];\r\n reqObj[\"hdrIdn\"] = menuIdn;// (submenuid == undefined || submenuid == \"\") ? menuIdn : '';//menuidn lvl1\r\n reqObj[\"stt\"] = e.target.checked == true ? \"1\" : \"0\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header['method'] = 'saveUserRights';\r\n console.log(reqObj);\r\n\r\n // const options = new RequestOptions({ headers: this.header });\r\n // const options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.as.saveUserMenuRights(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n this.getUserRight(moduleidn, menuIdn, submenuid, applId);\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n\r\n onChangeAll(e, moduleidn, menuIdn, submenuid, applId) {\r\n // this.spinnerService.show();\r\n this.usrLst.forEach(eachObj => {\r\n this.userIdns.push(eachObj.user_idn);\r\n });\r\n const reqObj = {};\r\n reqObj[\"menuIdn\"] = (submenuid == undefined || submenuid == \"\") ? menuIdn : submenuid;\r\n reqObj[\"userIdn\"] = this.userIdns;\r\n reqObj[\"hdrIdn\"] = menuIdn; //(submenuid == undefined || submenuid == \"\") ? menuIdn : '';\r\n reqObj[\"stt\"] = e.target.checked == true ? \"1\" : \"0\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header['method'] = 'saveUserRights';\r\n // const options = new RequestOptions({ headers: this.header });\r\n // const options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.as.saveUserMenuRights(reqObj, options).then((response: any) => {\r\n this.userIdns = [];\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n this.getUserRight(moduleidn, menuIdn, submenuid, applId);\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n cUrl;\r\n ngOnInit() {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n debugger\r\n this.cUrl = this.router.url;\r\n console.log(this.cUrl.split('/')[1]);\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n //this.fillModule();\r\n this.fillApp();\r\n }\r\n\r\n navigationFun(nav, i) { }\r\n\r\n}\r\n\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">{{pageinfo?.title}}</h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\" style=\"background: #fff;height:100vh;\">\r\n <!-- START CONTENT FRAME LEFT -->\r\n <div class=\"content-frame-left\" *ngIf=\"false\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == 'cLink'}\" *ngFor=\"let nav of navigation;let i=index\"\r\n (click)=\"navigationFun(nav,i);\">{{nav?.form_field_title}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- END CONTENT FRAME LEFT -->\r\n <!-- START CONTENT FRAME BODY -->\r\n <div class=\"content-frame-body\" [ngStyle]=\"{'margin-left': false ? '0' : '250px'}\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-2\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Application</label>\r\n <select class=\"form-control\" [(ngModel)]=\"app\" name=\"app\" (change)=\"fillModule(app)\">\r\n <option *ngFor=\"let lov of applicationList\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-2\" *ngIf=\"mdllist?.length > 1 \">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Module</label>\r\n <select class=\"form-control\" [(ngModel)]=\"v\" name=\"v\" (change)=\"fillLevel1(v)\">\r\n <option *ngFor=\"let lov of mdllist\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" *ngIf=\"menulvl1List?.length > 1 \">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Main Menu</label>\r\n <select class=\"form-control\" [(ngModel)]=\"v1\" name=\"v1\" (change)=\"fillLevel2(v,v1)\">\r\n <option *ngFor=\"let lov of menulvl1List\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" *ngIf=\"menulvl2List?.length > 1 \">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Sub Menu</label>\r\n <select class=\"form-control\" [(ngModel)]=\"v2\" name=\"v2\" (change)=\"submenuChange()\">\r\n <option *ngFor=\"let lov of menulvl2List\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info \" style=\"margin-top: 23px;\" (click)=\"getUserRight(v,v1,v2,app)\">{{btn?.form_field_title}}</button>\r\n </div>\r\n </div>\r\n <div style=\"padding: 0 10px;\">\r\n <div style=\"border:1px solid #e5e5e5;margin-top: 30px\" *ngIf=\"usrLst.length > 0\">\r\n <div class=\"row\" *ngIf=\"usrLst.length > 0\">\r\n <div class=\"panel panel-default\" style=\"margin-bottom: 25px;\">\r\n <div class=\"panel-heading\" style=\"padding: 0px;\">\r\n <h3 class=\"panel-title\" style=\"padding: 8px; font-size: 14px;\">Users</h3>\r\n <div class=\"col-md-2 chkAll\" style=\"margin: 0px;\">\r\n <div class=\"form-group\" style=\"padding: 10px;\">\r\n <div class=\"col-md-3\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" (change)=\"onChangeAll($event,v,v1,v2,app)\" name=\"chkAll\" id=\"chkAll\" [checked]=\"(usrLst.length == usrRightLst.length ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-4 control-label text-left\" style=\"padding-top: 3px;\r\n padding-left: 40px;\">All </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <form class=\"form-horizontal\">\r\n <div class=\"col-md-2\" *ngFor=\"let user of usrLst ;let i=index\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-3\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" (change)=\"onChange($event,v,v1,user.user_idn,v2,app)\" [checked]=\"(false !== usrRightLst.includes(user?.user_idn) ? 'checked' : '')\"\r\n name=\"chk\" id=\"chk{{user.user_idn}}\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-4 control-label text-left\" style=\"padding-top: 3px;padding-left: 40px;text-transform: capitalize;\">{{user?.username}}</label>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- END CONTENT FRAME BODY -->\r\n </div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'numberWithCommas'\r\n})\r\nexport class NumberWithCommasPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n value=value||'';\r\n if(value!=''){\r\n var parts = value.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n }else{\r\n return value;\r\n }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { orderBy } from 'lodash';\r\n\r\n@Pipe({\r\n name: 'orderByPipe'\r\n})\r\nexport class OrderByPipePipe implements PipeTransform {\r\n transform = orderBy;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getSelcted',\r\n pure: false\r\n})\r\n//@Injectable()\r\nexport class GetSelectedPipe implements PipeTransform {\r\n transform(items: any[]): any {\r\n // take out only selected values\r\n return items.filter(item => item.selected === true);\r\n }\r\n}","//commented\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'sum'\r\n})\r\nexport class SumPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n return null;\r\n }\r\n\r\n}\r\n","// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { BiService } from './../bi-service/bi.service';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport * as _ from 'lodash';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\nimport * as pluginDataLabels from 'chartjs-plugin-labels';\r\nimport { HttpHandler, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport * as Rx from 'rxjs-compat';\r\n// import * as Rx from 'rxjs-compat';\r\n// import { from } from 'rxjs'; \r\n// import { groupBy, mergeMap, reduce, toArray } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-pkt-data',\r\n templateUrl: './pkt-data.component.html',\r\n styleUrls: ['./pkt-data.component.css']\r\n})\r\nexport class PktDataComponent implements OnInit {\r\n\r\n pkts = [];\r\n headerKey = [];\r\n header = [];\r\n ck;\r\n totalWeight = 0;\r\n reqheader;\r\n scrollDistance = 1;\r\n scrollUpDistance = 2;\r\n startIndex = 0;\r\n endIndex = 30;\r\n groupstartIndex = 0;\r\n groupendIndex = 30;\r\n loadResult = [];\r\n resultlength = 0;\r\n totAvg = 0;\r\n totDis = 0;\r\n selectedItm = [];\r\n selectwt = 0;\r\n selectAvg = 0;\r\n selectDis = 0;\r\n selectAmt = 0;\r\n searchF;\r\n dropdownSettings;\r\n sttWiseSummary = new Map();\r\n // anaAllGrpStt = ['asrt', 'lab', 'mkt', 'sold'];\r\n anaAllGrpStt = [];\r\n g;\r\n\r\n legendList = [];\r\n newwindow = \"YES\";\r\n pageDefination;\r\n sorted;\r\n sortOn;\r\n clmn;\r\n staticLov = [];\r\n defaultGrpList = [];\r\n stObj = {};\r\n totAmt = 0;\r\n nodata = true;\r\n viewdisType = \"group\";\r\n summaryList = [];\r\n coPuattributeStr = [];\r\n formname;\r\n modulename;\r\n cUrl;\r\n links;\r\n cObj;\r\n groupBypktList = [];\r\n loadgroupBypktList = [];\r\n\r\n\r\n @ViewChild(BaseChartDirective)\r\n public chart: BaseChartDirective;\r\n\r\n constructor(\r\n public cs: CommanServiceService,\r\n private bis: BiService,\r\n // private _spinnerService: Ng4LoadingSpinnerService,\r\n // private _flashMessagesService: FlashMessagesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n lpad(lStr, ln) {\r\n let str = lStr;\r\n while (str.length < ln) { str = '0' + str; }\r\n return str;\r\n }\r\n\r\n getSearchResult() {\r\n this.cObj = {};\r\n this.groupBypktList = [];\r\n // this._spinnerService.show();\r\n this.pkts = [];\r\n this.grp = [];\r\n this.headerKey = [];\r\n this.legendList = [];\r\n this.viewdisType = \"group\";\r\n let reqObj = {};\r\n this.formname = this.route.snapshot.params['frmnme'];\r\n reqObj['searchIdnList'] = localStorage.getItem('srcIdns').split(',');\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n console.log(JSON.stringify(reqObj));\r\n this.startIndex = 0;\r\n this.endIndex = 30;\r\n this.loadResult = [];\r\n this.bis.data(reqObj, 'search', 'marketing/search')\r\n .subscribe(data => {\r\n if (data.status == 'SUCCESS') {\r\n let res = data.result;\r\n console.log(\"res\", res);\r\n this.pageDefination = res.pageDefination || {};\r\n this.links = this.pageDefination.link || [];\r\n this.pkts = res.searchResultDtl || [];\r\n this.anaAllGrpStt = Array.from(new Set(this.pkts.map(element => element.dsp_stt)));\r\n this.resultlength = this.pkts.length;\r\n this.coPuattributeStr = res.copuStructureDtl || [];\r\n this.headerKey = res.resultView;\r\n this.header = res.resultViewDtl;\r\n this.legendList = res.legendList;\r\n this.totalWeight = this.cs.splitToTwoDecimal(this.pkts.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n let rapVal = this.cs.splitToTwoDecimal(this.pkts.reduce((a, b) => +a + +parseFloat(b.rap_vlu), 0));\r\n let totAmt = 0;\r\n this.pkts.forEach(element => {\r\n if (element.grp_stt == 'sold') {\r\n totAmt += parseFloat(element['sal_rte']) * parseFloat(element['crtwt']);\r\n }\r\n else {\r\n totAmt += parseFloat(element['rte']) * parseFloat(element['crtwt']);\r\n }\r\n });\r\n\r\n this.totAmt = this.cs.splitToTwoDecimal(totAmt);\r\n this.totAvg = this.cs.splitToTwoDecimal(this.totAmt / this.totalWeight);\r\n this.totDis = this.cs.splitToTwoDecimal(((totAmt * 100) / parseFloat(rapVal)) - 100);\r\n if (this.endIndex > this.resultlength)\r\n this.endIndex = this.resultlength\r\n this.addItems();\r\n debugger\r\n // this.totAvg = this.cs.splitToTwoDecimal(totAmt / parseFloat(totweight));\r\n // this.totDis = this.cs.splitToTwoDecimal(((totAmt * 100) / parseFloat(totrapVal)) - 100);\r\n this.getSummary(this.pkts);\r\n // this.createGrp(this.pkts, this.defaultGrpList);\r\n // localStorage.setItem('BI-PKT_GROUP_BY',JSON.stringify(res.pageDefination.form_field[0].lov_qry))\r\n // let GRPby = JSON.parse(localStorage.getItem('BI-PKT_GROUP_BY'));\r\n this.getStaticKV(res.pageDefination.form_field[0].lov_qry);\r\n let avgFields = res.pageDefination.tabs[0].lov_qry.split(',');\r\n this.getTotals(avgFields, this.pkts);\r\n let ttlFields = res.pageDefination.others[0].lov_qry.split(',');\r\n this.getTotalsTtl(ttlFields, this.pkts);\r\n\r\n\r\n\r\n // this._spinnerService.hide();\r\n\r\n } else {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(data.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n selectRow(pktId) {\r\n var checkboxId = \"cb_\" + pktId;\r\n document.getElementById(checkboxId).click();\r\n }\r\n\r\n checkedRow(obj, stockidn, status) {\r\n let cbId = 'cb_' + obj.stock_idn;\r\n if (status == false) {\r\n var element = document.getElementById(cbId);//pktId\r\n element.parentElement.parentElement.classList.remove(\"selectedRow\");\r\n element.parentElement.parentElement.classList.add(\"notselectedRow\");\r\n this.selectedItm.forEach((e, index) => {\r\n if (e.stock_idn == stockidn) {\r\n this.selectedItm.splice(index, 1);\r\n }\r\n });\r\n } else {\r\n var element = document.getElementById(cbId);//pktId\r\n element.parentElement.parentElement.classList.remove(\"notselectedRow\");\r\n element.parentElement.parentElement.classList.add(\"selectedRow\");\r\n this.selectedItm.push(obj);\r\n }\r\n this.selectwt = this.cs.splitToTwoDecimal(this.selectedItm.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n\r\n // let totAmt = this.cs.splitToTwoDecimal(this.selectedItm.reduce((a, b) => +a + +b.sal_amount, 0));\r\n let totweight = this.cs.splitToTwoDecimal(this.selectedItm.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n let totrapVal = this.cs.splitToTwoDecimal(this.selectedItm.reduce((a, b) => +a + +b.rap_vlu, 0));\r\n\r\n\r\n let totAmt = 0;\r\n this.selectedItm.forEach(element => {\r\n if (element.grp_stt == 'sold') {\r\n totAmt += parseFloat(element['sal_rte'] || 0) * parseFloat(element['crtwt']);\r\n }\r\n else {\r\n totAmt += parseFloat(element['rte'] || 0) * parseFloat(element['crtwt']);\r\n }\r\n });\r\n\r\n this.selectAvg = this.cs.splitToTwoDecimal(totAmt / parseFloat(totweight));\r\n this.selectDis = this.cs.splitToTwoDecimal((totAmt / parseFloat(totrapVal) * 100) - 100);\r\n this.selectAmt = this.cs.splitToTwoDecimal(totAmt);\r\n\r\n }\r\n\r\n sttwise = false;\r\n statusWiseDisplay(e, m) {\r\n debugger\r\n this.sttwise = true;\r\n let gArr = [];\r\n for (let key in m) {\r\n if (m[key] == true) {\r\n debugger\r\n let pk = this.pkts.filter(e => e.grp_stt == key);\r\n gArr = gArr.concat(pk);\r\n }\r\n else {\r\n let pk = gArr.filter(e => e.grp_stt != key);\r\n }\r\n }\r\n debugger\r\n this.finalGrpVal[\"\"] = gArr;\r\n this.loadResult = gArr;\r\n\r\n if (this.finalGrpVal[\"\"].length > 0) {\r\n this.totalWeight = this.cs.splitToTwoDecimal(this.finalGrpVal[\"\"].reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n\r\n let totweight = this.cs.splitToTwoDecimal(this.finalGrpVal[\"\"].reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n let totrapVal = this.cs.splitToTwoDecimal(this.finalGrpVal[\"\"].reduce((a, b) => +a + +b.rap_vlu, 0));\r\n\r\n let totAmt = 0;\r\n this.finalGrpVal[\"\"].forEach(element => {\r\n if (element.grp_stt == 'sold') {\r\n totAmt += parseFloat(element['sal_rte']) * parseFloat(element['crtwt']);\r\n }\r\n else {\r\n totAmt += parseFloat(element['rte']) * parseFloat(element['crtwt']);\r\n }\r\n });\r\n this.totAmt = this.cs.splitToTwoDecimal(totAmt);\r\n\r\n this.totAvg = this.cs.splitToTwoDecimal(totAmt / parseFloat(totweight));\r\n this.totDis = this.cs.splitToTwoDecimal(((totAmt * 100) / parseFloat(totrapVal)) - 100);\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // let grpBy = e.target.value;\r\n // if (e.target.checked) {\r\n // let pk = this.pkts.filter(e => e.grp_stt == grpBy);\r\n // this.finalGrpVal[\"\"] = pk;\r\n // }\r\n // else {\r\n // let pk = this.pkts.filter(e => e.grp_stt !== grpBy);\r\n // this.finalGrpVal[\"\"] = pk;\r\n // }\r\n console.log(this.finalGrpVal);\r\n\r\n }\r\n OnLinkClick(lnk, pktdtl) {\r\n\r\n if (lnk.form_field == 'priceupdate') {\r\n this.cObj = pktdtl;\r\n document.getElementById(\"bidMdBBtn\").click();\r\n }\r\n }\r\n\r\n calculatRteDis(objdtl, typ) {\r\n debugger\r\n if (typ == 'rte') {\r\n let dis = this.cs.splitToTwoDecimal(((parseFloat(objdtl.new_rte) * 100) / parseFloat(objdtl.rap_rte)) - 100);\r\n objdtl[\"new_rap_dis\"] = dis;\r\n }\r\n\r\n if (typ == 'dis') {\r\n let rte = this.cs.splitToTwoDecimal((parseFloat(objdtl.rap_rte) * (100 + parseFloat(objdtl.new_rap_dis)) / 100));\r\n objdtl[\"new_rte\"] = rte;\r\n }\r\n\r\n }\r\n\r\n ChangesPrice() {\r\n\r\n\r\n let nmeIdn = JSON.parse(localStorage.getItem('nmeIdn'));\r\n let pktDataList = [];\r\n let updateObj = {};\r\n updateObj[\"id\"] = this.cObj.pkt_code;\r\n updateObj[\"issue\"] = { \"rte\": \"\" };\r\n updateObj[\"rtn\"] = { \"rte\": this.cObj.new_rte };\r\n updateObj[\"emp\"] = {};\r\n pktDataList.push(updateObj);\r\n\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];//'bulkUpdateForm';\r\n reqObj['attr'] = \"rte\";\r\n reqObj['reissue'] = 'Y';\r\n reqObj['empIdn'] = nmeIdn;\r\n reqObj['grp'] = \"bulkupdate\";\r\n reqObj['processName'] = \"bulkMemPriceUpdate\"//'bulkPrepertiesUpdate';\r\n reqObj['pktDataList'] = pktDataList;\r\n console.log(JSON.stringify(reqObj));\r\n this.reqheader['method'] = 'returnIssue';\r\n // let options = new RequestOptions({ headers: this.reqheader });\r\n let options = new HttpHeaders({ headers: this.reqheader });\r\n this.cs.load(reqObj, options, 'preMarketing/issueReturn').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n\r\n this.cObj.rte = this.cObj.new_rte;\r\n this.cObj.rap_dis = this.cObj.new_rap_dis;\r\n this.getSummary(this.pkts);\r\n // this._flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n // this._spinnerService.hide();\r\n } else {\r\n\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n\r\n addItems() {\r\n for (let i = this.startIndex; i < this.endIndex; i++) {\r\n this.loadResult[i] = this.pkts[i];\r\n }\r\n this.startIndex = this.endIndex;\r\n this.endIndex = this.endIndex + 30;\r\n if (this.endIndex > this.resultlength) {\r\n this.endIndex = this.resultlength;\r\n }\r\n }\r\n\r\n onScrollDown() {\r\n\r\n if (this.endIndex <= this.resultlength)\r\n this.addItems()\r\n document.getElementById(\"wrap\").addEventListener(\"scroll\", function () {\r\n var translate = \"translate(0,\" + this.scrollTop + \"px)\";\r\n this.querySelector(\"thead\").style.transform = translate;\r\n });\r\n }\r\n grp = [];\r\n GrpVals = [];\r\n finalGrpVal = {}\r\n finalSummaryDtl = {};\r\n data = [];\r\n summaryDtl = {};\r\n\r\n createGrp(datas, selected) {\r\n // this._spinnerService.show();\r\n this.data = [...datas];\r\n // let grpvalues = \"pu\";\r\n // let grpvaluesArr = grpvalues.split(',');\r\n // let resutArr = [];\r\n\r\n let grpvaluesArr = selected;\r\n\r\n var final = [];\r\n var output = _.groupBy(this.data, function (entry) {\r\n var strs = '';\r\n for (let i = 0; i < grpvaluesArr.length; i++) {\r\n strs += entry[grpvaluesArr[i]] + '#';\r\n }\r\n\r\n return strs;\r\n // return entry[grpvaluesArr[0]] + '#' + entry[grpvaluesArr[1]];// + '#' + entry.pu;\r\n });\r\n // console.log(output);\r\n\r\n final.push(output);\r\n console.log(final);\r\n\r\n var Keys = Object.keys(final[0]);\r\n console.log(Keys);\r\n\r\n var Vals = Object.values(final[0]);\r\n console.log(Vals);\r\n\r\n let grpNamearr = [];\r\n Keys.map(ele => {\r\n grpNamearr.push(ele.split('#').filter(e => e != undefined).join(' / '));\r\n });\r\n\r\n this.grp = grpNamearr;\r\n this.GrpVals = Vals;\r\n for (let i = 0; i < grpNamearr.length; i++) {\r\n var grpNme = grpNamearr[i];\r\n this.finalGrpVal[grpNme] = Vals[i];\r\n\r\n console.log(this.finalGrpVal[grpNme]);\r\n\r\n }\r\n\r\n this.getTotal();\r\n this.grp.sort();\r\n\r\n // this._spinnerService.hide();\r\n\r\n }\r\n\r\n\r\n onGrpSelect(selected) {\r\n if (this.viewdisType == 'group')\r\n this.groupPktsList(this.pkts, selected);\r\n else\r\n this.summaryDetails(selected);\r\n }\r\n headList = [];\r\n groupPktsList(pkts, selected) {\r\n if (selected.length == 1) {\r\n let attr = selected[0];\r\n // this.finalGrpVal = _.groupBy(pkts, attr);\r\n //this.grp = Object.keys(this.finalGrpVal);\r\n Rx.Observable.from(pkts)\r\n .groupBy(x => x[attr])\r\n .flatMap(group => group.toArray())\r\n .map(g => {\r\n return {\r\n value: g[0][attr],\r\n pktList: g,\r\n count: _.sumBy(g, 'qty_on_handint'),\r\n rapvlu: this.cs.splitToTwoDecimal(_.sumBy(g, 'rap_vlu')),\r\n crtwt: this.cs.splitToTwoDecimal(_.sumBy(g, 'crtwtint')),\r\n vlu: this.cs.splitToTwoDecimal(_.sumBy(g, 'amountint')),\r\n salvlu: this.cs.splitToTwoDecimal(_.sumBy(g, 'sal_amountint')),\r\n avg: this.cs.splitToTwoDecimal(_.sumBy(g, 'amountint') / _.sumBy(g, 'crtwtint')),\r\n salavg: this.cs.splitToTwoDecimal(_.sumBy(g, 'sal_amountint') / _.sumBy(g, 'crtwtint')),\r\n dis: this.cs.splitToTwoDecimal(((_.sumBy(g, 'amountint') * 100) / (_.sumBy(g, 'rap_vlu'))) - 100),\r\n saldis: this.cs.splitToTwoDecimal(((_.sumBy(g, 'sal_amountint') * 100) / (_.sumBy(g, 'rap_vlu'))) - 100)\r\n\r\n }\r\n })\r\n .toArray()\r\n .subscribe(d => {\r\n this.groupBypktList = d;\r\n this.groupstartIndex = 0;\r\n this.groupendIndex = this.groupBypktList.length;\r\n this.groupaddItems();\r\n });\r\n\r\n } else {\r\n this.startIndex = 0;\r\n this.endIndex = 30;\r\n this.loadResult = [];\r\n this.groupBypktList = [];\r\n if (this.endIndex > this.resultlength)\r\n this.endIndex = this.resultlength\r\n this.addItems();\r\n\r\n }\r\n }\r\n\r\n\r\n groupaddItems() {\r\n let pktcnt = 0;\r\n for (let i = this.groupstartIndex; i < this.groupendIndex; i++) {\r\n debugger\r\n this.loadgroupBypktList[i] = this.groupBypktList[i];\r\n let pktlist = this.groupBypktList[i]['pktList'] || [];\r\n pktcnt = pktcnt + pktlist.length;\r\n if (pktcnt > 30) {\r\n this.groupstartIndex = i + 1;\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n grouponScrollDown() {\r\n\r\n if (this.groupstartIndex < this.groupendIndex)\r\n this.groupaddItems()\r\n document.getElementById(\"wrap\").addEventListener(\"scroll\", function () {\r\n var translate = \"translate(0,\" + this.scrollTop + \"px)\";\r\n this.querySelector(\"thead\").style.transform = translate;\r\n });\r\n }\r\n\r\n summaryDetails(selected) {\r\n\r\n\r\n if (selected.length == 1) {\r\n\r\n this.headList = [];\r\n let summaryData = [];\r\n let attribue = selected[0];\r\n \r\n // const pktsData = from(this.pkts).\r\n\r\n\r\n\r\n Rx.Observable.from(this.pkts)\r\n .groupBy(x => x[attribue] + \"#\" + x['dsp_stt'])\r\n .flatMap(group => group.toArray())\r\n .map(g => {\r\n return {\r\n key: g[0][attribue] + \"#\" + g[0]['dsp_stt'],\r\n value: g[0][attribue],\r\n sort: g[0][attribue + \"_srt\"] || 10000,\r\n dspstt: g[0]['dsp_stt'],\r\n count: _.sumBy(g, 'qty_on_handint'),\r\n rapvlu: this.cs.splitToTwoDecimal(_.sumBy(g, 'rap_vlu')),\r\n crtwt: this.cs.splitToTwoDecimal(_.sumBy(g, 'crtwtint')),\r\n vlurte: this.cs.splitToTwoDecimal(_.sumBy(g, 'amountint')),\r\n vlu: this.cs.splitToTwoDecimal(_.sumBy(g, 'sal_amountint')),\r\n\r\n }\r\n })\r\n .toArray()\r\n .subscribe(d => {\r\n summaryData = d;\r\n });\r\n\r\n let summaryMap = {};\r\n let sideList = [];\r\n let headList = [];\r\n summaryData.forEach(element => {\r\n summaryMap[element.key] = element;\r\n let value = element.value || '';\r\n let dspstt = element.dspstt;\r\n if ((selected == 'sal_byr' || selected == 'sal_emp') && dspstt != 'sold')\r\n value = '';\r\n if (value != '') {\r\n\r\n\r\n if (headList.indexOf(dspstt) == -1)\r\n headList.push(dspstt);\r\n if (sideList.indexOf(value) == -1)\r\n sideList.push(value);\r\n }\r\n })\r\n\r\n this.summaryList = [];\r\n sideList.forEach(side => {\r\n let summry = {};\r\n headList.forEach(head => {\r\n let summryData = summaryMap[side + \"#\" + head] || '';\r\n if (summryData != '') {\r\n let stt = summryData['dspstt'];\r\n\r\n let vlu = parseFloat(summryData.vlurte || 0);\r\n let rapvlu = parseFloat(summryData.rapvlu || 0);\r\n let crtwt = parseFloat(summryData.crtwt || 0);\r\n summry['value'] = side;\r\n summry['valueSort'] = summryData.sort;\r\n summry['count_' + stt] = summryData.count;\r\n summry['crtwt_' + stt] = summryData.crtwt;\r\n summry['vlu_' + stt] = summryData.vlurte;\r\n summry['avg_' + stt] = this.cs.splitToTwoDecimal(vlu / crtwt);\r\n summry['dis_' + stt] = this.cs.splitToTwoDecimal(((vlu * 100) / rapvlu) - 100);\r\n if (stt == 'sold') {\r\n vlu = parseFloat(summryData.vlu || 0);\r\n summry['vlu_' + stt] = vlu;\r\n summry['avg_' + stt] = this.cs.splitToTwoDecimal(vlu / crtwt);\r\n summry['dis_' + stt] = this.cs.splitToTwoDecimal(((vlu * 100) / rapvlu) - 100);\r\n }\r\n }\r\n\r\n });\r\n\r\n this.summaryList.push(summry);\r\n });\r\n\r\n if (selected == 'sal_byr' || selected == 'sal_emp') {\r\n this.summaryList.sort((val1, val2) => {\r\n return (val2['vlu_sold']) - (val1['vlu_sold']);\r\n });\r\n } else {\r\n console.log(\"this.summaryList\", this.summaryList);\r\n this.summaryList.sort((val1, val2) => {\r\n return (val1['valueSort']) - (val2['valueSort']);\r\n });\r\n console.log(\"this.summaryList\", this.summaryList);\r\n }\r\n\r\n this.headList = headList;\r\n\r\n } else {\r\n if (selected.length > 1) {\r\n // this._flashMessagesService.show(\"Summary need only one attribute\", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }\r\n }\r\n\r\n exportToCSVSummary() {\r\n\r\n let modifiedObjArr = [];\r\n\r\n this.summaryList.forEach((data, index) => {\r\n let obj = {};\r\n obj[\"Sr. No\"] = index + 1;\r\n obj[\"Attribute\"] = data.value || '';\r\n this.headList.forEach(hdr => {\r\n obj[\"Qty(\" + hdr + \")\"] = data[\"count_\" + hdr] || '';\r\n obj[\"Carat(\" + hdr + \")\"] = data[\"crtwt_\" + hdr] || '';\r\n obj[\"Avg(\" + hdr + \")\"] = data[\"avg_\" + hdr] || '';\r\n obj[\"Dis(\" + hdr + \")\"] = data[\"dis_\" + hdr] || '';\r\n obj[\"Value(\" + hdr + \")\"] = data[\"vlu_\" + hdr] || '';\r\n });\r\n\r\n modifiedObjArr.push(obj);\r\n\r\n });\r\n this.cs.CSVConvertor(modifiedObjArr, \"Summary_details\", true)\r\n }\r\n\r\n getTotal() {\r\n let indexVal = 0;\r\n let qs = 0;\r\n\r\n this.GrpVals.forEach(element => {\r\n let totAmt = 0;\r\n let totweight = this.cs.splitToTwoDecimal(element.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n let rapVal = _.sumBy(element, 'rap_vlu');\r\n element.forEach(pkt => {\r\n\r\n if (pkt.grp_stt == 'sold') {\r\n totAmt += parseFloat(pkt['sal_rte'] || 0) * parseFloat(pkt['crtwt']);\r\n }\r\n else {\r\n totAmt += parseFloat(pkt['rte'] || 0) * parseFloat(pkt['crtwt']);\r\n }\r\n });\r\n\r\n totAmt = this.cs.splitToTwoDecimal(totAmt);\r\n\r\n var key = this.grp[indexVal];\r\n this.summaryDtl[key + \"_CTS\"] = this.cs.splitToTwoDecimal(totweight);\r\n this.summaryDtl[key + \"_AMT\"] = this.cs.splitToTwoDecimal(totAmt);\r\n this.summaryDtl[key + \"_RTE\"] = this.cs.splitToTwoDecimal(totAmt / totweight);\r\n this.summaryDtl[key + \"_DIS\"] = this.cs.splitToTwoDecimal(((totAmt * 100) / rapVal) - 100);\r\n indexVal++;\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n GrpValsPie = [];\r\n grpPie = [];\r\n finalGrpValPie = {};\r\n summaryDtlPie = {};\r\n byrvalGrp = [];//{};\r\n isBuyerwise = false;\r\n isGrpwise = false;\r\n type;\r\n grpWiseQty = [];\r\n dataType = \"\";\r\n generatePie(Datatype, ChartType) {\r\n if (ChartType == 'qty') {\r\n document.getElementById('btnQty').classList.remove('btn-default');\r\n document.getElementById('btnQty').classList.add('active');\r\n document.getElementById('btnVal').classList.remove('active');\r\n document.getElementById('btnVal').classList.add('btn-default');\r\n }\r\n else {\r\n document.getElementById('btnVal').classList.remove('btn-default');\r\n document.getElementById('btnVal').classList.add('active');\r\n document.getElementById('btnQty').classList.remove('active');\r\n document.getElementById('btnQty').classList.add('btn-default');\r\n }\r\n this.grpWiseQty = [];\r\n this.byrvalGrp = [];\r\n\r\n this.dataType = Datatype;\r\n // this._spinnerService.show();\r\n this.finalGrpValPie = {};\r\n this.byrvalGrp = [];\r\n this.data = [...this.pkts];\r\n this.data = this.data.filter(x => x.grp_stt == 'sold');\r\n let grpvalues;\r\n let grpvaluesArr;\r\n let resutArr = [];\r\n // type = 'qty';\r\n if (Datatype == 'buyer') {\r\n this.type = \"Buyer\";\r\n this.isBuyerwise = true;\r\n this.isGrpwise = false;\r\n grpvalues = \"sal_byr\";\r\n grpvaluesArr = grpvalues.split(',');\r\n resutArr = [];\r\n } else {\r\n this.type = this.defaultGrpList;\r\n this.isBuyerwise = false;\r\n this.isGrpwise = true;\r\n grpvaluesArr = this.defaultGrpList;//selected;\r\n\r\n }\r\n\r\n //let grpvaluesArr = selected;\r\n\r\n var final = [];\r\n var output = _.groupBy(this.data, function (entry) {\r\n var strs = '';\r\n for (let i = 0; i < grpvaluesArr.length; i++) {\r\n strs += entry[grpvaluesArr[i]] + '#';\r\n }\r\n\r\n return strs;\r\n // return entry[grpvaluesArr[0]] + '#' + entry[grpvaluesArr[1]];// + '#' + entry.pu;\r\n });\r\n // console.log(output);\r\n\r\n final.push(output);\r\n\r\n var Keys = Object.keys(final[0]);\r\n\r\n var Vals = Object.values(final[0]);\r\n\r\n let grpNamearr = [];\r\n Keys.map(ele => {\r\n grpNamearr.push(ele.split('#').filter(e => e != undefined).join(' / '));\r\n });\r\n\r\n this.grpPie = grpNamearr;\r\n this.GrpValsPie = Vals;\r\n for (let i = 0; i < grpNamearr.length; i++) {\r\n var grpNme = grpNamearr[i];\r\n\r\n this.finalGrpValPie[grpNme] = Vals[i];\r\n\r\n let totAmt = this.cs.splitToTwoDecimal(this.finalGrpValPie[grpNme].reduce((a, b) => +a + +parseFloat(b.sal_amountint), 0));\r\n\r\n let byrObj = {};\r\n byrObj['k'] = grpNme;\r\n byrObj['v'] = parseFloat(totAmt);//this.byrvalGrp[grpNme].length;\r\n this.byrvalGrp.push(byrObj);\r\n byrObj = {};\r\n // this.byrvalGrp[grpNme] = totAmt;\r\n\r\n let qtyObj = {};\r\n qtyObj['k'] = grpNme;\r\n qtyObj['v'] = this.finalGrpValPie[grpNme].length;\r\n this.grpWiseQty.push(qtyObj);\r\n qtyObj = {};\r\n\r\n // this.grpWiseQty[grpNme] = this.finalGrpValPie[grpNme].length;\r\n\r\n }\r\n console.log(this.grpWiseQty);\r\n\r\n if (ChartType == 'qty') {\r\n this.drawPie(this.grpWiseQty, ChartType, Datatype);\r\n }\r\n else {\r\n this.drawPie(this.byrvalGrp, ChartType, Datatype);\r\n }\r\n\r\n // this.getTotalPie();\r\n // this.grpPie.sort();\r\n\r\n }\r\n\r\n dynamicColors = [];\r\n generate() {\r\n this.dynamicColors = [];\r\n for (var i = 1; i < 7; i++) {\r\n // this.LightenDarkenColor(\"7cb5ec\", i * 10);\r\n let col = 'c6e896';\r\n let amt = (i * 20) * -1;\r\n var usePound = false;\r\n\r\n if (col[0] == \"#\") {\r\n col = col.slice(1);\r\n usePound = true;\r\n }\r\n\r\n var num = parseInt(col, 16);\r\n\r\n var r = (num >> 16) + amt;\r\n\r\n if (r > 255) r = 255;\r\n else if (r < 0) r = 0;\r\n\r\n var b = ((num >> 8) & 0x00FF) + amt;\r\n\r\n if (b > 255) b = 255;\r\n else if (b < 0) b = 0;\r\n\r\n var g = (num & 0x0000FF) + amt;\r\n\r\n if (g > 255) g = 255;\r\n else if (g < 0) g = 0;\r\n\r\n // return (usePound ? \"#\" : \"\") + (g | (b << 8) | (r << 16)).toString(16);\r\n this.dynamicColors.push((usePound ? \"#\" : \"#\") + (g | (b << 8) | (r << 16)).toString(16));\r\n }\r\n console.log(this.dynamicColors);\r\n\r\n return this.dynamicColors;\r\n }\r\n byrValArr = [];\r\n getTotalPie() {\r\n let indexVal = 0;\r\n let AmtArr = [];\r\n this.GrpValsPie.forEach(element => {\r\n let byrwiseVal = {};\r\n let totAmt = 0;\r\n let totweight = 0;\r\n totweight = this.cs.splitToTwoDecimal(element.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n totAmt = this.cs.splitToTwoDecimal(element.reduce((a, b) => +a + +parseFloat(b.sal_amountint), 0));\r\n AmtArr.push(totAmt);\r\n var key = this.grp[indexVal];\r\n // this.summaryDtl[key + \"_QTY\"] = this.cs.splitToTwoDecimal(qty);\r\n this.summaryDtlPie[key + \"_CTS\"] = this.cs.splitToTwoDecimal(totweight);\r\n this.summaryDtlPie[key + \"_AMT\"] = this.cs.splitToTwoDecimal(totAmt);\r\n\r\n indexVal++;\r\n\r\n if (indexVal == 1) {\r\n byrwiseVal[this.grp[indexVal]] = totAmt;\r\n this.byrValArr.push(byrwiseVal);\r\n byrwiseVal = {};\r\n }\r\n // console.log(qs);\r\n // console.log(amount);\r\n\r\n });\r\n\r\n console.log(this.byrValArr);\r\n\r\n AmtArr = AmtArr.map(function (x) {\r\n return parseFloat(x);\r\n });\r\n\r\n AmtArr.sort(function (a, b) { return a - b; });\r\n console.log(AmtArr);\r\n AmtArr.reverse();\r\n\r\n // this.drawPie(AmtArr);\r\n\r\n }\r\n // public pieChartPlugins = [pluginDataLabels];\r\n doughnutChartType = 'pie';\r\n doughnutChartLabels = [];\r\n doughnutChartData = [];\r\n pieChartColors = [];\r\n pieChartLegend = true;\r\n\r\n\r\n public chartColors: any[] = [\r\n {\r\n backgroundColor: this.generate(),\r\n fillColor: this.generate(),\r\n strokeColor: this.generate()\r\n //[\"#000080\", \"#0020C2\", \"#1569C7\", \"#357EC7\", \"#368BC1\",\"659EC7\"] \r\n }];\r\n labels = {\r\n labels: {\r\n render: 'percentage',\r\n // fontColor: ['green', 'white', 'red'],\r\n precision: 2\r\n }\r\n }\r\n chartOptions = {\r\n plugins: {\r\n labels: {\r\n render: 'percentage',\r\n }\r\n },\r\n legend: {\r\n position: 'right',\r\n labels: {\r\n fontColor: 'black',\r\n boxWidth: 10,\r\n padding: 10,\r\n fontSize: 10,\r\n render: 'percentage',\r\n\r\n }\r\n },\r\n\r\n\r\n\r\n }\r\n pieChartOptions = {\r\n //legend: {position: 'left',fontColor:'white'},\r\n //plugins: {labels: { render: 'percentage',position: 'border', textMargin: 4}}\r\n\r\n legend: {\r\n position: 'right',\r\n labels: {\r\n fontColor: 'black',\r\n boxWidth: 10,\r\n padding: 10,\r\n fontSize: 10,\r\n render: 'percentage'\r\n }\r\n\r\n },\r\n plugins: {\r\n datalabels: {\r\n formatter: (value, ctx) => {\r\n const label = ctx.chart.data.labels[ctx.dataIndex];\r\n return label;\r\n },\r\n },\r\n }\r\n };\r\n pie = {\r\n legend: { position: 'left', fontColor: 'white' },\r\n plugins: {\r\n labels: {\r\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\r\n render: 'percentage',\r\n precision: 0,\r\n arc: true,\r\n showActualPercentages: true,\r\n position: 'outside'\r\n }\r\n },\r\n tooltips: {\r\n mode: 'label',\r\n callbacks: {\r\n label: function (tooltipItem, data) {\r\n // let label = data.datasets[tooltipItem.datasetIndex].label;\r\n // let value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n return [data.labels[tooltipItem.index]\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n drawPie(salesData, type, ChartType) {\r\n this.doughnutChartData = [];\r\n this.doughnutChartLabels = [];\r\n\r\n let AmtArr = salesData.sort((a, b) => (a.v > b.v) ? 1 : -1).reverse();\r\n\r\n\r\n if (ChartType == \"buyer\") {\r\n this.doughnutChartData = AmtArr.slice(0, 5).map(a => a.v);\r\n this.doughnutChartLabels = AmtArr.slice(0, 5).map(a => a.k);\r\n let sums = 0;\r\n let otherSum = this.cs.splitToTwoDecimal(this.sttWiseSummary.get('sold').get('rate'));\r\n if (type == 'qty')\r\n otherSum = this.cs.splitToTwoDecimal(this.sttWiseSummary.get('sold').get('count'));\r\n\r\n let tArr = [];\r\n tArr = AmtArr.slice(0, 5).map(function (x) {\r\n return parseFloat(x.v);\r\n });\r\n sums = _.sumBy(tArr);\r\n let maxinArr = Math.max(Math.max(...this.doughnutChartData));\r\n debugger\r\n let otherval = this.cs.splitToTwoDecimal(otherSum - sums) || 0;\r\n if (maxinArr > otherval) {\r\n this.doughnutChartData.push(otherval);\r\n this.doughnutChartLabels.push('Other');\r\n }\r\n else {\r\n this.doughnutChartData.unshift(otherval);\r\n this.doughnutChartLabels.unshift('Other');\r\n }\r\n\r\n }\r\n else {\r\n this.doughnutChartData = AmtArr.map(a => a.v);\r\n this.doughnutChartLabels = AmtArr.map(a => a.k);\r\n console.log(\"this.doughnutChartData\", this.doughnutChartData);\r\n let sums = 0;\r\n let otherSum = this.cs.splitToTwoDecimal(this.sttWiseSummary.get('sold').get('rate'));\r\n sums = _.sumBy(Object.values(AmtArr), 'v');\r\n }\r\n\r\n // this.doughnutChartData.sort(function (a, b) { return a - b; });\r\n // this.doughnutChartData = this.doughnutChartData.reverse();\r\n\r\n for (let i = 0; i < this.doughnutChartLabels.length; i++) {\r\n this.doughnutChartLabels[i] = this.doughnutChartLabels[i] + \" \" + this.doughnutChartData[i].toString();\r\n }\r\n\r\n // console.log(this.doughnutChartLabels);\r\n this.refreshChart(ChartType);\r\n this.doughnutChartType = 'pie';\r\n // document.getElementById('PiechartModelBtn').click();\r\n // this._spinnerService.hide();\r\n\r\n }\r\n\r\n refreshChart(ChartType) {\r\n this.isBuyerwise = false;\r\n this.isGrpwise = false;\r\n setTimeout(() => {\r\n if (ChartType == \"buyer\") {\r\n this.isBuyerwise = true;\r\n }\r\n else {\r\n this.isGrpwise = true;\r\n }\r\n\r\n }, 1);\r\n }\r\n\r\n sortBy(key, g) {\r\n this.sorted = this.sorted == 'desc' ? 'asc' : 'desc';\r\n console.log(this.sorted);\r\n let srted = _.orderBy(this.finalGrpVal[g], key, [this.sorted]);\r\n this.finalGrpVal[g] = srted;\r\n this.sortOn = g;\r\n this.clmn = key;\r\n }\r\n exportToCSV(FileName) {\r\n let d = this.cs.cDate,\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n let dt = [day, month, year].join('-');\r\n let fileNme = FileName + '__' + dt;\r\n this.headerKey = [\"dsp_stt\", ...this.headerKey];\r\n let modifiedObjArr = this.cs.modifyDataByHeader(this.pkts, this.headerKey, this.header);\r\n this.cs.CSVConvertor(modifiedObjArr, fileNme, true);\r\n }\r\n getSummary(p) {\r\n let summary;\r\n p.forEach(element => {\r\n // let stt = '';\r\n // if (element.grp_stt == 'sold') {\r\n // stt = 'Sold';\r\n // }\r\n // else if (element.grp_stt == 'mkt') {\r\n // stt = 'Marketing';\r\n // }\r\n // else if (element.grp_stt == 'lab') {\r\n // stt = 'Lab';\r\n // }\r\n\r\n // else {\r\n // stt = element.grp_stt;\r\n // }\r\n\r\n // summary = this.sttWiseSummary.get(element.grp_stt);\r\n summary = this.sttWiseSummary.get(element.grp_stt);//stt\r\n\r\n let count = 0;\r\n let gridWt = 0;\r\n let gridavg = 0;\r\n let disc = 0;\r\n let gridRate = 0;\r\n let totAmt = 0;\r\n let gridRap = 0;\r\n\r\n // this.totAvg = this.cs.splitToTwoDecimal(parseFloat(totAmt) / parseFloat(totweight));\r\n // this.totDis = this.cs.splitToTwoDecimal(((parseFloat(totAmt) * 100) / parseFloat(totrapVal)) - 100);\r\n\r\n\r\n let wt = parseFloat(element.crtwt);\r\n let rate = 0;\r\n let rapval = parseFloat(element.rap_vlu);\r\n if (element.grp_stt == 'sold') {\r\n rate = parseFloat((element.sal_rte == undefined || element.sal_rte == \"\") ? element.rte : element.sal_rte) * parseFloat(element.crtwt);\r\n }\r\n else {\r\n rate = parseFloat(element.rte) * parseFloat(element.crtwt);\r\n }\r\n\r\n if (summary != null) {\r\n count = parseInt(summary.get('count'));\r\n gridWt = parseFloat(summary.get('wt'));\r\n gridRate = parseFloat(summary.get('rate'));\r\n gridRap = parseFloat(summary.get('rap'));\r\n } else {\r\n summary = new Map();\r\n }\r\n summary.set('count', count + 1);\r\n summary.set('wt', gridWt + wt);\r\n summary.set('rate', gridRate + rate);\r\n summary.set('rap', gridRap + rapval);\r\n\r\n // this.sttWiseSummary.set(element.grp_stt == 'sold' ? 'Sold' : element.grp_stt, summary);\r\n this.sttWiseSummary.set(element.grp_stt, summary);//stt\r\n\r\n });\r\n console.log('@presum:', this.sttWiseSummary);\r\n\r\n this.anaAllGrpStt.forEach(ele => {\r\n console.log(ele);\r\n let count = 0;\r\n let gridWt = 0;\r\n let gridavg = 0;\r\n let disc = 0;\r\n let gridRate = 0;\r\n let totAmt = 0;\r\n let rap = 0;\r\n let gridRap = 0;\r\n\r\n\r\n //if (ele == 'Marketing' || ele == 'Sold') {\r\n // ele = (ele == 'Marketing' || ele == 'Sold') ? ele : ele.toLowerCase();\r\n let summary = this.sttWiseSummary.get(ele) || new Map();\r\n\r\n count = parseInt(summary.get('count')) || 0;\r\n gridWt = parseFloat(summary.get('wt')) || 0.00;\r\n gridRate = parseFloat(summary.get('rate')) || 0;\r\n gridRap = parseFloat(summary.get('rap')) || 1;\r\n\r\n disc = this.cs.splitToTwoDecimal(((gridRate * 100) / gridRap) - 100);\r\n\r\n gridavg = this.cs.splitToTwoDecimal(gridRate / gridWt);\r\n\r\n summary.set('disc', disc);\r\n summary.set('avg', gridavg);\r\n\r\n this.sttWiseSummary.set(ele, summary);\r\n //}\r\n\r\n })\r\n console.log(this.sttWiseSummary);\r\n\r\n }\r\n\r\n TotAvgObj = {};\r\n getTotals(fields, pkts) {\r\n debugger\r\n fields.forEach(element => {\r\n debugger\r\n let tavg = 0;\r\n let total = 0;\r\n if (element.trim() == 'age') {\r\n total = this.cs.splitToTwoDecimal(pkts.reduce((a, b) => +a + +b.age, 0));\r\n }\r\n else {\r\n total = _.sumBy(pkts, item => Number(item[element.trim()]));\r\n }\r\n\r\n let zeroVals = pkts.filter(x => (x[element.trim()] === \"0\" || 0)).length;\r\n if (element.trim() != 'age') {\r\n tavg = total / _.sumBy(pkts, item => Number(item['crtwt']));\r\n tavg = this.cs.numbertofixed(tavg, 2)\r\n }\r\n else {\r\n tavg = total / pkts.length;\r\n }\r\n this.TotAvgObj[element.trim()] = tavg;\r\n });\r\n console.log(this.TotAvgObj);\r\n }\r\n\r\n getTotalsTtl(fields, pkts) {\r\n debugger\r\n fields.forEach(element => {\r\n debugger\r\n let total = 0;\r\n\r\n total = _.sumBy(pkts, item => Number(item[element.trim()]));\r\n\r\n this.TotAvgObj[element.trim()] = this.cs.numbertofixed(total, 2);\r\n });\r\n }\r\n modifySearch() {\r\n localStorage.setItem('BIcall', 'BImodify');\r\n this.router.navigate([this.modulename + '/analysis-search/' + this.route.snapshot.params['frmnme']]);\r\n }\r\n anaSttLbl = [];\r\n ngOnInit() {\r\n // this.LightenDarkenColor(\"7cb5ec\", 10);\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n this.cObj = {};\r\n this.cUrl = this.router.url;\r\n\r\n this.reqheader = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n this.viewdisType = \"group\";\r\n this.newwindow = \"YES\";\r\n this.grp = [];\r\n this.loadResult = [];\r\n this.startIndex = 0;\r\n this.endIndex = 30;\r\n this.cUrl = this.router.url;\r\n this.modulename = this.cUrl.split('/')[1];\r\n this.ck = encodeURIComponent(Cookie.get('_ck'));\r\n this.route.params.subscribe(map => {\r\n this.loadDefination();\r\n let viewType = localStorage.getItem('viewType');\r\n let anaArr = JSON.parse(localStorage.getItem('BIanaStt'));\r\n let anasttLbl = JSON.parse(localStorage.getItem('BIanaSttLBL'));\r\n if (anaArr != null) {\r\n this.anaAllGrpStt = JSON.parse(localStorage.getItem('BIanaStt'));\r\n this.anaSttLbl = JSON.parse(localStorage.getItem('BIanaSttLBL'));\r\n this.anaAllGrpStt.forEach(element => {\r\n this.stObj[element] = true;\r\n });\r\n }\r\n if (viewType == 'listView') {\r\n this.getSearchResult();\r\n }\r\n else {\r\n let pkts = JSON.parse(localStorage.getItem('pktData'));\r\n this.headerKey = JSON.parse(localStorage.getItem('resultView'));\r\n this.header = JSON.parse(localStorage.getItem('resultViewDtl'));\r\n this.header = JSON.parse(localStorage.getItem('resultViewDtl'));\r\n let legends = JSON.parse(localStorage.getItem('BILegends'));\r\n if (legends != null && legends != undefined && legends != \"\") {\r\n this.legendList = legends;\r\n }\r\n this.pkts = [...pkts];\r\n\r\n this.totalWeight = this.cs.splitToTwoDecimal(this.pkts.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n\r\n this.getSummary(this.pkts);\r\n\r\n // let totAmt = this.cs.splitToTwoDecimal(this.pkts.reduce((a, b) => +a + +b.sal_rec_rte * parseFloat(b.crtwt), 0));\r\n let totweight = this.cs.splitToTwoDecimal(this.pkts.reduce((a, b) => +a + +parseFloat(b.crtwt), 0));\r\n let totrapVal = this.cs.splitToTwoDecimal(this.pkts.reduce((a, b) => +a + +b.rap_vlu, 0));\r\n\r\n let totAmt = 0;\r\n this.pkts.forEach(element => {\r\n if (element.grp_stt == 'sold') {\r\n totAmt += parseFloat(element['sal_rte']) * parseFloat(element['crtwt']);\r\n }\r\n else {\r\n totAmt += parseFloat(element['rte']) * parseFloat(element['crtwt']);\r\n }\r\n });\r\n\r\n\r\n\r\n this.totAvg = this.cs.splitToTwoDecimal(totAmt / parseFloat(totweight));\r\n this.totDis = this.cs.splitToTwoDecimal(((totAmt * 100) / parseFloat(totrapVal)) - 100);\r\n\r\n\r\n this.resultlength = this.pkts.length;\r\n if (this.endIndex > this.resultlength)\r\n this.endIndex = this.resultlength\r\n this.addItems();\r\n\r\n\r\n }\r\n\r\n });\r\n let GRPby = JSON.parse(localStorage.getItem('BI-PKT_GROUP_BY')) || '';\r\n this.getStaticKV(GRPby);\r\n // this.createGrp(this.pkts, this.defaultGrpList);\r\n let avgFields = JSON.parse(localStorage.getItem('BI-gridAvg')) || '';\r\n if (avgFields != '')\r\n this.getTotals(avgFields, this.pkts);\r\n }\r\n getStaticKV(qry) {\r\n this.staticLov = [];\r\n let arrkv = qry.split(',');\r\n let obj = {}, staticLov = [];\r\n for (let i = 0; i < arrkv.length; i += 2) {\r\n let key = arrkv[i], value = arrkv[i + 1];\r\n obj['k'] = key;\r\n obj['v'] = value;\r\n // if (i == 0) {\r\n // qry.default_value = value;//key\r\n // }\r\n this.staticLov.push(obj);\r\n obj = {};\r\n }\r\n this.staticLov = this.staticLov.map(option => ({\r\n value: option.v,\r\n label: option.k\r\n }));\r\n console.log(this.staticLov);\r\n }\r\n\r\n loadDefination() {\r\n\r\n // this._spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];//'searchDtlDscrForm';\r\n this.reqheader['method'] = 'loadDefination';\r\n // let options = new RequestOptions({ headers: this.reqheader });\r\n let options = new HttpHeaders({ headers: this.reqheader });\r\n this.cs.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.pageDefination = result.pageDefination || {};\r\n this.links = this.pageDefination.link || [];\r\n\r\n // this._spinnerService.hide();\r\n } else {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n}\r\n\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <span class=\"fa fa-chevron-left cp\" (click)=\"cs.pageBck();\"> Back</span> Packet List\r\n <span class=\"f-12\">({{cs.cDate | date: 'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"innerD\">\r\n <div class=\"content-frame-left\" *ngIf=\"false\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <!-- <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == cLink}\" *ngFor=\"let nav of navigation;let i=index\"\r\n (click)=\"navigationFun(nav,i);\">{{nav.form_field_title}} </a>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"content-frame-body\" style=\"margin-left:0\">\r\n <div class=\"panel panel-default custom-panel\">\r\n <div class=\"panel-body\" style=\"padding:0;\">\r\n <div class=\"infoSec\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n </form>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"dropdown text-right\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4\">\r\n <div class=\"\" style=\"margin-bottom: 10px;\">\r\n <table class=\"displayTable\">\r\n <thead>\r\n <tr>\r\n <th>Status</th>\r\n <th>Count</th>\r\n <th>Cts</th>\r\n <th>Avg</th>\r\n <th *ngIf=\"formname!='mixAnalysisReportForm'\">Disc</th>\r\n <th>Amount</th>\r\n\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let st of anaAllGrpStt;let i = index;\">\r\n <tr>\r\n <td>\r\n <!-- <label for=\"{{st}}\" class=\"text-capitalize\">S</label> -->\r\n <!-- *ngIf=\"defaultGrpList.length==0\" -->\r\n <input *ngIf=\"defaultGrpList.length==0\" type=\"checkbox\" id=\"{{st}}\" value=\"{{st}}\"\r\n name=\"{{st}}\" [(ngModel)]=\"stObj[st]\" [checked]=\"true\"\r\n (change)=\"statusWiseDisplay($event,stObj)\" />\r\n {{anaSttLbl[i]||st}}\r\n </td>\r\n <!-- anaSttLbl -->\r\n <td> {{sttWiseSummary?.get(st)?.get('count')}}</td>\r\n <td> {{this.cs.splitToTwoDecimal(sttWiseSummary?.get(st)?.get('wt'))}}</td>\r\n <td> {{this.cs.splitToTwoDecimal(sttWiseSummary?.get(st)?.get('avg'))}}</td>\r\n <td *ngIf=\"formname!='mixAnalysisReportForm'\"> {{this.cs.splitToTwoDecimal(sttWiseSummary?.get(st)?.get('disc'))}}</td>\r\n <td> {{this.cs.splitToTwoDecimal(sttWiseSummary?.get(st)?.get('rate'))}}</td>\r\n\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n \r\n \r\n <div class=\"col-md-3\">\r\n <div class=\"form-group w-100\">\r\n <div class=\"col-md-5\">\r\n \r\n <select class=\"formcontrol\" name=\"viewdisType\" (change)=\"onGrpSelect(defaultGrpList)\" [(ngModel)]=\"viewdisType\">\r\n <option value=\"group\">Group By</option>\r\n <option value=\"summary\">Summary By</option>\r\n \r\n </select>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <ng-select placeholder=\"Select Group\" [options]=\"staticLov\" [(ngModel)]=\"defaultGrpList\"\r\n name=\"status\" [multiple]=\"true\" [allowClear]=\"true\" (selected)=\"onGrpSelect(defaultGrpList)\"\r\n (deselected)=\"onGrpSelect(defaultGrpList)\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value.toLowerCase()}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n <p>\r\n <b>Buyer Pie chart</b>\r\n <i title=\"Buyer wise pie chart\"\r\n style=\"cursor: pointer;padding: 5px;margin-left: 10px; text-align: center;font-size: 20px;color: #3a5898;\"\r\n type=\"button\" class=\"fa fa-pie-chart\" aria-hidden=\"true\" data-toggle=\"modal\"\r\n data-target=\"#PiechartModel\" (click)=\"generatePie('buyer','value')\"></i>\r\n </p>\r\n </div>\r\n\r\n \r\n <div class=\"col-md-2\">\r\n <p *ngIf=\"defaultGrpList.length>0\">\r\n <i title=\"Group wise chart\"\r\n style=\"cursor: pointer;padding: 5px;margin-left: 10px; text-align: center;font-size: 20px;color: #3a5898;\"\r\n type=\"button\" class=\"fa fa-pie-chart\" aria-hidden=\"true\" data-toggle=\"modal\"\r\n data-target=\"#PiechartModel\" (click)=\"generatePie('group','value')\"></i>\r\n </p>\r\n <ul class=\"cul\">\r\n <li *ngFor=\"let legend of legendList\">\r\n <p\r\n [ngStyle]=\"{'background-color': legend.k ,'height':'9px', 'width':'9px', 'margin': '0', 'display' : 'inline-block'}\">\r\n </p>\r\n {{legend.v}}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-md-3 pull-right\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;float: right;\"\r\n data-toggle=\"tooltip\" data-placement=\"left\" title=\"Download Excel\"\r\n (click)=\"exportToCSV('Packet list');\">\r\n <span class=\"fa fa-file-excel-o\" style=\"color:green;\"></span>\r\n </button>\r\n\r\n </form>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n\r\n <!-- <div class=\"col-md-2\">\r\n <div class=\"form-group\">\r\n <button class=\"btn btn-success\" style=\"margin-left: 5px;\" (click)=\"modifySearch()\">Modify\r\n Search</button>\r\n </div>\r\n <ul class=\"cul\">\r\n <li *ngFor=\"let legend of legendList\">\r\n <p\r\n [ngStyle]=\"{'background-color': legend.k ,'height':'9px', 'width':'9px', 'margin': '0', 'display' : 'inline-block'}\">\r\n </p>\r\n {{legend.v}}\r\n </li>\r\n </ul> \r\n </div>\r\n </div>\r\n -->\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"viewdisType=='group'\">\r\n <div *ngIf=\"groupBypktList.length >0\" class=\"table-responsive\" id=\"wrap\" style=\"overflow: auto;width: 100%;height: calc(100vh - 250px);\"\r\n infinite-scroll [infiniteScrollDistance]=\"scrollDistance\" [infiniteScrollUpDistance]=\"scrollUpDistance\"\r\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"grouponScrollDown()\" [scrollWindow]=\"false\">\r\n <table class=\"displayTable\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <th class=\"cTh\" style=\"width:75px;\" *ngIf=\"formname!='mixAnalysisReportForm'\">\r\n DNA</th>\r\n <th style=\"text-align: center;\">Status</th>\r\n <th (click)=\"sortBy(hrdKey,g)\" style=\"text-align: center;\" *ngFor=\"let hrdKey of headerKey\">\r\n {{header[hrdKey]}}\r\n \r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <ng-container *ngFor=\"let groupdtl of loadgroupBypktList let j=index;\">\r\n <tr>\r\n <td [attr.colspan]=\"headerKey.length+1\" style=\"font-weight:bold;text-align: left; \">\r\n {{groupdtl.value}} \r\n Qty : {{groupdtl['count']}} Carats :\r\n {{groupdtl['crtwt']}}\r\n Avg :{{groupdtl['salavg']}}\r\n Dis% : {{groupdtl['saldis']}}\r\n\r\n Amount : {{groupdtl['salvlu']}} \r\n </td>\r\n </tr> \r\n <!-- <tr *ngIf=\"sttwise\" >\r\n <td [attr.colspan]=\"headerKey.length+1\" style=\"font-weight:bold;text-align: left; \">\r\n {{g}} \r\n Qty : {{finalGrpVal[g].length}} Carats :\r\n {{totalWeight}}\r\n\r\n Amount :{{totAmt}}\r\n </td>\r\n </tr> -->\r\n\r\n\r\n\r\n <tr *ngFor=\"let pktdtl of groupdtl['pktList'] | tableSearch:searchF:pkts;let pkti = index\"\r\n [ngClass]=\"{'even':pkti%2==0,'odd':pkti%2==1}\">\r\n <td style=\"width:75px;position: relative;\" *ngIf=\"formname!='mixAnalysisReportForm'\">\r\n <a href=\"https://kapugems.com/kweb/#/dna/{{pktdtl.stock_idn}}/?key={{ck}}\" target=\"_blank\">\r\n <i class=\"fa fa-diamond\" aria-hidden=\"true\"></i>\r\n </a>\r\n <input type=\"checkbox\" value=\"{{pktdtl.stock_idn}}\" [hidden]=\"true\" id=\"cb_{{pktdtl.stock_idn}}\"\r\n (click)=\"checkedRow(pktdtl,pktdtl.stock_idn,$event.target.checked)\">\r\n </td>\r\n <td style=\"text-align: center;\" [ngStyle]=\"{'color': pktdtl.dsp_stt}\">{{pktdtl.dsp_stt}}</td>\r\n <ng-container *ngFor=\"let hrdKey of headerKey\">\r\n <td *ngIf=\"hrdKey!='co' && hrdKey!='pu'\" style=\"text-align: center\" (click)=\"selectRow(pktdtl.stock_idn);\"\r\n [ngStyle]=\"{'color': pktdtl.dsp_stt_color == '#FFFFFF' ? 'black':pktdtl.dsp_stt_color}\">\r\n {{pktdtl[hrdKey]}}</td>\r\n\r\n <td style=\"text-align: center\" *ngIf=\"hrdKey=='co'\" (click)=\"selectRow(pktdtl.stock_idn);\"\r\n [ngStyle]=\"{'color': pktdtl.dsp_stt_color == '#FFFFFF' ? 'black':pktdtl.dsp_stt_color}\">\r\n {{pktdtl[hrdKey+\"_p\"]}}</td>\r\n\r\n\r\n\r\n <td style=\"text-align: center\" *ngIf=\"hrdKey=='pu'\" (click)=\"selectRow(pktdtl.stock_idn);\"\r\n [ngStyle]=\"{'color': pktdtl.dsp_stt_color == '#FFFFFF' ? 'black':pktdtl.dsp_stt_color}\">\r\n {{pktdtl[hrdKey+\"_p\"]}}</td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n\r\n \r\n \r\n <div *ngIf=\"pkts.length > 0 && groupBypktList.length==0 \" class=\"table-responsive\" id=\"wrap\" style=\"overflow: auto;width: 100%;height: calc(100vh - 250px);\"\r\n infinite-scroll [infiniteScrollDistance]=\"scrollDistance\" [infiniteScrollUpDistance]=\"scrollUpDistance\"\r\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScrollDown()\" [scrollWindow]=\"false\">\r\n <table class=\"displayTable\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <th class=\"cTh\" style=\"width:75px;\" *ngIf=\"formname!='mixAnalysisReportForm'\">\r\n DNA</th>\r\n <th> \r\n Actions\r\n </th>\r\n <th style=\"text-align: center;\">Status</th>\r\n <th style=\"text-align: center;\" *ngFor=\"let hrdKey of headerKey\">{{header[hrdKey]}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td></td>\r\n <td></td>\r\n <td><b>Average </b></td>\r\n <ng-container *ngFor=\"let hrdKey of headerKey\">\r\n <td>\r\n <b>{{cs.splitToTwoDecimal(TotAvgObj[hrdKey])}}</b>\r\n </td>\r\n \r\n </ng-container>\r\n \r\n </tr>\r\n <tr *ngFor=\"let pktdtl of loadResult | tableSearch:searchF:pkts;let pkti = index\"\r\n [ngClass]=\"{'even':pkti%2==0,'odd':pkti%2==1}\">\r\n <td style=\"width:75px;position: relative;\" *ngIf=\"formname!='mixAnalysisReportForm'\">\r\n <a href=\"https://kapugems.com/kweb/#/dna/{{pktdtl.stock_idn}}/?key={{ck}}\" target=\"_blank\">\r\n <i class=\"fa fa-diamond\" aria-hidden=\"true\"></i>\r\n </a>\r\n <input type=\"checkbox\" value=\"{{pktdtl.stock_idn}}\" [hidden]=\"true\" id=\"cb_{{pktdtl.stock_idn}}\"\r\n (click)=\"checkedRow(pktdtl,pktdtl.stock_idn,$event.target.checked)\">\r\n </td>\r\n <td> \r\n <ng-container *ngFor=\"let lnk of links\">\r\n <i class=\"{{lnk.form_field_icon}}\" *ngIf=\"pktdtl.dsp_stt!='sold'\" (click)=\"OnLinkClick(lnk,pktdtl)\" aria-hidden=\"true\"></i>\r\n \r\n </ng-container>\r\n \r\n </td>\r\n\r\n <td style=\"text-align: center;\" [ngStyle]=\"{'color': pktdtl.dsp_stt}\">{{pktdtl.dsp_stt}}</td>\r\n <ng-container *ngFor=\"let hrdKey of headerKey\">\r\n <td *ngIf=\"hrdKey!='co' && hrdKey!='pu'\" style=\"text-align: center\" (click)=\"selectRow(pktdtl.stock_idn);\"\r\n [ngStyle]=\"{'color': pktdtl.dsp_stt_color == '#FFFFFF' ? 'black':pktdtl.dsp_stt_color}\">\r\n {{pktdtl[hrdKey]}}</td>\r\n\r\n <td style=\"text-align: center\" *ngIf=\"hrdKey=='co'\" (click)=\"selectRow(pktdtl.stock_idn);\"\r\n [ngStyle]=\"{'color': pktdtl.dsp_stt_color == '#FFFFFF' ? 'black':pktdtl.dsp_stt_color}\">\r\n {{pktdtl[hrdKey+\"_p\"]}}</td>\r\n\r\n\r\n <td style=\"text-align: center\" *ngIf=\"hrdKey=='pu'\" (click)=\"selectRow(pktdtl.stock_idn);\"\r\n [ngStyle]=\"{'color': pktdtl.dsp_stt_color == '#FFFFFF' ? 'black':pktdtl.dsp_stt_color}\">\r\n {{pktdtl[hrdKey+\"_p\"]}}</td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"viewdisType=='summary' && summaryList.length>0\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\"> <button class=\"btn btn-default\"\r\n style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\" data-placement=\"right\"\r\n title=\"Download Excel\" (click)=\"exportToCSVSummary();\">\r\n <span class=\"fa fa-file-excel-o\" style=\"color:green;\"></span>\r\n </button></div>\r\n </div>\r\n <div class=\"row\">\r\n <table class=\"displayTable\" style=\"text-align: center;padding:10px ;\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <th style=\"text-align: center;\">Sr. No</th>\r\n <th style=\"text-align: center;\">Attribute</th>\r\n <ng-container *ngFor=\"let hdr of headList\">\r\n <th style=\"text-align: center;\" colspan=\"5\">{{hdr}}</th>\r\n </ng-container>\r\n </tr>\r\n <tr class=\"posrel\">\r\n <td style=\"text-align: center;\"></td>\r\n <ng-container *ngFor=\"let hdr of headList\">\r\n <td style=\"text-align: center;\">Qty</td>\r\n <td style=\"text-align: center;\">Carat</td>\r\n <td style=\"text-align: center;\">Avg</td>\r\n <td style=\"text-align: center;\" *ngIf=\"formname!='mixAnalysisReportForm'\">Dis</td>\r\n <td style=\"text-align: center;\">Value</td>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let summaryDtl of summaryList | tableSearch:searchF:pkts;let pkti = index\"\r\n [ngClass]=\"{'even':pkti%2==0,'odd':pkti%2==1}\">\r\n <td style=\"text-align: center;\">{{pkti+1}}</td>\r\n <td style=\"text-align: center;\">{{summaryDtl['value']}}</td>\r\n <ng-container *ngFor=\"let hdr of headList\">\r\n <td style=\"text-align: center;\">{{summaryDtl['count_'+hdr]}}</td>\r\n <td style=\"text-align: center;\">{{summaryDtl['crtwt_'+hdr]}}</td>\r\n <td style=\"text-align: center;\">{{summaryDtl['avg_'+hdr]}}</td>\r\n <td style=\"text-align: center;\" *ngIf=\"formname!='mixAnalysisReportForm'\">{{summaryDtl['dis_'+hdr]}}</td>\r\n <td style=\"text-align: center;\">{{summaryDtl['vlu_'+hdr]}}</td>\r\n </ng-container>\r\n </tr> \r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actionFooter\">\r\n <div class=\"row\">\r\n <div class=\"calsec pull-left\" style=\"padding: 5px;\">\r\n <table>\r\n <tr>\r\n <td style=\"text-align: center;\">\r\n <strong> Total: </strong>\r\n </td>\r\n <td style=\"text-align: center;\">\r\n {{finalGrpVal[\"\"]?.length>0 ? finalGrpVal[\"\"]?.length : pkts?.length}} </td>\r\n <td style=\"text-align: center;\">\r\n <strong> Weight: </strong>\r\n </td>\r\n <td style=\"text-align: center;\"> {{totalWeight}} </td>\r\n <td style=\"text-align: center;\">\r\n <strong> Avg: </strong> </td>\r\n <td style=\"text-align: center;\"> {{totAvg}} </td>\r\n\r\n <td style=\"text-align: center;\" *ngIf=\"formname!='mixAnalysisReportForm'\">\r\n <strong> Dis: </strong> </td>\r\n <td style=\"text-align: center;\"> {{totDis}} </td>\r\n\r\n <td style=\"text-align: center;\">\r\n <strong> Amount: </strong> </td>\r\n <td style=\"text-align: center;\"> {{totAmt}}</td>\r\n\r\n <td style=\"text-align: center;\">\r\n <strong> | Selected Pkts : </strong> </td>\r\n <td style=\"text-align: center;\"> {{selectedItm?.length}} </td>\r\n\r\n <td style=\"text-align: center;\">\r\n <strong> Weight: </strong>\r\n </td>\r\n <td style=\"text-align: center;\"> {{selectwt}} </td>\r\n\r\n <td style=\"text-align: center;\">\r\n <strong> Avg: </strong>\r\n </td>\r\n <td style=\"text-align: center;\"> {{selectAvg}} </td>\r\n\r\n <td style=\"text-align: center;\" *ngIf=\"formname!='mixAnalysisReportForm'\">\r\n <strong> Disc: </strong>\r\n </td>\r\n <td style=\"text-align: center;\"> {{selectDis}} </td>\r\n <td style=\"text-align: center;\">\r\n <strong> Amount: </strong>\r\n </td>\r\n <td style=\"text-align: center;\"> {{selectAmt}}</td>\r\n\r\n </tr>\r\n </table>\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-success\" style=\"margin-right: 80px;\" (click)=\"modifySearch()\">Modify\r\n Search</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"modal fade\" id=\"PiechartModel\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\"\r\n aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\" >\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" >\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"mailModalHead\">Top {{type}} Pie Chart</h4>\r\n </div>\r\n <div class=\"modal-body\" >\r\n <div class=\"row\">\r\n <div class=\"col-md-3 pull-right\">\r\n <div class=\"form-group\">\r\n <button id=\"btnQty\" class=\"btn btn-default\" type=\"button\" (click)=\"generatePie(dataType,'qty')\">QTY </button>\r\n <button id=\"btnVal\" class=\"btn btn-default\" type=\"button\" (click)=\"generatePie(dataType,'value')\">VALUE </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card-footer row\" *ngIf=\"isBuyerwise\" >\r\n <label class=\"control-label\"><b> Total sold value:\r\n {{this.cs.splitToTwoDecimal(sttWiseSummary?.get('sold')?.get('rate'))}}</b></label>\r\n <canvas baseChart [data]=\"doughnutChartData\" [labels]=\"doughnutChartLabels\" [legend]=\"pieChartLegend\"\r\n [colors]=\"chartColors\" [chartType]=\"doughnutChartType\" [options]=\"pie\"></canvas>\r\n </div>\r\n \r\n \r\n\r\n <div class=\"card-footer row\" *ngIf=\"isGrpwise\" >\r\n <label class=\"control-label\"><b> Total sold value:\r\n {{this.cs.splitToTwoDecimal(sttWiseSummary?.get('sold')?.get('rate'))}}</b></label>\r\n <canvas baseChart [data]=\"doughnutChartData\" [labels]=\"doughnutChartLabels\" [legend]=\"pieChartLegend\"\r\n [chartType]=\"doughnutChartType\" [options]=\"pie\"></canvas>\r\n </div>\r\n \r\n\r\n <!-- <div class=\"card-footer row\" *ngIf=\"isQtyWise\">\r\n <label class=\"control-label\"><b> Total sold value:\r\n {{this.cs.splitToTwoDecimal(sttWiseSummary?.get('sold')?.get('count'))}}</b></label>\r\n <canvas baseChart [data]=\"doughnutChartData\" [labels]=\"doughnutChartLabels\" [legend]=\"pieChartLegend\"\r\n [chartType]=\"doughnutChartType\" [options]=\"pie\"></canvas>\r\n </div> -->\r\n\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary btn-sm\" data-dismiss=\"modal\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal fade\" id=\"bidMd\" tabindex=\"-1\" style=\"z-index: 1400\" role=\"dialog\"\r\n aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" role=\"document\">\r\n <form name=\"appForm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title text-uppercase\" id=\"exampleModalLabel\">\r\n Price Change</h5>\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" >\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n \r\n <div class=\"row\" style=\"padding:10px\">\r\n <div class=\"col-md-12\">\r\n <span style=\"font-size: 16px;font-weight:bold\">{{cObj?.pkt_code}} {{cObj?.sh}} {{cObj?.crtwt}} {{cObj?.co}} {{cObj?.pu}} {{cObj?.ct}} {{cObj?.po}} {{cObj?.sy}} {{cObj?.fl}}</span>\r\n \r\n\r\n </div>\r\n \r\n </div>\r\n <div class=\"row\" style=\"padding-left: 20px;padding-top: 3px\">\r\n <div class=\"col-md-2\">\r\n <label class=\"clbl\" > Rap: </label>\r\n </div>\r\n <div class=\"col-md-3\"><span class=\"clbl\">{{cObj?.benchmark_rte}}</span></div>\r\n <div class=\"col-md-7\"> </div>\r\n </div>\r\n <div class=\"row\" style=\"padding-left: 20px;padding-top: 3px\">\r\n \r\n <div class=\"col-md-2\">\r\n <label class=\"clbl\" >Discount:</label>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <span class=\"clbl\">{{cObj?.rap_dis}}</span>\r\n </div>\r\n <div class=\"col-md-5\" style=\"text-align: left;\">\r\n <input type=\"text\" (change)=\"calculatRteDis(cObj,'dis')\" style=\"width:100px\" class=\"form-control\" name=\"new_rap_dis\" [(ngModel)]=\"cObj['new_rap_dis']\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\" style=\"padding-left: 20px;padding-top: 3px\">\r\n <div class=\"col-md-2\">\r\n <label class=\"clbl\" style=\"text-align: right;\">Price:</label>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <span class=\"clbl\">{{cObj?.rte}}</span>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <input type=\"text\" (change)=\"calculatRteDis(cObj,'rte')\" style=\"width:100px\" class=\"form-control\" name=\"new_rte\" [(ngModel)]=\"cObj['new_rte']\" />\r\n\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\" >Close</button>\r\n <button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\" appAppNoDblClick\r\n (click)=\"ChangesPrice()\">Update Price</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</div> \r\n<button id=\"bidMdBBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#bidMd\"></button>\r\n\r\n <button id=\"PiechartModelBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#PiechartModel\"></button>\r\n\r\n\r\n</div>","// import { StockComponent } from './../../stock-module/stock/stock.component';\r\n// import { element } from 'protractor';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { BiService } from './../bi-service/bi.service';\r\nimport * as _ from 'lodash';\r\nimport { ChartOptions } from 'chart.js';\r\n\r\n\r\n@Component({\r\n selector: 'app-qa-analysis',\r\n templateUrl: './qa-analysis.component.html',\r\n styleUrls: ['./qa-analysis.component.css']\r\n})\r\nexport class QaAnalysisComponent implements OnInit {\r\n\r\n constructor(\r\n public cs: CommanServiceService,\r\n private bis: BiService,\r\n // private _spinnerService: Ng4LoadingSpinnerService,\r\n // private _flashMessagesService: FlashMessagesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n cDt = new Date();\r\n htmlArr = [];\r\n head = [];\r\n side = [];\r\n private grpval;\r\n private headval;\r\n private sideval;\r\n private arrtDtl;\r\n private queryParam;\r\n qaAnalysisArr;\r\n grandTotal = new Map();\r\n matrix = new Map();\r\n rowTotal = new Map();\r\n colTotal = new Map();\r\n pktData = new Map();\r\n sideData = new Map();\r\n headData = new Map();\r\n sortedGrp;\r\n private schDtl;\r\n private result;\r\n gridGrp;\r\n attrGridFormat;\r\n groups = [];\r\n inventoryDays;\r\n formname;\r\n private anaGrpStt = ['mkt', 'asrt', 'lab'];\r\n st;\r\n\r\n public ChartType = \"\";\r\n public chartOptions: any = {\r\n legend: {\r\n position: 'left',\r\n labels: {\r\n fontColor: 'black',\r\n boxWidth: 10,\r\n padding: 10,\r\n fontSize: 10\r\n }\r\n }\r\n }\r\n // private anaAllGrpStt = ['asrt', 'lab', 'mkt', 'sold'];\r\n\r\n srchHistory = {\r\n period: '',\r\n frmdt: '',\r\n todt: ''\r\n };\r\n period;\r\n searchF;\r\n salePeriod;\r\n ChangeBy;\r\n gridVariance;\r\n gblGrdDataColor = new Map();\r\n // gblGridSubMap = new Map();\r\n gblRowTotColorValWise = new Map();\r\n legendList = [];\r\n modulename;\r\n cUrl;\r\n getSearchResult(id, period) {\r\n // this._spinnerService.show();\r\n let reqObj = {};\r\n reqObj['searchIdnList'] = id.split(',');\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n reqObj['period'] = period;\r\n this.bis.data(reqObj, 'search', 'marketing/search')\r\n .subscribe(data => {\r\n // this._spinnerService.hide();\r\n if (data.status == 'SUCCESS') {\r\n let res = data.result;\r\n console.log(\"res\", res);\r\n localStorage.setItem('BI-PKT_GROUP_BY', JSON.stringify(res.pageDefination.form_field[0].lov_qry));\r\n localStorage.setItem('BI-gridAvg', JSON.stringify(res.pageDefination.tabs[0].lov_qry.split(',')));\r\n this.inventoryDays = res.inventoryDays || '60';\r\n this.gridVariance = res.gridVariance || '10';\r\n this.arrtDtl = res.attrDtl;\r\n this.result = res;\r\n this.legendList = res.legendList;\r\n localStorage.setItem('BILegends', JSON.stringify(this.legendList));\r\n this.schDtl = res.searchResultDtl;\r\n let grpView = localStorage.getItem('anaGrpType');\r\n this.groups = res.attrGridFormat;\r\n let defaultGrp;\r\n if (grpView != undefined) {\r\n defaultGrp = JSON.parse(localStorage.getItem('anaGrpType'));\r\n let cindx = this.groups.indexOf(defaultGrp);\r\n this.gridGrp = this.groups[cindx];\r\n } else {\r\n this.gridGrp = this.groups[0];\r\n }\r\n this.generateGridGrpWise('i', defaultGrp);\r\n } else {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(data.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n stt;\r\n createGrid() {\r\n let newArry = this.schDtl;\r\n // console.log(newArry);\r\n debugger\r\n let diffday = parseInt(localStorage.getItem('diff'));\r\n let biperiod = localStorage.getItem('BIPeriod') || '';\r\n if (biperiod == 'week')\r\n biperiod = \"7\";\r\n if (biperiod == 'month')\r\n biperiod = \"30\";\r\n if (biperiod == 'quarter')\r\n biperiod = \"90\";\r\n let period = parseInt(biperiod);\r\n if (period == 1) {\r\n period = diffday;\r\n }\r\n let dred = \"rgba(255, 0, 0,0.6)\";\r\n let mred = \"rgba(255, 0, 0,0.4)\";\r\n let lred = \"rgba(255, 0, 0,0.2)\";\r\n let dgreen = \"rgba(0 ,128, 0 ,0.6)\";\r\n let mgreen = \"rgba(0 ,128, 0 ,0.4)\";\r\n let lgreen = \"rgba(0 ,128, 0 ,0.2)\";\r\n let stockdays = this.inventoryDays\r\n let minvariation = (100 - parseInt(this.gridVariance));\r\n let maxvariation = (100 + parseInt(this.gridVariance));\r\n\r\n console.log(\"period\", period);\r\n this.schDtl.map(element => {\r\n let header = '';\r\n let groupKeys = '';\r\n let sideKeys = '';\r\n let headKeys = '';\r\n let lIdx;\r\n this.grpval.map(ele => {\r\n header += element[ele] + ',';\r\n groupKeys += element[ele] + ',';\r\n });\r\n lIdx = header.lastIndexOf(',');\r\n if (lIdx == header.length - 1) {\r\n header = header.substr(0, header.length - 1) + \"#\";\r\n }\r\n this.sideval.map(ele => {\r\n header += element[ele] + ',';\r\n sideKeys += element[ele] + ',';\r\n });\r\n lIdx = header.lastIndexOf(',');\r\n if (lIdx == header.length - 1) {\r\n header = header.substr(0, header.length - 1) + \"#\";\r\n }\r\n this.headval.map(ele => {\r\n header += element[ele] + ',';\r\n headKeys += element[ele] + ',';\r\n });\r\n lIdx = header.lastIndexOf(',');\r\n if (lIdx == header.length - 1) {\r\n header = header.substr(0, header.length - 1) + \"\";\r\n }\r\n groupKeys = (groupKeys.lastIndexOf(',') == groupKeys.length) ? groupKeys.substr(0, groupKeys.length - 1) : groupKeys;\r\n sideKeys = (sideKeys.lastIndexOf(',') == sideKeys.length) ? sideKeys.substr(0, sideKeys.length - 1) : sideKeys;\r\n headKeys = (headKeys.lastIndexOf(',') == headKeys.length) ? headKeys.substr(0, headKeys.length - 1) : headKeys;\r\n let lHeader = header + '#' + element.dsp_stt;\r\n let lSideKey = (groupKeys.length == 0) ? sideKeys : groupKeys + \"#\" + sideKeys + '#' + element.dsp_stt;\r\n let lHeadKey = (groupKeys.length == 0) ? headKeys : groupKeys + \"#\" + headKeys + '#' + element.dsp_stt;\r\n\r\n let wt = parseFloat(element.crtwt);\r\n let rte = parseFloat(element.asking_rte);\r\n let salrate = parseFloat(element.sal_rte);\r\n let sal_rte = parseFloat(element.quot);\r\n let benchmark_rte = parseFloat(element.benchmark_rte);\r\n let age = parseInt(element.age);\r\n let rteValue = rte * wt;\r\n if ((element.grp_stt).toLowerCase() == 'sold') {\r\n rteValue = salrate * wt;\r\n }\r\n let benachmarkValue = benchmark_rte * wt;\r\n let gridWt = 0;\r\n let gridRteValue = 0;\r\n let gridvalue = 0;\r\n let gridAge = 0;\r\n let gridValueAge = 0;\r\n let count = 0;\r\n let grid = this.matrix.get(lHeader);\r\n if (grid != null) {\r\n count = parseInt(grid.get('count'));\r\n\r\n\r\n gridWt = parseFloat(grid.get('wt'));\r\n gridRteValue = parseFloat(grid.get('rap'));\r\n gridvalue = parseFloat(grid.get('value'));\r\n gridAge = parseFloat(grid.get('age'));\r\n gridValueAge = parseFloat(grid.get('valueage'));\r\n } else {\r\n grid = new Map();\r\n }\r\n grid.set('count', count + 1);\r\n grid.set('wt', gridWt + wt);\r\n grid.set('rap', gridRteValue + benachmarkValue);\r\n grid.set('value', gridvalue + rteValue);\r\n grid.set('age', ((gridAge * count) + age) / (count + 1));\r\n grid.set('valueage', ((gridvalue * gridAge) + (age * rteValue)) / (gridvalue + rteValue));\r\n this.matrix.set(lHeader, grid);\r\n let pkts = new Set();\r\n let sidePkts = new Set();\r\n let headPkts = new Set();\r\n if (this.pktData.get(header) != null)\r\n pkts = this.pktData.get(header);\r\n if (this.sideData.get(lSideKey) != null)\r\n sidePkts = this.sideData.get(lSideKey);\r\n if (this.headData.get(lHeadKey) != null)\r\n headPkts = this.headData.get(lHeadKey);\r\n pkts.add(element);\r\n this.pktData.set(header, pkts);\r\n sidePkts.add(element);\r\n this.sideData.set(lSideKey, sidePkts);\r\n headPkts.add(element);\r\n this.headData.set(lHeadKey, headPkts);\r\n });\r\n\r\n let grps = new Set();\r\n let rows = new Set();\r\n let cols = new Set();\r\n let stt = new Set();\r\n\r\n this.matrix.forEach((value, key) => {\r\n let lKey = key;\r\n let count = parseFloat(value.get('count'));\r\n\r\n let wt = parseFloat(value.get('wt'));\r\n let rap = parseFloat(value.get('rap'));\r\n let val = parseFloat(value.get('value'));\r\n let age = parseFloat(value.get('age'));\r\n let valueAge = parseFloat(value.get('valueage'));\r\n let grpVal = lKey.split('#')[0];\r\n let rowVal = lKey.split('#')[1];\r\n let colVal = lKey.split('#')[2];\r\n let status = lKey.split('#')[3];\r\n\r\n\r\n let valCompArr = [];\r\n let valCompObj = {};\r\n valCompObj[status] = val;\r\n valCompArr.push(valCompObj);\r\n console.log();\r\n\r\n\r\n let isSold = false;\r\n\r\n if (this.anaGrpStt.indexOf(status) == -1)\r\n isSold = true;\r\n\r\n if (isSold) {\r\n let compareWith = 'mkt';\r\n let cmpData = this.matrix.get(grpVal + '#' + rowVal + '#' + colVal + '#' + compareWith);\r\n let cmpCount = 0;\r\n if (cmpData != undefined) {\r\n cmpCount = parseFloat(cmpData.get('count'));\r\n\r\n }\r\n let msd = Math.round(period * cmpCount / count);\r\n value.set('msd', msd);\r\n let cmpValue = 0;\r\n if (cmpData != undefined) {\r\n cmpValue = parseFloat(cmpData.get('value'));\r\n }\r\n let msdvlu = Math.round(period * cmpValue / val);\r\n value.set('msdvlu', msdvlu);\r\n let chkcount = (stockdays * count / period);\r\n // let mincount = (chkcount * minvariation);\r\n // let maxcount = (chkcount * maxvariation);\r\n debugger;\r\n let netratio = (chkcount * 100) / cmpCount;\r\n console.log(\"checkcount\", rowVal, colVal, chkcount);\r\n console.log(\"netratio\", rowVal, colVal, netratio);\r\n let gridcolor = '#ffff00';\r\n if (netratio <= 30) {\r\n gridcolor = dred;\r\n } else if (netratio > 30 && netratio < 60) {\r\n gridcolor = mred;\r\n } else if (netratio >= 60 && netratio < minvariation) {\r\n gridcolor = lred;\r\n } else if (netratio >= minvariation && netratio < maxvariation) {\r\n gridcolor = 'rgba(255, 255, 0, 0.38)';\r\n } else if (netratio >= maxvariation && netratio < 200) {\r\n gridcolor = lgreen;\r\n } else if (netratio >= 200 && netratio < 300) {\r\n gridcolor = mgreen;\r\n } else {\r\n gridcolor = dgreen;\r\n }\r\n\r\n\r\n value.set('grpcolor', gridcolor);\r\n\r\n\r\n let svpd = Math.round(val / period);\r\n value.set('svpd', svpd);\r\n }\r\n if (status == 'mkt')\r\n value.set('grpcolor', '#dddddd');\r\n\r\n let disc = 0;\r\n if (rap > 1) {\r\n disc = (((val * 100) / rap) - 100);\r\n }\r\n let avg = Math.round(val / wt);\r\n value.set('disc', disc);\r\n value.set('avg', avg);\r\n rows.add(rowVal);\r\n let strRowTotalKey = grpVal + '#' + rowVal + '#' + status;\r\n let rTotal = this.rowTotal.get(strRowTotalKey) == null ? new Map() : this.rowTotal.get(strRowTotalKey);\r\n let lCount = rTotal.get('count') == null ? 0 : rTotal.get('count');\r\n\r\n\r\n let lWt = rTotal.get('wt') == null ? 0 : rTotal.get('wt');\r\n let lRap = rTotal.get('rap') == null ? 0 : rTotal.get('rap');\r\n let lVal = rTotal.get('value') == null ? 0 : rTotal.get('value');\r\n let lAge = rTotal.get('age') == null ? 0 : rTotal.get('age');\r\n let lValueAge = rTotal.get('valueage') == null ? 0 : rTotal.get('valueage');\r\n\r\n rTotal.set('count', lCount + count);\r\n rTotal.set('wt', lWt + wt);\r\n rTotal.set('rap', lRap + rap);\r\n rTotal.set('value', lVal + val);\r\n rTotal.set('disc', ((((lVal + val) * 100) / (lRap + rap)) - 100));\r\n rTotal.set('avg', (lVal + val) / (lWt + wt));\r\n rTotal.set('age', ((lAge * lCount) + age) / (lCount + 1));\r\n rTotal.set('valueage', ((lValueAge * lAge) + (age * val)) / (lValueAge + val));\r\n\r\n this.rowTotal.set(strRowTotalKey, rTotal);\r\n\r\n cols.add(colVal);\r\n let strColTotalKey = grpVal + '#' + colVal + '#' + status;\r\n let cTotal = this.colTotal.get(strColTotalKey) == null ? new Map() : this.colTotal.get(strColTotalKey);\r\n let cCount = cTotal.get('count') == null ? 0 : cTotal.get('count');\r\n\r\n\r\n let cWt = cTotal.get('wt') == null ? 0 : cTotal.get('wt');\r\n let cRap = cTotal.get('rap') == null ? 0 : cTotal.get('rap');\r\n let cVal = cTotal.get('value') == null ? 0 : cTotal.get('value');\r\n let cAge = cTotal.get('age') == null ? 0 : cTotal.get('age');\r\n let cValueAge = cTotal.get('valueage') == null ? 0 : cTotal.get('valueage');\r\n\r\n cTotal.set('count', cCount + count);\r\n cTotal.set('wt', cWt + wt);\r\n cTotal.set('rap', cRap + rap);\r\n cTotal.set('value', cVal + val);\r\n cTotal.set('disc', ((((cVal + val) * 100) / (cRap + rap)) - 100));\r\n cTotal.set('avg', (cVal + val) / (cWt + wt));\r\n cTotal.set('age', ((cAge * cCount) + age) / (cCount + 1));\r\n cTotal.set('valueage', ((cValueAge * cAge) + (age * val)) / (cValueAge + val));\r\n\r\n this.colTotal.set(strColTotalKey, cTotal);\r\n\r\n if (!stt.has(status))\r\n stt.add(status);\r\n if (!grps.has(grpVal))\r\n grps.add(grpVal);\r\n\r\n })\r\n let sortedRows = Array.from(rows).sort();\r\n let sortedCols = Array.from(cols).sort();\r\n let sortedStt = Array.from(stt).sort();\r\n this.sortedGrp = Array.from(grps);//.sort();\r\n\r\n // console.log(sortedRows);\r\n // console.log(sortedCols);\r\n // console.log(sortedStt);\r\n // console.log(this.sortedGrp);\r\n\r\n // let keyValObj = {};\r\n // let garr = [];\r\n ////for grid data\r\n sortedRows.forEach(row => {\r\n sortedCols.forEach(cols => {\r\n this.sortedGrp.forEach(grp => {\r\n let currAvgVal = 0;\r\n let prevAvgVal = 0;\r\n let currCountVal = 0;\r\n let prevCountVal = 0;\r\n let pAVGCOLOR = '';\r\n let pCOUNTCOLOR = '';\r\n for (let i = 0; i < sortedStt.length || 0; i++) {\r\n let gblGridSubMap = new Map();\r\n if (i == 0) {\r\n gblGridSubMap.set('AVGCOLOR', \"#dddddd\");\r\n gblGridSubMap.set('COUNTCOLOR', \"#dddddd\");\r\n this.gblGrdDataColor.set(grp + '#' + row + '#' + cols + '#' + sortedStt[i], gblGridSubMap);\r\n\r\n if (this.matrix.has(grp + '#' + row + '#' + cols + '#' + sortedStt[i])) {\r\n prevAvgVal = this.matrix.get(grp + '#' + row + '#' + cols + '#' + sortedStt[i]).get('avg') || 0;\r\n prevCountVal = this.matrix.get(grp + '#' + row + '#' + cols + '#' + sortedStt[i]).get('count') || 0;\r\n }\r\n }\r\n else {\r\n if (this.matrix.has(grp + '#' + row + '#' + cols + '#' + sortedStt[i])) {\r\n currAvgVal = this.matrix.get(grp + '#' + row + '#' + cols + '#' + sortedStt[i]).get('avg') || 0;\r\n currCountVal = this.matrix.get(grp + '#' + row + '#' + cols + '#' + sortedStt[i]).get('count') || 0;\r\n }\r\n else {\r\n currCountVal = 0;\r\n currAvgVal = 0;\r\n }\r\n\r\n if (currCountVal > 0 && prevCountVal > 0) {\r\n let AVGCOLOR = '#ff000047';\r\n let COUNTCOLOR = '#ff000047';\r\n if (currAvgVal == prevAvgVal) {\r\n AVGCOLOR = pAVGCOLOR;\r\n } else if (currAvgVal > prevAvgVal) {\r\n AVGCOLOR = '#00800054';\r\n }\r\n if (currCountVal == prevCountVal) {\r\n COUNTCOLOR = pCOUNTCOLOR;\r\n } else if (currCountVal > prevCountVal) {\r\n COUNTCOLOR = '#00800054';\r\n }\r\n pCOUNTCOLOR = COUNTCOLOR;\r\n pAVGCOLOR = AVGCOLOR;\r\n\r\n gblGridSubMap.set('AVGCOLOR', AVGCOLOR);\r\n gblGridSubMap.set('COUNTCOLOR', COUNTCOLOR);//#00800054==green //ff000047 == red\r\n this.gblGrdDataColor.set(grp + '#' + row + '#' + cols + '#' + sortedStt[i], gblGridSubMap);\r\n prevCountVal = currCountVal;\r\n prevAvgVal = currAvgVal;\r\n }\r\n else {\r\n gblGridSubMap.set('AVGCOLOR', 'white');\r\n gblGridSubMap.set('COUNTCOLOR', 'white');//#00800054==green //ff000047 == red\r\n this.gblGrdDataColor.set(grp + '#' + row + '#' + cols + '#' + sortedStt[i], gblGridSubMap);\r\n if (currCountVal > 0) {\r\n prevCountVal = currCountVal;\r\n prevAvgVal = currAvgVal;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n });\r\n });\r\n // this.gblGrpArr = {...garr};\r\n console.log(this.gblGrdDataColor);\r\n\r\n this.arrtDtl[this.sideval[0] + '#p'].map(ele1 => {\r\n sortedRows.forEach(ele2 => {\r\n if (ele1 == ele2) {\r\n this.side.push(ele1);\r\n }\r\n })\r\n });\r\n this.arrtDtl[this.headval[0] + '#p'].map(ele1 => {\r\n sortedCols.forEach(ele2 => {\r\n if (ele1 == ele2) {\r\n this.head.push(ele1);\r\n }\r\n })\r\n });\r\n // console.log(\"marix\", this.matrix);\r\n this.stt = [...sortedStt];\r\n this.rowTotal.forEach((value, key) => {\r\n let lKey = key;\r\n let count = parseFloat(value.get('count'));\r\n let val = parseFloat(value.get('value'));\r\n let grpVal = lKey.split('#')[0];\r\n let rowVal = lKey.split('#')[1];\r\n let status = lKey.split('#')[2];\r\n let wt = parseFloat(value.get('wt'));\r\n let rap = parseFloat(value.get('rap'));\r\n let svpd = parseFloat(value.get('svpd')) == undefined ? 0 : parseFloat(value.get('svpd'));\r\n let msd = parseFloat(value.get('msd')) == undefined ? 0 : parseFloat(value.get('msd'));\r\n let age = parseFloat(value.get('age'));\r\n let valueAge = parseFloat(value.get('valueage'));\r\n\r\n let gtKey = \"GT#\" + grpVal + \"#\" + status;\r\n let cTotal = this.grandTotal.get(gtKey) == null ? new Map() : this.grandTotal.get(gtKey);\r\n let cCount = cTotal.get('count') == null ? 0 : cTotal.get('count');\r\n let cWt = cTotal.get('wt') == null ? 0 : cTotal.get('wt');\r\n let cRap = cTotal.get('rap') == null ? 0 : cTotal.get('rap');\r\n let cVal = cTotal.get('value') == null ? 0 : cTotal.get('value');\r\n let cAge = cTotal.get('age') == null ? 0 : cTotal.get('age');\r\n let cValueAge = cTotal.get('valueage') == null ? 0 : cTotal.get('valueage');\r\n\r\n cTotal.set('count', cCount + count);\r\n cTotal.set('wt', cWt + wt);\r\n cTotal.set('rap', cRap + rap);\r\n cTotal.set('value', cVal + val);\r\n cTotal.set('disc', ((((cVal + val) * 100) / (cRap + rap)) - 100));\r\n cTotal.set('avg', (cVal + val) / (cWt + wt));\r\n cTotal.set('age', ((cAge * cCount) + age) / (cCount + 1));\r\n cTotal.set('valueage', ((cValueAge * cVal) + (valueAge * val)) / (cVal + val));\r\n\r\n this.grandTotal.set(gtKey, cTotal);\r\n\r\n let isSold = false;\r\n\r\n if (this.anaGrpStt.indexOf(status) == -1)\r\n isSold = true;\r\n\r\n if (isSold) {\r\n let cmpData = this.rowTotal.get(grpVal + '#' + rowVal + '#mkt');\r\n debugger;\r\n if (cmpData != undefined) {\r\n let cmpCount = parseFloat(cmpData.get('count'));\r\n let msd = Math.round(period * cmpCount / count);\r\n value.set('msd', msd);\r\n let cmpval = parseFloat(cmpData.get('value'));\r\n let msdvlu = Math.round(period * cmpval / val);\r\n value.set('msdvlu', msdvlu);\r\n\r\n let chkcount = (stockdays * count / period);\r\n let netratio = (chkcount * 100) / cmpCount;\r\n\r\n let gridcolor = '#ffff00';\r\n if (netratio <= 30) {\r\n gridcolor = dred;\r\n } else if (netratio > 30 && netratio < 60) {\r\n gridcolor = mred;\r\n } else if (netratio >= 60 && netratio < minvariation) {\r\n gridcolor = lred;\r\n } else if (netratio >= minvariation && netratio < maxvariation) {\r\n gridcolor = 'rgba(255, 255, 0, 0.38)';\r\n } else if (netratio >= maxvariation && netratio < 200) {\r\n gridcolor = lgreen;\r\n } else if (netratio >= 200 && netratio < 300) {\r\n gridcolor = mgreen;\r\n } else {\r\n gridcolor = dgreen;\r\n }\r\n value.set('grpcolor', gridcolor);\r\n }\r\n\r\n let svpd = Math.round(val / period);\r\n value.set('svpd', svpd);\r\n }\r\n if (status == 'mkt')\r\n value.set('grpcolor', '#dddddd');\r\n\r\n });\r\n\r\n\r\n ////for rowwise total\r\n // sortedRows.forEach(row => {\r\n // this.sortedGrp.forEach(grp => {\r\n // for (let i = 0; i < sortedStt.length || 0; i++) {\r\n // debugger\r\n // let currVal;\r\n // let prevVal;\r\n // let currCount;\r\n // let prevCount;\r\n // if (i == 0) {\r\n // this.gblRowTotColorValWise.set(grp + '#' + row + '#' + sortedStt[i], \"#dddddd\");\r\n\r\n // }\r\n // else {\r\n // console.log(this.matrix);\r\n // if (this.rowTotal.has(grp + '#' + row + '#' + sortedStt[i])) {\r\n // currVal = this.rowTotal.get(grp + '#' + row + '#' + sortedStt[i]).get('value') || 0;\r\n // currCount = this.rowTotal.get(grp + '#' + row + '#' + sortedStt[i]).get('count') || 0;\r\n\r\n\r\n // }\r\n // if (this.rowTotal.has(grp + '#' + row + '#' + sortedStt[i - 1])) {\r\n // prevVal = this.rowTotal.get(grp + '#' + row + '#' + sortedStt[i - 1]).get('value') || 0;//pass dynamic value as per user select in ddl\r\n // prevCount = this.rowTotal.get(grp + '#' + row + '#' + sortedStt[i - 1]).get('count') || 0;\r\n // }\r\n // this.gblRowTotColorValWise.set(grp + '#' + row + '#' + sortedStt[i], ((currVal == 0 || currVal == null || currVal == undefined || prevVal == 0 || prevVal == null || prevVal == undefined) ? '' : (currVal > 0 && currVal > prevVal) ? 'green' : 'red'));\r\n // // this.gblRowTotColorValWise.set(grp + '#' + row + '#' + sortedStt[i], ((currCount == 0 || currCount == null || currCount == undefined || prevCount == 0 || prevCount == null || prevCount == undefined) ? '' : (currCount > 0 && currCount > prevCount) ? 'green' : 'red'));\r\n\r\n // }\r\n // }\r\n // });\r\n // });\r\n\r\n // console.log(this.gblRowTotColorValWise);\r\n\r\n\r\n\r\n\r\n // this.colTotal.forEach((value, key) => {\r\n // let lKey = key;\r\n // let count = parseFloat(value.get('count'));\r\n // let val = parseFloat(value.get('value'));\r\n // let grpVal = lKey.split('#')[0];\r\n // let colVal = lKey.split('#')[1];\r\n // let status = lKey.split('#')[2];\r\n // let isSold = false;\r\n\r\n // if (this.anaGrpStt.indexOf(status) == -1)\r\n // isSold = true;\r\n\r\n // if (isSold) {\r\n // let cmpData = this.colTotal.get(grpVal + '#' + colVal + '#mkt');\r\n\r\n // if (cmpData != undefined) {\r\n // let cmpCount = parseFloat(cmpData.get('count'));\r\n // let msd = Math.round(period * cmpCount / count);\r\n // value.set('msd', msd);\r\n // let chkcount = (stockdays * count / period);\r\n // let mincount = (chkcount * minvariation);\r\n // let maxcount = (chkcount * maxvariation);\r\n // let gridcolor = '#00800054';\r\n // if (cmpCount > maxcount) {\r\n // gridcolor = '#ff000047';\r\n // } else if (cmpCount >= mincount && cmpCount <= maxcount) {\r\n // gridcolor = '#ffff0061';\r\n // }\r\n // value.set('grpcolor', gridcolor);\r\n // }\r\n // let svpd = Math.round(val / period);\r\n // value.set('svpd', svpd);\r\n // }\r\n // if (status == 'mkt')\r\n // value.set('grpcolor', '#dddddd');\r\n\r\n // });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.colTotal.forEach((value, key) => {\r\n let lKey = key;\r\n let count = parseFloat(value.get('count'));\r\n if (this.formname == 'mixAnalysisReportForm')\r\n count = parseFloat(value.get('wt'));\r\n\r\n let val = parseFloat(value.get('value'));\r\n let grpVal = lKey.split('#')[0];\r\n let rowVal = lKey.split('#')[1];\r\n let status = lKey.split('#')[2];\r\n let wt = parseFloat(value.get('wt'));\r\n let rap = parseFloat(value.get('rap'));\r\n let svpd = parseFloat(value.get('svpd')) == undefined ? 0 : parseFloat(value.get('svpd'));\r\n let msd = parseFloat(value.get('msd')) == undefined ? 0 : parseFloat(value.get('msd'));\r\n let age = parseFloat(value.get('age'));\r\n let valueAge = parseFloat(value.get('valueage'));\r\n\r\n let isSold = false;\r\n\r\n if (this.anaGrpStt.indexOf(status) == -1)\r\n isSold = true;\r\n\r\n if (isSold) {\r\n let cmpData = this.colTotal.get(grpVal + '#' + rowVal + '#mkt');\r\n if (cmpData != undefined) {\r\n let cmpCount = parseFloat(cmpData.get('count'));\r\n let msd = Math.round(period * cmpCount / count);\r\n value.set('msd', msd);\r\n\r\n let cmpval = parseFloat(cmpData.get('value'));\r\n let msdvlu = Math.round(period * cmpval / val);\r\n value.set('msdvlu', msdvlu);\r\n let chkcount = (stockdays * count / period);\r\n let netratio = (chkcount * 100) / cmpCount;\r\n\r\n let gridcolor = '#ffff00';\r\n if (netratio <= 30) {\r\n gridcolor = dred;\r\n } else if (netratio > 30 && netratio < 60) {\r\n gridcolor = mred;\r\n } else if (netratio >= 60 && netratio < minvariation) {\r\n gridcolor = lred;\r\n } else if (netratio >= minvariation && netratio < maxvariation) {\r\n gridcolor = 'rgba(255, 255, 0, 0.38)';\r\n } else if (netratio >= maxvariation && netratio < 200) {\r\n gridcolor = lgreen;\r\n } else if (netratio >= 200 && netratio < 300) {\r\n gridcolor = mgreen;\r\n } else {\r\n gridcolor = dgreen;\r\n }\r\n value.set('grpcolor', gridcolor);\r\n }\r\n\r\n let svpd = Math.round(val / period);\r\n value.set('svpd', svpd);\r\n }\r\n if (status == 'mkt')\r\n value.set('grpcolor', '#dddddd');\r\n\r\n });\r\n\r\n\r\n\r\n\r\n // Grand Summaries\r\n\r\n this.sortedGrp.map(ele => {\r\n let mktKey = \"GT#\" + ele + \"#mkt\";\r\n //let soldKey = \"GT#\" + ele + \"#sold\";\r\n\r\n let soldKey = \"\";\r\n let mkt = this.grandTotal.get(mktKey) == null ? new Map() : this.grandTotal.get(mktKey);\r\n let mktCount = mkt.get('count') == null ? 0 : mkt.get('count');\r\n let mktVale = parseFloat(mkt.get('value') == null ? 0 : mkt.get('value'));\r\n\r\n\r\n this.stt.forEach(st => {\r\n let status = st;\r\n\r\n soldKey = \"GT#\" + ele + '#' + st;\r\n let sold = this.grandTotal.get(soldKey) == null ? new Map() : this.grandTotal.get(soldKey);\r\n let soldCount = sold.get('count') == null ? 0 : sold.get('count');\r\n let msd = Math.round(diffday * mktCount / soldCount);\r\n let soldvalue = parseFloat(sold.get('value') == null ? 0 : sold.get('value'));\r\n //let svpd = Math.round(soldvalue / diffday);\r\n sold.set('msd', msd);\r\n // sold.set('svpd', svpd);\r\n //this.grandTotal.set(mktKey, mkt);\r\n\r\n let msdvlu = Math.round(diffday * mktVale / soldvalue);\r\n sold.set('msdvlu', msdvlu);\r\n\r\n\r\n let isSold = false;\r\n\r\n if (this.anaGrpStt.indexOf(status) == -1)\r\n isSold = true;\r\n\r\n if (isSold) {\r\n let cmpCount = mktCount;\r\n let msd = Math.round(period * cmpCount / soldCount);\r\n sold.set('msd', msd);\r\n\r\n let msdvlu = Math.round(period * mktVale / soldvalue);\r\n sold.set('msdvlu', msdvlu);\r\n\r\n\r\n let chkcount = (stockdays * soldCount / period);\r\n let mincount = (chkcount * minvariation);\r\n let maxcount = (chkcount * maxvariation);\r\n let gridcolor = '#00800054';\r\n if (cmpCount > maxcount) {\r\n gridcolor = '#ff000047';\r\n } else if (cmpCount >= mincount && cmpCount <= maxcount) {\r\n gridcolor = '#ffff0061';\r\n }\r\n sold.set('grpcolor', gridcolor);\r\n }\r\n\r\n let svpd = Math.round(soldvalue / period);\r\n sold.set('svpd', svpd);\r\n // }\r\n if (status == 'mkt')\r\n sold.set('grpcolor', '#dddddd');\r\n this.grandTotal.set(soldKey, sold);\r\n\r\n\r\n\r\n\r\n });\r\n\r\n\r\n\r\n })\r\n\r\n }\r\n\r\n modifySearch() {\r\n localStorage.setItem('BIcall', 'BImodify');\r\n this.router.navigate([this.modulename + '/analysis-search/' + this.route.snapshot.params['frmnme']]);\r\n }\r\n key;\r\n isApplied = false;\r\n OnChangeBy(ValType) {\r\n this.isApplied = true;\r\n this.key = ValType;\r\n }\r\n\r\n getData(call, key, st) {\r\n let pktdata = [];\r\n let temparr = [];\r\n if (call == 'cell') {\r\n\r\n pktdata = pktdata.concat([], Array.from(this.pktData.get(key)));\r\n\r\n\r\n\r\n }\r\n else if (call == 'row') {\r\n this.head.forEach(element => {\r\n if (this.pktData.get(key + '#' + element) != null && this.pktData.get(key + '#' + element) != \"\" && this.pktData.get(key + '#' + element) != undefined) {\r\n pktdata = pktdata.concat([], Array.from(this.pktData.get(key + '#' + element)));\r\n }\r\n });\r\n\r\n }\r\n\r\n else if (call == 'col') {\r\n this.side.forEach(element => {\r\n let k = key.split('#');\r\n let kc = k[0] + '#' + element + '#' + k[1];\r\n if (this.pktData.get(kc) != null && this.pktData.get(kc) != \"\" && this.pktData.get(kc) != undefined) {\r\n pktdata = pktdata.concat([], Array.from(this.pktData.get(kc)));\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n else if (call == 'all') {\r\n localStorage.setItem('pktData', JSON.stringify(this.schDtl));\r\n localStorage.setItem('resultView', JSON.stringify(this.result.resultView));\r\n localStorage.setItem('resultViewDtl', JSON.stringify(this.result.resultViewDtl));\r\n return;\r\n }\r\n\r\n\r\n // pktdata = pktdata.filter(e => e.grp_stt == st);\r\n\r\n\r\n\r\n\r\n let pd = _.sortBy(pktdata, ['co', 'pu']).reverse();\r\n\r\n\r\n\r\n\r\n\r\n\r\n localStorage.setItem('pktData', JSON.stringify(pktdata));\r\n localStorage.setItem('resultView', JSON.stringify(this.result.resultView));\r\n localStorage.setItem('resultViewDtl', JSON.stringify(this.result.resultViewDtl));\r\n // this.router.navigate(['bi/pkt-list']);\r\n }\r\n // \"Cushion Mod,0.50,#H\"\r\n getAll(stt, head, side, grp) {\r\n let key = '';\r\n let pktdata = [];\r\n // head.forEach(hd => {\r\n // stt.forEach(st => {\r\n // key = grp + ',' + '#' + hd + ',' + '#' + st;\r\n // if (this.headData.get(key) != null && this.headData.get(key) != \"\" && this.headData.get(key) != undefined) {\r\n // pktdata = pktdata.concat([], Array.from(this.headData.get(key)));\r\n // console.log(key);\r\n // }\r\n // });\r\n // });\r\n\r\n\r\n side.forEach(sd => {\r\n stt.forEach(st => {\r\n key = grp + ',' + '#' + sd + ',' + '#' + st;\r\n if (this.sideData.get(key) != null && this.sideData.get(key) != \"\" && this.sideData.get(key) != undefined) {\r\n pktdata = pktdata.concat([], Array.from(this.sideData.get(key)));\r\n }\r\n });\r\n });\r\n localStorage.setItem('pktData', JSON.stringify(pktdata));\r\n localStorage.setItem('resultView', JSON.stringify(this.result.resultView));\r\n localStorage.setItem('resultViewDtl', JSON.stringify(this.result.resultViewDtl));\r\n }\r\n\r\n wt = false;\r\n avg = false;\r\n rap = false;\r\n val = false;\r\n svpd = false;\r\n msd = false;\r\n msdvlu = false;\r\n\r\n age = false;\r\n va = false;\r\n hideShow(call, status) {\r\n // var dates = document.querySelectorAll('*[id^=\"' + index + '\"]');\r\n // let nodes = (document.querySelectorAll('[id^=\"' + call + '\"]') as any);\r\n // if (status) {\r\n // nodes.forEach(element => {\r\n // // console.log();\r\n // document.getElementById(element.id).style.display = 'block';\r\n // });\r\n // } else {\r\n // nodes.forEach(element => {\r\n // console.log();\r\n // document.getElementById(element.id).style.display = 'none';\r\n // });\r\n // }\r\n // document.getElementById(call);\r\n if (call == 'CTS') {\r\n this.wt = !this.wt\r\n } else if (call == 'AVG') {\r\n this.avg = !this.avg\r\n } else if (call == 'RAP') {\r\n this.rap = !this.rap\r\n } else if (call == 'VLU') {\r\n this.val = !this.val\r\n } else if (call == 'SVP') {\r\n this.svpd = !this.svpd\r\n } else if (call == 'MSD') {\r\n this.msd = !this.msd\r\n } else if (call == 'MSDVLU') {\r\n this.msdvlu = !this.msdvlu\r\n } else if (call == 'AGE') {\r\n this.age = !this.age\r\n } else if (call == 'VA') {\r\n this.va = !this.va\r\n }\r\n }\r\n\r\n changeGrp(gridGrp) {\r\n this.generateGridGrpWise('c', gridGrp);\r\n }\r\n\r\n generateGridGrpWise(call, selectedgrp) {\r\n this.grpval = '';\r\n this.headval = '';\r\n this.sideval = '';\r\n this.matrix.clear()\r\n this.rowTotal.clear()\r\n this.colTotal.clear()\r\n this.grandTotal.clear()\r\n this.pktData.clear()\r\n this.head = [];\r\n this.side = [];\r\n let grps = selectedgrp.group.split(',');\r\n let head = selectedgrp.head.split(',');\r\n let side = selectedgrp.side.split(',');\r\n this.grpval = [...grps];\r\n this.headval = [...head];\r\n this.sideval = [...side];\r\n this.createGrid();\r\n }\r\n\r\n scroll = (): void => {\r\n this.btnVisibilityByPos();\r\n };\r\n\r\n btnVisibilityByPos() {\r\n if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 10) {\r\n // document.getElementById(\"btnGoTop\").style.display = \"block\";\r\n document.getElementById(\"staticHead\").style.top = \"50px\";\r\n } else {\r\n document.getElementById(\"staticHead\").style.top = \"110px\";\r\n }\r\n }\r\n\r\n public ChatMapDtl = {};\r\n isshowchart = false;\r\n creategrpPie(pieStatusList, grp, attr, piechartDataList, typ) {\r\n this.isshowchart = false;\r\n this.ChatMapDtl = {};\r\n pieStatusList.forEach(status => {\r\n let pieChartLabels = [];\r\n let pieChartData = [];\r\n let pieChartlegend = [];\r\n piechartDataList.forEach(data => {\r\n let dtl;\r\n if (typ == 'head') {\r\n dtl = this.matrix.get(grp + \"#\" + data + \"#\" + attr + \"#\" + status) || '';\r\n\r\n } else {\r\n dtl = this.matrix.get(grp + \"#\" + attr + \"#\" + data + \"#\" + status) || '';\r\n\r\n }\r\n\r\n if (dtl != '') {\r\n let cnt = dtl.get('count') || '';\r\n if (cnt != '' && cnt != '0')\r\n pieChartData.push(parseInt(cnt));\r\n pieChartLabels.push(data);\r\n pieChartlegend.push(data);\r\n }\r\n });\r\n this.ChatMapDtl[status + \"_data\"] = pieChartData;\r\n this.ChatMapDtl[status + \"_lable\"] = pieChartLabels;\r\n this.ChatMapDtl[status + \"_legend\"] = pieChartlegend;\r\n\r\n });\r\n\r\n this.ChartType = 'pie';\r\n this.refreshChart('pie');\r\n document.getElementById('PiechartModelBtn').click();\r\n }\r\n\r\n public barChartData;\r\n public barChartLabels;\r\n public barChartType;\r\n public barChartLegend = true;\r\n isbarshowchart = false;\r\n\r\n\r\n public barChartOptions: ChartOptions = {\r\n responsive: true,\r\n\r\n scales: {\r\n yAxes: [{\r\n id: \"y-axis-1\",\r\n position: 'left',\r\n\r\n ticks: {\r\n beginAtZero: true\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Qty'\r\n }\r\n },\r\n {\r\n id: \"y-axis-2\",\r\n position: 'right',\r\n\r\n ticks: {\r\n beginAtZero: true\r\n\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Avg'\r\n },\r\n\r\n\r\n }]\r\n },\r\n plugins: {\r\n labels: {\r\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\r\n render: 'value',\r\n showZero: false,\r\n overlap: false,\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n public barchartColors: Array<any> = [\r\n {\r\n backgroundColor: 'rgba(59, 89, 152,0.8)',\r\n borderColor: 'rgba(59, 89, 152,0.8)',\r\n borderWidth: 2,\r\n },\r\n {\r\n backgroundColor: 'rgba(59, 89, 152,0.8)',\r\n borderColor: 'rgba(59, 89, 152,0.8)',\r\n borderWidth: 2,\r\n },\r\n {\r\n backgroundColor: 'rgba(255, 102, 179,0.8)',\r\n borderColor: 'rgba(255, 102, 179,0.8)',\r\n borderWidth: 2,\r\n },\r\n {\r\n backgroundColor: 'rgba(255, 102, 179,0.8)',\r\n borderColor: 'rgba(255, 102, 179,0.8)',\r\n borderWidth: 2,\r\n }\r\n ];\r\n\r\n\r\n creategrpBar(pieStatusList, grp, attr, piechartDataList, typ) {\r\n this.isbarshowchart = false;\r\n this.barChartData = [];\r\n this.barChartLabels = [];\r\n pieStatusList.forEach(status => {\r\n let barcharDtl = {};\r\n let barchatlist = [];\r\n let linechartList = [];\r\n piechartDataList.forEach(data => {\r\n let dtl;\r\n if (typ == 'head') {\r\n dtl = this.matrix.get(grp + \"#\" + data + \"#\" + attr + \"#\" + status) || '';\r\n\r\n } else {\r\n dtl = this.matrix.get(grp + \"#\" + attr + \"#\" + data + \"#\" + status) || '';\r\n\r\n }\r\n if (this.barChartLabels.indexOf(data) == -1) {\r\n this.barChartLabels.push(data);\r\n }\r\n if (dtl != '') {\r\n let cnt = dtl.get('count') || '0';\r\n let avg = dtl.get('avg') || '0';\r\n barchatlist.push(cnt);\r\n linechartList.push(avg);\r\n\r\n } else {\r\n barchatlist.push('0');\r\n linechartList.push('0');\r\n }\r\n });\r\n debugger;\r\n barcharDtl['label'] = status + \" Qty\";\r\n barcharDtl['data'] = barchatlist;\r\n barcharDtl['type'] = 'bar';\r\n barcharDtl['yAxisID'] = 'y-axis-1';\r\n this.barChartData.push(barcharDtl);\r\n barcharDtl = {};\r\n barcharDtl['label'] = status + \" Avg\";\r\n barcharDtl['data'] = linechartList;\r\n barcharDtl['type'] = 'line';\r\n barcharDtl['fill'] = false;\r\n barcharDtl['yAxisID'] = 'y-axis-2';\r\n this.barChartData.push(barcharDtl);\r\n });\r\n\r\n this.barChartType = 'bar';\r\n this.refreshChart('bar');\r\n document.getElementById('barchartModelBtn').click();\r\n }\r\n\r\n refreshChart(type) {\r\n setTimeout(() => {\r\n if (type == 'bar')\r\n this.isbarshowchart = true;\r\n if (type == 'pie')\r\n this.isshowchart = true;\r\n\r\n }, 5);\r\n }\r\n\r\n ngOnInit() {\r\n window.addEventListener('scroll', this.scroll, true);\r\n this.route.params.subscribe(map => {\r\n let schId = localStorage.getItem('srcIdns');\r\n let period = localStorage.getItem('BIPeriod');\r\n this.formname = this.route.snapshot.params['frmnme'];\r\n this.srchHistory['period'] = period;\r\n let frmdt = localStorage.getItem('BIpTo');\r\n let todt = localStorage.getItem('BIpFrom');\r\n this.cUrl = this.router.url;\r\n this.modulename = this.cUrl.split('/')[1];\r\n if (frmdt != null && frmdt != undefined) {\r\n this.srchHistory['frmdt'] = (localStorage.getItem('BIpFrom')).replace(/['\"]+/g, '');\r\n }\r\n\r\n if (todt != null && todt != undefined) {\r\n this.srchHistory['todt'] = (localStorage.getItem('BIpTo')).replace(/['\"]+/g, '');\r\n }\r\n\r\n\r\n if (schId != undefined) {\r\n this.getSearchResult(schId, period);\r\n }\r\n });\r\n // this.groups = [\r\n // {\r\n // 'val': 'sh_sz_co_pu',\r\n // 'grp': 'sh,sz',\r\n // 'head': 'pu',\r\n // 'side': 'co',\r\n // }, {\r\n // 'val': 'sh_co_pu',\r\n // 'grp': 'sh',\r\n // 'head': 'pu',\r\n // 'side': 'co',\r\n // }, {\r\n // 'val': 'pur_co_pu',\r\n // 'grp': 'pur',\r\n // 'head': 'pu',\r\n // 'side': 'co',\r\n // }\r\n // ]\r\n // this.createGrid();\r\n }\r\n}\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <span class=\"fa fa-chevron-left cp\" (click)=\"cs.pageBck();\"> Back</span> Analysis\r\n <span class=\"f-12\">({{cs.cDate | date:'medium'}})</span>\r\n <!-- <button (click)=\"test()\"></button> -->\r\n\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"content-frame-body\" style=\"margin-left:0;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"row\" id=\"staticHead\"\r\n style=\" position: fixed;width: 100%;background: white;z-index: 99;padding-top:5px\">\r\n <div class=\"col-sm-4\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label>Grid Formate </label> \r\n <select class=\"form-control form-control-sm\" name=\"gridGrp\" (change)=\"changeGrp(gridGrp);\"\r\n [(ngModel)]=\"gridGrp\">\r\n <option *ngFor=\"let group of groups\" [ngValue]=\"group\">{{group.name}}</option>\r\n </select>\r\n </div>\r\n <div class=\"form-group\">\r\n <button class=\"btn btn-success\" style=\"margin-left: 5px;\" (click)=\"modifySearch()\">Modify\r\n Search</button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group\">\r\n <p style=\"font-weight: 600;\">Sale period {{srchHistory?.frmdt}} To\r\n {{srchHistory?.todt}} |\r\n Period {{srchHistory?.period}}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">change By </label>\r\n <select style=\"width:80px;\" class=\"form-control form-control-sm\" name=\"ChangeBy\"\r\n (change)=\"OnChangeBy(ChangeBy);\" [(ngModel)]=\"ChangeBy\">\r\n <option value=\"COUNTCOLOR\">Qty</option>\r\n <option value=\"AVGCOLOR\">Avg</option>\r\n </select>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div class=\"stats\">\r\n <input type=\"checkbox\" (click)=\"hideShow('CTS', $event.target.checked);\"> CTS\r\n <input type=\"checkbox\" (click)=\"hideShow('AVG', $event.target.checked);\"> AVG\r\n <input type=\"checkbox\" (click)=\"hideShow('RAP', $event.target.checked);\"> DISC\r\n <!-- <input type=\"checkbox\" (click)=\"hideShow('AGE', $event.target.checked);\"> AGE -->\r\n <input type=\"checkbox\" (click)=\"hideShow('VLU', $event.target.checked);\"> VLU\r\n\r\n <input type=\"checkbox\" (click)=\"hideShow('MSD', $event.target.checked);\"> MSD\r\n <input type=\"checkbox\" (click)=\"hideShow('MSDVLU', $event.target.checked);\"> MSD VLU\r\n <input type=\"checkbox\" (click)=\"hideShow('AGE', $event.target.checked);\"> AGE\r\n <input type=\"checkbox\" (click)=\"hideShow('VA', $event.target.checked);\"> VA\r\n <input type=\"checkbox\" (click)=\"hideShow('SVP', $event.target.checked);\"> SVPD\r\n </div>\r\n </div>\r\n <div class=\"grids\" style=\"margin-top: 75px;\">\r\n <div class=\"row\" *ngFor=\"let grp of sortedGrp;let i = index\">\r\n <div class=\"stats\">\r\n <strong>{{grp}} </strong>\r\n </div>\r\n <div class=\"table-responsive\" style=\"overflow-y: hidden;\r\n height: auto;\">\r\n <table class=\"table table-bordered analysisTable\">\r\n <ng-container>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th *ngFor=\"let hrd of head;\" class=\"text-center\" [attr.colspan]=\"stt?.length\">{{hrd}} <i\r\n class=\"fa fa-pie-chart\" (click)=\"creategrpPie(stt,grp,hrd,side,'head')\"\r\n aria-hidden=\"true\"></i>\r\n \r\n <i class=\"fa fa-bar-chart\" style=\"cursor: pointer\"\r\n (click)=\"creategrpBar(stt,grp,hrd,side,'head')\" aria-hidden=\"true\"></i>\r\n </th>\r\n <th class=\"text-center\" colspan=\"2\" [attr.colspan]=\"stt?.length\">Total</th>\r\n </tr>\r\n <tr>\r\n <th></th>\r\n <ng-container *ngFor=\"let hrd of head;\">\r\n <th *ngFor=\"let st of stt;\" class=\"text-center\">{{st}}\r\n <table class=\"innerTbl\">\r\n <tr>\r\n <td *ngIf=\"wt\" id=\"{{i}}\" class=\"text-center\">Wt</td>\r\n <td *ngIf=\"avg\" class=\"text-center\">Avg</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"rap\" class=\"text-center\">Disc</td>\r\n <td *ngIf=\"val\" class=\"text-center\">Value</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"msd\" class=\"text-center\">MSD</td>\r\n <td *ngIf=\"msdvlu\" class=\"text-center\">MSD Vlu</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"age\" class=\"text-center\">AGE</td>\r\n <td *ngIf=\"va\" class=\"text-center\">VA</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"svpd\" class=\"text-center\">SVPD</td>\r\n <td class=\"text-center\"> </td>\r\n </tr>\r\n </table>\r\n </th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let st of stt;\">\r\n <th class=\"text-center\">{{st}}\r\n <table class=\"innerTbl\">\r\n <tr>\r\n <td *ngIf=\"wt\" class=\"text-center\">Wt</td>\r\n <td *ngIf=\"avg\" class=\"text-center\">Avg</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"rap\" class=\"text-center\">Disc</td>\r\n <td *ngIf=\"val\" class=\"text-center\">Value</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"msd\" class=\"text-center\">MSD</td>\r\n <td *ngIf=\"msdvlu\" class=\"text-center\">MSD Vlu</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"age\" class=\"text-center\">AGE</td>\r\n <td *ngIf=\"va\" class=\"text-center\">VA</td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"svpd\" class=\"text-center\">SVPD</td>\r\n <td class=\"text-center\"> </td>\r\n </tr>\r\n </table>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let sid of side;\">\r\n <td class=\"text-center\">{{sid}} <i class=\"fa fa-pie-chart\" style=\"cursor: pointer\"\r\n (click)=\"creategrpPie(stt,grp,sid,head,'side')\" aria-hidden=\"true\"></i> \r\n <i class=\"fa fa-bar-chart\" style=\"cursor: pointer\"\r\n (click)=\"creategrpBar(stt,grp,sid,head,'side')\" aria-hidden=\"true\"></i>\r\n </td>\r\n <ng-container *ngFor=\"let hrd of head;\">\r\n <td *ngFor=\"let st of stt;\"\r\n [ngStyle]=\"{'background':isApplied==true?gblGrdDataColor.get(grp+'#'+sid+'#'+hrd+'#'+st).get(key) : matrix?.get(grp+'#'+sid+'#'+hrd+'#'+st)?.get('grpcolor')}\"\r\n class=\"text-center\">\r\n <!-- <span>{{gblGrpArr[grp+'#'+sid+'#'+hrd+'#'+st] |json}}</span> -->\r\n <span class=\"cp\" data-toggle=\"tooltip\" data-placement=\"right\" title=\"Click here to get data\"\r\n data-placement=\"right\"><a href=\"javascript:void(0)\" target=\"_blank\"\r\n (click)=\"getData('cell', grp+'#'+sid+'#'+hrd,st);\"\r\n routerLink=\"/{{modulename}}/pkt-list/{{formname}}\">\r\n {{matrix?.get(grp+'#'+sid+'#'+hrd+'#'+st)?.get('count')}}</a>\r\n </span>\r\n <table class=\"innerTbl\">\r\n <tr>\r\n <td *ngIf=\"wt\" id=\"{{i}}\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('wt')=='' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('wt')== null )?'-':cs.splitToTwoDecimal(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('wt'))}}</td>\r\n <td *ngIf=\"avg\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('avg')=='' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('avg')== null)?'-':cs.splitToTwoDecimal(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('avg'))}}</td>\r\n\r\n <!-- <td *ngIf=\"avg\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('avg')==\"\" || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('avg')==null )?'-':cs.splitToTwoDecimal(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('avg'))}}</td> -->\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"rap\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('disc')=='' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('disc')== null)?'-':cs.splitToTwoDecimal(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('disc'))}}</td>\r\n\r\n <td *ngIf=\"val\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('value')=='' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('value')==null)?'-':cs.roundval(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('value'))}}</td>\r\n </tr>\r\n <tr>\r\n\r\n <td *ngIf=\"msd\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('msd')== '' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('msd')==null)?'-':matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('msd') }}\r\n <!-- :{{matrix?.get(grp+'#'+sid+'#'+hrd+'#'+st)?.get('msd') | json}} -->\r\n </td>\r\n <td *ngIf=\"msdvlu\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('msdvlu')=='' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('msdvlu')==null)?'-':matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('msdvlu')}}</td>\r\n\r\n </tr>\r\n <tr>\r\n <!-- <td *ngIf=\"age\" class=\"text-center\">{{cs.roundval(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('age'))}}</td> -->\r\n\r\n <td *ngIf=\"age\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('age')==\"\" || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('age')== null )?'-':cs.roundval(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('age'))}}\r\n <!-- :{{matrix?.get(grp+'#'+sid+'#'+hrd+'#'+st)?.get('age') | json}} -->\r\n </td>\r\n\r\n\r\n <td *ngIf=\"va\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('valueage')== '' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('valueage')==null)? '-':cs.roundval(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('valueage'))}}</td>\r\n </tr>\r\n <td *ngIf=\"svpd\" class=\"text-center\">{{(matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('svpd')=='' || matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('svpd')==null)?'-':matrix?.get(grp+'#'+sid+'#'+hrd\r\n +'#'+st)?.get('svpd')}}</td>\r\n <td> </td>\r\n <tr>\r\n\r\n </tr>\r\n </table>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let st of stt;\">\r\n <td class=\"text-center\"\r\n [ngStyle]=\"{'background': rowTotal?.get(grp+'#'+sid+'#'+st)?.get('grpcolor')}\">\r\n <a href=\"javascript:void(0)\" target=\"_blank\" (click)=\"getData('row', grp+'#'+sid,st);\"\r\n routerLink=\"/{{modulename}}/pkt-list/{{formname}}\">{{rowTotal?.get(grp+'#'+sid+'#'+st)?.get('count')}}</a>\r\n <table class=\"innerTbl\">\r\n <tr>\r\n <td *ngIf=\"wt\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('wt')=='' ||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('wt')==null)?'-':cs.splitToTwoDecimal(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('wt'))}}\r\n </td>\r\n\r\n <!-- <td *ngIf=\"avg\" class=\"text-center\">{{rowTotal?.get(grp+'#'+sid+'#'+st)?.get('avg')}}\r\n </td> -->\r\n <td *ngIf=\"avg\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('avg')==\"\" ||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('avg')==null)?'-':cs.splitToTwoDecimal(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('avg'))}}\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"rap\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('disc')=='' ||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('disc')==null)?'-':cs.splitToTwoDecimal(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('disc'))}}\r\n </td>\r\n <td *ngIf=\"val\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('value')=='' ||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('value')==null)?'-':cs.roundval(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('value'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n\r\n <td *ngIf=\"msd\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('msd')==''||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('msd')==null\r\n )?'-':rowTotal?.get(grp+'#'+sid+'#'+st)?.get('msd')}}\r\n </td>\r\n <td *ngIf=\"msdvlu\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('msdvlu')==''||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('msdvlu')==null)?'-':rowTotal?.get(grp+'#'+sid+'#'+st)?.get('msdvlu')}}\r\n </td>\r\n </tr>\r\n <tr>\r\n <!-- <td *ngIf=\"age\" class=\"text-center\">\r\n {{cs.roundval(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('age'))}}</td> -->\r\n\r\n <td *ngIf=\"age\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('age')==\"\" ||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('age')==null\r\n )?'-':cs.roundval(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('age'))}}\r\n <!-- :{{rowTotal?.get(grp+'#'+sid+'#'+st)?.get('age') | json}} -->\r\n </td>\r\n\r\n <td *ngIf=\"va\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('valueage')=='' ||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('valueage')==null)?'-':cs.roundval(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('valueage'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"svpd\" class=\"text-center\">\r\n {{(rowTotal?.get(grp+'#'+sid+'#'+st)?.get('svpd')==''||\r\n rowTotal?.get(grp+'#'+sid+'#'+st)?.get('svpd')==null)?'-':rowTotal?.get(grp+'#'+sid+'#'+st)?.get('svpd')}}\r\n </td>\r\n <td> </td>\r\n </tr>\r\n </table>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <tr>\r\n <td class=\"text-center\">Total</td>\r\n <ng-container *ngFor=\"let hrd of head;\">\r\n <td *ngFor=\"let st of stt;\" class=\"text-center\"\r\n [ngStyle]=\"{'background': colTotal?.get(grp+'#'+hrd+'#'+st)?.get('grpcolor')}\">\r\n <a href=\"javascript:void(0)\" target=\"_blank\"\r\n routerLink=\"/{{modulename}}/pkt-list/{{formname}}\"\r\n (click)=\"getData('col', grp+'#'+hrd,st);\">{{colTotal?.get(grp+'#'+hrd+'#'+st)?.get('count')}}</a>\r\n <table class=\"innerTbl\">\r\n <tr>\r\n <td *ngIf=\"wt\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('wt')=='' ||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('wt')==null)?'-':cs.splitToTwoDecimal(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('wt'))}}\r\n </td>\r\n <!-- <td *ngIf=\"avg\" class=\"text-center\">{{colTotal?.get(grp+'#'+hrd+'#'+st)?.get('avg')}}\r\n </td> -->\r\n\r\n <td *ngIf=\"avg\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('avg')==\"\" ||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('avg')==null\r\n )?'-':colTotal?.get(grp+'#'+hrd+'#'+st)?.get('avg')}}\r\n </td>\r\n\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"rap\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('disc') == '' ||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('disc')==null)?'-':cs.splitToTwoDecimal(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('disc'))}}\r\n </td>\r\n <td *ngIf=\"val\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('value')==''\r\n ||colTotal?.get(grp+'#'+hrd+'#'+st)?.get('value')==null ) ?\r\n '-':cs.roundval(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('value'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n\r\n <td *ngIf=\"msd\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('msd')=='' ||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('msd')==null)?'-':cs.splitToTwoDecimal(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('msd'))}}\r\n </td>\r\n <td *ngIf=\"msdvlu\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('msdvlu')==''||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('msdvlu')==null)?'-':cs.splitToTwoDecimal(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('msdvlu'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n <!-- <td *ngIf=\"age\" class=\"text-center\">\r\n {{cs.roundval(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('age'))}}</td> -->\r\n\r\n <td *ngIf=\"age\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('age')==''||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('age')==null\r\n )?'-':cs.roundval(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('age'))}}\r\n <!-- :{{colTotal?.get(grp+'#'+hrd+'#'+st)?.get('age') | json}} -->\r\n </td>\r\n\r\n\r\n <td *ngIf=\"va\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('valueage')=='' ||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('valueage')==null)?'-':cs.roundval(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('valueage'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"svpd\" class=\"text-center\">\r\n {{(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('svpd')==''||\r\n colTotal?.get(grp+'#'+hrd+'#'+st)?.get('svpd')==null)?'-':cs.splitToTwoDecimal(colTotal?.get(grp+'#'+hrd+'#'+st)?.get('svpd'))}}\r\n </td>\r\n <td> </td>\r\n </tr>\r\n </table>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let st of stt;\">\r\n <td class=\"text-center\"\r\n [ngStyle]=\"{'background': grandTotal?.get('GT#'+grp+'#'+st)?.get('grpcolor')}\">\r\n <a href=\"javascript:void(0)\" target=\"_blank\"\r\n routerLink=\"/{{modulename}}/pkt-list/{{formname}}\" (click)=\"getAll(stt,head,side,grp)\">\r\n <!-- (click)=\"getData('all', '');\" -->\r\n {{grandTotal?.get('GT#'+grp+'#'+st)?.get('count')}}\r\n </a>\r\n <table class=\"innerTbl\">\r\n <tr>\r\n <td *ngIf=\"wt\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('wt')==''||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('wt')==null)?'-':cs.splitToTwoDecimal(grandTotal?.get('GT#'+grp+'#'+st)?.get('wt'))}}\r\n </td>\r\n <td *ngIf=\"avg\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('avg')=='' ||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('avg')==null)?'-':cs.roundval(grandTotal?.get('GT#'+grp+'#'+st)?.get('avg'))}}\r\n\r\n\r\n </td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"rap\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('disc')=='' ||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('disc')==null)?'-':cs.roundval(grandTotal?.get('GT#'+grp+'#'+st)?.get('disc'))}}\r\n </td>\r\n <td *ngIf=\"val\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('value')=='' ||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('value')==null)?'-':cs.roundval(grandTotal?.get('GT#'+grp+'#'+st)?.get('value'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n\r\n <td *ngIf=\"msd && st=='sold'\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('msd')=='' ||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('msd')==null)?'-':cs.splitToTwoDecimal(grandTotal?.get('GT#'+grp+'#'+st)?.get('msd'))}}\r\n <!-- :{{grandTotal?.get('GT#'+grp+'#'+st)?.get('msd') | json}} -->\r\n </td>\r\n <td *ngIf=\"msdvlu && st=='sold'\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('msdvlu')==''||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('msdvlu')==null)?'-':cs.splitToTwoDecimal(grandTotal?.get('GT#'+grp+'#'+st)?.get('msdvlu'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n <!-- <td *ngIf=\"age\" class=\"text-center\">\r\n {{cs.roundval(grandTotal?.get('GT#'+grp+'#'+st)?.get('age'))}}</td> -->\r\n\r\n <td *ngIf=\"age\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('age')=='' ||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('age')==null\r\n )?'-':cs.roundval(grandTotal?.get('GT#'+grp+'#'+st)?.get('age'))}}\r\n <!-- :{{grandTotal?.get('GT#'+grp+'#'+st)?.get('age') |json}} -->\r\n\r\n </td>\r\n\r\n <td *ngIf=\"va\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('valueage')==''||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('valueage')==null)?'-':cs.roundval(grandTotal?.get('GT#'+grp+'#'+st)?.get('valueage'))}}\r\n </td>\r\n </tr>\r\n <tr>\r\n <td *ngIf=\"svpd\" class=\"text-center\">\r\n {{(grandTotal?.get('GT#'+grp+'#'+st)?.get('svpd')==''||\r\n grandTotal?.get('GT#'+grp+'#'+st)?.get('svpd')==null)?'-':cs.splitToTwoDecimal(grandTotal?.get('GT#'+grp+'#'+st)?.get('svpd'))}}\r\n </td>\r\n <td> </td>\r\n </tr>\r\n </table>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div class=\"modal fade\" id=\"PiechartModel\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\"\r\n aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"mailModalHead\">Pie Chart</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let st of stt;\">\r\n <div *ngIf=\"isshowchart\" class=\"col-sm-6\">\r\n <div with=\"100%\">\r\n <span style=\"font-size: 16px;font-weight: bold;\"> {{st}} Chart</span>\r\n </div>\r\n <div with=\"100%\">\r\n <canvas baseChart [data]=\"ChatMapDtl[st+'_data']\" [labels]=\"ChatMapDtl[st+'_lable']\"\r\n [legend]=\"ChatMapDtl[st+'_legend']\" [chartType]=\"ChartType\" [options]=\"chartOptions\"></canvas>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal fade\" id=\"barchartModel\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\"\r\n aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"mailModalHead\">Bar Chart</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n\r\n\r\n <div *ngIf=\"isbarshowchart\" class=\"col-sm-12\">\r\n <div with=\"100%\">\r\n <span style=\"font-size: 16px;font-weight: bold;\"> {{st}} Chart</span>\r\n </div>\r\n <div with=\"100%\">\r\n <canvas baseChart [datasets]=\"barChartData\" [labels]=\"barChartLabels\" [options]=\"barChartOptions\"\r\n [legend]=\"barChartLegend\" [colors]=\"barchartColors\" [chartType]=\"barChartType\">\r\n </canvas>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n<button id=\"PiechartModelBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#PiechartModel\"></button>\r\n<button id=\"barchartModelBtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#barchartModel\"></button>","\r\nimport { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\n// import { FlashMessagesService } from 'angular2-flash-messages'\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\n// import * as XLSX from 'ts-xlsx';\r\n// import * as XLSX from 'xlsx/xlsx.mjs';\r\nimport * as XLSX from 'xlsx';\r\n\r\n// import { UploadServiceService } from 'src/app/components/fileupload-module/upload-service.service';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal'\r\nimport { document } from 'ngx-bootstrap';\r\n// import { AsyncLocalStorage } from 'async_hooks';\r\n\r\n@Component({\r\n selector: 'app-fileupload',\r\n templateUrl: './fileupload.component.html',\r\n styleUrls: ['./fileupload.component.css']\r\n})\r\n\r\n\r\nexport class FileuploadComponent implements OnInit {\r\n\r\n @ViewChild('closehdrbtn') closehdrbtn: ElementRef;\r\n @ViewChild('closedtlbtn') closedtlbtn: ElementRef;\r\n @ViewChild('Cofirmmapdtl') Cofirmmapdtl: ModalDirective;\r\n header = {};\r\n fileToUpload: File = null;\r\n fileName = \"\";\r\n cDt;\r\n step = 1;\r\n sheetData = [];\r\n headerAttributeDtl = {};\r\n defultDisplayLen = 5;\r\n defultDisplayObj = [];\r\n attrStructureDtl = [];\r\n headerList = [];\r\n headerprp;\r\n attrprp;\r\n totalmatch = 0;\r\n totalignore = 0;\r\n pageDefination = {};\r\n rowdatamapDetails = {};\r\n rowdistinctDataMap = {};\r\n charHeaderList = [];\r\n attributeDtlMap = {};\r\n mappSheetData = [];\r\n lable = \"\";\r\n lableFile = \"\";\r\n statusList = [];\r\n fileDetails = [];\r\n fileTypeList = [];\r\n fileOptionsList = [];\r\n fileType;\r\n nme;\r\n typ;\r\n mdl;\r\n description;\r\n check_status = [];\r\n pkt_status = [];\r\n colFormate = [];\r\n ignoreFormate = [];\r\n allcols = [];\r\n fileLogIdn = 0;\r\n show = false;\r\n stepMsg = '';\r\n timerfile;\r\n timerPrice;\r\n dateFormat;\r\n delim;\r\n dateFormatMap = {};\r\n mappingskip = false;\r\n filetype;\r\n filenme;\r\n dateFormatList = [{ \"k\": \"dd/mm/yy\", \"v\": \"dd/mm/yy\" },\r\n { \"k\": \"mm/dd/yy\", \"v\": \"mm/dd/yy\" },\r\n { \"k\": \"dd/Mon/yy\", \"v\": \"dd/Mon/yy\" },\r\n ]\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private http: HttpClient,\r\n private cs: CommanServiceService\r\n ) { }\r\n\r\n handleFileInput(files: FileList) {\r\n this.fileToUpload = files.item(0);\r\n this.fileName = files[0].name;\r\n }\r\n onFileSelect(input: HTMLInputElement) {\r\n const files = input.files;\r\n\r\n if (files && files.length) {\r\n\r\n const fileToRead = files[0];\r\n\r\n const fileReader = new FileReader();\r\n fileReader.onload = this.onFileLoad;\r\n\r\n fileReader.readAsText(fileToRead, \"UTF-8\");\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n csvContent: string;\r\n parsedCsv: string[][];\r\n onFileLoad(fileLoadedEvent) {\r\n const csvSeparator = ';';\r\n const textFromFileLoaded = fileLoadedEvent.target.result;\r\n this.csvContent = textFromFileLoaded;\r\n const txt = textFromFileLoaded;\r\n const csv = [];\r\n const lines = txt.split('\\n');\r\n\r\n console.log(lines[0]);\r\n\r\n\r\n lines.forEach(element => {\r\n const cols: string[] = element.split(csvSeparator);\r\n csv.push(cols);\r\n });\r\n this.parsedCsv = csv;\r\n\r\n // demo output as alert\r\n var output: string = \"\";\r\n csv.forEach(row => {\r\n output += \"\\n\";\r\n var colNo = 0;\r\n row.forEach(col => {\r\n if (colNo > 0) output += \" | \";\r\n output += col;\r\n colNo++;\r\n });\r\n });\r\n return output;\r\n }\r\n\r\n\r\n arrayBuffer: any;\r\n file: File;\r\n incomingfile(event) {\r\n this.file = event.target.files[0];\r\n this.fileName = this.file.name;\r\n this.Upload();\r\n }\r\n\r\n Upload() {\r\n\r\n this.show = true;\r\n this.stepMsg = 'File upload in process..';\r\n // this.spinnerService.show();\r\n this.mappSheetData = [];\r\n this.sheetData = [];\r\n let fileReader = new FileReader();\r\n fileReader.onload = (e) => {\r\n this.arrayBuffer = fileReader.result;\r\n var data = new Uint8Array(this.arrayBuffer);\r\n var arr = new Array();\r\n for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);\r\n var bstr = arr.join(\"\");\r\n var workbook = XLSX.read(bstr, { type: \"binary\" });\r\n var first_sheet_name = workbook.SheetNames[0];\r\n var worksheet = workbook.Sheets[first_sheet_name];\r\n\r\n var sheetDataMap: any = XLSX.utils.sheet_to_json(worksheet, { header: 1 });\r\n let headerList = sheetDataMap[0];\r\n headerList.forEach(hdr => {\r\n this.headerList.push(hdr.trim());\r\n });\r\n this.sheetData = XLSX.utils.sheet_to_json(worksheet);\r\n this.mappSheetData = XLSX.utils.sheet_to_json(worksheet);\r\n this.fileLogIdn = 0;\r\n console.log(\"this.headerList\", this.headerList);\r\n\r\n this.getHeaderMatch();\r\n // const distinctSh = [...new Set(this.sheetData.map(x=>x.SHAPE))];\r\n }\r\n fileReader.readAsArrayBuffer(this.file);\r\n }\r\n\r\n setSetp(step) {\r\n this.step = step;\r\n\r\n if (step == 1) {\r\n this.ngOnDestroy();\r\n this.ngOnInit();\r\n }\r\n }\r\n\r\n getHeaderMatch() {\r\n this.show = true;\r\n debugger;\r\n this.stepMsg = 'Header verification in process ...';\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['attrList'] = this.headerList;\r\n reqObj['fileIdn'] = this.fileType;\r\n this.header[\"method\"] = 'loadHeaderAttr';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.headerAttributeDtl = result.attrDetails || '';\r\n console.log(\"this.headerAttributeDtl\", this.headerAttributeDtl);\r\n let headerListLnt = this.headerList.length;\r\n this.totalmatch = result.totalmatch || 0;\r\n if (this.headerAttributeDtl != '') {\r\n this.attrStructureDtl = result.attrStructureDtl || [];\r\n if (this.sheetData.length < 5)\r\n this.defultDisplayLen = this.sheetData.length;\r\n for (var i = 0; i < this.defultDisplayLen; i++)\r\n this.defultDisplayObj[i] = this.sheetData[i];\r\n\r\n let ignoreColumnLst = result.ignore_column || [];\r\n ignoreColumnLst.forEach(hdrDsc => {\r\n\r\n if (this.headerAttributeDtl[hdrDsc] != undefined) {\r\n this.headerAttributeDtl[hdrDsc].ignore = 'Y';\r\n headerListLnt--;\r\n this.totalignore++;\r\n if (this.headerAttributeDtl[hdrDsc].attr != \"\")\r\n this.totalmatch--;\r\n }\r\n });\r\n let isDate = false;\r\n\r\n this.headerList.forEach(hdr => {\r\n\r\n let hdrAttr = this.headerAttributeDtl[hdr] || {};\r\n if (hdrAttr.dta_typ == 'd') {\r\n this.dateFormatMap[hdr] = this.dateFormat;\r\n isDate = true;\r\n }\r\n });\r\n\r\n if (this.totalmatch == headerListLnt && isDate == false) {\r\n this.ValidateFileHeaderMapping('N');\r\n this.show = false;\r\n this.step = 3;\r\n }\r\n else {\r\n this.step = 2;\r\n }\r\n this.show = false;\r\n } else {\r\n // this.flashMessagesService.show(\"Some problem in File Header Matching\", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n //this.spinnerService.hide();\r\n this.show = false;\r\n } else {\r\n this.show = false;\r\n //this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this.spinnerService.hide();\r\n this.show = false;\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n updatecolumnstatue(hdr) {\r\n\r\n var isIgnore = this.headerAttributeDtl[hdr].ignore || '';\r\n if (isIgnore == 'Y') {\r\n this.headerAttributeDtl[hdr].ignore = 'N'\r\n this.totalignore--;\r\n } else {\r\n this.totalignore++;\r\n this.headerAttributeDtl[hdr].ignore = 'Y';\r\n }\r\n console.log(this.headerAttributeDtl[hdr]);\r\n }\r\n maphdr;\r\n hdrmassage;\r\n confirmsetHeaderMapp(hdr) {\r\n this.maphdr = hdr;\r\n let attr = this.headerAttributeDtl[hdr].attr;\r\n this.attrStructureDtl.forEach(ele => {\r\n\r\n if (ele.attr == attr) {\r\n this.hdrmassage = this.headerAttributeDtl[hdr].attr + \"(\" + ele.print + \")\";\r\n }\r\n })\r\n\r\n document.getElementById('btnCofirmmaphdr').click();\r\n }\r\n CancelHeaderMapp() {\r\n this.headerAttributeDtl[this.maphdr].attr = \"\";\r\n }\r\n setHeaderMapp() {\r\n debugger;\r\n let attr = this.headerAttributeDtl[this.maphdr].attr || '';\r\n if (attr != '') {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['optionaVal'] = this.maphdr\r\n reqObj['attr'] = attr;\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'addHeaderAttr';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n console.log(response);\r\n\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result || {};\r\n let hdrDtl = result.attrDetails[this.maphdr] || '';\r\n if (hdrDtl != '') {\r\n this.totalmatch++;\r\n this.headerAttributeDtl[this.maphdr] = hdrDtl;\r\n } else {\r\n this.headerAttributeDtl[this.maphdr] = {\r\n \"attr\": \"\",\r\n \"print\": \"\",\r\n \"srt\": \"\",\r\n \"dta_typ\": \"\",\r\n \"attr_idn\": \"\"\r\n }\r\n\r\n }\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n } else {\r\n // this.flashMessagesService.show(\"Mapping attribute is empty please retry.\", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n\r\n }\r\n\r\n gmatchedCount = 0;\r\n gresultCount = 0;\r\n setRowDataMapp() {\r\n if (!this.mappingskip) {\r\n let rowMatchCount = 0;\r\n this.charHeaderList = [];\r\n debugger\r\n this.headerList.forEach(hdr => {\r\n\r\n let attr = this.headerAttributeDtl[hdr].attr || '';\r\n let attrType = this.headerAttributeDtl[hdr].dta_typ || '';\r\n let isIgnore = this.headerAttributeDtl[hdr].ignore || '';\r\n if (attr != '' && isIgnore != 'N' && attrType == 'c') {\r\n debugger\r\n var distinctlist = Array.from(new Set(this.sheetData.map((item: any) => item[hdr])));\r\n distinctlist = distinctlist.filter(function (e) { return e });\r\n if (distinctlist.length > 0) {\r\n this.rowdistinctDataMap[attr] = distinctlist;\r\n rowMatchCount = rowMatchCount + distinctlist.length;\r\n this.gmatchedCount = rowMatchCount;\r\n this.charHeaderList.push(hdr);\r\n let attrDetails = this.attrStructureDtl.find(attrdtl => attrdtl.attr == attr) || {};\r\n this.attributeDtlMap[attr] = attrDetails.prpList || [];\r\n }\r\n }\r\n\r\n\r\n\r\n });\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['attrMap'] = this.rowdistinctDataMap;\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'loadHeaderAttrDtl';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n // this.spinnerService.hide();\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n console.log(result);\r\n console.log(rowMatchCount);\r\n debugger;\r\n\r\n this.rowdatamapDetails = result.attrDetails || {};\r\n this.gresultCount = result.totalmatch;\r\n this.step = 3;\r\n if (rowMatchCount == result.totalmatch) {\r\n this.step = 4;\r\n this.uploadFile();\r\n\r\n }\r\n else {\r\n // this.flashMessagesService.show(\"please verify data mapping.\", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n\r\n } else {\r\n // this.flashMessagesService.show(\"something go wrong in row data.\", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n } else {\r\n this.step = 4;\r\n this.uploadFile();\r\n }\r\n\r\n }\r\n dtlAttr;\r\n dtlattr_idn;\r\n dtloptionval;\r\n dtlmassage;\r\n confirmHeaderDetailsMapp(attr, attr_idn, optionval) {\r\n this.dtlAttr = attr;\r\n this.dtlattr_idn = attr_idn;\r\n this.dtloptionval = optionval;\r\n let val = this.rowdatamapDetails[this.dtlAttr][this.dtloptionval].val;\r\n let attributeDtlList = this.attributeDtlMap[attr];\r\n attributeDtlList.forEach(ele => {\r\n\r\n if (ele.val == val) {\r\n this.dtlmassage = val + \"(\" + ele.print + \")\";\r\n }\r\n })\r\n\r\n document.getElementById('btnCofirmmapdtl').click();\r\n\r\n }\r\n\r\n CancelHeaderDetailsMapp() {\r\n this.rowdatamapDetails[this.dtlAttr][this.dtloptionval].val = \"\";\r\n }\r\n setHeaderDetailsMapp() {\r\n let attrDtlVal = this.rowdatamapDetails[this.dtlAttr][this.dtloptionval].val || '';\r\n if (attrDtlVal != '') {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['optionaVal'] = this.dtloptionval\r\n reqObj['attr_idn'] = this.dtlattr_idn;\r\n reqObj['attr'] = this.dtlAttr;\r\n reqObj['attrVal'] = attrDtlVal;\r\n this.header[\"method\"] = 'addDetailAttr';\r\n console.log(JSON.stringify(reqObj));\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n console.log(\"addDetailAttr\", response);\r\n if (response.status == 'SUCCESS') {\r\n this.gresultCount++;\r\n let result = response.result || {};\r\n console.log(result.attrDetails);\r\n let attrDetails = result.attrDetails || {}\r\n this.rowdatamapDetails[this.dtlAttr][this.dtloptionval] = attrDetails[this.dtloptionval];\r\n // this.spinnerService.hide();\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n } else {\r\n // this.flashMessagesService.show(\"Mapping attribute is empty please retry.\", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n onSubmit(formVal) {\r\n var t = Object.keys(formVal.form.controls).forEach(field => {\r\n const control = formVal.form.get(field);\r\n });\r\n this.saveFileOption(formVal.value);\r\n }\r\n saveFileOption(frmvals) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj = { ...frmvals, column_format: this.colFormate, ignore_column: this.ignoreFormate };\r\n reqObj['formNme'] = 'fileUpload';\r\n console.log(JSON.stringify(reqObj));\r\n debugger\r\n this.header[\"method\"] = 'addFileOption';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n debugger\r\n let result = response.result || {};\r\n this.fileOptionsList = result.fileOptionsList;\r\n this.fileType = result.file_idn;\r\n this.ValidateFileHeaderMapping('N');\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n addFileLog(fileIdn) {\r\n debugger\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['file_idn'] = fileIdn;\r\n reqObj['file_status'] = \"Header Inserted\";\r\n reqObj['validation_remarks'] = \"Header validated\";\r\n reqObj['header_row'] = this.allcols;\r\n reqObj['header_attr_row'] = this.colFormate;\r\n this.header[\"method\"] = 'addFileLog';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n debugger\r\n let result = response.result || {};\r\n this.fileLogIdn = result.file_log_idn;\r\n this.setRowDataMapp();\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(\"Header validated successfully\", { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n ValidateFileHeaderMapping(formatSave) {\r\n // this.spinnerService.show();\r\n\r\n this.show = true;\r\n this.stepMsg = 'Header verification in process ...';\r\n this.colFormate = [];\r\n this.ignoreFormate = [];\r\n this.allcols = [];\r\n let isValidate = true;\r\n this.headerList.forEach(hdr => {\r\n let hdrDtl = this.headerAttributeDtl[hdr] || ''\r\n if (hdrDtl.attr == '' && hdrDtl.ignore != 'Y') {\r\n isValidate = false;\r\n }\r\n if (hdrDtl.attr != '' && hdrDtl.ignore != 'N') {\r\n this.colFormate.push(hdrDtl.attr);\r\n }\r\n if (hdrDtl.ignore == 'Y') {\r\n this.ignoreFormate.push(hdr);\r\n }\r\n this.allcols.push(hdr);\r\n });\r\n\r\n if (isValidate && (this.fileType == null || this.fileType == undefined || this.fileType == \"\")) {\r\n // this.spinnerService.hide();\r\n\r\n this.stepMsg = \"\";\r\n document.getElementById('btnfileUploadModal').click();\r\n this.step = 2;\r\n return;\r\n } else {\r\n\r\n if (isValidate) {\r\n if (formatSave == 'Y') {\r\n this.updatefileOption();\r\n }\r\n this.addFileLog(this.fileType);\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(\"Please specify mapping or marke as ignore \", { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }\r\n this.show = false;\r\n\r\n\r\n }\r\n hdrIdn;\r\n updatefileOption() {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['fileIdn'] = this.fileType;\r\n reqObj['column_format'] = this.colFormate;\r\n reqObj['ignore_column'] = this.ignoreFormate;\r\n\r\n this.header[\"method\"] = 'updateColumnFormat';\r\n console.log(JSON.stringify(reqObj));\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n }\r\n }, error => {\r\n });\r\n }\r\n\r\n uploadFile() {\r\n this.dateFormat = this.dateFormat || 'dd/mm/yy';\r\n this.delim = this.delim || '/';\r\n this.show = true;\r\n let dateValid = true;\r\n let massage = \"\";\r\n\r\n if (!this.mappingskip) {\r\n this.stepMsg = \"Data verification in process ...\";\r\n this.headerList.forEach(hdr => {\r\n debugger\r\n let attr = this.headerAttributeDtl[hdr].attr || '';\r\n let attrType = this.headerAttributeDtl[hdr].dta_typ || '';\r\n let isIgnore = this.headerAttributeDtl[hdr].ignore || '';\r\n if (isIgnore == 'Y') {\r\n this.mappSheetData.map((rowData, i) => {\r\n delete this.mappSheetData[i][hdr];\r\n });\r\n } else {\r\n if (attrType == 'c') {\r\n this.mappSheetData.map((rowData, i) => {\r\n if (this.charHeaderList.indexOf(hdr) != -1) {\r\n let attrdtlVal = rowData[hdr] || '';\r\n if (attrdtlVal != '') {\r\n\r\n let attrDtlMapVal = this.rowdatamapDetails[attr][attrdtlVal].srt;\r\n this.mappSheetData[i][attr] = attrDtlMapVal.toString();\r\n }\r\n if (attr != hdr)\r\n delete this.mappSheetData[i][hdr]\r\n }\r\n\r\n });\r\n\r\n } else if (attrType == 'n') {\r\n this.mappSheetData.map((rowData, i) => {\r\n let attrdtlVal = rowData[hdr] || '';\r\n if (attrdtlVal != '') {\r\n debugger\r\n attrdtlVal = attrdtlVal.replace(/[^0-9.-]/g, \"\");\r\n this.mappSheetData[i][attr] = attrdtlVal.toString();\r\n }\r\n if (attr != hdr)\r\n delete this.mappSheetData[i][hdr]\r\n\r\n });\r\n } else if (attrType == 'd') {\r\n\r\n this.mappSheetData.map((rowData, i) => {\r\n debugger\r\n let attrdtlVal = rowData[hdr] || '';\r\n let dtFrm = this.dateFormatMap[hdr] || 'dd/mm/yy';\r\n if (attrdtlVal != '')\r\n attrdtlVal = this.cs.dateValidation(attrdtlVal, dtFrm);\r\n if (attrdtlVal == 'invaild') {\r\n dateValid = false;\r\n massage = \"Please check Date :\" + rowData[hdr] + \" Date Format :\" + dtFrm;\r\n }\r\n\r\n this.mappSheetData[i][attr] = attrdtlVal.toString();\r\n if (attr != hdr)\r\n delete this.mappSheetData[i][hdr]\r\n\r\n });\r\n\r\n } else if (attrType == 't') {\r\n this.mappSheetData.map((rowData, i) => {\r\n let attrdtlVal = rowData[hdr] || '';\r\n\r\n this.mappSheetData[i][attr] = attrdtlVal.toString();\r\n if (attr != hdr)\r\n delete this.mappSheetData[i][hdr]\r\n\r\n });\r\n }\r\n }\r\n });\r\n }\r\n if (dateValid) {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';//this.route.snapshot.params['frmname'];\r\n reqObj['file_log_idn'] = this.fileLogIdn;\r\n reqObj['attr_data'] = this.mappSheetData;\r\n reqObj['in_data'] = this.sheetData;\r\n reqObj['dateformat'] = this.dateFormatMap;\r\n this.header[\"method\"] = 'fileUpload';\r\n let url = \"fileUpload/load\";\r\n if (this.mdl == 'inward') {\r\n url = 'inward/loadFile';\r\n reqObj['inward_idn'] = this.inward_idn;\r\n }\r\n\r\n // console.log(reqObj);\r\n console.log(JSON.stringify(reqObj));\r\n // console.log(this.header);\r\n\r\n this.cs.loadiFile(reqObj, this.header, url).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result || {};\r\n console.log(result);\r\n this.show = false;\r\n this.step = 4;\r\n this.fileLogIdn = result.file_log_idn;\r\n this.hdrIdn = result.hdrIdn;\r\n this.getProgressFile(this.fileLogIdn);\r\n this.lableFile = \"File Sequence No. \" + this.fileLogIdn + \" Uploading in progress...\";\r\n // set file id to local storage\r\n // AsyncLocalStorage.arguments('uploadedFileId', result.file_log_idn);\r\n\r\n this.lable = \"Pricing Sequence No. \" + this.hdrIdn + \" Price calculations in progress...\";\r\n\r\n this.getProgressPrice(this.hdrIdn);\r\n\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n this.show = false;\r\n\r\n // this.spinnerService.hide();\r\n }, error => {\r\n this.show = false;\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n } else {\r\n this.ngOnInit();\r\n // this.flashMessagesService.show(massage, { cssClass: 'alert-danger', timeout: 4000 });\r\n }\r\n console.log(\"mappSheetData\", JSON.stringify(this.mappSheetData));\r\n console.log(\"this.sheetData\", JSON.stringify(this.sheetData));\r\n }\r\n\r\n changeMapping(hdrObj, hdr, attr) {\r\n this.headerAttributeDtl[hdr].ignore = 'Y';\r\n this.headerAttributeDtl[hdr].attr = '';\r\n this.removeAttrOptVal(attr, hdr);\r\n }\r\n\r\n\r\n removeAttrOptVal(attr, optionaVal) {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['attr'] = attr;\r\n reqObj['optionaVal'] = optionaVal;\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'removeAttrOptVal';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n\r\n removeDetailAttrOptVal(attrIdn, optionaVal, val, hdrAttr) {\r\n this.rowdatamapDetails[hdrAttr][optionaVal].val = '';\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['attrVal'] = val;\r\n reqObj['optionaVal'] = optionaVal;\r\n reqObj['attr_idn'] = attrIdn;\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'removeAttrOptVal';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n sttsFile = {}\r\n getProgressFile(fileLogIdn) {\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['file_log_idn'] = fileLogIdn;//this.fileLogIdn;\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'getFileLogStatus';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.clicked = true;\r\n let result = response.result || {};\r\n console.log(result);\r\n this.sttsFile['C'] = result['C'];\r\n this.sttsFile['P'] = result['P'];\r\n this.sttsFile['E'] = result['E'];\r\n this.sttsFile['T'] = result['T'];\r\n this.sttsFile['I'] = result['I'];\r\n this.step = 4;\r\n this.totProgressFile = Math.ceil(parseFloat(result['C']) * 100 / parseFloat(result['T']));\r\n this.recallFile(fileLogIdn);\r\n console.log(this.totProgress);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n // checkUploadStt() {\r\n // this.spinnerService.show();\r\n // let reqObj = {};\r\n // reqObj['formNme'] = this.route.snapshot.params['frmname'];\r\n // reqObj['file_log_idn'] = this.fileLogIdn;\r\n // console.log(JSON.stringify(reqObj));\r\n // this.us.data(reqObj, 'getFileLogStatus', 'fileUpload/load').subscribe(response => {\r\n // if (response.status == 'SUCCESS') {\r\n // this.clicked = true;\r\n // let result = response.result || {};\r\n // console.log(result);\r\n // this.stts['C'] = result['C'];\r\n // this.stts['P'] = result['P'];\r\n // this.stts['E'] = result['E'];\r\n // this.stts['T'] = result['T'];\r\n // this.step = 4;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n // }\r\n // this.spinnerService.hide();\r\n // }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n // });\r\n\r\n // }\r\n\r\n stts = {};\r\n clicked = false;\r\n totProgress = 0;\r\n totProgressFile = 0;\r\n getProgressPrice(hdrIdn) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUpload';\r\n reqObj['seqNo'] = hdrIdn;//\"846\";//this.fileLogIdn;\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'getPriceStatus';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.clicked = true;\r\n let result = response.result || {};\r\n console.log(result);\r\n this.stts['C'] = result['C'];\r\n this.stts['P'] = result['P'];\r\n this.stts['E'] = result['E'];\r\n this.stts['T'] = result['T'];\r\n this.step = 4;\r\n this.totProgress = Math.ceil(parseFloat(result['C']) * 100 / parseFloat(result['T']));\r\n this.recall(this.hdrIdn);\r\n console.log(this.totProgress);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n lastRefreshTimeFile = null;\r\n recallFile(fileLogIdn) {\r\n\r\n if (this.totProgressFile < 100) {\r\n this.lastRefreshTimeFile = new Date();\r\n this.timerfile =\r\n setTimeout(() => {\r\n this.getProgressFile(fileLogIdn);\r\n }, 5000);\r\n }\r\n else {\r\n clearTimeout(this.timerfile);\r\n // this.PlanningComponent.getPacketsByHeaderId(hdrIdn);\r\n // this.closebtn.nativeElement.click();\r\n if (this.totProgressFile == 100 && this.totProgress == 100) {\r\n document.getElementById('btnfileUploadModal').click();\r\n\r\n this.router.navigate(['/pricing/rough/planingscreen/roughPlaningScreen'], { queryParams: { hdrId: this.hdrIdn } });\r\n }\r\n\r\n }\r\n }\r\n lastRefreshTime = null;\r\n recall(hdrIdn) {\r\n if (this.totProgress < 100) {\r\n this.lastRefreshTime = new Date();\r\n this.timerPrice =\r\n setTimeout(() => {\r\n this.getProgressPrice(hdrIdn);\r\n }, 5000);\r\n }\r\n\r\n else {\r\n clearTimeout(this.timerPrice);\r\n if (this.totProgressFile == 100 && this.totProgress == 100) {\r\n document.getElementById('btnfileUploadModal').click();\r\n this.router.navigate(['/pricing/rough/planingscreen/roughPlaningScreen'], { queryParams: { hdrId: this.hdrIdn } });\r\n }\r\n }\r\n }\r\n SkipVerification() {\r\n debugger\r\n this.mappingskip = true;\r\n this.addFileLog(this.fileType);\r\n\r\n }\r\n SkipVerificationDtl() {\r\n this.mappingskip = true;\r\n this.step = 4;\r\n this.uploadFile();\r\n }\r\n\r\n loadFileTypeData(fileUpload, mdl) {\r\n this.sheetData = [];\r\n this.headerAttributeDtl = {};\r\n this.defultDisplayLen = 5;\r\n this.defultDisplayObj = [];\r\n this.attrStructureDtl = [];\r\n this.headerList = [];\r\n this.headerprp;\r\n this.attrprp;\r\n this.totalmatch = 0;\r\n this.totalignore = 0;\r\n this.pageDefination = {};\r\n this.rowdatamapDetails = {};\r\n this.rowdistinctDataMap = {};\r\n this.charHeaderList = [];\r\n this.attributeDtlMap = {};\r\n this.mappSheetData = [];\r\n this.statusList = [];\r\n this.fileDetails = [];\r\n this.fileTypeList = [];\r\n this.fileOptionsList = [];\r\n this.fileType;\r\n this.nme;\r\n this.typ;\r\n this.description;\r\n this.check_status = [];\r\n this.pkt_status = [];\r\n this.colFormate = [];\r\n this.allcols = [];\r\n this.fileLogIdn = 0;\r\n this.show = false;\r\n this.stepMsg = '';\r\n this.stts = {};\r\n this.clicked = false;\r\n this.totProgress = 0;\r\n this.totProgressFile = 0;\r\n this.step = 1;\r\n this.lable = \"\";\r\n this.filenme = \"\";\r\n let reqObj = {};\r\n this.dateFormatMap = {};\r\n let filetype = this.route.snapshot.params['filetype'] || '';\r\n this.mdl = mdl;\r\n this.filenme = this.route.snapshot.params['filetype'] || '';\r\n this.mappingskip = false;\r\n reqObj['formNme'] = fileUpload;\r\n if (mdl != '')\r\n reqObj['mdl'] = mdl;\r\n if (filetype != '')\r\n reqObj['filenme'] = filetype;\r\n console.log(JSON.stringify(this.header));\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = 'loadFileUpload';\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n debugger;\r\n let result = response.result || {};\r\n this.pageDefination = result.pageDefination\r\n this.statusList = result.statusList;\r\n this.fileDetails = result.fileDetails;\r\n this.fileTypeList = result.fileTypeList;\r\n this.fileOptionsList = result.fileOptionsList || [];\r\n if (this.fileOptionsList.length > 0)\r\n this.fileType = this.fileOptionsList[0].k;\r\n let addlAttr = this.fileOptionsList[0].addl_attr || {};\r\n this.dateFormat = addlAttr.dateformat || 'dd/mm/yy';\r\n this.delim = addlAttr.delim || '/';\r\n this.statusList = result.statusList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n let cUrl = this.router.url;\r\n this.cDt = new Date();\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'loginid': Cookie.get('_logid'),\r\n 'modulekey': mdlk[cUrl.split('/')[1]],\r\n 'source': 'qs'\r\n };\r\n\r\n\r\n this.route.params.subscribe((params: Params) => {\r\n let mdl = this.route.snapshot.params['grp'] || '';\r\n\r\n this.loadFileTypeData('fileUpload', mdl);\r\n });\r\n }\r\n inward_idn;\r\n inwardStockType;\r\n stockInwardUpload(inwardDtl, mdl) {\r\n this.inward_idn = inwardDtl.inward_idn;\r\n this.inwardStockType = inwardDtl.stock_type;\r\n this.mdl = mdl;\r\n this.loadFileTypeData('fileUpload', mdl);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.timerfile != undefined)\r\n clearTimeout(this.timerfile);\r\n\r\n if (this.timerPrice != undefined)\r\n clearTimeout(this.timerPrice);\r\n\r\n }\r\n\r\n setOptionsForMixToSingle() {\r\n this.fileOptionsList = [\r\n { \"k\": \"696\", \"v\": \"Marketing Stock\" }\r\n ];\r\n this.fileType = \"696\";\r\n }\r\n\r\n\r\n}","<div class=\"mt\" style=\"background: #fff;\">\r\n\r\n <div class=\"content-frame\">\r\n <p *ngIf=\"show\" class=\"loading-text\" style=\"z-index: 9999\"> {{stepMsg}} </p>\r\n\r\n <div class=\"innerD\">\r\n <div class=\"mt-element-step\">\r\n <div class=\"row step-thin\">\r\n\r\n <div class=\"col-md-2 bg-grey mt-step-col\" [ngClass]=\"{'done':step==1 ? 'done':''}\"\r\n (click)=setSetp(1)>\r\n <div class=\"mt-step-number bg-white font-grey\">1</div>\r\n <div class=\"mt-step-title uppercase font-grey-cascade\">Browse</div>\r\n </div>\r\n <div class=\"col-md-4 bg-grey mt-step-col\" [ngClass]=\"{'done':step==2 ? 'done':''}\"\r\n (click)=setSetp(2)>\r\n <div class=\"mt-step-number bg-white font-grey\">2</div>\r\n <div class=\"mt-step-title uppercase font-grey-cascade\">Header Verification</div>\r\n </div>\r\n <div class=\"col-md-3 bg-grey mt-step-col\" [ngClass]=\"{'done':step==3 ? 'done':''}\"\r\n (click)=setSetp(3)>\r\n <div class=\"mt-step-number bg-white font-grey\">3</div>\r\n <div class=\"mt-step-title uppercase font-grey-cascade\">Data Verification</div>\r\n </div>\r\n\r\n <div class=\"col-md-3 bg-grey mt-step-col\" [ngClass]=\"{'done':step==4 ? 'done':''}\"\r\n (click)=setSetp(4)>\r\n <div class=\"mt-step-number bg-white font-grey\">4</div>\r\n <div class=\"mt-step-title uppercase font-grey-cascade\">Uploading..</div>\r\n </div>\r\n </div>\r\n <div class=\"row upload\" *ngIf=\"step==1\">\r\n\r\n\r\n <div class=\"col-md-offset-3 col-md-3\" style=\"margin-top: 15px;\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-4 control-label\" style=\"padding: 5px;\">File Type :</label>\r\n <div class=\"col-md-8\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"fileType\" [(ngModel)]=\"fileType\">\r\n <option value=\"\">--select--</option>\r\n <option *ngFor=\"let file of fileOptionsList\" value=\"{{file?.k}}\">{{file?.v}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"col-md-2\">\r\n <a class=\"fileinput-wrapper btn btn-default fileinput btn-primary\"\r\n style=\"background: #3a5898\"><span>Browse file</span>\r\n <input type=\"file\" class=\"fileinput btn-primary\" name=\"filename\" id=\"filename\"\r\n title=\"Browse file\" accept=\".xlsx,.csv\" (change)=\"incomingfile($event)\"\r\n style=\"left: -163.75px; top: 9px;\"></a>\r\n\r\n </div>\r\n\r\n <!-- <label class=\"control-label\">Upload File : </label>\r\n\r\n <input type=\"file\" class=\"fileinput btn-primary\" accept=\".xlsx,.csv\" name=\"filename\" id=\"filename\"\r\n (change)=\"incomingfile($event)\" title=\"Browse file\"> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row upload\" *ngIf=\"step==2\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1\">\r\n Total Match : {{totalmatch}}\r\n </div>\r\n <div class=\"col-md-1\">\r\n Total Ignore : {{totalignore}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"row col-md-12\" style=\"overflow: auto;width: 100%;\">\r\n <table class=\"fileuploadview\">\r\n <tr>\r\n <ng-container *ngFor=\"let hdr of headerList ;\">\r\n <th [ngClass]=\"{\r\n 'match':headerAttributeDtl[hdr].attr!='' && headerAttributeDtl[hdr].ignore!='Y',\r\n 'ignore':headerAttributeDtl[hdr].ignore=='Y',\r\n 'thbg':headerAttributeDtl[hdr].attr=='' && headerAttributeDtl[hdr].ignore!='Y'\r\n }\" (click)=\"updatecolumnstatue(hdr)\">{{hdr}}\r\n </th>\r\n </ng-container>\r\n </tr>\r\n <tr>\r\n <ng-container *ngFor=\"let hdr of headerList ;\">\r\n <th>\r\n <ng-container *ngIf=\"headerAttributeDtl[hdr].attr==''\">\r\n <!-- <select class=\"select-control\" name=\"{{headerAttributeDtl[hdr].attr}}\"\r\n [(ngModel)]=\"headerAttributeDtl[hdr].attr\"\r\n (change)=\"confirmsetHeaderMapp(hdr,$event.target)\"> -->\r\n <select class=\"select-control\" name=\"{{headerAttributeDtl[hdr].attr}}\"\r\n [(ngModel)]=\"headerAttributeDtl[hdr].attr\"\r\n (change)=\"confirmsetHeaderMapp(hdr)\">\r\n <option value=\"\">--select--</option>\r\n <option *ngFor=\"let attrDtl of attrStructureDtl\"\r\n value=\"{{attrDtl?.attr}}\">{{attrDtl?.attr}}</option>\r\n </select>\r\n </ng-container>\r\n <ng-container *ngIf=\"headerAttributeDtl[hdr].attr!=''\">\r\n {{headerAttributeDtl[hdr].attr}}\r\n \r\n </ng-container>\r\n\r\n </th>\r\n </ng-container>\r\n </tr>\r\n <tr>\r\n <ng-container *ngFor=\"let hdr of headerList ;\">\r\n <th>\r\n <ng-container *ngIf=\"headerAttributeDtl[hdr].dta_typ=='d'\">\r\n <select class=\"select-control\" name=\"{{dateFormatMap[hdr]}}\"\r\n [(ngModel)]=\"dateFormatMap[hdr]\"\r\n >\r\n <option *ngFor=\"let dteFmt of dateFormatList\"\r\n value=\"{{dteFmt?.k}}\">{{dteFmt?.v}}</option>\r\n </select>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n </tr> \r\n <tr *ngFor=\"let rowDis of defultDisplayObj ;\">\r\n <td *ngFor=\"let hdr of headerList ;\">\r\n {{rowDis[hdr]}}\r\n </td>\r\n\r\n </tr>\r\n\r\n </table>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-offset-11 col-md-1\">\r\n <button type=\"button\" *ngIf=\"fileLogIdn==0 && filenme=='generic'\" class=\"btn btn-success pull-right\"\r\n style=\"margin: 5px\" (click)=\"SkipVerification()\">Skip</button>\r\n \r\n <button type=\"button\" *ngIf=\"fileLogIdn==0\" class=\"btn btn-success pull-right\"\r\n style=\"margin: 5px\" (click)=\"ValidateFileHeaderMapping('Y')\">Verify</button>\r\n\r\n \r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row upload \" *ngIf=\"step==3\">\r\n <div class=\"row table-responsive col-md-12\">\r\n <table cellspacing=\"10\" class=\"displayTable fileuploadview\">\r\n <ng-container *ngFor=\"let hdr of charHeaderList ;let j=index;\">\r\n\r\n <tr>\r\n <th style=\"color:white;border: 1px solid white\">\r\n {{hdr}}({{headerAttributeDtl[hdr].attr}})</th>\r\n <td [ngClass]=\"{'even':j%2==0,'odd':j%2==1}\">\r\n <div class=\"row\" style=\"display: flex;\">\r\n <ng-container\r\n *ngFor=\"let attrVal of rowdistinctDataMap[headerAttributeDtl[hdr].attr];\">\r\n <div style=\"width:160px;margin-right: 1px\"\r\n [ngClass]=\"{'matchedUl':rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val !=''}\">\r\n <ul style=\"list-style: none;text-align:left\">\r\n <li> {{attrVal}} </li>\r\n <li>\r\n <select\r\n *ngIf=\"rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val==''\"\r\n class=\"select-control\"\r\n name=\"{{rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val}}\"\r\n [(ngModel)]=\"rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val\"\r\n (change)=\"confirmHeaderDetailsMapp(headerAttributeDtl[hdr].attr,headerAttributeDtl[hdr].attr_idn,attrVal)\">\r\n <option value=\"\">--select--</option>\r\n <option\r\n *ngFor=\"let attrdtlmap of attributeDtlMap[headerAttributeDtl[hdr].attr]\"\r\n value=\"{{attrdtlmap?.val}}\">{{attrdtlmap?.val}}\r\n </option>\r\n </select>\r\n\r\n <span\r\n *ngIf=\"rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val!=''\">\r\n {{rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val}} \r\n <i (click)=\"removeDetailAttrOptVal(headerAttributeDtl[hdr].attr_idn,attrVal,rowdatamapDetails[headerAttributeDtl[hdr].attr][attrVal].val,[headerAttributeDtl[hdr].attr])\" class=\"fa fa-times\" aria-hidden=\"true\" style=\"color: red;cursor: pointer;\"></i>\r\n </span>\r\n \r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-offset-11 col-md-1\">\r\n <button type=\"button\" *ngIf=\"fileLogIdn==0 && filenme=='generic'\" class=\"btn btn-success pull-right\"\r\n style=\"margin: 5px\" (click)=\"SkipVerificationDtl()\">Skip</button>\r\n \r\n <button type=\"button\" class=\"btn btn-success pull-right\" style=\"margin: 5px\"\r\n (click)=\"uploadFile()\" [disabled]=\"gmatchedCount!=gresultCount\">Upload</button>\r\n \r\n \r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row upload\" *ngIf=\"step==4\">\r\n\r\n <div class=\"row\">\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n\r\n <p *ngIf=\"step==4\" style=\"margin-left: 15px;color:green;font-size: 20px;text-align: left\">\r\n {{lableFile}}\r\n <span style=\"font-size: 14px;\" *ngIf=\"lastRefreshTimeFile != null\">Last\r\n refresh time :\r\n ({{lastRefreshTimeFile | date:'medium'}})</span>\r\n </p>\r\n\r\n <div class=\"progress\" style=\"margin: 15px;\">\r\n <div class=\"progress-bar progress-bar-warning\" role=\"progressbar\" aria-valuenow=\"60\"\r\n aria-valuemin=\"0\" aria-valuemax=\"100\" [ngStyle]=\"{'width':totProgressFile+'%'} \">\r\n {{totProgressFile}} %\r\n </div>\r\n </div>\r\n\r\n <p *ngIf=\"step==4 && clicked\" style=\"margin-top: 35px;\"><strong> Complete :{{sttsFile['C']}}\r\n Pending : {{sttsFile['P']}} Error :\r\n {{sttsFile['E']}} Invaild Status :\r\n {{sttsFile['I']}}\r\n Total : {{sttsFile['T']}}</strong></p>\r\n\r\n\r\n <p *ngIf=\"step==4\"\r\n style=\"margin-left: 15px;color:green;font-size: 20px;margin-top: 15px;text-align: left\">\r\n {{lable}}\r\n <span style=\"font-size: 12px;margin-left: 20px;color: black;\"\r\n *ngIf=\"lastRefreshTime != null\">Last\r\n refresh time :\r\n ({{lastRefreshTime | date:'medium'}})</span>\r\n </p>\r\n\r\n <div class=\"progress\" style=\"margin: 15px;\">\r\n <div class=\"progress-bar progress-bar-warning\" role=\"progressbar\" aria-valuenow=\"60\"\r\n aria-valuemin=\"0\" aria-valuemax=\"100\" [ngStyle]=\"{'width':totProgress+'%'} \">\r\n {{totProgress}} %\r\n </div>\r\n </div>\r\n\r\n <!-- <button type=\"button\" class=\"btn btn-success text-center\" style=\"margin: 5px\"\r\n (click)=\"checkUploadStt()\">Check\r\n Status</button> -->\r\n\r\n <p *ngIf=\"step==4 && clicked\" style=\"margin-top: 35px;\"><strong> Complete :{{stts['C']}}\r\n Pending : {{stts['P']}} Error : {{stts['E']}}\r\n Total : {{stts['T']}}</strong></p>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n<div class=\"modal\" id=\"fileUploadModal\" tabindex=\"-1\" style=\"z-index: 999999\" role=\"dialog\"\r\n aria-labelledby=\"smallModalHead\" aria-hidden=\"true\" data-backdrop=\"static\" data-keyboard=\"true\">\r\n <div class=\"modal-dialog \">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" #fileUploadclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Add file upload option</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-12\">\r\n <form class=\"form-horizontal\" role=\"form\" #f=\"ngForm\" (ngSubmit)=\"onSubmit(f)\" name=\"appForm\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <label class=\"col-md-3 control-label\">Name\r\n </label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"nme\" name=\"nme\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <label class=\"col-md-3 control-label\">Description\r\n </label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"description\"\r\n name=\"description\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <label class=\"col-md-3 control-label\">Type\r\n </label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"typ\" [(ngModel)]=\"typ\">\r\n <option value=\"\">--select--</option>\r\n <option *ngFor=\"let file of fileTypeList\" value=\"{{file?.k}}\">\r\n {{file?.v}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <label class=\"col-md-3 control-label\">Check status\r\n </label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <ng-select placeholder=\"Select Status\" [options]=\"statusList\"\r\n [(ngModel)]=\"check_status\" name=\"check_status\" [multiple]=\"true\"\r\n [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <label class=\"col-md-3 control-label\">Packet status\r\n </label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <ng-select placeholder=\"Select Status\" [options]=\"statusList\"\r\n [(ngModel)]=\"pkt_status\" name=\"pkt_status\" [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\" #fileUploadclsbtn>Close</button>\r\n <button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\" appAppNoDblClick\r\n (click)=\"onSubmit(f)\">Save</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" id=\"Cofirmmaphdr\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" (click)=\"CancelHeaderMapp()\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\" >Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Alert</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n Are you sure For Mapping <b>{{maphdr}}</b> To Attribute <b>{{hdrmassage}}</b> \r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" (click)=\"CancelHeaderMapp()\" data-dismiss=\"modal\" >Close</button>\r\n <button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\" (click)=\"setHeaderMapp();\">Confirm</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"Cofirmmapdtl\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" (click)=\"CancelHeaderMapp()\" class=\"close\" data-dismiss=\"modal\" >\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\" >Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Alert</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n Are you sure For Mapping <b>{{dtloptionval}}</b> To Attribute <b> {{dtlAttr}} </b> with AttributeDetail <b>{{dtlmassage}}</b> \r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\" (click)=\"CancelHeaderDetailsMapp()\">Close</button>\r\n <button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\" (click)=\"setHeaderDetailsMapp()\">Confirm</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n<button id=\"btnfileUploadModal\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#fileUploadModal\"></button>\r\n\r\n<button id=\"btnCofirmmaphdr\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#Cofirmmaphdr\"></button>\r\n<button id=\"btnCofirmmapdtl\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#Cofirmmapdtl\"></button>\r\n\r\n\r\n\r\n<!-- <div class=\"centered\">\r\n <div id=\"divSpinner\" class=\"spinner loading\">\r\n <div class=\"loading-text\">Loading ...</div>\r\n </div>\r\n\r\n <button (click)=\"test()\" id=\"btnLoadRecords\" style=\"cursor:pointer;position: absolute; top: 52%; left: 45%;\">Load Records</button>\r\n </div> -->","import { Injectable } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { GlobleEnvService } from './globle-env.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UploadServiceService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private glbEnv: GlobleEnvService,\r\n // private _spinnerService: Ng4LoadingSpinnerService,\r\n // private _flashMessagesService: FlashMessagesService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n\r\n private header: any = {};\r\n\r\n data(reqObj, method, url): Observable<any> {\r\n // this._spinnerService.show();\r\n if (localStorage.getItem('mdlKey') != null) {\r\n let cUrl = this.router.url;\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs',\r\n 'method': method\r\n };\r\n }\r\n // let options: any = new RequestOptions({ headers: this.header });\r\n // let options: any = new HttpHeaders({ headers: this.header });\r\n // return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n // .map((res: any) => res)\r\n // .pipe(catchError((error) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // return throwError(error);\r\n // }));\r\n let options: any = new HttpHeaders({ headers: this.header });\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options)\r\n .pipe(map((res: any) => res))\r\n .pipe(catchError((error) => {\r\n // this._spinnerService.hide();\r\n // this._flashMessagesService.show(error.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Input } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute, Params, NavigationEnd } from '@angular/router';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { FileuploadComponent } from '../file-upload/fileupload.component';\r\nimport { StockServiceService } from '../stock-service/stock-service.service';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { UploadServiceService } from '../globle/upload-service.service';\r\n\r\n@Component({\r\n selector: 'app-file-upload-log',\r\n templateUrl: './file-upload-log.component.html',\r\n styleUrls: ['./file-upload-log.component.css']\r\n})\r\nexport class FileUploadLogComponent implements OnInit {\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n private ss: StockServiceService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private cs: CommanServiceService,\r\n private PS: UploadServiceService\r\n ) { }\r\n\r\n cDt;\r\n cUrl;\r\n header;\r\n\r\n isOpen = true;\r\n icon = 'fa fa-dedent';\r\n showarr;\r\n order = '';\r\n reverse = true;\r\n pageSize = 10;\r\n p = 1;\r\n pokey = '';\r\n searchF;\r\n noData = true;\r\n clicked = false;\r\n curIndx;\r\n frmDate;\r\n toDate;\r\n seq;\r\n type;\r\n title;\r\n fileList = [];\r\n fileLogList = [];\r\n defultestatusList = [];\r\n attrDtl = [];\r\n attrDisplayDtl = {};\r\n pktDetails = [];\r\n setOrder(value: string, i) {\r\n this.showarr = i;\r\n if (this.order === value) {\r\n this.reverse = !this.reverse;\r\n }\r\n this.order = value;\r\n }\r\n exportToCSV() {\r\n let modifiedObjArr = this.cs.modifyDataByHeader(this.pktDetails, this.attrDtl, this.attrDisplayDtl);\r\n this.cs.CSVConvertor(modifiedObjArr, \"Packet_List\", true)\r\n }\r\n openTog() {\r\n this.isOpen = !this.isOpen;\r\n if (this.isOpen == true) {\r\n this.icon = 'fa fa-dedent';\r\n } else {\r\n this.icon = 'fa fa-indent';\r\n }\r\n }\r\n loadformFields() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUploadLogForm';\r\n reqObj['mdlList'] = ['lab','inward','rep'];\r\n this.header['method'] = 'loadFileLog';\r\n console.log( this.header);\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result || {};\r\n this.fileList = result.fileList;\r\n this.fileList = result.fileList.map(element => ({\r\n itemName: element.v,\r\n id: element.k\r\n }));\r\n this.defultestatusList = [...this.fileList];\r\n }\r\n else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n loadFileLog() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUploadLogForm';\r\n reqObj['logDteFrom'] = this.cs.ddMMYYYY(this.frmDate);\r\n reqObj['logDteTo'] = this.cs.ddMMYYYY(this.toDate);\r\n reqObj['fileIdnList'] = this.defultestatusList.map(x => x.id.toString());\r\n reqObj['seqNo']=this.seq;\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = \"getFileLogDtl\";\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result || {};\r\n console.log(result);\r\n this.fileLogList = result.fileLogList;\r\n // this.spinnerService.hide();\r\n this.noData = false;\r\n this.isOpen = false;\r\n document.getElementById(\"wrap\").addEventListener(\"scroll\", function () {\r\n var translate = \"translate(0,\" + this.scrollTop + \"px)\";\r\n this.querySelector(\"thead\").style.transform = translate;\r\n });\r\n }\r\n else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n getfileUploadPacketInfo(seqIdn, stt,index) {\r\n this.clicked = true;\r\n this.curIndx = index;\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'fileUploadLogForm';\r\n reqObj['seqNo'] = seqIdn;\r\n reqObj['fileStatus'] = stt;\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = \"getfileUploadPacketInfo\";\r\n this.cs.loadiFile(reqObj, this.header, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result || {};\r\n this.attrDtl = result.attrDtl;\r\n this.attrDisplayDtl = result.attrDisplayDtl;\r\n this.pktDetails = result.pktDetails;\r\n // this.spinnerService.hide();\r\n }\r\n else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n // this.spinnerService.hide();\r\n }, error => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(error, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n this.cUrl = this.router.url;\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'loginid': Cookie.get('_logid'),\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'source': 'qs'\r\n };\r\n this.loadformFields();\r\n this.cDt = new Date();\r\n this.frmDate = this.cs.formatDateSC(this.cDt);\r\n this.toDate = this.cs.formatDateSC(this.cDt);\r\n }\r\n}\r\n","<div class=\"mt\" style=\"background: #fff;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">File Upload Log\r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"innerD\">\r\n <div class=\"row\" style=\"padding: 10px;\">\r\n <form class=\"form-inline\" #f=\"ngForm\" name=\"appForm\">\r\n <div [ngClass]=\"isOpen == true ? 'col-md-4' : 'hidden'\">\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">File Type</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <!-- <select class=\"form-control\" name=\"type\" [(ngModel)]=\"type\">\r\n <option *ngFor=\"let lov of fileList\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select> -->\r\n\r\n <angular2-multiselect [data]=\"fileList\" name=\"defultestatusList\" [(ngModel)]=\"defultestatusList\">\r\n </angular2-multiselect>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">From Date</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <input name=\"frmDate\" [(ngModel)]=\"frmDate\" type=\"date\" class=\"form-control\"\r\n placeholder=\"dd/mm/yyyy\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">To Date</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <input name=\"toDate\" [(ngModel)]=\"toDate\" type=\"date\" class=\"form-control\"\r\n placeholder=\"dd/mm/yyyy\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"col-md-12\">\r\n <p><b>------------------------------------- OR ---------------------------------------</b></p>\r\n </div>\r\n\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-2 control-label\" style=\"padding-left: 2px;\">Seq No.</label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <input name=\"seq\" [(ngModel)]=\"seq\" type=\"text\" class=\"form-control\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button type=\"button\" style=\"margin-left: 5px;\" class=\"btn btn-success cBtn pull-left\" appAppNoDblClick\r\n (click)=\"loadFileLog()\">Fetch</button>\r\n </div>\r\n </form>\r\n\r\n <div [ngClass]=\"isOpen == false ? 'col-md-12 custCls' : 'col-md-8 custCls'\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n </form>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Filter results\" (click)=\"openTog();\">\r\n <span class=\"{{icon}}\" style=\"color:#3b5998;\"></span>\r\n </button>\r\n\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Refresh\" (click)=\"loadFileLog();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"!noData\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\" id=\"wrap\">\r\n <table class=\"displayTable\" *ngIf=\"!noData\">\r\n <thead>\r\n <th (click)=\"setOrder('fileLogIdn',0)\">FileLog Id\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 0\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 0\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th (click)=\"setOrder('nme',1)\">Name\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 1\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 1\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th (click)=\"setOrder('user',2)\">User\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 2\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 2\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th (click)=\"setOrder('logDate',3)\">Log Date\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 3\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 3\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th (click)=\"setOrder('NF',4)\"> Not Found\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 4\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 4\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n\r\n <th (click)=\"setOrder('I',5)\"> Invaild Status\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 5\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 5\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n\r\n <th (click)=\"setOrder('TNF',6)\"> Tr.Id Not Found\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 6\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 6\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n\r\n <th (click)=\"setOrder('TI',7)\"> Tr. Stt Invaild\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 7\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 7\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th (click)=\"setOrder('E',8)\"> Error\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 8\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 8\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th (click)=\"setOrder('C',9)\"> Complete\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === 9\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === 9\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n </thead>\r\n <tbody>\r\n <ng-container\r\n *ngFor=\"let filelog of fileLogList | tableSearch:searchF | orderBy: order:reverse;let j = index;\">\r\n <tr [ngClass]=\" {'even':j%2==0,'odd':j%2==1}\">\r\n <td>{{filelog.fileLogIdn}}</td>\r\n <td>{{filelog.nme}}</td>\r\n <td>{{filelog.user}}</td>\r\n <td>{{filelog.logDate}}</td>\r\n <td><b><a href=\"javascript:void()\"\r\n (click)=\"getfileUploadPacketInfo(filelog.fileLogIdn,'NF',j)\">{{filelog.NF||''}}</a></b></td>\r\n <td><b><a href=\"javascript:void()\"\r\n (click)=\"getfileUploadPacketInfo(filelog.fileLogIdn,'I',j)\">{{filelog.I||''}}</a></b></td>\r\n <td><b><a href=\"javascript:void()\"\r\n (click)=\"getfileUploadPacketInfo(filelog.fileLogIdn,'TNF',j)\">{{filelog.TNF||''}}</a></b></td>\r\n <td><b><a href=\"javascript:void()\"\r\n (click)=\"getfileUploadPacketInfo(filelog.fileLogIdn,'TI',j)\">{{filelog.TI||''}}</a></b></td>\r\n <td><b><a href=\"javascript:void()\"\r\n (click)=\"getfileUploadPacketInfo(filelog.fileLogIdn,'E',j)\">{{filelog.E||''}}</a></b></td>\r\n \r\n <td><b><a href=\"javascript:void()\"\r\n (click)=\"getfileUploadPacketInfo(filelog.fileLogIdn,'C',j)\">{{filelog.C||''}}</a></b></td>\r\n </tr>\r\n\r\n\r\n <tr *ngIf=\" clicked === true && curIndx==j\">\r\n <td [attr.colspan]=\"10\">\r\n\r\n <span appAppNoDblClick (click)=\"exportToCSV()\"\r\n style=\"margin-left: 20px; font-size: 20px; padding: 3px;\"><i class=\"fa fa-file-excel-o\"\r\n style=\"color:green;cursor: pointer;\" title=\"Download Excel\"></i></span>\r\n </td>\r\n </tr>\r\n\r\n\r\n <tr *ngIf=\"clicked === true && curIndx==j\">\r\n <td [attr.colspan]=\"9\">\r\n <table class=\"DisplayTable\" style=\" width: 100%;\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <ng-container *ngFor=\"let hdr of attrDtl;let j=index;\">\r\n <th style=\" background-color: darkgray\">\r\n {{attrDisplayDtl[hdr]}}\r\n <!-- (click)=\"setOrder(hdr,j)\" <span [hidden]=\"reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span> -->\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody style=\"height:400px;overflow:auto;\">\r\n <tr\r\n *ngFor=\"let ofd of pktDetails | tableSearch:searchF | orderBy: order:reverse; let ofi = index;\"\r\n [ngClass]=\"{'even':ofi%2==0,'odd':ofi%2==1}\">\r\n <ng-container *ngFor=\"let att of attrDtl; let j = index;\">\r\n <!-- (click)=\"selectRow(ofd.stock_idn)\" -->\r\n <td><span>{{ofd[att]}}</span></td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n <p *ngIf=\"noData\" style=\"text-align: center\"><b> No Data Found !</b></p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"actionFooter\">\r\n <ng-container *ngFor=\"let btn of buttons\">\r\n <ng-container *ngIf=\"btn.form_field== 'repricemkt' || btn.form_field== 'repricemfg'\">\r\n <button type=\"submit\" style=\"margin-left: 5px;\" data-toggle=\"modal\" data-target=\"#repriceConfirmMdl\"\r\n class=\"btn btn-success cBtn pull-left\" appAppNoDblClick (click)=\"onSubmit(f,btn.form_field)\">{{btn.form_field_title\r\n }}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"btn.form_field != 'repricemkt' && btn.form_field != 'repricemfg'\">\r\n <button type=\"submit\" style=\"margin-left: 5px;\" class=\"btn btn-success cBtn pull-left\" appAppNoDblClick\r\n (click)=\"getHistory(f.value)\">{{btn.form_field_title\r\n }}</button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div> -->\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { GlobleEnvService } from '../../globle/globle-env.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SystemServiceService {\r\n\r\n constructor(\r\n private http: HttpClient,/* */\r\n public glbEnv: GlobleEnvService,\r\n ) { }\r\n\r\n async getData(reqObj, headers) {\r\n return await this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n getFormF(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n getDatas(reqObj, headers,url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n getRowGroup(reqObj, headers,url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n subFgetData(reqObj, headers,url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n addData(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n getEditD(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n deleteData(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n logout(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'login/authentications', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n loadModuleList(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/loadMenu', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n validate(reqObj, headers, url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n Save(reqObj, headers, url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n getCookies() {\r\n return Cookie.get('_logid');\r\n }\r\n\r\n \r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'searchPipe'\r\n})\r\nexport class SearchPipePipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n if (!value) { return null; }\r\n if (!args) { return value; }\r\n args = args.toLowerCase();\r\n return value.filter(function (item) {\r\n // console.log(item.v);\r\n return JSON.stringify(item).toLowerCase().includes(args);\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute, Params, NavigationEnd } from '@angular/router';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { SystemServiceService } from '../system-service/system-service.service';\r\nimport { CommanServiceService } from '../../comman-service/comman-service.service';\r\n\r\n@Component({\r\n selector: 'app-system',\r\n templateUrl: './system.component.html',\r\n styleUrls: ['./system.component.css']\r\n})\r\n\r\nexport class SystemComponent implements OnInit {\r\n // items = ['Pizza', 'Pasta', 'Parmesan'];\r\n\r\n @ViewChild('closebtn') closebtn: ElementRef;\r\n @ViewChild('deleteclsbtn') deleteclsbtn: ElementRef;\r\n @ViewChild('inputs') input: ElementRef;\r\n @ViewChild('popclosebtn') popclosebtn: ElementRef;\r\n @ViewChild('submitBtn') submitbtn: ElementRef;\r\n @ViewChild('productMapclsbtn') productMapclsbtn: ElementRef;\r\n cDt = new Date();\r\n\r\n formFilds = [];\r\n formFildsPopup = [];\r\n datalist = [];\r\n actions = [];\r\n lovs = [];\r\n addNew: any = [];\r\n tblH = [];\r\n tblDesc = [];\r\n navigation = [];\r\n Sysresult = [];\r\n data;\r\n\r\n whereMap = {};\r\n paraObj = {};\r\n currObj = {};\r\n sqlArray = {};\r\n glbObj = {}\r\n\r\n pageSize = 10;\r\n cLink = 0;\r\n p = 1;\r\n\r\n eveC = 'fa-eye-slash';\r\n inputtype = 'password';\r\n order = '';\r\n\r\n reverse = false;\r\n subform = false;\r\n estst = false;\r\n\r\n showarr;\r\n pageInfo;\r\n popuppageInfo;\r\n header;\r\n btnName;\r\n pid;\r\n searchF;\r\n whrK;\r\n whrV;\r\n subFrmWk;\r\n subFrmWv;\r\n navform;\r\n onErr;\r\n hoveredI;\r\n tbCell;\r\n title\r\n pkf;\r\n curl;\r\n uiGrpList;\r\n uiGrpListDtl;\r\n dataDtl\r\n addFrmNme;\r\n coidn;\r\n currstat;\r\n cUrl;\r\n action;\r\n attrDtl;\r\n attrMappingDtl;\r\n productMasAttrId;\r\n attMapModelTitle;\r\n contactName = \"\";\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n private ss: SystemServiceService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n public cs: CommanServiceService\r\n\r\n ) {\r\n\r\n }\r\n\r\n //load page defination\r\n getPageDefination() {\r\n this.datalist = [];\r\n this.whereMap = [];\r\n // this.spinnerService.show();\r\n\r\n let action = this.route.snapshot.params['action'] || '';\r\n if (this.whrV != null && this.subFrmWk == null) {\r\n this.paraObj['whereKeys'] = this.whrK;\r\n this.paraObj['whereVlus'] = '' + this.whrV;\r\n this.whereMap[this.whrK] = this.whrV;\r\n } else {\r\n this.paraObj['whereKeys'] = '1';\r\n this.paraObj['whereVlus'] = '1';\r\n }\r\n this.header['method'] = 'loadList';\r\n if (this.pageInfo != null) {\r\n var pageTP = this.pageInfo.page_typ;\r\n if (pageTP == 'jsonForm') {\r\n this.paraObj['whereKeys'] = this.pageInfo.where_clause;\r\n this.paraObj['whereVlus'] = this.whereMap[this.pageInfo.where_clause];\r\n }\r\n }\r\n if (action == 'newcontact') {\r\n this.paraObj['whereKeys'] = \"nme_idn\";\r\n this.paraObj['whereVlus'] = \"0\";\r\n\r\n }\r\n if (action == 'newacccontact') {\r\n this.paraObj['whereKeys'] = \"nme_idn\";\r\n this.paraObj['whereVlus'] = \"0\";\r\n\r\n }\r\n if (action == 'newledger') {\r\n this.paraObj['whereKeys'] = \"ledger_idn\";\r\n this.paraObj['whereVlus'] = \"0\";\r\n\r\n }\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(options);\r\n console.log(JSON.stringify(this.paraObj));\r\n this.ss.getData(this.paraObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n this.tblH = response.dataHeader;\r\n this.tblDesc = response.dataHeaderPrint;\r\n this.addNew = response.buttons[0] || {};\r\n this.pageInfo = response.pageInfo;\r\n this.pkf = response.pageInfo.primary_key_field;\r\n this.datalist = response.dataList || [];\r\n this.actions = response.actions;\r\n this.navigation = response.navigation;\r\n debugger\r\n\r\n\r\n\r\n if (action == 'newcontact' || action == 'newledger' || action == 'newacccontact') {\r\n this.action = action;\r\n this.navigation = response.navigation[0];\r\n setTimeout(() => {\r\n this.formFilds = [];\r\n document.getElementById('datamdbtn').click();\r\n this.paraObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n this.getFormFields();\r\n this.btnName = 'Add';\r\n }, 500)\r\n }\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //load form fields\r\n getFormFields() {\r\n // this.spinnerService.show();\r\n if (this.whrV != null) {\r\n this.paraObj['whereKeys'] = this.whrK;\r\n this.paraObj['whereVlus'] = this.whrV;\r\n }\r\n this.header['method'] = 'loadAddEdit';\r\n console.log(JSON.stringify(this.paraObj))\r\n console.log(JSON.stringify(this.header))\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.getFormF(this.paraObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS' && response.message != 'SUCCESS') {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return;\r\n };\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n this.formFilds = response.formFields;\r\n debugger\r\n // this.spinnerService.hide();\r\n this.formFilds.forEach(element => {\r\n if (element.form_field_typ == 'tb') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == 's') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == 'hd') {\r\n element.default_value = this.whereMap[element.form_field];\r\n }\r\n if (element.form_field_typ == 'sq') {\r\n this.getSequence(element);\r\n }\r\n if (element.dta_typ == 'sa') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n //load form fields\r\n getFormFieldsPopup() {\r\n // this.spinnerService.show();\r\n if (this.whrV != null) {\r\n this.paraObj['whereKeys'] = this.whrK;\r\n this.paraObj['whereVlus'] = this.whrV;\r\n\r\n this.whereMap[this.whrK] = this.whrV;\r\n }\r\n this.header['method'] = 'loadAddEdit';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.getFormF(this.paraObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS' && response.message != 'SUCCESS') {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return;\r\n };\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n debugger;\r\n this.formFildsPopup = response.formFields;\r\n this.popuppageInfo = response.pageInfo;\r\n // this.spinnerService.hide();\r\n this.formFildsPopup.forEach(element => {\r\n debugger;\r\n if (element.form_field_typ == 'tb') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == 's') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == 'hd') {\r\n element.default_value = this.whereMap[element.form_field];\r\n }\r\n if (element.form_field_typ == 'sq') {\r\n this.getSequence(element);\r\n }\r\n if (element.form_field_typ == 'fk') {\r\n element.default_value = this.whrV;\r\n }\r\n if (element.dta_typ == 'sa') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n // function to remove invalid characters\r\n // removeInvalid(fl) {\r\n // if (fl.form_field == \"nme\" || fl.form_field == \"print_nme\") {\r\n // fl.default_value = fl.default_value.replace(/[^a-z ]/gi, '');\r\n // }\r\n // };\r\n\r\n //users action like 'add', 'edit', 'delete' and 'ad Item'\r\n userAction(ua, c, a) {\r\n debugger\r\n console.log(ua, c, a);\r\n if (c == 'add') {\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n document.getElementById('datamdbtn').click();\r\n this.paraObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n this.getFormFields();\r\n this.btnName = 'Add';\r\n } else if (ua && c.trim() == 'edit') {\r\n this.glbObj = ua;\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n document.getElementById('datamdbtn').click();\r\n this.pid = ua[this.pkf];\r\n this.paraObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n this.getEditData(ua[this.pkf]);\r\n this.btnName = 'Edit';\r\n } else if (a.form_field == 'addAttr') {\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n this.curl = a.lov_qry;\r\n this.router.navigate([a.lov_qry.trim(), this.pkf, ua[this.pkf]]);\r\n this.whrK = this.pkf;\r\n this.whrV = ua[this.pkf];\r\n }\r\n else if (ua && c.trim() == 'subform' && a.form_field != \"out_mapping\") {\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n this.curl = a.lov_qry;\r\n this.router.navigate([a.lov_qry.trim(), this.pkf, ua[this.pkf]]);\r\n this.whrK = this.pkf;\r\n this.whrV = ua[this.pkf];\r\n } else if (ua && c.trim() == 'delete') {\r\n document.getElementById('deletebtn').click();\r\n this.pid = ua[this.pkf];\r\n this.paraObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n } else if (c.trim() == 'popup') {\r\n debugger;\r\n document.getElementById('popdatamdbtn').click();\r\n this.paraObj['formNme'] = a.lov_qry.split('/')[2];\r\n this.whrK = this.pkf;\r\n this.whrV = ua[this.pkf];\r\n this.getFormFieldsPopup();\r\n this.pid = ua[this.pkf];\r\n this.btnName = 'Add';\r\n } else if (c.trim() == 'defination') {\r\n console.log(a.lov_qry.trim(), ua[this.pkf])\r\n this.router.navigate([a.lov_qry.trim(), ua[this.pkf]]);\r\n }\r\n else if (c.trim() == 'subform' && a.form_field == \"out_mapping\") {\r\n this.loadProductMasterMapping(ua['attr_idn']);\r\n this.attMapModelTitle = ua.display;\r\n }\r\n }\r\n\r\n loadProductMasterMapping(attrIdn) {\r\n this.productMasAttrId = attrIdn;\r\n // this.spinnerService.show();\r\n let obj = {};\r\n obj['formNme'] = 'fileUpload';\r\n obj['attr_idn'] = attrIdn;\r\n this.header['method'] = 'loadPrdMasterMapping'\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.Save(obj, options, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n let result = response.result;\r\n this.attrDtl = result.attrDtl;\r\n this.attrMappingDtl = result.attrMappingDtl;\r\n document.getElementById('productMapMasMDbtn').click();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n saveProductMasterMapping() {\r\n // this.spinnerService.show();\r\n let obj = {};\r\n obj['formNme'] = 'fileUpload';\r\n obj['attr_idn'] = this.productMasAttrId;\r\n obj['attrDtlMap'] = this.attrMappingDtl;\r\n this.header['method'] = 'updateProductAttr'\r\n console.log(JSON.stringify(obj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.Save(obj, options, 'fileUpload/load').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n // this.spinnerService.hide();\r\n this.productMapclsbtn.nativeElement.click();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n\r\n //side nevigation \r\n navigationFun(nav, i) {\r\n this.cLink = i;\r\n this.whrK = nav.column_key.trim();\r\n this.whrV = nav.form_field.trim();\r\n this.navform = nav.lov_qry.trim();\r\n if (this.subFrmWv == '') {\r\n this.subFrmWk = null;\r\n this.subFrmWv = null;\r\n }\r\n if (this.navform != '') {\r\n if (this.navform == 'addtionalDtlMaster') {\r\n this.addFrmNme = this.navform;\r\n this.getNameAttr(this.addFrmNme);\r\n } else {\r\n this.paraObj['formNme'] = this.navform;\r\n this.getPageDefination();\r\n }\r\n } else {\r\n this.getPageDefination();\r\n }\r\n }\r\n //load edit table data with default value\r\n getEditData(pid) {\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n let reqObj = {};\r\n var pageTP = this.pageInfo.page_typ;\r\n reqObj['formNme'] = this.pageInfo.form_nme;\r\n reqObj['primaryKey'] = this.pageInfo.primary_key_field;\r\n reqObj['pageTyp'] = this.pageInfo.page_typ;\r\n reqObj['secondKeyField'] = this.pageInfo.second_key_field;\r\n if (this.tbCell != null) {\r\n reqObj['inLineEditColumn'] = this.tbCell;\r\n }\r\n reqObj['primaryId'] = pid;\r\n if (pageTP == 'jsonForm') {\r\n reqObj['whereKeys'] = this.pageInfo.where_clause;\r\n reqObj['whereVlus'] = this.whereMap[this.pageInfo.where_clause];\r\n }\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = 'loadAddEdit';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.getEditD(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS' && response.message != 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n return;\r\n };\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n if (this.tbCell != null) {\r\n document.getElementById('datamdbtn').click();\r\n }\r\n this.formFilds = response.formFields;\r\n this.formFilds.forEach(element => {\r\n if (element.form_field_typ == 'tb') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == 's') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == 'hd') {\r\n element.default_value = this.whereMap[element.form_field];\r\n }\r\n if (element.form_field_typ == 'sq') {\r\n this.getSequence(element);\r\n }\r\n if (element.dta_typ == 'sa') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n getSequence(element) {\r\n let reqObj = {};\r\n reqObj['seq'] = element.lov_qry;\r\n this.header['method'] = 'getSeq';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.getData(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n var seq = response.seq;\r\n element.default_value = seq;\r\n } else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //load lov data by passing query to it\r\n getLovList(tblF, page_item_idn) {\r\n let reqObj = {};\r\n reqObj['page_item_idn'] = page_item_idn;\r\n this.header['method'] = 'getDataByItemIdn';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.getData(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n debugger;\r\n this.lovs = response.kv.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n this.sqlArray[tblF] = this.lovs;\r\n // console.log(tblF, sql, this.lovs);\r\n // console.log(this.sqlArray[tblF])\r\n } else {\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //delete speficefic data list\r\n deleteDataList() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.pageInfo.form_nme;\r\n reqObj['pageTyp'] = this.pageInfo.page_typ;\r\n reqObj['primaryKey'] = this.pageInfo.primary_key_field;\r\n reqObj['primaryId'] = this.pid;\r\n reqObj['tableName'] = this.pageInfo.table_name;\r\n reqObj['trnsType'] = 'DELETE';\r\n\r\n this.header['method'] = 'save';\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.deleteData(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.getPageDefination();\r\n this.deleteclsbtn.nativeElement.click();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //dyanamic funcation\r\n chkFun(fl, fData) {\r\n if (fl.validations == '' || fl.validations == null) { return }\r\n else {\r\n if (fl.validations == 'validateQuery') {\r\n this.validateQuery(fl, fData)\r\n } else if (fl.validations == 'isUnique') {\r\n this.isUnique(fl, fData);\r\n } else if (fl.validations == 'setnameprint') {\r\n this.setnameprint(fl, fData);\r\n } else if (fl.validations == 'setfactor') {\r\n this.setfactor(fl, fData);\r\n } else if (fl.form_field_typ == 's') {\r\n if (fl.validations == null) { return; }\r\n let sq = fl.validations.replace(/#QVAL/g, fData);\r\n // this.getLovList(fl.column_key, sq);\r\n }\r\n }\r\n }\r\n\r\n //on submit action checks validation\r\n onSubmit(formVal, btn) {\r\n debugger\r\n var t = Object.keys(formVal.form.controls).forEach(field => {\r\n debugger\r\n const control = formVal.form.get(field);\r\n control.markAsTouched({ onlySelf: true });\r\n });\r\n if (formVal.form.valid == true) {\r\n this.addedit(formVal.value, btn);\r\n // this.lower(formVal.value);\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n setnameprint(fl, fData) {\r\n debugger\r\n let nmeIdn = fData;\r\n let list = this.sqlArray[fl.form_field] || [];\r\n let nmwDtl = list.find(x => x.value == nmeIdn) || '';\r\n if (nmwDtl != '') {\r\n this.formFilds.forEach(element => {\r\n if (element.form_field == 'nme')\r\n element.default_value = nmwDtl.label\r\n if (element.form_field == 'print_nme')\r\n element.default_value = nmwDtl.label\r\n\r\n });\r\n }\r\n }\r\n\r\n setfactor(fl, fData) {\r\n let fctr = -1;\r\n if (fData == 'income' || fData == 'assets')\r\n fctr = 1;\r\n this.formFilds.forEach(element => {\r\n if (element.form_field == 'fctr')\r\n element.default_value = fctr\r\n });\r\n }\r\n\r\n onPopupSubmit(formVal, btn) {\r\n debugger\r\n var t = Object.keys(formVal.form.controls).forEach(field => {\r\n const control = formVal.form.get(field);\r\n control.markAsTouched({ onlySelf: true });\r\n });\r\n if (formVal.form.valid == true) {\r\n debugger\r\n this.addPopupFrm(formVal.value, btn);\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n lower(v) {\r\n var key, keys = Object.keys(v);\r\n var n = keys.length;\r\n var newobj = {}\r\n while (n--) {\r\n key = keys[n];\r\n newobj[key] = typeof v[key] == \"string\" ? v[key].toLowerCase() : v[key];\r\n }\r\n }\r\n\r\n //submit data\r\n addedit(v, btn) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n var pageTP = this.pageInfo.page_typ.trim();\r\n reqObj['formNme'] = this.pageInfo.form_nme;\r\n reqObj['primaryKey'] = this.pageInfo.primary_key_field;\r\n reqObj['pageTyp'] = this.pageInfo.page_typ;\r\n reqObj['secondKeyField'] = this.pageInfo.second_key_field;\r\n reqObj['primaryId'] = this.btnName == 'Add' ? '' : \"\" + this.pid;\r\n reqObj['tableName'] = this.pageInfo.table_name;\r\n reqObj['trnsType'] = this.btnName == 'Add' ? 'ADD' : 'EDIT';\r\n reqObj['dataTrnsDtl'] = v;\r\n if (pageTP == 'jsonForm') {\r\n reqObj['whereKeys'] = this.pageInfo.where_clause;\r\n reqObj['whereVlus'] = this.whereMap[this.pageInfo.where_clause];\r\n }\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = 'save';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(this.header));\r\n this.ss.addData(reqObj, options).then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n btn.disabled = false;\r\n debugger;\r\n if (this.action == 'newcontact') {\r\n this.router.navigate(['/contact/master/nameMaster/nme_idn/' + response._id]);\r\n } else if (this.action == 'newacccontact') {\r\n this.router.navigate(['/accounts/contact/master/accNameMaster/nme_idn/' + response._id]);\r\n } else if (this.action == 'newledger') {\r\n this.router.navigate(['/accounts/admin/master/ledgerMaster/ledger_idn/' + response._id]);\r\n\r\n } else {\r\n this.tbCell = null; this.searchF = null;\r\n this.closebtn.nativeElement.click();\r\n if (this.addNew.lov_qry == null || this.addNew.lov_qry == \"\") {\r\n if (this.currstat == \"popup\") {\r\n // this.setSysSetup(this.coidn);\r\n } else {\r\n this.getPageDefination();\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n }\r\n return;\r\n } else {\r\n this.router.navigate([this.addNew.lov_qry, response._id]);\r\n }\r\n }\r\n } else {\r\n btn.disabled = false;\r\n this.tbCell = null;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n btn.disabled = false;\r\n this.tbCell = null;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n addPopupFrm(v, btn) {\r\n // this.spinnerService.show();\r\n debugger;\r\n\r\n let reqObj = {};\r\n var pageTP = this.popuppageInfo.page_typ.trim();\r\n reqObj['formNme'] = this.popuppageInfo.form_nme;\r\n reqObj['primaryKey'] = this.popuppageInfo.primary_key_field;\r\n reqObj['pageTyp'] = this.popuppageInfo.page_typ;\r\n reqObj['secondKeyField'] = this.popuppageInfo.second_key_field;\r\n reqObj['primaryId'] = '';//this.btnName == 'Add' ? '' : \"\" + this.pid;\r\n reqObj['tableName'] = this.popuppageInfo.table_name;\r\n reqObj['trnsType'] = 'ADD';\r\n reqObj['dataTrnsDtl'] = v;\r\n console.log(\"add\", JSON.stringify(reqObj));\r\n this.header['method'] = 'save';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.addData(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n btn.disabled = false;\r\n // this.spinnerService.hide();\r\n debugger;\r\n this.setSysSetup(this.pid);\r\n this.popclosebtn.nativeElement.click();\r\n } else {\r\n btn.disabled = false;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n btn.disabled = false;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n setSysSetup(coIdn) {\r\n debugger;\r\n\r\n let reqObj = {};\r\n reqObj['coIdn'] = coIdn;\r\n this.header['method'] = 'clientSetup';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.validate(reqObj, options, 'system/setup').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n document.getElementById('popResmodalbtn').click();\r\n this.Sysresult = response.result;\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //validate query\r\n validateQuery(tblObj, f) {\r\n if (f == '' || f == null) return;\r\n let reqObj = {};\r\n reqObj['sql'] = f;\r\n this.header['method'] = 'validateQuery';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(reqObj));\r\n this.ss.validate(reqObj, options, 'system/apppages').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.onErr = '';\r\n } else {\r\n // this.spinnerService.hide();\r\n this.onErr = tblObj.form_field;\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //validate this field value is unique\r\n isUnique(dtaObj, inpuVal) {\r\n if (inpuVal == '' || inpuVal == null) return;\r\n let reqObj = {};\r\n reqObj['tableName'] = this.pageInfo.table_name;\r\n reqObj['whereKeys'] = dtaObj.form_field;\r\n reqObj['whereVlus'] = inpuVal;\r\n reqObj['primaryKey'] = this.pageInfo.primary_key_field;\r\n reqObj['primaryId'] = this.btnName == 'Add' ? '' : this.pid;\r\n this.header['method'] = 'uniqueConQ';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.validate(reqObj, options, 'system/apppages').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.onErr = '';\r\n } else {\r\n // this.spinnerService.hide();\r\n this.onErr = dtaObj.form_field;\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n onPageSizeChange(p) {\r\n if (p == 'All') {\r\n this.pageSize = this.datalist.length;\r\n } else {\r\n this.pageSize = p;\r\n }\r\n }\r\n\r\n //sorting\r\n setOrder(value: string, i) {\r\n this.showarr = i;\r\n if (this.order === value) {\r\n this.reverse = !this.reverse;\r\n }\r\n this.order = value;\r\n }\r\n\r\n //for set null to table cell\r\n closeNull = () => this.tbCell = null;\r\n\r\n //edit cell open model\r\n editCell(d, tbh) {\r\n this.glbObj = d;\r\n this.tbCell = tbh;\r\n this.title = d.title;\r\n this.btnName = 'Edit';\r\n this.pid = d[this.pkf];\r\n this.getEditData(d[this.pkf]);\r\n }\r\n\r\n //load nme attr data\r\n getNameAttr(frmnme) {\r\n let reqObj = {};\r\n let custObj = {};\r\n reqObj['formNme'] = frmnme;\r\n reqObj['nmeIdn'] = this.whrV;\r\n this.header['method'] = 'loadNmeAttr';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.validate(reqObj, options, 'system/apppages').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.uiGrpList = response.uiGrpList;\r\n this.uiGrpListDtl = response.uiGrpListDtl;\r\n this.dataDtl = response.dataDtl;\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n //save nme data \r\n saveFun(k, v) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n let subObj = {};\r\n subObj[k] = v;\r\n reqObj['formNme'] = this.addFrmNme;\r\n reqObj['nmeIdn'] = this.whrV;\r\n reqObj['dataTrnsDtl'] = subObj;\r\n this.header['method'] = 'saveNmeAttr';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.addData(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-success', timeout: 3000 });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n loadSuggdata(str, page_item_idn, form_field) {\r\n if (str == undefined || str == '' || str.length < 3) return;\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = this.route.snapshot.params[\"frmnme\"] || 'loadSuggestionData';\r\n reqObj['page_item_idn'] = page_item_idn;\r\n reqObj['likeStr'] = str;\r\n this.header['method'] = 'loadSuggestionDataByItemIdn';\r\n console.log(this.header);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(reqObj));\r\n // console.log(this.header);\r\n this.cs.load(reqObj, options, \"contact/registerData\").then((response: any) => {\r\n console.log(response);\r\n let result = response.result;\r\n let suggestionData = result.suggestionData || [];\r\n let list = suggestionData.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n this.sqlArray[form_field] = list;\r\n })\r\n\r\n }\r\n\r\n // fl = \"select table_catalog||' '||table_name k , table_name v from information_schema.tables where table_schema = 'public' and table_type = 'BASE TABLE' and table_name like '#INPUT%' and table_name=COALESCE(null,table_name) order by 1;\"\r\n\r\n // suggestData:any = [];\r\n\r\n // getSuggetion(scT) {\r\n // if (scT == '' || scT == null) return;\r\n // let sq = this.fl.replace(/#INPUT/g, scT);\r\n // let reqObj = {};\r\n // reqObj['sql'] = sq;\r\n // this.header['method'] = 'getData';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // this.ss.validate(reqObj, options).then((response: any) => {\r\n // if (response.status == 'SUCCESS') {\r\n // this.suggestData = response.kv;\r\n // } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // }\r\n // }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n // });\r\n // }\r\n\r\n // na(){\r\n // this.input.nativeElement.focus();\r\n // this.suggestData = [];\r\n // }\r\n\r\n\r\n //hide show password field text\r\n\r\n showHIdePass() {\r\n this.estst = !this.estst;\r\n if (this.estst) {\r\n this.eveC = 'fa-eye';\r\n this.inputtype = 'text';\r\n } else {\r\n this.eveC = 'fa-eye-slash';\r\n this.inputtype = 'password';\r\n }\r\n }\r\n\r\n //reseting form\r\n reset = v => v.form.reset();\r\n\r\n ngOnInit() {\r\n //globle header parameter\r\n let mdlk = JSON.parse(localStorage.getItem('mdlKey'));\r\n let mdlKey = Object.keys(mdlk);\r\n this.cUrl = this.router.url;\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n let companyDtl = JSON.parse(Cookie.get('_accCompany')) || {};\r\n let yearDtl = JSON.parse(Cookie.get('_accyear')) || {};\r\n let sub_co_idn = (companyDtl[\"sub_co_idn\"] || '').toString();\r\n let fin_year_idn = (yearDtl[\"fin_year_idn\"] || '').toString();\r\n if (sub_co_idn != '') {\r\n this.header['subcomidn'] = sub_co_idn;\r\n this.header['yearidn'] = fin_year_idn;\r\n }\r\n //on form name change\r\n this.route.params.subscribe((params: Params) => {\r\n this.subFrmWk = null;\r\n this.whrK = \"1\";\r\n this.whrV = \"1\";\r\n this.paraObj['formNme'] = params['frmnme'];\r\n this.searchF = null;\r\n this.getPageDefination();\r\n this.cLink = 0;\r\n this.p = 1;\r\n });\r\n }\r\n\r\n}\r\n// if (this.whrV != null && this.subFrmWk != null) {\r\n// if (this.subFrmWv != 'ALL') {\r\n// this.paraObj['whereKeys'] = this.whrK + '~' + this.subFrmWk;\r\n// this.paraObj['whereVlus'] = '' + this.whrV + '~' + this.subFrmWv;\r\n// } else {\r\n// this.paraObj['whereKeys'] = this.whrK;\r\n// this.paraObj['whereVlus'] = '' + this.whrV;\r\n// }\r\n// this.whereMap[this.subFrmWk] = this.subFrmWv;\r\n// }","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">{{pageInfo?.title}}\r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info pull-right\" *ngIf=\"addNew?.is_compulsory == 1\"\r\n (click)=\"userAction(data, 'add', '');f.reset();\">{{addNew?.form_field_title}}</button>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"router.url != curl\">\r\n <div class=\"col-md-2\" *ngIf=\"navigation.length > 0\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == cLink}\"\r\n *ngFor=\"let nav of navigation;let i=index\"\r\n (click)=\"navigationFun(nav,i);\">{{nav.form_field_title}} </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"navigation.length > 0 ? 'col-md-10' : 'col-md-12'\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-8\"></div>\r\n <div class=\"col-sm-4\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size </label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\"\r\n (change)=\"onPageSizeChange(pageSize)\">\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n <!-- <label>{{datalist.length}}</label> -->\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\"\r\n [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th>SR No</th>\r\n <th>Action</th>\r\n <th *ngFor=\"let tbh of tblH; let i = index \" (click)=\"setOrder(tbh,i)\">\r\n {{tblDesc[tbh]}}\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === i\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === i\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let data of datalist | searchPipe:searchF | orderBy: order:reverse | paginate: { itemsPerPage: pageSize, currentPage: p }; let i = index;\">\r\n <td>{{i + 1}}</td>\r\n <td>\r\n <div class=\"btn-group\">\r\n <a href=\"#\" data-toggle=\"dropdown\"\r\n class=\"btn btn-info dropdown-toggle\">Action\r\n <span class=\"caret\"></span>\r\n </a>\r\n <ul class=\"dropdown-menu\" role=\"menu\">\r\n <li *ngFor=\"let action of actions\">\r\n <a href=\"javascript:void(0)\"\r\n (click)=\"userAction(data, action.form_field_typ, action);\">\r\n {{action.form_field_title}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n <td *ngFor=\"let tbh of tblH; let i=index\" on-mouseover=\"hoveredI=i\"\r\n on-mouseleave=\"hoveredI=-1\">\r\n {{data[tbh]}}\r\n <div class=\"onHoverDiv\" *ngIf=\"i==hoveredI\">\r\n <ul>\r\n <li (click)=\"editCell(data,tbh);\">\r\n <span class=\"fa fa-pencil\"></span>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <pagination-controls (pageChange)=\"p = $event\" class=\"pull-right\"></pagination-controls>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal\" id=\"datamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" #f=\"ngForm\" name=\"appForm\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #closebtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">{{btnName}} Record</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let fl of formFilds | orderByPipe: 'srt': 'asc'\">\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 't' && fl?.is_hidden == 0 && fl?.dta_typ =='c' || fl?.dta_typ =='t'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <!-- (change)=\"removeInvalid(fl)\" -->\r\n <input type=\"text\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #textInput=\"ngModel\" (blur)=\"chkFun(fl,fl.default_value);\"\r\n [ngClass]=\"{'uniqErrMsg': fl?.form_field == onErr}\"\r\n [required]=\"fl?.is_compulsory == 1\" />\r\n </div>\r\n <!-- (blur)=\"this[fl?.validations](fl.default_value)\" -->\r\n <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <!-- <div *ngIf=\"textInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"textInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 't' && fl?.is_hidden == 0 && fl?.dta_typ =='n'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"number\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #numberInput=\"ngModel\" [required]=\"fl?.is_compulsory == 1\">\r\n <!-- minlength={{fl?.form_field_min_length}} maxlength={{fl?.form_field_max_length}}/ -->\r\n </div>\r\n <div *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"numberInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <!-- <div *ngIf=\"numberInput.errors.minlength\">\r\n {{fl.form_field_title}} must be at least {{fl.form_field_min_length}} characters long.\r\n </div>\r\n <div *ngIf=\"numberInput.errors.maxlength\">\r\n {{fl.form_field_title}} Maxmimum limit {{fl.form_field_max_length}} characters long.\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'pw' && fl?.is_hidden == 0 && fl?.dta_typ =='pw'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"{{inputtype}}\" class=\"form-control posrel\"\r\n name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #passInput=\"ngModel\"\r\n [required]=\"fl?.is_compulsory == 1\" />\r\n <span class=\"fa {{eveC}} eye\" (click)=\"showHIdePass();\"></span>\r\n </div>\r\n <!-- (blur)=\"this[fl?.validations](fl.default_value)\" -->\r\n <div *ngIf=\"passInput.invalid && (passInput.dirty || passInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"passInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='a'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <tag-input [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\"\r\n [modelAsStrings]=\"true\" [allowDupes]=\"true\" [editable]='true'>\r\n </tag-input>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='sa'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <ng-select [options]=\"sqlArray[fl?.form_field]\" style=\"z-index:9;\"\r\n [(ngModel)]=\"fl.default_value\" #safield=\"ngModel\"\r\n [required]=\"fl?.is_compulsory == 1\" name=\"{{fl?.form_field}}\"\r\n [multiple]=\"true\" [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select [items]=\"sqlArray[fl?.form_field]\" [addTag]=\"addTag\" bindValue=\"k\" multiple=\"true\" bindLabel=\"v\" name=\"{{fl?.form_field}}\"\r\n [(ngModel)]=\"fl.default_value\" #safield=\"ngModel\" [required]=\"fl?.is_compulsory == 1\">\r\n </ng-select> -->\r\n </div>\r\n <div *ngIf=\"safield.invalid && (safield.dirty || safield.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"safield.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'ta' && fl?.is_hidden == 0 && fl?.dta_typ =='c'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <textarea class=\"form-control\" rows=\"3\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #textArea=\"ngModel\" (blur)=\"chkFun(fl,fl.default_value);\"\r\n [ngClass]=\"{'uniqErrMsg': fl?.form_field == onErr}\"\r\n [required]=\"fl?.is_compulsory == 1\"></textarea>\r\n </div>\r\n <div *ngIf=\"textArea.invalid && (textArea.dirty || textArea.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textArea.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'hd' || fl?.form_field_typ == 'df' || fl?.form_field_typ == 'fk' && fl?.is_hidden == 0\"\r\n [ngClass]=\"{'mt0': fl?.form_field_typ == 'hd'}\">\r\n <label class=\"col-md-3 control-label\"></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"hidden\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #hdf=\"ngModel\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'sq' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\"></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"hidden\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'tb' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <!-- <div class=\"col-md-9\">\r\n <div class=\"btn-group\" data-toggle=\"buttons\">\r\n <label class=\"btn btn-default btn-on btn-xs\" *ngFor=\"let lov of sqlArray[fl.form_field];let i=index\">\r\n <input type=\"radio\" [value]=\"lov.k\" id=\"{{i}}\" name=\"{{fl?.form_field}}\" [value]=\"\" [(ngModel)]=\"fl.default_value\">{{lov.v}}</label>\r\n </div>\r\n </div> -->\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #tdf=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\"\r\n value=\"{{dynamic.value}}\">\r\n {{dynamic.label}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"tdf.invalid && (tdf.dirty || tdf.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"tdf.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'l' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #lInput=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let lov of fl.kv\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"lInput.invalid && (lInput.dirty || lInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"lInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'ld' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #ldInput=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\"\r\n value=\"{{dynamic.k}}\">{{dynamic.v}}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"ldInput.invalid && (ldInput.dirty || ldInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"ldInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 's' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n (change)=\"chkFun(fl,fl.default_value)\" id=\"{{fl.column_key}}\"\r\n #sfi=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\"\r\n value=\"{{dynamic.value}}\">\r\n {{dynamic.label}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"sfi.invalid && (sfi.dirty || sfi.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"sfi.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'sb'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-8\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"sqlArray[fl.form_field]\"\r\n #sfi=\"ngModel\" [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\"\r\n (selected)=\"chkFun(fl,fl.default_value)\"\r\n (filterInputChanged)=\"loadSuggdata($event,fl.page_item_idn,fl.form_field)\">\r\n </ng-select>\r\n </div>\r\n <div *ngIf=\"sfi.invalid && (sfi.dirty || sfi.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"sfi.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1\" *ngIf=\"fl?.form_field_icon == 'add'\">\r\n <button type=\"button\" class=\"btn btn-success btn-rounded\"><span><i\r\n class=\"fa fa-plus\"></i></span></button>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" appAppNoDblClick class=\"btn btn-success\" (click)=\"onSubmit(f,submitBtn)\"\r\n #submitBtn>{{btnName}}</button>\r\n <button type=\"reset\" class=\"btn btn-danger\" (click)=\"reset(f)\"\r\n *ngIf=\"btnName == 'Add'\">Reset</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal\" id=\"deletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #deleteclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\"\r\n (click)=\"deleteDataList();\">Delete</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"popdatamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" #fpop=\"ngForm\" name=\"appForm\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #popclosebtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">{{btnName}} Record</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let fl of formFildsPopup | orderByPipe: 'srt': 'asc'\">\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 't' && fl?.is_hidden == 0 && fl?.dta_typ =='c' || fl?.dta_typ =='t'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #textInput=\"ngModel\" (blur)=\"chkFun(fl,fl.default_value);\"\r\n [ngClass]=\"{'uniqErrMsg': fl?.form_field == onErr}\"\r\n [required]=\"fl?.is_compulsory == '1'\" />\r\n </div>\r\n <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 't' && fl?.is_hidden == 0 && fl?.dta_typ =='n'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"number\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #numberInput=\"ngModel\" [required]=\"fl?.is_compulsory==1\">\r\n <!-- minlength={{fl?.form_field_min_length}} maxlength={{fl?.form_field_max_length}}/ -->\r\n </div>\r\n <div *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"numberInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'pw' && fl?.is_hidden == 0 && fl?.dta_typ =='pw'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"{{inputtype}}\" class=\"form-control posrel\"\r\n name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #passInput=\"ngModel\"\r\n [required]=\"fl?.is_compulsory == '1'\" />\r\n <span class=\"fa {{eveC}} eye\" (click)=\"showHIdePass();\"></span>\r\n </div>\r\n <div *ngIf=\"passInput.invalid && (passInput.dirty || passInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"passInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='a'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <div class=\"input-group w-100\">\r\n <tag-input [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\"\r\n [modelAsStrings]=\"true\" [allowDupes]=\"true\" [editable]='true'>\r\n </tag-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='sa'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <ng-select [options]=\"sqlArray[fl?.form_field]\" style=\"z-index:9;\"\r\n [(ngModel)]=\"fl.default_value\" #safield=\"ngModel\"\r\n [required]=\"fl?.is_compulsory == 1\" name=\"{{fl?.form_field}}\"\r\n [multiple]=\"true\" [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value.toLowerCase()}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select [items]=\"sqlArray[fl.form_field]\" [addTag]=\"addTag\" bindValue=\"k\" multiple=\"true\" bindLabel=\"v\" name=\"{{fl?.form_field}}\"\r\n [(ngModel)]=\"fl.default_value\" #safield=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n </ng-select> -->\r\n </div>\r\n <div *ngIf=\"safield.invalid && (safield.dirty || safield.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"safield.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'ta' && fl?.is_hidden == 0 && fl?.dta_typ =='c'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <textarea class=\"form-control\" rows=\"3\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #textArea=\"ngModel\" (blur)=\"chkFun(fl,fl.default_value);\"\r\n [ngClass]=\"{'uniqErrMsg': fl?.form_field == onErr}\"\r\n [required]=\"fl?.is_compulsory == '1'\"></textarea>\r\n </div>\r\n <div *ngIf=\"textArea.invalid && (textArea.dirty || textArea.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textArea.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'hd' || fl?.form_field_typ == 'df' || fl?.form_field_typ == 'fk' && fl?.is_hidden == 0\"\r\n [ngClass]=\"{'mt0': fl?.form_field_typ == 'hd'}\">\r\n <label class=\"col-md-3 control-label\"></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"hidden\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #hdf=\"ngModel\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'sq' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\"></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"hidden\" class=\"form-control\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'tb' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #tdf=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\"\r\n value=\"{{dynamic.value}}\">\r\n {{dynamic.label}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"tdf.invalid && (tdf.dirty || tdf.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"tdf.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'l' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #lInput=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let lov of fl.kv\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"lInput.invalid && (lInput.dirty || lInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"lInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'ld' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n #ldInput=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\"\r\n value=\"{{dynamic.k}}\">{{dynamic.v}}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"ldInput.invalid && (ldInput.dirty || ldInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"ldInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 's' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\"\r\n (change)=\"chkFun(fl,fl.default_value)\" id=\"{{fl.column_key}}\"\r\n #sfi=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\"\r\n value=\"{{dynamic.value}}\">{{dynamic.label}}\r\n </option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"sfi.invalid && (sfi.dirty || sfi.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"sfi.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" appAppNoDblClick class=\"btn btn-success\"\r\n (click)=\"onPopupSubmit(fpop,popsubmitBtn)\" #popsubmitBtn>Add</button>\r\n <button type=\"reset\" class=\"btn btn-danger\" (click)=\"reset(f)\">Reset</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"popResmodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" name=\"appFormres\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"popModalHead\"> Record</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <p *ngFor=\"let res of Sysresult\">{{res}}</p>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"modal\" id=\"productMapMasMD\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm mwidth\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #productMapclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Product Mapping of {{attMapModelTitle}}</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th>\r\n Name\r\n </th>\r\n <th>\r\n Value\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let key of attrDtl?.prpList\">\r\n <tr>\r\n <td>\r\n {{key.print}}\r\n </td>\r\n <td>\r\n <input type=\"text\" class=\"form-control\"\r\n [(ngModel)]=\"attrMappingDtl[key?.val]\" />\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\"\r\n (click)=\"saveProductMasterMapping();\" #productMapclsbtn>Save</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <button id=\"deletebtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#deletemodal\"></button>\r\n <button id=\"datamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"clsMd\" [hidden]=\"true\" data-dismiss=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"popdatamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popdatamodal\"></button>\r\n <button id=\"popResmodalbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#popResmodal\"></button>\r\n <button id=\"productMapMasMDbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#productMapMasMD\"></button>","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n// import { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { GlobleEnvService } from '../../globle/globle-env.service';\r\n// import * as AWS from 'aws-sdk/global';\r\n// import * as S3 from 'aws-sdk/clients/s3';\r\n// import * as awsservice from \"aws-sdk/lib/service\";\r\n// import * as CognitoIdentity from \"aws-sdk/clients/cognitoidentity\";\r\n// import { ObservableInput } from 'rxjs';\r\n// import { element } from 'protractor';\r\n// import { VariableAst } from '@angular/compiler';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UploadFileService {\r\n\r\n // GFOLDER = 'ezbiz/205/doc/';\r\n // GBUCKET = 'qs';\r\n // FOLDER = '8.32/';\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService\r\n ) { }\r\n\r\n // private getS3Bucket(): any {\r\n // const bucket = new S3(\r\n // {\r\n // accessKeyId: 'AKIAI7GPHSZXA56CAB5A',\r\n // secretAccessKey: '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',\r\n // region: 'ap-southeast-1'\r\n // }\r\n // );\r\n // return bucket;\r\n // }\r\n\r\n // getFilesS3() {\r\n // var fileU = [];\r\n // var fileObj = {};\r\n // const params = {\r\n // Bucket: this.GBUCKET,\r\n // Prefix: this.GFOLDER\r\n // };\r\n // const bucket = new S3(\r\n // {\r\n // accessKeyId: 'AKIAI7GPHSZXA56CAB5A',\r\n // secretAccessKey: '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',\r\n // region: 'ap-southeast-1'\r\n // }\r\n // );\r\n\r\n // return new Promise(function (resolve, reject) {\r\n // bucket.listObjects(params, function (error, result) {\r\n // if (error) {\r\n // reject(error);\r\n // }\r\n // resolve(result)\r\n // let fileDatas = result.Contents;\r\n // fileDatas.forEach(element => {\r\n // fileObj['docKey'] = element.Key;\r\n // fileObj['docPath'] = 'https://s3.amazonaws.com/' + params.Bucket + '/' + element.Key;\r\n // console.log(element.Key);\r\n // fileU.push(fileObj);\r\n // });\r\n // return this.fileU;\r\n // }); \r\n // });\r\n // // .then(() => {\r\n // // return fileU;\r\n // // });\r\n // }\r\n \r\n saveDoctoDB(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n getFilesList(reqObj, headers) {\r\n return this.http.post(this.glbEnv.baseUrl + 'system/apppages', JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n}\r\n\r\n//old accesskey : //'AKIAI7GPHSZXA56CAB5A',\r\n// secrate key : // 'eIIU6ORom6oB0CEJ54cAnBcob4wX/EYCZ2Z5faoz',\r\n// ====== we needs to do following configuration in aws Bucket permission section =================================== //\r\n\r\n// <?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n// <CORSConfiguration xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\r\n// <CORSRule>\r\n// <AllowedOrigin>*</AllowedOrigin>\r\n// <AllowedMethod>GET</AllowedMethod>\r\n// <AllowedMethod>PUT</AllowedMethod>\r\n// <AllowedMethod>POST</AllowedMethod>\r\n// <AllowedMethod>DELETE</AllowedMethod>\r\n// <ExposeHeader>ETag</ExposeHeader>\r\n// <AllowedHeader>*</AllowedHeader>\r\n// </CORSRule>\r\n// </CORSConfiguration>","import { Component, OnInit, ViewChild, ElementRef, NgModule } from \"@angular/core\";\r\n// import { RequestOptions } from \"@angular/http\";\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute, Params } from \"@angular/router\";\r\nimport { FormControl, FormGroup, Validators, FormsModule } from \"@angular/forms\";\r\n// import { FlashMessagesService } from \"angular2-flash-messages\";\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n// import { SelectModule } from \"ng-select/public_api\";\r\n// import { TagInputModule } from 'ngx-chips';\r\n\r\nimport { Cookie } from \"ng2-cookies/ng2-cookies\";\r\n// import { Ng4LoadingSpinnerService } from \"ng4-loading-spinner\";\r\nimport { SystemServiceService } from \"../system-service/system-service.service\";\r\nimport { UploadFileService } from \"../system-service/upload-file.service\";\r\nimport { ContactServiceService } from \"../../contact-service/contact-service.service\";\r\n// import * as AWS from 'aws-sdk/global';\r\nimport * as S3 from \"aws-sdk/clients/s3\";\r\n// const { S3Client, AbortMultipartUploadCommand } = require(\"@aws-sdk/client-s3\");\r\n// import { S3Client, AbortMultipartUploadCommand } from \"@aws-sdk/client-s3\";\r\n\r\n\r\n// import * as awsservice from \"aws-sdk/lib/service\";\r\n// import * as CognitoIdentity from \"aws-sdk/clients/cognitoidentity\";\r\n// import { promise } from \"protractor\";\r\nimport { SortableComponent } from \"ngx-bootstrap/sortable\";\r\n// import { ChangeDetectionStrategy } from \"@angular/compiler/src/core\";\r\n// import { async } from \"@angular/core/testing\";\r\n// import { debounce } from \"rxjs-compat/operator/debounce\";\r\nimport { CommanServiceService } from \"../../comman-service/comman-service.service\";\r\nimport { document } from \"ngx-bootstrap\";\r\nimport { window } from \"rxjs-compat/operator/window\";\r\n// import { AsyncLocalStorage } from 'async_hooks';\r\n// import { stringify } from \"@angular/core/src/render3/util\";\r\n\r\n\r\n@Component({\r\n selector: \"app-subform\",\r\n templateUrl: \"./subform.component.html\",\r\n styleUrls: [\"./subform.component.css\"]\r\n})\r\nexport class SubformComponent implements OnInit {\r\n @ViewChild(\"closebtn\") closebtn: ElementRef;\r\n @ViewChild(\"fileOptMapMDclsbtn\") fileOptMapMDclsbtn: ElementRef;\r\n @ViewChild(\"productDetailMapclsbtn\") productDetailMapclsbtn: ElementRef;\r\n @ViewChild(\"deleteclsbtn\") deleteclsbtn: ElementRef;\r\n @ViewChild(\"inputs\") input: ElementRef;\r\n @ViewChild(SortableComponent) sortableComponent: SortableComponent;\r\n\r\n //#region vars and obj declaration section\r\n cDt = new Date();\r\n\r\n formFilds = [];\r\n datalist = [];\r\n actions = [];\r\n lovs = [];\r\n addNew: any = [];\r\n tblH = [];\r\n tblDesc = [];\r\n navigation = [];\r\n cLink = 0;\r\n glbObj = {};\r\n\r\n showarr;\r\n pageInfo;\r\n header;\r\n btnName;\r\n pid;\r\n searchF;\r\n whrK;\r\n whrV;\r\n subFrmWk;\r\n subFrmWv;\r\n navform;\r\n onErr;\r\n hoveredI;\r\n tbCell;\r\n title;\r\n pkf;\r\n curl;\r\n uiGrpList;\r\n uiGrpListDtl;\r\n attrCListDtl = [];\r\n attrQListDtl = [];\r\n\r\n dfv;\r\n ci;\r\n disableselc = false;\r\n\r\n dataDtlist = [];\r\n dataDtl = [];\r\n itemStringsLeft: any = [];\r\n\r\n addFrmNme;\r\n documentUploadList;\r\n documentUploadDtl;\r\n selectedFiles;\r\n applicationList = [];\r\n userDtls = [];\r\n moduleDtls = [];\r\n menuList = [];\r\n userRightsMenuList = [];\r\n totMenu;\r\n subMenuIdns = [];\r\n whereMap = {};\r\n paraObj = {};\r\n currObj = {};\r\n sqlArray = {};\r\n s3details = {};\r\n\r\n doctype;\r\n pk = this.route.snapshot.paramMap.get(\"subk\");\r\n pv = this.route.snapshot.paramMap.get(\"subv\");\r\n\r\n GFOLDER = \"ezbiz/205/doc/\";\r\n GBUCKET = \"qs\";\r\n fileUploads = [];\r\n nameAttr = [];\r\n\r\n file;\r\n\r\n resFiles;\r\n imageUrlLst = [];\r\n p = 1;\r\n pageSize = 10;\r\n order = \"\";\r\n eveC = \"fa-eye-slash\";\r\n estst = false;\r\n inputtype = \"password\";\r\n\r\n reverse = true;\r\n subform = false;\r\n usrisExist = false;\r\n ico;\r\n\r\n display_group = [];\r\n display_row = [];\r\n display_attr = [];\r\n colVals = [];\r\n\r\n termsList = [];\r\n applUserList = [];\r\n routherDoc\r\n dataTrnsList = [];\r\n byrObj = {};\r\n userDetails = [];\r\n pageDefinationPswdCng;\r\n page_typ;\r\n attrDtl;\r\n attrMappingDtl;\r\n attr_dtl_idn;\r\n outMappingList = [];\r\n attrList = [];\r\n contactName;\r\n producDetailModelTitle;\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n private ss: SystemServiceService,\r\n private uploadService: UploadFileService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n public cs: ContactServiceService,\r\n public cm: CommanServiceService\r\n ) { }\r\n\r\n getPageDefination() {\r\n this.routherDoc = \"\";\r\n this.datalist = [];\r\n this.whereMap = [];\r\n let frmnme = this.route.snapshot.params[\"itmform\"] || \"\";\r\n let doctyp = this.route.snapshot.params[\"doctyp\"] || \"\";\r\n debugger\r\n // this.spinnerService.show();\r\n if (this.pk != null && this.subFrmWk != null) {\r\n //subFrmWk == navigation panel's menu\r\n if (this.subFrmWv != \"ALL\") {\r\n this.paraObj[\"whereKeys\"] = this.pk + \"~\" + this.subFrmWk;\r\n this.paraObj[\"whereVlus\"] = \"\" + this.pv + \"~\" + this.subFrmWv;\r\n } else {\r\n this.paraObj[\"whereKeys\"] = this.pk;\r\n this.paraObj[\"whereVlus\"] = \"\" + this.pv;\r\n }\r\n this.whereMap[this.subFrmWk] = this.subFrmWv;\r\n } else {\r\n this.paraObj[\"whereKeys\"] = this.pk;\r\n this.paraObj[\"whereVlus\"] = \"\" + this.pv;\r\n this.whereMap[this.pk] = this.pv;\r\n }\r\n this.header[\"method\"] = \"loadList\";\r\n // if (this.pageInfo != null) {\r\n // this.page_typ=this.pageInfo.page_typ;\r\n // var pageTP = this.pageInfo.page_typ;\r\n // if (pageTP == \"jsonForm\") {\r\n // this.paraObj[\"whereKeys\"] = this.pageInfo.where_clause;\r\n // this.paraObj[\"whereVlus\"] = this.whereMap[this.pageInfo.where_clause];\r\n // }\r\n // }\r\n console.log(JSON.stringify(this.header));\r\n console.log(JSON.stringify(this.paraObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = { headers: this.header };\r\n let options = { headers: this.header };\r\n this.ss\r\n .getData(this.paraObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n debugger;\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n this.tblH = response.dataHeader;\r\n this.tblDesc = response.dataHeaderPrint;\r\n this.addNew = response.buttons[0];\r\n this.pageInfo = response.pageInfo;\r\n this.pkf = response.pageInfo.primary_key_field;\r\n this.datalist = response.dataList;\r\n this.actions = response.actions;\r\n this.navigation = response.navigation;\r\n\r\n if (this.paraObj[\"whereKeys\"] == \"nme_idn\" || this.paraObj[\"whereKeys\"] == \"ledger_idn\") {\r\n if (\r\n (this.paraObj[\"formNme\"] == \"nameMaster\" || this.paraObj[\"formNme\"] == \"ledgerMaster\" || this.paraObj[\"formNme\"] == \"accNameMaster\") &&\r\n this.datalist.length == 1\r\n ) {\r\n let dtDtl = this.datalist[0];\r\n let nme = dtDtl[\"nme\"] || \"\";\r\n let pnme = dtDtl[\"person_nme\"] || \"\";\r\n if (nme != \"\" || pnme != \"\") {\r\n this.contactName = nme + \"/\" + pnme;\r\n this.contactName = this.contactName.toUpperCase();\r\n }\r\n }\r\n } else {\r\n this.contactName = \"\";\r\n }\r\n\r\n if (doctyp != '') {\r\n this.routherDoc = doctyp;\r\n this.navigation.forEach((element, index) => {\r\n if (element.form_field == 'uploadDocument') {\r\n this.navigationFun(element, index);\r\n }\r\n })\r\n }\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getRowGroup(displayAttrIdn) {\r\n let reqObj = {};\r\n reqObj[\"displayAttrIdn\"] = displayAttrIdn;\r\n this.header[\"method\"] = \"getPageDisplayAttr\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = { headers: this.header };\r\n let options = { headers: this.header };\r\n this.ss\r\n .getRowGroup(reqObj, options, \"admin/menuRights\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.display_group = response.result.display_group;\r\n this.display_row = response.result.display_row;\r\n this.display_attr = response.result.display_attr;\r\n } else {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n SaveRowGroup(displayAttrIdn, colname, colVals) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj[\"displayAttrIdn\"] = displayAttrIdn;\r\n reqObj[\"columnName\"] = colname;\r\n reqObj[\"columnValue\"] = colVals;\r\n this.header[\"method\"] = \"savePageDisplayAttr\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = { headers: this.header };\r\n let options = { headers: this.header };\r\n this.ss\r\n .getRowGroup(reqObj, options, \"admin/menuRights\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.disableselc = false;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n this.colVals = [];\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n onChangeDispRow(e) {\r\n this.disableselc = true;\r\n for (var key in e.target.form.elements) {\r\n if (\r\n e.target.form.elements[key].id != \"\" &&\r\n e.target.form.elements[key].id != undefined &&\r\n e.target.form.elements[key].id != \"undefined\"\r\n )\r\n if (e.target.form.elements[key].id.startsWith(\"row_\")) {\r\n if (\r\n e.target.form.elements[key].value != \"\" &&\r\n e.target.form.elements[key].value != undefined &&\r\n e.target.form.elements[key].value != \"undefined\"\r\n )\r\n this.colVals.push(e.target.form.elements[key].value);\r\n }\r\n }\r\n this.SaveRowGroup(this.pid, \"display_row\", this.colVals);\r\n }\r\n\r\n onChangeDispGrp(e) {\r\n this.disableselc = true;\r\n for (var key in e.target.form.elements) {\r\n if (\r\n e.target.form.elements[key].id != \"\" &&\r\n e.target.form.elements[key].id != undefined &&\r\n e.target.form.elements[key].id != \"undefined\"\r\n )\r\n if (e.target.form.elements[key].id.startsWith(\"grp_\")) {\r\n if (\r\n e.target.form.elements[key].value != \"\" &&\r\n e.target.form.elements[key].value != undefined &&\r\n e.target.form.elements[key].value != \"undefined\"\r\n )\r\n this.colVals.push(e.target.form.elements[key].value);\r\n }\r\n }\r\n this.SaveRowGroup(this.pid, \"display_group\", this.colVals);\r\n }\r\n getFormFields() {\r\n // this.spinnerService.show();\r\n this.dfv = null;\r\n this.paraObj[\"whereKeys\"] = this.pk;\r\n this.paraObj[\"whereVlus\"] = this.pv;\r\n this.header[\"method\"] = \"loadAddEdit\";\r\n console.log(this.paraObj);\r\n console.log(this.header);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .getFormF(this.paraObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\" && response.message != \"SUCCESS\") {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n return;\r\n }\r\n if (response.status == \"SUCCESS\") {\r\n console.log(response);\r\n this.formFilds = response.formFields;\r\n // this.spinnerService.hide();\r\n this.formFilds.forEach(element => {\r\n if (element.form_field_typ == \"tb\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == \"s\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == \"hd\") {\r\n element.default_value = this.whereMap[element.form_field];\r\n }\r\n if (element.form_field_typ == \"fk\") {\r\n element.default_value = this.route.snapshot.paramMap.get(\"subv\");\r\n }\r\n if (element.form_field_typ == \"ck\") {\r\n element.default_value = this.whereMap[element.column_key];\r\n }\r\n if (element.form_field_typ == \"sq\") {\r\n this.getSequence(element);\r\n }\r\n if (element.dta_typ == \"sa\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.dta_typ == \"sr\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n userAction(ua, c, a, i) {\r\n debugger\r\n if (c.trim() == \"add\") {\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n document.getElementById(\"datamdbtn\").click();\r\n this.getFormFields();\r\n this.btnName = \"Add\";\r\n } else if (ua && c.trim() == \"edit\") {\r\n this.glbObj = ua;\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n document.getElementById(\"datamdbtn\").click();\r\n this.pid = ua[this.pkf];\r\n this.getEditData(ua);\r\n this.btnName = \"Edit\";\r\n } else if (\r\n ua &&\r\n c.trim() == \"addItem\" &&\r\n a.form_field_title != \"Add Mapping\"\r\n ) {\r\n // this.spinnerService.show();\r\n this.formFilds = [];\r\n this.curl = a.lov_qry;\r\n this.router.navigate([a.lov_qry, this.pkf, ua[this.pkf]]);\r\n } else if (ua && c.trim() == \"deleteterms\") {\r\n\r\n this.ci = i;\r\n document.getElementById(\"deleteTerms\").click();\r\n this.pid = ua[this.pkf];\r\n } else if (ua && c.trim() == \"delete\") {\r\n\r\n this.ci = i;\r\n document.getElementById(\"deletebtn\").click();\r\n this.pid = ua[this.pkf];\r\n } else if (ua && c.trim() == \"defination\") {\r\n this.ci = i;\r\n document.getElementById(\"rowGrpbtn\").click();\r\n this.pid = ua[this.pkf];\r\n this.getRowGroup(this.pid);\r\n } else if (\r\n ua &&\r\n c.trim() == \"addItem\" &&\r\n a.form_field_title == \"Add Mapping\"\r\n ) {\r\n this.producDetailModelTitle = ua.display;\r\n this.loadProductDetailMapping(ua[\"attr_d_idn\"]);\r\n }\r\n }\r\n\r\n loadProductDetailMapping(attrDtailIdn) {\r\n this.attr_dtl_idn = attrDtailIdn;\r\n // this.spinnerService.show();\r\n let obj = {};\r\n obj[\"formNme\"] = \"fileUpload\";\r\n obj[\"attr_dtl_idn\"] = attrDtailIdn;\r\n this.header[\"method\"] = \"loadPrdMasterMapping\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .Save(obj, options, \"fileUpload/load\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n console.log(response);\r\n let result = response.result;\r\n this.attrDtl = result.attrDtl;\r\n this.attrMappingDtl = result.attrMappingDtl;\r\n document.getElementById(\"btnproductDetailMapMD\").click();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n saveProductDetailMapping() {\r\n // this.spinnerService.show();\r\n let obj = {};\r\n obj[\"formNme\"] = \"fileUpload\";\r\n obj[\"attr_dtl_idn\"] = this.attr_dtl_idn;\r\n obj[\"attrDtlMap\"] = this.attrMappingDtl;\r\n this.header[\"method\"] = \"updateProductAttr\";\r\n console.log(JSON.stringify(obj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .Save(obj, options, \"fileUpload/load\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n console.log(response);\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n // this.spinnerService.hide();\r\n this.productDetailMapclsbtn.nativeElement.click();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n navigationFun(nav, i) {\r\n debugger\r\n this.cLink = i;\r\n this.subFrmWk = nav.column_key.trim() || '';\r\n this.subFrmWv = nav.form_field.trim() || '';\r\n if (this.subFrmWv == \"0\")\r\n this.subFrmWv = \"\";\r\n this.navform = nav.lov_qry.trim();\r\n if (this.subFrmWv == \"\") {\r\n this.subFrmWk = null;\r\n this.subFrmWv = null;\r\n }\r\n if (this.navform != \"\") {\r\n if (this.navform == \"addtionalDtlMaster\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['contact'];\r\n this.getNameAttr(this.addFrmNme, mdl);\r\n } else if (this.navform == \"ledgerAddtionalDtlMaster\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['ledg_attr'];\r\n this.getLedgerAttr(this.addFrmNme, mdl, 'attr');\r\n } else if (this.navform == \"ledgerAccAdditinalDetails\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['ledgacc_attr'];\r\n this.getLedgerAttr(this.addFrmNme, mdl, 'acc_attr');\r\n } else if (this.navform == \"accDeleteRulesForm\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['delete_rule'];\r\n this.getLedgerAttr(this.addFrmNme, mdl, 'delete_rule');\r\n } else if (this.navform == \"accJournalAttrForm\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['jnlacc_attr'];\r\n this.getLedgerAttr(this.addFrmNme, mdl, 'jnlacc_attr');\r\n } else if (this.navform == \"accLoanAttrForm\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['loan'];\r\n this.getLedgerAttr(this.addFrmNme, mdl, 'loan');\r\n } else if (this.navform == \"accJournalSettingForm\") {\r\n this.addFrmNme = this.navform;\r\n let mdl = ['jnl_sett'];\r\n this.getJournalAttr(this.addFrmNme, mdl, 'jnl_sett');\r\n }\r\n else if (this.navform == \"documentUploadMaster\") {\r\n this.addFrmNme = this.navform;\r\n this.getFiles(this.pv);\r\n } else if (this.navform == \"menuAccessMaster\") {\r\n this.addFrmNme = this.navform;\r\n // this.loadUsrMdl(this.pv);//\r\n this.loadApplication();\r\n } else if (this.navform == \"webMenuAccessMaster\") {\r\n this.addFrmNme = this.navform;\r\n // this.loadUsrMdl(this.pv);//\r\n this.loadWebApplication();\r\n }\r\n else if (this.navform == \"moduleAccessMaster\") {\r\n this.addFrmNme = this.navform;\r\n this.loadUsrMdl(this.pv);\r\n } else if (this.navform == \"termUserAssignForm\") {\r\n this.addFrmNme = this.navform;\r\n this.loadApplicationUserTerms(this.pv);\r\n } else if (this.navform == \"setPasswordForm\") {\r\n this.addFrmNme = this.navform;\r\n this.loadUserPassword();\r\n } else if (this.navform == \"ledgerBankDetails\") {\r\n this.addFrmNme = this.navform;\r\n this.loadledgerBankDetails();\r\n } else {\r\n this.paraObj[\"formNme\"] = this.navform;\r\n this.getPageDefination();\r\n }\r\n }\r\n }\r\n exitBankDtlList = [];\r\n loadledgerBankDetails() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'ledgerBankDetails';\r\n reqObj['ledger_idn'] = this.route.snapshot.paramMap.get('subv');\r\n this.header['method'] = 'loadledgerBankDetail';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'accounts/accLedger').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n let result = response.result;\r\n this.exitBankDtlList = result.bankDtlList || [];\r\n this.editbank_dtl_idn = \"\";\r\n this.branch = \"\";\r\n this.accountno = \"\";\r\n this.selectBranchAddress = \"\";\r\n this.bank = \"\";\r\n this.bankList = [];\r\n this.bankDtlList = [];\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n bankList = [];\r\n bankDtlList = [];\r\n bank;\r\n branch = \"\";\r\n accountno;\r\n accountType = \"savings\"\r\n ledgerBankDetails(str) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'ledgerBankDetails';\r\n reqObj['likeStr'] = str;\r\n this.header['method'] = 'loadPartyBank';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'accounts/accLedger').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n let result = response.result;\r\n this.bankList = result.bankList.map(option => ({\r\n value: option,\r\n label: option\r\n }));\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n getBankBranch(bank) {\r\n this.branch = \"\";\r\n this.selectBranchAddress = \"\";\r\n this.selectIfsc = \"\";\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'ledgerBankDetails';\r\n reqObj['bankNme'] = bank;\r\n this.header['method'] = 'getPartyBankDtl';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'accounts/accLedger').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.spinnerService.hide();\r\n let result = response.result;\r\n this.bankDtlList = result.bankDtlList || [];\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n\r\n }\r\n selectBranchDtl = {};\r\n selectBranchAddress = \"\";\r\n selectIfsc = \"\";\r\n selectBranch(branch) {\r\n this.selectBranchAddress = \"\";\r\n this.selectBranchDtl = this.bankDtlList.find(x => x.nme_idn == branch) || '';\r\n let address = this.selectBranchDtl['address'] || [];\r\n if (address.length > 0) {\r\n let addressDtl = address[0];\r\n let area = addressDtl['area'] || \"\";\r\n if (area == \"null\")\r\n area = \"\";\r\n let street = addressDtl['street'] || \"\";\r\n if (street == \"null\")\r\n street = \"\";\r\n let unit_no = addressDtl['unit_no'] || \"\";\r\n if (unit_no == \"null\")\r\n unit_no = \"\";\r\n let building = addressDtl['building'] || \"\";\r\n if (building == \"null\")\r\n building = \"\";\r\n let landmark = addressDtl['landmark'] || \"\";\r\n if (landmark == \"null\")\r\n landmark = \"\";\r\n let zip = addressDtl['zip'] || \"\";\r\n if (zip == \"null\")\r\n zip = \"\";\r\n let city_nm = addressDtl['city_nm'] || \"\";\r\n if (city_nm == \"null\")\r\n city_nm = \"\";\r\n let country_nm = addressDtl['country_nm'] || \"\";\r\n if (country_nm == \"null\")\r\n country_nm = \"\";\r\n let state_nm = addressDtl['state_nm'] || \"\";\r\n if (state_nm == \"null\")\r\n state_nm = \"\";\r\n this.selectIfsc = this.selectBranchDtl['attr']['ifsc'];\r\n this.selectBranchAddress = unit_no + \" \" + building + \" \" + street + \" \" + area + \" \" + landmark + \" \" + city_nm + \" \" + state_nm + \" \" + zip\r\n\r\n }\r\n\r\n }\r\n\r\n loadLedgerBank() {\r\n\r\n }\r\n editbank_dtl_idn = \"\";\r\n loadEditBankDtl(bankdtl) {\r\n debugger\r\n let bankName = bankdtl.bankname;\r\n this.bankList = [{\r\n value: bankName,\r\n label: bankName\r\n }];\r\n this.bank = bankName;\r\n this.getBankBranch(bankName);\r\n this.editbank_dtl_idn = bankdtl.bankdtlIdn;\r\n this.accountType = bankdtl.accountType;\r\n this.accountno = bankdtl.accountNo;\r\n this.selectBranchAddress = bankdtl.address;\r\n this.selectIfsc = bankdtl.ifsc;\r\n this.branch = bankdtl.bankRefIdn;\r\n }\r\n SaveLedgerBank() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'ledgerBankDetails';\r\n reqObj['ledger_idn'] = this.route.snapshot.paramMap.get('subv');\r\n reqObj['bank_ref_idn'] = this.branch;\r\n reqObj['account_type'] = this.accountType;\r\n reqObj['account_no'] = this.accountno;\r\n if (this.editbank_dtl_idn == '')\r\n reqObj['action'] = 'add';\r\n else {\r\n reqObj['action'] = 'edit';\r\n reqObj['bank_dtl_idn'] = this.editbank_dtl_idn;\r\n }\r\n this.header['method'] = 'saveBankDtlIntoAccLedger';\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.subFgetData(reqObj, options, 'accounts/accLedger').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.exitBankDtlList = result.bankDtlList || [];\r\n this.branch = \"\";\r\n this.accountno = \"\";\r\n this.selectBranchAddress = \"\";\r\n this.bank = \"\";\r\n this.bankList = [];\r\n this.bankDtlList = [];\r\n this.editbank_dtl_idn = \"\";\r\n // this.spinnerService.hide();\r\n // if (this.editbank_dtl_idn == \"\")\r\n // // this.flashMessagesService.show(\"New Bank add successfully\", { cssClass: 'alert-success', timeout: 3000 });\r\n // else {\r\n // // this.flashMessagesService.show(\"Bank edit successfuly\", { cssClass: 'alert-success', timeout: 3000 });\r\n // this.editbank_dtl_idn = \"\";\r\n // }\r\n\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n deletBankIdn = \"\";\r\n ConfirmDeleteLedgerBank(bankdtl) {\r\n document.getElementById('bnkdeletemodalbtn').click();\r\n this.deletBankIdn = bankdtl.bankdtlIdn;\r\n }\r\n\r\n DeleteLedgerBank() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = 'ledgerBankDetails';\r\n reqObj['ledger_idn'] = this.route.snapshot.paramMap.get('subv');\r\n reqObj['action'] = 'delete';\r\n reqObj['bank_dtl_idn'] = this.deletBankIdn;\r\n\r\n this.header['method'] = 'saveBankDtlIntoAccLedger';\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.subFgetData(reqObj, options, 'accounts/accLedger').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.exitBankDtlList = result.bankDtlList || [];\r\n this.deletBankIdn = \"\";\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(\"Bank Delete successfully\", { cssClass: 'alert-success', timeout: 3000 });\r\n\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n getLedgerAttr(formname, mdl, type) {\r\n debugger;\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = formname;\r\n reqObj[\"ledger_idn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n reqObj['mdlList'] = mdl;\r\n reqObj['type'] = type;\r\n this.header[\"method\"] = \"loadLedgerAttr\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.subFgetData(reqObj, options, \"accounts/accLedger\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.pageInfo = response.pageInfo || {};\r\n this.uiGrpList = response.uiGrpList;\r\n this.uiGrpListDtl = response.uiGrpListDtl;\r\n this.attrCListDtl = response.attrCListDtl;\r\n this.attrQListDtl = response.attrQListDtl;\r\n\r\n this.dataDtl = response.dataDtl;\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getJournalAttr(formname, mdl, type) {\r\n debugger;\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = formname;\r\n reqObj[\"journal_idn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n reqObj['mdlList'] = mdl;\r\n reqObj['type'] = type;\r\n this.header[\"method\"] = \"loadJournalAttr\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.subFgetData(reqObj, options, \"accounts/accLedger\")\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.pageInfo = response.pageInfo || {};\r\n this.uiGrpList = response.uiGrpList;\r\n this.uiGrpListDtl = response.uiGrpListDtl || {};\r\n let datatypelist = this.uiGrpListDtl[\"basic#T\"] || [];\r\n let attrlist = this.uiGrpListDtl[\"basic#V\"] || [];\r\n this.attrCListDtl = response.attrCListDtl;\r\n this.attrQListDtl = response.attrQListDtl;\r\n this.dataDtl = response.dataDtl || {};\r\n this.contactName = this.dataDtl[\"contactName\"] || \"\";\r\n attrlist.forEach((key, index) => {\r\n let type = datatypelist[index];\r\n if (type == 'sa') {\r\n let attrVal = this.dataDtl[key] || '';\r\n let list = [{ value: attrVal, label: attrVal }];\r\n this.sqlArray[key] = list;\r\n }\r\n\r\n });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n loadUserPassword() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = \"applicationAccessMaster\";\r\n reqObj[\"nmeIdn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n this.header[\"method\"] = \"loadChangePass\";\r\n this.header[\"source\"] = \"qs\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .subFgetData(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n // this.spinnerService.hide();\r\n let result = response.result;\r\n this.userDetails = result.userDetails;\r\n this.pageDefinationPswdCng = result.pageDefination;\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n changePswd(e, userIdn) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = \"setPasswordForm\";\r\n reqObj[\"userIdn\"] = userIdn;\r\n reqObj[\"password\"] = e.target.value;\r\n this.header[\"method\"] = \"changePassword\";\r\n this.header[\"source\"] = \"qs\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.ss\r\n .Save(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n let result = response.result;\r\n this.userDetails = result.userDetails;\r\n this.pageDefinationPswdCng = result.pageDefination;\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n this.loadUserPassword();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n changePassword(obj) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = \"setPasswordForm\";\r\n reqObj[\"userIdn\"] = obj.userIdn;\r\n reqObj[\"password\"] = obj.password;\r\n this.header[\"method\"] = \"changePassword\";\r\n this.header[\"source\"] = \"qs\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .Save(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n let result = response.result;\r\n this.userDetails = result.userDetails;\r\n this.pageDefinationPswdCng = result.pageDefination;\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n this.loadUserPassword();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n\r\n gblObj;\r\n exitsingUserList = [];\r\n loadApplicationUserTerms(nmeidn) {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"nme_idn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n reqObj[\"formNme\"] = \"contactSearchForm\";\r\n this.header[\"method\"] = \"loadAssignApplicationUserterms\";\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .load(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n let result = response.result;\r\n this.gblObj = result;\r\n this.termsList = result.termsList;\r\n let applUserList = result.applUserList;\r\n this.exitsingUserList = [];\r\n this.termsList.forEach(element => {\r\n let userIdnList = element.userIdnList || [];\r\n userIdnList.forEach(userIdn => {\r\n if (this.exitsingUserList.indexOf(userIdn) == -1)\r\n this.exitsingUserList.push(userIdn);\r\n });\r\n });\r\n debugger\r\n let pendingUserList = []\r\n applUserList.forEach(element => {\r\n if (this.exitsingUserList.indexOf(element.k) == -1)\r\n pendingUserList.push(element);\r\n });\r\n\r\n this.termsList.forEach(element => {\r\n let userIdnList = element.userIdnList || [];\r\n let TermUserList = pendingUserList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n if (userIdnList.length > 0) {\r\n applUserList.forEach(element => {\r\n if (userIdnList.indexOf(element.k) != -1) {\r\n TermUserList.push({ \"value\": element.k, \"label\": element.v });\r\n }\r\n\r\n });\r\n\r\n }\r\n element.TermUserList = TermUserList;\r\n\r\n });\r\n console.log(this.termsList);\r\n // this.applUserList = result.applUserList;\r\n // let temparr = [];\r\n //this.exitsingUser=[];\r\n // this.termsList.forEach(element => {\r\n // debugger\r\n // element.userIdnList.forEach(a => {\r\n // temparr.push(a.toString());\r\n // if(this.exitsingUser.indexOf(a.toString())==-1)\r\n // this.exitsingUser.push(a.toString());\r\n // });\r\n // element.userIdnList = temparr;\r\n // temparr = [];\r\n // element.selectedVals = [];\r\n // });\r\n // let applUserList=result.applUserList;\r\n // this.applUserList=[]\r\n // applUserList.forEach(element => {\r\n // if(this.exitsingUser.indexOf(element.k)==-1)\r\n // this.applUserList.push(element);\r\n // });\r\n\r\n\r\n this.applUserList = this.applUserList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n\r\n console.log(this.applUserList);\r\n // setTimeout(() => {\r\n\r\n // }, 1000);\r\n\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n selectedPeople3 = [];\r\n ngAfterViewInit() {\r\n console.log(\"in viewafter\");\r\n }\r\n\r\n loadSuggdata(str, page_item_idn, form_field) {\r\n if (str == undefined || str == '' || str.length < 3) return;\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = this.route.snapshot.params[\"frmnme\"] || 'loadSuggestionData';\r\n reqObj['page_item_idn'] = page_item_idn;\r\n reqObj['likeStr'] = str;\r\n this.header['method'] = 'loadSuggestionDataByItemIdn';\r\n console.log(this.header);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(reqObj));\r\n // console.log(this.header);\r\n this.cs.load(reqObj, options, \"contact/registerData\").then((response: any) => {\r\n console.log(response);\r\n let result = response.result;\r\n let suggestionData = result.suggestionData || [];\r\n let list = suggestionData.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n this.sqlArray[form_field] = list;\r\n })\r\n\r\n }\r\n\r\n loadJnlSuggdata(str, attr_nme, mdl) {\r\n if (str == undefined || str == '' || str.length < 3) return;\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = this.route.snapshot.params[\"frmnme\"] || 'loadSuggestionData';\r\n reqObj['attr_nme'] = attr_nme;\r\n reqObj['mdl'] = mdl;\r\n reqObj['likeStr'] = str;\r\n this.header['method'] = 'loadSuggestionDataByAttrNme';\r\n console.log(this.header);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(reqObj));\r\n // console.log(this.header);\r\n this.cs.load(reqObj, options, \"accounts/accLedger\").then((response: any) => {\r\n console.log(response);\r\n let result = response.result;\r\n let suggestionData = result.suggestionData || [];\r\n let list = suggestionData.map(option => ({\r\n value: option.v,\r\n label: option.v\r\n }));\r\n this.sqlArray[attr_nme] = list;\r\n })\r\n\r\n }\r\n\r\n onchaneVals(e, byrtrmid, selectedUserIdn) {\r\n this.dataTrnsList = [...this.termsList];\r\n this.byrObj[\"buyer_terms_idn\"] = byrtrmid;\r\n if (selectedUserIdn != undefined)\r\n this.byrObj[\"userIdnList\"] = selectedUserIdn;\r\n\r\n let checkBox = document.getElementById(byrtrmid);\r\n if (\r\n (checkBox as any).checked == true &&\r\n selectedUserIdn != undefined &&\r\n selectedUserIdn != \"\"\r\n ) {\r\n var index = this.dataTrnsList.findIndex(\r\n x => x.buyer_terms_idn == byrtrmid\r\n );\r\n if (index > -1) {\r\n const filteredArr = this.dataTrnsList.filter(\r\n item => item.buyer_terms_idn !== byrtrmid\r\n );\r\n this.dataTrnsList = filteredArr;\r\n }\r\n // }\r\n this.dataTrnsList.push(this.byrObj);\r\n this.byrObj = {};\r\n } else {\r\n const filteredArr = this.dataTrnsList.filter(\r\n item => item.buyer_terms_idn !== byrtrmid\r\n );\r\n this.dataTrnsList = filteredArr;\r\n }\r\n }\r\n onchangeUserSelect(e, trmobj) {\r\n let obj: any = {};\r\n obj = { ...trmobj };\r\n\r\n // obj.selectedVals = [...trmobj.userIdnList];\r\n // if (obj.selectedVals.indexOf(e.value) != -1) {\r\n // obj.selectedVals.push(e.value);\r\n // }\r\n\r\n if (obj.selectedVals.indexOf(e.value) != -1) {\r\n } else {\r\n obj.selectedVals.push(e.value);\r\n }\r\n trmobj = obj;\r\n console.log(this.termsList);\r\n }\r\n onchangeUserDeselect(e, trmobj) {\r\n debugger\r\n let obj: any = {};\r\n obj = { ...trmobj };\r\n obj.selectedVals.splice(this.termsList.indexOf(e.value), 1);\r\n trmobj = obj;\r\n console.log(this.termsList);\r\n }\r\n\r\n onchangeUserList(e, trmobj, typ) {\r\n\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"buyer_terms_idn\"] = trmobj.buyer_terms_idn;\r\n reqObj[\"user_idn\"] = e.value;\r\n reqObj['action'] = typ;\r\n reqObj[\"formNme\"] = \"contactSearchForm\";\r\n this.header[\"method\"] = \"assignUserTerm\";\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .load(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n\r\n this.loadApplicationUserTerms('');\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n\r\n\r\n }\r\n saveAppUserterms() {\r\n let valArr = [];\r\n this.termsList.forEach(element => {\r\n let checkBox = document.getElementById(element.buyer_terms_idn);\r\n if ((checkBox as any).checked == true) {\r\n let obj = {};\r\n obj[\"buyer_terms_idn\"] = element.buyer_terms_idn;\r\n obj[\"userIdnList\"] = element.userIdnList;\r\n valArr.push(obj);\r\n }\r\n });\r\n\r\n const reqObj = {};\r\n reqObj[\"nme_idn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n reqObj[\"formNme\"] = \"contactSearchForm\";\r\n this.header[\"method\"] = \"saveAssignApplicationUserterms\";\r\n reqObj[\"dataTrnsList\"] = valArr;\r\n\r\n console.log(reqObj);\r\n console.log(JSON.stringify(reqObj));\r\n\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .Save(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n console.log(response.status);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getEditData(data) {\r\n this.formFilds = [];\r\n let reqObj = {};\r\n var pageTP = this.pageInfo.page_typ;\r\n reqObj[\"formNme\"] = this.pageInfo.form_nme;\r\n reqObj[\"primaryKey\"] = this.pageInfo.primary_key_field;\r\n reqObj[\"pageTyp\"] = this.pageInfo.page_typ;\r\n reqObj[\"secondKeyField\"] = this.pageInfo.second_key_field;\r\n if (this.tbCell != null) {\r\n reqObj[\"inLineEditColumn\"] = this.tbCell;\r\n }\r\n reqObj[\"primaryId\"] = this.pid;\r\n if (pageTP == \"jsonForm\") {\r\n reqObj[\"whereKeys\"] = this.pageInfo.where_clause;\r\n reqObj[\"whereVlus\"] = this.whereMap[this.pageInfo.where_clause];\r\n }\r\n console.log(reqObj);\r\n this.header[\"method\"] = \"loadAddEdit\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .getEditD(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\" && response.message != \"SUCCESS\") {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n return;\r\n }\r\n if (response.status == \"SUCCESS\") {\r\n // this.spinnerService.hide();\r\n if (this.tbCell != null) {\r\n document.getElementById(\"datamdbtn\").click();\r\n }\r\n this.formFilds = response.formFields;\r\n this.formFilds.forEach((element, index) => {\r\n if (element.form_field_typ == \"tb\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == \"s\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.form_field_typ == \"sb\") {\r\n\r\n let qry = element.help || '';\r\n if (qry != '' && element.default_value != \"\") {\r\n\r\n if (this.pageInfo.form_nme == 'addressMaster' || this.pageInfo.form_nme == 'accAddressMaster' || this.pageInfo.form_nme == 'accAddressDetails') {\r\n let city = data.city_nm || '';\r\n let state = data.state_nm || '';\r\n let country = data.country_nm || '';\r\n if (city != '' && country != '') {\r\n let str = city + \"#\" + country;\r\n str = str.toLowerCase();\r\n this.getLovCityList(element, str);\r\n }\r\n } else {\r\n qry = qry.replace(\"#IDN\", \"'\" + element.default_value + \"'\")\r\n this.getLovListdata(element);\r\n }\r\n }\r\n }\r\n if (element.form_field_typ == \"hd\") {\r\n element.default_value = this.whereMap[element.form_field];\r\n }\r\n if (element.form_field_typ == \"sq\") {\r\n this.getSequence(element);\r\n }\r\n if (element.dta_typ == \"sa\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n if (element.dta_typ == \"sr\") {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n this.dfv = element.default_value;\r\n }\r\n if (element.form_field_typ == \"hc\") {\r\n element.default_value = element.lov_qry;\r\n }\r\n // if (element.form_field_typ == 'l') {\r\n // element.kv.map(option => ({\r\n // value: option.k,\r\n // label: option.v\r\n // }));\r\n // }\r\n });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getSequence(element) {\r\n let reqObj = {};\r\n reqObj[\"seq\"] = element.lov_qry;\r\n this.header[\"method\"] = \"getSeq\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .getData(reqObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n var seq = response.seq;\r\n element.default_value = seq;\r\n } else {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getSequence1(seqnme) {\r\n var seq = \"\";\r\n debugger;\r\n let reqObj = {};\r\n reqObj[\"seq\"] = seqnme;\r\n this.header[\"method\"] = \"getSeq\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .getData(reqObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n seq = response.seq;\r\n return seq;\r\n } else {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getLovListdata(tblF) {\r\n let reqObj = {};\r\n reqObj[\"page_item_idn\"] = tblF.page_item_idn;\r\n reqObj[\"str\"] = tblF.default_value;\r\n this.header[\"method\"] = \"loadCityCountryData\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .getData(reqObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.lovs = response.kv.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n\r\n this.sqlArray[tblF.form_field] = this.lovs;\r\n\r\n if (this.dfv == null) return;\r\n if (tblF == \"attr\") {\r\n this.sqlArray[tblF].forEach((element, index) => {\r\n this.dfv.forEach(element2 => {\r\n if (element.v == element2) {\r\n this.sqlArray[tblF].splice(index, 1);\r\n return;\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getLovList(tblF, page_item_idn) {\r\n let reqObj = {};\r\n reqObj[\"page_item_idn\"] = page_item_idn;\r\n this.header[\"method\"] = \"getDataByItemIdn\";\r\n let options = { headers: this.header };\r\n this.ss\r\n .getData(reqObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.lovs = response.kv.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n\r\n this.sqlArray[tblF] = this.lovs;\r\n\r\n if (this.dfv == null) return;\r\n if (tblF == \"attr\") {\r\n this.sqlArray[tblF].forEach((element, index) => {\r\n this.dfv.forEach(element2 => {\r\n if (element.v == element2) {\r\n this.sqlArray[tblF].splice(index, 1);\r\n return;\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getLovCityList(tblF, str) {\r\n debugger;\r\n let reqObj = {};\r\n reqObj[\"page_item_idn\"] = tblF.page_item_idn;\r\n reqObj[\"str\"] = str;\r\n this.header[\"method\"] = \"loadCityCountryData\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .getData(reqObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n debugger;\r\n\r\n this.lovs = response.kv.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n debugger;\r\n\r\n this.sqlArray[tblF.form_field] = this.lovs;\r\n if (this.lovs.length > 1)\r\n tblF.default_value = this.lovs[1].value;\r\n\r\n\r\n } else {\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n DeleteTerms() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = this.pageInfo.form_nme;\r\n reqObj[\"buyerTermsIdn\"] = this.pid;\r\n this.header[\"method\"] = \"deleteBuyerTerms\";\r\n console.log(JSON.stringify(reqObj));\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, \"contact/loadContact\").then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.paraObj[\"formNme\"] = this.navform;\r\n this.getPageDefination();\r\n // this.spinnerService.hide();\r\n\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n });\r\n }\r\n\r\n deleteDataList() {\r\n debugger\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = this.pageInfo.form_nme;\r\n reqObj[\"pageTyp\"] = this.pageInfo.page_typ;\r\n reqObj[\"primaryKey\"] = this.pageInfo.primary_key_field;\r\n reqObj[\"primaryId\"] = this.pid;\r\n reqObj[\"tableName\"] = this.pageInfo.table_name;\r\n reqObj[\"trnsType\"] = \"DELETE\";\r\n if (this.pk != \"\" && this.pv != \"\") {\r\n reqObj[\"whereKeys\"] = this.pk;\r\n reqObj[\"whereVlus\"] = \"\" + this.pv;\r\n }\r\n this.header[\"method\"] = \"save\";\r\n console.log(reqObj);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .deleteData(reqObj, options)\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.getPageDefination();\r\n // this.datalist.slice(this.ci, 1);\r\n this.deleteclsbtn.nativeElement.click();\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n chkFun(fl, fData) {\r\n if (fl.validations == \"\" || fl.validations == null) {\r\n return;\r\n } else {\r\n if (fl.validations == \"validateQuery\") {\r\n this.validateQuery(fl, fData);\r\n } else if (fl.validations == \"isUnique\") {\r\n this.isUnique(fl, fData);\r\n } else if (fl.validations == 'setnameprint') {\r\n this.setnameprint(fl, fData);\r\n } else if (fl.validations == 'setfactor') {\r\n this.setfactor(fl, fData);\r\n } else if (fl.form_field_typ == \"s\") {\r\n if (fl.validations == null) {\r\n return;\r\n }\r\n let sq = fl.validations.replace(/#QVAL/g, fData);\r\n //this.getLovListdata(fl.column_key, sq);\r\n }\r\n else if (fl.validations == \"isExist\") {\r\n if (fl.validations == null) {\r\n return;\r\n }\r\n this.isExist(fl, fData);\r\n }\r\n }\r\n }\r\n\r\n setnameprint(fl, fData) {\r\n debugger\r\n let nmeIdn = fData;\r\n let list = this.sqlArray[fl.form_field] || [];\r\n let nmwDtl = list.find(x => x.value == nmeIdn) || '';\r\n if (nmwDtl != '') {\r\n this.formFilds.forEach(element => {\r\n if (element.form_field == 'nme')\r\n element.default_value = nmwDtl.label\r\n if (element.form_field == 'print_nme')\r\n element.default_value = nmwDtl.label\r\n\r\n });\r\n }\r\n }\r\n\r\n setfactor(fl, fData) {\r\n let fctr = -1;\r\n if (fData == 'income' || fData == 'assets')\r\n fctr = 1;\r\n this.formFilds.forEach(element => {\r\n if (element.form_field == 'fctr')\r\n element.default_value = fctr\r\n });\r\n }\r\n isExist(dtaObj, fData) {\r\n console.log(fData);\r\n if (fData == \"\" || fData == null) return;\r\n let reqObj = {};\r\n reqObj[\"username\"] = fData;\r\n this.header[\"method\"] = \"isUserExist\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .validate(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n if (response.message == \"\") {\r\n this.usrisExist = true;\r\n this.ico = \"check\";\r\n this.onErr = dtaObj.form_field;\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n } else {\r\n dtaObj.default_value = \"\";\r\n this.usrisExist = true;\r\n this.ico = \"times\";\r\n // this.spinnerService.hide();\r\n this.onErr = dtaObj.form_field;\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n submitForm(formVal, btn) {\r\n this.onSubmit(formVal, btn);\r\n }\r\n\r\n onSubmit(formVal, btn) {\r\n var t = Object.keys(formVal.form.controls).forEach(field => {\r\n const control = formVal.form.get(field);\r\n control.markAsTouched({ onlySelf: true });\r\n });\r\n if (formVal.form.valid == true) {\r\n this.addedit(formVal.value, btn);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n addedit(v, btn) {\r\n\r\n // this.spinnerService.show();\r\n if (this.pageInfo.form_nme == 'addressMaster' || this.pageInfo.form_nme == 'accAddressMaster' || this.pageInfo.form_nme == 'accAddressDetails') {\r\n let cityStr = v.city_nm || '';\r\n let cityStrLst = cityStr.split('#');\r\n if (cityStrLst.length == 3) {\r\n v.country_nm = cityStrLst[2];\r\n v.state_nm = cityStrLst[1];\r\n v.city_nm = cityStrLst[0];\r\n } else {\r\n // this.flashMessagesService.show(\"Please check city\", {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n return;\r\n }\r\n if (this.btnName != \"Add\")\r\n v['address_idn'] = this.pid;\r\n }\r\n\r\n let reqObj = {};\r\n var pageTP = this.pageInfo.page_typ.trim();\r\n reqObj[\"formNme\"] = this.pageInfo.form_nme;\r\n reqObj[\"primaryKey\"] = this.pageInfo.primary_key_field;\r\n reqObj[\"pageTyp\"] = this.pageInfo.page_typ;\r\n reqObj[\"secondKeyField\"] = this.pageInfo.second_key_field;\r\n reqObj[\"primaryId\"] = this.btnName == \"Add\" ? \"\" : \"\" + this.pid;\r\n reqObj[\"tableName\"] = this.pageInfo.table_name;\r\n reqObj[\"trnsType\"] = this.btnName == \"Add\" ? \"ADD\" : \"EDIT\";\r\n reqObj[\"dataTrnsDtl\"] = v;\r\n if (pageTP == \"jsonForm\") {\r\n reqObj[\"whereKeys\"] = this.pageInfo.where_clause;\r\n reqObj[\"whereVlus\"] = this.whereMap[this.pageInfo.where_clause];\r\n }\r\n console.log(JSON.stringify(reqObj));\r\n this.header[\"method\"] = \"save\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .addData(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n btn.disabled = false;\r\n this.tbCell = null;\r\n this.searchF = null;\r\n this.closebtn.nativeElement.click();\r\n // if (this.btnName != 'Add') {\r\n // for (const key in this.glbObj) {\r\n // if (v.hasOwnProperty(key)) {\r\n // this.glbObj[key] = v[key]\r\n // }\r\n // }\r\n // } else {\r\n // for (const key in this.datalist[0]) {\r\n // if (!v.hasOwnProperty(key)) {\r\n // this.glbObj[key] = response._id;\r\n // }\r\n // if (v.hasOwnProperty(key)) {\r\n // this.glbObj[key] = v[key]\r\n // }\r\n // }\r\n // this.datalist.push(this.glbObj);\r\n this.getPageDefination();\r\n // }\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n btn.disabled = false;\r\n this.tbCell = null;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n btn.disabled = false;\r\n this.tbCell = null;\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n validateQuery(tblObj, f) {\r\n if (f == \"\" || f == null) return;\r\n let reqObj = {};\r\n reqObj[\"sql\"] = f;\r\n this.header[\"method\"] = \"validateQuery\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .validate(reqObj, options, \"system/apppages\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.onErr = \"\";\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.onErr = tblObj.form_field;\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n isUnique(dtaObj, inpuVal) {\r\n if (inpuVal == \"\" || inpuVal == null) return;\r\n let reqObj = {};\r\n reqObj[\"tableName\"] = this.pageInfo.table_name;\r\n reqObj[\"whereKeys\"] = dtaObj.form_field;\r\n reqObj[\"whereVlus\"] = inpuVal;\r\n reqObj[\"primaryKey\"] = this.pageInfo.primary_key_field;\r\n reqObj[\"primaryId\"] = this.btnName == \"Add\" ? \"\" : this.pid;\r\n this.header[\"method\"] = \"uniqueConQ\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .validate(reqObj, options, \"system/apppages\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.onErr = \"\";\r\n } else {\r\n // this.spinnerService.hide();\r\n this.onErr = dtaObj.form_field;\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n onPageSizeChange(p) {\r\n if (p == \"All\") {\r\n this.pageSize = this.datalist.length;\r\n } else {\r\n this.pageSize = p;\r\n }\r\n }\r\n\r\n setOrder(value: string, i) {\r\n this.showarr = i;\r\n if (this.order === value) {\r\n this.reverse = !this.reverse;\r\n }\r\n this.order = value;\r\n }\r\n\r\n editCell(d, tbh) {\r\n this.glbObj = d;\r\n this.tbCell = tbh;\r\n this.title = d.title;\r\n this.btnName = \"Edit\";\r\n this.pid = d[this.pkf];\r\n this.getEditData(d);\r\n }\r\n\r\n getNameAttr(frmnme, mdl) {\r\n let reqObj = {};\r\n reqObj[\"formNme\"] = frmnme;\r\n reqObj[\"nmeIdn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n reqObj['mdlList'] = mdl;\r\n this.header[\"method\"] = \"loadNmeAttr\";\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss\r\n .validate(reqObj, options, \"system/apppages\")\r\n .then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n console.log(response)\r\n this.uiGrpList = response.uiGrpList;\r\n this.uiGrpListDtl = response.uiGrpListDtl;\r\n this.attrCListDtl = response.attrCListDtl;\r\n this.attrQListDtl = response.attrQListDtl;\r\n this.dataDtl = response.dataDtl;\r\n console.log(response);\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n doceditAction;\r\n docdeleteAction;\r\n\r\n getFiles(nmeIdn) {\r\n\r\n // this.spinnerService.show();\r\n this.doceditAction = false;\r\n this.docdeleteAction = false;\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"documentUploadMaster\";\r\n reqObj[\"nmeIdn\"] = nmeIdn;\r\n this.header[\"method\"] = \"loadDocs\";\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n console.log(JSON.stringify(reqObj));\r\n this.uploadService.getFilesList(reqObj, options).then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n console.log(response);\r\n // this.spinnerService.hide();\r\n this.s3details = response.s3details || {};\r\n let docActionbtn = response.pageDefination.action || [];\r\n docActionbtn.forEach(element => {\r\n debugger;\r\n if (element.form_field == 'edit')\r\n this.doceditAction = true;\r\n if (element.form_field == 'delete')\r\n this.docdeleteAction = true;\r\n });\r\n let bucketName = this.s3details[\"docbucket\"] || \"\";\r\n let folderName = this.s3details[\"docfolder\"] || \"\";\r\n folderName = folderName.replace(\"#DS\", Cookie.get(\"_ds\").toUpperCase());\r\n this.s3details[\"docfolder\"] = folderName;\r\n let s3AccessKey = this.s3details[\"docS3accessKey\"] || \"\";\r\n let s3SecretKey = this.s3details[\"docS3secretKey\"] || \"\";\r\n let s3region = this.s3details[\"docS3region\"] || \"\";\r\n let isvaild = true;\r\n if (bucketName == \"\") {\r\n isvaild = false;\r\n // this.flashMessagesService.show(\"Document Bucket not found\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n if (folderName == \"\") {\r\n isvaild = false;\r\n // this.flashMessagesService.show(\"Document Floder not found\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n if (s3AccessKey == \"\") {\r\n isvaild = false;\r\n // this.flashMessagesService.show(\"Document s3AccessKey not found\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n if (s3SecretKey == \"\") {\r\n isvaild = false;\r\n // this.flashMessagesService.show(\"Document s3SecretKey not found\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n if (s3region == \"\") {\r\n isvaild = false;\r\n // this.flashMessagesService.show(\"Document s3region not found\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n if (isvaild) {\r\n this.dataDtl = response.dataDtl || {};\r\n this.documentUploadList = response.documentUploadDtl.documentUploadList;\r\n this.documentUploadList.sort();\r\n if (this.documentUploadList.length > 0)\r\n this.doctype = this.documentUploadList[0];\r\n\r\n let doctyp = this.route.snapshot.params[\"doctyp\"] || \"\";\r\n if (doctyp != '')\r\n this.doctype = doctyp;\r\n\r\n this.documentUploadDtl = response.documentUploadDtl;\r\n\r\n const bucket = new S3({\r\n accessKeyId: this.s3details[\"docS3accessKey\"],\r\n secretAccessKey: this.s3details[\"docS3secretKey\"],\r\n region: s3region\r\n });\r\n debugger\r\n this.documentUploadList.forEach(doctype => {\r\n if (this.dataDtl[doctype] != undefined) {\r\n this.dataDtl[doctype].forEach(dtl => {\r\n let urlParams = {\r\n Bucket: this.s3details[\"docbucket\"],\r\n Key: this.s3details[\"docfolder\"] + \"/\" + dtl[\"doc_nme\"]\r\n };\r\n bucket.getSignedUrl(\"getObject\", urlParams, function (err, url) {\r\n debugger\r\n dtl[\"signUrl\"] = url;\r\n });\r\n });\r\n }\r\n });\r\n } else {\r\n this.documentUploadList = [];\r\n }\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n console.log(\"documentUploadList\", this.documentUploadList)\r\n }\r\n opendocs(dtl) {\r\n let url = dtl.signUrl;\r\n // window.open(url, '_blank');\r\n }\r\n\r\n async uploadDocs(event) {\r\n debugger;\r\n // this.spinnerService.show();\r\n let nmeIdn = this.route.snapshot.paramMap.get(\"subv\");\r\n let reqObj = {};\r\n reqObj[\"seq\"] = \"nme_docs_seq\";\r\n this.header[\"method\"] = \"getSeq\";\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n let seqDtl = await this.ss.getData(reqObj, options) || {};\r\n if (seqDtl['status'] == \"SUCCESS\") {\r\n var seq = seqDtl['seq'];\r\n this.selectedFiles = event.target.files;\r\n this.file = this.selectedFiles.item(0);\r\n let fileName = this.file.name;\r\n let ext = fileName.substring(fileName.lastIndexOf(\".\") + 1);\r\n fileName = nmeIdn + \"_\" + seq + \"_\" + this.doctype + \".\" + ext;\r\n let uploadFile = await this.uploadFile(this.file, fileName) || '';\r\n debugger;\r\n if (uploadFile != '') {\r\n let reqObj = {};\r\n let transdtl = {};\r\n transdtl[\"doc_ext\"] = this.file.type;\r\n transdtl[\"doc_typ\"] = this.doctype;\r\n transdtl[\"docs_idn\"] = seq;\r\n transdtl[\"doc_nme\"] = fileName;\r\n transdtl[\"stt\"] = \"1\";\r\n reqObj[\"trnsType\"] = \"ADD\";\r\n reqObj[\"dataTrnsDtl\"] = transdtl;\r\n reqObj[\"nmeIdn\"] = nmeIdn;\r\n this.header[\"method\"] = \"saveDocs\";\r\n console.log(reqObj);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.uploadService.saveDoctoDB(reqObj, options).then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.getFiles(reqObj['nmeIdn']); //// refrash after doc saved\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: \"alert-success\", timeout: 3000 });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: \"alert-danger\", timeout: 3000 });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: \"alert-danger\", timeout: 3000 });\r\n });\r\n\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(\"File upload failed\", { cssClass: \"alert-danger\", timeout: 3000 });\r\n }\r\n\r\n\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(\"document Seq. genaration error\", { cssClass: \"alert-danger\", timeout: 3000 });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n uploadFile(file, fileName) {\r\n const bucket = new S3({\r\n accessKeyId: this.s3details[\"docS3accessKey\"],\r\n secretAccessKey: this.s3details[\"docS3secretKey\"],\r\n region: this.s3details[\"docS3region\"]\r\n });\r\n const params = {\r\n Bucket: this.s3details[\"docbucket\"],\r\n Key: this.s3details[\"docfolder\"] + \"/\" + fileName,\r\n Body: file,\r\n ContentType: file.type\r\n };\r\n debugger;\r\n return new Promise(function (resolve, reject) {\r\n bucket.upload(params, function (error, result) {\r\n if (error) {\r\n console.log(\"There was an error uploading your file: \", error);\r\n reject(error);\r\n }\r\n console.log(\"Successfully uploaded file.\", result);\r\n resolve(result);\r\n });\r\n });\r\n }\r\n\r\n\r\n deleteDoc() {\r\n // this.spinnerService.show();\r\n this.DeleteDocsFromS3(this.docDeleteDtl);\r\n // let deleteDtl = await this.DeleteDocsFromS3(this.docDeleteDtl) || '';\r\n // if (deleteDtl != '') {\r\n const reqObj = {};\r\n reqObj[\"docs_idn\"] = this.docDeleteDtl['docs_idn'];\r\n reqObj[\"trnsType\"] = \"DELETE\";\r\n reqObj[\"nmeIdn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n this.header[\"method\"] = \"saveDocs\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.uploadService.saveDoctoDB(reqObj, options).then((response: any) => {\r\n if (response.status == \"SUCCESS\") {\r\n this.getFiles(this.route.snapshot.paramMap.get(\"subv\")); //// refrash after doc saved\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: \"alert-success\", timeout: 3000 });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: \"alert-danger\", timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: \"alert-danger\", timeout: 3000 });\r\n });\r\n // } else {\r\n // // this.spinnerService.hide();\r\n // this.flashMessagesService.show(\"Error in file deletion\", { cssClass: \"alert-danger\", timeout: 3000 });\r\n // }\r\n }\r\n\r\n\r\n DeleteDocsFromS3(docDtl) {\r\n const bucket = new S3({\r\n accessKeyId: this.s3details[\"docS3accessKey\"],\r\n secretAccessKey: this.s3details[\"docS3secretKey\"],\r\n region: this.s3details[\"docS3region\"]\r\n });\r\n const params = {\r\n Bucket: this.s3details[\"docbucket\"],\r\n Key: this.s3details[\"docfolder\"] + \"/\" + docDtl['doc_nme'],\r\n };\r\n\r\n return new Promise(function (resolve, reject) {\r\n bucket.deleteObject(params, function (error, result) {\r\n if (error) {\r\n console.log(\"There was an error delete your file: \", error);\r\n reject(\"\");\r\n }\r\n console.log(\"deleted uploaded file.\", result);\r\n resolve(result);\r\n });\r\n });\r\n\r\n }\r\n docDeleteDtl = {};\r\n ConfirmdeleteDoc(docDtl) {\r\n this.docDeleteDtl = docDtl;\r\n document.getElementById('docdeletebtn').click();\r\n }\r\n\r\n async EditUploadDocs(docDtl, event) {\r\n debugger;\r\n let deleteDtl = await this.DeleteDocsFromS3(this.docDeleteDtl) || '';\r\n debugger;\r\n if (deleteDtl != '') {\r\n const reqObj = {};\r\n reqObj[\"docs_idn\"] = docDtl['docs_idn'];\r\n reqObj[\"trnsType\"] = \"DELETE\";\r\n reqObj[\"nmeIdn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n this.header[\"method\"] = \"saveDocs\";\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n let deleteDbDtl = await this.uploadService.saveDoctoDB(reqObj, options);\r\n debugger;\r\n if (deleteDbDtl['status'] == \"SUCCESS\") {\r\n this.uploadDocs(event)\r\n } else {\r\n // this.flashMessagesService.show(\"Error in file Edit\", { cssClass: \"alert-danger\", timeout: 3000 });\r\n }\r\n\r\n }\r\n }\r\n\r\n loadApplication() {\r\n this.application = \"\";\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"contactSearchForm\";\r\n this.header[\"method\"] = \"loadApplications\";\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .load(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.applicationList = response.applicationList;\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n application;\r\n Module;\r\n User;\r\n loadWebApplication() {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"formNme\"] = \"contactSearchForm\";\r\n reqObj[\"applicationStr\"] = \"WWW\";\r\n this.header[\"method\"] = \"loadApplications\";\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .load(reqObj, options, \"contact/loadContact\")\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.applicationList = response.applicationList;\r\n if (this.applicationList.length == 2) {\r\n this.application = this.applicationList[1].k;\r\n this.loadUsrMdl(this.application);\r\n }\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n loadUsrMdl(applId) {\r\n this.Module = \"\";\r\n this.User = \"\";\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"nmeIdn\"] = this.route.snapshot.paramMap.get(\"subv\");\r\n reqObj[\"applId\"] = applId;\r\n reqObj[\"formNme\"] = \"UserModuleList\";\r\n this.header[\"method\"] = \"getUserModuleList\";\r\n console.log(JSON.stringify(reqObj));\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .loadMenuRightsUserWise(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.userDtls = response.userDtls;\r\n if (this.userDtls.length > 0) {\r\n this.User = this.userDtls[0]['user_idn'];\r\n }\r\n this.moduleDtls = response.moduleDtls;\r\n if (this.moduleDtls.length > 0) {\r\n this.Module = this.moduleDtls[0]['module_idn'];\r\n }\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n getUserRights(userId, ModuleId) {\r\n // this.spinnerService.show();\r\n const reqObj = {};\r\n reqObj[\"moduleIdns\"] = ModuleId;\r\n reqObj[\"userId\"] = userId;\r\n this.header[\"method\"] = \"getMenuListByModule\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .loadMenuRightsUserWise(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.totMenu = 0;\r\n this.menuList = response.menuList;\r\n this.userRightsMenuList = response.userRightsMenuList;\r\n this.menuList.forEach(element => {\r\n this.totMenu += element.SubMenu.length;\r\n });\r\n\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n onChangeSubMenu(e, subMenuId, MenuId, UserId, moduleId) {\r\n const reqObj = {};\r\n reqObj[\"userId\"] = UserId;\r\n reqObj[\"menuIdn\"] =\r\n e.target.checked == true ? [subMenuId, MenuId] : [subMenuId];\r\n reqObj[\"stt\"] = e.target.checked == true ? \"1\" : \"0\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header[\"method\"] = \"saveUserRights\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .saveUserMenuRightsContact(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.getUserRights(UserId, moduleId);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n onChangeMenu(e, menuId, UserId, moduleId) {\r\n // this.spinnerService.show();\r\n let subMenuObj = this.menuList.find(o => o.menu_idn === menuId);\r\n this.subMenuIdns.push(menuId);\r\n\r\n if (subMenuObj.SubMenu.length > 0) {\r\n subMenuObj.SubMenu.forEach(element => {\r\n this.subMenuIdns.push(element.menu_idn);\r\n });\r\n }\r\n const reqObj = {};\r\n reqObj[\"userId\"] = UserId;\r\n reqObj[\"menuIdn\"] = this.subMenuIdns;\r\n reqObj[\"stt\"] = e.target.checked == true ? \"1\" : \"0\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header[\"method\"] = \"saveUserRights\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .saveUserMenuRightsContact(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.getUserRights(UserId, moduleId);\r\n this.subMenuIdns = [];\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n\r\n onChangeWebSubMenu(e, subMenuId, MenuId, UserId, moduleId) {\r\n const reqObj = {};\r\n reqObj[\"userId\"] = UserId;\r\n reqObj[\"menuIdn\"] =\r\n e.target.checked == true ? [subMenuId, MenuId] : [subMenuId];\r\n reqObj[\"stt\"] = e.target.checked == true ? \"0\" : \"1\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header[\"method\"] = \"saveUserRights\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .saveUserMenuRightsContact(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.getUserRights(UserId, moduleId);\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n onChangeWebMenu(e, menuId, UserId, moduleId) {\r\n // this.spinnerService.show();\r\n let subMenuObj = this.menuList.find(o => o.menu_idn === menuId);\r\n this.subMenuIdns.push(menuId);\r\n\r\n if (subMenuObj.SubMenu.length > 0) {\r\n subMenuObj.SubMenu.forEach(element => {\r\n this.subMenuIdns.push(element.menu_idn);\r\n });\r\n }\r\n const reqObj = {};\r\n reqObj[\"userId\"] = UserId;\r\n reqObj[\"menuIdn\"] = this.subMenuIdns;\r\n reqObj[\"stt\"] = e.target.checked == true ? \"0\" : \"1\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header[\"method\"] = \"saveUserRights\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .saveUserMenuRightsContact(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n this.getUserRights(UserId, moduleId);\r\n this.subMenuIdns = [];\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n onChangeAll(e, UserId, moduleId) {\r\n // this.spinnerService.show();\r\n\r\n this.menuList.forEach(element => {\r\n this.subMenuIdns.push(element.menu_idn);\r\n if (element.SubMenu.length > 0) {\r\n element.SubMenu.forEach(subelement => {\r\n this.subMenuIdns.push(subelement.menu_idn);\r\n });\r\n }\r\n });\r\n\r\n const reqObj = {};\r\n reqObj[\"userId\"] = UserId;\r\n reqObj[\"menuIdn\"] = this.subMenuIdns;\r\n reqObj[\"stt\"] = e.target.checked == true ? \"1\" : \"0\";\r\n reqObj[\"formNme\"] = \"saveUserRightMaster\";\r\n this.header[\"method\"] = \"saveUserRights\";\r\n console.log(reqObj);\r\n // const options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs\r\n .saveUserMenuRightsContact(reqObj, options)\r\n .then((response: any) => {\r\n console.log(response);\r\n if (response.status == \"SUCCESS\") {\r\n // this.spinnerService.hide();\r\n this.getUserRights(UserId, moduleId);\r\n this.subMenuIdns = [];\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n saveFun(k, v, type) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n let subObj = {};\r\n let url = \"system/apppages\";\r\n if (type == 'd')\r\n v = this.cm.FormatDate(v, 'dd-MMM-yyyy');\r\n subObj[k] = v;\r\n reqObj[\"formNme\"] = this.addFrmNme;\r\n reqObj[\"dataTrnsDtl\"] = subObj;\r\n if (this.addFrmNme == 'addtionalDtlMaster') {\r\n reqObj[\"nmeIdn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n this.header[\"method\"] = \"saveNmeAttr\";\r\n }\r\n if (this.addFrmNme == 'ledgerAccAdditinalDetails') {\r\n reqObj[\"ledger_idn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n reqObj[\"type\"] = \"acc_attr\";\r\n this.header[\"method\"] = \"saveLedgerAttr\";\r\n url = \"accounts/accLedger\";\r\n }\r\n if (this.addFrmNme == 'ledgerAddtionalDtlMaster') {\r\n reqObj[\"ledger_idn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n reqObj[\"type\"] = \"attr\";\r\n this.header[\"method\"] = \"saveLedgerAttr\";\r\n url = \"accounts/accLedger\";\r\n }\r\n if (this.addFrmNme == 'accDeleteRulesForm') {\r\n reqObj[\"journal_idn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n reqObj[\"type\"] = \"delete_rules\";\r\n this.header[\"method\"] = \"saveJournalAttr\";\r\n url = \"accounts/accLedger\";\r\n }\r\n if (this.addFrmNme == 'accJournalAttrForm') {\r\n reqObj[\"journal_idn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n reqObj[\"type\"] = \"attr\";\r\n this.header[\"method\"] = \"saveJournalAttr\";\r\n url = \"accounts/accLedger\";\r\n }\r\n if (this.addFrmNme == 'accLoanAttrForm') {\r\n reqObj[\"journal_idn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n reqObj[\"type\"] = \"attr\";\r\n this.header[\"method\"] = \"saveJournalAttr\";\r\n url = \"accounts/accLedger\";\r\n }\r\n if (this.addFrmNme == 'accJournalSettingForm') {\r\n reqObj[\"journal_idn\"] = this.route.snapshot.paramMap.get(\"subv\"); //this.whrV;\r\n reqObj[\"type\"] = \"settings\";\r\n this.header[\"method\"] = \"saveJournalAttr\";\r\n url = \"accounts/accLedger\";\r\n }\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n\r\n this.cs\r\n .load(reqObj, options, url)\r\n .then((response: any) => {\r\n\r\n if (response.status == \"SUCCESS\") {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-success\",\r\n // timeout: 3000\r\n // });\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n }\r\n })\r\n .catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n });\r\n }\r\n\r\n pageDisplay;\r\n // ADD PAGE DISPLAY ATTRIBUTE\r\n addAttr(v, a, df) {\r\n if (v == undefined) return;\r\n this.addText(v, a, df);\r\n }\r\n\r\n addText(v, a, df) {\r\n if (df.indexOf(v) != -1) {\r\n // this.flashMessagesService.show(\"Already Added\", {\r\n // cssClass: \"alert-danger\",\r\n // timeout: 3000\r\n // });\r\n return;\r\n } else {\r\n // this.flashMessagesService.show(\"Added\", {\r\n // cssClass: \"alert-success\",\r\n // timeout: 1500\r\n // });\r\n df.push(v);\r\n // a.splice(i, 1);\r\n this.sortableComponent.writeValue(df);\r\n }\r\n }\r\n\r\n remove(df, it, i, ff) {\r\n if (df.indexOf(it) != -1) {\r\n df.splice(i, 1);\r\n this.sqlArray[ff].unshift({ v: it });\r\n this.sortableComponent.writeValue(df);\r\n }\r\n }\r\n\r\n showHIdePass() {\r\n this.estst = !this.estst;\r\n if (this.estst) {\r\n this.eveC = \"fa-eye\";\r\n this.inputtype = \"text\";\r\n } else {\r\n this.eveC = \"fa-eye-slash\";\r\n this.inputtype = \"password\";\r\n }\r\n }\r\n rediecttokyc() {\r\n this.router.navigate(['contact/pending-kyc/pendingKycForm']);\r\n }\r\n\r\n\r\n\r\n formatDateSCMonthBefore(date, attr) {\r\n if (date != undefined && date != \"\") {\r\n\r\n let d = new Date(date),\r\n month = '' + (d.getMonth()),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n d.setDate(d.getDate() - 30);\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n let newDate = [year, month, day].join('-');\r\n\r\n this.dataDtl[attr] = newDate;\r\n }\r\n }\r\n reset = v => v.form.reset();\r\n closeNull = () => (this.tbCell = null);\r\n // pageBck = () => window..back();\r\n cUrl;\r\n ngOnInit() {\r\n this.selectedPeople3 = [\r\n { k: \"204\", v: \"nilam\" },\r\n { k: \"4781\", v: \"nilamweb\" }\r\n ];\r\n let mdlk ;\r\n // let mdlk = JSON.parse(AsyncLocalStorage.arguments(\"mdlKey\"));\r\n\r\n let mdlKey = Object.keys(mdlk);\r\n debugger\r\n this.cUrl = this.router.url;\r\n this.header = {\r\n clientkey: Cookie.get(\"_ck\"),\r\n \"Content-Type\": \"application/json\",\r\n modulekey: mdlk[this.cUrl.split('/')[1]],\r\n loginid: Cookie.get(\"_logid\"),\r\n source: \"qs\"\r\n };\r\n let companyDtl = JSON.parse(Cookie.get('_accCompany')) || {};\r\n let yearDtl = JSON.parse(Cookie.get('_accyear')) || {};\r\n let sub_co_idn = (companyDtl[\"sub_co_idn\"] || '').toString();\r\n let fin_year_idn = (yearDtl[\"fin_year_idn\"] || '').toString();\r\n if (sub_co_idn != '') {\r\n this.header['subcomidn'] = sub_co_idn;\r\n this.header['yearidn'] = fin_year_idn;\r\n }\r\n this.route.params.subscribe((params: Params) => {\r\n this.subFrmWk = null;\r\n this.searchF = null;\r\n debugger\r\n this.navform = params[\"itmform\"];\r\n this.paraObj[\"formNme\"] = params[\"itmform\"];\r\n this.paraObj[\"whereKeys\"] = params[\"subk\"];\r\n this.paraObj[\"whereVlus\"] = params[\"subv\"];\r\n if (params[\"itmform\"] == 'accDeleteRulesForm') {\r\n this.addFrmNme = params[\"itmform\"];\r\n let mdl = ['delete_rule'];\r\n this.getJournalAttr(this.addFrmNme, mdl, 'delete_rules');\r\n } else if (params[\"itmform\"] == 'accJournalAttrForm') {\r\n this.addFrmNme = params[\"itmform\"];\r\n let mdl = ['jnlacc_attr'];\r\n this.getJournalAttr(this.addFrmNme, mdl, 'attr');\r\n } else if (params[\"itmform\"] == 'accLoanAttrForm') {\r\n this.addFrmNme = params[\"itmform\"];\r\n let mdl = ['loan'];\r\n this.getJournalAttr(this.addFrmNme, mdl, 'attr');\r\n } else if (params[\"itmform\"] == \"accJournalSettingForm\") {\r\n this.addFrmNme = params[\"itmform\"];\r\n let mdl = ['jnl_sett'];\r\n this.getJournalAttr(this.addFrmNme, mdl, 'settings');\r\n }\r\n else {\r\n this.getPageDefination();\r\n this.cLink = 0;\r\n this.p = 1;\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">\r\n <!-- <span class=\"fa fa-chevron-left cp\" (click)=\"pageBck();\"> Back</span> {{pageInfo?.title}} -->\r\n <span *ngIf=\"contactName==''\" class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n <span *ngIf=\"contactName!=''\" class=\"f-12\"> for <b> {{contactName}}</b> </span>\r\n </h3>\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info pull-right\" *ngIf=\"addNew?.is_compulsory == 1\"\r\n appAppNoDblClick (click)=\"userAction('', 'add', '', '');f.reset();\">{{addNew?.form_field_title}}</button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-2\" *ngIf=\"navigation.length > 0\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"list-group border-bottom\">\r\n <a href=\"javascript:void(0)\" class=\"list-group-item\" [ngClass]=\"{'active' :i == cLink}\"\r\n *ngFor=\"let nav of navigation;let i=index\" (click)=\"navigationFun(nav,i);\">{{nav.form_field_title}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"navigation.length > 0 ? 'col-md-10' : 'col-md-12'\">\r\n <div class=\"panel panel-default\">\r\n <!-- primery form -->\r\n <div class=\"panel-body\" style=\"overflow-x: scroll\"\r\n *ngIf=\"navform != 'addtionalDtlMaster' && navform != 'documentUploadMaster' && navform != 'menuAccessMaster' && navform != 'termUserAssignForm' && navform != 'setPasswordForm' && navform!='ledgerBankDetails' && navform!='ledgerAccAdditinalDetails' && navform!='ledgerAddtionalDtlMaster' && navform!='accDeleteRulesForm' && navform!='accJournalAttrForm' && navform!='accLoanAttrForm' && navform!='accJournalSettingForm' && navform!='webMenuAccessMaster' \">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size </label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\"\r\n (change)=\"onPageSizeChange(pageSize)\">\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n <button class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\" [ngClass]=\"{'table-responsive' :navigation.length > 0}\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th>SR No</th>\r\n <th>Action</th>\r\n <th *ngFor=\"let tbh of tblH; let i = index\" (click)=\"setOrder(tbh,i)\">{{tblDesc[tbh]}}\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === i\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === i\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container\r\n *ngFor=\"let data of datalist | searchPipe:searchF | orderBy: order:reverse | paginate: { itemsPerPage: pageSize, currentPage: p }; let i = index\">\r\n <tr [ngClass]=\"{'Inactive':data.stt=='InActive'}\">\r\n <td>{{i + 1}}</td>\r\n <td>\r\n <div class=\"btn-group\">\r\n <a href=\"#\" data-toggle=\"dropdown\" class=\"btn btn-info dropdown-toggle\">Action\r\n <span class=\"caret\"></span>\r\n </a>\r\n <ul class=\"dropdown-menu\" role=\"menu\">\r\n <li *ngFor=\"let action of actions\">\r\n <a href=\"javascript:void(0)\" (click)=\"userAction(data,action.form_field,action, i);\">\r\n {{action.form_field_title}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n <td *ngFor=\"let tbh of tblH; let i=index\" on-mouseover=\"hoveredI=i\" on-mouseleave=\"hoveredI=-1\"\r\n style=\"max-width: 300px; word-break: break-word;\">{{data[tbh]}}\r\n <div class=\"onHoverDiv\"\r\n *ngIf=\"i==hoveredI && page_typ!='jsonForm' && navform!='buyertermsMaster'\">\r\n <ul>\r\n <li (click)=\"editCell(data,tbh);\">\r\n <span class=\"fa fa-pencil\"></span>\r\n </li>\r\n </ul>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <pagination-controls (pageChange)=\"p = $event\" class=\"pull-right\"></pagination-controls>\r\n </div>\r\n <!-- custom form -->\r\n <div class=\"panel-body\"\r\n *ngIf=\"navform == 'addtionalDtlMaster' || navform == 'ledgerAddtionalDtlMaster' || navform == 'ledgerAccAdditinalDetails' || navform=='accDeleteRulesForm' || navform=='accJournalAttrForm' || navform=='accLoanAttrForm' || navform=='accJournalSettingForm'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let ugld of uiGrpList\">\r\n <p class=\"headingCls\">{{uiGrpListDtl[ugld]}}</p>\r\n <div class=\"col-md-6\" *ngFor=\"let formF of uiGrpListDtl[ugld+'#T'];let i = index\">\r\n <div class=\"form-group\" style=\"margin-bottom: 45px !important;\">\r\n <label class=\"col-md-4 control-label\">{{uiGrpListDtl[ugld+'#D'][i]}}</label>\r\n <div class=\"col-md-8\" *ngIf=\"formF == 'n'\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"number\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n [value]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n (change)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\"\r\n [disabled]=\"uiGrpListDtl[ugld+'#E'][i] == 0 ? false : true\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\" *ngIf=\"formF == 't'\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n [value]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n (change)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\"\r\n [disabled]=\"uiGrpListDtl[ugld+'#E'][i] == 0 ? false : true\">\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <!-- added for testing only -->\r\n <div class=\"col-md-8\" *ngIf=\"formF == 'c'\">\r\n <div class=\"input-group w-100\">\r\n <select type=\"text\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n (change)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\">\r\n <option *ngFor=\"let key of attrCListDtl[uiGrpListDtl[ugld+'#V'][i] +'#D'];let j=index\"\r\n value=\"{{attrCListDtl[uiGrpListDtl[ugld+'#V'][i] +'#V'][j]}}\">{{key}}</option>\r\n </select>\r\n <!-- <p *ngFor=\"let a of attrCListDtl[uiGrpListDtl[ugld+'#V'][i] +'#V']\">{{a |json}}:\r\n {{attrCListDtl[uiGrpListDtl[ugld+'#V'][i] +'#V'] |json}}\r\n </p> -->\r\n <!-- <input type=\"text\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\" [value]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" (blur)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]])\"\r\n [disabled]=\"uiGrpListDtl[ugld+'#E'][i] == 0 ? false : true\"> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\" *ngIf=\"formF == 'q'\">\r\n <div class=\"input-group w-100\">\r\n <select type=\"text\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n (change)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\">\r\n <option *ngFor=\"let key of attrQListDtl[uiGrpListDtl[ugld+'#V'][i] +'#D'];let j=index\"\r\n value=\"{{attrQListDtl[uiGrpListDtl[ugld+'#V'][i] +'#D'][j]}}\">{{key}}</option>\r\n </select>\r\n <!-- <p *ngFor=\"let a of attrCListDtl[uiGrpListDtl[ugld+'#V'][i] +'#V']\">{{a |json}}:\r\n {{attrCListDtl[uiGrpListDtl[ugld+'#V'][i] +'#V'] |json}}\r\n </p> -->\r\n <!-- <input type=\"text\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\" [value]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" (blur)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]])\"\r\n [disabled]=\"uiGrpListDtl[ugld+'#E'][i] == 0 ? false : true\"> -->\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-8\" *ngIf=\"formF == 'sa'\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"sqlArray[uiGrpListDtl[ugld+'#V'][i]]\" #sfi=\"ngModel\"\r\n [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n (selected)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\"\r\n (filterInputChanged)=\"loadJnlSuggdata($event,uiGrpListDtl[ugld+'#V'][i],uiGrpListDtl[ugld+'#M'][i])\">\r\n </ng-select>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-8\" *ngIf=\"formF == 'd'\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"date\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n (change)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\"\r\n [value]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n [disabled]=\"uiGrpListDtl[ugld+'#E'][i] == 0 ? false : true\">\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\" *ngIf=\"formF == 'e'\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"email\" class=\"form-control\" name=\"{{uiGrpListDtl[ugld+'#V'][i]}}\"\r\n (change)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\"\r\n [value]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\" [(ngModel)]=\"dataDtl[uiGrpListDtl[ugld+'#V'][i]]\"\r\n (blur)=\"saveFun(uiGrpListDtl[ugld+'#V'][i],dataDtl[uiGrpListDtl[ugld+'#V'][i]],formF)\"\r\n [disabled]=\"uiGrpListDtl[ugld+'#E'][i] == 0 ? false : true\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"panel-body form\"\r\n *ngIf=\"navform == 'documentUploadMaster' && navform != 'menuAccessMaster' && navform != 'termUserAssignForm' && navform != 'setPasswordForm'\">\r\n <div class=\"row\">\r\n <form action=\"#\" class=\"form-horizontal form-bordered\">\r\n <div class=\"form-body\">\r\n\r\n <div class=\"col-md-4\">\r\n <select type=\"text\" class=\"form-control\" name=\"doctype\" [(ngModel)]=\"doctype\">\r\n <option *ngFor=\"let docs of documentUploadList\" value=\"{{docs}}\">{{documentUploadDtl[docs]}}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"fileinput fileinput-new\" data-provides=\"fileinput\">\r\n <span class=\"btn green btn-file\">\r\n <span> Upload </span>\r\n\r\n <input type=\"file\" name=\"...\" (change)=\"uploadDocs($event)\"> </span>\r\n <span class=\"fileinput-filename\"> </span> \r\n <a href=\"javascript:;\" class=\"close fileinput-exists\" data-dismiss=\"fileinput\"> </a>\r\n </div>\r\n <a *ngIf=\"routherDoc!=''\" style=\"cursor:pointer \" (click)=\"rediecttokyc()\"><b>\r\n << back</b></a>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p class=\"headingCls\">Existing Documents</p>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <table class=\"subDisplayTable\">\r\n <ng-container *ngFor=\"let docs of documentUploadList;let i = index \">\r\n <tr *ngIf=\"dataDtl[docs]!=undefined\">\r\n <td style=\"width: 10%\">{{documentUploadDtl[docs]}}</td>\r\n <td style=\"width: 90%;text-align: left\">\r\n <ng-container *ngFor=\"let docdtl of dataDtl[docs]\">\r\n <div class=\"fileinput fileinput-new\" *ngIf=\"doceditAction\" data-provides=\"fileinput\">\r\n <span class=\"btn-file\">\r\n <i class=\"fa fa-edit\" tooltip=\"Edit Document\" style=\"font-size:20px\"> </i>\r\n\r\n <input type=\"file\" name=\"...\" (change)=\"EditUploadDocs(docdtl,$event)\"> </span>\r\n <span class=\"fileinput-filename\"> </span> \r\n <a href=\"javascript:;\" class=\"close fileinput-exists\" data-dismiss=\"fileinput\"> </a>\r\n </div>\r\n\r\n \r\n <a><i class=\"fa fa-trash-o\" *ngIf=\"docdeleteAction\" (click)=\"ConfirmdeleteDoc(docdtl)\"\r\n style=\"font-size:20px;cursor: pointer\"> </i> </a> \r\n <a (click)=\"opendocs(docdtl)\"> <i class=\"fa fa-file-o\" style=\"font-size:20px\"> </i> </a>\r\n | \r\n </ng-container>\r\n\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n <div class=\"panel-body\"\r\n *ngIf=\"navform != 'documentUploadMaster' && navform == 'menuAccessMaster' && navform != 'termUserAssignForm' && navform != 'setPasswordForm' \">\r\n <div class=\"row\">\r\n <div class=\"col-md-2\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Application</label>\r\n <select class=\"form-control\" [(ngModel)]=\"application\" name=\"User\" (change)=\"loadUsrMdl(application)\">\r\n <option *ngFor=\"let app of applicationList\" value=\"{{app.k}}\">{{app.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" *ngIf=\"userDtls.length>0\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">User</label>\r\n <select class=\"form-control\" [(ngModel)]=\"User\" name=\"User\">\r\n <option *ngFor=\"let lov of userDtls\" value=\"{{lov.user_idn}}\">{{lov.username}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" *ngIf=\"moduleDtls.length>0 && userDtls.length >0 \">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Module</label>\r\n <select class=\"form-control\" [(ngModel)]=\"Module\" name=\"Module\">\r\n <option *ngFor=\"let lov of moduleDtls\" value=\"{{lov.module_idn}}\">{{lov.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 \">\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info\" style=\"margin-top: 23px;\"\r\n (click)=\"getUserRights(User,Module)\">Assign\r\n Rights\r\n </button>\r\n </div>\r\n </div>\r\n <div style=\"padding: 0 10px;\" *ngIf=\"menuList.length>0\">\r\n <div style=\"border:1px solid #e5e5e5;margin-top: 30px\">\r\n <div class=\"row\">\r\n <div class=\"panel panel-default\" style=\"margin-bottom: 25px;\">\r\n <div class=\"panel-heading\" style=\"padding: 0px;\">\r\n <h3 class=\"panel-title\" style=\"padding: 8px; font-size: 14px;\">Users</h3>\r\n <div class=\"col-md-2 chkAll\" style=\"margin: 0px;\">\r\n <div class=\"form-group\" style=\"padding: 10px;\">\r\n <div class=\"col-md-3\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" name=\"chkAll\" id=\"chkAll\"\r\n (change)=\"onChangeAll($event,User,Module)\"\r\n [checked]=\"(false !== (userRightsMenuList.length == (menuList.length + totMenu)) ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-4 control-label text-left\" style=\"padding-top: 8px;\r\n padding-left: 40px;\">All\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <form class=\"form-horizontal\">\r\n <div class=\"col-md-12\" *ngFor=\"let mdl of menuList;let i=index\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-1\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" name=\"chkMenu\" id=\"chkMenu{{mdl.menu_idn}}\"\r\n (change)=\"onChangeMenu($event,mdl.menu_idn,User,Module)\"\r\n [checked]=\"(false !== userRightsMenuList.includes(mdl?.menu_idn) ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-2 control-label text-left\" style=\"padding-top: 3px;\">{{mdl.menu}}</label>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"mdl.SubMenu.length > 0\">\r\n <div class=\"form-group\" *ngFor=\"let smdl of mdl.SubMenu\">\r\n <div class=\"col-md-1\" style=\"margin-left:10px;padding-left: 60px;\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" name=\"chkSubMenu\" id=\"chkSubMenu{{smdl.menu_idn}}\"\r\n (change)=\"onChangeSubMenu($event,smdl.menu_idn,mdl.menu_idn,User,Module)\"\r\n [checked]=\"( false !== userRightsMenuList.includes(smdl?.menu_idn) ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-4 control-label text-left\"\r\n style=\"padding-top: 8px; font-weight: 100;padding-left: 40px;\"> {{smdl.hdr}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"panel-body\" *ngIf=\"navform == 'webMenuAccessMaster'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-2\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Application</label>\r\n <select class=\"form-control\" [(ngModel)]=\"application\" name=\"User\" (change)=\"loadUsrMdl(application)\">\r\n <option *ngFor=\"let app of applicationList\" value=\"{{app.k}}\">{{app.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" *ngIf=\"userDtls.length>0\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">User</label>\r\n <select class=\"form-control\" [(ngModel)]=\"User\" name=\"User\">\r\n <option *ngFor=\"let lov of userDtls\" value=\"{{lov.user_idn}}\">{{lov.username}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\" *ngIf=\"moduleDtls.length>0 && userDtls.length >0 \">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding-left: 2px;\">Module</label>\r\n <select class=\"form-control\" [(ngModel)]=\"Module\" name=\"Module\">\r\n <option *ngFor=\"let lov of moduleDtls\" value=\"{{lov.module_idn}}\">{{lov.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2 \">\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info\" style=\"margin-top: 23px;\"\r\n (click)=\"getUserRights(User,Module)\">Assign\r\n Rights\r\n </button>\r\n </div>\r\n </div>\r\n <div style=\"padding: 0 10px;\" *ngIf=\"menuList.length>0\">\r\n <div style=\"border:1px solid #e5e5e5;margin-top: 30px\">\r\n <div class=\"row\">\r\n <div class=\"panel panel-default\" style=\"margin-bottom: 25px;\">\r\n <div class=\"panel-heading\" style=\"padding: 0px;\">\r\n <h3 class=\"panel-title\" style=\"padding: 8px; font-size: 14px;\">Users</h3>\r\n <div class=\"col-md-2 chkAll\" style=\"margin: 0px;\">\r\n <div class=\"form-group\" style=\"padding: 10px;\">\r\n <div class=\"col-md-3\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" name=\"chkAll\" id=\"chkAll\"\r\n (change)=\"onChangeAll($event,User,Module)\"\r\n [checked]=\"(false !== (userRightsMenuList.length == (menuList.length + totMenu)) ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-4 control-label text-left\" style=\"padding-top: 8px;\r\n padding-left: 40px;\">All\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <form class=\"form-horizontal\">\r\n <div class=\"col-md-12\" *ngFor=\"let mdl of menuList;let i=index\">\r\n <div class=\"form-group\">\r\n <div class=\"col-md-1\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" name=\"chkMenu\" id=\"chkMenu{{mdl.menu_idn}}\"\r\n (change)=\"onChangeWebMenu($event,mdl.menu_idn,User,Module)\"\r\n [checked]=\"(false == userRightsMenuList.includes(mdl?.menu_idn) ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-2 control-label text-left\" style=\"padding-top: 3px;\">{{mdl.menu}}</label>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"mdl.SubMenu.length > 0\">\r\n <div class=\"form-group\" *ngFor=\"let smdl of mdl.SubMenu\">\r\n <div class=\"col-md-1\" style=\"margin-left:10px;padding-left: 60px;\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" class=\"switch\" name=\"chkSubMenu\" id=\"chkSubMenu{{smdl.menu_idn}}\"\r\n (change)=\"onChangeWebSubMenu($event,smdl.menu_idn,mdl.menu_idn,User,Module)\"\r\n [checked]=\"( false == userRightsMenuList.includes(smdl?.menu_idn) ? 'checked' : '')\">\r\n <span></span>\r\n </label>\r\n </div>\r\n <label class=\"col-md-4 control-label text-left\"\r\n style=\"padding-top: 8px; font-weight: 100;padding-left: 40px;\"> {{smdl.hdr}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"panel-body\" style=\"background: #fff;min-height: 550px;\"\r\n *ngIf=\"navform != 'addtionalDtlMaster' && navform != 'documentUploadMaster' && navform != 'menuAccessMaster' && navform == 'termUserAssignForm' && navform != 'setPasswordForm' \">\r\n <div class=\"row\" style=\"margin-top: 10px;\">\r\n <div class=\"col-md-2\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\">Terms</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1\" style=\"margin-left: 85px;\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\">Users</label>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let term of termsList; let i=index;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"form-group\">\r\n\r\n <label for=\"{{term.buyer_terms_idn}}\" class=\"control-label\"\r\n style=\"padding: 10px;\">{{term.dsc}}</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"term.userIdnList != undefined\">\r\n <div class=\"form-group w-100\">\r\n <div class=\"input-group w-100\">\r\n\r\n <!-- <ng-select [items]=\"applUserList\" [multiple]=\"true\" [addTag]=\"addTag\" (change)=\"onchaneVals(null,term.buyer_terms_idn,term.userIdnList)\"\r\n bindLabel=\"v\" bindValue=\"k\" name=\"{{term ?.buyer_terms_idn}}\" [(ngModel)]=\"term.userIdnList\">\r\n </ng-select> -->\r\n <ng-select placeholder=\"Select user\" [options]=\"term.TermUserList\" [(ngModel)]=\"term.userIdnList\"\r\n (deselected)=\"onchangeUserList($event,term,'delete')\"\r\n (selected)=\"onchangeUserList($event,term,'add')\" name=\"status\" [multiple]=\"true\"\r\n [allowClear]=\"true\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"panel-body\" style=\"background: #fff;min-height: 550px;\"\r\n *ngIf=\"navform != 'addtionalDtlMaster' && navform != 'documentUploadMaster' && navform != 'menuAccessMaster' && navform != 'termUserAssignForm' && navform == 'setPasswordForm' \">\r\n <div class=\"row\" style=\"margin-top: 10px;\">\r\n <div class=\"col-md-12\">\r\n <p class=\"headingCls\">Change User Password</p>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding: 8px;\">Username</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1\" style=\"margin-left: 85px;\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding: 8px;\">Password</label>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let user of userDetails; let i=index;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"form-group\">\r\n <label class=\"control-label\" style=\"padding: 10px;font-weight: normal;\">{{user?.username}}</label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"form-group w-100\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"user.password\" [value]=\"user?.password\" />\r\n <!-- (blur)=\"changePswd($event,user.userIdn)\" -->\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <div class=\"form-group\">\r\n <button type=\"submit\" class=\"btn btn-success\" (click)=\"changePassword(user)\">save</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- <button type=\"submit\" class=\"btn btn-success\" (click)=\"saveAppUserterms(applUsrLst)\">save</button> -->\r\n </div>\r\n <div class=\"panel-body\" style=\"background: #fff;min-height: 550px;\" *ngIf=\"navform=='ledgerBankDetails'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" style=\"margin:5px\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-2 control-label\">Bank</label>\r\n <div class=\"col-md-4\">\r\n <ng-select placeholder=\"Select Bank\" [options]=\"bankList\" [(ngModel)]=\"bank\" name=\"bank\"\r\n (selected)=\"getBankBranch(bank)\" (filterInputChanged)=\"ledgerBankDetails($event)\"\r\n [allowClear]=\"true\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin:5px\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-2 control-label\">Branch Details</label>\r\n <div class=\"col-md-4\">\r\n <select name=\"branch\" (change)=\"selectBranch(branch)\" [(ngModel)]=\"branch\" class=\"form-control\">\r\n <option value=\"\">Select branch</option>\r\n <option *ngFor=\"let bnkDtl of bankDtlList\" [ngValue]=\"bnkDtl.nme_idn\">{{bnkDtl.person_nme}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"selectBranchAddress!=''\" style=\"margin:5px\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-2 control-label\"> </label>\r\n <div class=\"col-md-4\">\r\n <div class=\"col-md-3\">Address:</div>\r\n <div class=\"col-md-9\">{{selectBranchAddress}}</div>\r\n <div class=\"col-md-3\">IFSC Code:</div>\r\n <div class=\"col-md-9\">{{selectIfsc}}</div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin:5px\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-2 control-label\">Account Type</label>\r\n <div class=\"col-md-4\">\r\n <select name=\"accountType\" [(ngModel)]=\"accountType\" class=\"form-control\">\r\n <option value=\"current\">Current</option>\r\n <option value=\"savings\">Savings</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin:5px\">\r\n <div class=\"form-group w-100\">\r\n <label class=\"col-md-2 control-label\">Account No</label>\r\n <div class=\"col-md-4\">\r\n <textarea class=\"form-control\" cols=\"45\" rows=\"2\" name=\"accountno\" [(ngModel)]=\"accountno\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12\" style=\"margin:5px\">\r\n <div class=\"form-group w-100\">\r\n <div class=\"col-md-2\"> </div>\r\n <div class=\"col-md-4\">\r\n <button type=\"button\" *ngIf=\"editbank_dtl_idn==''\" (click)=\"SaveLedgerBank()\"\r\n class=\"btn btn-success\">Add</button>\r\n <button type=\"button\" *ngIf=\"editbank_dtl_idn!=''\" (click)=\"SaveLedgerBank()\"\r\n class=\"btn btn-success\">Edit</button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"exitBankDtlList.length>0\">\r\n <div class=\"col-md-1 pull-left\">\r\n \r\n </div>\r\n <div class=\"col-md-6 pull-right\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"searchF\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"exitBankDtlList.length>0\">\r\n <div class=\"col-md-12\">\r\n <table class=\"displayTable\">\r\n <thead>\r\n <th>Actions</th>\r\n <th>Account Type</th>\r\n <th>Account No</th>\r\n <th>Name</th>\r\n <th>Branch</th>\r\n <th>Address</th>\r\n <th>IFSC Code</th>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let bankdtl of exitBankDtlList ; let i = index\">\r\n <tr [ngClass]=\"{'even':i%2==0,'odd':i%2==1}\">\r\n <td> <i class=\"fa fa-edit\" (click)=\"loadEditBankDtl(bankdtl)\" tooltip=\"Edit Bank\"\r\n style=\"font-size:15px;cursor: pointer\"> </i> |\r\n <i class=\"fa fa-trash-o\" (click)=\"ConfirmDeleteLedgerBank(bankdtl)\" tooltip=\"Delete Bank\"\r\n style=\"font-size:15px;cursor: pointer\"> </i>\r\n <td>{{bankdtl.accountType}}</td>\r\n <td>{{bankdtl.accountNo}}</td>\r\n <td>{{bankdtl.bankname}}</td>\r\n <td>{{bankdtl.branchname}}</td>\r\n <td>{{bankdtl.address}}</td>\r\n <td>{{bankdtl.ifsc}}</td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal\" id=\"datamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" #f=\"ngForm\" name=\"appForm\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #closebtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">{{btnName}} Record</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let fl of formFilds | orderByPipe: 'srt': 'asc'\">\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 't' && fl?.is_hidden == 0 && fl?.dta_typ =='c' || fl?.dta_typ =='t'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" class=\"form-control posrel\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\" #textInput=\"ngModel\"\r\n (blur)=\"chkFun(fl,fl.default_value);\" [required]=\"fl?.is_compulsory == '1'\" />\r\n <span class=\"fa fa-{{ico}} eye\" [ngStyle]=\"{'color':ico == 'check' ? 'green' : 'red' }\"\r\n *ngIf=\"usrisExist && onErr == fl.form_field \"></span>\r\n </div>\r\n <div *ngIf=\"textInput.invalid && (textInput.dirty || textInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.is_hidden == 0 && fl?.dta_typ =='n'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"number\" class=\"form-control\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #numberInput=\"ngModel\" [required]=\"fl?.is_compulsory==1\">\r\n </div>\r\n <div *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"numberInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n <div *ngIf=\"numberInput.invalid && (numberInput.dirty || numberInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"numberInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\"\r\n *ngIf=\"fl?.form_field_typ == 'pw' && fl?.is_hidden == 0 && fl?.dta_typ =='pw'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"{{inputtype}}\" class=\"form-control posrel\" name=\"{{fl?.form_field}}\"\r\n [value]=\"fl?.default_value\" [(ngModel)]=\"fl.default_value\" #passInput=\"ngModel\"\r\n [required]=\"fl?.is_compulsory == '1'\" />\r\n <span class=\"fa {{eveC}} eye\" (click)=\"showHIdePass();\"></span>\r\n </div>\r\n <div *ngIf=\"passInput.invalid && (passInput.dirty || passInput.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"passInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='a'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n\r\n <!-- <ng-select [items]=\"[]\" [addTag]=\"true\" bindValue=\"label\" [multiple]=\"true\" name=\"{{fl?.form_field}}\"\r\n [(ngModel)]=\"fl.default_value\" [isOpen]=\"false\" #afield=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n </ng-select> -->\r\n\r\n <!-- <ng-select style=\"z-index: 5;\" [options]=\"[]\" [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\"\r\n #afield=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n </ng-select> last commented-->\r\n\r\n <!-- <tag-input [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\" [modelAsStrings]=\"true\"\r\n [allowDupes]=\"true\" [editable]='true'></tag-input> -->\r\n\r\n\r\n </div>\r\n <!-- <div *ngIf=\"afield.invalid && (afield.dirty || afield.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"afield.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='sr'\">\r\n <div class=\"row\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <!-- <ng-select [items]=\"sqlArray[fl.form_field]\" [dropdownPosition]=\"'bottom'\" bindLabel=\"v\"\r\n [(ngModel)]=\"pageDisplay\" [ngModelOptions]=\"{standalone: true}\">\r\n </ng-select> -->\r\n <ng-select style=\"z-index: 5;\" [options]=\"sqlArray[fl.form_field]\" [(ngModel)]=\"pageDisplay\"\r\n name=\"{{fl?.form_field}}\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <button class=\"btn btn-info\" type=\"button\" style=\"width:100%;\"\r\n (click)=\"addAttr(pageDisplay, sqlArray[fl.form_field], fl.default_value);\">Add</button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <label class=\"col-md-3 control-label\">Selected Modules</label>\r\n <div cclass=\"col-md-9\">\r\n <div class=\"mds\">\r\n <ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\r\n <span\r\n style=\"padding: 4px;border: 1px solid #c9c9c9;border-radius: 6px;display: inline-block;width: 100%;position: relative;\">\r\n <span>{{index+1}}</span> - {{item.value}}\r\n <span class=\"rm\" (click)=\"remove(fl.default_value,item.value,index,fl?.form_field);\">\r\n <i class=\"fa fa-times\" aria-hidden=\"true\"></i>\r\n </span>\r\n </span>\r\n </ng-template>\r\n <div class=\"row\">\r\n <div>\r\n <bs-sortable [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\"\r\n [itemTemplate]=\"itemTemplate\" itemClass=\"sortable-item\"\r\n itemActiveClass=\"sortable-item-active\" placeholderClass=\"placeholderStyle\"\r\n wrapperClass=\"sortable-wrapper\" #srf=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n </bs-sortable>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"srf.invalid && (srf.dirty || srf.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"srf.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ =='sa'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <!-- <ng-select [items]=\"sqlArray[fl.form_field]\" [addTag]=\"addTag\" bindValue=\"k\" [hideSelected]=\"true\"\r\n multiple=\"true\" bindLabel=\"v\" name=\"{{fl?.form_field}}\" [(ngModel)]=\"fl.default_value\"\r\n #safield=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n </ng-select> -->\r\n\r\n <ng-select style=\"z-index: 5;\" [options]=\"sqlArray[fl.form_field]\"\r\n [(ngModel)]=\"fl.default_value\" [multiple]=\"true\" [allowClear]=\"true\" name=\"{{fl?.form_field}}\"\r\n #safield=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <ng-template #optionTemplate let-option=\"option\">\r\n <div class=\"famfamfam-flags {{option?.value}}\"></div>\r\n {{option?.label}}\r\n </ng-template>\r\n </ng-select>\r\n\r\n </div>\r\n <div *ngIf=\"safield.invalid && (safield.dirty || safield.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"safield.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'ta' && fl?.is_hidden == 0 && fl?.dta_typ =='c'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <textarea class=\"form-control\" rows=\"3\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #textArea=\"ngModel\" (blur)=\"chkFun(fl,fl.default_value);\"\r\n [ngClass]=\"{'uniqErrMsg': fl?.form_field == onErr}\"\r\n [required]=\"fl?.is_compulsory == '1'\"></textarea>\r\n </div>\r\n <div *ngIf=\"textArea.invalid && (textArea.dirty || textArea.touched)\"\r\n class=\"alert alert-danger ca\">\r\n <div *ngIf=\"textArea.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"fl?.form_field_typ == 'hd' || fl?.form_field_typ == 'hc' || fl?.form_field_typ == 'df' || fl?.form_field_typ == 'fk' || fl?.form_field_typ == 'ck' && fl?.is_hidden == 0\"\r\n [ngClass]=\"{'mt0': fl?.form_field_typ == 'hd'}\">\r\n <input type=\"hidden\" class=\"form-control\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #hdf=\"ngModel\" />\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'sq' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\"></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"hidden\" class=\"form-control\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'tb' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #tdf=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\" value=\"{{dynamic.value}}\">\r\n {{dynamic.label}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"tdf.invalid && (tdf.dirty || tdf.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"tdf.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'l' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #lInput=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let lov of fl.kv\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"lInput.invalid && (lInput.dirty || lInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"lInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'ld' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control select\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #ldInput=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\" value=\"{{dynamic.value}}\">\r\n {{dynamic.label}}</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"ldInput.invalid && (ldInput.dirty || ldInput.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"ldInput.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 's' && fl?.is_hidden == 0\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <ng-select class=\"form-control select\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" (change)=\"chkFun(fl,fl.default_value)\" id=\"{{fl.column_key}}\"\r\n #sfi=\"ngModel\" [required]=\"fl?.is_compulsory == '1'\">\r\n <option *ngFor=\"let dynamic of sqlArray[fl.form_field]\" value=\"{{dynamic.value}}\">\r\n {{dynamic.label}}</option>\r\n </ng-select>\r\n </div>\r\n <div *ngIf=\"sfi.invalid && (sfi.dirty || sfi.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"sfi.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\" *ngIf=\"fl?.form_field_typ == 'sb'\">\r\n <label class=\"col-md-3 control-label\">{{fl?.form_field_title}}\r\n <span class=\"text-danger\" *ngIf=\"fl.is_compulsory == 1\">*</span>\r\n </label>\r\n <div class=\"col-md-8\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"sqlArray[fl.form_field]\" #sfi=\"ngModel\"\r\n [(ngModel)]=\"fl.default_value\" name=\"{{fl?.form_field}}\"\r\n (selected)=\"chkFun(fl,fl.default_value)\"\r\n (filterInputChanged)=\"loadSuggdata($event,fl.page_item_idn,fl.form_field)\">\r\n </ng-select>\r\n </div>\r\n <div *ngIf=\"sfi.invalid && (sfi.dirty || sfi.touched)\" class=\"alert alert-danger ca\">\r\n <div *ngIf=\"sfi.errors.required\">\r\n {{fl.form_field_title}} is required.\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1\" *ngIf=\"fl?.form_field_icon == 'add'\">\r\n <button type=\"button\" class=\"btn btn-success btn-rounded\"><span><i\r\n class=\"fa fa-plus\"></i></span></button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"submit\" class=\"btn btn-success\" (click)=\"submitForm(f,submitBtn)\" appAppNoDblClick\r\n #submitBtn>{{btnName}}</button>\r\n <button type=\"reset\" class=\"btn btn-danger\" (click)=\"reset(f)\" *ngIf=\"btnName == 'Add'\">Reset</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal\" id=\"deleteTermsmodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #deleteclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete term?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\" (click)=\"DeleteTerms();\">Delete</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"deletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #deleteclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\"\r\n (click)=\"deleteDataList();\">Delete</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal\" id=\"modal_sys\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\">\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">Basic Modal</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Some content in modal example\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal\" id=\"rowGrpmodal\" tabindex=\"-2\" role=\"dialog\" aria-labelledby=\"rowGrpmodal\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" #frg=\"ngForm\" name=\"appFormRowGrp\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #closebtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"rowGrpHead\">Row Group</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" style=\"padding-bottom: 10px;\">\r\n <label class=\"col-md-2 control-label\">Attributes</label>\r\n <label class=\"col-md-5 control-label\" style=\"padding-right: 90px;\">Row Display</label>\r\n <label class=\"col-md-5 control-label\" style=\"padding-right: 76px;\">Row Group </label>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\" *ngFor=\"let att of display_attr;\">\r\n <label class=\"col-md-2 control-label\">{{att.attr}}</label>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"att.display_row\" [disabled]=\"disableselc\"\r\n id=\"row_{{att.attr}}\" [value]=\"att.display_row\" (change)=\"onChangeDispRow($event)\">\r\n <!-- [value]=\"att.display_row\" -->\r\n <option *ngFor=\"let dr of display_row;\" value=\"{{dr.idn}}\">{{dr.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"att.display_group\" [disabled]=\"disableselc\"\r\n id=\"grp_{{att.attr}}\" [value]=\"att.display_group\" (change)=\"onChangeDispGrp($event)\">\r\n <option *ngFor=\"let dg of display_group;\" value=\"{{dg.idn}}\">{{dg.print}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"reset\" class=\"btn btn-danger\" data-dismiss=\"modal\">close</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"modal\" id=\"productDetailMapMD\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm mwidth\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #productMapclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\" productDetailMapclsbtn>Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Product Mapping of {{producDetailModelTitle}}</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th>\r\n Name\r\n </th>\r\n <th>\r\n Value\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let key of attrDtl?.prpList\">\r\n <tr>\r\n <td>\r\n {{key.print}}\r\n </td>\r\n <td>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"attrMappingDtl[key?.val]\" />\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\" #productDetailMapclsbtn>Close</button>\r\n <button type=\"button\" class=\"btn btn-success\" data-dismiss=\"modal\"\r\n (click)=\"saveProductDetailMapping();\">Save</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"docdeletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #deleteclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\" (click)=\"deleteDoc();\">Delete</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal\" id=\"bnkdeletemodal\" role=\"dialog\" aria-labelledby=\"smallModalHead\" aria-hidden=\"true\"\r\n data-backdrop=\"static\" data-keyboard=\"false\">\r\n <div class=\"modal-dialog modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" (click)=\"closeNull();\" #deleteclsbtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"smallModalHead\">Warning</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n Are you sure want to delete?\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">Close</button>\r\n <button type=\"button\" class=\"btn btn-danger\" data-dismiss=\"modal\"\r\n (click)=\"DeleteLedgerBank()\">Delete</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button id=\"bnkdeletemodalbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#bnkdeletemodal\"></button>\r\n\r\n <button id=\"docdeletebtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#docdeletemodal\"></button>\r\n <button id=\"deletebtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#deletemodal\"></button>\r\n <button id=\"deleteTerms\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#deleteTermsmodal\"></button>\r\n\r\n <button id=\"datamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"clsMd\" [hidden]=\"true\" data-dismiss=\"modal\" data-target=\"#datamodal\"></button>\r\n <button id=\"sysmd\" [hidden]=\"true\" data-dismiss=\"modal\" data-target=\"#modal_sys\"></button>\r\n <button id=\"btnproductDetailMapMD\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#productDetailMapMD\"></button>\r\n\r\n <button id=\"rowGrpbtn\" [hidden]=\"true\" data-dismiss=\"modal\" data-toggle=\"modal\" data-target=\"#rowGrpmodal\"></button>\r\n </div>","import { Component, OnInit } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n// import { SelectModule } from 'ng-select/public_api';\r\nimport { document } from 'ngx-bootstrap';\r\n// import { AsyncLocalStorage } from 'async_hooks';\r\n\r\n@Component({\r\n selector: 'app-report-format',\r\n templateUrl: './report-format.component.html',\r\n styleUrls: ['./report-format.component.css']\r\n})\r\nexport class ReportFormatComponent implements OnInit {\r\n\r\n cDt = new Date();\r\n\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n public cs: CommanServiceService\r\n ) { }\r\n\r\n header;\r\n config;\r\n configBody;\r\n cUrl;\r\n reportFormatDetails;\r\n modulesList;\r\n typesList;\r\n dropdownListBank;\r\n dropdownSettingsBank;\r\n hashtagsList;\r\n validationTags = [];\r\n // ngModels\r\n moduleVal;\r\n name;\r\n description;\r\n typeVal;\r\n selectedItemsBank;\r\n tags;\r\n title;\r\n emailTo;\r\n emailCC;\r\n emailBCC;\r\n mailHeaderpg1;\r\n mailHeaderpg2;\r\n mailHeaderpg3;\r\n mailBodypg1;\r\n mailBodypg2;\r\n mailBodypg3;\r\n mailFooterpg1;\r\n mailFooterpg2;\r\n mailFooterpg3;\r\n report_idn;\r\n searchF;\r\n tblH = [\"report_idn\", \"report_name\", \"title\", \"type\", \"bank_name\", \"module_name\", \"tags\"];\r\n tblDesc = {\r\n \"report_idn\": \"ID\",\r\n \"report_name\": \"Name\",\r\n \"title\": \"Title\",\r\n \"type\": \"Type\",\r\n \"bank_name\": \"Banks\",\r\n \"module_name\": \"Module\",\r\n \"tags\": \"Tags\"\r\n };\r\n pageSize = 25;\r\n p = 1;\r\n showarr;\r\n order = '';\r\n reverse = false;\r\n page;\r\n pages = [\"pg1\", \"pg2\", \"pg3\"];\r\n\r\n setPage(val) {\r\n this.page = val;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n let mdlk ;\r\n // let mdlk = JSON.parse(AsyncLocalStorage.arguments('mdlKey'));\r\n this.cUrl = this.router.url;\r\n\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n\r\n // rich text editor configuration\r\n this.config = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '8rem',\r\n minHeight: '8rem',\r\n translate: 'no',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: 'Arial',\r\n sanitize: false,\r\n };\r\n\r\n this.configBody = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '15rem',\r\n minHeight: '15rem',\r\n translate: 'no',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: 'Arial',\r\n sanitize: false,\r\n };\r\n\r\n this.dropdownSettingsBank = {\r\n singleSelection: false,\r\n text: \"Select Bank\",\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n enableSearchFilter: true,\r\n };\r\n\r\n this.getReportData();\r\n this.getReportFields();\r\n }\r\n\r\n // Get report data\r\n getReportData() {\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n this.header['method'] = 'getReportFormatDetails';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'admin/reportFormat').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n this.reportFormatDetails = response.result.reportFormatDetails.reverse();\r\n }\r\n }).catch((err => {\r\n console.log(err);\r\n }));\r\n }\r\n\r\n //Get form data\r\n getReportFields() {\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n this.header['method'] = 'loadReportFormatData';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'admin/reportFormat').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n let result = response.result\r\n //module list\r\n this.modulesList = result.moduleList.map(z => ({\r\n value: z.module_id.toString(),\r\n label: z.module_name\r\n }));\r\n //banks list\r\n this.dropdownListBank = result.bankList.map(x => ({\r\n id: x.bank_id,\r\n itemName: x.bank_name\r\n }));\r\n //types list\r\n this.typesList = result.report_typeList.map(y => ({\r\n value: y.k,\r\n label: y.v\r\n }));\r\n this.hashtagsList = result.report_hashtagsList;\r\n this.showGuide();\r\n }\r\n })\r\n }\r\n\r\n // Open form window\r\n openForm() {\r\n this.page = \"pg1\";\r\n delete this.report_idn;\r\n delete this.moduleVal;\r\n delete this.name;\r\n delete this.description;\r\n delete this.typeVal;\r\n delete this.selectedItemsBank;\r\n delete this.tags;\r\n delete this.title;\r\n delete this.emailTo;\r\n delete this.emailCC;\r\n delete this.emailBCC;\r\n delete this.mailHeaderpg1;\r\n delete this.mailHeaderpg2;\r\n delete this.mailHeaderpg3;\r\n delete this.mailBodypg1;\r\n delete this.mailBodypg2;\r\n delete this.mailBodypg3;\r\n delete this.mailFooterpg1;\r\n delete this.mailFooterpg2;\r\n delete this.mailFooterpg3;\r\n document.getElementById('datamdbtn').click();\r\n document.getElementById('defModalHead').innerHTML = \"Report Format\";\r\n }\r\n\r\n // Open edit form window\r\n editForm(report) {\r\n console.log(report);\r\n this.page = \"pg1\";\r\n this.report_idn = report.report_idn;\r\n document.getElementById('datamdbtn').click();\r\n document.getElementById('defModalHead').innerHTML = \"Edit Report Format \" + report.report_idn;\r\n this.moduleVal = report.module_idn.toString();\r\n this.selectedItemsBank = [];\r\n for (let x = 0; x < report.bank_idn.length; x++) {\r\n for (let i = 0; i < this.dropdownListBank.length; i++) {\r\n if (this.dropdownListBank[i].id == report.bank_idn[x]) {\r\n this.selectedItemsBank.push(this.dropdownListBank[i]);\r\n }\r\n }\r\n }\r\n this.name = report.report_name;\r\n this.description = report.description;\r\n this.typeVal = report.type;\r\n this.title = report.title;\r\n this.tags = [];\r\n this.tags = report.tags.map(x => ({\r\n display: x,\r\n value: x\r\n }));;\r\n this.emailTo = [];\r\n this.emailTo = report.mail_list.to.map(y => ({\r\n display: y,\r\n value: y\r\n }));;\r\n this.emailCC = [];\r\n this.emailCC = report.mail_list.cc.map(z => ({\r\n display: z,\r\n value: z\r\n }));;;\r\n this.emailBCC = [];\r\n this.emailBCC = report.mail_list.bcc.map(c => ({\r\n display: c,\r\n value: c\r\n }));;;\r\n this.mailHeaderpg1 = report.header['pg1'];\r\n this.mailHeaderpg2 = report.header['pg2'];\r\n this.mailHeaderpg3 = report.header['pg3'];\r\n this.mailBodypg1 = report.body['pg1'];\r\n this.mailBodypg2 = report.body['pg2'];\r\n this.mailBodypg3 = report.body['pg3'];\r\n this.mailFooterpg1 = report.footer['pg1'];\r\n this.mailFooterpg2 = report.footer['pg2'];\r\n this.mailFooterpg3 = report.footer['pg3'];\r\n }\r\n\r\n // Submit form\r\n formSubmit() {\r\n if (this.moduleVal && this.name && this.description &&\r\n this.typeVal && this.tags && this.title && this.emailTo.length != 0 &&\r\n this.mailHeaderpg1 && this.mailBodypg1 && this.mailFooterpg1) {\r\n if (this.validateTags(this.mailBodypg1, 'rtBody') && this.validateTags(this.mailBodypg2, 'rtBody')\r\n && this.validateTags(this.mailBodypg3, 'rtBody') && this.validateTags(this.mailHeaderpg1, 'rtHeader')\r\n && this.validateTags(this.mailHeaderpg2, 'rtHeader') && this.validateTags(this.mailHeaderpg3, 'rtHeader')\r\n && this.validateTags(this.mailFooterpg1, 'rtFooter') && this.validateTags(this.mailFooterpg2, 'rtFooter')\r\n && this.validateTags(this.mailFooterpg3, 'rtFooter') && this.validateTagAndEmail(this.emailTo, 'to')\r\n && this.validateTagAndEmail(this.emailCC, 'cc') && this.validateTagAndEmail(this.emailBCC, 'bcc')\r\n && this.validateTags(this.title, 'title')) {\r\n\r\n let newBankList = [];\r\n let newTagsList = [];\r\n let newToList = [];\r\n let newCCList = [];\r\n let newBCCList = [];\r\n\r\n // converting json arrays to arrays\r\n for (let i = 0; i < this.tags.length; i++) {\r\n newTagsList.push(this.tags[i].value);\r\n }\r\n for (let i = 0; i < this.emailTo.length; i++) {\r\n newToList.push(this.emailTo[i].value);\r\n }\r\n if (this.selectedItemsBank) {\r\n for (let i = 0; i < this.selectedItemsBank.length; i++) {\r\n newBankList.push(this.selectedItemsBank[i].id);\r\n }\r\n }\r\n if (this.emailCC) {\r\n for (let i = 0; i < this.emailCC.length; i++) {\r\n newCCList.push(this.emailCC[i].value);\r\n }\r\n }\r\n if (this.emailBCC) {\r\n for (let i = 0; i < this.emailBCC.length; i++) {\r\n newBCCList.push(this.emailBCC[i].value);\r\n }\r\n }\r\n\r\n console.log(newTagsList);\r\n console.log(newToList);\r\n console.log(newCCList);\r\n console.log(newBCCList);\r\n\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];\r\n reqObj['report_idn'] = this.report_idn;\r\n reqObj['module_idn'] = this.moduleVal;\r\n reqObj['name'] = this.name;\r\n reqObj['description'] = this.description;\r\n reqObj['type'] = this.typeVal;\r\n reqObj['bankIdnList'] = newBankList;\r\n reqObj['tagsList'] = newTagsList;\r\n reqObj['title'] = this.title;\r\n reqObj['to'] = newToList;\r\n reqObj['cc'] = newCCList;\r\n reqObj['bcc'] = newBCCList;\r\n reqObj['header'] = {\r\n 'pg1': this.mailHeaderpg1,\r\n 'pg2': this.mailHeaderpg2,\r\n 'pg3': this.mailHeaderpg3,\r\n }\r\n reqObj['body'] = {\r\n 'pg1': this.mailBodypg1,\r\n 'pg2': this.mailBodypg2,\r\n 'pg3': this.mailBodypg3,\r\n }\r\n reqObj['footer'] = {\r\n 'pg1': this.mailFooterpg1,\r\n 'pg2': this.mailFooterpg2,\r\n 'pg3': this.mailFooterpg3,\r\n }\r\n console.log(JSON.stringify(reqObj));\r\n this.header['method'] = 'saveReportFormatData';\r\n // let options = new RequestOptions({ headers: this.header });\r\n // let options = new HttpHeaders({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.cs.load(reqObj, options, 'admin/reportFormat').then((response: any) => {\r\n console.log(response);\r\n if (response.status == 'SUCCESS') {\r\n // alert(response.message);\r\n document.getElementById(\"closeButton\").click();\r\n this.getReportData();\r\n }\r\n }).catch((err) => {\r\n // alert(\"An error has occurred\");\r\n console.log(err);\r\n });\r\n } \r\n }\r\n \r\n }\r\n\r\n // Show legend and create array of hashtags\r\n showGuide() {\r\n document.getElementById('guide').innerHTML = \"\";\r\n this.hashtagsList.sort(function (a, b) {\r\n a = a.v.toLowerCase();\r\n b = b.v.toLowerCase();\r\n\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n })\r\n\r\n let hashList = this.hashtagsList;\r\n for (let i = 0; i < hashList.length; i++) {\r\n document.getElementById('guide').innerHTML += \"<mark>\" + hashList[i].k + \"</mark> \" + hashList[i].v + \" \";\r\n this.validationTags.push(hashList[i].k);\r\n this.validationTags.push(hashList[i].k + ',');\r\n this.validationTags.push(hashList[i].k + '.');\r\n }\r\n }\r\n\r\n // validating hashtags\r\n validateTags(newValue, id) {\r\n let tagsToValidate = this.validationTags;\r\n // let button = <HTMLInputElement>document.getElementById(\"submitBtn\");\r\n let button ;\r\n let tmp = document.createElement(\"DIV\");\r\n tmp.innerHTML = newValue;\r\n newValue = tmp.textContent || tmp.innerText || \"\";\r\n let tags = newValue.match(/#\\S+/g);\r\n if (tags != null && !tags.every(function (tag) {\r\n if (tagsToValidate.indexOf(tag) !== -1) {\r\n return true;\r\n }\r\n else return false;\r\n })) {\r\n document.getElementById(id + \"Error\").innerHTML = \"Please enter a valid hashtag\";\r\n button.disabled = true;\r\n return false;\r\n }\r\n else {\r\n document.getElementById(id + \"Error\").innerHTML = \"\";\r\n button.disabled = false;\r\n return true;\r\n }\r\n }\r\n\r\n // validating tags and email for email fields\r\n validateTagAndEmail(tags, id) {\r\n let tagsToValidateNew = this.validationTags;\r\n // let button = <HTMLInputElement>document.getElementById(\"submitBtn\");\r\n let button ;\r\n if (tags != null && !tags.every(function (tag) {\r\n if (tag.value.includes(\"@\")) {\r\n return true;\r\n }\r\n if (tag.value.match(/#\\S+/g) != null) {\r\n if (tagsToValidateNew.indexOf(tag.value) !== -1 && tag.value.includes(\"Email\")) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else return false;\r\n })) {\r\n document.getElementById(id + \"Error\").innerHTML = \"Please enter a valid hashtag or email\";\r\n button.disabled = true;\r\n return false;\r\n }\r\n else {\r\n document.getElementById(id + \"Error\").innerHTML = \"\";\r\n button.disabled = false;\r\n return true;\r\n }\r\n }\r\n\r\n onPageSizeChange(p) {\r\n if (p == 'All') {\r\n this.pageSize = this.reportFormatDetails.length;\r\n } else {\r\n this.pageSize = p;\r\n }\r\n }\r\n\r\n //sorting\r\n setOrder(value: string, i) {\r\n console.log(value);\r\n console.log(i);\r\n this.showarr = i;\r\n if (this.order === value) {\r\n this.reverse = !this.reverse;\r\n }\r\n this.order = value;\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"mt\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">Report Format\r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n <button type=\"button\" id=\"addBtn\" class=\"btn btn-info pull-right\" (click)=\"openForm()\">Add</button>\r\n </div>\r\n </div>\r\n <!-- Data table -->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size </label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\"\r\n (change)=\"onPageSizeChange(pageSize)\">\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\"\r\n [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-bordered table-hover table-hover-cells\">\r\n <thead>\r\n <tr>\r\n <th>Edit</th>\r\n <th *ngFor=\"let tbh of tblH; let i = index\" (click)=\"setOrder(tbh,i)\">\r\n {{tblDesc[tbh]}}\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === i\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === i\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n <th>To</th>\r\n <th>CC</th>\r\n <th>BCC</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let report of reportFormatDetails | orderBy:order:reverse | searchPipe:searchF | paginate: { itemsPerPage: pageSize, currentPage: p }; let i = index;\">\r\n <td><span (click)=\"editForm(report)\" class=\"fa fa-pencil\"></span></td>\r\n <td>{{report.report_idn}}</td>\r\n <td>{{report.report_name}}</td>\r\n <td>{{report.title}}</td>\r\n <td>{{report.type}}</td>\r\n <td>{{report.bank_name}}</td>\r\n <td>{{report.module_name}}</td>\r\n <td>{{report.tags}}</td>\r\n <td>{{report.mail_list.to}}</td>\r\n <td>{{report.mail_list.cc}}</td>\r\n <td>{{report.mail_list.bcc}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <pagination-controls (pageChange)=\"p = $event\" class=\"pull-right\"></pagination-controls>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- pop up form -->\r\n<div class=\"modal\" id=\"datamodal\" role=\"dialog\" aria-labelledby=\"defModalHead\" aria-hidden=\"true\" data-backdrop=\"static\"\r\n data-keyboard=\"false\">\r\n <div class=\"modal-dialog\" style=\"width: 80%\">\r\n <div class=\"modal-content\">\r\n <form class=\"form-horizontal\" id=\"reportForm\">\r\n <div class=\"modal-header\">\r\n <button type=\"button\" id='closeButton' class=\"close\" data-dismiss=\"modal\" #closebtn>\r\n <span aria-hidden=\"true\">×</span>\r\n <span class=\"sr-only\">Close</span>\r\n </button>\r\n <h4 class=\"modal-title\" id=\"defModalHead\">Report Format</h4>\r\n </div>\r\n <div class=\"modal-body\" style=\"width: 45%; float: left; background-color: white;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Module Name<span\r\n class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 5;\" [options]=\"modulesList\" [(ngModel)]=\"moduleVal\"\r\n name=\"module\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Name<span class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input type=\"text\" autocomplete=\"off\" [(ngModel)]=\"name\" name=\"name\"\r\n class=\"form-control\"\r\n onkeypress=\"return (event.charCode > 64 && event.charCode < 91) || (event.charCode > 96 && event.charCode < 123) || (event.charCode >= 48 && event.charCode <= 57)\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Description<span\r\n class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <textarea style=\"height: 200px;\" [(ngModel)]=\"description\" name=\"description\"\r\n class=\"form-control\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Type<span class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 3;\" [options]=\"typesList\" [(ngModel)]=\"typeVal\"\r\n name=\"type\"> -->\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Bank Name</label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <angular2-multiselect name=\"select\" [data]=\"dropdownListBank\"\r\n [(ngModel)]=\"selectedItemsBank\" name=\"bank\"\r\n [settings]=\"dropdownSettingsBank\"></angular2-multiselect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Tags<span class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <tag-input [(ngModel)]=\"tags\" name=\"tags\"></tag-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">Title<span class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <input [(ngModel)]=\"title\" (ngModelChange)=\"validateTags($event, 'title')\"\r\n name=\"title\" type=\"text\" class=\"form-control\">\r\n <p style=\"color: red\" id=\"titleError\"></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">To<span class=\"text-danger\">*</span></label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <tag-input type=\"email\" (ngModelChange)=\"validateTagAndEmail($event, 'to')\"\r\n [(ngModel)]=\"emailTo\" name=\"to\"></tag-input>\r\n <p style=\"color: red\" id=\"toError\"></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">CC:</label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <tag-input type=\"text\" (ngModelChange)=\"validateTagAndEmail($event, 'cc')\"\r\n [(ngModel)]=\"emailCC\" name=\"cc\"></tag-input>\r\n <p style=\"color: red\" id=\"ccError\"></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <label class=\"col-md-3 control-label\">BCC:</label>\r\n <div class=\"col-md-9\">\r\n <div class=\"input-group w-100\">\r\n <tag-input type=\"text\" (ngModelChange)=\"validateTagAndEmail($event, 'bcc')\"\r\n [(ngModel)]=\"emailBCC\" name=\"bcc\"></tag-input>\r\n <p style=\"color: red\" id=\"bccError\"></p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-body\" style=\"float: left; width: 50%; background-color: white;\">\r\n <div class=\"row\">\r\n <ul style=\"margin-top:0px\" class=\"nav nav-tabs navtabs\" role=\"tablist\">\r\n <li role=\"presentation\" [ngClass]=\"(page == 'pg1') ? 'active' : ''\"\r\n (click)=\"setPage('pg1')\"><a aria-controls=\"home\" role=\"tab\"\r\n [ngClass]=\"(page == 'pg1') ? 'active' : ''\" data-toggle=\"tab\">Page 1</a></li>\r\n <li role=\"presentation\" [ngClass]=\"(page == 'pg2') ? 'active' : ''\"\r\n (click)=\"setPage('pg2')\"><a aria-controls=\"home\" role=\"tab\"\r\n [ngClass]=\"(page == 'pg2') ? 'active' : ''\" data-toggle=\"tab\">Page 2</a></li>\r\n <li role=\"presentation\" [ngClass]=\"(page == 'pg3') ? 'active' : ''\"\r\n (click)=\"setPage('pg3')\"><a aria-controls=\"home\" role=\"tab\"\r\n [ngClass]=\"(page == 'pg3') ? 'active' : ''\" data-toggle=\"tab\">Page 3</a></li>\r\n </ul>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <ng-container *ngFor=\"let pg of pages\">\r\n <ng-container *ngIf=\"pg == page\">\r\n <!-- Header -->\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <p style=\"color: red\" id=\"errorMessage\"></p>\r\n <p><b>Header</b><span class=\"text-danger\" *ngIf=\"pg == 'pg1'\">*</span></p>\r\n <angular-editor (ngModelChange)=\"validateTags($event, 'rtHeader')\"\r\n [(ngModel)]=\"this['mailHeader' + pg]\" name=\"header\" [config]=\"config\"\r\n [spellcheck]=\"true\">\r\n </angular-editor>\r\n <p style=\"color: red\" id=\"rtHeaderError\"></p>\r\n </div>\r\n </div>\r\n <!-- Body -->\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <p><b>Body</b><span class=\"text-danger\" *ngIf=\"pg == 'pg1'\">*</span></p>\r\n <angular-editor (ngModelChange)=\"validateTags($event, 'rtBody')\"\r\n [(ngModel)]=\"this['mailBody' + pg]\" name=\"body\" [config]=\"configBody\"\r\n [spellcheck]=\"true\">\r\n </angular-editor>\r\n <p style=\"color: red\" id=\"rtBodyError\"></p>\r\n </div>\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"form-group\">\r\n <div class=\"col-md-12\">\r\n <p><b>Footer</b><span class=\"text-danger\" *ngIf=\"pg == 'pg1'\">*</span></p>\r\n <angular-editor (ngModelChange)=\"validateTags($event, 'rtFooter')\"\r\n [(ngModel)]=\"this['mailFooter' + pg]\" name=\"footer\" [config]=\"config\"\r\n [spellcheck]=\"true\">\r\n </angular-editor>\r\n <p style=\"color: red\" id=\"rtFooterError\"></p>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" style=\"background-color: white; margin-right: 70px;\">\r\n <button type=\"submit\" id=\"submitBtn\" appAppNoDblClick class=\"btn btn-success\" #submitBtn\r\n (click)=\"formSubmit();\">Submit</button>\r\n </div>\r\n <div class=\"modal-footer\" style=\"text-align: left;\">\r\n <div id=\"guide\" style=\"color:grey\"></div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<button id=\"datamdbtn\" [hidden]=\"true\" data-toggle=\"modal\" data-target=\"#datamodal\"></button>","\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'formateNumField'\r\n})\r\nexport class FormateNumFieldPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (value != null) {\r\n return value.toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)[0];;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\n@Directive({\r\n selector: '[UpperCase]',\r\n host: {\r\n '(input)': 'toUpperCase($event.target.value)',\r\n }\r\n})\r\nexport class UpperCaseTextDirective {\r\n\r\n @Input('UpperCase') allowUpperCase: boolean;\r\n constructor(private ref: ElementRef) {\r\n }\r\n\r\n toUpperCase(value: string) {\r\n if (this.allowUpperCase != null) {\r\n this.ref.nativeElement.value = value.toUpperCase();\r\n }\r\n }\r\n}","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\n// import { RequestOptions } from '@angular/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { Router, ActivatedRoute, Params, NavigationEnd } from '@angular/router';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n// import { SelectModule } from 'ng-select/public_api'; \r\n\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n// import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';\r\nimport { StockServiceService } from '../stock-service/stock-service.service'\r\nimport { SystemServiceService } from '../system-module/system-service/system-service.service';\r\n// import { PdfServiceService } from '../globle/pdf-service.service';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\n// import { AsyncLocalStorage } from 'async_hooks';\r\nimport { document } from 'ngx-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-websearch-history',\r\n templateUrl: './websearch-history.component.html',\r\n styleUrls: ['./websearch-history.component.css']\r\n})\r\nexport class WebsearchHistoryComponent implements OnInit {\r\n\r\n constructor(\r\n public router: Router,\r\n private route: ActivatedRoute,\r\n // private flashMessagesService: FlashMessagesService,\r\n private ss: StockServiceService,\r\n // private spinnerService: Ng4LoadingSpinnerService,\r\n private sysS: SystemServiceService,\r\n // private ps: PdfServiceService,\r\n private cs: CommanServiceService\r\n ) { }\r\n cDt;\r\n cUrl;\r\n header;\r\n pageDefination;\r\n resultView = [];\r\n resultViewDtl;\r\n searchResultDtlList = [];\r\n isOpen = true;\r\n icon = 'fa fa-dedent';\r\n showarr;\r\n order = '';\r\n reverse = true;\r\n pageSize = 10;\r\n p = 1;\r\n pokey = '';\r\n searchF;\r\n curIndx;\r\n buyerList = [];\r\n lovs = [];\r\n sqlArray = {};\r\n noData = true;\r\n sourceVal;\r\n sourceList;\r\n stock_idn;\r\n\r\n resultlength = 0;\r\n scrollDistance = 1;\r\n scrollUpDistance = 2;\r\n startIndex = 0;\r\n endIndex = 30;\r\n loadResult = [];\r\n setOrder(value: string, i) {\r\n this.showarr = i;\r\n if (this.order === value) {\r\n this.reverse = !this.reverse;\r\n }\r\n this.order = value;\r\n }\r\n\r\n onPageSizeChange(p) {\r\n if (p == 'All') {\r\n this.pageSize = this.searchResultDtlList.length;\r\n } else {\r\n this.pageSize = p;\r\n }\r\n }\r\n getLovList(tblF, page_item_idn) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['page_item_idn'] = page_item_idn;\r\n this.header['method'] = 'getDataByItemIdn';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.sysS.getData(reqObj, options).then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n this.lovs = response.kv;\r\n this.sqlArray[tblF] = this.lovs;\r\n // this.spinnerService.hide();\r\n // console.log(this.lovs);\r\n // console.log(tblF, this.sqlArray);\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n loadBuyer(searchTerm) {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['likeStr'] = searchTerm;\r\n this.header['method'] = 'loadBuyer';\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n let result = response.result;\r\n this.buyerList = result.buyerList.map(option => ({\r\n value: option.k,\r\n label: option.v\r\n }));\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n loadFrmFields() {\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];//'searchDtlDscrForm';\r\n reqObj['requestSrc'] = this.route.snapshot.params['src'];// 'online';\r\n // if (this.route.snapshot.params['src'] != null && this.route.snapshot.params['src'] != undefined && this.route.snapshot.params['src'] != \"\") {\r\n // reqObj['requestSrc'] ='ez';// ['qs', 'qs'];\r\n // }\r\n // else {\r\n // reqObj['requestSrc'] = 'online';\r\n // }\r\n this.header['method'] = 'getSearchDetails';\r\n // console.log(reqObj);\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n // this.isOpen = true;\r\n let result = response.result;\r\n this.pageDefination = result.pageDefination;\r\n this.sourceList = result.sourceList;\r\n this.pageDefination.form_field.forEach(element => {\r\n if (element.form_field_typ == 's') {\r\n this.getLovList(element.form_field, element.page_item_idn);\r\n }\r\n });\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n openTog() {\r\n this.isOpen = !this.isOpen;\r\n if (this.isOpen == true) {\r\n this.icon = 'fa fa-dedent';\r\n } else {\r\n this.icon = 'fa fa-indent';\r\n }\r\n }\r\n exportToCSV() {\r\n let modifiedObjArr = this.cs.modifyDataByHeader(this.searchResultDtlList, this.resultView, this.resultViewDtl);\r\n this.cs.CSVConvertor(modifiedObjArr, \"Web_Search_History\", true)\r\n }\r\n loadResults(formVal) {\r\n this.loadResult = [];\r\n // this.startIndex = 0;\r\n // this.endIndex = 30;\r\n // this.spinnerService.show();\r\n let reqObj = {};\r\n reqObj['formNme'] = this.route.snapshot.params['frmnme'];//'searchDtlDscrForm';\r\n if (formVal != null) {\r\n //reqObj['formNme'] = 'searchDtlDscrForm';\r\n reqObj['empIdnList'] = formVal.employee != null ? [formVal.employee] : [];\r\n reqObj['buyerIdnList'] = formVal.buyer != null ? [formVal.buyer] : [];\r\n reqObj['dateFrom'] = formVal.fromDate != null ? this.cs.formatDate(formVal.fromDate) : '';\r\n reqObj['dateTo'] = formVal.toDate != null ? this.cs.formatDate(formVal.toDate) : '';\r\n }\r\n // if (this.route.snapshot.params['src'] != null && this.route.snapshot.params['src'] != undefined && this.route.snapshot.params['src'] != \"\") {\r\n // reqObj['requestSrc'] = 'ez';//['qs', 'qs'];\r\n // }\r\n // else {\r\n // reqObj['requestSrc'] = 'online';\r\n // }\r\n reqObj['requestSrc'] = this.route.snapshot.params['src'];\r\n this.header['method'] = 'getSearchDetails';\r\n console.log(JSON.stringify(reqObj));\r\n // let options = new RequestOptions({ headers: this.header });\r\n let options = { headers: this.header };\r\n this.ss.load(reqObj, options, 'marketing/search').then((response: any) => {\r\n if (response.status == 'SUCCESS') {\r\n console.log(response);\r\n this.isOpen = false;\r\n let result = response.result;\r\n if (result != undefined && result != null) {\r\n this.noData = false;\r\n this.pageDefination = result.pageDefination;\r\n this.resultView = result.resultView || [];\r\n this.resultViewDtl = result.resultViewDtl || {};\r\n this.searchResultDtlList = result.searchResultDtlList ||[];\r\n\r\n this.resultlength = this.searchResultDtlList.length;\r\n\r\n // if (this.endIndex > this.resultlength)\r\n // this.endIndex = this.resultlength\r\n // this.addItems();\r\n this.loadResult = this.searchResultDtlList;\r\n document.getElementById(\"wrap\").addEventListener(\"scroll\", function () {\r\n var translate = \"translate(0,\" + this.scrollTop + \"px)\";\r\n this.querySelector(\"thead\").style.transform = translate;\r\n });\r\n this.searchF = this.sourceVal;\r\n }\r\n else {\r\n this.noData = true;\r\n this.isOpen = true;\r\n }\r\n // this.spinnerService.hide();\r\n } else {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(response.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n }\r\n }).catch((err: any) => {\r\n // this.spinnerService.hide();\r\n // this.flashMessagesService.show(err.message, { cssClass: 'alert-danger', timeout: 3000 });\r\n });\r\n }\r\n\r\n\r\n // onScrollDown() {\r\n // if (this.endIndex <= this.resultlength)\r\n // this.addItems()\r\n // document.getElementById(\"wrap\").addEventListener(\"scroll\", function () {\r\n // var translate = \"translate(0,\" + this.scrollTop + \"px)\";\r\n // this.querySelector(\"thead\").style.transform = translate;\r\n // });\r\n // }\r\n\r\n // addItems() {\r\n // for (let i = this.startIndex; i < this.endIndex; i++) {\r\n // this.loadResult[i] = this.searchResultDtlList[i];\r\n // }\r\n // this.startIndex = this.endIndex;\r\n // this.endIndex = this.endIndex + 30;\r\n // if (this.endIndex > this.resultlength) {\r\n // this.endIndex = this.resultlength;\r\n // }\r\n // }\r\n\r\n onSubmit(formVal) {\r\n var t = Object.keys(formVal.form.controls).forEach(field => {\r\n const control = formVal.form.get(field);\r\n });\r\n this.loadResults(formVal.value);\r\n }\r\n ngOnInit() {\r\n // let mdlk = JSON.parse(AsyncLocalStorage.arguments('mdlKey'));\r\n let mdlk ;\r\n this.cUrl = this.router.url;\r\n\r\n this.header = {\r\n 'clientkey': Cookie.get('_ck'),\r\n 'Content-Type': 'application/json',\r\n 'modulekey': mdlk[this.cUrl.split('/')[1]],\r\n 'loginid': Cookie.get('_logid'),\r\n 'source': 'qs'\r\n };\r\n this.loadResults(null);\r\n this.loadFrmFields();\r\n this.cDt = new Date();\r\n }\r\n\r\n}\r\n","<div class=\"mt\" style=\"background: #fff;\">\r\n <div class=\"panel panel-default\">\r\n <div class=\"panel-heading\">\r\n <h3 class=\"panel-title\">{{pageDefination?.title}}\r\n <span class=\"f-12\">({{cDt | date:'medium'}})</span>\r\n </h3>\r\n </div>\r\n </div>\r\n <div class=\"content-frame\">\r\n <div class=\"innerD\">\r\n <div class=\"row\" style=\"padding: 10px;\">\r\n <form class=\"form-inline\" #f=\"ngForm\" (ngSubmit)=\"onSubmit(f)\" name=\"appForm\">\r\n <div [ngClass]=\"isOpen == true ? 'col-md-4' : 'hidden'\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" *ngFor=\"let fl of pageDefination?.form_field\">\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 'sb'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <ng-select style=\"z-index: 3;\" placeholder=\"Select Buyers\" [options]=\"buyerList\"\r\n [(ngModel)]=\"fl.default_value\" name=\"buyer\" (filterInputChanged)=\"loadBuyer($event)\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 's'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"{{fl?.form_field}}\" [value]=\"fl?.default_value\"\r\n [(ngModel)]=\"fl.default_value\" #lInput=\"ngModel\">\r\n <option *ngFor=\"let lov of sqlArray[fl.form_field]\" value=\"{{lov.k}}\">{{lov.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"fl?.form_field_typ == 't' && fl?.dta_typ=='d'\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">{{fl?.form_field_title}}</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <input name=\"{{fl?.form_field}}\" [(ngModel)]=\"fl.default_value\" onfocus=\"(this.type='date')\"\r\n onblur=\"(this.type='text')\" class=\"form-control\" placeholder=\"dd/mm/yyyy\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group w-100\" *ngIf=\"sourceList != null\">\r\n <label class=\"col-md-5 control-label\" style=\"padding-left: 2px;\">Source</label>\r\n <div class=\"col-md-7\">\r\n <div class=\"input-group w-100\">\r\n <select class=\"form-control\" name=\"source\" [(ngModel)]=\"sourceVal\">\r\n <option *ngFor=\"let option of sourceList\" value=\"{{option.k}}\">{{option.v}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div [ngClass]=\"isOpen == false ? 'col-md-12 custCls' : 'col-md-8 custCls'\">\r\n <div class=\"row\" *ngIf=\"searchResultDtlList.length>0\">\r\n <div class=\"col-sm-6\">\r\n <form class=\"form-inline pull-left\">\r\n </form>\r\n <form class=\"form-inline pull-left\">\r\n <div class=\"form-group\">\r\n <label for=\"ddlPagesize\">Page Size </label>\r\n <select class=\"form-control\" name=\"pageSize\" [(ngModel)]=\"pageSize\"\r\n (change)=\"onPageSizeChange(pageSize)\">\r\n <option value=\"All\">All</option>\r\n <option value=\"10\">10</option>\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n </select>\r\n </div>\r\n </form>\r\n\r\n <button *ngIf=\"searchResultDtlList.length>0\" class=\"btn btn-default\"\r\n style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\" data-toggle=\"tooltip\" data-placement=\"right\"\r\n title=\"Filter results\" (click)=\"openTog();\">\r\n <span class=\"{{icon}}\" style=\"color:#3b5998;\"></span>\r\n </button>\r\n\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Refresh\" (click)=\"ngOnInit();\">\r\n <span class=\"fa fa-refresh\"></span>\r\n </button>\r\n <button *ngIf=\"!noData\" class=\"btn btn-default\" style=\"padding: 4px 15px 4px 20px;margin-left: 10px;\"\r\n data-toggle=\"tooltip\" data-placement=\"right\" title=\"Download Excel\" (click)=\"exportToCSV();\">\r\n <span class=\"fa fa-file-excel-o\" style=\"color:green;\"></span>\r\n </button>\r\n\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"col-md-6\">\r\n <form class=\"form-inline pull-right\">\r\n <div class=\"form-group\">\r\n <label for=\"exampleInputName2\">Search </label>\r\n <input type=\"text\" class=\"form-control\" id=\"exampleInputName2\" name=\"schtxt\" [(ngModel)]=\"searchF\" />\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div id=\"wrap\" style=\"overflow: auto;width: 100%;height: calc(100vh - 210px);\">\r\n <table class=\"displayTable\" *ngIf=\"!noData\">\r\n <thead>\r\n <tr class=\"posrel\">\r\n <ng-container *ngFor=\"let hdr of resultView ;let j=index;\">\r\n <th *ngIf=\"hdr != 'request_attr' && hdr != 'request_attrVal'\" nowrap (click)=\"setOrder(hdr,j)\">\r\n {{resultViewDtl[hdr]}}\r\n <span [hidden]=\"reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\r\n </span>\r\n <span [hidden]=\"!reverse\" *ngIf=\"showarr === j\">\r\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\r\n </span>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody style=\"height:400px;overflow:auto;\">\r\n <ng-container\r\n *ngFor=\"let pktdtl of loadResult | tableSearch:searchF | orderBy: order:reverse | paginate: { itemsPerPage: pageSize, currentPage: p }; let pkti = index ;trackBy:stock_idn\">\r\n\r\n <tr [ngClass]=\"{'even':pkti%2==0,'odd':pkti%2==1}\">\r\n <ng-container *ngFor=\"let att of resultView; let j = index;\">\r\n <td *ngIf=\"att != 'request_attr' && att != 'request_attrVal'\"\r\n style=\"max-width: 300px;white-space: normal;\"\r\n [ngStyle]=\"{'word-break' : att == 'dscr' ? 'break-word': 'normal','white-space': att != 'dscr'? 'nowrap':'normal'}\">\r\n <span>{{pktdtl[att]}}</span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n <p *ngIf=\"searchResultDtlList.length==0\" style=\"text-align: center\"><b> No Data Found !</b></p>\r\n <!-- \"max-width: 300px;white-space: normal;word-break: break-word; -->\r\n <!-- <pagination-controls (pageChange)=\"p = $event\" *ngIf=\"processDetails.length>0\" class=\"pull-right\"></pagination-controls> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actionFooter\">\r\n <button type=\"submit\" class=\"btn btn-success cBtn pull-left\" appAppNoDblClick (click)=\"onSubmit(f)\">Fetch</button>\r\n <pagination-controls style=\"background: white;\" (pageChange)=\"p=$event\" class=\"pull-right\"></pagination-controls>\r\n </div>\r\n</div>","// import { NgModule } from '@angular/core';\nimport { NgModule,NO_ERRORS_SCHEMA,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n\nimport { EzLibComponent } from './ez-lib.component';\n\n//npm component\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\n// import { SelectModule } from 'ng-select'; \nimport { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';\nimport { OrderModule } from 'ngx-order-pipe';\nimport { RouterModule } from '@angular/router';\n// import { AngularEditorModule } from '@kolkov/angular-editor';\nimport { TagInputModule } from 'ngx-chips';\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport { SortableModule } from 'ngx-bootstrap/sortable';\n// import { ChartsModule } from 'ng2-charts';\n// import { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\n//developed component\nimport { AttributeDefinitionComponent } from './attribute-definition/attribute-definition.component';\nimport { AnalysisSearchComponent } from './analysis-search/analysis-search.component';\n\nimport { CallInfoComponent } from './call-info/callinfo.component';\nimport { ContactSearchComponent } from './contact-search/contact-search.component';\n\nimport { EzHeaderComponent } from './ezheader/header.component';\n\nimport { FooterComponent } from './footer/footer.component';\n\nimport { HeaderComponent } from './header/header.component';\n\nimport { InvalidComponent } from './invalid/invalid.component';\n\nimport { LogoutComponent } from './logout/logout.component';\n\nimport { MenuRightComponent } from '../lib/menu-right/menu-right.component';\n\nimport { NumberWithCommasPipe } from './pipes/number-with-commas.pipe';\nimport { OrderByPipePipe } from './pipes/order-by-pipe.pipe';\nimport { GetSelectedPipe } from './pipes/selectedCount';\nimport { SumPipe } from './pipes/sum.pipe';\nimport { PktDataComponent } from './pkt-data/pkt-data.component';\nimport { QaAnalysisComponent } from './qa-analysis/qa-analysis.component';\n\nimport { FileuploadComponent } from './file-upload/fileupload.component'\nimport { FileuploadDashboardComponent } from './fileupload-module/fileupload-dashboard/fileupload-dashboard.component';\nimport { FileUploadLogComponent } from './file-upload-log/file-upload-log.component';\n\nimport { SystemComponent } from './system-module/system/system.component';\nimport { SubformComponent } from './system-module/subform/subform.component';\nimport { SystemServiceService } from './system-module/system-service/system-service.service';\n\nimport { ReportFormatComponent } from '../lib/report-format/report-format.component';\n\nimport { AppNoDblClickDirective } from './utility/app-no-dbl-click.directive';\nimport { ContacttableSearch } from './utility/contact-table-search.pipe';\nimport { FormateNumFieldPipe } from './utility/formate-num-field.pipe';\nimport { SearchPipePipe } from './utility/search-pipe.pipe';\nimport { UpperCaseTextDirective } from './utility/tranform.directive';\nimport { TableSearchPipe } from './utility/table-search.pipe';\n\nimport { WebsearchHistoryComponent } from './websearch-history/websearch-history.component';\n\n\n@NgModule({\n declarations: [\n EzLibComponent,\n EzHeaderComponent,\n LogoutComponent,\n InvalidComponent,\n HeaderComponent,\n FooterComponent,\n FileuploadComponent,\n FileUploadLogComponent,\n // FileuploadDashboardComponent,\n SubformComponent,\n CallInfoComponent,\n ContactSearchComponent,\n WebsearchHistoryComponent,\n AnalysisSearchComponent,\n QaAnalysisComponent,\n PktDataComponent,\n TableSearchPipe,\n AppNoDblClickDirective,\n ContacttableSearch,\n FormateNumFieldPipe,\n SearchPipePipe,\n UpperCaseTextDirective,\n NumberWithCommasPipe,\n OrderByPipePipe,\n GetSelectedPipe,\n SumPipe,\n SystemComponent,\n // SystemServiceService,\n MenuRightComponent,\n ReportFormatComponent,\n AttributeDefinitionComponent\n ],\n imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n AngularMultiSelectModule,\n OrderModule,\n RouterModule,\n // AngularEditorModule,\n // TagInputModule,\n NgxPaginationModule,\n SortableModule.forRoot(),\n // ChartsModule,\n ],\n exports: [\n EzLibComponent,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HeaderComponent,\n EzHeaderComponent,\n LogoutComponent,\n InvalidComponent,\n FooterComponent,\n FileuploadComponent,\n FileUploadLogComponent,\n // FileuploadDashboardComponent,\n CallInfoComponent,\n ContactSearchComponent,\n WebsearchHistoryComponent,\n AttributeDefinitionComponent,\n AnalysisSearchComponent,\n QaAnalysisComponent,\n PktDataComponent,\n RouterModule,\n TableSearchPipe,\n AppNoDblClickDirective,\n ContacttableSearch,\n FormateNumFieldPipe,\n SearchPipePipe,\n UpperCaseTextDirective,\n NumberWithCommasPipe,\n OrderByPipePipe,\n GetSelectedPipe,\n SumPipe,\n SystemComponent,\n // SystemServiceService,\n SubformComponent,\n MenuRightComponent,\n ReportFormatComponent,\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA,\n NO_ERRORS_SCHEMA\n ]\n})\nexport class EzLibModule { }\n","import { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { Injectable } from '@angular/core';\r\nimport { CanActivate,NavigationEnd, Router, ActivatedRoute } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n// import { FlashMessagesService } from 'angular2-flash-messages';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthGuard implements CanActivate {\r\n cUrl\r\n constructor(\r\n private route: Router,\r\n private ac: ActivatedRoute,\r\n private router:Router,\r\n // private flashMessagesService: FlashMessagesService\r\n ) { \r\n \r\n }\r\n\r\n userLoggedIn:boolean = false;\r\n\r\n canActivate(){\r\n // let logIdn = localStorage.getItem('logIdn');\r\n // let ds = localStorage.getItem('DS');\r\n if (Cookie.get('_ck') != null) {\r\n return true;\r\n } else {\r\n // this.redirectToLoginPage(ds); \r\n return false;\r\n } \r\n }\r\n\r\n redirectToLoginPage(ds) {\r\n // this.flashMessagesService.show('Invalid access to application', { cssClass: 'alert-danger', timeout: 3000 });\r\n this.route.navigate(['/login/', ds]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n// import { GlobleEnvService } from 'ez/ez/src/app/globle/globle-env.service';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\n\r\nimport { Cookie } from 'ng2-cookies/ng2-cookies';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssortServiceService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService,\r\n ) { }\r\n\r\n load(reqObj, headers, url) {\r\n return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n getCookies() {\r\n return Cookie.get('_logid');\r\n }\r\n \r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-fileupload-dashboard',\r\n templateUrl: './fileupload-dashboard.component.html',\r\n styleUrls: ['./fileupload-dashboard.component.css']\r\n})\r\nexport class FileuploadDashboardComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<h1 class=\"text-center\">Fileupload Dashboard</h1> ","import { Cookie } from 'ng2-cookies/ng2-cookies';\r\nimport { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionEndGuard implements CanActivate {\r\n constructor(\r\n private route: Router,\r\n ) { }\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n if (Cookie.get('_ck') != null) {\r\n return true;\r\n } else {\r\n this.route.navigate(['/session-end']);\r\n return false; \r\n }\r\n }\r\n}\r\n","\r\nimport { SessionEndGuard } from '../sessionend/session-end.guard';\r\nimport { AuthGuard } from '../auth/auth.guard';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport {FileuploadDashboardComponent} from './fileupload-dashboard/fileupload-dashboard.component';\r\n\r\nconst routes: Routes = [ \r\n { path: 'fileupload', component: FileuploadDashboardComponent, canActivate: [SessionEndGuard], data: { title: 'File Dashboard' } },\r\n ];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(routes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n })\r\n\r\nexport class FileuploadRoutingModule {\r\n}\r\n","import { NgModule,NO_ERRORS_SCHEMA,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\n\r\n// import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { OrderModule } from 'ngx-order-pipe';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\n// import { SharedModule } from '../../comman/shared.module';\r\nimport { SortableModule } from 'ngx-bootstrap/sortable';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n// import { SelectModule } from 'ng-select/public_api';\r\nimport { FileuploadRoutingModule } from './fileupload-routing.module';\r\nimport {FileuploadDashboardComponent} from './fileupload-dashboard/fileupload-dashboard.component';\r\n// import { NgxLoadingModule } from 'ngx-loading';\r\n@NgModule({\r\n imports: [\r\n BrowserModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxPaginationModule,\r\n OrderModule,\r\n // SharedModule,\r\n FileuploadRoutingModule,\r\n NgSelectModule,\r\n // SelectModule,\r\n SortableModule.forRoot(),\r\n // NgxLoadingModule.forRoot({})\r\n ],\r\n declarations: [\r\n FileuploadDashboardComponent\r\n // OrderByPipePipe\r\n ],\r\n exports: [\r\n FileuploadDashboardComponent,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n\r\n ],\r\n schemas: [\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n NO_ERRORS_SCHEMA\r\n ]\r\n})\r\nexport class FileuploadModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonPdfService {\r\n\r\n constructor() { }\r\n\r\n generateReport(ReportType, serviceParameters, ReportTitle) {\r\n\r\n switch (ReportType) {\r\n case '':\r\n this.estimate();\r\n break;\r\n case 1:\r\n this.pktList();\r\n break;\r\n \r\n }\r\n }\r\n estimate()\r\n {\r\n\r\n }\r\n\r\n pktList()\r\n {\r\n \r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport pdfMake from \"pdfmake/build/pdfmake\";\r\nimport pdfFonts from \"pdfmake/build/vfs_fonts\";\r\n// import { bold } from '@angular-devkit/core/src/terminal';\r\n// import { black } from '@angular-devkit/core/src/terminal/colors';\r\npdfMake.vfs = pdfFonts.pdfMake.vfs;\r\nimport * as _ from 'lodash';\r\nimport { CommanServiceService } from '../comman-service/comman-service.service';\r\n// import { SIGUSR2 } from 'constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MemoReportService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private cs: CommanServiceService\r\n ) { }\r\n result;\r\n headerDetails;\r\n memoDetails = [];\r\n attrDisplayDtl;\r\n GrandSummary;\r\n pdfFormat;\r\n packetDetails = [];\r\n packetSummaryDetails;\r\n a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];\r\n b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];\r\n\r\n createMemoEstimate(resData, priceYN) {\r\n console.log(resData);\r\n this.headerDetails = resData.headerDetails;\r\n this.attrDisplayDtl = resData.attrDisplayDtl;\r\n this.memoDetails = resData.memoDetails;\r\n this.GrandSummary = resData.GrandSummary;\r\n var tabledata = [];\r\n let Objkeys = Object.keys(this.attrDisplayDtl);\r\n let Objvals = Object.values(this.attrDisplayDtl);\r\n let valObj = [];\r\n let arr = [];\r\n let broker = \"\";\r\n let aadat = \"\";\r\n let title = \"\";\r\n if (resData.title != \"\" && resData.title != undefined && resData.title != null) {\r\n title = resData.title;\r\n }\r\n if (this.memoDetails[0].commission.length > 0) {\r\n\r\n this.memoDetails[0].commission.forEach(element => {\r\n if (element.typ == \"broker\") {\r\n broker = element.name;\r\n }\r\n else {\r\n aadat = element.name + ' ( ' + element.pct + ' )';\r\n }\r\n });\r\n\r\n // if (this.memoDetails[0].commission[0].length != 0) {\r\n // broker = this.memoDetails[0].commission[0].name;\r\n // }\r\n }\r\n\r\n //#region table header row\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"Buyer : \" + this.headerDetails['buyer'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = aadat != \"\" ? \"Aadat : \" + aadat : \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = broker != \"\" ? \"Broker : \" + broker : \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Sales Exc : \" + this.headerDetails['employee'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 1;\r\n spanObj['text'] = \" | \";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Loyalty Lev. : \" + this.headerDetails.LoyaltyDt['loyaltyctg']\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n // spanObj['style'] = 'coloredBoldTableHead';\r\n // spanObj['colSpan'] = 3;\r\n // spanObj['text'] = \"365 Day His. : \" + this.headerDetails.LoyaltyDt['365'];\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n\r\n // spanObj['style'] = 'coloredBoldTableHead';\r\n // spanObj['colSpan'] = 3;\r\n // spanObj['text'] = \"Next LVL Benefits : \" + this.headerDetails.LoyaltyDt['ldiff'];\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n if (Objkeys.length > 19) {\r\n for (let i = 0; i < Objkeys.length - 19; i++) {\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n }\r\n tabledata.push(arr);\r\n arr = [];\r\n spanObj = {};\r\n //#endregion\r\n\r\n this.memoDetails.forEach(element => {\r\n if (element['co_serial'] != '' && element['co_serial'] != null) {\r\n\r\n //#region Memo wise details\r\n let arr = [];\r\n var spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Id : \" + element['co_serial'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj = {};\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Date: \" + element['memodate']\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"Terms : \" + element['terms'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n spanObj = {};\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Exh rate: \" + element['exh_rte']\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Status : \" + element['print'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 1;\r\n spanObj['text'] = \" | \";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"365 Day His. : \" + this.headerDetails.LoyaltyDt['365'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n //2nd line \r\n if (Objkeys.length > 19) {\r\n for (let i = 0; i < Objkeys.length - 19; i++) {\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n }\r\n\r\n tabledata.push(arr);\r\n arr = [];\r\n spanObj = {};\r\n\r\n //second memowise line\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Qty : \" + element['qty'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Carats : \" + element['crtwt'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"Disc. : \" + element['sal_dis'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"PR/CT: \" + element['quot'];//head \r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Amount : \" + element['sal_amount'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 1;\r\n spanObj['text'] = \" | \";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Next LVL Benefits : \" + this.headerDetails.LoyaltyDt['ldiff'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (Objkeys.length > 19) {\r\n for (let i = 0; i < Objkeys.length - 19; i++) {\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n }\r\n\r\n tabledata.push(arr);\r\n\r\n //#endregion\r\n }\r\n ///// tabledata.push(Objvals);\r\n //\r\n element.gropudtlList.forEach((grp, i) => {\r\n //#region for draw line before each grp header\r\n // let arr = [];\r\n // let obj = {};\r\n // obj['color'] = '#dedede';\r\n // obj['colSpan'] = Objkeys.length;\r\n // obj['text'] = \"___________________________________________________________________________________________________________________________________________________________________________________________________________________________________\";\r\n // arr.push(obj);\r\n // obj = {};\r\n // tabledata.push(arr);\r\n // arr = [];\r\n // obj = {};\r\n //#endregion\r\n if (grp['grpup'] != '' && grp['grpup'] != null) {\r\n let arr = [];\r\n var spanObj = {};\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Group : \" + grp['grpup'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Qty : \" + grp['qty'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Carats : \" + grp['crtwt'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Disc. : \" + grp['sal_dis'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"PR/CT : \" + grp['quot'];//grp\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Amount : \" + grp['sal_amount'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n if (priceYN == 'N') {\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n for (let i = 0; i < Objkeys.length - 15; i++) {\r\n //spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n tabledata.push(arr);\r\n\r\n if (i == 0) {\r\n let Ovals = Object.values(this.attrDisplayDtl);\r\n let farr = Ovals.map(hdr => ({\r\n bold: true,\r\n text: hdr\r\n }));\r\n tabledata.push(farr);\r\n }\r\n\r\n }\r\n grp.packetsDetails.forEach(pkt => {\r\n Objkeys.forEach((key) => {\r\n // console.log(pkt[key]);\r\n if (pkt[key] != undefined && pkt[key] != null) {\r\n if (pkt[key] != 'MKAV' && key != 'rap_dis') {\r\n valObj.push(pkt[key]);\r\n }\r\n else if (pkt[key] == 'MKAV') {\r\n valObj.push('');\r\n }\r\n else if (key == 'rap_dis') {\r\n let bobj = {};\r\n bobj['text'] = pkt[key];\r\n bobj['bold'] = true;\r\n valObj.push(bobj);\r\n }\r\n }\r\n else {\r\n valObj.push('-');//value not found for this key err\r\n }\r\n });\r\n tabledata.push(valObj);\r\n valObj = [];\r\n });\r\n\r\n let ar = [];\r\n let sobj = {};\r\n sobj['color'] = '#dedede';\r\n sobj['colSpan'] = Objkeys.length;\r\n sobj['text'] = \"___________________________________________________________________________________________________________________________________________________________________________________________________________________________________\";\r\n ar.push(sobj);\r\n sobj = {};\r\n tabledata.push(ar);\r\n });\r\n });\r\n\r\n // var spanObj = {};\r\n // var btmSpan = [];\r\n // spanObj['colSpan'] = Objkeys.length;\r\n // spanObj['text'] = '_______________________________________________________________________________________________________________________________________________________________________________________________________________________________';\r\n // btmSpan.push(spanObj);\r\n // for (let i = 0; i < Objkeys.length - 1; i++) {\r\n // btmSpan.push(\"\");\r\n // }\r\n // tabledata.push(btmSpan);\r\n\r\n // console.log(tabledata);\r\n\r\n // console.log(this.GrandSummary);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n //#region dynamic-bottom-grand-total\r\n // let resIndex = [];\r\n // let posWiseVal = [];\r\n // let totDatakey = Object.keys(this.GrandSummary);\r\n // let totDataVal = Object.keys(this.GrandSummary);\r\n // let IndxLen = totDatakey.length || [];\r\n // for (let i = 0; i < IndxLen; i++) {\r\n // var indx = Objkeys.indexOf(totDataVal[i]);\r\n // resIndex.push(indx);\r\n // posWiseVal.push(totDataVal[i]);\r\n // }\r\n // var bottomTot = [];\r\n\r\n // console.log(resIndex);\r\n // console.log(posWiseVal);\r\n // var btmtotObj = {};\r\n // btmtotObj['text'] = 'Total';\r\n // btmtotObj['style'] = 'reportHeaderKey';\r\n // bottomTot.push(btmtotObj);\r\n // btmtotObj = {};\r\n // for (let i = 1; i < Objkeys.length; i++) {////starts from 1 to skip qty\r\n // var pos = Objkeys.indexOf(Objkeys[i]);\r\n // if (resIndex.includes(pos) && pos > -1) {\r\n // var val = Objkeys[i];\r\n // if (val != undefined && val != null) {\r\n // btmtotObj['text'] = this.GrandSummary[val];\r\n // btmtotObj['style'] = 'reportHeaderKey';\r\n // bottomTot.push(btmtotObj);//this.GrandSummary[val];\r\n // btmtotObj = {};\r\n // }\r\n // }\r\n // else {\r\n // bottomTot.push(\"\");\r\n // }\r\n // }\r\n // tabledata.push(bottomTot);\r\n //#endregion\r\n\r\n //#region static bottom-total\r\n let btmtotObj = {};\r\n let bottomTot = [];\r\n // btmtotObj['text'] = \"Total: \"\r\n // btmtotObj['fillColor'] = '#dedede';\r\n // btmtotObj['style'] = 'reportHeaderKeyLeftAlign';\r\n // btmtotObj['colSpan'] = 2;\r\n // bottomTot.push(btmtotObj);\r\n // btmtotObj = {};\r\n // btmtotObj['fillColor'] = '#dedede';\r\n // btmtotObj['text'] = \"\";\r\n // bottomTot.push(spanObj);\r\n // btmtotObj['fillColor'] = '#dedede';\r\n // btmtotObj['text'] = \"\";\r\n // bottomTot.push(btmtotObj);\r\n\r\n btmtotObj['text'] = 'Qty : ' + this.GrandSummary['qty']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n btmtotObj['text'] = 'Carats : ' + this.GrandSummary['crtwt']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n if (priceYN == 'Y') {\r\n btmtotObj['text'] = 'Disc : ' + this.GrandSummary['sal_dis']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n if (priceYN == 'N') {\r\n btmtotObj['text'] = \"\";\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n btmtotObj['text'] = 'PR/CT : ' + this.GrandSummary['quot']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n\r\n if (priceYN == 'N') {\r\n btmtotObj['text'] = \"\";\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n if (priceYN == 'Y') {\r\n btmtotObj['text'] = 'Amount : ' + this.GrandSummary['sal_amount']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n if (priceYN == 'N') {\r\n btmtotObj['text'] = \"\";\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n\r\n\r\n // btmtotObj = {};\r\n // for (var key in this.GrandSummary) {\r\n // if (this.GrandSummary.hasOwnProperty(key)) {\r\n // btmtotObj['text'] = key + \" : \" + this.GrandSummary[key];\r\n // btmtotObj['fillColor'] = '#dedede';\r\n // btmtotObj['style'] = 'reportHeaderKey';\r\n // btmtotObj['colSpan'] = 3;\r\n // bottomTot.push(btmtotObj);\r\n // btmtotObj = {};\r\n // btmtotObj['fillColor'] = '#dedede';\r\n // btmtotObj['text'] = \"\";\r\n // bottomTot.push(spanObj);\r\n // btmtotObj['fillColor'] = '#dedede';\r\n // btmtotObj['text'] = \"\";\r\n // bottomTot.push(btmtotObj);\r\n // }\r\n // }\r\n\r\n if (Objkeys.length > 15) {//18===colspan 3*6\r\n for (let i = 0; i < Objkeys.length - 15; i++) {\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n }\r\n tabledata.push(bottomTot);\r\n //#endregion \r\n\r\n const currentdate = new Date();\r\n const datetime = \"Printed on: \" + currentdate.getDate() + \"/\"\r\n + (currentdate.getMonth() + 1) + \"/\"\r\n + currentdate.getFullYear() + \" \"\r\n + currentdate.getHours() + \":\"\r\n + currentdate.getMinutes() + \":\"\r\n + currentdate.getSeconds();\r\n var dd = {\r\n header: function (currentPage, pageCount) {\r\n return {\r\n\r\n columns: [\r\n { text: datetime, alignment: 'left', style: 'reportHeaderVal', margin: [3, 3] },\r\n {\r\n text: currentPage == 1 ? (title != \"\" ? title : 'Estimate') : \"\", alignment: 'center', fontSize: 15, bold: true,\r\n margin: [3, 3]\r\n },\r\n { text: currentPage + ' of ' + pageCount, alignment: 'right', style: 'reportHeaderVal', margin: [3, 3] },\r\n ]\r\n }\r\n },\r\n pageOrientation: 'landscape',\r\n pageSize: 'A4',\r\n pageMargins: [5, 30, 5, 5],// [10, 30, 10, 10],\r\n content: [\r\n\r\n // { text: 'Estimate', alignment: 'center', style: 'header', margin: [0, 0] },\r\n // { text: datetime, alignment: 'left', style: 'reportHeaderVal', margin: [0, 0] },\r\n\r\n\r\n {\r\n // margin: [0, 20, 0, 0],\r\n // columns: [\r\n // {\r\n // width: '*',\r\n // stack: [\r\n // {\r\n // text: [\r\n // { text: 'Memo : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.transaction_sales_idn, style: 'reportHeaderVal' }\r\n // ]\r\n // },\r\n // {\r\n // text: [\r\n // { text: '\\nBuy : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.buyer, style: 'reportHeaderVal' }\r\n // ]\r\n // },\r\n // {\r\n // text: [\r\n // { text: '\\nDate : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.transaction_date, style: 'reportHeaderVal' }\r\n // ]\r\n // }\r\n // ]\r\n // },\r\n // {\r\n // width: '18%',\r\n // stack: [\r\n // {\r\n // text: [\r\n // { text: 'Term : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.terms, style: 'reportHeaderVal' }\r\n // ]\r\n // },\r\n // {\r\n // text: [\r\n // { text: '\\nType : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.process_nme, style: 'reportHeaderVal' }\r\n // ]\r\n // },\r\n // {\r\n // text: [\r\n // { text: '\\nAadat : ', style: 'reportHeaderKey' },\r\n // { text: 'None 0', style: 'reportHeaderVal' }\r\n // ]\r\n // }\r\n // ]\r\n // },\r\n // {\r\n // width: '18%',\r\n // stack: [\r\n // {\r\n // text: [\r\n // { text: 'Sales Exec : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.employee, style: 'reportHeaderVal' }\r\n // ]\r\n // },\r\n // {\r\n // text: [\r\n // { text: '\\nBroker : ', style: 'reportHeaderKey' },\r\n // { text: this.headerDetails.hasOwnProperty('broker') ? this.headerDetails.broker : 'None', style: 'reportHeaderVal' }\r\n // ]\r\n // }\r\n // ]\r\n // },\r\n // {\r\n // width: '*',\r\n // stack: [\r\n // { text: [''] },\r\n // {\r\n // text: [\r\n // { text: '\\n365 Days pur History : ', style: 'reportHeaderKey' },\r\n // { text: '12345', style: 'reportHeaderVal' }\r\n // ]\r\n // },\r\n // {\r\n // text: [\r\n // { text: '\\nNext Loyalty Level Benifit : ', style: 'reportHeaderKey' },\r\n // { text: '123456$', style: 'reportHeaderVal' }\r\n // ]\r\n // }\r\n // ]\r\n // }\r\n // ]\r\n },\r\n\r\n {\r\n style: 'tableExample',\r\n alignment: 'center',\r\n table: {\r\n headerRows: 1,//1\r\n body: tabledata\r\n },\r\n layout: 'headerLineOnly'\r\n\r\n },\r\n\r\n ],\r\n styles: {\r\n reportHeaderKey: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n reportHeaderKeyLeftAlign: {\r\n fontSize: 8,\r\n bold: true,\r\n alignment: 'left'\r\n },\r\n reportHeaderVal: {\r\n fontSize: 8\r\n },\r\n header: {\r\n fontSize: 18,\r\n bold: true\r\n\r\n },\r\n tableExample: {\r\n margin: [0, 0, 0, 0],\r\n fontSize: 8\r\n },\r\n boldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n coloredBoldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n fillColor: '#dedede'\r\n },\r\n nonecoloredBoldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n },\r\n coloredMemoTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n fillColor: '#dedede',\r\n margin: [0, 0, 0, 0]\r\n },\r\n },\r\n defaultStyle: {\r\n },\r\n images: {\r\n logoImage: \"data:image/jpeg;iVBORw0KGgoAAAANSUhEUgAAAKUAAABkCAYAAADnn/DLAAAACXBIWXMAAC4jAAAuIwF4pT92AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAMaFJREFUeNrsnXWYXdXVxn9r733uHYkhCQmQIIFCcCuQQrAUKxLcivNRoEgpUgotRVuglAKhRYMUaZHgDiVAgeKaEDS4JyE+es9e3x9737lnJjOZO5OZQOis5znP9XOPvGfJu+QIPdLlsvVSmzNqyLbUpnXzvS6DMs1U862pxqBl/05QLBoeVTF4DL7pefiE8K4IigAMAy4WtMKq/5UjfTUhxeFJfIolJaeFzLYBEtYkKAYw6pEyNzMVw+KFmaxd8z4+rK203h75n5dE0DMM+opVv6XTdITFPy9wCdBrQW9MDyj/p0UAVjaqT1v1f3CaViSkBO2YJpb0KIEXgfV6QNkjzSSa1u6QfQz+lYR0/QwY4+JJ8DhNVzbePw8c3x0b4FvZN9dzyhcC26oFTPnQHCLoVYIuJmidUZ0j6DTgK+Az4F7gneCfaqPB/1fQEQbNmSbfUBFVjIKgBUGfNug0gwqgwPLAKITBAgMFXdRAtaAVoswW9HDgnXI2drHCrOCDSg8oFxrxCL20HvWGGaYqhifzlBNFdSuDbwKY0SawfWzQWw3+cEFHGXSswM8FnzcwyqgeK6rLR3B+KujfDXqbUZ0p6NYGf4/AKyI6RtBjDLps0/o1G/Do6aB7z3O/xDC04RuGNHyDF9OjKRc+8w29fC2CZ5ZUzktjDhf0MEOIgA0h0o5A+TpoRL+pgcvie9uI6iyj+oCg/zDoJsC2Bk0M/h6jupKgpwu6gxHtJ4EN2N7g60TZXNDnjfoBktWw4XEvUb0GeLR1QApL109l6capqAio9oByYQxIFKjSegSokRytKUyBowRNTAYggsegXtC9LLq8wFVFzSmqGLS3oHsKuo1BdzOqYyKQhwvcaEQHNQNc+O2fjPpJwK4GHWfQJKzPZ4F5pLQApUb/eInGmSzROA2PtBrU9AQ6C5G2VIRKbaDa12PxuObLKo50J9csWCkGL/43ifoPnfrbnKYVVlOcNvverY50aKLpbEf6vBX/qhOfd5KubPFXu+L3fYrVuOCvdRRmOdKTrBZwWmgeIJFu7zRdv+m3cVk8nclijTPDpdLGvvZoyoUwEs/TiKA0YrMfHWTQKtPSlKo+JOhoo/qoQP8Wwcx0wR9r0NsMeq4IRzdpWNXHLf46Uf018LBB/2bImGrVKkH/ZdARgo406HZFTRrXbQ36S+CF4gZW+Xr6pjWoGNC0zX3sAeVCCsycphhR0mDscqA/MTDRoK8L+pqovmfQ2aL6WjDHHGZQFbTSoEuJ6koGfdiIvi/ojYLuXoq6m4KWAw26hKC7C7qBQXcS9ZNMCIJqBIxVXyPCAaK6llHtZdAVBV3DoGsKup6o9kOYnvcFqnxtWTkp6TnFXS9dmWYsnibfdLakyZwXAapCDmUxgxqD9hXVwREU90XN91dRLRi0LgLzOiPcb/DrCpqI6lRBjSjrCbq9QV34rX9B0IJVv0jUri8IbCroEQbvjFIh6vMCvzfolAjs1wX/iVFmCFpA9VtH2pD3hZjm9Dj1WB/dC02RnkDnByW9BZ1lvO5g0BMFVhJ8XwMi6CcGvdao3iDo1oLHCAj6qEFfMvgxohwSqZx3BT3boDcY1XtEvBHVGYLuZNGzBF0tBk83i+rRAtao37XkJtDPqG4r+D0FPSea8JmCvmfQSw3+WqA3MLOcnbI957XrZYU+y7Fy3xUpZIoXuiL6zmjKHwkcb9BzjertFj3ToJtZfIVFxarH4o+1+AqDP9OKx4pi8GOt+l2s+uONsp3BP2nwoy3+BKfpcw5fZfAbWvxgh//KouOt+pst+q4NRPzaFr+URf/PoEMsunb8ryWN6psWfdji97KBispbdEmjfrBVfVDQxwysIOhnBp1S9D1tK0mBHvO9cJnvYQJniLKzoM6g/xV0B4O+KfiBGV9wvBEdYdDHBdYW9HVRvcfg/2hUUyBn8TWCX9PAVkZ1EcHnY61QQ9SKORP8ywZBpwn6uKAvClQa9alBPaonGXRng64tgZhfX9B7DDo845vOMPhVRfVmAxuLqhf1D1j1f3Ckr/aY7wUkRoIB7UJZXOAcUd3PoPkSB6nPG/VLmZDqw5TKyP4Zg5Y/G/QlUf3CoPUGvyvwolG/hEH3An0HuBd0qkKdgXob0ooI6lDyoBWCLmLxI4z6fY36OwUmGXQj0PMF/YtFlxJYR9RXGtUbDTo8E6X3FdVljOpzgt/YqJrot24tcAtwMiH92QPK7pSp9d9iAdcifaYoXrXjahJ/l0U3apk2FPQ1I7pK0/vwMer/ZtDLjGq1oAMkmPYjBLUGrRH1Rwp8pHCuhHw4BiUXeUtRXAC0b1CkwYuZBToZeBfob2Bnix8l6JMGXy2q9Ub1DEHHG9VnRPTqkE3yx4nq0FBfqasaeD0S+UXKKDGq+wp+TYEfA/U95rsbpVdSza+GHUTfpBep+iZAVtoKKmyeRt/YkdVVAOMNuoJR31RMK0ErjjDozwQ90qj+QlTvjwAdIuhzgvY2+G2t+kcE/W2MIW4y6AdOPY4U25SFAYVNgCsETYz3v3T4Ryweo77J81MERJd26n9uVKsM/tygJfUJwXtRNjLq3zAhqt/CoFcZ/NjAafK0qM9ymRj818BKwIweUHazVNp8MONRvHp6J704aOjODOuzHDWF2nJXlQCvG3SYSLP8MqK6vqjWGfSL6NddIMGk9jKqlwn+KIs+I+jBwIMeeTDRlJymToJZVoPWgCYgfwmRtV5pwjqPMfjrLf5Io362KFUGNYLWpWIKAE7TkVb9KKP+BmBFo3qTUf8bQccb9DyDnizoU4IOtd4j6CuiKiVi32NUP0V1FWB2Dyi/I+mT9OLIFXdj1b7LU1N+IPScwW8gxHYDQFTHGXRHg18+gnFLUZ1h8OsInCnozRb9UtC9FDnHw7d5TXFasCBjBf2pQecIOkM0ZIJQPUCRcYKS4Icb/LVGtZ9RP12gr6BVBv+KqG7vReaA4DTtY9P09wZ9SNCCRX9l8MeL6nMGXcKoPi7qjxX0TUFvMqp7hgDKx8oiPxFhTaDQA8rvUCpsnkOX346N+6/OnEI92k6eQ+Buo7pjTP95QU8x+IsNWifoE6K6afTVHhTYUVSXMPg5Bj0HOCUVMy2nKYkWUDjawKmgh4pqvaguZtG+wJ0e+TIUSWjImWu6uNV016hNp8Zo/EqjfgxwuheDxZPzhUpBzxP0z6KaGvWTDXqjUd0zBjvPifrhsXrpIKN+tIj2QkAM/0HYtCfQ+Y6lLq3nsvfvpqaxhm0Hrkdd2oCPvmcb8oEEYmi6QfcS9H2DPiaqBxt82uRnoo8Z1YJRP8PAoaD3ANOqYgFHiskDx4jqBYjc7efKDkFOQ+bFByM7RZErfNReNhRl/D4AkIsTXz8t0QKpmFqQ2436A43qRQbvgceN6p7Rh/SiurjBX4/hGAwbi+EuDMtiQrDVA8rvgRQ05eqPHmJq/TT2GbwJGt9rQz4VmGwCpbJC9NlygjaaJgqHW4z6C43qz4KZ1YGKXJjTRpx6FBKLP8OgvRVChFw0oRIAV5E2kNdGDErBWAri8Ao2Rs2JLwDcKnCaUX+20/R4q77O+RQv8iSwsVHd3qjWCXqlqF/HqP5CQkTTKIYNsbyJYQ+E9TA8h+GbViwDq8aobDbQmDHpGkHbKz5/O2v3W8jyQHU2gopigaq4nrpIK2gPJJvLiMVW5shlt8KIaYsyWtPga0zwAy+NmtGL6jCDjhbVRoPfw6AFYKhB9wWucZp+YNXnFQ4U+IPBVwkcI+gNOV8IbRYRmMVoOBTy+qYCYeOLgZXPlAzLzoJebvDWqj/b+vQKgVrQJUX1aKN6BcIXYlQFrsayHIZdEN7H0AcDajlWhFtVGEymkqioKX8SQ/J9gP4ZviiJQL0ZGA98MA9QrgDsEdehcakCZgEPARMiIN8H0h4YNpenpr7NYkkVhw7ehLpWU5PyugkV4Kdl2g9M6I3Ryw36sqAnC/zRaLo8ynSBDxypA+6z6MYGPVtURxv8LKupGNWmGk0AD9EF8E0aSTPNF4pB1JOgKHKnoA+L6uFG/RlGdQ9BtxT0C0E/x7CxWG7EcC6G3yGsj2UAQpWa+EdGLsKwiIie3jKyyb4cAdwH9Mloyr2AW8s8ttURfMvG1xOBQ4H/9sCufVmz91Kcv9LO1Pu5QGlUxIvqY4Jukem3QdBRIX2o1woMNeo3EfRPAhdZ/DcGHQj6mlF9S1RzoTnMuxi9h6p036yiPGrJAE6jzfp7mirLjVdEfcGgjYJOFXQ4sJFY3sHSB+FUDCdiuC9u6A5q2RyRcdIESkD0BSwbkZBmLWjWp3wK+CdweHx9TwcACTAcGBKfPwNsGzVlj5QhXhUisdzCgB9jVD816K2CbpHhKKcZ9BWjfkuBAwX/Z4NuLjAN+MaFnLIKeEGvNfi/iGr/ZjWTzdsXyH7W1NujJU6x5WfAbDEcjmHdJlY/YSYwEcO2GnzGsxDZXSwPInyC0SElUHIblq0wrIRwYXHHW7ZDfJJ5/lkHjumywNVxfe8Au/UAsmNSkzaQ+kYcisUXl40t/kJHup3DP+5IU6dpqEXU9DCn6ecWX2tDG8KbTv3aVtPbXaR/HGmt0zRxPn3f+fQS51NcmuJ8aF9Isi0Tsd0hKbZJxNfhN4XwqGF0i4giDiThIhLGk1BBwgxsoOE1x0OayGri5GVxgiTMItE5JHoECYqL6jBhHI6tsfxVLFsU328Jys4EITlgTNSS06Jv+VUPzDoms9M6Gn1jLDFTDNrHope5UBi7jfWFydanj4beGn+NI33CkY51pF84TV93mj7uNBWn/usMoKzT1DotDHY+/ZPT9KMAwtjXo74JeEm2l8ZHEPpS743BY6wiCUgOcHxCwlkkDNKESk3IkYAkgiTyjThScvoCib5CopNw3EnCWzguIgEc/xXH52LZTSxgGYNj8dZA2Rm5GBgZA6R9gTd6INZxmV6oY1ZjDYmCVY9Vf7bVdLWooQY5/I4Of5nDT3WkJzlNL7Dqd3Y+TZz63zlNP7eaGqtpXeILWJ9iffpH5wvfWvUPOdI0IT3XEUHo06AtNasVC1ErBlBaPMZErZiLoW9Jy52Ho4Gc/IdEJklOzicvYBUSTUlUcczAcSYBsFvjuBDHaeL4RCw3qGUrtSypVlAry4mTC8XJfPOUR2Z80COBB7r4XJlMNP+Dlnpf4KPaqSyf70uqfjOD/rJFL/XBgu5lVHc3qmsLul98fzlRvd94XyloKpBaTQn+JwcJOhKYkfgUQa8QdC+D3yw7QMD46CeqIqIgIDYTkJgYEgcqBwwvAVciIDlqBfbB6LMIe2K4JaIqxdAL4W6ETcVQgTAKYQsV9sHIVwhjkFjlF/5jX4R/zQ8oNwf+Ep+fGX3KrpZDgZeAlzvx222AtQlVNjUZhiBpAfIp8T9eBNqqkqgEdom+swEa4noE+BS4sxWOtjVZP7IcfeI2VUSabSJw9+f1M3xelEb8nwxqm1jBQHRvIuhGYaqFTsxwi1sb78fFgoz6gKHUClwiqmOK7EeihWJwcrbREiiN+hIQTWSWpQUgDRSpHAk9Fb9HKWCAnAK8gXA+wnkI92KpwdAgwgoIbyCMRAhDX0RGI6wshq0xbBYS+Zn/FM7uLCiXBq6MB/Uq4LRuUiC/JDS0dwaULxJ6Qi4F1ozvPQ18GQ1QcYLNCsAFMbC7BLgogi4rDcBjkWG4BugX3zsMeBiYU+Y2vRMDwAuBrYGPgV8ArwE6rLIfaKNxpEkp6g3UTXhOP6NeBM1lKrtzoWHMOxNHTVifGoG8QeuK0yesemygmx4T+Jeo31skgLD4mNWIWSBipPQd0XuBh0NOMl6aQWox5AArsclGBYvBIhhEAqiFPKI5jBSaA1IRERDNdcanzAE3xJP5AHBMNwFyS2ANYPuoqToqU6OWOCLz3mkxENsF2DU+rhG1Vx1wHnAbc89kTGPwdmekygAeB66LIC+3GWcG8BZwbnw9FngE+Kafy+vKFX3AN3qn6am2WRO/x3n/htPCo9an6zmfnlAcJpCQPpxQqHP4V5xP88EH9Y1O0187Lfwy0cLaRS0ZenU8RvxZxjFdEpBkLl8xRNCJQAhaEKdBIyY6E8cpuIiCighUywriOFkMv8cySy2oJYflfbHUipPHxEWXwHICVpbH8jpWx2EVsVEDhwvgjM6A8kJgM+BV4MB4MrtDDoqPKwG7z8d6Pi9Dkz0N7AB8C+wInD6P785p8dgZmZPRwMGvMI6+CM4XSHz6kNP0KhenUcQI+R/Op8Mc6R2O9MmE9I4I2ved95u6tDDHaepcCHZI0sK9Lk3vcL7wj8QXKp0vBI2XA8nxFgmXNYExB5orgTFE0CCJQqIBgAG0l+OYgAOpIIIJJ4Yb1PCUGq4RJxAWK05m4GQbLF9jqccyDqd34fSfYhkpVq4SK2BBraJO71Srt5lOmNNfxhO9NzC5mwC5UgTJOxnfsrvl7Zg8IJrlFdv4nrSSDeuozPXbzxvm8G7NFKpVi9Hvyc6nE2P0PTOhMNaRHpbgl040Pc359FdO04ecpvVWC+c50kHOp6nzhbxVj6OAJT3BGF3GWB1lbEwauiaze74mvBPAWASilICYaJPmjI+TcPy5SZvmQtCjlp+qk3WwchxWIAGxOLEIjj5YTsfSgNNxYvVosfIbMbIyhv2xPKRWP1Kn4PgcI8dipEOU0KbA6KgZ96TM+YPzoSUroun9CtiYBTNN9t742AvYYEFH4HdM+5CchkKJRAtTnabHxFk/45z6vFP/s6g1j3aaruY03cP5wsDEpxu4tLBJ4BXTAZa0yCfWSEI9CdNJiqZW0LygOZkmTs6J5Da4IhhLZrxJQ4bfXoRhKoagCW3TMlMsc8QxXYougGUxLIJlXaxugNXlxMqeOFkcw2+iVtxcrS4pVsaKEcTIMSJ8El3PsmRI9CMtcEBMI3aXVEW+887ot90X3z9iAeDiI0oFKUsvaFA+MvMLvmiYSTVa5A8fSzT9rfPp/U4LGztNc04LOE2N84VrXFrIu7TQKw6cWlOsTjROdzJWi+a2CofD8S0ucg+9FcmFhZzeQKKPB0DSfHExCAom+j9iuUyKr6viOsLr6TgMln7hNwpWt8LygVjWFSuIkUXUaIMaHaNW8+KE+P5ILI9i9HSM3oFRMFoWKPPAtcBg4Gg6lg/vjOwBLAXcGF/fFR93AJbobrowE7TkFnhWxxe4a/qnVKBFAh1RPd+RjnE+3aNEbBdwPh3kSDc2Vh82Vu+QhA0k4SESBpKwaEz5iSYYzZELgIz2Jx/3Locn4WxaBDvFoERsk4k+Ww2pmhhy5qJ6CprUhRhbrTgQI9ViZHWx3IVlAyxP4rgVx0ZiZUVxUqKarO6J4d8IZzY5Ne1oyiKXdwGwRXzeZwGcmwMi9/doJsp9l1BWt3c3//eAqE+K/OUCl5umf8qMxjlUaoGcbyTnG30Scs8vJUFLllJ+jm8kYTMSjsbxOg5Hwovk2Dem/GZIIu9LIndj2RfIUywjd01acRyOazNaMQYeoFbAyU0YeRQjkJMAaC1etLorlgfF6mdi+SrSSvtgeVedqlr9Uq0egOWnYmQKVlOMlugnK6+GmYailAKksjRllh75I/B/3XhONoiR/VUZIrsmug7EaL87R83skHn+6ncByjVy1QxST65QR0VaT0Vaj/OFZa2kF4rocWKbaBwlYSqOk0k4V3P8RnMYTeRVEhmIkyURajGMINFLcFyK4WOEnYoqR2yTVvyjWGaoBXURjFYQR40YPU+sIokieS0CciTC+2LlBjH8E5H1sTJdnS6mVofieEysVIqVo8VyHFZPw/AVRmooUj+WszGciWG1lkS9KSNCPDxqq6JcGjnE7pCjW5jsotwZzeqahDx7d8iQzAV3D/DsdwHK1SqqqcxZNKM5xLGLOP4jOa4kYVcSGkjwJBSiid5PErlYctIgjpVJ9A1yegQ5Bau1KKdjGIjjThyX4OjTRAXlBXUySa2cT9HXiyYcy4VYGU9OkCohBiQ5MXKpWHkyulMnYplNDsTKIWJlPIa1MNRiORMjx2BEIiXUGHnNQ8XxZyxPYzkkvte0lKMp64D9YvaBqPRvyWRJukoGRkL7AUKle1bejFwiwFHdgIWl44UwCPgG+C3fkfTPJXibIbODmV0Sx6o4JpLjNRLW1IS3NREniThxAokegdWjcPowjodJqCHPiCaC21AjjhOied6/6EOK1cBdOi4Vy4fFAAfLpxhGSw4kD1oyuztiWVytHo8wK/iWCkbXwWg1Vh/C6v1YDkI4Ja7LYHEYPsLwYyyPq+F1DD/CMKAjmrIlAb13Joe8SOT0Bnbh+dg/uuE3tvH5dfFxa8Lt2jojaby6VwGWATaKNNdbhDz5q4Sc/lvfFSgrE4PmtGUkPDRmWoaokzfIyTqSyJqS8C6Jugyn+FNyKHmUhDFY9hZHNb0EqQa1zFHLpTg5RZysDQxDGYEwioQZOE4KIFKwepI4vsGwPcqmwKpqdFW1ep5avRbDN1qhgSsxYhHZDyPXY6QhLIykVNRhxDBNLMOxDMPwKoblsEDCoEjoNy0d4SmfjfxhMQBaBbg+Aml+JQEOiVrqwTa+829CvWYuUkadER+3d1/gH8AdwMExHblbBOlEvkMZUJEjdcXsSlPR7EBKmZZqnN5EojeRaILjaBJejAAeQcIyYhgtlhXFcaM6focjTxIDFScXiOVDLM8i8hRW7sJwC4bxOJ0glsfFylNi5XksL2C4Q63egeE/YuRFsVInRs4K/KaA4DCcjuUxHNVYrsIwGMsmEZRvYThOLV4t12C5HkdvyYFUglTSn0oslTGyr+x4PeWtwKmZ11sSihjmV7YGfhTXNX0e2vr2TIS+aCfB/zFwStz2laLm3Dquu5bvWHKJQXLZDIsk4qQPc2da9sSxPjlmkLAFjlFiqRXDcLW8rJZn1LISVu4S4RKU4aFaXBswui3CMCzrIqyAYZBYXhUjr0RTW69OJ6jVr9ToYBEZKkbWRlgVYSMcM2IhxlrAaAyPYMghvI7hTSwrY0gw/BzL+ji+xvIjHLtJPqQoqQoAlCrtLVVaIVVKcelMldAf48ncL77+v5h1ObULApyRhAKJ1rarEVguPl+K0AN003z8Z+M8LoBypCtqPOdOVRoN2ZXSrWAtQq6l3xWreapEOAxhPxWOQPiRCjmMLIPgRbgaYTPgOAxHAVvjuEyQr4GZWqxUDVuxL8JNanU0Qk5Efq6qdzZ9bpie+f9FUI7A4IBTxbCMCo/E9TyK8AaGFWMX46tieRTH5VjyWEKBR9FvtpqnRV1vZ0vXDo8+2Sbx9e+B96I57zALAmwV/bmHMzxhazI+8pXLxm246TtQZkUgVc7HOmxbwFYXKZ+SDWtAmNkMjMXCWGE5Fd7EsBTCPWrkBRGuQfR6RNZEGIXhKITDMFyBsJWIHIPwGZYbsTpLinM0Q8Pag8CaImIwzBYjzUvaoAplL2BFsYwHHlWhXoUTES4A7ojDBvbE8AuxbBSDtb/idLA0RdgagyzAMRPR+q4AZU0MTP5NKGED+DvwRXyvI3JgfDy3A9miswj58JGEOscFKcW53f3nYx394uNchcF3T57CtgMWy8LVI+yB408i7FEEpQagrIVwNSKB9BbWD4tUYLgO4U1ErxUjtRFUcxCuRVhZRU8BPkW4A2EKhlSCeq7JFNwKgkVYhFA9tSLCixjGqDBMhBqEAnA8hvWwfC2OfbGMiUEMYhUs47G6SVE7BspJwXAPyO/Q5pVm81N5/nEE1AMx09MrRs4jI4VTjiwR1zG5A+D6J3BS/L+9vwNQFvdt+ZgB+qYT61g9Ps4VVN3x9WROXH4IgysqaPC+qJsnAXti+JsajsfIjhEwPxbhLAyTEfqXNKnui3CDiJyDyECEZzA8jfDXCOqPReQBhE1Ci4JWoFIZtXEj8a4oEch1QC3Chwj/iBrcInyshqMwbIZlY7HMxrE+jv2azHPQirOxTBLHSbgm0/1vhPPxPEIrI5Tmt3HsGeDXLUB2YweCkJ9FeulfhKLccuSDDLG9WwTHgpSXYxS/aHT0OyObxJP9YssPpjcWeGLqdCpMq6fmKYSd4gSKa8XSC4eNBbNNQBAr64mRn2L5PZZ+anU7NXoOloujOT4dy6NY3RzLNKzchOVcDJdieJnAIV6O4Vws12GZgmVDHPdjuEByePJ6juS5UCoYJZUsRiVnSqWuLRW6KRVKcZFKPjBVqlKlS0uF3kzC5mLYilDc3Kp0RTfjNTRvh1gr+pbtaWGbIcI72t9T9F37EqrHF6RMoJSXP7oTv/8xsB2hwr3VVuQ7v55Mg/fzKtj8L6IHY/gJhi+wepNYXhNDbVPu2ulZavUptfp8yNIIhMEB/8ByCYaZGPlDpIP+g2UrLDMxvIThRSzTsfwEy2NYxuI4AwPkOYcKRkuFnBCjZ6RSX5MqvZtKPY1KLVI99VKpE6RC/yE5vsHyU4S9gSfaCxLdPEDakSLWMyOl8/P4ejvgb5Q6HVuTjYB1CJM5OtqWex+hp2bpaP7/Pg86pzs6IX8bfdrtCQXIV5X5uwpC5f4c4E9tfemNWbP5pqGRRRNHYV4z0pVvMSCOf4I8oKIuRr1riMhKCP2BXyF6PoZakAKGxRF+DOyMsBuGOoS3Qx8NOyJsEP3I5xHexrIH8COx9CXHzVg2w7I8Vh8Upw5LJZaTJWERDK/i9FZxTMDytjjqMczE42lkarmIagnKbLX1Mh08UUcS8scj4uvDgA8JfS+tyS/j442dAMV04Ml4EaxKKKRoK0jKZaLdripHew34FWEIw9+jX3l3O7+pjmzBRoT2jrfb+uLUxka+rq9nQC5pG5TFNEBeCfkfvRfDHAkj+V7F6NOI5BDeAUYiMgihMfKJiwM/E8PTwCyEMSrs1ayr0DRFx/di2V8SFRJ+htEpWA7DSr1Ychi+kpwmOFbAcBUJS4tlfayeiGUpjG4G1FMrUC9lqbosKPfKaLqitjsqarxyZEb0ES+KkXkSI+rVoiZ9P6O1TiBUrzMfhHW24/DP8SS3pnF/nsk67USYAtcVcnWMxP9OyJuPAf4a97MxY20GENp9/xyBuVN7AFYF3w5DKpWRgA5neQ7wAsJRiG4ewCVF+ugBRPZAuBNhHYRGhCS2vH6DcDDC0TEzs1sTbRNy4A/iOIJE18VwLVYHRyqnEaeJWCbidEMcF2M4SJzSVOgb8uq3EEsApULRWWGgdXvAlJjeWzNqG5s5oEWG6hHg+XiV15R5woYRxgKOiIT3zBgUvQysHE9MY/yPzyOQH6K8JrR+EWhHRq4wjadnMqHE7eHIZ24YwXBAxown0Ze7K7oNXWHa+0dzvn/ctq8I9aCFGAwtGfd1bLw4v25XU4jwykbrsXqf3hS8xwt4q3gDDarQG6Svttz6dRF5DnBZPjMuvxZ4UoX/IlTM1WvtuEwsx2HYLFYRJWL11zi9F8fZGE4qtjoE7algqRfDcBJdEcstYTJGEwUEzqPCJvE4l9A2zcIME3rAPeDnvgm9xIhZ49XmW/Exq+LjZNq5gMsA04C4vkL8z8a4NBBaVctZfw5YLALdt0ghVscLZ0b8TkLos/aZ/S0Oge3qprd89KtXJ1QbSQTghKjFy7YIVoSTl1+GpSvyCDCwMkffvGPxioQVlq4i7as0pjr3JSXcjrBLC0ASb7qzCcIQhJso9ntnq5EsU7C6vRieD+/p6uK4D8uQFmAktsXuT8J/sfoSln6B6lHUaQSmPojws9ZCa53s0MnRo2oDlN0puaixticU764UQZGdFlyIpPuEyDk+Ek+ip0eaH0wjHLT6kvxxxPL0yztmN841f3ZzhHFNYKSZRpyC1bXEsDdWzs+A0YvVZ9XyV3E8IYluQvAVHxWrw3Ech2UzHLaJfzR6quS4GKsvY3VFDVXw0Wz74nd2oNRf1RxxouhnOfSrJLxeQKDsRxhScAilmZXvRdBNyGjd3jFluF409b3j+xOiz3YdZd759H9Jhvar5JItf8S2QxdjTkNaCoZCnvrq6CeWzHOxzSHhEyybiuUQnO6glisl+I0zxOkOWI4TyxrRFL+F5RJxehuGaqz+FMcRYhmniT9bLI+r1XWKGjIAMi7W3wOMmqfTCPgP8/B5HozvdlDuQ5gxNChqwUuBywktufPSfr0J7RAnU+oJ+hI4JwZbPbPSs1ZQ4Nj1h3DqxsvSK2eZU9KaQxHuwjBAHHVYZkfye5JYfR/L7SjvSKUaEnbAciCWjcRq/4z2DCY4BC7TcDwjVm9UuE3Aaz5dShLdF6cr4hiK8/2x2gvrKzTRmYjuDrzebjQjCu9UoR/nA6i7AZQ5QsHsYfH1S5FDfLMT69o9AnnRTObm9h4ozi3L9qvgwq1WZKeV+jOjrlD02yrEaQ5LqlbqxVAI2lKbmGjprZDnSEn0b005aZuJnovVPA7UehCOJ5W/igfNeSRRNNHwncQ7dT5Hog7rG5Ey/WenMDVBn+8dqqMyEXZXOfk3ZCLduwkJ/M87ub6J0dRvE7M2E4D/9ECwFcK2rsB9705l2OLVrDWwN/UFD6IFMdRjaMSIL47ak4yvKXnA8aJU8phU6saS08UoVn/nY194XiHnJ4nTnVG5GR9LNuL8nya3wKrHaCOWeowWylZ1Asyx8EW+mXo0XXRsRhP6tQHGRc5zznyu8+XoChAJ8h5pQ+Y0pux310TufHsyfSuSjhrAp7G6oVTo36XSQ1UKlSlUpWiFv4ZEf7KgFUJXaMpjCPWURM1YHBTVFfJp5CKHR3PeI21Io1fue28qQxepZN3BfWiM/GbTGL/WNWXQjInWSY4HyPsnqNDlNadf4jgQuEhU5jTxiW1rSkr93Fr+NWGAmrk15fxO8l2W0FpQlNMjkLpSroi0Ui8ydzptxX3IRS6wUMaFWB1J/aUI9Z8N7fxmqXg6P+uC/RFCZdMHHQzeFo+B4BKR2/0sBo+zo1VK5zSm/OL+t5lS28BB6w7CWqGh3L8IX3sSoyPFqqiXxu/qAptfUJ5AaZTKM3TPNN8PI3AGRVqpNVmBMIBre0IGpY7iYJK5T3yeQOL3jcBYrYxt2JqQsz6kK2ITQj3AHmWCsle88I8lNM5NitZjFUL6dGrcvlcBZtYXOOrBd3nik2lct/sw8s7QoB2ifAt8xzI/oBxE87mRN3YjbXMr805xvhmXiYQ0Y46QSryKmCHOiI8HflQEcjnGpk/0b3/H/N/5Yn9CG29lGX53VdyPkRGUl2W0+pKE2oL9aKXQZOybk1GBa3YfRkXOUBuBuTDctnh+QLlL1DgQku53d+N2vlvm956IAdJwQu/2vG4McA+hDrQX7ef0F41a6TDgjPnYj0pCtXxfQhq0PVCeEQG5P6XRNUX5Ir6/aCsXHgC3T5jM1NoCt+y7Kov2ctSkC8cdCOcn+t448/xFAtH9fZA047u1J09SXjqzWMZ3AIHk76zsRUi12mhp5iUD4kXwYiuAzMr189rXJyZNY5sxr/PelFpyVhaKFERnQekIXYhFeXshDVqforw2jCIol6PzgxCKoC7KkHa+u2G8ANq7t+U42smevPr5LA7811s0pIox8oMF5ZI0LwJ+dyEFZVqGH5yP+1uUI8jeE6F82Z7QCvF5BuDt+ey0ZZozMqWcC2tmXYGC14XCp+wsKAfRvD/7Y364skikhG4hVLyvTshWdVROiX7sQy1A15YU7225JaWW3P8J6Swo+7Z4PeMHfIwGRW01Nkb2EKiwjhy79WLwdWlGqw1o5zfPxwBsWUJRSg8o25GW5quridZc1MS2jf+uZv451nJlYMYaXJTx97bowDpOJvCIT1Gaqd7eqOxJUTtDaMC7bL5OtAi985bEyPfehHcWlIVWAp+ulG0I2aEHoxP/XNQcrxN6xH9HaKvorFSUYT5pAZ6auB3PxdfHlfn75Qj9TudkfMCiBm7PNz2BUG1VBOZYOtn89un0Oi575gu+mdNIPmdIrPB9DcU7C8qWhbddPQv9HuBE4PjoKmxAuK/hzHhyTiFUDnVWhjCvItTWQTktPl6UuXDKuY3KryIQi5zplxkN3J6vWLzZ1JPx9a6E8YUdpqVm1af86o73WPO8F9llzAS+ntlIdc5+L3HZWVB+SXPCeUg3bd94mrfO3kr5A/Kro0YckFn6x+UEyr/TxNIx6CheiPcRcs5C+8MIBhH6wv9CiSj/OhNADSrzWI+idI+f7SLAOzXLaOqcRu6bMJVdLnmTj7+tp7rSfu9wOT+gzBYnrNiN21jTSd/1AAJ/+lKLZWIESn2Z6xlK6OvO3v7u4vh8H8JAhbZkv2gj/5XFRaSihPLv1TOD0JL8j/h6YwI/ObSzB/Xlj2exw/kTmPhpDdVV7nsFzM6Csp7mc8lXXkDb2xEf/V/R5G/eYtmAUDiSL3M9y0ZQZs/bTYRCEUdpahytuDTHEUrusm21UyhVOy3Xgf2pJUwdLroPqxHGx6zR2YM54dM5bHP6eMa9Mp2q3u57kxifnzTjf1tQHot/z6zAtAimSZnlg7icT3nT0npFEzu1FZ/6how2bG3I1g7RH245zGFWxj/t6F3NPGGg2HkZUD/cjraedwA0pZ6d/jCR2x6ZTGW1/V4Ac35AeQelSbiDoq+zsMgnwP1lfG/xGIy0ljG5nNCV2Y/mk0WKx/W30f/8qBV3pFyusi35LWEcosaA6dIOaP65g6DalP3OfI9bH5pKZS+3UIPyI8L9bbL+08IitRGY7cmgTBTcml9dDMJ+0SLw+Cmh3vHctuKN+QQlhDEwJ8TnGxBqKjst9Y2eg06bxGNPTaeyr8OahROUEGbnFNNhIwldhz8kGdwCRC1ldPQPl6bUo0QEy/OEMrrWZHoLuqmzchHwSnw+331MNXWeA075kEcem45XqOrtqMgL1i5Ywn1+QTkhXrFFOfd76FuWI31oncguBiJtFfa+S5hNBKWxhxsQ8tXzSg0WQbkkbXOOo2if//WUOMwuOe6ff9XA1ge/ywa7T+SvY75k/Lu11NV7KisNVVWWfIXt9pPRFQ7E2fEq3StSFGMIBcBdNXaleG/IBtprcO+8/JxQOd/YhvmeV63oFYRi29XieoYT2jbubycIg1DoOyBjbbIsw5aU10VYdC1md+UBGf9uLcef9wnOCsssmWfYspX0q3Zss2E/9thmUQqk32tQQuD9+kcTPoow3fcg5j9fcCildN7htF9b2BnZhEBkz2rls6LPN69hWM/HgGYU4QYBg+I2z+uiLCYAKqK2nNTi82oCFzkgA+C2ZKX4OKk7AFJIlUmf1jHp0zAQ78FnpzFivV4staSjvpvYza5yZ2cDOwM3x9cHEDi0zmZ6lolB1JUxWt2bcM/xrpa+hBx7W1ptYDs+ZVHGZMz9R7R/65YvW+xrazKkDEZjCUK6cyaBTO92mTqjwLiXZmKbeE393oKSqGn2IUzonRW15hsZ7VHOtqwZtezbhBmWTxEI8JvL3IbKjHZr72itTujpqWzDLVgkRtAzy9BW92V8u9tov/cm66MOb01BEbI4f4z739a+Xhd9yVPpmvbfsuTysV8zcfzsOFCr60Og7gqqBhMKEQ6NznoDoXRrHCET9FU88H0JxPOGhBbWomZ9PAYKj1Ney2dlNHmnEoYjEP2611oEMBp91KFRq0l0C67IHI8+cbsuitofQorvTuad5jwwavM1mPsuvNnjnQP+QKlfvpEwMXlspKqKc3gOi9G9EAj46wmEfx/CzbBOiqb/1OjXL1AZOqSCF25ZhV59IDUedT7coi/MHSpPrMKUBH2x+Syh7o70F49g25Ewn3LZNrTzVEJe+i5Cj/ekDtqFYfF/hsYLoDgRvKKV9RRnYjYS+sMvy5hnGzX8j+KFVRv97tmEkrUn57FdfaNmO4G2JxJXRECtFdebZi6a96J/+naLi3v3eHEsGX9TrPgfRyj0eOG7oCuWWyrPS2NXoVcfWehA2WwTIkgHRBrERn9xCiE3XMfCLxXduB/VlErdvuU7vrlpd4JyQeaU0gi+r/nhSndeWHOY/6FhC4UYeqRHekDZIz3SA8oe+R8E5eExYoXQV9M3BjGjCTzfYEIDP4TpaNcTuMgjM+s4hMBnFmUzQiHtlZSKPPaL791IqZ5wC0plY4cAP8k8/3F8fhSlyRTHZ4KFdQl3xL05Pm8ZsFxIKE87mdJAgF8Tqr9HxwgdwsSMHeLzUTS/V2QF4XZ32Wqgn9B8UsZO8b+Ksjah0AUCpbZRfN6fUPF+Z4v/+yehaHl4DyhLsiGle35vGk+EiTTQKfGEbJihOAYSOMh7MsHWnvH7RZJ9LQKXeTYhZdebMPP8OQLPWDxpK1MqcB1OKTuyPqUC2jUidbJMBEQu/udoQk3oicxdcFEV13thvEA2zADqSsKEt99mQLRKfL4qpdsmF/dtG0r5ewi0WPYi2CFue5GjXTSCf4u4rmXj+6fG43oCpRmgxYkbZ9PKbZr/1823tni0hArvPoRxJcU+m4YIpDMzB3ttQsbkWUpDs+ojKI4l3FZuVlzHZ4QKm2IEPztq0uvjyZ/TYjuKUesTBDK6Nm7DGvE/7ye0GKzfClPQLwKhd9yXouxDuN3fs63sf8vnbR0rzYC4PyFJsH18rzJegLsQKLRi8mAYgVOdREgKFI/TdsBvKN3qrweUkQZZhNKE3HoCU5WPmmYXSgRxnlD/dyCl/ulNCaT3yhFYRVB/TCCM50UOV0dg7R9PbNHMZpmyPtHkLhE1sI+gXjQC7ivmHsPiCFzgEXG9h8b3C4SsynI0v191R/je7K2XRkQrsx6wbea/3yaUBe5KiY+cTalmsn/meN5ISO1O7gFlSa6LV+u9hPTa9LjeOYTU4kOZq3hWPKFXUqqaXjea759FEFbGEzEh+nPbUCr1r6d5z3ltRmt+TalDcWbm+ay4TVfH7ZJo8sYSJlBsSWiZzUpD/N75hHz8/Rlg/ItQgHFwZv1FDT0l+nk3RlM/O2r4izJ+45zMPqwb17MtpVv01UTwX06YsVmsNrooujK3U6rdnBovqOsI1e4/CPn/AQCgHn3VsbiwlwAAAABJRU5ErkJggg==\"\r\n }\r\n\r\n }\r\n\r\n var date = new Date();\r\n // pdfMake.createPdf(dd).download('PDF_' + date + '.pdf'); \r\n pdfMake.createPdf(dd).open();\r\n // pdfMake.createPdf(dd).download();\r\n\r\n }\r\n\r\n createMemoEstimateReplica(resData) {\r\n console.log(resData);\r\n this.headerDetails = resData.headerDetails;\r\n this.attrDisplayDtl = resData.attrDisplayDtl;\r\n this.memoDetails = resData.memoDetails;\r\n this.GrandSummary = resData.GrandSummary;\r\n var tabledata = [];\r\n let Objkeys = Object.keys(this.attrDisplayDtl);\r\n let Objvals = Object.values(this.attrDisplayDtl);\r\n let valObj = [];\r\n let arr = [];\r\n let broker = \"\";\r\n let aadat = \"\";\r\n if (this.memoDetails[0].commission.length > 0) {\r\n\r\n this.memoDetails[0].commission.forEach(element => {\r\n if (element.typ == \"broker\") {\r\n broker = element.name;\r\n }\r\n else {\r\n aadat = element.name + ' ( ' + element.pct + ' )';\r\n }\r\n\r\n\r\n });\r\n }\r\n\r\n //#region table header row\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"Buyer : \" + this.headerDetails['buyer'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = aadat != \"\" ? \"Aadat : \" + aadat : \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = broker != \"\" ? \"Broker : \" + broker : \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Sales Exc : \" + this.headerDetails['employee'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 1;\r\n spanObj['text'] = \" | \";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Loyalty Lev. : \" + this.headerDetails.LoyaltyDt['loyaltyctg']\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n if (Objkeys.length > 19) {\r\n for (let i = 0; i < Objkeys.length - 19; i++) {\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n }\r\n tabledata.push(arr);\r\n arr = [];\r\n spanObj = {};\r\n //#endregion\r\n\r\n this.memoDetails.forEach(element => {\r\n if (element['co_serial'] != '' && element['co_serial'] != null) {\r\n\r\n //#region Memo wise details\r\n let arr = [];\r\n var spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Id : \" + element['co_serial'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj = {};\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Date: \" + element['memodate']\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"Terms : \" + element['terms'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n spanObj = {};\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Exh rate: \" + element['exh_rte']\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Status : \" + element['print'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 1;\r\n spanObj['text'] = \" | \";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"365 Day His. : \" + this.headerDetails.LoyaltyDt['365'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n //2nd line \r\n if (Objkeys.length > 19) {\r\n for (let i = 0; i < Objkeys.length - 19; i++) {\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n }\r\n\r\n tabledata.push(arr);\r\n arr = [];\r\n spanObj = {};\r\n\r\n //second memowise line\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Qty : \" + element['qty'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n // spanObj['fillColor'] = '#dedede';\r\n // spanObj['text'] = \"\";\r\n // arr.push(spanObj);\r\n // spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Carats : \" + element['crtwt'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 4;\r\n spanObj['text'] = \"Disc. : \" + element['sal_dis'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"PR/CT: \" + element['quot'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'coloredMemoTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Amount : \" + element['sal_amount'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n var spanObj = {};\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 1;\r\n spanObj['text'] = \" | \";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'coloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Next LVL Benefits : \" + this.headerDetails.LoyaltyDt['ldiff'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n if (Objkeys.length > 19) {\r\n for (let i = 0; i < Objkeys.length - 19; i++) {\r\n spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n }\r\n\r\n tabledata.push(arr);\r\n\r\n //#endregion\r\n }\r\n /////// tabledata.push(Objvals);\r\n //\r\n element.gropudtlList.forEach((grp, i) => {\r\n //#region for draw line before each grp header\r\n // let arr = [];\r\n // let obj = {};\r\n // obj['color'] = '#dedede';\r\n // obj['colSpan'] = Objkeys.length;\r\n // obj['text'] = \"___________________________________________________________________________________________________________________________________________________________________________________________________________________________________\";\r\n // arr.push(obj);\r\n // obj = {};\r\n // tabledata.push(arr);\r\n // arr = [];\r\n // obj = {};\r\n //#endregion\r\n if (grp['grpup'] != '' && grp['grpup'] != null) {\r\n let arr = [];\r\n var spanObj = {};\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Group : \" + grp['grpup'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Qty : \" + grp['qty'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Carats : \" + grp['crtwt'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 2;\r\n spanObj['text'] = \"Disc. : \" + grp['sal_dis'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"PR/CT : \" + grp['quot'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = \"Amount : \" + grp['sal_amount'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n for (let i = 0; i < Objkeys.length - 15; i++) {\r\n //spanObj['fillColor'] = '#dedede';\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n tabledata.push(arr);\r\n if (i == 0) {\r\n let Ovals = Object.values(this.attrDisplayDtl);\r\n let farr = Ovals.map(hdr => ({\r\n bold: true,\r\n text: hdr\r\n }));\r\n tabledata.push(farr);\r\n }\r\n\r\n }\r\n grp.packetsDetails.forEach(pkt => {\r\n Objkeys.forEach((key) => {\r\n // console.log(pkt[key]);\r\n if (pkt[key] != undefined && pkt[key] != null) {\r\n if (pkt[key] != 'MKAV' && key != 'rap_dis') {\r\n valObj.push(pkt[key]);\r\n }\r\n else if (pkt[key] == 'MKAV') {\r\n valObj.push('');\r\n }\r\n else if (key == 'rap_dis') {\r\n let bobj = {};\r\n bobj['text'] = pkt[key];\r\n bobj['bold'] = true;\r\n valObj.push(bobj);\r\n }\r\n }\r\n else {\r\n valObj.push('-');//value not found for this key err\r\n }\r\n });\r\n tabledata.push(valObj);\r\n valObj = [];\r\n });\r\n let ar = [];\r\n spanObj = {};\r\n\r\n spanObj['color'] = '#dedede';\r\n spanObj['colSpan'] = Objkeys.length;\r\n spanObj['text'] = \"___________________________________________________________________________________________________________________________________________________________________________________________________________________________________\";\r\n ar.push(spanObj);\r\n spanObj = {};\r\n tabledata.push(ar);\r\n });\r\n\r\n });\r\n\r\n //#region static bottom-total\r\n let btmtotObj = {};\r\n let bottomTot = [];\r\n\r\n btmtotObj['text'] = 'Qty : ' + this.GrandSummary['qty']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n btmtotObj['text'] = 'Carats : ' + this.GrandSummary['crtwt']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n btmtotObj['text'] = 'Disc : ' + this.GrandSummary['sal_dis']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n btmtotObj['text'] = 'PR/CT : ' + this.GrandSummary['quot']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n btmtotObj['text'] = 'Amount : ' + this.GrandSummary['sal_amount']\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['style'] = 'reportHeaderKey'\r\n btmtotObj['colSpan'] = 3;\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(spanObj);\r\n btmtotObj = {};\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n\r\n\r\n if (Objkeys.length > 15) {//18===colspan 3*6\r\n for (let i = 0; i < Objkeys.length - 15; i++) {\r\n btmtotObj['fillColor'] = '#dedede';\r\n btmtotObj['text'] = \"\";\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n }\r\n }\r\n tabledata.push(bottomTot);\r\n //#endregion \r\n\r\n const currentdate = new Date();\r\n const datetime = \"Printed on: \" + currentdate.getDate() + \"/\"\r\n + (currentdate.getMonth() + 1) + \"/\"\r\n + currentdate.getFullYear() + \" \"\r\n + currentdate.getHours() + \":\"\r\n + currentdate.getMinutes() + \":\"\r\n + currentdate.getSeconds();\r\n var dd = {\r\n header: function (currentPage, pageCount) {\r\n return {\r\n\r\n columns: [\r\n { text: datetime, alignment: 'left', style: 'reportHeaderVal', margin: [3, 3] },\r\n {\r\n text: currentPage == 1 ? 'Packets List' : \"\", alignment: 'center', fontSize: 15, bold: true,\r\n margin: [3, 3]\r\n },\r\n { text: currentPage + ' of ' + pageCount, alignment: 'right', style: 'reportHeaderVal', margin: [3, 3] },\r\n ]\r\n }\r\n },\r\n pageOrientation: 'landscape',\r\n pageSize: 'A4',\r\n pageMargins: [5, 30, 5, 5],// [10, 30, 10, 10],\r\n content: [\r\n\r\n {\r\n\r\n },\r\n\r\n {\r\n style: 'tableExample',\r\n alignment: 'center',\r\n table: {\r\n headerRows: 1,//1\r\n body: tabledata\r\n },\r\n layout: 'headerLineOnly'\r\n\r\n },\r\n\r\n ],\r\n styles: {\r\n reportHeaderKey: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n reportHeaderKeyLeftAlign: {\r\n fontSize: 8,\r\n bold: true,\r\n alignment: 'left'\r\n },\r\n reportHeaderVal: {\r\n fontSize: 8\r\n },\r\n header: {\r\n fontSize: 18,\r\n bold: true\r\n\r\n },\r\n tableExample: {\r\n margin: [0, 0, 0, 0],\r\n fontSize: 8\r\n },\r\n boldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n coloredBoldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n fillColor: '#dedede'\r\n },\r\n nonecoloredBoldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n },\r\n coloredMemoTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n fillColor: '#dedede',//\r\n margin: [0, 0, 0, 0],\r\n },\r\n },\r\n defaultStyle: {\r\n },\r\n images: {\r\n logoImage: \"data:image/jpeg;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\"\r\n }\r\n\r\n }\r\n\r\n var date = new Date();\r\n // pdfMake.createPdf(dd).download('PDF_' + date + '.pdf'); \r\n pdfMake.createPdf(dd).open();\r\n // pdfMake.createPdf(dd).download();\r\n\r\n }\r\n\r\n\r\n getTable(resData) {\r\n this.headerDetails = resData.headerDetails;\r\n this.attrDisplayDtl = resData.attrDisplayDtl;\r\n this.memoDetails = resData.memoDetails;\r\n this.GrandSummary = resData.GrandSummary;\r\n this.pdfFormat = resData.pdfFormat;\r\n\r\n\r\n this.GrandSummary['sal_rte'] = this.GrandSummary['quot'];\r\n //delete this.GrandSummary[\"quot\"];\r\n // this.GrandSummary = resData.GrandSummary.map(gs => ({\r\n // sal_rte: gs.quot\r\n // }))\r\n console.log(this.GrandSummary);\r\n\r\n\r\n let gremark = \"\";\r\n if (this.memoDetails[0].transaction_attr['remark'] != null && this.memoDetails[0].transaction_attr['remark'] != undefined) {\r\n gremark = this.memoDetails[0].transaction_attr['remark'];\r\n }\r\n let tabledata = [];\r\n let Objkeys = Object.keys(this.attrDisplayDtl);\r\n let Objvals = Object.values(this.attrDisplayDtl);\r\n let colLen = Objkeys.length || [];\r\n let valObj = [];\r\n let arr = [];\r\n let widthsarr = [];\r\n\r\n let Ovals = Object.values(this.attrDisplayDtl);\r\n let farr = Ovals.map(hdr => ({\r\n bold: true,\r\n text: hdr\r\n }));\r\n console.log(farr);\r\n tabledata.push(farr);\r\n\r\n //tabledata.push(Objvals);\r\n\r\n this.memoDetails.forEach(element => {\r\n\r\n element.gropudtlList.forEach(grp => {\r\n\r\n grp.packetsDetails.forEach(pkt => {\r\n Objkeys.forEach((key) => {\r\n if (pkt[key] != undefined && pkt[key] != null && key != 'remarks') {\r\n valObj.push(pkt[key]);\r\n }\r\n else if (key == 'remarks') {\r\n valObj.push(gremark);\r\n }\r\n else {\r\n valObj.push(' ');//value not found for this key err\r\n }\r\n });\r\n tabledata.push(valObj);\r\n valObj = [];\r\n });\r\n });\r\n });\r\n\r\n\r\n let dataRowlen = tabledata.length;\r\n let minpgSize = 10;//11\r\n valObj = [];\r\n // if (dataRowlen > pgSize) {\r\n // pgSize = 38;\r\n // dataRowlen = (dataRowlen - 34) % pgSize;\r\n // }\r\n\r\n let obj = {};\r\n for (let i = dataRowlen + 1; i <= minpgSize; i++) {\r\n for (let j = 1; j <= colLen; j++) {\r\n obj['text'] = \"-\"\r\n obj['color'] = '#fff';\r\n valObj.push(obj);\r\n obj = {};\r\n }\r\n tabledata.push(valObj);\r\n valObj = [];\r\n }\r\n\r\n var resIndex = [];\r\n var posWiseVal = [];\r\n var totDatakey = Object.keys(this.GrandSummary);\r\n var totDataVal = Object.keys(this.GrandSummary);\r\n var IndxLen = totDatakey.length || [];\r\n for (let i = 0; i < IndxLen; i++) {\r\n var indx = Objkeys.indexOf(totDataVal[i]);\r\n resIndex.push(indx);\r\n posWiseVal.push(totDataVal[i]);\r\n }\r\n var bottomTot = [];\r\n\r\n console.log(resIndex);\r\n console.log(posWiseVal);\r\n var btmtotObj = {};\r\n btmtotObj['text'] = 'Total';\r\n btmtotObj['style'] = 'reportHeaderKey';\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n for (let i = 1; i < Objkeys.length; i++) {////starts from 1 to skip qty\r\n widthsarr.push('auto');\r\n var pos = Objkeys.indexOf(Objkeys[i]);\r\n if (resIndex.includes(pos) && pos > -1) {\r\n var val = Objkeys[i];\r\n if (val != undefined && val != null) {\r\n btmtotObj['text'] = this.GrandSummary[val];\r\n btmtotObj['style'] = 'reportHeaderKey';\r\n bottomTot.push(btmtotObj);//this.GrandSummary[val];\r\n btmtotObj = {};\r\n }\r\n }\r\n else {\r\n bottomTot.push(\"\");\r\n }\r\n }\r\n widthsarr.push('*');// because starts from 1 ,need 1 additional push\r\n tabledata.push(bottomTot);\r\n console.log(widthsarr);\r\n console.log(tabledata);\r\n\r\n\r\n // resIndex //[-1, 3, 13, -1, 12]\r\n\r\n // tabledata.forEach(element => {\r\n // console.log(element);\r\n // for (let key in element) {\r\n // resIndex.includes(parseInt(key)) \r\n // {\r\n\r\n // }\r\n // }\r\n // })\r\n\r\n return {\r\n // margin:[0,0,0,0],\r\n style: 'pkttable',\r\n alignment: 'center',\r\n table: {\r\n headerRows: 1,\r\n widths: widthsarr,// ['*', '*', '*', '*', '*', '*', '*'],\r\n body: tabledata\r\n },\r\n layout: {\r\n hLineWidth: function (i, node) {\r\n let width = 0.1;\r\n if (i > dataRowlen) {\r\n width = 0.1;\r\n }\r\n if (i >= tabledata.length - 1) {\r\n width = 0.5;\r\n }\r\n return width;\r\n //return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n let color = '';\r\n if (i > dataRowlen) {\r\n color = 'white';\r\n }\r\n if (i >= tabledata.length - 1) {\r\n color = 'balck';\r\n }\r\n return color;//(i > dataRowlen) ? 'white' : 'gray';\r\n //return (i === 0 || i === node.table.body.length) ? 'gray' : 'gray';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n getterms(trm, totalPkts) {\r\n var ftrm = [];\r\n trm.forEach(element => {\r\n ftrm.push(element);\r\n });\r\n\r\n return {\r\n style: 'tableExample',\r\n color: 'black',\r\n pageBreak: totalPkts.qty > 10 ? 'after' : '',\r\n table: {\r\n widths: ['*'],\r\n body: [\r\n [\r\n {\r\n border: [true, true, true, false],\r\n columns: [\r\n {\r\n stack: [\r\n {\r\n text: 'Acknowledgement of entrusment as per the condition below.', fontSize: 6,\r\n bold: true,\r\n margin: [5, 2, 0, 0]\r\n },\r\n {\r\n text: 'Subjects to Mumbai Jurisdiction',\r\n fontSize: 6, bold: true, margin: [5, 0, 0, 0]\r\n }\r\n\r\n ]\r\n },\r\n {\r\n columns: [\r\n {\r\n fontSize: 6,\r\n text: 'Receiver signature ________________ ',\r\n margin: [5, 12, 0, 5]\r\n },\r\n {\r\n fontSize: 6,\r\n text: 'Autorised signature _______________ ',\r\n margin: [5, 12, 0, 5]\r\n },\r\n ]\r\n\r\n }\r\n ]\r\n }\r\n\r\n ],\r\n [{ border: [true, false, true, false], text: 'Acknowledgement of entrusment', fontSize: 6, bold: true, margin: [5, 0, 0, 0] }],\r\n [{ border: [true, false, true, false], text: 'I hereby acknowledge the receipt of above mentioned goods which you have entrusted to me and which I hold for you for the following conditions (i.e. Conditions approved by The Mumbai Diamond Merchants Association)', fontSize: 6, margin: [5, 0, 0, 0] }],\r\n [{\r\n border: [true, false, true, true],\r\n stack: [\r\n {\r\n fontSize: 6,\r\n ol: ftrm\r\n }\r\n ]\r\n }]\r\n ]\r\n },\r\n layout: {\r\n\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 'black' : 'black';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n }\r\n // return o;\r\n }\r\n getTotal(currentPage, pageCount, colLen) {\r\n var spanObj = {};\r\n var arr = [];\r\n var tot = [];\r\n spanObj['style'] = 'coloredBoldTableTotal';\r\n spanObj['colSpan'] = 2;\r\n if (currentPage >= 1 && currentPage < pageCount) {\r\n spanObj['text'] = \"Amount chargeable (in words)\" + \" Countinue.....Page \" + parseInt(currentPage + 1).toString();;\r\n }\r\n else {\r\n spanObj['text'] = \"Amount chargeable (in words)\";\r\n }\r\n arr.push(spanObj);\r\n\r\n for (let i = 0; i < colLen - 2; i++) {\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n arr.push(spanObj);\r\n }\r\n tot.push(arr);\r\n return tot;\r\n }\r\n createExternalMemo(resData) {\r\n let headerDetails = resData.headerDetails;\r\n let attrDisplayDtl = resData.attrDisplayDtl;\r\n let memoDetails = resData.memoDetails;\r\n let GrandSummary = resData.GrandSummary;\r\n let pdfFormat = resData.pdfFormat;\r\n let gremark = \"\";\r\n let throughPerson = \"\";\r\n let throughPerson2 = \"\";\r\n\r\n if (memoDetails[0].transaction_attr['remark'] != null && memoDetails[0].transaction_attr['remark'] != undefined) {\r\n gremark = memoDetails[0].transaction_attr['remark'];\r\n }\r\n\r\n if (memoDetails[0].transaction_attr['through_person'] != null && memoDetails[0].transaction_attr['through_person'] != undefined) {\r\n throughPerson = memoDetails[0].transaction_attr['through_person'];\r\n throughPerson2 = memoDetails[0].transaction_attr['through_person'];\r\n }\r\n\r\n let broker = \"\";\r\n let aadat = \"\";\r\n if (memoDetails[0].commission.length > 0) {\r\n\r\n memoDetails[0].commission.forEach(element => {\r\n if (element.typ == \"broker\") {\r\n broker = element.name;//+ ' (' + element.pct + ' )';\r\n }\r\n // else {\r\n // aadat = element.name;\r\n // }\r\n });\r\n\r\n\r\n // if (this.memoDetails[0].commission[0].length != 0) {\r\n // broker = this.memoDetails[0].commission[0].name;\r\n // }\r\n }\r\n\r\n\r\n\r\n\r\n // let broker = \"\";\r\n // if (memoDetails[0].commission.length > 0) {\r\n // if (memoDetails[0].commission[0].length != 0) {\r\n // broker = memoDetails[0].commission[0].name;\r\n // }\r\n // }\r\n\r\n // var d = this.getTable(resData);\r\n //this.imageToBase64(pdfFormat.logo);\r\n\r\n let trm = pdfFormat.terms;\r\n\r\n let datadefination = {\r\n footer: {\r\n columns: [\r\n { text: 'w w w . k a p u g e m s . c o m', alignment: 'center', fontSize: 8 }\r\n ]\r\n },\r\n content: [\r\n {\r\n columns: [\r\n {\r\n margin: [15, 0, 0, 0],\r\n width: 100,\r\n stack: [\r\n {\r\n image: 'data:image/png;base64,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'\r\n , width: 99, height: 60, alignment: 'left'\r\n }\r\n ]\r\n },\r\n {\r\n width: '*',\r\n alignment: 'left',\r\n margin: [80, 10, 0, 0],\r\n stack: [\r\n {\r\n style: 'h3header',\r\n text: pdfFormat.address1, //'EC-3021, Bharat Diamond Bourse, BKC, Bandra (E), Mumbai-400051, India.'\r\n },\r\n {\r\n style: 'h3header',\r\n text: pdfFormat.address2 //'Tel:+91-22-43112233 | QBC:7771, 7772, 7773 | Email: Sales@kapugems.com'\r\n },\r\n // {\r\n // margin: [0, 0, 0, 0],//[left, top, right, bottom]\r\n // text: 'Website:www.kapugems.com',\r\n // style: 'h3header'\r\n // },\r\n {\r\n margin: [0, 0, 0, 0],//[left, top, right, bottom]\r\n text: '\\nGSTIN : 27AADFK3266D1ZJ',\r\n style: 'h3header'\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: 'Original ', fontSize: 7, alignment: 'right' },\r\n ]\r\n },\r\n {\r\n style: 'tableExample',\r\n color: 'black',\r\n table: {\r\n widths: ['*'],\r\n body: [\r\n [\r\n\r\n {\r\n //border: [true, true, true, false],///lst\r\n columns: [\r\n {\r\n stack: [\r\n {\r\n text: [\r\n { text: 'Memo To, ', style: 'tableExample' },\r\n headerDetails.buyer\r\n //'Firstname Lastname ',\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: 'Memo No : ', style: 'tableExample' },\r\n memoDetails[0].co_serial + ' Date : ' + memoDetails[0].memodate\r\n ]\r\n },\r\n {\r\n\r\n }\r\n ]\r\n },\r\n {\r\n stack: [\r\n {\r\n\r\n },\r\n {\r\n // text: [\r\n // { text: '\\nDate:', style: 'tableExample' },\r\n // '20-Jun-18 09:12:49'\r\n // ]\r\n },\r\n {\r\n\r\n }\r\n ]\r\n },\r\n {\r\n stack: [\r\n {\r\n text: [\r\n { text: 'GSTIN : ', bold: true },\r\n headerDetails.gstno\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: broker != '' ? 'Broker : ' : '', bold: true },\r\n broker\r\n // ' FirstName Lastname'\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: (throughPerson != '-' && throughPerson) ? 'Through Person : ' : '', bold: true },\r\n (throughPerson != '-' && throughPerson) != '' ? throughPerson : ''\r\n\r\n ]\r\n\r\n\r\n }\r\n ]\r\n }\r\n\r\n ]\r\n\r\n }\r\n\r\n ],\r\n [{ text: pdfFormat.body, fontSize: 8, margin: [0, 0, 0, 0], bold: false }]// 'Dear Sir/Madam,\\n Received/Given the below mentioned goods on approval for assortment for manufacturing on the conditions mentioned below.'\r\n ]\r\n\r\n },\r\n layout: {\r\n\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 'black' : 'white';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n },\r\n\r\n this.getTable(resData),\r\n // {\r\n // style: 'pkttable',\r\n // alignment: 'center',\r\n // table: {\r\n // headerRows: 1,\r\n // widths: ['*', '*', '*'],\r\n // body: this.getTable() //this.stringbuilder()\r\n // }\r\n // },\r\n this.getterms(trm, GrandSummary),\r\n { text: '_____________________________________________________________________________________________________________________________________________________________', fontSize: 8, margin: [0, 10, 0, 10] },\r\n\r\n /////////////////////////////////////////////////// 2 ////////////////////////////////////////////\r\n {\r\n margin: [0, 0, 0, 0],//10\r\n columns: [\r\n {\r\n margin: [5, 0, 0, 0],\r\n width: 100,\r\n stack: [\r\n {\r\n image: 'data:image/png;base64,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'\r\n , width: 99, height: 60, alignment: 'left'\r\n }\r\n ]\r\n },\r\n {\r\n width: '*',\r\n alignment: 'left',\r\n margin: [80, 10, 0, 0],\r\n stack: [\r\n {\r\n style: 'h3header',\r\n text: this.pdfFormat.address1, //'EC-3021, Bharat Diamond Bourse, BKC, Bandra (E), Mumbai-400051, India.'\r\n },\r\n {\r\n style: 'h3header',\r\n text: this.pdfFormat.address2 //'Tel:+91-22-43112233 | QBC:7771, 7772, 7773 | Email: Sales@kapugems.com'\r\n },\r\n // {\r\n // margin: [0, 0, 0, 0],//[left, top, right, bottom]\r\n // text: 'Website:www.kapugems.com',\r\n // style: 'h3header'\r\n // },\r\n {\r\n margin: [0, 0, 0, 0],//[left, top, right, bottom]\r\n text: '\\nGSTIN : 27AADFK3266D1ZJ',\r\n style: 'h3header'\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: 'Duplicate ', fontSize: 7, alignment: 'right' },\r\n ]\r\n },\r\n {\r\n style: 'tableExample',\r\n color: 'black',\r\n // margin: [0, 0, 0, 3],///\r\n table: {\r\n widths: ['*'],\r\n body: [\r\n [\r\n\r\n {\r\n //border: [true, true, true, false],///lst\r\n columns: [\r\n {\r\n stack: [\r\n {\r\n text: [\r\n { text: 'Memo To, ', style: 'tableExample' },\r\n this.headerDetails.buyer\r\n //'Firstname Lastname ',\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: 'Memo No : ', style: 'tableExample' },\r\n memoDetails[0].co_serial + ' Date : ' + memoDetails[0].memodate\r\n ]\r\n },\r\n {\r\n\r\n }\r\n ]\r\n },\r\n {\r\n stack: [\r\n {\r\n\r\n },\r\n {\r\n // text: [\r\n // { text: '\\nDate:', style: 'tableExample' },\r\n // '20-Jun-18 09:12:49'\r\n // ]\r\n },\r\n {\r\n\r\n }\r\n ]\r\n },\r\n {\r\n stack: [\r\n {\r\n text: [\r\n { text: 'GSTIN : ', bold: true },\r\n headerDetails.gstno\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: broker != '' ? 'Broker : ' : '', bold: true },\r\n broker\r\n ]\r\n },\r\n {\r\n text: [\r\n { text: (throughPerson2 != '-' && throughPerson2) ? 'Through Person : ' : '', bold: true },\r\n (throughPerson2 != '-' && throughPerson2) != '' ? throughPerson2 : ''\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n ]\r\n\r\n }\r\n\r\n ],\r\n [{ text: this.pdfFormat.body, fontSize: 8, margin: [0, 0, 0, 0], bold: false }]// 'Dear Sir/Madam,\\n Received/Given the below mentioned goods on approval for assortment for manufacturing on the conditions mentioned below.'\r\n ]\r\n\r\n },\r\n layout: {\r\n\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 'black' : 'white';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n },\r\n // {\r\n // style: 'pkttable',\r\n // alignment: 'center',\r\n // table: {\r\n // headerRows: 1,\r\n // widths: ['*', '*', '*'],\r\n // body:\r\n // this.getTable(),\r\n // }\r\n // },\r\n this.getTable(resData),\r\n\r\n\r\n this.getterms(trm, GrandSummary)\r\n ///////////////////////////////////////////////////2 /////////////////////////////////////////////\r\n\r\n ],\r\n\r\n pageMargins: [10, 2, 10, 20],//12\r\n defaultStyle: {\r\n alignment: 'justify'\r\n },\r\n styles: {\r\n h3: {\r\n fontSize: 10\r\n },\r\n reportHeaderKey: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n h3header: {\r\n fontSize: 11\r\n },\r\n tableExample: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n pkttable: {\r\n fontSize: 8\r\n },\r\n coloredBoldTableTotal: {\r\n fontSize: 8,\r\n bold: true\r\n }\r\n }\r\n }\r\n pdfMake.createPdf(datadefination).open();\r\n }\r\n\r\n planningGrpMemo(Title, groupSummary, attrDtl, attrDisplayDtl, GrpList, finalGrpVal) {\r\n var tabledata = [];\r\n let Ovals = Object.values(attrDisplayDtl);\r\n let farr = Ovals.map(hdr => ({\r\n alignment: (hdr == 'cmp_rte' || hdr == 'quot_amount') ? 'right' : 'center',\r\n bold: true,\r\n text: hdr\r\n }));\r\n tabledata.push(farr);\r\n\r\n GrpList.forEach(element => {\r\n\r\n let arr = [];\r\n var spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = element.grp == undefined ? \"\" : \"Plan : \" + element.grp;\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = groupSummary[element.grp + '_QTY'] == undefined ? \"\" : \"QTY : \" + groupSummary[element.grp + '_QTY'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = groupSummary[element.grp + '_CTS'] == undefined ? \"\" : \"Carats : \" + groupSummary[element.grp + '_CTS'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = groupSummary[element.grp + '_RTE'] == undefined ? \"\" : \"Rate : \" + groupSummary[element.grp + '_RTE'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n spanObj['style'] = 'nonecoloredBoldTableHead';\r\n spanObj['colSpan'] = 3;\r\n spanObj['text'] = groupSummary[element.grp + '_AMT'] == undefined ? \"\" : \"Amount : \" + groupSummary[element.grp + '_AMT'];\r\n arr.push(spanObj);\r\n spanObj = {};\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n\r\n for (let i = 0; i < Ovals.length - 15; i++) {\r\n spanObj['text'] = \"\";\r\n arr.push(spanObj);\r\n spanObj = {};\r\n }\r\n\r\n tabledata.push(arr);\r\n\r\n\r\n\r\n finalGrpVal[element.grp].forEach(pktdtl => {\r\n let pArr = [];\r\n attrDtl.forEach(att => {\r\n let spanObj = {};\r\n if (att == 'cmp_rte' || att == 'quot_amount') {\r\n spanObj['alignment'] = 'right';\r\n spanObj['text'] = this.cs.splitToTwoDecimal(pktdtl[att]);\r\n }\r\n else {\r\n spanObj['text'] = pktdtl[att] == undefined ? \"\" : pktdtl[att];\r\n }\r\n pArr.push(spanObj);\r\n spanObj = {};\r\n });\r\n tabledata.push(pArr);\r\n pArr = [];\r\n\r\n\r\n\r\n });\r\n\r\n let ar = [];\r\n spanObj = {};\r\n\r\n spanObj['color'] = 'black';\r\n spanObj['colSpan'] = Ovals.length;\r\n spanObj['text'] = \"___________________________________________________________________________________________________________________________________________________________________________________________________________________________________\";\r\n ar.push(spanObj);\r\n spanObj = {};\r\n tabledata.push(ar);\r\n\r\n });\r\n\r\n var planningDocDefination = {\r\n // seqNo\r\n pageOrientation: 'landscape',\r\n pageSize: 'A4',\r\n pageMargins: [5, 10, 5, 5],// [10, 30, 10, 10],\r\n content: [\r\n { text: 'Sequence No: ' + Title['seqNo'], alignment: 'left', style: 'header', margin: [5, 5, 5, 5] },\r\n {\r\n style: 'tableExample',\r\n alignment: 'center',\r\n table: {\r\n headerRows: 1,//1\r\n body: tabledata\r\n },\r\n layout: 'headerLineOnly'\r\n\r\n },\r\n\r\n ],\r\n styles: {\r\n reportHeaderKey: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n reportHeaderKeyLeftAlign: {\r\n fontSize: 8,\r\n bold: true,\r\n alignment: 'left'\r\n },\r\n reportHeaderVal: {\r\n fontSize: 8\r\n },\r\n header: {\r\n fontSize: 10,\r\n bold: true\r\n\r\n },\r\n tableExample: {\r\n margin: [0, 0, 0, 0],\r\n fontSize: 8\r\n },\r\n boldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n coloredBoldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n fillColor: '#dedede'\r\n },\r\n nonecoloredBoldTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n },\r\n coloredMemoTableHead:\r\n {\r\n fontSize: 8,\r\n bold: true,\r\n fillColor: '#dedede',//\r\n margin: [0, 0, 0, 0],\r\n },\r\n },\r\n defaultStyle: {\r\n }\r\n\r\n }\r\n\r\n var date = new Date();\r\n pdfMake.createPdf(planningDocDefination).open();\r\n\r\n }\r\n getTableWithOutGroup(resData) {\r\n let packetDetails = resData.packetDetails;\r\n let attrDisplayDtl = resData.attrDisplayDtl;\r\n let GrandSummary = resData.GrandSummary;\r\n\r\n let chargesDtl = resData.chargesDtl;\r\n let tabledata = [];\r\n let Objkeys = Object.keys(attrDisplayDtl);\r\n let Objvals = Object.values(attrDisplayDtl);\r\n let valObj = [];\r\n let arr = [];\r\n let widthsarr = [];\r\n\r\n tabledata.push(Objvals);\r\n\r\n packetDetails.forEach(pkt => {\r\n Objkeys.forEach((key) => {\r\n if (pkt[key] != undefined && pkt[key] != null) {\r\n valObj.push(pkt[key].toString());\r\n //widthsarr.push('auto');\r\n }\r\n else {\r\n valObj.push('-');//value not found for this key err\r\n }\r\n });\r\n tabledata.push(valObj);\r\n valObj = [];\r\n });\r\n\r\n let dataRowlen = tabledata.length;\r\n let pgSize = 25;//34//32//30//25\r\n valObj = [];\r\n if (dataRowlen > pgSize) {\r\n pgSize = 25;\r\n dataRowlen = (dataRowlen - 25) % pgSize;\r\n }\r\n\r\n let obj = {};\r\n for (let i = dataRowlen + 1; i <= pgSize; i++) {\r\n for (let j = 1; j <= Objkeys.length; j++) {\r\n obj['text'] = \"-\";\r\n obj['color'] = '#fff';\r\n valObj.push(obj);\r\n obj = {};\r\n }\r\n tabledata.push(valObj);\r\n valObj = [];\r\n }\r\n\r\n\r\n var resIndex = [];\r\n var posWiseVal = [];\r\n var totDatakey = Object.keys(GrandSummary);\r\n var totDataVal = Object.keys(GrandSummary);\r\n var IndxLen = totDatakey.length || [];\r\n for (let i = 0; i < IndxLen; i++) {\r\n var indx = Objkeys.indexOf(totDataVal[i]);\r\n resIndex.push(indx);\r\n posWiseVal.push(totDataVal[i]);\r\n }\r\n var bottomTot = [];\r\n\r\n console.log(resIndex);\r\n console.log(posWiseVal);\r\n var btmtotObj = {};\r\n btmtotObj['text'] = 'Total';\r\n btmtotObj['style'] = 'reportHeaderKey';\r\n bottomTot.push(btmtotObj);\r\n btmtotObj = {};\r\n for (let i = 1; i < Objkeys.length; i++) {////starts from 1 to skip qty\r\n if (i == 2 || i == 3) {\r\n widthsarr.push('*');\r\n }\r\n else {\r\n widthsarr.push('auto');\r\n }\r\n var pos = Objkeys.indexOf(Objkeys[i]);\r\n if (resIndex.includes(pos) && pos > -1) {\r\n var val = Objkeys[i];\r\n if (val != undefined && val != null) {\r\n btmtotObj['text'] = GrandSummary[val];\r\n btmtotObj['style'] = 'reportHeaderKey';\r\n bottomTot.push(btmtotObj);//this.GrandSummary[val];\r\n btmtotObj = {};\r\n }\r\n }\r\n else {\r\n bottomTot.push(\"\");\r\n }\r\n }\r\n widthsarr.push('auto');// because starts from 1 ,need 1 additional push\r\n tabledata.push(bottomTot);\r\n console.log(widthsarr);\r\n\r\n chargesDtl.forEach(element => {\r\n let addchargeObj = {};\r\n addchargeObj['style'] = 'reportHeaderKey';\r\n addchargeObj['colSpan'] = 10;//2\r\n addchargeObj['alignment'] = 'left';//2\r\n addchargeObj['text'] = element['nme'].slice(0, 10) + ' ' + element['nme'].substr(10);\r\n arr.push(addchargeObj);\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n arr.push(\"\");\r\n\r\n // arr.push(\"\");\r\n\r\n\r\n // arr.push(\"\");\r\n // arr.push(\"\");\r\n\r\n // arr.push(\"\");\r\n // arr.push(\"\");\r\n // arr.push(\"\");\r\n // arr.push(\"\");\r\n // arr.push(\"\");\r\n\r\n // arr.push(\"\");\r\n\r\n addchargeObj = {};\r\n\r\n addchargeObj['style'] = 'reportHeaderKey';\r\n addchargeObj['text'] = element['value'];\r\n arr.push(addchargeObj);\r\n arr.push(\"\");\r\n tabledata.push(arr);\r\n arr = [];\r\n });\r\n\r\n\r\n\r\n\r\n return {\r\n style: 'pkttable',\r\n alignment: 'center',\r\n table: {\r\n // heights: 238, \r\n // heights: ['auto', '*'],\r\n headerRows: 1,\r\n widths: widthsarr,//['auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', '*', '*', 'auto', 'auto', 'auto', 'auto'],//widthsarr\r\n body: tabledata\r\n },\r\n layout: {\r\n\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n\r\n hLineColor: function (i, node) {\r\n let color = '';\r\n if (i > dataRowlen) {\r\n color = 'white';\r\n }\r\n if (i >= tabledata.length - 1 || i > 24) {\r\n color = 'balck';\r\n }\r\n return color;//(i > dataRowlen) ? 'white' : 'gray';\r\n //return (i === 0 || i === node.table.body.length) ? 'gray' : 'gray';\r\n },\r\n // hLineColor: function (i, node) {\r\n // return (i === 0 || i === node.table.body.length) ? 'black' : 'black';\r\n // },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n HKdeliveryMemo(resData) {\r\n let buyerDtl = resData.buyerDtl||{};\r\n let bankDtl = resData.bankDtl||{};\r\n let companyDtl = resData.companyDtl;\r\n let packetDetails = resData.packetDetails;\r\n let attrDisplayDtl = resData.attrDisplayDtl;\r\n let GrandSummary = resData.GrandSummary;\r\n let chargesDtl = resData.chargesDtl;\r\n let tabledata = [];\r\n let Objkeys = Object.keys(attrDisplayDtl);\r\n let Objvals = Object.values(attrDisplayDtl);\r\n let colLen = Objkeys.length;\r\n let reportFormat = resData.reportFormat||{};\r\n let headerImage = reportFormat.image||'';\r\n let footerContent =reportFormat.footerContent||[];\r\n let reportHeader={};\r\n if(headerImage!=''){\r\n reportHeader={\r\n margin: [0, 0, 0, 0],\r\n width: '*',\r\n stack: [\r\n {\r\n image:headerImage\r\n , width: 600, height: 65, alignment: 'center'\r\n }]\r\n }}\r\n\r\n //let instructionsInx = reportFormat.footerContent.findIndex('#PaymentInstructions');\r\n\r\n // let instructions = 'Payment Instructions :\\n ' + '______________________\\n' + 'A/C NAME : KAPU GEMS LTD.\\n' + 'BANK NAME : ' + bankDtl.name + '\\n' + 'USD A/C : ' + bankDtl.bank_acountno + '\\n' + 'BANK CODE : ' + bankDtl.ad_code;\r\n\r\n\r\n\r\n let ins = {\r\n margin: [0, 0, 0, 5],\r\n stack: [\r\n { text: 'Payment Instructions', decoration: 'underline', fontSize: 9, bold: true, margin: [0, 5, 0, 5] },\r\n { text: 'A/C NAME : '+reportFormat.authorised||'', fontSize: 9 },//\r\n { text: 'BANK NAME : ' + bankDtl.name, alignment: 'left', fontSize: 9 },\r\n { text: 'USD A/C : ' + bankDtl.usd_ac_no, alignment: 'left', fontSize: 9 },//bankDtl.bank_acountno\r\n { text: 'BANK CODE: ' + bankDtl.bank_code, alignment: 'left', fontSize: 9 },//\r\n { text: 'SWIFT CODE: ' + bankDtl.swift_code, alignment: 'left', fontSize: 9 },\r\n ]\r\n\r\n }\r\n\r\n\r\n // decoration: 'underline'\r\n\r\n // reportFormat.footerContent.splice(1, 1);\r\n // reportFormat.footerContent.splice(1, 1, instructions);\r\n footerContent.forEach((line,index) => {\r\n if(line.indexOf('#PaymentInstructions')!=-1)\r\n reportFormat.footerContent.splice(1, index, ins);\r\n });\r\n\r\n\r\n const currentdate = new Date();\r\n const datetime = currentdate.getDate() + \"/\"\r\n + (currentdate.getMonth() + 1) + \"/\"\r\n + currentdate.getFullYear() + \" \"\r\n\r\n let courier = resData.courier;\r\n let strr;\r\n // if (chargesDtl.length > 0) {\r\n let amt = parseFloat(GrandSummary['sal_amount']||0);\r\n chargesDtl.forEach(element => {\r\n \r\n if (element['value'] != undefined && element['value'] != null && element['value'] != \"\" ) {\r\n \r\n amt = amt + parseFloat(element['value']);\r\n \r\n }\r\n \r\n });\r\n \r\n let amtPrt = amt.toString().split('.');\r\n let s1 = this.inWordsINR(parseInt(amtPrt[0]));\r\n let s2 = this.inWordsINR(parseInt(amtPrt[1]));\r\n\r\n strr = 'US $ ' + s1 + ' and ' + s2 + ' cent only';\r\n console.log(strr);\r\n\r\n let ddReportHK = {\r\n pageSize: 'A4',\r\n footer: function (currentPage, pageCount) {\r\n let BankAccountNo = '';\r\n let BankName = '';\r\n let btmtotObj = {};\r\n let arr = [];\r\n let tot = [];\r\n let bottomTot = [];\r\n\r\n let widthsarr = [];\r\n let resIndex = [];\r\n let posWiseVal = [];\r\n let totDatakey = Object.keys(GrandSummary);\r\n let totDataVal = Object.keys(GrandSummary);\r\n let IndxLen = totDatakey.length || [];\r\n for (let i = 0; i < IndxLen; i++) {\r\n let indx = Objkeys.indexOf(totDataVal[i]);\r\n resIndex.push(indx);\r\n posWiseVal.push(totDataVal[i]);\r\n }\r\n console.log(resIndex);\r\n console.log(posWiseVal);\r\n let totcolsCount = resIndex.filter(arr => arr > 0).length;\r\n\r\n btmtotObj['style'] = 'coloredBoldTableTotal';\r\n btmtotObj['colSpan'] = colLen - totcolsCount;//2\r\n\r\n\r\n if (currentPage >= 1 && currentPage < pageCount) {\r\n btmtotObj['text'] = \"Amount chargeable (in words) \" + strr + \" Countinue.....Page \" + parseInt(currentPage + 1).toString();\r\n }\r\n else {\r\n btmtotObj['text'] = \"Amount chargeable (in words) \" + strr;\r\n }\r\n bottomTot.push(btmtotObj);\r\n widthsarr.push('*');\r\n btmtotObj = {};\r\n\r\n for (let i = 1; i < Objkeys.length; i++) {////starts from 1 to skip qty\r\n widthsarr.push('auto');\r\n let pos = Objkeys.indexOf(Objkeys[i]);\r\n if (resIndex.includes(pos) && pos > -1) {\r\n let val = Objkeys[i];\r\n if (val != undefined && val != null) {\r\n let crgs = 0;\r\n if (val == 'sal_amount') {\r\n chargesDtl.forEach(element => {\r\n if (element['value'] < 0) {\r\n crgs = parseFloat(crgs > 0 ? crgs : GrandSummary[val]) + element['value'];\r\n }\r\n else {\r\n crgs = parseFloat(crgs > 0 ? crgs : GrandSummary[val]) + element['value'];\r\n }\r\n });\r\n }\r\n btmtotObj['text'] = crgs > 0 ? crgs.toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)[0] : \"\";//GrandSummary[val]\r\n\r\n btmtotObj['style'] = 'reportHeaderKey';\r\n bottomTot.push(btmtotObj);//this.GrandSummary[val];\r\n btmtotObj = {};\r\n }\r\n }\r\n else {\r\n bottomTot.push(\"\");\r\n }\r\n }\r\n //widthsarr.push('auto');// because starts from 1 ,need 1 additional push\r\n tot.push(bottomTot);\r\n console.log(widthsarr);\r\n console.log(bottomTot);\r\n\r\n return {\r\n\r\n stack: [\r\n {\r\n margin: [5, 0, 5, 0],\r\n table: {\r\n style: 'tableExample',\r\n headerRows: 1,\r\n widths: widthsarr,//['*', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto'],\r\n body: tot//this.getTotal(currentPage, pageCount, colLen)\r\n },\r\n layout: {\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 'black' : 'black';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n },\r\n {\r\n style: 'tableExample',\r\n margin: [5, 0, 5, 0],\r\n table: {\r\n widths: ['*'],\r\n body: [\r\n\r\n [{\r\n border: [true, true, true, true],\r\n stack: [\r\n {\r\n fontSize: 6,\r\n type: 'none',\r\n ol: reportFormat.footerContent\r\n \r\n },\r\n \r\n\r\n {\r\n text: 'This contract is governed by the laws of Hong Kong.', bold: true,\r\n fontSize: 7, margin: [5, 3, 0, 0]\r\n },\r\n\r\n\r\n { text: 'For '+reportFormat.authorised||'', alignment: 'right', bold: true, fontSize: 10, margin: [5, 3, 0, 2] },\r\n { text: 'Authorised Signatory', alignment: 'right', margin: [5, 15, 0, 2] },\r\n\r\n\r\n ]\r\n }],\r\n\r\n ]\r\n },\r\n layout: {\r\n\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 'black' : 'black';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n }\r\n\r\n }\r\n },\r\n { text: reportFormat.website, alignment: 'center', fontSize: 8, margin: [0, 5, 0, 1] }\r\n ]\r\n }\r\n },\r\n content: [\r\n { text: 'PROFORMA INVOICE', fontSize: 10, alignment: 'center', decoration: 'underline' },\r\n\r\n {\r\n columns: [\r\n reportHeader\r\n\r\n ]\r\n },\r\n {\r\n\r\n table: {\r\n headerRows: 0,\r\n widths: ['*', 120, 80, '*'],\r\n body: [\r\n [\r\n {\r\n\r\n stack: [\r\n { text: 'Buyer', fontSize: 8 },\r\n {\r\n text: buyerDtl.name//'KAPU GEMS LTD.'\r\n , fontSize: 10, bold: true\r\n },\r\n { text: buyerDtl.address, fontSize: 7 },//\r\n { text: 'Mail : ' + buyerDtl.email, fontSize: 8, alignment: 'left' },//\r\n { text: 'Contact No: ' + buyerDtl.contactno, fontSize: 8, alignment: 'left' },//\r\n ]\r\n\r\n },\r\n\r\n {\r\n stack: [\r\n { text: 'Invoice No : ', fontSize: 8, alignment: 'left' },\r\n { text: resData['invoiceID'], fontSize: 10, alignment: 'left', bold: true },\r\n { text: '_________________________________', fontSize: 8, alignment: 'left' },\r\n { text: 'Terms of Delivery and Payment : ', fontSize: 8, alignment: 'left' },\r\n { text: 'Against Advance Payment ', fontSize: 10, alignment: 'left' },\r\n ]\r\n }\r\n\r\n ,\r\n {\r\n stack: [\r\n { text: 'Date : ', fontSize: 8, alignment: 'left' },\r\n { text: datetime, fontSize: 10, alignment: 'left', bold: true },\r\n { text: '______________________', fontSize: 8, alignment: 'left' },\r\n { text: 'Pre-Carriage By : ', fontSize: 8, alignment: 'left' },\r\n { text: courier, fontSize: 10, alignment: 'left' },\r\n\r\n\r\n ]\r\n\r\n },\r\n\r\n {\r\n stack: [\r\n { text: 'Our Banker : ', fontSize: 8, alignment: 'left' },\r\n { text: bankDtl.name + '\\n', fontSize: 10, alignment: 'left' },\r\n { text: 'A/C No : ' + bankDtl.usd_ac_no + '\\n', fontSize: 10, alignment: 'left' },\r\n { text: 'Bank Code : ' + bankDtl.bank_code + '\\n', fontSize: 9, alignment: 'left' },\r\n { text: bankDtl.address, fontSize: 7, alignment: 'left' },\r\n ]\r\n\r\n }\r\n\r\n ]\r\n\r\n ]\r\n },\r\n layout: {\r\n //set custom borders size and color\r\n hLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 0.1 : 0.1;\r\n },\r\n vLineWidth: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 0.1 : 0.1;\r\n },\r\n hLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.body.length) ? 'black' : 'black';\r\n },\r\n vLineColor: function (i, node) {\r\n return (i === 0 || i === node.table.widths.length) ? 'black' : 'black';\r\n },\r\n\r\n }\r\n\r\n },\r\n this.getTableWithOutGroup(resData)\r\n ],\r\n\r\n pageMargins: [10, 2, 10, 300],//12\r\n defaultStyle: {\r\n alignment: 'justify'\r\n },\r\n styles: {\r\n noneBold8px: {\r\n fontSize: 8,\r\n bold: false\r\n },\r\n h3: {\r\n fontSize: 10\r\n },\r\n reportHeaderKey: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n h3header: {\r\n fontSize: 11\r\n },\r\n tableExample: {\r\n fontSize: 8,\r\n bold: true\r\n },\r\n pkttable: {\r\n fontSize: 8\r\n },\r\n coloredBoldTableTotal: {\r\n fontSize: 8,\r\n bold: true\r\n }\r\n }\r\n }\r\n pdfMake.createPdf(ddReportHK).open();\r\n }\r\n\r\n inWordsINR(num) {\r\n if ((num = num.toString()).length > 9) return 'overflow';\r\n let n = [];\r\n n = ('000000000' + num).substr(-9).match(/^(\\d{2})(\\d{2})(\\d{2})(\\d{1})(\\d{2})$/);\r\n if (!n) return; var str = '';\r\n str += (n[1] != 0) ? (this.a[Number(n[1])] || this.b[n[1][0]] + ' ' + this.a[n[1][1]]) + 'crore ' : '';\r\n str += (n[2] != 0) ? (this.a[Number(n[2])] || this.b[n[2][0]] + ' ' + this.a[n[2][1]]) + 'lakh ' : '';\r\n str += (n[3] != 0) ? (this.a[Number(n[3])] || this.b[n[3][0]] + ' ' + this.a[n[3][1]]) + 'thousand ' : '';\r\n str += (n[4] != 0) ? (this.a[Number(n[4])] || this.b[n[4][0]] + ' ' + this.a[n[4][1]]) + 'hundred ' : '';\r\n str += (n[5] != 0) ? ((str != '') ? '' : '') + (this.a[Number(n[5])] || this.b[n[5][0]] + ' ' + this.a[n[5][1]]) + '' : '';\r\n console.log(str);\r\n return str;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GlobleEnvService } from '../globle/globle-env.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SharedServicesService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public glbEnv: GlobleEnvService,\r\n ) { }\r\n cDt = new Date();\r\n\r\n pdfReport(reqObj, headers, url) {\r\n this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)\r\n .toPromise()\r\n .then((response) => response);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\n\r\nexport class LazyloadService {\r\n constructor() { }\r\n onScrollDown(mA,dA){\r\n if(mA.length < dA.length){ \r\n let len = mA.length;\r\n console.log(len);\r\n for(let i = len; i <= len+20; i++){ \r\n console.log(i);\r\n return mA.push(dA[i]);\r\n }\r\n }\r\n }\r\n}\r\n","export class Constants {\r\n static readonly DATE_FMT = 'dd/MMM/yyyy';\r\n static readonly DATE_TIME_FMT = `${Constants.DATE_FMT} hh:mm:ss`;\r\n}","import { Injectable } from '@angular/core';\r\nimport { PreloadingStrategy, Route } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class SelectivePreloadingStrategy implements PreloadingStrategy {\r\n preloadedModules: string[] = [];\r\n\r\n preload(route: Route, load: () => Observable<any>): Observable<any> {\r\n if (route.data && route.data['preload']) {\r\n this.preloadedModules.push(route.path);\r\n return load();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n}\r\n","/*\n * Public API Surface of ez-lib\n */\n\nexport * from './lib/ez-lib.service';\nexport * from './lib/ez-lib.component';\nexport * from './lib/ez-lib.module';\n\nexport * from './lib/auth/auth.guard';\nexport * from './lib/admin-service/admin-service.service';\nexport * from './lib/assort-service/assort-service.service';\nexport * from './lib/attribute-definition/attribute-definition.component';\nexport * from './lib/analysis-search/analysis-search.component';\n\nexport * from './lib/bi-service/bi.service';\n\nexport * from './lib/call-info/callinfo.component';\nexport * from './lib/comman-service/comman-service.service';\nexport * from './lib/comman-service/share-data-service.service';\nexport * from './lib/contact-service/contact-service.service';\nexport * from './lib/contact-search/contact-search.component';\n\nexport * from './lib/ezheader/header.component';\n\nexport * from './lib/file-upload/fileupload.component';\nexport * from './lib/file-upload-log/file-upload-log.component';\nexport * from './lib/fileupload-module/fileupload-dashboard/fileupload-dashboard.component';\nexport * from './lib/fileupload-module/fileupload.module';\nexport * from './lib/fileupload-module/fileupload-routing.module';\nexport * from './lib/footer/footer.component';\n\nexport * from './lib/globle/upload-service.service';\nexport * from './lib/globle/common-pdf.service';\nexport * from './lib/globle/globle-env.service';\nexport * from './lib/globle/memo-report.service';\n// export * from './lib/globle/pdf-service.service';\nexport * from './lib/globle/shared-services.service';\n\nexport * from './lib/header/header.component';\n\nexport * from './lib/invalid/invalid.component';\n\nexport * from './lib/logout/logout.component';\n\nexport * from './lib/menu-right/menu-right.component';\n\nexport * from './lib/pipes/number-with-commas.pipe';\nexport * from './lib/pipes/order-by-pipe.pipe';\nexport * from './lib/pipes/selectedCount';\nexport * from './lib/pipes/sum.pipe';\nexport * from './lib/pricing-service/pricing.service';\nexport * from './lib/pkt-data/pkt-data.component';\n\nexport * from './lib/qa-analysis/qa-analysis.component';\n\nexport * from './lib/report-format/report-format.component';\n\nexport * from './lib/sessionend/session-end.guard';\nexport * from './lib/stock-service/lazyload.service';\nexport * from './lib/stock-service/stock-service.service';\n\n\nexport * from './lib/system-module/system/system.component';\nexport * from './lib/system-module/system-service/system-service.service';\nexport * from './lib/system-module/system-service/upload-file.service';\nexport * from './lib/system-module/subform/subform.component';\n\nexport * from './lib/utility/app-no-dbl-click.directive';\nexport * from './lib/utility/constants';\nexport * from './lib/utility/formate-num-field.pipe';\nexport * from './lib/utility/search-pipe.pipe';\nexport * from './lib/utility/table-search.pipe';\nexport * from './lib/utility/tranform.directive';\nexport * from './lib/utility/contact-table-search.pipe';\nexport * from './lib/utility/selective-preloading-strategy';\n\nexport * from './lib/websearch-history/websearch-history.component';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.GlobleEnvService","i3","i2","i3.GlobleEnvService","i4","i2.PricingService","i3.CommanServiceService","i5","i6","i7.AppNoDblClickDirective","i1.CommanServiceService","i2.BiService","i7","i2.CommanServiceService","i6.AppNoDblClickDirective","i2.ContactServiceService","i3.StockServiceService","i4.CommanServiceService","i8.ContacttableSearch","i7.TableSearchPipe","i4.ShareDataService","i5.StockServiceService","i1.GlobleEnvService","i3.AdminServiceService","i8.TableSearchPipe","document","i2.StockServiceService","i4.UploadServiceService","i8.AppNoDblClickDirective","i10.TableSearchPipe","i2.SystemServiceService","i10.SearchPipePipe","i11.OrderByPipePipe","i3.UploadFileService","i4.ContactServiceService","i5.CommanServiceService","i8","i9","i10.AppNoDblClickDirective","i11","i12","i13.SearchPipePipe","i14.OrderByPipePipe","i9.SearchPipePipe","i10","i3.SystemServiceService","i9.AppNoDblClickDirective","i11.TableSearchPipe"],"mappings":"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"}
|