Files
life_generators/scripts.js
lifeadventurer 66d4c7c1fd refactor: improve code structure and readability in scripts.js
refactor the code structure - use a loop to iterate through the folderPaths fetched from the folders.json, this way if there are new generators you just need to add them to the folders.json, and make sure the orders are same as the one in html
2023-11-24 23:36:46 +08:00

60 lines
1.8 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;
// console.log(folderPaths);
})
}
const repoOwner = 'LifeAdventurer';
const repoName = 'generators';
async function generator_card_footer(){
await fetch_folders()
// console.log(folderPaths);
for(let i = 0; i < folderPaths.length; i++){
let folderPath = folderPaths[i];
const apiUrl = `https://api.github.com/repos/${repoOwner}/${repoName}/commits?path=${folderPath}`;
console.log(apiUrl);
fetch(apiUrl)
.then(response => response.json())
.then(data => {
// the latest commit will be at the top of the list
let 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;
// console.log(timeSinceLastUpdate);
$(`#last-update-${i + 1}`).html(`Last updated ${formatTimeDifference(timeDifference)} ago`)
})
.catch(error => console.error('Error fetching data:', error));
}
}
// determine whether it is seconds, minutes, hours, or days ago
function formatTimeDifference(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' : ''}`;
}
}
generator_card_footer()