@@ -11,25 +11,103 @@ import {
1111 OmniAssessmentInfo ,
1212 FlexCardAssessmentInfo ,
1313 DataRaptorAssessmentInfo ,
14+ nameUrl ,
1415} from '../interfaces' ;
1516
1617export class AssessmentReporter {
1718 public static async generate ( result : AssessmentInfo , instanceUrl : string ) : Promise < void > {
18- let htmlBody = '' ;
19+ const basePath = process . cwd ( ) + '/assessment_reports' ;
20+ fs . mkdirSync ( basePath , { recursive : true } ) ;
21+ const omniscriptAssessmentFilePath = basePath + '/omniscript_assessment.html' ;
22+ const flexcardAssessmentFilePath = basePath + '/flexcard_assessment.html' ;
23+ const integrationProcedureAssessmentFilePath = basePath + '/integration_procedure_assessment.html' ;
24+ const dataMapperAssessmentFilePath = basePath + '/datamapper_assessment.html' ;
25+ const apexAssessmentFilePath = basePath + '/apex_assessment.html' ;
26+ const lwcAssessmentFilePath = basePath + '/lwc_assessment.html' ;
1927
20- htmlBody += '<br />' + this . generateOmniAssesment ( result . omniAssessmentInfo , instanceUrl ) ;
21- htmlBody += '<br />' + this . generateCardAssesment ( result . flexCardAssessmentInfos , instanceUrl ) ;
22- htmlBody += '<br />' + this . generateDRAssesment ( result . dataRaptorAssessmentInfos , instanceUrl ) ;
23- htmlBody += '<br />' + this . generateApexAssesment ( result . apexAssessmentInfos ) ;
24- htmlBody += '<br />' + this . generateLwcAssesment ( result . lwcAssessmentInfos ) ;
28+ this . createDocument (
29+ omniscriptAssessmentFilePath ,
30+ this . generateOmniAssesment ( result . omniAssessmentInfo , instanceUrl )
31+ ) ;
32+ this . createDocument (
33+ flexcardAssessmentFilePath ,
34+ this . generateCardAssesment ( result . flexCardAssessmentInfos , instanceUrl )
35+ ) ;
36+ this . createDocument (
37+ integrationProcedureAssessmentFilePath ,
38+ this . generateIPAssesment ( result ?. omniAssessmentInfo . ipAssessmentInfos , instanceUrl )
39+ ) ;
40+ this . createDocument (
41+ dataMapperAssessmentFilePath ,
42+ this . generateDRAssesment ( result . dataRaptorAssessmentInfos , instanceUrl )
43+ ) ;
44+ this . createDocument ( apexAssessmentFilePath , this . generateApexAssesment ( result . apexAssessmentInfos ) ) ;
45+ this . createDocument ( lwcAssessmentFilePath , this . generateLwcAssesment ( result . lwcAssessmentInfos ) ) ;
46+ const nameUrls = [
47+ {
48+ name : 'omnscript assessment report' ,
49+ url : omniscriptAssessmentFilePath ,
50+ } ,
51+ {
52+ name : 'flexcard assessment report' ,
53+ url : flexcardAssessmentFilePath ,
54+ } ,
55+ {
56+ name : 'Integration Procedure assessment report' ,
57+ url : integrationProcedureAssessmentFilePath ,
58+ } ,
59+ {
60+ name : 'DataMapper assessment report' ,
61+ url : dataMapperAssessmentFilePath ,
62+ } ,
63+ {
64+ name : 'Apex assessment report' ,
65+ url : apexAssessmentFilePath ,
66+ } ,
67+ {
68+ name : 'LWC assessment report' ,
69+ url : lwcAssessmentFilePath ,
70+ } ,
71+ ] ;
72+ await this . createMasterDocument ( nameUrls , basePath ) ;
73+ }
2574
26- const doc = this . generateDocument ( htmlBody ) ;
27- const fileUrl = process . cwd ( ) + '/assessmentresults.html' ;
28- fs . writeFileSync ( fileUrl , doc ) ;
75+ private static async createMasterDocument ( reports : nameUrl [ ] , basePath : string ) : Promise < void > {
76+ let listBody = '' ;
77+ for ( const report of reports ) {
78+ listBody += ` <li class="slds-list__item" >
79+ <a href="${ report . url } " class="slds-text-link" > ${ report . name } </a>
80+ </li>` ;
81+ }
82+ const body = `
83+ <!DOCTYPE html>
84+ <html lang="en">
85+ <head>
86+ <meta charset="UTF-8">
87+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
88+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/design-system/2.17.5/styles/salesforce-lightning-design-system.min.css">
89+ <title>SLDS Bulleted List</title>
90+ </head>
91+ <body>
92+ <div class="slds-p-around_medium">
93+ <h1 class="slds-text-heading_medium">Assessment Reports</h1>
94+ <ul class="slds-list_vertical slds-has-dividers_left-space">
95+ ${ listBody }
96+ </ul>
97+ </div>
98+ </body>
99+ </html>
100+ ` ;
101+ const fileUrl = basePath + '/assessmentresults.html' ;
29102
103+ fs . writeFileSync ( fileUrl , body ) ;
30104 await open ( 'file://' + fileUrl ) ;
31105 }
32106
107+ private static createDocument ( filePath : string , htmlBody : string ) : void {
108+ const doc = this . generateDocument ( htmlBody ) ;
109+ fs . writeFileSync ( filePath , doc ) ;
110+ }
33111 private static generateLwcAssesment ( lwcAssessmentInfos : LWCAssessmentInfo [ ] ) : string {
34112 let tableBody = '' ;
35113 tableBody += `
@@ -92,7 +170,7 @@ export class AssessmentReporter {
92170
93171 // htmlBody += '<br />' + this.generateLwcAssesment(result.lwcAssessmentInfos);
94172 htmlBody += '<br />' + this . generateOSAssesment ( omniAssessmentInfo . osAssessmentInfos , instanceUrl ) ;
95- htmlBody += '<br />' + this . generateIPAssesment ( omniAssessmentInfo . ipAssessmentInfos , instanceUrl ) ;
173+ // htmlBody += '<br />' + this.generateIPAssesment(omniAssessmentInfo.ipAssessmentInfos, instanceUrl);
96174 return htmlBody ;
97175 }
98176
0 commit comments