Ajout (dé)sélection globale

Suppression de code inutile
Le numéro de reçu devient le numéro de membre

FossilOrigin-Name: 3c547eb17e551fff833728a9b3bf6deb4693b1e021c9d55685b054cab930c5cf
This commit is contained in:
engel 2022-01-25 19:18:00 +00:00
parent 41c93cf556
commit c72996befe
4 changed files with 54 additions and 111 deletions

View file

@ -14,20 +14,19 @@ $versementsSelectionnes = array();
foreach ($list as $indice => $ligne) {
$versementsSelectionnes[] = $_SESSION['lesVersements'][$ligne];
}
// print_r($versementsSelectionnes);
// cumuler les versements d'une personne
$totalPersonnes = cumulerVersements($versementsSelectionnes);
// print_r($totalPersonnes);
// générer les reçus
$nomAsso = Services::getNomAsso();
$adresseAsso = Services::getAdresseAsso();
// TODO
// - mémoriser numéro reçu pour pouvoir générer des reçus en plusieurs sessions indépendantes
// - paramétrer l'année fiscale
// $num_recu = 1;
$annee_recu = "2021";
// récupérer le logo CERFA (bôf) et la signature
// TODO : paramétrer le répertoire des images
$logoCERFA = PLUGIN_ROOT . "/data/logoCerfa.png";
@ -58,7 +57,6 @@ foreach ($totalPersonnes as $idPersonne => $personne) {
$personne->ville,
$personne->codePostal
);
//++$num_recu;
// fabriquer le nom du fichier PDF
$nom = str_replace(' ', '_', $personne->nomPrenom);
$nom = str_replace("'", "", $nom);

View file

@ -1,3 +1,36 @@
/**
* Fonction appelée quand on ()coche la case de sélection globale
* ()sélectionner toutes les cases à cocher de toutes les activités
* @param id de la case globale
*/
function cocherDecocherTout(idCaseGlobale) {
// chercher le formulaire englobant
var formulaire = idCaseGlobale.closest("form");
// itérer sur la liste des éléments détails : 1 par couple <activité, tarif>
var lesDetails = formulaire.querySelectorAll("details");
for (var i = 0; i < lesDetails.length; ++i) {
// itérer sur les personnes
var lesH3 = lesDetails[i].querySelectorAll("h3.personne");
for (var j = 0; j < lesH3.length; ++j) {
// trouver l'élément total de la personne
var idTotal = lesH3[j].querySelector("span");
// puis la case à cocher
var fieldset = lesH3[j].nextElementSibling;
var idCase = fieldset.querySelector("input");
idCase.checked = idCaseGlobale.checked;
// puis traiter toutes les cases de la personne
cocherDecocherPersonne(idCase, idTotal);
}
}
// changer le message
var message = idCaseGlobale.nextElementSibling;
if (idCase.checked) {
message.innerHTML = "Cliquer pour dé-cocher toutes les lignes";
} else {
message.innerHTML = "Cliquer pour cocher toutes les lignes";
}
}
/**
* Fonction appelée quand on ()coche la case d'une personne
* - ()sélectionner toutes les cases à cocher
@ -84,67 +117,3 @@ function verifierChoix(formulaire)
}
return ok;
}
/**
* Cocher/décocher toutes les cases d'un tableau
* en fonction de l'état de la première (ligne d'entête)
* @param evt : événement déclencheur
* @remarks : est remplacé par la fonction cocherDecocherPersonne ci-dessus
*/
function cocherDecocher_old(evt) {
console.log("this = " + this.className);
console.log("currentTarget = " + evt.currentTarget.className);
console.log("evt.target = " + evt.target.className);
var composed = evt.composedPath();
console.log("composedPath = " + composed);
var firstInput = evt.target;
// voir si la case tousCochés est cochée
var tousCoches = firstInput.checked;
// chercher la table englobante
var laTable = firstInput.closest("table");
console.log("Table trouvée = " + laTable.id);
// et la liste des lignes
var rows = laTable.getElementsByTagName("tr");
// modifier les autres cases en fonction de celle-ci
for (let i = 1; i < rows.length; ++i) {
var input = rows[i].getElementsByTagName("input")[0];
input.checked = tousCoches;
}
}
/**
* Associer un écouteur à la première case à cocher de chaque table
* @remarks : n'est plus utile
*/
function activerListener() {
// parcourir les tables
const lesTables = document.querySelectorAll("table.list");
for (let i = 0; i < lesTables.length; ++i) {
// vérifier si c'est l'une des tables qui nous intéresse
// l'id est du genre : versements_xx où xx est un entier
const id = lesTables[i].id;
const re = /^versements_[0-9]+/;
console.log("id = " + id + " => " + re.test(id));
if (re.test(id)) {
// chercher le premier élément input
const premierInput = lesTables[i].querySelector("input");
// associer un écouteur à la première case à cocher
premierInput.addEventListener('change', cocherDecocher);
}
}
}
/*
// ouvrir/fermer les détails
document.querySelector('#open_details').onclick = () => {
document.querySelectorAll('details').forEach((e) => {
e.setAttribute('open', 'open');
});
};
document.querySelector('#close_details').onclick = () => {
document.querySelectorAll('details').forEach((e) => {
e.removeAttribute('open');
});
};
*/

View file

@ -1,10 +1,10 @@
/* liste de versements */
div.pair {
padding : 0.2em;
background: rgba(var(--gSecondColor), 0.2);
}
div.impair {
padding : 0.2em;
/*background: #eeeeee; /*rgba(var(--gSecondColor), 0.5);*/
}
fieldset {
border:2px solid brown;
@ -18,3 +18,9 @@ div span {
padding-left : 0.5em;
padding-right : 0.5em;
}
summary.activite {
background: rgba(var(--gMainColor), 0.25);
}
h3.personne {
background: rgba(var(--gSecondColor), 0.35);
}