Modèle:Fstats/Test
Liste des modèles concernés :
- Bac à sable
- Modèle actif
Rendu particulier pour la saison en cours (proposition 2023)
modifierDiscussion Projet:Football#Actualisation des statistiques de joueurs en cours de saison (lien permanent).
Le code dans les articles resterait inchangé. Le changement de comportement (affichage du message) est globalement réalisé automatiquement le de chaque année. Mais, il pourrait être configuré en fonction du pays afin de s'adapter aux championnats qui finissent à d'autres moments de l'année.
Remarques techniques
- Seul le modèle Fstats est concerné par une évolution. Et création éventuelle de sous-modèles de test et de catégorisation.
- Par simplicité, pour le pas avoir à traiter des dates et en raison des limitations techniques sur les expressions régulières du module String (alternative « ou » notée « | » indisponible), l'affichage ne se fait que sur la saison en cours ou la future saison la plus proche. Mais vu que ces tableaux ne devraient jamais contenir de lignes pour la saison ultérieure, cela ne devrait pas poser problème.
- Il faudra évaluer l'impact en termes de performance (coût d’exécution des modèles) ; pas de risque en ce qui concerne la « taille de développement après expansion » mais augmentation de l'utilisation de mémoire Lua, du nombre de nœuds de préprocesseur visités et de la « taille d’inclusion après expansion ».
Exemples
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | ||||
---|---|---|---|---|---|---|---|---|
Division | M. | M. | M. | |||||
2021-2022 | Arsenal FC | PL | - | - | 0 | |||
2022-2023 | SM Caen | Ligue 2 | - | - | 0 | |||
2023-2024 | Club | Ligue 2 | - | - | 0 |
Saison | Club | Championnat | Coupe nationale | Coupe de la Ligue | Supercoupe | Compétition(s) continentale(s) |
Sélection | Total | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Division | M. | M. | M. | M. | Comp. | M. | Équipe | M. | M. | |||||||||
2006-2007 | CA Osasuna | 1 | 1 | 1 | - | - | C3 | 1 | Espagne - 19 ans | 5 | 8 | |||||||
2007-2008 | CA Osasuna | 1 | 29 | - | - | - | - | - | Espagne - 19 ans | 10 | 39 | |||||||
2008-2009 | CA Osasuna | 1 | 36 | 2 | - | - | - | - | Espagne - 19 ans Espagne - 20 ans Espagne espoirs |
3 5 7 |
53 | |||||||
2009-2010 | CA Osasuna | 1 | 33 | 5 | - | - | - | - | Espagne espoirs | 5 | 43 | |||||||
Sous-total | 0 | 0 | - | - | - | 0 | - | 3 | 3 | |||||||||
2021-2022 | Olympique de Marseille | 1 | 15 | - | 1 | 1 | C1 | 4 | Espagne espoirs | 7 | 28 | |||||||
2022-2023 | Olympique de Marseille | 1 | 15 | - | 1 | 1 | C1 | 4 | - | - | 21 | |||||||
2023-2024 | Olympique de Marseille | 1 | - | - | - | - | C1 | - | - | - | 0 | |||||||
Sous-total | 0 | - | 1 | 0 | - | 0 | - | 0 | 1 | |||||||||
Total sur la carrière | 0 | 0 | 1 | 0 | - | 0 | - | 3 | 4 |
Idées pour alléger le coût d'utilisation du modèle
modifier- Simplification du code. Il y avait des tests redondants inutiles. Corrigés.
- Retirer certaines infobulles dans l'en-tête du tableau. On n'est pas obligé de les répéter à l'identique dans chaque colonne.
- Les principaux appels à fonctions coûteuses sont les tests d'existence d'articles pour les trois premières colonnes du tableau. Jusqu'à trois tests pour la première colonne (saison) ; ces tests sont voués à l'échec si le paramètre 1 ou le paramètre 2 contient un crochet. Un test de ce type effectué en priorité serait peut-être préférable en fonction bien sur du taux de présence de crochets dans ces paramètres. Après vérification, il semblerait que MediaWiki exclue rapidement les tests dans ce cas et donc que la recherche coûteuse ne soit pas effectuée. Ouf ! Il reste néammoins préférable, sur le plan exécution, que le rédacteur renseigne le paramètre « liensaison ».
Fusion des cellules (proposition 2021)
modifierAutres discussions relatives à ce modèle Discussion Projet:Modèle/Archive 2021#Modèle:Fstats
Explication technique pour le choix de la syntaxe de fusion
modifierDans les deux cas, on met :
- « rowspanclub=N » (N valant 2 ou plus) pour le modèle de chaque "première ligne à fusionner" ;
- « rowspanclub=0 » pour les N-1 suivants.
Proposition technique A
modifierElle consiste à mettre dans une même couleur toutes les cellules de la deuxième colonne, ligne par ligne, par l'intermédiaire du paramètre rowspanclub. Donc pour les autres lignes, il y a besoin de mettre « rowspanclub=1 ». Il ne faudrait jamais utiliser cette valeur dans les « tableaux sans fusion », sous peine d'avoir là aussi des cases de la seconde colonne ne respectant pas l'alternance de couleur.
Proposition technique B
modifierElle repose sur davantage de CSS. Sauf erreur ou incompatibilité de navigateur, le résultat est le même. Mais la syntaxe pour l'appliqer est différente.
Avec cette méthode, on s'affranchit de la question des lignes "sans fusion". Les rowspanclub=1 ne seraient plus nécéssaires ; ils serait inutiles mais pas gênants. En revanche, on ajoute un paramètre « tableaurowspanclub=oui » (peut-être trouver un nom plus explicite) au modèle {{Fstats début}}, afin d'ajouter la classe « col2unie » au tableau. Le code CSS fait en sorte que toutes les cellules (secondes cases) des lignes aient un fond de la couleur choisie, sauf dans les lignes correspondant à un rowspanclub=0 (pour lesquelles la deuxième case est située dans la troisième colonne) et les intrus (lignes de sous-totaux repérées par leur couleur soit actuellement #E6E6E6 ; une méthode alternative consisterait à assigner une classe à ces lignes).
CSS
.fstats.alternance2 tr,
.fstats.alternance2 th[scope="row"] {
background-color: blue;
}
.fstats.alternance2 tr:nth-child(odd),
.fstats.alternance2 tr:nth-child(odd) th[scope="row"] {
background-color: red;
}
/*la couleur (ici #E6E6E6) est à définir identique à celle choisie pour/dans « Fstats total »*/
.col2unie tr:not(.fstatsfusion):not([style*="#E6E6E6"])>td:nth-child(2){
background-color: #f4f9fe;
}
HTML
Un exemple de tableau, avec les classes
<table class="aa alternance2 col2unie">
<tr>
<th>…</th>…
</tr>
<tr>
<td>…</td><td>…</td><td>…</td>
</tr>
<tr>
<td>…</td><td rowspan="3">…</td><td>…</td>
</tr>
<tr class="fstatsfusion">
<td>…</td><td>…</td>
</tr>
<tr class="fstatsfusion">
<td>…</td><td>…</td>
</tr>
<tr>
<td>…</td><td>…</td><td>…</td>
</tr>
<tr style="background:#E6E6E6;">/* ligne des sous-totaux */
<td>…</td>…
</tr>
<tr>
<td>…</td><td rowspan="2">…</td><td>…</td>
</tr>
<tr class="fstatsfusion">
<td>…</td><td>…</td>
</tr>
</table>
La classe "fstatsfusion" introduite à bon escient par le modèle Fstats permet de repérer si la ligne est de type {{Fstats|rowspanclub=0}} parce que dans ce cas, il ne faut pas changer la couleur de sa seconde case qui factuellement se trouve dans la troisième colonne du tableau.
Une proposition C ?
modifierDans la mesure de mes compétences en codage, HTML et CSS, je n'ai pas réussi à mettre au point quelque chose de fonctionnel. Mais je reste persuadé qu’une autre méthode, relativement simple sur le papier, serait bien meilleure (adaptation automatique, moins d'intrusion dans le code des articles).
Idéalement, il ne devrait pas y avoir besoin de dire au tableau qu'il est dans un cas ou dans l'autre (dans l'exemple ci-dessus la classe col2unie). Le CSS devrait pouvoir repérer tout seul et on n'aurait pas besoin de rajouter de paramètre optionnel ajoutant manuellement une classe au modèle de début de tableau. Donc le paramètre « tableaurowspanclub=oui » de la méthode B ou les « rowspanclub=1 » de la méthode A devraient rapidement devenir techniquement obsolètes.
Plusieurs pistes explorées :
a. Mauvaise piste. Ajouter une classe « fstatsfusionf » pour les premières lignes avec une cellule fusionnée (correspond à rowspanclub=n, n>1), via le modèle Fstats (pour mémoire, d'autres lignes du tableau, en l’occurrence pour les sous-totaux et dans les en-têtes ont des cellules fusionnées). Solliciter un sélecteur de jumeaux « ~ » (tr du même niveau)tr.fstatsfusionf>td:nth-child(2), tr.fstatsfusionf~tr:not(.fstatsfusion):not([style*="#E6E6E6"])>td:nth-child(2){ background-color: #f4f9fe; }
Ce serait OK si on était assuré que les premières lignes des tableaux contiennent toujours des cellules fusionnées*. Or, ce n'est pas nécessairement le cas. (*, car « ~ » sélectionne les voisins qui suivent le premier « .fstatsfusionf » rencontré.)
b. Dans les spécifications Selectors Level 4du CSS, une fonctionnalité était prévue « ! » pour permettre de sélectionner un parent en fonction des ses enfants. Par exemple ici, table! tr.fstatsfusion
.
c. Il était aussi question de la pseudo-class :has()
un simple table.has(> tr.fstatsfusion)…
pourrait fait l'affaire. Comme au point précédent, Ces spécifications ne sont pas (ou pas encore) supportées par les navigateurs, en CSS natif.
Pour faire clair, il s'agit par exemple de trouver un sélecteur donnant tous les éléments de types td (sauf exceptions citées au point a.) parmi les enfants d'un tr dont un des enfants est de classe "fstatsfusion".
d. Possibilité de solliciter un script javascript ou jquery ($("table:has(tr.fstatsfusion)").addClass("col2unie");
, ce dernier n'étant pas forcément adapté pour Wikipédia) mais je passe mon tour. Si une telle approche est retenue, il serait envisageable de mieux gérer l'alternance parce qu'on pourrait se servir d'un compteur.
e. Autre piste avec un rendu différent, par club. Se débrouiller via les modèles pour ouvrir un <tbody>
avant chaque ligne de début de club et le fermer après la dernière. La présence éventuelle des lignes de sous-totaux est encore un point délicat. Appliquer ensuite une alternance sur ces éléments. N.B. : Le sélecteur nth-child ne permet pas encore de distinguer par classes ou attributs (cf. Discussion Projet:Football/Archive86#Tableaux de statistiques).
Version bac à sable
modifierPrésentation classique
modifierPas de rowspanclub défini dans le tableau. Témoins non-régression.
Proposition technique A
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Division | B | B | B | ||||||||
2004-2005 | Olympique lyonnais | L1 | 6 | - | 6 | ||||||
2005-2006 | Olympique lyonnais | Ligue 1 | 13 | 2 | 15 | ||||||
2006-2007 | Olympique lyonnais | Ligue 1 | 21 | 1 | 22 | ||||||
2007-2008 | Ailleurs | Ligue 1 | 10 | 2 | 12 | ||||||
Total sur la carrière | 11 | 2 | 13 |
Proposition technique B
modifierPour tester mais normalement la même chose, ici, comme plus bas. (comparaison des deux méthodes.)
Saison | Club | Championnat | Coupe(s) nationale(s) | Total | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Division | B | B | B | ||||||||
2004-2005 | Olympique lyonnais | L1 | 6 | - | 6 | ||||||
2005-2006 | Olympique lyonnais | Ligue 1 | 13 | 2 | 15 | ||||||
2006-2007 | Olympique lyonnais | Ligue 1 | 21 | 1 | 22 | ||||||
2007-2008 | Ailleurs | Ligue 1 | 10 | 2 | 12 | ||||||
Total sur la carrière | 11 | 2 | 13 |
Présentation classique avec sous-totaux
modifierPas de rowspanclub défini dans le tableau. Témoins non-régression.
Proposition technique A
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | ||||
---|---|---|---|---|---|---|---|---|
Division | B | B | B | |||||
2010-2011 | Liverpool | PL | - | - | 0 | |||
2011-2012 | Arsenal FC | PL | - | - | 0 | |||
2012-2013 | Arsenal FC | PL | - | - | 0 | |||
Sous-total | 6 | 2 | 8 | |||||
2017-2018 | AA | Ligue 2 | - | - | 0 | |||
2018-2019 | BB | Ligue 2 | - | - | 0 | |||
Total sur la carrière | 86 | 8 | 94 |
Proposition technique B
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | ||||
---|---|---|---|---|---|---|---|---|
Division | B | B | B | |||||
2010-2011 | Liverpool | PL | - | - | 0 | |||
2011-2012 | Arsenal FC | PL | - | - | 0 | |||
2012-2013 | Arsenal FC | PL | - | - | 0 | |||
Sous-total | 6 | 2 | 8 | |||||
2017-2018 | AA | Ligue 2 | - | - | 0 | |||
2018-2019 | BB | Ligue 2 | - | - | 0 | |||
Total sur la carrière | 86 | 8 | 94 |
Présentation avec fusion
modifierProposition technique A
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Division | B | B | B | ||||||||
2004-2005 | Olympique lyonnais | L1 | 6 | - | 6 | ||||||
2005-2006 | Ligue 1 | 13 | 2 | 15 | |||||||
2006-2007 | Ligue 1 | 21 | 1 | 22 | |||||||
2007-2008 | Ailleurs | Ligue 1 | 10 | 2 | 12 | ||||||
Total sur la carrière | 11 | 2 | 13 |
Proposition technique B
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Division | B | B | B | ||||||||
2004-2005 | Olympique lyonnais | L1 | 6 | - | 6 | ||||||
2005-2006 | Ligue 1 | 13 | 2 | 15 | |||||||
2006-2007 | Ligue 1 | 21 | 1 | 22 | |||||||
2007-2008 | Ailleurs | Ligue 1 | 10 | 2 | 12 | ||||||
Total sur la carrière | 11 | 2 | 13 |
Présentation avec fusion et sous-totaux
modifierProposition technique A
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | ||||
---|---|---|---|---|---|---|---|---|
Division | B | B | B | |||||
2010-2011 | Liverpool | PL | - | - | 0 | |||
2011-2012 | Arsenal FC | PL | - | - | 0 | |||
2012-2013 | PL | - | - | 0 | ||||
Sous-total | 6 | 2 | 8 | |||||
2017-2018 | AA | Ligue 2 | - | - | 0 | |||
2018-2019 | BB | Ligue 2 | - | - | 0 | |||
Total sur la carrière | 86 | 8 | 94 |
Proposition technique B
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Total | ||||
---|---|---|---|---|---|---|---|---|
Division | B | B | B | |||||
2010-2011 | Liverpool | PL | - | - | 0 | |||
2011-2012 | Arsenal FC | PL | - | - | 0 | |||
2012-2013 | PL | - | - | 0 | ||||
Sous-total | 6 | 2 | 8 | |||||
2017-2018 | AA | Ligue 2 | - | - | 0 | |||
2018-2019 | BB | Ligue 2 | - | - | 0 | |||
Total sur la carrière | 86 | 8 | 94 |
Présentation chargée et fusionnée (prop. A)
modifierSaison | Club | Championnat | Coupe(s) nationale(s) | Supercoupe | Compétition(s) continentale(s) |
Supercoupe UEFA | Coupe du monde des clubs | Total | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Division | B | B | B | C | B | B | B | B | ||||||||||||||||
2002-2003 | Sporting Portugal | Superliga | 25 | 3 | - | C1+C3 | 1+2 | - | - | 31 | ||||||||||||||
Sous-total | 3 | 2 | - | - | 0 | - | - | 5 | ||||||||||||||||
2003-2004 | Manchester United | PL | 29 | 6 | - | C1 | 5 | - | - | 40 | ||||||||||||||
2004-2005 | PL | 33 | 9 | - | C1 | 8 | - | - | 50 | |||||||||||||||
2005-2006 | PL | 33 | 6 | - | C1 | 8 | - | - | 47 | |||||||||||||||
2006-2007 | PL | 34 | 8 | - | C1 | 11 | - | - | 53 | |||||||||||||||
2007-2008 | PL | 34 | 3 | 1 | C1 | 11 | - | - | 49 | |||||||||||||||
2008-2009 | PL | 33 | 6 | - | C1 | 12 | - | 2 | 53 | |||||||||||||||
Sous-total | 84 | 17 | 0 | - | 16 | 0 | 1 | 118 | ||||||||||||||||
2009-2010 | Real Madrid CF | Liga | 29 | 0 | - | C1 | 6 | - | - | 35 | ||||||||||||||
2010-2011 | Real Madrid CF | Liga | 34 | 8 | - | C1 | 12 | - | - | 54 | ||||||||||||||
2011-2012 | Real Madrid CF | Liga | 16 | 1 | 2 | C1 | 4 | - | - | 23 | ||||||||||||||
Sous-total | 86 | 8 | 1 | - | 16 | 0 | 0 | 111 | ||||||||||||||||
Total sur la carrière | 173 | 27 | 1 | - | 32 | 0 | 1 | 234 |
Notes et références
- « Fiche de Critiano Ronaldo », sur footballdatabase.eu
- (en) « Fiche de Cristiano Ronaldo », sur national-football-teams.com
- (en) « Fiche de Cristiano Ronaldo », sur BDFutbol.com
Version du modèle de base
modifierSyntaxe 2020 et avant.
Saison | Club | Championnat | Coupe(s) nationale(s) | Total | ||||
---|---|---|---|---|---|---|---|---|
Division | M. | M. | M. | |||||
2011-2012 | Arsenal FC | PL | - | - | 0 | |||
2012-2013 | SM Caen | Ligue 2 | - | - | 0 |
Saison | Club | Championnat | Coupe(s) nationale(s) | Supercoupe | Compétition(s) continentale(s) |
Supercoupe UEFA | Coupe du monde des clubs | Total | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Division | M. | M. | M. | Comp. | M. | M. | M. | M. | ||||||||||||||||
2002-2003 | Sporting Portugal | Superliga | 25 | 3 | - | C1+C3 | 1+2 | - | - | 31 | ||||||||||||||
Sous-total | 3 | 2 | - | - | 0 | - | - | 5 | ||||||||||||||||
2003-2004 | Manchester United | PL | 29 | 6 | - | C1 | 5 | - | - | 40 | ||||||||||||||
2004-2005 | Manchester United | PL | 33 | 9 | - | C1 | 8 | - | - | 50 | ||||||||||||||
2005-2006 | Manchester United | PL | 33 | 6 | - | C1 | 8 | - | - | 47 | ||||||||||||||
2006-2007 | Manchester United | PL | 34 | 8 | - | C1 | 11 | - | - | 53 | ||||||||||||||
2007-2008 | Manchester United | PL | 34 | 3 | 1 | C1 | 11 | - | - | 49 | ||||||||||||||
2008-2009 | Manchester United | PL | 33 | 6 | - | C1 | 12 | - | 2 | 53 | ||||||||||||||
Sous-total | 84 | 17 | 0 | - | 16 | 0 | 1 | 118 | ||||||||||||||||
2009-2010 | Real Madrid CF | Liga | 29 | 0 | - | C1 | 6 | - | - | 35 | ||||||||||||||
2010-2011 | Real Madrid CF | Liga | 34 | 8 | - | C1 | 12 | - | - | 54 | ||||||||||||||
2011-2012 | Real Madrid CF | Liga | 16 | 1 | 2 | C1 | 4 | - | - | 23 | ||||||||||||||
Sous-total | 86 | 8 | 1 | - | 16 | 0 | 0 | 111 | ||||||||||||||||
Total sur la carrière | 173 | 27 | 1 | - | 32 | 0 | 1 | 234 |
Notes et références
- « Fiche de Critiano Ronaldo », sur footballdatabase.eu
- (en) « Fiche de Cristiano Ronaldo », sur national-football-teams.com
- (en) « Fiche de Cristiano Ronaldo », sur BDFutbol.com