@@ -101,15 +101,14 @@ export function buildMonthlyEvolution(
101101 return entries . map ( ( [ month , value ] , i ) => {
102102 const [ y , m ] = month . split ( '-' ) . map ( Number ) as [ number , number ]
103103 const total = daysInMonth ( y , m - 1 )
104+ const isFirst = i === 0
105+ const isLast = i === entries . length - 1
104106
105- if ( i === 0 && rangeStartIso ) {
106- const startDay = Number ( rangeStartIso . split ( '-' ) [ 2 ] )
107- if ( startDay > 1 ) value = fillPartialBucket ( value , total - startDay + 1 , total )
108- }
109- if ( i === entries . length - 1 && rangeEndIso ) {
110- const endDay = Number ( rangeEndIso . split ( '-' ) [ 2 ] )
111- if ( endDay < total ) value = fillPartialBucket ( value , endDay , total )
112- }
107+ const startDay = isFirst && rangeStartIso ? Number ( rangeStartIso . split ( '-' ) [ 2 ] ) : 1
108+ const endDay = isLast && rangeEndIso ? Number ( rangeEndIso . split ( '-' ) [ 2 ] ) : total
109+ const actualDays = endDay - startDay + 1
110+
111+ if ( actualDays < total ) value = fillPartialBucket ( value , actualDays , total )
113112
114113 return { month, value, timestamp : parseIsoDate ( `${ month } -01` ) . getTime ( ) }
115114 } )
@@ -132,18 +131,20 @@ export function buildYearlyEvolution(
132131 return entries . map ( ( [ year , value ] , i ) => {
133132 const total = daysInYear ( Number ( year ) )
134133 const yearStart = parseIsoDate ( `${ year } -01-01` )
135-
136- if ( i === 0 && rangeStartIso ) {
137- const dayOfYear = Math . floor (
138- ( parseIsoDate ( rangeStartIso ) . getTime ( ) - yearStart . getTime ( ) ) / DAY_MS ,
139- )
140- if ( dayOfYear > 0 ) value = fillPartialBucket ( value , total - dayOfYear , total )
141- }
142- if ( i === entries . length - 1 && rangeEndIso ) {
143- const actualDays =
144- Math . floor ( ( parseIsoDate ( rangeEndIso ) . getTime ( ) - yearStart . getTime ( ) ) / DAY_MS ) + 1
145- if ( actualDays < total ) value = fillPartialBucket ( value , actualDays , total )
146- }
134+ const isFirst = i === 0
135+ const isLast = i === entries . length - 1
136+
137+ const startOffset =
138+ isFirst && rangeStartIso
139+ ? Math . floor ( ( parseIsoDate ( rangeStartIso ) . getTime ( ) - yearStart . getTime ( ) ) / DAY_MS )
140+ : 0
141+ const endOffset =
142+ isLast && rangeEndIso
143+ ? Math . floor ( ( parseIsoDate ( rangeEndIso ) . getTime ( ) - yearStart . getTime ( ) ) / DAY_MS ) + 1
144+ : total
145+ const actualDays = endOffset - startOffset
146+
147+ if ( actualDays < total ) value = fillPartialBucket ( value , actualDays , total )
147148
148149 return { year, value, timestamp : yearStart . getTime ( ) }
149150 } )
0 commit comments