2022-10-01 17:26:38 +03:00
import { createApp } from 'vue' ;
2020-11-19 01:00:16 +03:00
import ActivityHeatmap from '../components/ActivityHeatmap.vue' ;
2022-10-28 16:48:24 +03:00
import { translateMonth , translateDay } from '../utils.js' ;
2022-12-23 19:03:11 +03:00
export function initHeatmap ( ) {
2020-11-19 01:00:16 +03:00
const el = document . getElementById ( 'user-heatmap' ) ;
if ( ! el ) return ;
try {
2021-06-25 19:59:25 +03:00
const heatmap = { } ;
2021-11-22 11:19:01 +03:00
for ( const { contributions , timestamp } of JSON . parse ( el . getAttribute ( 'data-heatmap-data' ) ) ) {
2021-06-25 19:59:25 +03:00
// Convert to user timezone and sum contributions by date
const dateStr = new Date ( timestamp * 1000 ) . toDateString ( ) ;
heatmap [ dateStr ] = ( heatmap [ dateStr ] || 0 ) + contributions ;
2021-11-22 11:19:01 +03:00
}
2021-06-25 19:59:25 +03:00
const values = Object . keys ( heatmap ) . map ( ( v ) => {
return { date : new Date ( v ) , count : heatmap [ v ] } ;
2020-11-19 01:00:16 +03:00
} ) ;
2023-04-17 21:26:01 +03:00
// last heatmap tooltip localization attempt https://github.com/go-gitea/gitea/pull/24131/commits/a83761cbbae3c2e3b4bced71e680f44432073ac8
2022-10-28 16:48:24 +03:00
const locale = {
months : new Array ( 12 ) . fill ( ) . map ( ( _ , idx ) => translateMonth ( idx ) ) ,
days : new Array ( 7 ) . fill ( ) . map ( ( _ , idx ) => translateDay ( idx ) ) ,
contributions : 'contributions' ,
2023-04-17 21:26:01 +03:00
contributions _in _the _last _12 _months : el . getAttribute ( 'data-locale-total-contributions' ) ,
no _contributions : el . getAttribute ( 'data-locale-no-contributions' ) ,
more : el . getAttribute ( 'data-locale-more' ) ,
less : el . getAttribute ( 'data-locale-less' ) ,
2022-10-28 16:48:24 +03:00
} ;
const View = createApp ( ActivityHeatmap , { values , locale } ) ;
2020-11-19 01:00:16 +03:00
2022-10-01 17:26:38 +03:00
View . mount ( el ) ;
2020-11-19 01:00:16 +03:00
} catch ( err ) {
2021-11-09 12:27:25 +03:00
console . error ( 'Heatmap failed to load' , err ) ;
2020-11-19 01:00:16 +03:00
el . textContent = 'Heatmap failed to load' ;
}
}