Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
(Replaced content with "→Any JavaScript here will be loaded for all users on every page load.: ") |
|||
(66 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
var calculatorBody = document.getElementById('mw-time-calculator'); | |||
var timelineparent = document.getElementById('timeline'); | |||
if (calculatorBody) | |||
{ | |||
setTimeout( CreateTimeCalculator, 1000 ); | |||
} | |||
if (timelineparent) | |||
{ | |||
setTimeout( CreateTimeline, 900 ); | |||
} | |||
function CreateTimeline() { | |||
timelineparent = document.getElementById('timeline'); | |||
if (timelineparent) | |||
{ | |||
var smallestTime = 0; | |||
var biggesttime=0; | |||
var scale = Number(timelineparent.getAttribute("data-scale")); | |||
if (scale <=0 || scale == NaN){scale = 1} | |||
var log = timelineparent.getAttribute("data-log"); | |||
var timelinePoints = timelineparent.getElementsByTagName("UL")[0].getElementsByTagName("li"); | |||
var el = document.createElement('div'); | |||
el.setAttribute('style', 'height: 80px;width: 100%; overflow-x: scroll;margin-bottom: 10pt;'); | |||
var timelineBody = document.createElement('div'); | |||
timelineBody.setAttribute('class', 'timeline-body'); | |||
var dates = []; | |||
var expungedDates = []; | |||
var numzero = 0; | |||
for (i = 0; i < timelinePoints.length; i++) | |||
{ | |||
var curPoint = timelinePoints[i]; | |||
curPoint.setAttribute('id','timeline-event-'+i); | |||
var number = curPoint.getElementsByTagName("B")[0].innerHTML.split("-")[0]; | |||
if (number.includes('~')) | |||
{ | |||
expungedDates.push(i); | |||
number = Number(number.replace(/\D/g,'')); | |||
dates.push(number); | |||
continue; | |||
} | |||
number = Number(number.replace(/\D/g,'')); | |||
if (number >= biggesttime){biggesttime = number;} | |||
if (number == 0 && biggesttime > 0) | |||
{ | |||
smallestTime = biggesttime; | |||
biggesttime = 0; | |||
numzero = i; | |||
} | |||
dates.push(number); | |||
} | |||
var dateSwitch = 1; | |||
var prevwidth = 100; | |||
for (i = 0; i < dates.length; i++) | |||
{ | |||
var curdate=dates[i]; | |||
if (expungedDates.includes(i)) | |||
{ | |||
continue; | |||
} | |||
if (i < numzero) | |||
curdate = -curdate | |||
var dateText = timelinePoints[i].innerHTML | |||
dateText = dateText.replace(/(<b>).+(<\/b>)/i,''); | |||
dateText = dateText.replace(/(<a).+?(>)/ig,''); | |||
dateText = dateText.replace(/(<).+?(>)/ig,''); | |||
var link = document.createElement('a'); | |||
link.setAttribute('href', '#timeline-event-'+i); | |||
var shortened = ''; | |||
if (dateText.length >199) | |||
shortened = '...'; | |||
link.setAttribute('title',curdate+': '+dateText.substring(0, 200)+shortened); | |||
link.setAttribute('class', 'timeline-event-marker'); | |||
if (i == numzero) | |||
{ | |||
link.setAttribute('class', 'timeline-event-marker timeline-event-marker-groundzero'); | |||
} | |||
link.innerHTML = ''; | |||
var curdatewidth = (100/(smallestTime+biggesttime))*(curdate+smallestTime); | |||
if ((curdatewidth - prevwidth)/scale < 3) | |||
dateSwitch = -dateSwitch + 1; | |||
else | |||
dateSwitch = 0; | |||
var historyevent = document.createElement('div'); | |||
historyevent.setAttribute('style', 'height:0px;width:0px;position:absolute;top:-6pt;left:'+(curdatewidth)+'%;'); | |||
historyevent.setAttribute('class', 'timeline-event'); | |||
var eventtime = document.createElement('div'); | |||
eventtime.setAttribute('style', 'height:0px;width:0px;position:absolute;top:20pt;flex-shrink: 0;display: flex;justify-content: center;align-items: center;'); | |||
if (dateSwitch>0){ | |||
eventtime.setAttribute('style', 'height:0px;width:0px;position:absolute;top:-4pt;flex-shrink: 0;display: flex;justify-content: center;align-items: center;'); | |||
} | |||
eventtime.innerHTML = curdate; | |||
link.appendChild(eventtime); | |||
historyevent.appendChild(link); | |||
timelineBody.appendChild(historyevent); | |||
prevwidth = Math.floor(curdatewidth); | |||
} | |||
timelineBody.setAttribute('style', 'height: 6pt;width: '+(smallestTime+biggesttime)*scale+'px;position: relative;margin-left: 20pt;margin-top: 15pt;'); | |||
el.appendChild(timelineBody); | |||
timelineparent.insertBefore(el, timelineparent.firstChild); | |||
} | |||
} | |||
function CreateTimeCalculator(){ | |||
calculatorBody = document.getElementById('mw-time-calculator'); | |||
if (calculatorBody) | |||
{ | |||
var earthDate = document.getElementById('mw-time-calculator-h'); | |||
var timeEarthY = CreateTimeElement('t-earth-y', 2015); | |||
earthDate.appendChild(timeEarthY); | |||
var raharrDate = document.getElementById('mw-time-calculator-r'); | |||
var timeRaharrY = CreateTimeElement('t-raharr-y', 285); | |||
raharrDate.appendChild(timeRaharrY); | |||
var standardDate = document.getElementById('mw-time-calculator-s'); | |||
var timeStdY = CreateTimeElement('t-standard-y', 285); | |||
standardDate.appendChild(timeStdY); | |||
timeEarthY.addEventListener("input", function () | |||
{ | |||
timeStdY.value = Math.round(EarthToStd(timeEarthY.value)*100)/100; | |||
timeRaharrY.value = Math.round(StdToRaharr(EarthToStd(timeEarthY.value))*100)/100; | |||
}); | |||
timeRaharrY.addEventListener("input", function () | |||
{ | |||
timeStdY.value = Math.round(RaharrToStd(timeRaharrY.value)*100)/100; | |||
timeEarthY.value = Math.round(StdToEarth(RaharrToStd(timeRaharrY.value))*100)/100; | |||
}); | |||
timeStdY.addEventListener("input", function () | |||
{ | |||
timeEarthY.value = Math.round(StdToEarth(timeStdY.value)*100)/100; | |||
timeRaharrY.value = Math.round(StdToRaharr(timeStdY.value)*100)/100; | |||
}); | |||
timeEarthY.value = new Date().getFullYear(); | |||
timeEarthY.dispatchEvent(new Event('input')); | |||
} | |||
} | |||
function CreateTimeElement(title,defval){ | |||
var el = document.createElement('input'); | |||
el.setAttribute('type', 'number'); | |||
el.setAttribute('name', title); | |||
el.setAttribute('id', title); | |||
el.setAttribute('placeholder', defval); | |||
el.setAttribute('step',0.01); | |||
el.setAttribute('style', 'height: 30px;width: 70px;'); | |||
el.value = defval; | |||
return el; | |||
} | |||
//Years corresponding with 0 of the Standard Calendar | |||
var raharYearZero = 690; | |||
var earthYearZero = 1368.05; | |||
var humanYearsinStdYear = 4.02; | |||
var raharrYearsinStdYear = 0.562; | |||
function RaharrToStd(time){ | |||
var newTime = time - raharYearZero; | |||
newTime = newTime / raharrYearsinStdYear ; | |||
return newTime; | |||
} | |||
function EarthToStd(time){ | |||
var newTime = time - earthYearZero; | |||
newTime = newTime / humanYearsinStdYear ; | |||
return newTime; | |||
} | |||
function StdToRaharr(time){ | |||
var newTime = time * raharrYearsinStdYear ; | |||
newTime = newTime + raharYearZero; | |||
return newTime; | |||
} | |||
function StdToEarth(time){ | |||
var newTime = time * humanYearsinStdYear ; | |||
newTime = newTime + earthYearZero; | |||
return newTime; | |||
} |
Latest revision as of 13:20, 28 August 2024
/* Any JavaScript here will be loaded for all users on every page load. */ var calculatorBody = document.getElementById('mw-time-calculator'); var timelineparent = document.getElementById('timeline'); if (calculatorBody) { setTimeout( CreateTimeCalculator, 1000 ); } if (timelineparent) { setTimeout( CreateTimeline, 900 ); } function CreateTimeline() { timelineparent = document.getElementById('timeline'); if (timelineparent) { var smallestTime = 0; var biggesttime=0; var scale = Number(timelineparent.getAttribute("data-scale")); if (scale <=0 || scale == NaN){scale = 1} var log = timelineparent.getAttribute("data-log"); var timelinePoints = timelineparent.getElementsByTagName("UL")[0].getElementsByTagName("li"); var el = document.createElement('div'); el.setAttribute('style', 'height: 80px;width: 100%; overflow-x: scroll;margin-bottom: 10pt;'); var timelineBody = document.createElement('div'); timelineBody.setAttribute('class', 'timeline-body'); var dates = []; var expungedDates = []; var numzero = 0; for (i = 0; i < timelinePoints.length; i++) { var curPoint = timelinePoints[i]; curPoint.setAttribute('id','timeline-event-'+i); var number = curPoint.getElementsByTagName("B")[0].innerHTML.split("-")[0]; if (number.includes('~')) { expungedDates.push(i); number = Number(number.replace(/\D/g,'')); dates.push(number); continue; } number = Number(number.replace(/\D/g,'')); if (number >= biggesttime){biggesttime = number;} if (number == 0 && biggesttime > 0) { smallestTime = biggesttime; biggesttime = 0; numzero = i; } dates.push(number); } var dateSwitch = 1; var prevwidth = 100; for (i = 0; i < dates.length; i++) { var curdate=dates[i]; if (expungedDates.includes(i)) { continue; } if (i < numzero) curdate = -curdate var dateText = timelinePoints[i].innerHTML dateText = dateText.replace(/(<b>).+(<\/b>)/i,''); dateText = dateText.replace(/(<a).+?(>)/ig,''); dateText = dateText.replace(/(<).+?(>)/ig,''); var link = document.createElement('a'); link.setAttribute('href', '#timeline-event-'+i); var shortened = ''; if (dateText.length >199) shortened = '...'; link.setAttribute('title',curdate+': '+dateText.substring(0, 200)+shortened); link.setAttribute('class', 'timeline-event-marker'); if (i == numzero) { link.setAttribute('class', 'timeline-event-marker timeline-event-marker-groundzero'); } link.innerHTML = ''; var curdatewidth = (100/(smallestTime+biggesttime))*(curdate+smallestTime); if ((curdatewidth - prevwidth)/scale < 3) dateSwitch = -dateSwitch + 1; else dateSwitch = 0; var historyevent = document.createElement('div'); historyevent.setAttribute('style', 'height:0px;width:0px;position:absolute;top:-6pt;left:'+(curdatewidth)+'%;'); historyevent.setAttribute('class', 'timeline-event'); var eventtime = document.createElement('div'); eventtime.setAttribute('style', 'height:0px;width:0px;position:absolute;top:20pt;flex-shrink: 0;display: flex;justify-content: center;align-items: center;'); if (dateSwitch>0){ eventtime.setAttribute('style', 'height:0px;width:0px;position:absolute;top:-4pt;flex-shrink: 0;display: flex;justify-content: center;align-items: center;'); } eventtime.innerHTML = curdate; link.appendChild(eventtime); historyevent.appendChild(link); timelineBody.appendChild(historyevent); prevwidth = Math.floor(curdatewidth); } timelineBody.setAttribute('style', 'height: 6pt;width: '+(smallestTime+biggesttime)*scale+'px;position: relative;margin-left: 20pt;margin-top: 15pt;'); el.appendChild(timelineBody); timelineparent.insertBefore(el, timelineparent.firstChild); } } function CreateTimeCalculator(){ calculatorBody = document.getElementById('mw-time-calculator'); if (calculatorBody) { var earthDate = document.getElementById('mw-time-calculator-h'); var timeEarthY = CreateTimeElement('t-earth-y', 2015); earthDate.appendChild(timeEarthY); var raharrDate = document.getElementById('mw-time-calculator-r'); var timeRaharrY = CreateTimeElement('t-raharr-y', 285); raharrDate.appendChild(timeRaharrY); var standardDate = document.getElementById('mw-time-calculator-s'); var timeStdY = CreateTimeElement('t-standard-y', 285); standardDate.appendChild(timeStdY); timeEarthY.addEventListener("input", function () { timeStdY.value = Math.round(EarthToStd(timeEarthY.value)*100)/100; timeRaharrY.value = Math.round(StdToRaharr(EarthToStd(timeEarthY.value))*100)/100; }); timeRaharrY.addEventListener("input", function () { timeStdY.value = Math.round(RaharrToStd(timeRaharrY.value)*100)/100; timeEarthY.value = Math.round(StdToEarth(RaharrToStd(timeRaharrY.value))*100)/100; }); timeStdY.addEventListener("input", function () { timeEarthY.value = Math.round(StdToEarth(timeStdY.value)*100)/100; timeRaharrY.value = Math.round(StdToRaharr(timeStdY.value)*100)/100; }); timeEarthY.value = new Date().getFullYear(); timeEarthY.dispatchEvent(new Event('input')); } } function CreateTimeElement(title,defval){ var el = document.createElement('input'); el.setAttribute('type', 'number'); el.setAttribute('name', title); el.setAttribute('id', title); el.setAttribute('placeholder', defval); el.setAttribute('step',0.01); el.setAttribute('style', 'height: 30px;width: 70px;'); el.value = defval; return el; } //Years corresponding with 0 of the Standard Calendar var raharYearZero = 690; var earthYearZero = 1368.05; var humanYearsinStdYear = 4.02; var raharrYearsinStdYear = 0.562; function RaharrToStd(time){ var newTime = time - raharYearZero; newTime = newTime / raharrYearsinStdYear ; return newTime; } function EarthToStd(time){ var newTime = time - earthYearZero; newTime = newTime / humanYearsinStdYear ; return newTime; } function StdToRaharr(time){ var newTime = time * raharrYearsinStdYear ; newTime = newTime + raharYearZero; return newTime; } function StdToEarth(time){ var newTime = time * humanYearsinStdYear ; newTime = newTime + earthYearZero; return newTime; }