MediaWiki:Common.js: Unterschied zwischen den Versionen
Aus LuLuWiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 57: | Zeile 57: | ||
function createProgressBar(domElement) { | function createProgressBar(domElement) { | ||
var green = 0; | var green = 0; | ||
var greenDomElement = domElement.getElementsByClassName( | var yellow = 0; | ||
var red = 0; | |||
var dataTable; | |||
var dataTableAttribute = domElement.getAttribute('data-table'); | |||
if (dataTableAttribute) { | |||
dataTable = document.getElementById(dataTableAttribute); | |||
} | |||
if (dataTable) { | |||
var greenDomElements = dataTable.getElementsByClassName('green'); | |||
if (greenDomElements) { | |||
green = greenDomElements.length; | |||
} | |||
var yellowDomElements = dataTable.getElementsByClassName('yellow'); | |||
if (yellowDomElements) { | |||
yellow = yellowDomElements.length; | |||
} | |||
var redDomElements = dataTable.getElementsByClassName('red'); | |||
if (redDomElements) { | |||
red = redDomElements.length; | |||
} | |||
} else { | |||
var greenDomElement = domElement.getElementsByClassName('green'); | |||
if (greenDomElement && greenDomElement.length > 0) { | |||
var greenText = greenDomElement[0].innerText; | |||
green = parseInt(greenText); | |||
if (isNaN(green)) { | |||
green = 0; | |||
} | |||
} | } | ||
var yellowDomElement = domElement.getElementsByClassName('yellow'); | |||
if (yellowDomElement && yellowDomElement.length > 0) { | |||
var yellowText = yellowDomElement[0].innerText; | |||
yellow = parseInt(yellowText); | |||
if (isNaN(yellow)) { | |||
yellow = 0; | |||
} | |||
} | } | ||
var redDomElement = domElement.getElementsByClassName('red'); | |||
if (redDomElement && redDomElement.length > 0) { | |||
var redText = redDomElement[0].innerText; | |||
red = parseInt(redText); | |||
if (isNaN(red)) { | |||
red = 0; | |||
} | |||
} | } | ||
} | } | ||
var newDomElement = createProgressBarDomElement(green, yellow, red); | var newDomElement = createProgressBarDomElement(green, yellow, red); | ||
domElement.parentNode.replaceChild(newDomElement, domElement); | domElement.parentNode.replaceChild(newDomElement, domElement); | ||
Aktuelle Version vom 26. April 2019, 09:59 Uhr
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/*
* *************************************
* * Funktionen für Fortschrittsbalken *
* *************************************
*/
function createProgressBarDomElement(green, yellow, red) {
var sum = green + yellow + red;
var domElement = document.createElement('div');
domElement.className = 'progressbar';
domElement.style.width = '100%';
domElement.style.display = 'block';
domElement.style.position = 'relative';
domElement.style.height = '25px';
var greenDomElement = document.createElement('div');
greenDomElement.className = 'green';
var greenPercent = (green / sum).toFixed(4) * 100;
greenDomElement.style.width = greenPercent + '%';
greenDomElement.style.float = 'left';
greenDomElement.style.height = '25px';
greenDomElement.style.backgroundColor = 'green';
domElement.appendChild(greenDomElement);
var yellowDomElement = document.createElement('div');
yellowDomElement.className = 'yellow';
var yellowPercent = (yellow / sum).toFixed(4) * 100;
yellowDomElement.style.width = yellowPercent + '%';
yellowDomElement.style.float = 'left';
yellowDomElement.style.height = '25px';
yellowDomElement.style.backgroundColor = 'yellow';
domElement.appendChild(yellowDomElement);
var redDomElement = document.createElement('div');
redDomElement.className = 'red';
var redPercent = (red / sum).toFixed(4) * 100;
redDomElement.style.width = redPercent + '%';
redDomElement.style.float = 'left';
redDomElement.style.height = '25px';
redDomElement.style.backgroundColor = 'red';
domElement.appendChild(redDomElement);
var textDomElement = document.createElement('div');
textDomElement.style.position = 'absolute';
textDomElement.style.width = '100%';
textDomElement.style.left = 0;
textDomElement.style.top = 0;
textDomElement.style.textAlign = 'center';
textDomElement.innerText = green + '/' + sum + ' (' + ('' + greenPercent.toFixed(2)).replace('.',',') + '%)';
if (redPercent > 50) {
textDomElement.style.color = 'white';
} else {
textDomElement.style.color = 'black';
}
domElement.appendChild(textDomElement);
return domElement;
}
function createProgressBar(domElement) {
var green = 0;
var yellow = 0;
var red = 0;
var dataTable;
var dataTableAttribute = domElement.getAttribute('data-table');
if (dataTableAttribute) {
dataTable = document.getElementById(dataTableAttribute);
}
if (dataTable) {
var greenDomElements = dataTable.getElementsByClassName('green');
if (greenDomElements) {
green = greenDomElements.length;
}
var yellowDomElements = dataTable.getElementsByClassName('yellow');
if (yellowDomElements) {
yellow = yellowDomElements.length;
}
var redDomElements = dataTable.getElementsByClassName('red');
if (redDomElements) {
red = redDomElements.length;
}
} else {
var greenDomElement = domElement.getElementsByClassName('green');
if (greenDomElement && greenDomElement.length > 0) {
var greenText = greenDomElement[0].innerText;
green = parseInt(greenText);
if (isNaN(green)) {
green = 0;
}
}
var yellowDomElement = domElement.getElementsByClassName('yellow');
if (yellowDomElement && yellowDomElement.length > 0) {
var yellowText = yellowDomElement[0].innerText;
yellow = parseInt(yellowText);
if (isNaN(yellow)) {
yellow = 0;
}
}
var redDomElement = domElement.getElementsByClassName('red');
if (redDomElement && redDomElement.length > 0) {
var redText = redDomElement[0].innerText;
red = parseInt(redText);
if (isNaN(red)) {
red = 0;
}
}
}
var newDomElement = createProgressBarDomElement(green, yellow, red);
domElement.parentNode.replaceChild(newDomElement, domElement);
console.log('green: ' + green);
console.log('yellow: ' + yellow);
console.log('red: ' + red);
}
function createProgressBars() {
var progressBars = document.getElementsByClassName("progressbar");
for (var i = 0; i < progressBars.length; i++) {
createProgressBar(progressBars[i]);
}
}
$( function() {
createProgressBars();
});