@@ -738,6 +738,75 @@ function accepted_per_week_2(critical, high, medium, low) {
738738 options ) ;
739739}
740740
741+
742+ // This function is valid besides metrics.html also for the dashboard-metrics.html,
743+ // dashboard.html, and product-metrics.html
744+ function updatePunchcardTable ( punchcardData , ticks ) {
745+ let tableBody = $ ( "#punchcard-table tbody" ) ;
746+
747+ const daysMap = [ "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" , "Sunday" ] ;
748+ let formattedData = { } ;
749+
750+ // No table processing in case of no data
751+ if ( punchcardData . length === 0 || ticks . length === 0 ) return ;
752+
753+ // Removing html elements from the ticks dates
754+ let ticksMap = { } ;
755+ ticks . forEach ( entry => {
756+ let weekIndex = String ( entry [ 0 ] ) ;
757+ let rawHtml = entry [ 1 ] ;
758+
759+ // Goodbye <span> + space instead of <br/>
760+ let cleanDate = rawHtml . replace ( / < \/ ? s p a n [ ^ > ] * > / g, "" ) . replace ( / < b r \s * \/ ? > / g, " " ) ;
761+ cleanDate = cleanDate . trim ( ) ;
762+ ticksMap [ weekIndex ] = cleanDate ;
763+ } ) ;
764+
765+ let minWeekOffset = ticks [ 0 ] [ 0 ] ;
766+ let maxWeekOffset = ticks [ ticks . length - 1 ] [ 0 ] ;
767+
768+ for ( let weekOffset = minWeekOffset ; weekOffset <= maxWeekOffset ; weekOffset ++ ) {
769+ let formattedDate = ticksMap [ String ( weekOffset ) ] || "Unknown Date" ;
770+ let formattedWeek = `Week ${ weekOffset - minWeekOffset + 1 } , starting on ${ formattedDate } ` ;
771+
772+ formattedData [ formattedWeek ] = {
773+ "Monday" : 0 , "Tuesday" : 0 , "Wednesday" : 0 ,
774+ "Thursday" : 0 , "Friday" : 0 , "Saturday" : 0 , "Sunday" : 0
775+ } ;
776+ }
777+
778+ // Populating week data
779+ punchcardData . forEach ( entry => {
780+ let weekOffset = entry [ 0 ] ;
781+ let day = daysMap [ entry [ 1 ] ] ;
782+ let value = entry [ 3 ] || 0 ;
783+
784+ let formattedDate = ticksMap [ String ( weekOffset ) ] || "Unknown Date" ;
785+ let formattedWeek = `Week ${ weekOffset - minWeekOffset + 1 } , starting on ${ formattedDate } ` ;
786+
787+ if ( formattedData [ formattedWeek ] ) {
788+ formattedData [ formattedWeek ] [ day ] = value ;
789+ }
790+ } ) ;
791+
792+ // Rendering accessibility table body
793+ Object . entries ( formattedData ) . forEach ( ( [ week , values ] ) => {
794+ let newRow = `
795+ <tr>
796+ <td scope="row">${ week } </td>
797+ <td>${ values . Monday || '0' } </td>
798+ <td>${ values . Tuesday || '0' } </td>
799+ <td>${ values . Wednesday || '0' } </td>
800+ <td>${ values . Thursday || '0' } </td>
801+ <td>${ values . Friday || '0' } </td>
802+ <td>${ values . Saturday || '0' } </td>
803+ <td>${ values . Sunday || '0' } </td>
804+ </tr>
805+ ` ;
806+ tableBody . append ( newRow ) ;
807+ } ) ;
808+ }
809+
741810/*
742811 product_metrics.html
743812*/
0 commit comments