Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
| Line 5: | Line 5: | ||
var calculatorBody = document.getElementById('mw-time-calculator'); | var calculatorBody = document.getElementById('mw-time-calculator'); | ||
if (calculatorBody) {CreateTimeCalculator(calculatorBody);} | if (calculatorBody) {CreateTimeCalculator(calculatorBody);} | ||
var timelineparent = document.getElementById('timeline'); | |||
if (timelineparent) {CreateTimeline(timelineparent);} | |||
}()); | }()); | ||
function CreateTimeline(timelineparent){ | |||
if (timelineparent) | |||
{ | |||
var smallestTime = 0; | |||
var biggesttime=0; | |||
var scale = Number(timelineparent.getAttribute("data-scale")); | |||
if (scale <=0 || scale == NaN){scale = 1} | |||
var timelinePoints = timelineparent.getElementsByTagName("UL")[0].getElementsByTagName("li"); | |||
var el = document.createElement('div'); | |||
el.setAttribute('style', 'height: 50px;width: 1000px; overflow-x: scroll;'); | |||
var timelineBody = document.createElement('div'); | |||
timelineBody.setAttribute('class', 'timeline-body'); | |||
var dates = []; | |||
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]; | |||
number = Number(number.replace(/\D/g,'')); | |||
curPoint.getElementsByTagName("B")[0].innerHTML = number; | |||
if (number >= biggesttime){biggesttime = number;} | |||
if (number == 0 && biggesttime > 0) | |||
{ | |||
smallestTime = biggesttime; | |||
biggesttime = 0; | |||
numzero = i; | |||
} | |||
dates.push(number); | |||
} | |||
for (i = 0; i < dates.length; i++) | |||
{ | |||
var curdate=dates[i]; | |||
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); | |||
link.setAttribute('title',curdate+': '+dateText); | |||
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); | |||
var historyevent = document.createElement('div'); | |||
historyevent.setAttribute('style', 'height:0px;width:0px;color:cyan!important;position:absolute;top:0;left:'+curdatewidth+'%;'); | |||
historyevent.setAttribute('class', 'timeline-event'); | |||
historyevent.appendChild(link); | |||
timelineBody.appendChild(historyevent); | |||
} | |||
timelineBody.setAttribute('style', 'height: 30px;width: '+(smallestTime+biggesttime)*scale+'px;position: relative;'); | |||
el.appendChild(timelineBody); | |||
timelineparent.insertBefore(el, timelineparent.firstChild); | |||
} | |||
} | |||
function CreateTimeCalculator(calculatorBody){ | function CreateTimeCalculator(calculatorBody){ | ||
if (calculatorBody) | if (calculatorBody) | ||
| Line 43: | Line 109: | ||
} | } | ||
} | } | ||
function CreateTimeElement(title,defval) | |||
{ | function CreateTimeElement(title,defval){ | ||
var el = document.createElement('input'); | var el = document.createElement('input'); | ||
el.setAttribute('type', 'number'); | el.setAttribute('type', 'number'); | ||
| Line 56: | Line 122: | ||
} | } | ||
function RaharrToStd(time) | function RaharrToStd(time){ | ||
{ | |||
var newTime = time - 490; | var newTime = time - 490; | ||
newTime = newTime / 0.88; | newTime = newTime / 0.88; | ||
return newTime; | return newTime; | ||
} | } | ||
function EarthToStd(time) | function EarthToStd(time){ | ||
{ | |||
var newTime = time - 1368.05; | var newTime = time - 1368.05; | ||
newTime = newTime / 2.27; | newTime = newTime / 2.27; | ||
return newTime; | return newTime; | ||
} | } | ||
function StdToRaharr(time){ | |||
function StdToRaharr(time) | |||
{ | |||
var newTime = time * 0.88; | var newTime = time * 0.88; | ||
newTime = newTime + 490; | newTime = newTime + 490; | ||
return newTime; | return newTime; | ||
} | } | ||
function StdToEarth(time) | function StdToEarth(time){ | ||
{ | |||
var newTime = time * 2.27; | var newTime = time * 2.27; | ||
newTime = newTime + 1368.05; | newTime = newTime + 1368.05; | ||
return newTime; | return newTime; | ||
} | } | ||
Revision as of 09:15, 11 December 2022
/* Any JavaScript here will be loaded for all users on every page load. */
(function ()
{
var calculatorBody = document.getElementById('mw-time-calculator');
if (calculatorBody) {CreateTimeCalculator(calculatorBody);}
var timelineparent = document.getElementById('timeline');
if (timelineparent) {CreateTimeline(timelineparent);}
}());
function CreateTimeline(timelineparent){
if (timelineparent)
{
var smallestTime = 0;
var biggesttime=0;
var scale = Number(timelineparent.getAttribute("data-scale"));
if (scale <=0 || scale == NaN){scale = 1}
var timelinePoints = timelineparent.getElementsByTagName("UL")[0].getElementsByTagName("li");
var el = document.createElement('div');
el.setAttribute('style', 'height: 50px;width: 1000px; overflow-x: scroll;');
var timelineBody = document.createElement('div');
timelineBody.setAttribute('class', 'timeline-body');
var dates = [];
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];
number = Number(number.replace(/\D/g,''));
curPoint.getElementsByTagName("B")[0].innerHTML = number;
if (number >= biggesttime){biggesttime = number;}
if (number == 0 && biggesttime > 0)
{
smallestTime = biggesttime;
biggesttime = 0;
numzero = i;
}
dates.push(number);
}
for (i = 0; i < dates.length; i++)
{
var curdate=dates[i];
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);
link.setAttribute('title',curdate+': '+dateText);
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);
var historyevent = document.createElement('div');
historyevent.setAttribute('style', 'height:0px;width:0px;color:cyan!important;position:absolute;top:0;left:'+curdatewidth+'%;');
historyevent.setAttribute('class', 'timeline-event');
historyevent.appendChild(link);
timelineBody.appendChild(historyevent);
}
timelineBody.setAttribute('style', 'height: 30px;width: '+(smallestTime+biggesttime)*scale+'px;position: relative;');
el.appendChild(timelineBody);
timelineparent.insertBefore(el, timelineparent.firstChild);
}
}
function CreateTimeCalculator(calculatorBody){
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;
}
function RaharrToStd(time){
var newTime = time - 490;
newTime = newTime / 0.88;
return newTime;
}
function EarthToStd(time){
var newTime = time - 1368.05;
newTime = newTime / 2.27;
return newTime;
}
function StdToRaharr(time){
var newTime = time * 0.88;
newTime = newTime + 490;
return newTime;
}
function StdToEarth(time){
var newTime = time * 2.27;
newTime = newTime + 1368.05;
return newTime;
}