Skip to content

Commit f77f8aa

Browse files
author
Peter Wagstaff
committed
Merge branch 'fix-overlay-matching' into 'main'
Fix overlay matching See merge request sl5tf/control-overlays-selector!3
2 parents 36b48aa + eea611e commit f77f8aa

7 files changed

Lines changed: 4460 additions & 4790 deletions

File tree

index.html

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
line-height: 1.4;
2424
color: #333;
2525
background-color: #f8f9fa;
26+
padding-bottom: 100vh;
2627
}
2728
/* --------------------
2829
Header
@@ -894,6 +895,20 @@ <h2 class="toggles-title">Additional Security Assumptions</h2>
894895
// --------------------
895896
// Helper Functions
896897
// --------------------
898+
function formatControlId(controlId) {
899+
// Format control IDs with zero-padding for display
900+
// e.g., "AC-1" -> "AC-01", "AC-10" -> "AC-10"
901+
// Also handles enhancements: "AC-1(1)" -> "AC-01(01)"
902+
return controlId.replace(/([A-Z]{2})-(\d+)(\((\d+)\))?/, (match, family, number, enhancement, enhNum) => {
903+
const paddedNumber = number.padStart(2, '0');
904+
if (enhancement) {
905+
const paddedEnhNum = enhNum.padStart(2, '0');
906+
return `${family}-${paddedNumber}(${paddedEnhNum})`;
907+
}
908+
return `${family}-${paddedNumber}`;
909+
});
910+
}
911+
897912
function formatControlText(text) {
898913
if (!text) return '';
899914

@@ -995,7 +1010,7 @@ <h2 class="toggles-title">Additional Security Assumptions</h2>
9951010
controlCard.innerHTML = `
9961011
<div class="control-header ${control.catalog === 'sl5' ? 'sl5-style' : ''}" onclick="toggleControl('${control.id}')">
9971012
<div style="display: flex; align-items: center; flex: 1;">
998-
${nistUrl ? `<a href="${nistUrl}" target="_blank" class="control-id-link" onclick="event.stopPropagation()">${control.id}</a>` : `<span class="control-id">${control.id}</span>`}
1013+
${nistUrl ? `<a href="${nistUrl}" target="_blank" class="control-id-link" onclick="event.stopPropagation()">${formatControlId(control.id)}</a>` : `<span class="control-id">${formatControlId(control.id)}</span>`}
9991014
${isWithdrawn ? `<span class="withdrawn-badge">Withdrawn</span>` : ''}
10001015
<span class="control-name">${control.name}</span>
10011016
${hasEnhancements ? `<span class="enhancement-count">(${enhancements.length} enhancement${enhancements.length > 1 ? 's' : ''})</span>` : ''}
@@ -1043,7 +1058,7 @@ <h2 class="toggles-title">Additional Security Assumptions</h2>
10431058
<div class="related-controls">
10441059
<h4>Related Controls:</h4>
10451060
<div class="related-controls-list">
1046-
${control.relatedControls.map(rc => `<span class="related-control-tag" onclick="showControlModal('${rc}')">${rc}</span>`).join(' ')}
1061+
${control.relatedControls.map(rc => `<span class="related-control-tag" onclick="showControlModal('${rc}')">${formatControlId(rc)}</span>`).join(' ')}
10471062
</div>
10481063
</div>
10491064
` : ''}
@@ -1167,7 +1182,7 @@ <h3 class="overlays-title">Overlays</h3>
11671182
</div>
11681183
<div class="modal-body">
11691184
<div class="modal-control-info">
1170-
<div class="modal-control-id">${targetControl.id}</div>
1185+
<div class="modal-control-id">${formatControlId(targetControl.id)}</div>
11711186
<div class="modal-control-name">${targetControl.name}</div>
11721187
<div class="modal-control-text">
11731188
<strong>Control Text:</strong><br>
@@ -1240,24 +1255,12 @@ <h3 class="overlays-title">Overlays</h3>
12401255
const overlays = [];
12411256

12421257
// Check SL5 - direct lookup (first in order)
1243-
// Try both original format and zero-padded format
12441258
if (sl5Data && sl5Data[controlId]) {
12451259
overlays.push({
12461260
type: 'sl5',
12471261
name: 'SL5',
12481262
data: sl5Data[controlId]
12491263
});
1250-
} else if (sl5Data) {
1251-
// Try zero-padded format for both parent controls and enhancements
1252-
// "SC-7" -> "SC-07" and "SC-7(1)" -> "SC-07(1)"
1253-
const paddedControlId = controlId.replace(/-(\d)(\(|$)/, '-0$1$2');
1254-
if (sl5Data[paddedControlId]) {
1255-
overlays.push({
1256-
type: 'sl5',
1257-
name: 'SL5',
1258-
data: sl5Data[paddedControlId]
1259-
});
1260-
}
12611264
}
12621265

12631266
// Check FedRAMP High - search through all families
@@ -1634,7 +1637,7 @@ <h3 class="overlays-title">Overlays</h3>
16341637
<div class="enhancement-card" style="display: ${isExpanded ? 'block' : 'none'}; ${grayedOutStyle}">
16351638
<div class="enhancement-header ${enhancement.catalog === 'sl5' ? 'sl5-style' : ''}" onclick="toggleControl('${enhancementId}')">
16361639
<div style="display: flex; align-items: center; flex: 1;">
1637-
<span class="enhancement-id">${enhancement.id}</span>
1640+
<span class="enhancement-id">${formatControlId(enhancement.id)}</span>
16381641
${isWithdrawn ? `<span class="withdrawn-badge">Withdrawn</span>` : ''}
16391642
<span class="enhancement-name">${enhancement.name}</span>
16401643
</div>
@@ -1655,7 +1658,7 @@ <h3 class="overlays-title">Overlays</h3>
16551658
<div class="related-controls">
16561659
<h4>Related Controls:</h4>
16571660
<div class="related-controls-list">
1658-
${enhancement.relatedControls.map(rc => `<span class="related-control-tag" onclick="showControlModal('${rc}')">${rc}</span>`).join('')}
1661+
${enhancement.relatedControls.map(rc => `<span class="related-control-tag" onclick="showControlModal('${rc}')">${formatControlId(rc)}</span>`).join('')}
16591662
</div>
16601663
</div>
16611664
` : ''}

0 commit comments

Comments
 (0)