Skip to content

Commit 3b60d48

Browse files
Dm onboarding to reports framework (#276)
1 parent 0ecc509 commit 3b60d48

File tree

7 files changed

+305
-61
lines changed

7 files changed

+305
-61
lines changed

.mocharc.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
extension: ['ts'],
3+
spec: ['src/**/__tests__/**/*.test.ts', 'test/**/*.test.ts'],
4+
ignore: ['**/node_modules/**', '**/@jest/**'],
5+
require: ['ts-node/register'],
6+
timeout: 5000,
7+
};

src/migration/dataraptor.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,10 @@ export class DataRaptorMigrationTool extends BaseMigrationTool implements Migrat
283283
}
284284
}
285285
const dataRaptorAssessmentInfo: DataRaptorAssessmentInfo = {
286-
name: existingDRNameVal.val,
286+
oldName: existingDRNameVal.val,
287+
name: existingDRNameVal.cleanName(),
287288
id: dataRaptor['Id'],
289+
type: dataRaptor[this.namespacePrefix + 'Type__c'] || '',
288290
formulaChanges: formulaChanges,
289291
infos: [],
290292
apexDependencies: apexDependencies,

src/utils/interfaces.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,11 @@ export interface FlexCardAssessmentInfo {
9696
}
9797

9898
export interface DataRaptorAssessmentInfo {
99+
oldName: string;
99100
name: string;
100101
id: string;
101102
formulaChanges: oldNew[];
103+
type: string;
102104
infos: string[];
103105
warnings: string[];
104106
apexDependencies: string[];

src/utils/reportGenerator/reportGenerator.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ export function generateHtmlTable<T>(
3838
</thead>
3939
`;
4040

41-
const filterAndSearchPanel = `
41+
const filterAndSearchPanel =
42+
filters.length > 0
43+
? `
4244
<div class="filter-dropdown-container">
4345
<div class="filter-header-bar">
4446
<!-- Row count display -->
@@ -101,7 +103,14 @@ export function generateHtmlTable<T>(
101103
)
102104
.join('')}
103105
</div>
104-
</div>`;
106+
</div>`
107+
: `
108+
<div class="filter-header-bar">
109+
<!-- Row count display -->
110+
<div class="row-count-display" id="row-count">
111+
Showing ${rows.length} records
112+
</div>
113+
</div>`;
105114

106115
const tbody = `
107116
<tbody id="filterable-table-body">
Lines changed: 114 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,125 @@
11
import { DataRaptorAssessmentInfo } from '../interfaces';
2+
import { Filter, HeaderColumn, ReportHeaderFormat, TableColumn } from '../reportGenerator/reportInterfaces';
3+
import { generateHtmlTable } from '../reportGenerator/reportGenerator';
24
import { reportingHelper } from './reportingHelper';
35

46
export class DRAssessmentReporter {
57
public static generateDRAssesment(
68
dataRaptorAssessmentInfos: DataRaptorAssessmentInfo[],
7-
instanceUrl: string
9+
instanceUrl: string,
10+
org: ReportHeaderFormat[]
811
): string {
9-
let tableBody = '';
10-
tableBody += '<div class="slds-text-heading_large">Data Mapper Components Assessment</div>';
11-
for (const dr of dataRaptorAssessmentInfos) {
12-
const row = `
13-
<tr class="slds-hint_parent">
14-
<td style="word-wrap: break-word; white-space: normal; max-width: 200px;">
15-
<div class="slds-truncate" title="${dr.name}">${dr.name}</div>
16-
</td>
17-
<td style="word-wrap: break-word; white-space: normal; max-width: 100px;">
18-
<div class="slds-truncate" title="${dr.id}">
19-
<a href="${instanceUrl}/${dr.id}">${dr.id}</div>
20-
</td>
21-
<td style="word-wrap: break-word; white-space: normal; max-width: 60%; overflow: hidden;">
22-
${reportingHelper.convertToBuletedList(dr.warnings)}
23-
</td>
24-
<td style="word-wrap: break-word; white-space: normal; max-width: 200px;">
25-
<div> ${reportingHelper.decorateChanges(dr.formulaChanges, 'Formula')} </div>
26-
</td>
27-
<td style="word-wrap: break-word; white-space: normal; max-width: 60%; overflow: hidden;">
28-
${reportingHelper.convertToBuletedList(dr.apexDependencies)}
29-
</td>
12+
// Header Column
13+
const headerColumn: HeaderColumn[] = [
14+
{
15+
label: 'In Package',
16+
colspan: 2,
17+
styles: 'color: purple;',
18+
subColumn: [
19+
{
20+
label: 'Name',
21+
key: 'oldName',
22+
},
23+
{
24+
label: 'Record ID',
25+
key: 'id',
26+
},
27+
],
28+
},
29+
{
30+
label: 'In Core',
31+
colspan: 1,
32+
subColumn: [
33+
{
34+
label: 'Name',
35+
key: 'name',
36+
},
37+
],
38+
},
39+
{
40+
label: 'Type',
41+
key: 'type',
42+
rowspan: 2,
43+
subColumn: [],
44+
},
45+
{
46+
label: 'Summary',
47+
key: 'summary',
48+
rowspan: 2,
49+
subColumn: [],
50+
},
51+
{
52+
label: 'Custom Function Changes',
53+
key: 'customFunctionChanges',
54+
rowspan: 2,
55+
subColumn: [],
56+
},
57+
{
58+
label: 'Apex Dependencies',
59+
key: 'apexDependencies',
60+
rowspan: 2,
61+
subColumn: [],
62+
},
63+
];
3064

31-
</tr>`;
32-
tableBody += row;
33-
}
65+
// Define columns
66+
const columns: Array<TableColumn<DataRaptorAssessmentInfo>> = [
67+
{
68+
key: 'oldName',
69+
cell: (row: DataRaptorAssessmentInfo): string => row.oldName,
70+
filterValue: (row: DataRaptorAssessmentInfo): string => row.oldName,
71+
title: (row: DataRaptorAssessmentInfo): string => row.oldName,
72+
},
73+
{
74+
key: 'id',
75+
cell: (row: DataRaptorAssessmentInfo): string =>
76+
row.id ? `<a href="${instanceUrl}/${row.id}">${row.id}</a>` : '',
77+
filterValue: (row: DataRaptorAssessmentInfo): string => row.id,
78+
title: (row: DataRaptorAssessmentInfo): string => row.id,
79+
},
80+
{
81+
key: 'name',
82+
cell: (row: DataRaptorAssessmentInfo): string => row.name || '',
83+
filterValue: (row: DataRaptorAssessmentInfo): string => row.name,
84+
title: (row: DataRaptorAssessmentInfo): string => row.name,
85+
},
86+
{
87+
key: 'type',
88+
cell: (row: DataRaptorAssessmentInfo): string => row.type,
89+
filterValue: (row: DataRaptorAssessmentInfo): string => row.type,
90+
title: (row: DataRaptorAssessmentInfo): string => row.type,
91+
},
92+
{
93+
key: 'summary',
94+
cell: (row: DataRaptorAssessmentInfo): string => reportingHelper.convertToBuletedList(row.warnings || []),
95+
filterValue: (row: DataRaptorAssessmentInfo): string => (row.warnings ? row.warnings.join(', ') : ''),
96+
title: (row: DataRaptorAssessmentInfo): string => (row.warnings ? row.warnings.join(', ') : ''),
97+
},
98+
{
99+
key: 'customFunctionChanges',
100+
cell: (row: DataRaptorAssessmentInfo): string =>
101+
reportingHelper.decorateChanges(row.formulaChanges, 'Formula') || '',
102+
filterValue: (row: DataRaptorAssessmentInfo): typeof row.formulaChanges => row.formulaChanges,
103+
},
104+
{
105+
key: 'apexDependencies',
106+
cell: (row: DataRaptorAssessmentInfo): string =>
107+
reportingHelper.convertToBuletedList(row.apexDependencies || []),
108+
filterValue: (row: DataRaptorAssessmentInfo): string[] => row.apexDependencies,
109+
},
110+
];
34111

35-
return DRAssessmentReporter.getDRAssessmentReport(tableBody);
36-
}
37-
38-
private static getDRAssessmentReport(tableContent: string): string {
39-
const tableBody = `
40-
<div style="margin-block:15px">
41-
<table style="width: 100%; table-layout: auto;" class="slds-table slds-table_cell-buffer slds-table_bordered slds-table_striped slds-table_col-bordered" aria-label="Results for Data Mapper updates">
42-
<thead>
43-
<tr class="slds-line-height_reset">
44-
<th class="" scope="col" style="width: 20%; word-wrap: break-word; white-space: normal; text-align: left;">
45-
<div class="slds-truncate" title="Name">Name</div>
46-
</th>
47-
<th class="" scope="col" style="width: 10%; word-wrap: break-word; white-space: normal; text-align: left;">
48-
<div class="slds-truncate" title="ID">ID</div>
49-
</th>
50-
<th class="" scope="col" style="width: 20%; word-wrap: break-word; white-space: normal; text-align: left;">
51-
<div class="slds-truncate" title="Summary">Summary</div>
52-
</th>
53-
<th class="" scope="col" style="width: 20%; word-wrap: break-word; white-space: normal; text-align: left;">
54-
<div class="slds-truncate" title="Custom Function Change">Custom Function Changes</div>
55-
</th>
56-
<th class="" scope="col" style="width: 20%; word-wrap: break-word; white-space: normal; text-align: left;">
57-
<div class="slds-truncate" title="Apex dependencies">Apex dependencies</div>
58-
</th>
59-
</tr>
60-
</thead>
61-
<tbody>
62-
${tableContent}
63-
</tbody>
64-
</table>
65-
</div>`;
66-
return tableBody;
112+
const filters: Filter[] = [];
113+
// Render table
114+
const tableHtml = generateHtmlTable(
115+
headerColumn,
116+
columns,
117+
dataRaptorAssessmentInfos,
118+
org,
119+
filters,
120+
undefined,
121+
'Data Mapper Assessment'
122+
);
123+
return `<div class="slds-text-heading_large">Data Mapper Assessment Report</div>${tableHtml}`;
67124
}
68125
}

0 commit comments

Comments
 (0)