MediaWiki:Common.js : Différence entre versions
Ligne 7 : | Ligne 7 : | ||
/*Tabber*/ | /*Tabber*/ | ||
− | function onTabClick(event) { | + | function onTabClick(event){ |
+ | //déclaration du frère et du père du bouton recevant un clic | ||
var tabberFrere = event.currentTarget.parentElement.nextElementSibling; | var tabberFrere = event.currentTarget.parentElement.nextElementSibling; | ||
+ | var tabberParent = tabberFrere.parentElement; | ||
− | tabberActive = | + | //sélection de toutes les div affichées |
− | + | tabberActive = tabberParent.querySelectorAll("div.tabber-active"); | |
+ | |||
+ | //parcourt toutes les div affichées | ||
tabberActive.forEach(function(tab) { | tabberActive.forEach(function(tab) { | ||
− | tab.className = tab.className.replace( | + | //la div affichée est cachée si elle est dans le tabber en question |
− | + | if (tabberParent===tab.parentElement.parentElement) { | |
+ | tab.className = tab.className.replace("tabber-active", ""); | ||
+ | } | ||
}); | }); | ||
− | + | //la bouton cliqué prend la classe active | |
− | + | event.currentTarget.className += " tabber-active"; | |
− | |||
+ | //le contenu associé au bouton prend la classe active | ||
+ | tabberFrere.children[parseInt(event.currentTarget.id)].className += " tabber-active"; | ||
} | } | ||
− | + | function boutonTabber(content){ | |
− | var | + | //sélectionne tous les boutons à l'intérieur de tous les tabbers |
− | + | var classButton = content.querySelectorAll(".button"); | |
− | |||
− | + | //parcourt chaque bouton | |
− | + | classButton.forEach(function(event) { | |
− | classButton.forEach(function( | ||
− | |||
− | |||
+ | //exécute la fonction onTabClick à chaque clic sur un bouton | ||
+ | event.addEventListener("click", onTabClick, false); | ||
}); | }); | ||
− | + | } | |
− | } | ||
− | |||
− | |||
− | /* | + | /*Calcul*/ |
− | + | function createInput(content){ | |
+ | |||
+ | //sélectionne toutes les div contenant les futurs input | ||
+ | var allInput = content.querySelectorAll("div#inputCalcul"); | ||
− | + | //sélectionne les div qui contiendront les input du résultat du calcul | |
− | var resultatCalc = | + | var resultatCalc = content.querySelectorAll("div#inputResult"); |
+ | //parcourt tous les input | ||
allInput.forEach(function(e){ | allInput.forEach(function(e){ | ||
− | e.insertAdjacentHTML('afterbegin','<input type="number"></input>'); | + | //insert les input à l'intérieur des associées |
− | + | e.insertAdjacentHTML('afterbegin','<input id="entree" type="number"></input>'); | |
}); | }); | ||
− | + | //parcourt les input résultat | |
− | + | resultatCalc.forEach(function(e){ | |
+ | |||
+ | //insert les input résultat à l'intérieur des div associées | ||
+ | e.insertAdjacentHTML('afterbegin','<input id="sortie" type="number"></input>'); | ||
+ | }); | ||
} | } | ||
− | |||
− | |||
− | function | + | function calculWiki(content){ |
− | var | + | //séléectionne le bouton assoicié aux calculs |
− | + | var bouttonCalcul = content.querySelector("#buttonCalcul"); | |
− | + | //exécute une fonction à chaque clic sur le bouton | |
− | + | bouttonCalcul.addEventListener("click", function(){ | |
− | + | ||
− | } | + | var value = 0; |
− | + | ||
− | + | //sélectionne tous les input d'entrée | |
− | + | var allRealInput = content.querySelectorAll("input#entree"); | |
+ | |||
+ | //sélectionne tous les input de sortie | ||
+ | var allRealInputOut = content.querySelectorAll("input#sortie"); | ||
+ | |||
+ | //parcourt tous les input d'entrée et fais la somme de chaque valeur | ||
+ | allRealInput.forEach(function(e){ | ||
+ | value+=parseFloat(e.value); | ||
+ | }); | ||
+ | |||
+ | //parcourt tous les input de sortie en leur donnant la valeur calculée précédemment | ||
+ | allRealInputOut.forEach(function(e){ | ||
+ | e.value=value; | ||
+ | }); | ||
+ | }); | ||
} | } | ||
+ | //s'exécute une fois au chargement de chaque page | ||
(function(){ | (function(){ | ||
− | var | + | //sélectionne toutes les div contenant un tabber à l'intérieur du contenu de chaque page |
− | + | var tabberContainer = document.querySelectorAll("div#mw-content-text div#tabber-container"); | |
− | + | //parcourt chaque div contenant un tabber, rien si vide | |
+ | tabberContainer.forEach(function(e){ | ||
− | + | //exécute la fonction boutonTabber | |
− | + | boutonTabber(e); | |
− | |||
− | |||
− | |||
}); | }); | ||
+ | |||
+ | //sélectionne toutes les div contenant un calcul à l'intérieur du contenu de chaque page | ||
+ | var containerCalcul = document.querySelectorAll("div#mw-content-text div#container-calcul"); | ||
+ | |||
+ | //parcourt chaque div contenant un calcul, rien si vide | ||
+ | containerCalcul.forEach(function(e){ | ||
− | + | //exécute les fonctions createInput et calculWiki | |
− | + | createInput(e); | |
− | }); | + | calculWiki(e); |
+ | }); | ||
})(); | })(); | ||
Version du 24 septembre 2021 à 16:22
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */
/*Favicon*/
$('link[rel="shortcut icon"]').attr('href', 'https://gf1.geo.gfsrv.net/cdn98/191b803adbf82f4b8febe3a2c38c2c.ico');
/*Tabber*/
function onTabClick(event){
//déclaration du frère et du père du bouton recevant un clic
var tabberFrere = event.currentTarget.parentElement.nextElementSibling;
var tabberParent = tabberFrere.parentElement;
//sélection de toutes les div affichées
tabberActive = tabberParent.querySelectorAll("div.tabber-active");
//parcourt toutes les div affichées
tabberActive.forEach(function(tab) {
//la div affichée est cachée si elle est dans le tabber en question
if (tabberParent===tab.parentElement.parentElement) {
tab.className = tab.className.replace("tabber-active", "");
}
});
//la bouton cliqué prend la classe active
event.currentTarget.className += " tabber-active";
//le contenu associé au bouton prend la classe active
tabberFrere.children[parseInt(event.currentTarget.id)].className += " tabber-active";
}
function boutonTabber(content){
//sélectionne tous les boutons à l'intérieur de tous les tabbers
var classButton = content.querySelectorAll(".button");
//parcourt chaque bouton
classButton.forEach(function(event) {
//exécute la fonction onTabClick à chaque clic sur un bouton
event.addEventListener("click", onTabClick, false);
});
}
/*Calcul*/
function createInput(content){
//sélectionne toutes les div contenant les futurs input
var allInput = content.querySelectorAll("div#inputCalcul");
//sélectionne les div qui contiendront les input du résultat du calcul
var resultatCalc = content.querySelectorAll("div#inputResult");
//parcourt tous les input
allInput.forEach(function(e){
//insert les input à l'intérieur des associées
e.insertAdjacentHTML('afterbegin','<input id="entree" type="number"></input>');
});
//parcourt les input résultat
resultatCalc.forEach(function(e){
//insert les input résultat à l'intérieur des div associées
e.insertAdjacentHTML('afterbegin','<input id="sortie" type="number"></input>');
});
}
function calculWiki(content){
//séléectionne le bouton assoicié aux calculs
var bouttonCalcul = content.querySelector("#buttonCalcul");
//exécute une fonction à chaque clic sur le bouton
bouttonCalcul.addEventListener("click", function(){
var value = 0;
//sélectionne tous les input d'entrée
var allRealInput = content.querySelectorAll("input#entree");
//sélectionne tous les input de sortie
var allRealInputOut = content.querySelectorAll("input#sortie");
//parcourt tous les input d'entrée et fais la somme de chaque valeur
allRealInput.forEach(function(e){
value+=parseFloat(e.value);
});
//parcourt tous les input de sortie en leur donnant la valeur calculée précédemment
allRealInputOut.forEach(function(e){
e.value=value;
});
});
}
//s'exécute une fois au chargement de chaque page
(function(){
//sélectionne toutes les div contenant un tabber à l'intérieur du contenu de chaque page
var tabberContainer = document.querySelectorAll("div#mw-content-text div#tabber-container");
//parcourt chaque div contenant un tabber, rien si vide
tabberContainer.forEach(function(e){
//exécute la fonction boutonTabber
boutonTabber(e);
});
//sélectionne toutes les div contenant un calcul à l'intérieur du contenu de chaque page
var containerCalcul = document.querySelectorAll("div#mw-content-text div#container-calcul");
//parcourt chaque div contenant un calcul, rien si vide
containerCalcul.forEach(function(e){
//exécute les fonctions createInput et calculWiki
createInput(e);
calculWiki(e);
});
})();
/* Pour les cookies */
(function () {
var req = new XMLHttpRequest();
req.addEventListener('load', function (ev) {
if (this.status >= 200 && this.status < 300) {
var data = JSON.parse(this.responseText);
if (data.hasOwnProperty('version')) {
var gdpr = document.createElement("script");
gdpr.src = "https://s3-static.geo.gfsrv.net/cookiebanner/" + data.version + "/cookie.min.js";
document.head.appendChild(gdpr);
}
}
});
req.open('GET', "https://s3-static.geo.gfsrv.net/cookiebanner/version.json");
req.send();
})();