Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
La boîte à rêves
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Service d'assistance
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
La boîte à rêves
La boîte à rêves
Validations
f00fc9b4
Valider
f00fc9b4
rédigé
il y a un mois
par
Jouski
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
fade
parent
e73babc5
Aucune branche associée trouvée
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline
#82407
réussi
il y a un mois
Stage: test
Stage: deploy
Modifications
3
Pipelines
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
index.html
+4
-9
4 ajouts, 9 suppressions
index.html
script.js
+50
-22
50 ajouts, 22 suppressions
script.js
style.css
+11
-0
11 ajouts, 0 suppression
style.css
avec
65 ajouts
et
31 suppressions
index.html
+
4
−
9
Voir le fichier @
f00fc9b4
...
@@ -61,11 +61,6 @@
...
@@ -61,11 +61,6 @@
<label
for=
"inputIdee"
>
idée
</label>
<label
for=
"inputIdee"
>
idée
</label>
</span>
</span>
<span
class=
"label"
>
<input
type=
"checkbox"
id=
"inputBug"
value=
"bug"
oninput=
"majLabelsActifs()"
>
<label
for=
"inputBug"
>
bug
</label>
</span>
</div>
</div>
<div
id=
"options"
>
<div
id=
"options"
>
...
@@ -81,10 +76,10 @@
...
@@ -81,10 +76,10 @@
<table
id=
"issuesTable"
>
<table
id=
"issuesTable"
>
<thead>
<thead>
<tr>
<tr>
<th
onclick=
"trierTableau('titre'
,this
)"
>
Sujet
</th>
<th
id=
'titre'
onclick=
"trierTableau('titre')"
>
Sujet
</th>
<th
onclick=
"trierTableau('votes'
,this
)"
>
Votes
</th>
<th
id=
'votes'
onclick=
"trierTableau('votes')"
>
Votes
</th>
<th
onclick=
"trierTableau('auteur'
,this
)"
>
Ouvert par
</th>
<th
id=
'auteur'
onclick=
"trierTableau('auteur')"
>
Ouvert par
</th>
<th
onclick=
"trierTableau('date'
,this
)"
>
Mis à jour
</th>
<th
id=
'date'
onclick=
"trierTableau('date')"
>
Mis à jour
</th>
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
script.js
+
50
−
22
Voir le fichier @
f00fc9b4
...
@@ -12,6 +12,11 @@ const prefixeAppli = 'laboiteareves';
...
@@ -12,6 +12,11 @@ const prefixeAppli = 'laboiteareves';
const
inputDescriptions
=
document
.
getElementById
(
"
inputDescriptions
"
);
const
inputDescriptions
=
document
.
getElementById
(
"
inputDescriptions
"
);
const
tableBody
=
document
.
querySelector
(
"
#issuesTable tbody
"
);
const
tableBody
=
document
.
querySelector
(
"
#issuesTable tbody
"
);
const
etatTri
=
{
cle
:
null
,
// La clé actuellement triée
croissant
:
true
// Par défaut, tri croissant
};
// Labels
// Labels
const
typesLabels
=
[
const
typesLabels
=
[
...
@@ -57,7 +62,7 @@ const typesLabels = [
...
@@ -57,7 +62,7 @@ const typesLabels = [
}
}
];
];
let
labelsActifs
=
[
'
help
'
,
'
idée
'
,
'
bug
'
];
let
labelsActifs
=
[
'
help
'
,
'
idée
'
];
const
tousLesSpanLabels
=
document
.
querySelectorAll
(
'
#choixLabels span
'
);
const
tousLesSpanLabels
=
document
.
querySelectorAll
(
'
#choixLabels span
'
);
//Lancement de l'appli
//Lancement de l'appli
...
@@ -66,6 +71,7 @@ const tousLesSpanLabels = document.querySelectorAll('#choixLabels span');
...
@@ -66,6 +71,7 @@ const tousLesSpanLabels = document.querySelectorAll('#choixLabels span');
preparerlesInputLabel
();
preparerlesInputLabel
();
fetchIssues
();
fetchIssues
();
toggleDescriptions
();
toggleDescriptions
();
trierTableau
(
etatTri
.
cle
);
}
}
lancementAppli
();
lancementAppli
();
...
@@ -78,6 +84,13 @@ async function verifierLocalStorage() {
...
@@ -78,6 +84,13 @@ async function verifierLocalStorage() {
valeurARecuperer
=
localStorage
.
getItem
(
prefixeAppli
+
'
-
'
+
'
descriptions
'
);
valeurARecuperer
=
localStorage
.
getItem
(
prefixeAppli
+
'
-
'
+
'
descriptions
'
);
inputDescriptions
.
checked
=
valeurARecuperer
===
'
true
'
;
inputDescriptions
.
checked
=
valeurARecuperer
===
'
true
'
;
valeurARecuperer
=
localStorage
.
getItem
(
prefixeAppli
+
'
-
'
+
'
trierPar
'
);
etatTri
.
cle
=
valeurARecuperer
||
'
date
'
;
valeurARecuperer
=
localStorage
.
getItem
(
prefixeAppli
+
'
-
'
+
'
triCroissant
'
);
etatTri
.
croissant
=
valeurARecuperer
!=
'
false
'
;
}
}
...
@@ -112,20 +125,21 @@ async function fetchIssues() {
...
@@ -112,20 +125,21 @@ async function fetchIssues() {
}
}
let
issues
=
await
response
.
json
();
let
issues
=
await
response
.
json
();
// Filtrer les tickets fermés, et ranger les ouverts par ordre chronologique inversé
issues
=
issues
issues
=
issues
.
filter
(
issue
=>
issue
.
state
!==
'
closed
'
)
// Suppression des issues fermées
.
filter
(
issue
=>
issue
.
state
!==
'
closed
'
)
// Suppression des issues fermées
.
sort
((
a
,
b
)
=>
{
.
filter
(
issue
=>
!
issue
.
labels
.
some
(
label
=>
label
.
toLowerCase
()
===
'
bug
'
))
// Suppression des issues avec label "bug"
// Priorité aux issues avec 'épinglé' dans leur label
.
sort
((
a
,
b
)
=>
{
const
aPinned
=
a
.
labels
.
some
(
label
=>
label
.
toLowerCase
().
includes
(
'
épinglé
'
));
// Priorité aux issues avec 'épinglé' dans leur label
const
bPinned
=
b
.
labels
.
some
(
label
=>
label
.
toLowerCase
().
includes
(
'
épinglé
'
));
const
aPinned
=
a
.
labels
.
some
(
label
=>
label
.
toLowerCase
().
includes
(
'
épinglé
'
));
const
bPinned
=
b
.
labels
.
some
(
label
=>
label
.
toLowerCase
().
includes
(
'
épinglé
'
));
if
(
aPinned
&&
!
bPinned
)
return
-
1
;
// 'a' doit être avant 'b'
if
(
!
aPinned
&&
bPinned
)
return
1
;
// 'b' doit être avant 'a'
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
);
// Sinon, tri par dernière réponse
return
new
Date
(
b
.
updated_at
)
-
new
Date
(
a
.
updated_at
);
});
});
...
@@ -146,9 +160,19 @@ function displayIssues(issues) {
...
@@ -146,9 +160,19 @@ function displayIssues(issues) {
issues
.
forEach
(
issue
=>
{
issues
.
forEach
(
issue
=>
{
let
description
=
issue
.
description
;
let
description
=
issue
.
description
;
// Limiter à 150 caractères la description
// Limiter à 200 caractères la description
if
(
description
.
length
>
150
)
{
if
(
description
.
length
>
200
)
{
description
=
`
${
description
.
slice
(
0
,
150
)}
...`
;
description
=
`
${
description
.
slice
(
0
,
200
)}
...`
;
// Découper les 20 derniers caractères et construire la chaîne avec styles
if
(
description
.
length
>
50
)
{
const
mainText
=
description
.
slice
(
0
,
-
50
);
// Texte principal sans les 20 derniers
const
fadingText
=
description
.
slice
(
-
50
);
// Les 20 derniers caractères
description
=
`
<span class="text-main">
${
mainText
}
</span>
<span class="text-fade">
${
fadingText
}
</span>
`
;
}
}
}
// Récupération du label
// Récupération du label
...
@@ -285,16 +309,16 @@ function filtreTickets() {
...
@@ -285,16 +309,16 @@ function filtreTickets() {
}
}
const
etatTri
=
{
cle
:
null
,
// La clé actuellement triée
croissant
:
true
// Par défaut, tri croissant
};
function
trierTableau
(
cle
,
entete
)
{
function
trierTableau
(
cle
)
{
console
.
log
(
'
Tri par
'
,
cle
);
console
.
log
(
'
Tri par
'
,
cle
);
let
entete
=
document
.
getElementById
(
cle
);
const
entetes
=
document
.
querySelectorAll
(
'
#issuesTable th
'
);
const
entetes
=
document
.
querySelectorAll
(
'
#issuesTable th
'
);
entetes
.
forEach
(
enteteCourante
=>
{
entetes
.
forEach
(
enteteCourante
=>
{
enteteCourante
.
classList
.
remove
(
'
actif
'
);
enteteCourante
.
classList
.
remove
(
'
actif
'
);
});
});
entete
.
classList
.
add
(
'
actif
'
);
entete
.
classList
.
add
(
'
actif
'
);
...
@@ -313,6 +337,10 @@ function trierTableau(cle,entete) {
...
@@ -313,6 +337,10 @@ function trierTableau(cle,entete) {
etatTri
.
croissant
=
true
;
etatTri
.
croissant
=
true
;
}
}
localStorage
.
setItem
(
prefixeAppli
+
'
-
'
+
'
trierPar
'
,
etatTri
.
cle
);
localStorage
.
setItem
(
prefixeAppli
+
'
-
'
+
'
triCroissant
'
,
etatTri
.
croissant
);
// Trier les lignes en fonction du label 'épinglé' et des valeurs
// Trier les lignes en fonction du label 'épinglé' et des valeurs
lignes
.
sort
((
a
,
b
)
=>
{
lignes
.
sort
((
a
,
b
)
=>
{
// Vérifier si l'un des éléments est "épinglé"
// Vérifier si l'un des éléments est "épinglé"
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
style.css
+
11
−
0
Voir le fichier @
f00fc9b4
...
@@ -200,6 +200,17 @@ thead>tr, thead>tr:hover {
...
@@ -200,6 +200,17 @@ thead>tr, thead>tr:hover {
background-color
:
transparent
;
background-color
:
transparent
;
}
}
.description
{
font-size
:
0.8em
;
}
.text-fade
{
display
:
inline
;
background
:
linear-gradient
(
to
left
,
rgba
(
0
,
0
,
0
,
0
),
rgba
(
0
,
0
,
0
,
1
));
-webkit-background-clip
:
text
;
-webkit-text-fill-color
:
transparent
;
}
.nodescriptions
.description
{
.nodescriptions
.description
{
display
:
none
;
display
:
none
;
}
}
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter