diff --git a/index.html b/index.html
index fa15fdf..7183ddd 100644
--- a/index.html
+++ b/index.html
@@ -230,8 +230,10 @@
Key
diff --git a/js/utillib.js b/js/utillib.js
index 376c679..a9ad914 100644
--- a/js/utillib.js
+++ b/js/utillib.js
@@ -42,6 +42,32 @@ export function gradeToClass(grade){
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){
if(radius < 50) return 10;
else if(radius < 70) return 20;
diff --git a/legend.js b/legend.js
index 073f7e5..25b5903 100644
--- a/legend.js
+++ b/legend.js
@@ -88,6 +88,7 @@ document.addEventListener('DOMContentLoaded', async () => {
legendButtonEvent();
if(document.body.clientWidth <= 700) legendButtonEvent();
populateKey();
+ setLastUpdateData();
});
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 = `
${Utils.formattedTimeBetweenDates(new Date(), updateDate)} ago`;
+ 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(){
addKeyEntry(null, '
(Grade arrows point uphill)');
const getGradeValue = gradeIndex => {return Math.round(Utils.gradeIncrements[Utils.gradeIncrements.length-gradeIndex-1]*10000)/100};