68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
// fetch all folder paths of the generators from `folders.json`
|
|
let folderPaths = [];
|
|
|
|
async function fetch_folders() {
|
|
await fetch("./folders.json")
|
|
.then((response) => response.json())
|
|
.then((data) => {
|
|
folderPaths = data.folder_paths;
|
|
});
|
|
}
|
|
|
|
async function get_generator_card_footer() {
|
|
await fetch_folders();
|
|
const repoOwner = "LifeAdventurer";
|
|
const repoName = "generators";
|
|
for (let folderIndex = 1; folderIndex <= folderPaths.length; folderIndex++) {
|
|
const folderPath = folderPaths[folderIndex - 1];
|
|
const apiUrl =
|
|
`https://api.github.com/repos/${repoOwner}/${repoName}/commits?path=${folderPath}`;
|
|
|
|
fetch(apiUrl)
|
|
.then((response) => response.json())
|
|
.then((data) => {
|
|
// the latest commit will be at the top of the list
|
|
const lastCommit = data[0].commit.author.date;
|
|
const commitTimeStamp = new Date(lastCommit).getTime() / 1000;
|
|
const currentTimeStamp = Math.floor(new Date().getTime() / 1000);
|
|
const timeDifference = currentTimeStamp - commitTimeStamp;
|
|
|
|
$(`#last-update-${folderIndex}`).html(
|
|
`Last updated ${format_time_difference(timeDifference)} ago`,
|
|
);
|
|
});
|
|
// .catch(error => console.error('Error fetching data:', error));
|
|
}
|
|
}
|
|
|
|
// determine whether it is seconds, minutes, hours, or days ago
|
|
function format_time_difference(seconds) {
|
|
const minutes = Math.floor(seconds / 60);
|
|
const hours = Math.floor(minutes / 60);
|
|
const days = Math.floor(hours / 24);
|
|
|
|
if (days > 0) {
|
|
return `${days} day${days > 1 ? "s" : ""}`;
|
|
} else if (hours > 0) {
|
|
return `${hours} hour${hours > 1 ? "s" : ""}`;
|
|
} else if (minutes > 0) {
|
|
return `${minutes} minute${minutes > 1 ? "s" : ""}`;
|
|
} else {
|
|
return `${seconds} second${seconds > 1 ? "s" : ""}`;
|
|
}
|
|
}
|
|
|
|
get_generator_card_footer();
|
|
|
|
const darkModeIcon = document.querySelector("#dark-mode-icon");
|
|
|
|
darkModeIcon.onclick = () => {
|
|
darkModeIcon.classList.toggle("bx-sun");
|
|
document.body.classList.toggle("dark-mode");
|
|
};
|
|
|
|
// temporary
|
|
let max_height = -1;
|
|
document.querySelectorAll('.card-body').forEach(el => max_height = Math.max(max_height, el.offsetHeight));
|
|
document.querySelectorAll('.card-body').forEach(el => el.style.height = `${max_height}px`);
|