Commit c0abef85 authored by El-gitano's avatar El-gitano

Ajout du tirage

Liaison entre les modifications panel admin et API effectuée (reste quelques test à effectuer)
Correction du problème de calendrier dans ajoutJoueurEquipe
Ajout d'appels à l'API pour le tirage
Amélioration du filtre d'association
Corrections dans l'intercepteur de requête/réponse HTTP (ajout du retour dans les callbacks des deffered)
Supression de la croix de fermeture pour les alertes
Ajout d'une animations pour l'affichagee des entrées du table (à la création des lignes)
parent ac7e5fbb
......@@ -2,34 +2,28 @@
Rajouter export CSV
=== Gestion des alertes ===
Passer les alertes en transparant au dessus du reste de l'affichage
Placer les alertes dans un container
Modifier les anciens appels aux alertes vers le service d'alerte
=== JOUEURS ÉQUIPE ===
=== TABLEAU ===
Faire les modifications pour les modals (comme pour joueurs.js)
Corriger la taille des filtres (quand on a qu'un seul filtre)
=== JOUEURS & JOUEURS ÉQUIPES & ÉQUIPES ===
Gérer les modifications du tableau après appel à l'API
Ajouter les photos des joueurs (dans les formulaires et via un bouton sur une ligne du tableau)
Dans les calendrier ne pas pouvoir utiliser des dates > à la date courante et inférieur à 1900
=== GENERAL ===
Ajouter les photos des joueurs (dans les formulaires et lors du focus d'une ligne du tableau)
Fonctionnalité de vérification du tournois avant lancement
Différence entre phase init. et phase competition
Faire la documentation
Faire des tests
Supprimer chargement-ligne
Faire la page d'accueil
Documentation utilisateur
Manuel de reprise du code
Finir triage
Trouver une manière + élégante de gérer les modifications de entrées du tableau
=== AUTH ===
Remettre l'authentification quand nécessaire
=== Tirage ===
Ordre important
balises <select>
......@@ -25,9 +25,9 @@
<div class="header">
<ul class="nav nav-pills pull-right">
<li ng-class="{ active: estActive('/accueil')}"><a ng-href="#/accueil">Accueil</a></li>
<li ng-class="{ active: estActive('/tournois')}"><a ng-href="#/tournois">Tournois</a></li>
<li ng-class="{ active: estActive('/joueurs')}"><a ng-href="#/joueurs">Joueurs</a></li>
<li ng-class="{ active: estActive('/equipes')}"><a ng-href="#/equipes">Équipes</a></li>
<li ng-class="{ active: estActive('/joueurs')}"><a ng-href="#/joueurs">Joueurs</a></li>
<li ng-class="{ active: estActive('/tournois')}"><a ng-href="#/tournois">Tournois</a></li>
<li ng-class="{ active: estActive('/statistiques')}"><a ng-href="#/statistiques">Statistiques</a></li>
</ul>
<img id="logo" src="images/logo.png" alt="logo"/><h3 class="text-muted">AceCream</h3>
......@@ -103,6 +103,10 @@
<script src="scripts/services/alertservice.js"></script>
<script src="scripts/services/informer.js"></script>
<script src="scripts/directives/afficheurinfos.js"></script>
<script src="scripts/controllers/tirage.js"></script>
<script src="scripts/filters/exclude.js"></script>
<script src="scripts/filters/applatirtirage.js"></script>
<script src="scripts/filters/exclure.js"></script>
<!-- endbuild -->
<!-- Ajouts persos -->
......
......@@ -43,6 +43,10 @@ angular
templateUrl: 'views/joueursEquipe.html',
controller: 'JoueursEquipeCtrl'
})
.when('/tournois', {
templateUrl: 'views/tirage.html',
controller: 'TirageCtrl'
})
// Redirection vers l'authentification en cas de page non-gérée
.otherwise({
templateUrl: 'views/main.html',
......
......@@ -26,11 +26,11 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
{
nomColonne:'Équipe',
nomTriage:'Équipe',
champs:'NameTeam',
champs:'CompleteName',
triable:false,
filtrable:true,
filtrable:false,
tailleColonne:2
},
}/*,
{
nomTriage:'Points',
nomColonne:'Points',
......@@ -38,7 +38,7 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
triable:true,
filtrable:false,
tailleColonne:1
}
}*/
];
$scope.fonctionAjout = function(){
......@@ -95,11 +95,16 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
});
dialogue.result.then(function(equipe) {
equipe.IdTeam = entree.IdTeam; // Rajout de l'identifiant de l'équipe modifiée
apicall.setEquipe(equipe).success(function(data){
informer.informer('success', 'Équipe modifiée avec succès');
/*$scope.chargerJoueurs();*/ //TODO
entree.CompleteName = equipe.completeName;
entree.NameTeam = equipe.iso;
entree.URL = equipe.url;
}).error(function(){
......@@ -121,6 +126,7 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
glyph:'glyphicon-th-list',
func: function(equipe){
$log.info(equipe);
$location.path('/equipes/'+equipe.NameTeam+'/joueurs');
}
},
......@@ -150,9 +156,9 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
dialogue.result.then(function(infosEquipe) {
apicall.delEquipe(infosEquipe).success(function(data){
apicall.delEquipe(infosEquipe.entree).success(function(data){
informer.informer('danger', 'Équipe réinitialisée avec succès');
informer.informer('success', 'Équipe réinitialisée avec succès');
//$scope.chargerEquipes();
}).error(function(){
......
......@@ -69,7 +69,6 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
$scope.fonctionAjout = function(){
informer.informer('danger', 'Test');
var dialogue = $modal.open({
templateUrl: 'views/modal/ajoutJoueur.html',
......@@ -80,9 +79,9 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
apicall.addJoueur(joueur).then(function(data){
$log.info('Joueur ajouté');
informer.informer('success', 'Joueur ajouté avec succès');
//$scope.chargerJoueurs(); // TODO Régler ce problème
joueur.IdPlayer = data.playerId;
ajouterEntree(joueur);
},
function(){
......@@ -128,9 +127,7 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
apicall.setJoueur(joueur).then(function(donnees){
informer.informer('danger', 'Joueur modifié avec succès');
/*$scope.chargerJoueurs();*/
informer.informer('success', 'Joueur modifié avec succès');
},
function(){
......@@ -171,13 +168,11 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
dialogue.result.then(function(donnees){
//$log.info('Suppression du joueur : ', donnees.entree);
apicall.delJoueur(donnees.entree).then(function(){
informer.informer('success', 'Joueur supprimé avec succès');
/*
$scope.chargerJoueurs();*/ // TODO
supprimerEntree(entree);
},
function(){
......@@ -192,4 +187,16 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
}
}
];
$scope.entrees = [];
var ajouterEntree = function(entree){
$scope.entrees.push(entree);
};
var supprimerEntree = function(entree){
$scope.entrees.slice($scope.entrees.indexOf(entree), 1);
}
}]);
......@@ -9,11 +9,12 @@
*/
var app = angular.module('panelAdminApp');
app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log', 'apicall', 'informer', function($scope, $routeParams, $modal, $log, apicall, informer) {
app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log', '$filter', 'apicall', 'informer', 'Pays', function($scope, $routeParams, $modal, $log, $filter, apicall, informer, Pays) {
$scope.methodeMaj = apicall.getJoueursEquipe;
$scope.paramsMaj = [$routeParams.idEquipe];
$scope.titreTableau = 'Tableau des joueurs de l\'équipe ' + $routeParams.idEquipe;
$scope.titreTableau = 'Tableau des joueurs de l\'équipe ' + $filter('filter')(Pays, {Iso:$routeParams.idEquipe})[0].NomPays;
$scope.infosJoueurs = [
......@@ -84,7 +85,8 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
apicall.addJoueur(joueur).success(function(donnees){
informer.informer('success', 'Joueur ajouté avec succès');
/*$scope.chargerJoueurs();*/ // TODO
joueur.IdPlayer = data.playerId;
ajouterEntree(joueur);
}).error(function(){
......@@ -129,7 +131,6 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
apicall.setJoueur(joueur).success(function(data){
informer.informer('success', 'Joueur modifié avec succès');
//$scope.chargerJoueurs();
}).error(function(){
......@@ -168,13 +169,12 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
}
});
dialogue.result.then(function () {
dialogue.result.then(function(donnees) {
$log.info('Suppression du joueur ID :', entree.IdPlayer);
apicall.delJoueur(entree.IdPlayer).success(function(data){
apicall.delJoueur(donnees.entree).success(function(data){
informer.informer('success', 'Joueur supprimé avec succès');
//$scope.chargerJoueurs(); // TODO
supprimerEntree(entree);
}).error(function(){
......@@ -188,4 +188,16 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
}
}
];
$scope.entrees = [];
var ajouterEntree = function(entree){
$scope.entrees.push(entree);
};
var supprimerEntree = function(entree){
$scope.entrees.slice($scope.entrees.indexOf(entree), 1);
}
}]);
......@@ -2,7 +2,7 @@
var app = angular.module('panelAdminApp');
app.controller('AjoutJoueurCtrl', ['$scope','$modalInstance', '$filter', '$log', 'apicall', function ($scope, $modalInstance, $filter, $log, apicall) {
app.controller('AjoutJoueurCtrl', ['$scope','$modalInstance', '$filter', '$log', 'apicall', 'informer', function ($scope, $modalInstance, $filter, $log, apicall, informer) {
$scope.joueur = {
......@@ -11,9 +11,7 @@ app.controller('AjoutJoueurCtrl', ['$scope','$modalInstance', '$filter', '$log',
$scope.$watch('joueur.DateBirth', function(){
$log.info('Date entrée ' + $scope.joueur.DateBirth);
$scope.joueur.DateBirth = $filter('date')($scope.joueur.DateBirth, 'yyyy-MM-dd');
$log.info('Date de naissance : ' + $scope.joueur.DateBirth);
});
apicall.getEquipes().success(function(data){
......@@ -22,12 +20,12 @@ app.controller('AjoutJoueurCtrl', ['$scope','$modalInstance', '$filter', '$log',
}).error(function(){
informer.informer('danger', 'Impossible de récupérer les équipes');
$log.error('Erreur lors de l\'appel à l\'API');
});
$scope.ok = function () {
console.log($scope.joueur);
$modalInstance.close($scope.joueur);
};
......
......@@ -8,7 +8,7 @@ app.controller('AjoutJoueurEquipeCtrl', ['$scope','$modalInstance','$log', '$fil
$scope.joueur = {
DateBirth : Date(),
DateBirth : new Date(),
Team: donnees.equipe
};
......@@ -19,8 +19,6 @@ app.controller('AjoutJoueurEquipeCtrl', ['$scope','$modalInstance','$log', '$fil
$scope.ok = function () {
// Modification de la date pour adéquation avec l'API
$scope.joueur.DateBirth = $filter('date')($scope.joueur.DateBirth, 'yyyy-MM-dd');
$modalInstance.close($scope.joueur);
};
......
......@@ -8,7 +8,7 @@ app.controller('EditerEquipeCtrl', ['$scope','$modalInstance', '$log', 'donnees'
$scope.ok = function () {
$modalInstance.close();
$modalInstance.close($scope.equipe);
};
$scope.cancel = function () {
......
'use strict';
/**
* @ngdoc function
* @name panelAdminApp.controller:TirageCtrl
* @description
* # TirageCtrl
* Controller of the panelAdminApp
*/
angular.module('panelAdminApp')
.controller('TirageCtrl', ['$scope', '$log', '$filter', 'apicall', 'informer', function ($scope, $log, $filter, apicall, informer) {
var copie = null;
var majOk = function(){
$log.info($scope.rencontres);
var cles = 0;
// Duplication ?
angular.forEach($scope.rencontres, function(valeur, cle){
var i = 0;
cles++;
angular.forEach($scope.rencontres, function(valeur2, cle2){
if(valeur === valeur2){
i++;
}
});
if(i>1){
informer.informer('warning', 'Vous avez des équipes présentes dans plus d\'une rencontre');
return false;
}
});
// Pas assez d'entrée
if(cles !== 8){
informer.informer('warning', 'Vous n\'avez pas entré toutes les rencontres');
return false;
}
return true;
};
$scope.majTirage = function(){
if(majOk()){
apicall.setTirage($scope.rencontres).success(function(){
informer.informer('success', 'Tirage mis à jour avec succès');
copie = angular.copy($scope.rencontres);
}).error(function(){
informer.informer('danger', 'Impossible de mettre à jour le tirage');
angular.copy(copie, $scope.rencontres);
});
}
};
$scope.getNombre = function(taille){
return new Array(taille);
};
apicall.getTirage().success(function(donnees){
$scope.rencontres = $filter('applatirTirage')(donnees.matches);
copie = angular.copy($scope.rencontres);
}).error(function(){
informer.informer('danger', 'Impossible de récupérer les tirages');
});
apicall.getEquipes().success(function(donnees){
$scope.listePays = donnees.teams;
}).error(function(){
informer.informer('danger', 'Impossible de récupérer la liste des pays');
});
}]);
......@@ -7,7 +7,7 @@
* # flagSelector
*/
angular.module('panelAdminApp')
.directive('flagSelector', ['$log', '$filter', 'Pays', function ($log, $filter, Pays) {
.directive('flagSelector', ['$log', '$filter', 'Pays', 'urlDrapeaux', function ($log, $filter, Pays, urlDrapeaux) {
return {
templateUrl: 'views/directives/flagSelector.html',
restrict: 'E',
......@@ -30,18 +30,19 @@ angular.module('panelAdminApp')
equipe.selected = true;
$scope.oldSelection = equipe;
$scope.elemSelection.NameTeam = equipe.NomPays;
$log.info(equipe);
$scope.elemSelection = {
completeName : equipe.NomPays,
iso:equipe.Iso,
url:urlDrapeaux + $filter('lowercase')(equipe.Iso) + '.png'
};
};
$scope.equipes = angular.copy(Pays);
$scope.equipes = angular.copy(Pays); // Prévention des modifications
$scope.oldSelection = null;
if($scope.elemSelection){
var temp = $filter('filter')($scope.equipes, {NomPays:$scope.elemSelection.NameTeam});
temp.selected = true;
$scope.oldSelection = temp;
}
}
};
}]
......
......@@ -16,12 +16,16 @@ angular.module('panelAdminApp')
editable:'=',
selectionnable:'=',
paginer:'=',
entrees:'=',
boutonsEdition:'=',
fctAjout:'&',
infos:'=',
attrEntrees:'@',
fctMaj:'&',
paramsMaj:'=',
titre:'@'
},
......@@ -115,7 +119,7 @@ angular.module('panelAdminApp')
}).error(function(){
informer.informer('danger', 'Impossible de récupérer le entrées du tableau');
informer.informer('danger', 'Impossible de récupérer les entrées du tableau');
$scope.entrees = [];
$scope.chargement = false;
......
'use strict';
/**
* @ngdoc filter
* @name panelAdminApp.filter:applatirTirage
* @function
* @description
* # applatirTirage
* Filter in the panelAdminApp.
*/
angular.module('panelAdminApp')
.filter('applatirTirage', function () {
return function (entree) {
var i = 0, res = {};
angular.forEach(entree, function(objet){
res['team'+((i*2)+1)] = objet.Team_A;
res['team'+((i*2)+2)] = objet.Team_B;
i+=1;
});
return res;
};
});
......@@ -9,18 +9,50 @@
* Filter in the panelAdminApp.
*/
angular.module('panelAdminApp')
.filter('assocFilter', function () {
.filter('assocFilter', ['$log', function($log) {
return function(objIn, association) {
return function(objIn, association, allAssoc) {
// Par défaut on associé toutes les propriétés d'un objet
allAssoc = !!allAssoc;
var res = {};
angular.forEach(association, function(valeur, cle){
if(allAssoc){
var clesAssos=[];
// Liste des clés à changer
for(var key in association){
clesAssos.push(key);
}
$log.info(clesAssos);
for(key in objIn){
// Doit changer
if(clesAssos.indexOf(key) !== -1){
res[association[key]] = objIn[key];
}
// Reste semblable à l'objet d'origine
else{
res[key] = objIn[key];
}
}
}
else{
angular.forEach(association, function(valeur, cle){
//console.log('Conversion de l\'attribut ' + cle + 'en ' + valeur);
res[valeur] = objIn[cle];
});
//console.log('Conversion de l\'attribut ' + cle + 'en ' + valeur);
res[valeur] = objIn[cle];
});
}
return res;
};
});
}]);
......@@ -52,24 +52,24 @@ angular.module('panelAdminApp').
'FirstName':'firstname',
'Sex':'sex',
'Team':'team'
});
}, false);
return $http.post(url+'/players', infosJoueur);
};
// Modification d'une équipe
this.setEquipe = function(object){
this.setEquipe = function(infosEquipe){
var data = JSON.stringify(object);
// return $http({
// method: 'POST',
// url: url+'/players',
// data : data
// });
var dataRequete = $filter('assocFilter')(infosEquipe, {
'completeName':'name'
}, true);
return $http.put(url + '/teams/'+infosEquipe.IdTeam, dataRequete);
};
// Modification d'une équipe