@@ -702,7 +702,8 @@ RESULT:
702702 const userTimeSavings = distinctUsers . map ( userId => {
703703 const userSurveys = this . surveysWeekly . filter ( survey => survey . userId === userId ) ;
704704 const totalPercent = userSurveys . reduce ( ( sum , survey ) => {
705- const percentTimeSaved = typeof survey . percentTimeSaved === 'number' ? survey . percentTimeSaved : 0 ;
705+ // Always parse percentTimeSaved as float
706+ const percentTimeSaved = survey . percentTimeSaved != null ? parseFloat ( survey . percentTimeSaved as any ) : 0 ;
706707 return sum + percentTimeSaved ;
707708 } , 0 ) ;
708709 return totalPercent / userSurveys . length ; // Average percent time saved per user
@@ -711,17 +712,17 @@ RESULT:
711712 // Average across all users
712713 const avgPercentTimeSaved = userTimeSavings . reduce ( ( sum , percent ) => sum + percent , 0 ) / userTimeSavings . length ;
713714
714- // Convert settings values to numbers
715- const hoursPerYear = typeof this . settings . hoursPerYear === 'number' ? this . settings . hoursPerYear : 2000 ;
716- const percentCoding = typeof this . settings . percentCoding === 'number' ? this . settings . percentCoding : 50 ;
715+ // Convert settings values to numbers (parse from string if needed)
716+ const hoursPerYear = this . settings . hoursPerYear != null ? parseFloat ( this . settings . hoursPerYear as any ) : 2000 ;
717+ const percentCoding = this . settings . percentCoding != null ? parseFloat ( this . settings . percentCoding as any ) : 50 ;
717718
718719 // Calculate weekly hours saved based on settings and average percent
719720 const weeklyHours = hoursPerYear / 50 ; // Assuming 50 working weeks
720721 const weeklyDevHours = weeklyHours * ( percentCoding / 100 ) ;
721722 const avgWeeklyTimeSaved = weeklyDevHours * ( avgPercentTimeSaved / 100 ) ;
722723
723724 // Calculate max based on settings
724- const maxPercentTimeSaved = typeof this . settings . percentTimeSaved === 'number' ? this . settings . percentTimeSaved : 20 ;
725+ const maxPercentTimeSaved = this . settings . percentTimeSaved != null ? parseFloat ( this . settings . percentTimeSaved as any ) : 20 ;
725726 const maxWeeklyTimeSaved = weeklyDevHours * ( maxPercentTimeSaved / 100 ) ;
726727
727728 const result = {
@@ -785,11 +786,11 @@ RESULT:
785786 const adoptedDevs = this . calculateAdoptedDevs ( ) . current ;
786787 const weeklyTimeSavedHrs = this . calculateWeeklyTimeSavedHrs ( ) . current ;
787788
788- // Ensure all values are properly typed as numbers
789- const hoursPerYear = typeof this . settings . hoursPerYear === 'number' ? this . settings . hoursPerYear : 2000 ;
789+ // Always parse settings values as numbers (from string if needed)
790+ const hoursPerYear = this . settings . hoursPerYear != null ? parseFloat ( this . settings . hoursPerYear as any ) : 2000 ;
790791 const weeksInYear = Math . round ( hoursPerYear / 40 ) || 50 ; // Calculate weeks and ensure it's a number
791792
792- const devCostPerYear = typeof this . settings . devCostPerYear === 'number' ? this . settings . devCostPerYear : 0 ;
793+ const devCostPerYear = this . settings . devCostPerYear != null ? parseFloat ( this . settings . devCostPerYear as any ) : 0 ;
793794 const hourlyRate = devCostPerYear > 0 ? ( devCostPerYear / hoursPerYear ) : 50 ;
794795
795796 const annualSavings = weeklyTimeSavedHrs * weeksInYear * hourlyRate * adoptedDevs ;
@@ -824,8 +825,8 @@ RESULT:
824825 const adoptedDevs = this . calculateAdoptedDevs ( ) . current ;
825826 const weeklyTimeSavedHrs = this . calculateWeeklyTimeSavedHrs ( ) . current ;
826827
827- // Convert hours per year to number
828- const hoursPerYear = typeof this . settings . hoursPerYear === 'number' ? this . settings . hoursPerYear : 2000 ;
828+ // Always parse hours per year as number
829+ const hoursPerYear = this . settings . hoursPerYear != null ? parseFloat ( this . settings . hoursPerYear as any ) : 2000 ;
829830 const hoursPerWeek = hoursPerYear / 50 || 40 ; // Default to 40 if undefined
830831
831832 // Calculate productivity boost factor (not percentage)
0 commit comments