Add github update indicator

This commit is contained in:
Pyro Nicampt committed 2025-01-02 07:57:26 -06:00
1 parent ab14ae1acb
commit 7e51329524
3 files changed
+48 -1

No files matched your search

+3 -1
View File
@@ -230,8 +230,10 @@
<p> <p>
Problems? Suggestions? Head over to <a href="https://github.com/PyroNicampt/DV-Community-Map/issues">the issue tracker</a> and see if it's already there, or submit if not. Or contribute a fix yourself if you really want! Problems? Suggestions? Head over to <a href="https://github.com/PyroNicampt/DV-Community-Map/issues">the issue tracker</a> and see if it's already there, or submit if not. Or contribute a fix yourself if you really want!
</p> </p>
<hr style="margin-top: 5px;"> <hr style="margin: 5px 0;">
Hover over tracks and objects for detailed information. Hover over tracks and objects for detailed information.
<hr style="margin: 5px 0;">
Last Updated: <span id="lastUpdate"></span>
</div> </div>
<div class="panel"> <div class="panel">
<h3>Key</h3> <h3>Key</h3>
+26
View File
@@ -42,6 +42,32 @@ export function gradeToClass(grade){
return 'flat'; return 'flat';
} }
/**
* Outputs an easy to read time interval between `date1` and `date2`
* @param {Date} date
*/
export function formattedTimeBetweenDates(date1, date2){
let interval = (date2 - date1)/1000;
if(interval < 0) interval *= -1;
let finalInterval = Math.floor(interval);
if(interval < 60) return finalInterval+(finalInterval == 1 ? ' second' : ' seconds');
interval /= 60;
finalInterval = Math.floor(interval);
if(interval < 60) return finalInterval+(finalInterval == 1 ? ' minute' : ' minutes');
interval /= 60;
finalInterval = Math.floor(interval);
if(interval < 24) return finalInterval+(finalInterval == 1 ? ' hour' : ' hours');
interval /= 24;
finalInterval = Math.floor(interval);
if(interval < 7) return finalInterval+(finalInterval == 1 ? ' day' : ' days');
finalInterval = Math.floor(interval/7);
if(interval < 30.4375) return finalInterval+(finalInterval == 1 ? ' week' : ' weeks');
finalInterval = Math.floor(interval/30.4375);
if(interval < 365.25) return finalInterval+(finalInterval == 1 ? ' month' : ' months');
finalInterval = Math.floor(interval/365.25);
return finalInterval+(finalInterval == 1 ? ' year' : ' years');
}
export function radiusToSpeed(radius){ export function radiusToSpeed(radius){
if(radius < 50) return 10; if(radius < 50) return 10;
else if(radius < 70) return 20; else if(radius < 70) return 20;
+19
View File
@@ -88,6 +88,7 @@ document.addEventListener('DOMContentLoaded', async () => {
legendButtonEvent(); legendButtonEvent();
if(document.body.clientWidth <= 700) legendButtonEvent(); if(document.body.clientWidth <= 700) legendButtonEvent();
populateKey(); populateKey();
setLastUpdateData();
}); });
function addSettingEntry(thisSetting, parent, indent=0){ function addSettingEntry(thisSetting, parent, indent=0){
@@ -130,6 +131,24 @@ function addSettingEntry(thisSetting, parent, indent=0){
} }
} }
let pageLoadUpdateDate = null;
async function setLastUpdateData(){
let commits = await (await fetch(new Request('https://api.github.com/repos/PyroNicampt/DV-Community-Map/commits'))).json();
let lastUpdateElement = document.getElementById('lastUpdate');
let updateDate = new Date(commits[0].commit.author.date);
lastUpdateElement.innerHTML = `<a href="https://github.com/PyroNicampt/DV-Community-Map/commits/main/" title="${updateDate.toString()}">${Utils.formattedTimeBetweenDates(new Date(), updateDate)} ago</a>`;
if(pageLoadUpdateDate == null){
pageLoadUpdateDate = updateDate;
}else{
if(updateDate.valueOf() != pageLoadUpdateDate.valueOf()){
lastUpdateElement.innerHTML += ' Reload page to see changes!';
}
}
setTimeout(() => {setLastUpdateData()}, Math.min(Math.max(120000, new Date().valueOf()-updateDate.valueOf()), 7200000));
}
function populateKey(){ function populateKey(){
addKeyEntry(null, '<span style="font-size:smaller">(Grade arrows point uphill)</span>'); addKeyEntry(null, '<span style="font-size:smaller">(Grade arrows point uphill)</span>');
const getGradeValue = gradeIndex => {return Math.round(Utils.gradeIncrements[Utils.gradeIncrements.length-gradeIndex-1]*10000)/100}; const getGradeValue = gradeIndex => {return Math.round(Utils.gradeIncrements[Utils.gradeIncrements.length-gradeIndex-1]*10000)/100};