Skip to content
Extraits de code Groupes Projets
Valider 2549e74d rédigé par Jouski's avatar Jouski
Parcourir les fichiers

intégration label done et suppression sujet épinglé

parent 3992e447
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #84611 réussi
......@@ -28,6 +28,7 @@
<p>Cet espace est dédié à la coopération au sein de la Forge des Communs Numériques Éducatifs.</p>
<p>▶️ <strong>J'ai une idée de ressource qui n'existe pas encore</strong>, je la décris pour qu'un-e collègue s'en saisisse et le développe.</p>
<p>▶️ <strong>Je développe une ressource, j'ai besoin de :</strong> scénarios, textes, illustrations, vidéos, rédaction de documentation ... je lance un appel à contributions. </p>
<p><a href="https://forge.apps.education.fr/laboiteareves/laboiteareves.forge.apps.education.fr/-/issues/19">À lire avant de poster votre premier message</a></p>
</div>
<div id="boutons">
......@@ -77,6 +78,7 @@
<thead>
<tr>
<th id='titre' onclick="trierTableau('titre')">Sujet</th>
<th id='termine' onclick="trierTableau('reponses')">Réalisé</th>
<th id='reponses' onclick="trierTableau('reponses')">Rép.</th>
<th id='votes' onclick="trierTableau('votes')">Votes</th>
<th id='auteur' onclick="trierTableau('auteur')">Ouvert par</th>
......
......@@ -116,24 +116,19 @@ async function fetchIssues() {
}
let issues = await response.json();
issues = issues
.filter(issue => issue.state !== 'closed') // Suppression des issues fermées
.filter(issue => !issue.labels.some(label => label.toLowerCase() === 'bug')) // Suppression des issues avec label "bug"
.sort((a, b) => {
// Priorité aux issues avec 'épinglé' dans leur label
const aPinned = a.labels.some(label => label.toLowerCase().includes('épinglé'));
const bPinned = b.labels.some(label => label.toLowerCase().includes('épinglé'));
console.log(issues.length,'tickets');
if (aPinned && !bPinned) return -1; // 'a' doit être avant 'b'
if (!aPinned && bPinned) return 1; // 'b' doit être avant 'a'
// Sinon, tri par dernière réponse
return new Date(b.updated_at) - new Date(a.updated_at);
});
issues.forEach (issue => {
console.log(issue.title);
})
issues = issues
.filter(issue => issue.state !== 'closed') // Suppression des issues fermées
.filter(issue => !issue.labels.some(label => label.toLowerCase() === 'bug')) // Suppression des issues avec label "bug"
.filter(issue => !issue.labels.some(label => label.toLowerCase() === 'épinglé')) // Suppression des issues avec label "épinglé"
.sort((a, b) => new Date(b.updated_at) - new Date(a.updated_at)); // Tri par dernière réponse
// Affichage des tickets
displayIssues(issues);
......@@ -146,12 +141,12 @@ async function fetchIssues() {
// Fonction pour afficher les tickets
function displayIssues(issues) {
console.log(issues.length,'tickets')
tableBody.innerHTML = ""; // Vider le tableau
issues.forEach(issue => {
console.log(issue.user_notes_count)
let description = issue.description;
// Limiter à 200 caractères la description
if (description.length > 200) {
......@@ -169,19 +164,29 @@ function displayIssues(issues) {
}
// Récupération du label
const label = issue.labels[0] || '';
const tableauLabels = issue.labels;
let labelType;
if (tableauLabels.includes('idée')) {
labelType = 'idée';
} else if (tableauLabels.includes('help')) {
labelType = 'help';
} else {
labelType = '';
}
if (label) {
if (labelType) {
// Trouver l'objet correspondant dans le tableau typesLabels
let type = typesLabels.find(item => item.nom === label);
let type = typesLabels.find(item => item.nom === labelType);
// Récupérer la couleur ou définir une valeur par défaut si non trouvée
let couleur = type ? type.couleur : 'yellow';
spanLabel = `<span class="label" style="background-color:${couleur}">${label}</span>`;
spanLabel = `<span class="label" style="background-color:${couleur}">${labelType}</span>`;
} else {
......@@ -189,16 +194,19 @@ function displayIssues(issues) {
}
console.log(`
------------ TICKET ------------
${issue.iid || 'Pas de numéro'}
${issue.title || 'Pas de titre'}
${issue.state || 'Statut indéfini'}
${label || 'Pas de label'}
${labelType || 'Pas de labelType'}
--------------------------------
`)
let date = new Date(issue.updated_at);
const avatar = issue.author.avatar_url ? `<img class="avatar" src="${issue.author.avatar_url}">` : "👤";
const done = issue.labels.includes('done !') ? '' : '';
// Création d'une ligne dans le tableau
const row = document.createElement("tr");
......@@ -209,17 +217,18 @@ function displayIssues(issues) {
<a class="bouton" href="${issue.web_url}" target="_blank">... la suite</a>
</div>
</td>
<td class="done">${done}</td>
<td class="nombre">${issue.user_notes_count} 🗨️</td>
<td class="nombre">${issue.upvotes} 👍</td>
<td class="auteur">${avatar} <a target="_blank" href="${issue.author.web_url}">${issue.author.name}</a></td>
<td>${formatDate(date)}</td>
`;
if (label) {
if (labelType) {
row.label = label;
row.labelType = labelType;
if (label!='épinglé' && !labelsActifs.includes(label)) {
if (labelType!='épinglé' && !labelsActifs.includes(labelType)) {
row.classList.add('hide');
}
}
......@@ -318,7 +327,7 @@ function filtreTickets() {
lignesDuTableau.forEach(ligne => {
// On vérifie si le label est dans le tableau des labels actifs
const estActif = labelsActifs.includes(ligne.label) || ligne.label === 'épinglé';
const estActif = labelsActifs.includes(ligne.labelType) || ligne.labelType === 'épinglé';
// On met à jour la classe hide selon
if (estActif) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter