`;
return html;
}
function yearList() {
const years = [];
for (const item of contributions) {
const year = item.date.getFullYear();
if (!years.includes(year)) {
years.push(year);
}
}
years.sort((a, b) => { return b - a });
for (let i = 0; i < years.length; i++) {
const year = years[i];
const node = document.createElement('li');
node.innerHTML = `${year}`;
document.querySelector('#year-list').appendChild(node);
}
}
function graph(year, posts, startDate, endDate) {
if (year == now.getFullYear().toString()) {
document.querySelector('#posts-count').innerText = `${posts.length} posts in the last year`;
} else {
document.querySelector('#posts-count').innerText = `${posts.length} posts in ${year}`;
}
let html = ``;
const count = {};
for (const post of posts) {
const date = post.date.toISOString().substr(0, 10);
if (count[date] == undefined) {
count[date] = 1;
} else {
count[date]++;
}
}
const monthPos = [];
let startMonth = -1;
for (let i = 0; i < 53; i++) {
html += ``;
for (let j = 0; j < 7; j++) {
const date = new Date(startDate.getTime() + (i * 7 + j) * 24 * 60 * 60 * 1000);
const dataDate = date.toISOString().substr(0, 10);
if (date > endDate) {
continue;
}
if (j == 0) {
if (i <= 51) {
if (startMonth != date.getMonth()) {
monthPos.push(i);
startMonth = date.getMonth();
}
}
}
let c;
if (count[dataDate] == undefined) {
c = 0;
} else {
c = count[dataDate];
}
let color;
switch (c) {
case 0:
color = "#ebedf0";
break;
case 1:
color = "#c6e48b";
break;
case 2:
color = "#7bc96f";
break;
case 3:
color = "#239a3b";
break;
default:
color = "#196127";
}
html += ``;
}
html += '';
}
if (monthPos[1] - monthPos[0] < 2) {
monthPos[0] = -1;
}
for (let i = 0; i < monthPos.length; i++) {
const month = monthPos[i];
if (month == -1) {
continue;
}
html += `${months[(i + startDate.getMonth()) % 12]}`;
}
html += `
SunMonTueWedThuFriSat
`;
document.querySelector('#graph-svg').innerHTML = html;
stopClickEvent('.day');
}