Skip to content

Commit 4035954

Browse files
authored
Merge pull request #465 from cidgoh/improved_mapping_msg
Replace wide mapping warning msg with long msg
2 parents 78a6f39 + bf3d2d6 commit 4035954

File tree

3 files changed

+40
-41
lines changed

3 files changed

+40
-41
lines changed

lib/DataHarmonizer.js

+23-17
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ class DataHarmonizer {
163163

164164
// Reset specify header modal values when the modal is closed
165165
$('#specify-headers-modal').on('hidden.bs.modal', () => {
166+
$('.mapping-row').remove();
166167
$('#specify-headers-err-msg').hide();
167168
$('#specify-headers-confirm-btn').unbind();
168169
});
@@ -1407,23 +1408,20 @@ class DataHarmonizer {
14071408
let flatHeaders = this.getFlatHeaders();
14081409
const self = this;
14091410
if (flatHeaders) {
1410-
$('#field-mapping').prepend(
1411-
'<col></col>'.repeat(flatHeaders[1].length + 1)
1412-
);
1413-
$('#expected-headers-tr').html(
1414-
'<td><b>Expected second row</b></td> <td>' +
1415-
flatHeaders[1].join('</td><td>') +
1416-
'</td>'
1417-
);
1418-
$('#actual-headers-tr').html(
1419-
'<td><b>Imported second row</b></td> <td>' +
1420-
matrix[1].join('</td><td>') +
1421-
'</td>'
1422-
);
1423-
flatHeaders[1].forEach(function (item, i) {
1424-
if (item != matrix[1][i]) {
1425-
$('#field-mapping col').get(i + 1).style.backgroundColor = 'orange';
1411+
const $fieldMappingBody = $('#field-mapping-body');
1412+
flatHeaders[1].forEach(function (expectedHeader, i) {
1413+
const expectedHeaderCell =
1414+
`<td class="field-mapping-cell">${expectedHeader}</td>`
1415+
const actualHeaderCell =
1416+
`<td class="field-mapping-cell">${matrix[1][i]}</td>`;
1417+
const rowCells = expectedHeaderCell + actualHeaderCell;
1418+
let row;
1419+
if (expectedHeader !== matrix[1][i]) {
1420+
row = $(`<tr class="table-warning mapping-row">${rowCells}</tr>`);
1421+
} else {
1422+
row = $(`<tr class="mapping-row">${rowCells}</tr>`);
14261423
}
1424+
$fieldMappingBody.append(row);
14271425
});
14281426

14291427
$('#specify-headers-modal').modal('show');
@@ -1552,8 +1550,16 @@ class DataHarmonizer {
15521550
// Map current column indices to their indices in matrix to map
15531551
const headerMap = {};
15541552
const unmappedHeaders = [];
1555-
for (const [i, expectedVal] of expectedSecondaryHeaders.entries()) {
1553+
for (let [i, expectedVal] of expectedSecondaryHeaders.entries()) {
15561554
headerMap[i] = actualSecondaryHeaders.findIndex((actualVal) => {
1555+
// Case insensitivity
1556+
if (typeof actualVal === 'string' || actualVal instanceof String) {
1557+
actualVal = actualVal.toLowerCase()
1558+
}
1559+
if (typeof expectedVal === 'string' || expectedVal instanceof String) {
1560+
expectedVal = expectedVal.toLowerCase()
1561+
}
1562+
15571563
return actualVal === expectedVal;
15581564
});
15591565
if (headerMap[i] === -1) {

lib/data-harmonizer.css

+6-18
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@
55
}
66

77
#specify-headers-comparison-row {
8-
overflow-x: auto;
8+
overflow-y: auto;
99
}
1010

1111
#specify-headers-err-msg {
1212
display: none;
1313
}
1414

1515
#field-mapping-container {
16-
overflow-x: scroll;
17-
padding-bottom: 1rem;
18-
scrollbar-width: 1rem;
16+
height: 25vh;
17+
width: 100%;
1918
}
2019

2120
.handsontable.listbox th,
@@ -24,20 +23,9 @@
2423
}
2524

2625
#field-mapping {
27-
white-space: nowrap;
26+
width: 100%;
2827
}
2928

30-
#field-mapping col {
31-
border-left: 2px solid black;
32-
}
33-
#field-mapping col:first-child {
34-
background: #ff0;
35-
}
36-
#field-mapping col:nth-child(2n + 3) {
37-
background: #ccc;
38-
}
39-
40-
#field-mapping tr td,
41-
#field-mapping tr th {
42-
padding: 3px;
29+
.field-mapping-cell {
30+
width: 50%;
4331
}

lib/specifyHeadersModal.html

+11-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,17 @@
99
column specification. Mismatched column(s) are shown in orange.
1010
</div>
1111
</div>
12-
<div class="row my-3 border" id="specify-headers-comparison-row">
13-
<div class="col">
14-
<div class="row" id="field-mapping-container">
15-
<table id="field-mapping">
16-
<tr id="expected-headers-tr"></tr>
17-
<tr id="actual-headers-tr"></tr>
12+
<div class="row my-2" id="specify-headers-comparison-row">
13+
<div class="col px-0 py-1">
14+
<div id="field-mapping-container" class="container-fluid">
15+
<table id="field-mapping" class="table-bordered">
16+
<thead>
17+
<tr>
18+
<th class="field-mapping-cell">Expected header</th>
19+
<th class="field-mapping-cell">Actual header</th>
20+
</tr>
21+
</thead>
22+
<tbody id="field-mapping-body"></tbody>
1823
</table>
1924
</div>
2025
</div>

0 commit comments

Comments
 (0)