Supprimer plusieurs tickets d'un coup sur GitLab
But
Avoir des cases à cocher pour sélectionner les tickets que l'on souhaite supprimer.
À ce jour il n'est pas possible de les supprimer en série avec le Bulk edit
.
Script
Entrer dans la console des outils de développement le script suivant :
{
const deleteIssue = async (projectId, issueId) => {
fetch(
`https://<GITLAB_URL>/api/v4/projects/${projectId}/issues/${issueId}`,
{
method: "DELETE",
headers: {
"PRIVATE-TOKEN": "<PRIVATE_TOKEN>",
},
}
);
};
const issuesLi = Array.from(document.querySelectorAll("ul.issues-list > li"));
const issuesNb = Array.from(
document.getElementsByClassName("issuable-reference")
).map((el) => parseInt(el.innerText.trim().slice(1)));
const projectId = document.body.dataset.projectId;
console.log("Project ID:", projectId);
issuesLi.forEach((li, id) => {
const checkbox = document.createElement("input");
checkbox.type = "checkbox";
checkbox.className = "delete";
checkbox.style.marginRight = "1em";
checkbox.value = issuesNb[id];
li.insertBefore(checkbox, li.firstChild);
});
const deleteButton = document.createElement("button");
deleteButton.style.position = "fixed";
deleteButton.style.margin = "20px";
deleteButton.style.bottom = "20px";
deleteButton.style.zIndex = "1000";
deleteButton.style.backgroundColor = "darkred";
deleteButton.style.color = "wheat";
deleteButton.style.fontSize = "1.5em";
deleteButton.style.fontWeight = "bold";
deleteButton.style.borderRadius = "10px";
deleteButton.style.transition = "all 0.4s 0.1s ease-in";
deleteButton.onmouseover = function () {
this.style.boxShadow = "black -3px 2px 6px";
this.style.transform = "translate(3px, -2px)";
};
deleteButton.onmouseleave = function () {
this.style.boxShadow = "unset";
this.style.transform = "translate(-3px, 2px)";
};
deleteButton.innerHTML = "Supprimer les tickets";
document.body.insertBefore(deleteButton, document.body.firstChild);
const deleteFunction = () => {
const selectedCheckboxes = document.querySelectorAll(
"input:checked.delete"
);
selectedCheckboxes.forEach((el) => deleteIssue(projectId, el.value));
};
deleteButton.addEventListener("click", deleteFunction);
}
TODO
Ajouter le rechargement automatique à la fin de la suppression…
Adapter les valeurs :
-
<GITLAB_URL>
, l'URL de l'instance GitLab. -
<PRIVATE_TOKEN>
, la clé privée permettant les actions par l'API. Il faut être administrateur ou propriétaire du projet.
Utilisation
- Lancer le script avec les touches ctrl+⏎ (ou ⌘+⏎).
- Cocher les cases des tickets que l'on souhaite supprimer.
- Cliquer sur le bouton
Supprimer les tickets
.
Attention : Il n'y a pas de confirmation avant la suppression.
Il est possible d'en faire un bookmarklet en supprimant tous les retours à la ligne, ajouter javascript:
au départ puis coller tout ça dans un lien de marque-page du navigateur.
Pas de commentaires