@@ -738,6 +738,75 @@ function accepted_per_week_2(critical, high, medium, low) {
738
738
options ) ;
739
739
}
740
740
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
+
741
810
/*
742
811
product_metrics.html
743
812
*/
0 commit comments