2019-03-24 05:33:14 +00:00
|
|
|
const carousel = document.getElementById("carousel");
|
2019-03-25 04:50:27 +00:00
|
|
|
let projects = [];
|
|
|
|
window.onload = getProjects;
|
2019-03-24 05:33:14 +00:00
|
|
|
|
2019-03-25 04:50:27 +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;
|
2019-03-25 04:50:27 +00:00
|
|
|
|
|
|
|
// Create initial anchor element.
|
2019-03-24 05:33:14 +00:00
|
|
|
let project = projects[pointer];
|
2019-03-25 04:50:27 +00:00
|
|
|
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
|
|
|
|
2019-03-25 04:50:27 +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
|
|
|
|
2019-03-25 04:50:27 +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
|
|
|
|
2019-03-25 04:50:27 +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);
|
|
|
|
});
|
|
|
|
}
|