@@ -73,12 +73,34 @@ function formatTotalStr(rows: timer.stat.Row[], type: timer.core.Dimension | und
7373}
7474
7575function calculateSubTitleText ( result : PercentageResult ) : string {
76- let { date, dataDate, rows, query : { dimension } = { } } = result
76+ let { date, dataDate, rows, query : { dimension, duration } = { } , dateLength } = result
7777 const dateStr = dataDate ? formatDateStr ( date , dataDate ) : ''
7878 const totalStr = formatTotalStr ( rows , dimension )
79- let parts = [ totalStr , dateStr ] . filter ( str => ! ! str )
79+
80+ // Calculate average per day
81+ let averageStr = ''
82+ // Don't show averages for single-day durations (today/yesterday)
83+ const isSingleDay = duration === 'today' || duration === 'yesterday'
84+
85+ if ( dateLength && dateLength > 0 && ! isSingleDay ) { // Changed: removed dimension check
86+ if ( dimension === 'focus' ) {
87+ // Average time per day
88+ const total = sum ( rows . map ( r => r ?. focus ?? 0 ) )
89+ const averagePerDay = total / dateLength
90+ const averageTime = formatPeriodCommon ( averagePerDay )
91+ averageStr = '(' + t ( msg => msg . content . percentage . averageTime , { value : averageTime } ) + ')'
92+ } else if ( dimension === 'time' ) {
93+ // Average visits per day
94+ const totalCount = sum ( rows . map ( r => r . time ?? 0 ) )
95+ const averagePerDay = totalCount / dateLength
96+ const averageCount = averagePerDay . toFixed ( 1 )
97+ averageStr = '(' + t ( msg => msg . content . percentage . averageCount , { value : averageCount } ) + ')'
98+ }
99+ }
100+
101+ let parts = [ totalStr , dateStr , averageStr ] . filter ( str => ! ! str )
80102 isRtl ( ) && ( parts = parts . reverse ( ) )
81- return parts . join ( ' @ ' )
103+ return parts . join ( ' ' )
82104}
83105
84106export function generateTitleOption ( result : PercentageResult , suffix ?: string ) : TitleComponentOption {
@@ -265,25 +287,25 @@ export function formatTooltip({ query, dateLength }: PercentageResult, params: T
265287 const format = ( Array . isArray ( params ) ? params [ 0 ] : params )
266288 const { name, value, percent, data } = format ?? { }
267289 const { row } = data as PieSeriesItemOption
268- const { dimension } = query
290+ const { dimension, duration } = query
269291 const itemValue = typeof value === 'number' ? value as number : 0
270-
271292 let valueLine = dimension === 'time' ? itemValue : formatPeriodCommon ( itemValue )
272293 // Display percent only when query focus time
273294 dimension === 'focus' && ( valueLine += ` (${ percent } %)` )
274-
275295 let nameLine = name
276296 let averageLine : string | undefined = undefined
277297 if ( ! isOther ( row ) ) {
278298 if ( isSite ( row ) ) {
279299 const { siteKey : { host } } = row
280300 nameLine = generateSiteLabel ( host , name )
281301 }
282- if ( dateLength && dateLength > 1 ) {
302+ // Don't show averages for single-day durations (today/yesterday)
303+ const isSingleDay = duration === 'today' || duration === 'yesterday'
304+
305+ if ( dateLength && dateLength > 1 && ! isSingleDay ) { // Changed: simplified condition
283306 averageLine = calculateAverageText ( dimension , itemValue / dateLength )
284307 }
285308 }
286-
287309 return [ nameLine , valueLine , averageLine ] . filter ( l => ! ! l ) . join ( '<br />' )
288310}
289311
0 commit comments