gmemstr.github.io/assets/app.js

48 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2019-03-24 05:33:14 +00:00
const carousel = document.getElementById("carousel");
let projects = [];
window.onload = getProjects;
2019-03-24 05:33:14 +00:00
/**
* Pick random project and place it in the carousel.
*/
2019-03-24 05:33:14 +00:00
function carouselProjectPicker() {
let pointer = Math.round(Math.random() * 10 % projects.length) - 1;
if (pointer < 0) pointer = 1;
// Create initial anchor element.
2019-03-24 05:33:14 +00:00
let project = projects[pointer];
let projectElement = document.createElement("a");
projectElement.href = project.html_url;
projectElement.target = "_blank";
projectElement.id = "carousel-project";
2019-03-24 05:33:14 +00:00
// Create project title element.
let projectHeader = document.createElement("h2");
let projectHeaderText = document.createTextNode(project.name);
projectHeader.appendChild(projectHeaderText);
2019-03-24 05:33:14 +00:00
// Create project description element.
let projectHeaderSmall = document.createElement("small");
let projectHeaderSmallText = document.createTextNode(project.description);
projectHeaderSmall.appendChild(projectHeaderSmallText);
projectHeader.appendChild(projectHeaderSmall);
projectElement.appendChild(projectHeader);
let oldProject = document.getElementById("carousel-project");
carousel.replaceChild(projectElement, oldProject);
}
2019-03-24 05:33:14 +00:00
/**
* Fetch projects from GitHub and trigger carousel event and interval.
*/
function getProjects() {
fetch("https://api.github.com/users/gmemstr/repos")
.then(function (response) {
return response.json();
})
.then(function (apiResult) {
projects = apiResult;
carouselProjectPicker();
setInterval(carouselProjectPicker, 10000);
});
}