123456789101112131415161718192021222324252627282930 |
- import Vue from 'vue';
-
- import ActivityHeatmap from '../components/ActivityHeatmap.vue';
-
- export default function initHeatmap() {
- const el = document.getElementById('user-heatmap');
- if (!el) return;
-
- try {
- const heatmap = {};
- for (const {contributions, timestamp} of JSON.parse(el.getAttribute('data-heatmap-data'))) {
- // Convert to user timezone and sum contributions by date
- const dateStr = new Date(timestamp * 1000).toDateString();
- heatmap[dateStr] = (heatmap[dateStr] || 0) + contributions;
- }
-
- const values = Object.keys(heatmap).map((v) => {
- return {date: new Date(v), count: heatmap[v]};
- });
-
- const View = Vue.extend({
- render: (createElement) => createElement(ActivityHeatmap, {props: {values}}),
- });
-
- new View().$mount(el);
- } catch (err) {
- console.error('Heatmap failed to load', err);
- el.textContent = 'Heatmap failed to load';
- }
- }
|