Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Raph El
Admin-Panel
Commits
0b3703bc
Commit
0b3703bc
authored
Mar 04, 2015
by
LucMerceron
Browse files
Options
Browse Files
Download
Plain Diff
Merge des deux versions
parents
16eb30b8
7d102130
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
785 additions
and
184 deletions
+785
-184
TODO
TODO
+2
-14
app/app/scripts/directives/tableau.js
app/app/scripts/directives/tableau.js
+18
-0
app/index.html
app/index.html
+2
-2
app/scripts/app.js
app/scripts/app.js
+3
-1
app/scripts/controllers/app/scripts/directives/tableau.js
app/scripts/controllers/app/scripts/directives/tableau.js
+18
-0
app/scripts/controllers/equipes.js
app/scripts/controllers/equipes.js
+43
-21
app/scripts/controllers/joueurs.js
app/scripts/controllers/joueurs.js
+59
-59
app/scripts/controllers/joueursEquipe.js
app/scripts/controllers/joueursEquipe.js
+59
-1
app/scripts/controllers/test/spec/directives/tableau.js
app/scripts/controllers/test/spec/directives/tableau.js
+20
-0
app/scripts/directives/focuson.js
app/scripts/directives/focuson.js
+26
-13
app/scripts/directives/tableau.js
app/scripts/directives/tableau.js
+246
-0
app/scripts/filters/joueurparid.js
app/scripts/filters/joueurparid.js
+0
-25
app/scripts/filters/joueurselectionnes.js
app/scripts/filters/joueurselectionnes.js
+0
-28
app/scripts/filters/slice.js
app/scripts/filters/slice.js
+1
-3
app/scripts/services/constantes.js
app/scripts/services/constantes.js
+1
-1
app/scripts/services/intercepteurhttpreponses.js
app/scripts/services/intercepteurhttpreponses.js
+32
-0
app/test/spec/directives/tableau.js
app/test/spec/directives/tableau.js
+20
-0
app/views/equipes.html
app/views/equipes.html
+5
-2
app/views/joueurs.html
app/views/joueurs.html
+3
-4
app/views/joueursEquipe.html
app/views/joueursEquipe.html
+1
-10
app/views/tableau.html
app/views/tableau.html
+169
-0
test/spec/directives/tableau.js
test/spec/directives/tableau.js
+20
-0
test/spec/filters/filtretableau.js
test/spec/filters/filtretableau.js
+19
-0
test/spec/services/intercepteurhttpreponses.js
test/spec/services/intercepteurhttpreponses.js
+18
-0
No files found.
TODO
View file @
0b3703bc
===
JOUEURS
===
===
TABLEAU
===
Corriger l'affichage des dates (côté API)
Mode éditions/ajout
Corriger erreur dans la pagination
Corriger l'erreur joueursTries
Remettre la fonctionnalité des filtres
Lors de la suppression des ligne ajouter une animation ?
Export des données pour réutilisation future ?
=== EQUIPES ===
Recherche au sein des tableaux
Trier les colonnes d'un tableau
Paginer un tableau
Passage en mode édition lors d'un clic
Rajouter glyph pour les alertes
Ajouter le chargement
=== GENERAL ===
Fonctionnalité de vérification du tournois avant lancement
Faire la documentation
Améliorer le code du controleur joueurEquipe
Rediriger sur l'authentification si la personne ne s'est pas authentifiée
Faire des tests sur apicall
Réorganiser le code par module
app/app/scripts/directives/tableau.js
0 → 100644
View file @
0b3703bc
'
use strict
'
;
/**
* @ngdoc directive
* @name appApp.directive:tableau
* @description
* # tableau
*/
angular
.
module
(
'
appApp
'
)
.
directive
(
'
tableau
'
,
function
()
{
return
{
template
:
'
<div></div>
'
,
restrict
:
'
E
'
,
link
:
function
postLink
(
scope
,
element
,
attrs
)
{
element
.
text
(
'
this is the tableau directive
'
);
}
};
});
app/index.html
View file @
0b3703bc
...
...
@@ -85,11 +85,11 @@
<script
src=
"scripts/services/apicall.js"
></script>
<script
src=
"scripts/directives/chargement.js"
></script>
<script
src=
"scripts/filters/slice.js"
></script>
<script
src=
"scripts/filters/joueurparid.js"
></script>
<script
src=
"scripts/services/constantes.js"
></script>
<script
src=
"scripts/directives/focuson.js"
></script>
<script
src=
"scripts/directives/chargementligne.js"
></script>
<script
src=
"scripts/filters/joueurselectionnes.js"
></script>
<script
src=
"scripts/services/intercepteurhttpreponses.js"
></script>
<script
src=
"scripts/directives/tableau.js"
></script>
<!-- endbuild -->
<!-- Ajouts persos -->
...
...
app/scripts/app.js
View file @
0b3703bc
...
...
@@ -10,6 +10,7 @@
// Use x-www-form-urlencoded Content-Type
$httpProvider
.
defaults
.
headers
.
post
[
'
Content-Type
'
]
=
'
application/x-www-form-urlencoded;charset=utf-8
'
;
$httpProvider
.
interceptors
.
push
(
'
intercepteurHttpReponses
'
);
/**
* The workhorse; converts an object to x-www-form-urlencoded serialization.
* @param {Object} obj
...
...
@@ -53,7 +54,7 @@
});
angular
.
module
(
'
panelAdminApp
'
,
[
'
ngRoute
'
,
'
ui.bootstrap
'
])
.
config
(
function
(
$routeProvider
)
{
.
config
(
[
'
$routeProvider
'
,
'
$httpProvider
'
,
function
(
$routeProvider
,
$httpProvider
)
{
$routeProvider
.
when
(
'
/
'
,
{
templateUrl
:
'
views/main.html
'
,
...
...
@@ -85,3 +86,4 @@ angular
controller
:
'
AuthentificationCtrl
'
});
});
}]);
app/scripts/controllers/app/scripts/directives/tableau.js
0 → 100644
View file @
0b3703bc
'
use strict
'
;
/**
* @ngdoc directive
* @name controllersApp.directive:tableau
* @description
* # tableau
*/
angular
.
module
(
'
controllersApp
'
)
.
directive
(
'
tableau
'
,
function
()
{
return
{
template
:
'
<div></div>
'
,
restrict
:
'
E
'
,
link
:
function
postLink
(
scope
,
element
,
attrs
)
{
element
.
text
(
'
this is the tableau directive
'
);
}
};
});
app/scripts/controllers/equipes.js
View file @
0b3703bc
...
...
@@ -17,12 +17,49 @@ app.config(function(apicallProvider, urlAPI){
app
.
controller
(
'
EquipesCtrl
'
,
[
'
$scope
'
,
'
$location
'
,
'
apicall
'
,
function
(
$scope
,
$location
,
apicall
)
{
//Gestion des erreurs
$scope
.
alertes
=
[];
$scope
.
fermerAlerte
=
function
(
index
){
$scope
.
alertes
.
splice
(
index
,
1
);
};
$scope
.
methodeMaj
=
apicall
.
getEquipes
;
$scope
.
infosEquipes
=
[
{
nomColonne
:
'
Drapeau
'
,
champs
:
'
URL
'
,
image
:
true
,
triable
:
false
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomColonne
:
'
Équipe
'
,
nomTriage
:
'
Équipe
'
,
champs
:
'
NameTeam
'
,
triable
:
false
,
filtrable
:
true
,
tailleColonne
:
2
},
{
nomTriage
:
'
Points
'
,
nomColonne
:
'
Points
'
,
champs
:
'
Points
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
1
}
];
$scope
.
boutonsEdition
=
[
{
nom
:
'
Joueurs
'
,
taille
:
1
,
type
:
'
btn-warning
'
,
glyph
:
'
glyphicon-th-list
'
,
fctAssoc
:
function
(
equipe
){
$location
.
path
(
'
/teams/
'
+
equipe
.
NameTeam
+
'
/players
'
);
}
}
];
//Récupération des infos equipes
var
chargerEquipes
=
function
(){
...
...
@@ -38,25 +75,10 @@ app.controller('EquipesCtrl', ['$scope', '$location', 'apicall', function ($scop
$scope
.
alertes
.
push
({
type
:
'
danger
'
,
msg
:
'
Impossible de récupérer la liste des equipes (cliquer pour essayer de recharger)
'
});
});
};
$scope
.
urlDrapeau
=
function
(
drapeau
){
var
image
=
drapeau
+
'
.jpg
'
;
return
'
/images/Drapeau/
'
+
image
;
};
$scope
.
supprimerLigne
=
function
(
index
){
$scope
.
equipes
.
splice
(
index
,
1
);
};
// Utiliser $location pour le changement
$scope
.
listeJoueurs
=
function
(
idEquipe
){
$location
.
path
(
'
/teams/
'
+
idEquipe
+
'
/players
'
);
};
//Traitements
chargerEquipes
();
}]);
app/scripts/controllers/joueurs.js
View file @
0b3703bc
...
...
@@ -9,69 +9,69 @@
*/
var
app
=
angular
.
module
(
'
panelAdminApp
'
);
//Configuration du service d'appel à l'API
//
Configuration du service d'appel à l'API
app
.
config
(
function
(
apicallProvider
,
urlAPI
){
apicallProvider
.
setUrl
(
urlAPI
);
apicallProvider
.
setUrl
(
urlAPI
);
});
app
.
controller
(
'
JoueursCtrl
'
,
[
'
$scope
'
,
'
$routeParams
'
,
'
$filter
'
,
'
$log
'
,
'
apicall
'
,
function
(
$scope
,
$routeParams
,
$filter
,
$log
,
apicall
)
{
// Gestion des alertes
$scope
.
alertes
=
[];
$scope
.
fermerAlerte
=
function
(
index
){
$scope
.
alertes
.
splice
(
index
,
1
);
};
//Gestion des éléments pour le triage
$scope
.
entreesTri
=
[
{
id
:
'
IdPlayer
'
,
nom
:
'
Id
'
},
{
id
:
'
Team
'
,
nom
:
'
Nationalité
'
},
{
id
:
'
Name
'
,
nom
:
'
Nom
'
},
{
id
:
'
FirstName
'
,
nom
:
'
Prénom
'
},
{
id
:
'
Sex
'
,
nom
:
'
Sexe
'
},
{
id
:
'
DateBirth
'
,
nom
:
'
Date de naissance
'
}
];
$scope
.
colonneTri
=
'
Name
'
;
$scope
.
inverserTri
=
false
;
$scope
.
entreeTriSelection
=
$scope
.
entreesTri
[
2
].
nom
;
$scope
.
trierPar
=
function
(
entree
){
$scope
.
colonneTri
=
entree
.
id
;
$scope
.
entreeTriSelection
=
entree
.
nom
;
};
//Gestion de la pagination
$scope
.
entreesPages
=
[
10
,
20
,
30
,
40
,
50
];
$scope
.
choixEntreesPages
=
$scope
.
entreesPages
[
0
];
$scope
.
pageCourante
=
1
;
$scope
.
changerEntreesPage
=
function
(
entree
){
$scope
.
choixEntreesPages
=
entree
;
};
$scope
.
premiereEntree
=
function
(){
return
(
$scope
.
pageCourante
-
1
)
*
$scope
.
choixEntreesPages
+
(
$scope
.
totalElements
!==
0
);
};
$scope
.
derniereEntree
=
function
(){
var
dern
=
$scope
.
pageCourante
*
$scope
.
choixEntreesPages
;
if
(
dern
<
$scope
.
totalElements
){
return
dern
;
}
else
{
return
dern
-
(
dern
-
$scope
.
totalElements
);
app
.
controller
(
'
JoueursCtrl
'
,
[
'
$scope
'
,
'
apicall
'
,
function
(
$scope
,
apicall
)
{
$scope
.
methodeMaj
=
apicall
.
getJoueurs
;
$scope
.
infosJoueurs
=
[
{
nomTriage
:
'
Id
'
,
nomColonne
:
'
#
'
,
champs
:
'
IdPlayer
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomTriage
:
'
Équipe
'
,
nomColonne
:
'
Équipe
'
,
champs
:
'
Team
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomTriage
:
'
Prénom
'
,
nomColonne
:
'
Prénom
'
,
champs
:
'
FirstName
'
,
triable
:
true
,
filtrable
:
true
,
tailleColonne
:
1
,
tailleFiltre
:
6
},
{
nomTriage
:
'
Nom
'
,
nomColonne
:
'
Nom
'
,
champs
:
'
Name
'
,
triable
:
true
,
filtrable
:
true
,
tailleColonne
:
2
,
tailleFiltre
:
6
},
{
nomTriage
:
'
Sexe
'
,
nomColonne
:
'
Sexe
'
,
champs
:
'
Sex
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomTriage
:
'
Date de naissance
'
,
nomColonne
:
'
Date de naissance
'
,
champs
:
'
DateBirth
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
2
}
];
};
//Gestion des filtres du tableau
...
...
app/scripts/controllers/joueursEquipe.js
View file @
0b3703bc
...
...
@@ -10,7 +10,7 @@
var
app
=
angular
.
module
(
'
panelAdminApp
'
);
// Configuration du service d'appel à l'API
app
.
config
(
function
(
$httpProvider
,
$logProvider
,
apicallProvider
,
urlAPI
){
app
.
config
(
function
(
$logProvider
,
apicallProvider
,
urlAPI
){
apicallProvider
.
setUrl
(
urlAPI
);
$logProvider
.
debugEnabled
(
true
);
...
...
@@ -255,4 +255,62 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$filter', '$log'
// Traitements pour le démarrage
$scope
.
chargement
=
true
;
$scope
.
chargerJoueurs
();
app
.
controller
(
'
JoueursEquipeCtrl
'
,
[
'
$scope
'
,
'
$routeParams
'
,
'
apicall
'
,
function
(
$scope
,
$routeParams
,
apicall
)
{
$scope
.
methodeMaj
=
apicall
.
getJoueursEquipe
;
$scope
.
paramsMaj
=
[
$routeParams
.
idEquipe
];
$scope
.
infosJoueurs
=
[
{
nomTriage
:
'
Id
'
,
nomColonne
:
'
#
'
,
champs
:
'
IdPlayer
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomTriage
:
'
Équipe
'
,
nomColonne
:
'
Équipe
'
,
champs
:
'
Team
'
,
triable
:
false
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomTriage
:
'
Prénom
'
,
nomColonne
:
'
Prénom
'
,
champs
:
'
FirstName
'
,
triable
:
true
,
filtrable
:
true
,
tailleColonne
:
1
,
tailleFiltre
:
6
},
{
nomTriage
:
'
Nom
'
,
nomColonne
:
'
Nom
'
,
champs
:
'
Name
'
,
triable
:
true
,
filtrable
:
true
,
tailleColonne
:
2
,
tailleFiltre
:
6
},
{
nomTriage
:
'
Sexe
'
,
nomColonne
:
'
Sexe
'
,
champs
:
'
Sex
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
1
},
{
nomTriage
:
'
Date de naissance
'
,
nomColonne
:
'
Date de naissance
'
,
champs
:
'
DateBirth
'
,
triable
:
true
,
filtrable
:
false
,
tailleColonne
:
2
}
];
}]);
app/scripts/controllers/test/spec/directives/tableau.js
0 → 100644
View file @
0b3703bc
'
use strict
'
;
describe
(
'
Directive: tableau
'
,
function
()
{
// load the directive's module
beforeEach
(
module
(
'
controllersApp
'
));
var
element
,
scope
;
beforeEach
(
inject
(
function
(
$rootScope
)
{
scope
=
$rootScope
.
$new
();
}));
it
(
'
should make hidden element visible
'
,
inject
(
function
(
$compile
)
{
element
=
angular
.
element
(
'
<tableau></tableau>
'
);
element
=
$compile
(
element
)(
scope
);
expect
(
element
.
text
()).
toBe
(
'
this is the tableau directive
'
);
}));
});
app/scripts/directives/focuson.js
View file @
0b3703bc
...
...
@@ -7,23 +7,36 @@
* # focusOn
*/
angular
.
module
(
'
panelAdminApp
'
)
.
directive
(
'
focusOn
'
,
function
(
$timeout
)
{
.
directive
(
'
focusOn
'
,
[
'
$timeout
'
,
function
(
$timeout
)
{
return
{
scope
:
{
trigger
:
'
=focusOn
'
},
link
:
function
(
scope
,
element
)
{
restrict
:
'
A
'
,
scope
:
{
trigger
:
'
=focusOn
'
// On surveille le trigger pour mettre l'autofocus en cas de besoin
scope
.
$watch
(
'
trigger
'
,
function
(
nouvelleValeur
,
ancienneValeur
)
{
},
link
:
function
(
$scope
,
element
,
attrs
)
{
if
(
nouvelleValeur
===
true
&&
nouvelleValeur
!==
ancienneValeur
)
{
// Si on a un ng-repeat, il faut alors spécifier un attribut position pour focuser seulement sur le premier élément
if
(
attrs
.
position
===
undefined
||
$scope
.
$eval
(
attrs
.
position
)
===
true
){
// On surveille le trigger pour mettre l'autofocus en cas de besoin
$scope
.
$watch
(
'
trigger
'
,
function
(
nouvelleValeur
,
ancienneValeur
)
{
if
(
nouvelleValeur
===
true
&&
nouvelleValeur
!==
ancienneValeur
)
{
$timeout
(
function
()
{
element
[
0
].
focus
();});
}
else
{
$timeout
(
function
()
{
element
[
0
].
focus
();});
}
else
{
$timeout
(
function
()
{
element
[
0
].
blur
();});
}
});
$timeout
(
function
()
{
element
[
0
].
blur
();});
}
});
}
}
};
});
}
]
);
app/scripts/directives/tableau.js
0 → 100644
View file @
0b3703bc
'
use strict
'
;
/**
* @ngdoc directive
* @name panelAdminApp.directive:tableau
* @description Directive définissant un tableau éditable à plusieurs entrées
* # tableau
*/
angular
.
module
(
'
panelAdminApp
'
)
.
directive
(
'
tableau
'
,
[
'
$log
'
,
'
$filter
'
,
function
(
$log
,
$filter
)
{
return
{
restrict
:
'
E
'
,
scope
:{
editable
:
'
=
'
,
boutonsEdition
:
'
=
'
,
infos
:
'
=
'
,
attrEntrees
:
'
@
'
,
fctMaj
:
'
&
'
,
paramsMaj
:
'
=
'
/*fctSuppr:'&',
lienEdit:'=',
lienAjout:'='
*/
},
templateUrl
:
'
views/tableau.html
'
,
link
:
function
(
$scope
,
element
,
attrs
)
{
/* Gestion des alertes */
$scope
.
alertes
=
[];
$scope
.
fermerAlerte
=
function
(
index
){
$log
.
debug
(
'
Supression d
\'
une alerte dans le tableau des alertes
'
);
$scope
.
alertes
.
splice
(
index
,
1
);
};
var
supprimerAlertes
=
function
(){
$scope
.
alertes
=
[];
};
var
ajouterAlerte
=
function
(
type
,
message
){
$log
.
debug
(
'
Ajout d
\'
une alerte dans le tableau des alertes
'
);
$scope
.
alertes
.
push
({
type
:
'
alert-
'
+
type
,
msg
:
message
});
};
/* Gestion du triage */
$scope
.
trierPar
=
function
(
entree
){
$scope
.
entreeTriSelection
=
entree
;
};
$scope
.
inverserTri
=
function
(){
$scope
.
sensTri
=
!
$scope
.
sensTri
;
};
$scope
.
sensTri
=
false
;
$scope
.
entreeTriSelection
=
$filter
(
'
filter
'
)(
$scope
.
infos
,
{
triable
:
true
})[
0
];
$scope
.
triable
=
function
(){
return
$filter
(
'
filter
'
)(
$scope
.
infos
,
{
triable
:
true
}).
length
>
0
;
};
$scope
.
selEntreesPage
=
function
(){
return
$filter
(
'
filter
'
)(
$filter
(
'
slice
'
)(
$filter
(
'
orderBy
'
)(
$scope
.
entrees
,
$scope
.
colonneTri
,
$scope
.
sensTri
),
$scope
.
premiereEntree
(
false
),
$scope
.
derniereEntree
(
false
)),
$scope
.
recherche
);
};
/* Gestion des filtres du tableau */
$scope
.
affichageFiltres
=
false
;
$scope
.
changerAffichageFiltres
=
function
(){
$scope
.
affichageFiltres
=
!
$scope
.
affichageFiltres
;
};
$scope
.
tailleFiltres
=
Math
.
ceil
((
$scope
.
infos
.
length
+
$scope
.
editable
*
2
)
/
$filter
(
'
filter
'
)(
$scope
.
infos
,
{
filtrable
:
true
}).
length
);
$scope
.
filtrable
=
function
(){
return
$filter
(
'
filter
'
)(
$scope
.
infos
,
{
filtrable
:
true
}).
length
>
0
;
};
/* Gestion des entrées */
$scope
.
entrees
=
[];
// TODO À apeller lors d'un changement de page
$scope
.
$watch
(
'
entrees
'
,
function
(){
var
total
=
$scope
.
entrees
.
length
;
var
nbSelTotal
=
$filter
(
'
filter
'
)(
$scope
.
entrees
,
{
selection
:
true
}).
length
;
var
nbSelPages
=
$filter
(
'
filter
'
)(
$scope
.
selEntreesPage
(),
{
selection
:
true
}).
length
;
$scope
.
totalElements
=
total
;
// TODO Corriger quand la page ne contient plus que quelques éléments (dernière)
if
(
nbSelPages
===
total
||
nbSelPages
===
$scope
.
choixEntreesPages
.
valeur
){
$scope
.
selectionGlobale
=
true
;
}
else
{
$scope
.
selectionGlobale
=
false
;
}
$scope
.
nbSelection
=
nbSelTotal
;
},
true
);
$scope
.
chargerEntrees
=
function
(){
$scope
.
chargement
=
true
;
supprimerAlertes
();
$scope
.
fctMaj
().
apply
(
$scope
.
fctMaj
,
$scope
.
paramsMaj
).
success
(
function
(
data
){
$scope
.
entrees
=
data
[
$scope
.
attrEntrees
];
// Ajout d'un booleen selection et edition pour chaque entree
angular
.
forEach
(
$scope
.
entrees
,
function
(
element
,
index
){
element
.
selection
=
false
;
element
.
chargement
=
false
;
});
$scope
.
chargement
=
false
;
// Placé ici car fonction asynchrone
}).
error
(
function
(){
ajouterAlerte
(
'
danger
'
,
'
Impossible de récupérer les données (cliquez sur actualiser pour essayer de recharger)
'
);
$scope
.
entrees
=
[];
$scope
.
chargement
=
false
;
});
};
// Supprime une entrée du tableau