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