Commit 946fa4f6 authored by El-gitano's avatar El-gitano

Ajout d'une première partie pour la gestion des matchss

Correction d'une partie du code + ajout de la documentation pour les filtres et les contrôleurs
parent e89fffde
Pas de message "Tournament in progress" pour : DELETE /player
Message d'erreur en cas de mauvaise extension
Erreur doc GET /supermatchs (requête) + W qui a changé poure autre chose (valable pour matchs également)
......@@ -2,15 +2,9 @@
Rajouter export CSV
=== JOUEURS & JOUEURS ÉQUIPES & ÉQUIPES ===
=== MATCH ===
Ajouter les photos des joueurs (dans les formulaires et via un bouton sur une ligne du tableau)
Modifier l'URL des joueurs une fois la photo mise à jour ou ajoutée
Dans JoueursEquipe, ajouter le joueur après le retour de l'API
=== MODALS ===
Restreindre la date du calendrier
Définir les actions de bouton et faire le lien avec le template
=== GENERAL ===
......@@ -21,24 +15,23 @@ Faire la page d'accueil
Documentation utilisateur
Manuel de reprise du code
Corriger la création de la documentation
=== CORRECTIONS ===
Changer le nom du fichier editjoueur.js et editerEquipe.js
Photo par défaut pour les joueurs et équipes
Penser à l'inter-changement de deux courts
=== AUTH ===
Remettre l'authentification quand nécessaire
=== Informer ===
Faire une animation plus jolie (réduction de height au fur et à mesure de la suppression)
=== TABLEAU ===
Simplifier le passage de paramètre
Faire la documentation
=== EQUIPES & TABLEAU ===
=== DESIGN ===
Simplifier le CSS
Régler le problème du tableau dans les onglets match
=== DOCUMENTATION ===
Classer les équipes par idTeam
Faire la documentation de la directive tableau
Changer les retours pour l'API de Object à Promise
'use strict';
/**
* @ngdoc directive
* @name appApp.directive:fileModel
* @description
* # fileModel
*/
angular.module('appApp')
.directive('fileModel', function () {
return {
template: '<div></div>',
restrict: 'E',
link: function postLink(scope, element, attrs) {
element.text('this is the fileModel directive');
}
};
});
......@@ -28,6 +28,7 @@
<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('/tirage')}"><a ng-href="#/tirage">Tirage</a></li>
<li ng-class="{ active: estActive('/matchs')}"><a ng-href="#/matchs">Matchs</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>
......@@ -83,9 +84,9 @@
<script src="scripts/controllers/joueursEquipe.js"></script>
<script src="scripts/controllers/equipes.js"></script>
<script src="scripts/controllers/joueurs.js"></script>
<script src="scripts/controllers/modal/ajoutJoueur.js"></script>
<script src="scripts/controllers/modal/ajoutEquipe.js"></script>
<script src="scripts/controllers/modal/ajoutJoueurEquipe.js"></script>
<script src="scripts/controllers/modal/ajouterJoueur.js"></script>
<script src="scripts/controllers/modal/ajouterEquipe.js"></script>
<script src="scripts/controllers/modal/ajouterJoueurEquipe.js"></script>
<script src="scripts/controllers/modal/editerEquipe.js"></script>
<script src="scripts/services/apicall.js"></script>
<script src="scripts/directives/chargement.js"></script>
......@@ -95,7 +96,7 @@
<script src="scripts/services/intercepteurhttpreponses.js"></script>
<script src="scripts/directives/tableau.js"></script>
<script src="scripts/controllers/modal/modalinstance.js"></script>
<script src="scripts/controllers/modal/editjoueur.js"></script>
<script src="scripts/controllers/modal/editerJoueur.js"></script>
<script src="scripts/services/valeurs.js"></script>
<script src="scripts/filters/assocfilter.js"></script>
<script src="scripts/controllers/header.js"></script>
......@@ -108,6 +109,9 @@
<script src="scripts/filters/preparetirage.js"></script>
<script src="scripts/directives/filemodel.js"></script>
<script src="scripts/controllers/modal/showphoto.js"></script>
<script src="scripts/filters/extension.js"></script>
<script src="scripts/controllers/matchs.js"></script>
<script src="scripts/directives/ongletmatch.js"></script>
<!-- endbuild -->
<!-- Ajouts persos -->
......
......@@ -8,15 +8,17 @@
*/
angular
.module('panelAdminApp', ['ngRoute', 'ngAnimate' , 'ui.bootstrap', 'ngDragDrop'])
.config(['$routeProvider', '$httpProvider', '$logProvider', 'apicallProvider', 'urlAPI', function ($routeProvider, $httpProvider, $logProvider, apicallProvider, urlAPI) {
.config(['$routeProvider', '$httpProvider', '$logProvider', 'apicallProvider', 'urlAPI', 'urlImages', function ($routeProvider, $httpProvider, $logProvider, apicallProvider, urlAPI, urlImages) {
$logProvider.debugEnabled(true);
apicallProvider.setUrl(urlAPI);
// Configuration apiCall
apicallProvider.setUrlApi(urlAPI);
apicallProvider.setUrlImages(urlImages);
// Vérification du code de retour de l'API pour la reconnexion auto. + modification de certaines entêtes
// Intercepteur de vérif. des codes de retour de l'API
$httpProvider.interceptors.push('intercepteurHttpReponses');
$httpProvider.defaults.headers.delete = {'Content-Type' : 'application/json'};
$routeProvider
.when('/accueil', {
......@@ -35,10 +37,6 @@ angular
templateUrl: 'views/joueurs.html',
controller: 'JoueursCtrl'
})
.when('/ajouterJoueur', {
templateUrl: 'views/ajouterJoueur.html',
controller: 'AjouterJoueurCtrl'
})
.when('/equipes/:idEquipe/joueurs', {
templateUrl: 'views/joueursEquipe.html',
controller: 'JoueursEquipeCtrl'
......@@ -47,14 +45,18 @@ angular
templateUrl: 'views/tirage.html',
controller: 'TirageCtrl'
})
// Redirection vers l'authentification en cas de page non-gérée
.when('/matchs', {
templateUrl: 'views/matchs.html',
controller: 'MatchsCtrl'
})
// Redirection vers l'accueil
.otherwise({
templateUrl: 'views/main.html',
controller: 'MainCtrl'
redirectTo: '/accueil'
});
}])
.run(function($rootScope, $location, infosConnexion) {
// Décommenter pour activer l'authentification
/*$rootScope.$on( "$routeChangeStart", function(event, next, current) {
// Pas authentifié
......
......@@ -8,12 +8,12 @@
*/
var app = angular.module('panelAdminApp');
app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall', 'informer', function ($scope, $location, $log, $modal, apicall, informer) {
app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall', 'informer', '$timeout', function ($scope, $location, $log, $modal, apicall, informer, $timeout){
$scope.methodeMaj = apicall.getEquipes;
$scope.infosEquipes = [
{
nomColonne:'Drapeau',
champs:'URL',
......@@ -149,4 +149,22 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
];
$scope.entrees = [];
$timeout(function(){
informer.info('Coucou');
}, 1000);
$timeout(function(){
informer.warning('Attention');
}, 3000);
$timeout(function(){
informer.success('Youpi');
}, 5000);
}]);
......@@ -82,6 +82,8 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
console.log(data);
informer.success('Joueur ajouté avec succès');
joueur.IdPlayer = data.playerId;
joueur.Url = data.url;
ajouterEntree(joueur);
},
function(){
......@@ -125,8 +127,9 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', 'informer'
dialogue.result.then(function(joueur){
apicall.setJoueur(joueur).then(function(){
apicall.setJoueur(joueur).then(function(urlPhoto){
joueur.Url = urlPhoto;
informer.success('Joueur modifié avec succès');
},
function(){
......
......@@ -81,13 +81,15 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
dialogue.result.then(function(joueur) {
apicall.addJoueur(joueur).success(function(donnees){
apicall.addJoueur(joueur).then(function(donnees){
informer.success('Joueur ajouté avec succès');
joueur.IdPlayer = donnees.playerId;
joueur.Url = donnees.url;
ajouterEntree(joueur);
}).error(function(){
}, function(){
informer.error('Impossible d\'ajouter le joueur');
});
......@@ -127,11 +129,12 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
dialogue.result.then(function (joueur) {
apicall.setJoueur(joueur).success(function(){
apicall.setJoueur(joueur).then(function(urlPhoto){
joueur.Url = urlPhoto;
informer.success('Joueur modifié avec succès');
}).error(function(){
}, function(){
informer.error('Impossible de modifier le joueur');
angular.copy(copieEntree, entree);
......
'use strict';
/**
* @ngdoc function
* @name panelAdminApp.controller:MatchsCtrl
* @description
* # MatchsCtrl
* Controller of the panelAdminApp
*/
angular.module('panelAdminApp')
.controller('MatchsCtrl', ['$scope', 'apicall', 'informer', function ($scope, apicall, informer) {
$scope.entreesTours = [
{
nom:'Quart de finale',
valeur:'1/4'
},
{
nom:'Demi-finale',
valeur:'1/2'
},
{
nom:'Finale',
valeur:'Final'
},
{
nom:'Courant',
valeur:'CURRENT'
}
];
$scope.choixTour = $scope.entreesTours[3];
$scope.changerTour = function(entree){
if(entree !== $scope.choixTour){
$scope.choixTour = entree;
chargerSuperMatchs($scope.choixTour.valeur);
}
};
var chargerSuperMatchs = function(choixTour){
$scope.chargement = true;
apicall.getSuperMatchs(choixTour).success(function(donnees){
$scope.superMatchs = donnees.supermatches;
$scope.chargement = false;
}).error(function(){
informer.error('Erreur dans la récupération des matchs');
$scope.chargement = false;
});
};
chargerSuperMatchs($scope.choixTour.valeur);
}]);
......@@ -24,6 +24,8 @@ app.controller('AjoutJoueurEquipeCtrl', ['$scope','$modalInstance','$log', '$fil
$scope.joueur.DateBirth = $filter('date')($scope.joueur.DateBirth, 'yyyy-MM-dd');
});
$scope.today = new Date();
$scope.ok = function () {
$modalInstance.close($scope.joueur);
......
......@@ -26,6 +26,8 @@ angular.module('panelAdminApp')
$log.error('Erreur lors de l\'appel à l\'API');
});
$scope.today = new Date();
$scope.ok = function () {
$modalInstance.close($scope.joueur);
......
......@@ -18,7 +18,7 @@ app.directive('chargement', function() {
return {
// Affichage du spinner selon l'état de la variable "chargement"
template: '<div><div ng-show="chargement" class="container-chargement"></div><div ng-hide="chargement" ng-transclude></div</div>',
template: '<div><div ng-if="chargement" class="container-chargement text-center">Chargement en cours</div><div ng-if="!chargement" ng-transclude></div</div>',
//On remplace le contenu original qu'on place dans un container temporaire
restrict: 'A',
......
'use strict';
/**
* @ngdoc directive
* @name panelAdminApp.directive:ongletMatch
* @description
* # ongletMatch
*/
angular.module('panelAdminApp')
.directive('ongletMatch', ['$q', 'apicall', 'informer', function($q, apicall, informer){
return {
templateUrl: 'views/directives/ongletmatch.html',
restrict: 'E',
scope:{
match:'='
},
replace:true,
link: function postLink($scope) {
var changerStatus = function(etatMatch){
var res = {};
if(etatMatch === 'SOON'){
res.message = 'À définir';
res.design = 'default';
}
else if(etatMatch === 'PROGRESS'){
res.message = 'En cours';
res.design = 'primary';
}
else if(etatMatch === 'FINISH'){
res.message = 'Terminé';
res.design = 'success';
}
else if(etatMatch === 'CANCEL'){
res.message = 'Annulé';
res.design = 'warning';
}
$scope.status = res;
};
var changerTitre = function(typeMatch){
var message;
if(typeMatch === 'SM'){
message = 'Simple homme';
}
else if(typeMatch === 'DM'){
message = 'Double homme';
}
else if(typeMatch === 'SW'){
message = 'Simple femme';
}
else if(typeMatch === 'DW'){
message = 'Double femme';
}
else if(typeMatch === 'DX'){
message = 'Double mixte';
}
$scope.titre = message;
};
$scope.matchDouble = function(){
return ($scope.match.category.substr(0, 1) === 'D');
};
var matchGenre = function(){
return $scope.match.category.substr(1, 1);
};
$scope.changerJoueur = function(equipe, numero, entree){
var cle = 'player' + equipe + numero;
$scope.match[cle] = entree.Name + ' ' + entree.FirstName;
$scope.match[cle+'Id'] = entree.IdPlayer;
};
$scope.changerCourt = function(numCourt){
$scope.match.court = numCourt;
};
/* Récupuration des infos du match et mise à jour via l'API */
var updateInfos = function(){
var idMatch = $scope.match.id;
$scope.chargement = true;
apicall.getMatch(idMatch).then(function(donnees){
donnees.id = idMatch;
$scope.match = donnees;
majMatch();
// Chargement des infos pour éditions/consultation
var promises = [
apicall.getCourtsDispo(),
apicall.getJoueursEquipe($scope.match.teamA, matchGenre()),
apicall.getJoueursEquipe($scope.match.teamB, matchGenre()),
apicall.getScore($scope.match.id)
];
$q.all(promises).then(function(donnees){
$scope.entreesCourt = donnees[0].data.courts;
$scope.listeJoueursA = donnees[1].data.players;
$scope.listeJoueursB = donnees[2].data.players;
$scope.match.score = donnees[3].data.sets;
for(var i = $scope.match.score.length; i < 5; i++){
$scope.match.score[i] = {
A:0,
B:0
};
}
$scope.chargement = false;
}, function(){
informer.error('Erreur dans le chargement du match');
});
}, function(){
informer.error('Impossible de récupérer les informations du match');
});
};
// Mise à jour complète de l'onglet
var majMatch = function(){
majHeader();
majBoutons($scope.match.status);
};
// Mise à jour de l'entête de l'onglet
var majHeader = function(){
changerStatus($scope.match.status);
changerTitre($scope.match.category);
};
// Mise à jour des boutons du corps de l'onglet
var majBoutons = function(etatMatch){
if(etatMatch === 'SOON'){
$scope.boutonA = {
texte:'Démarrer',
action:apicall.startMatch,
design:'success'
};
$scope.boutonB = {
texte:'Annuler',
action:apicall.cancelMatch,
design:'danger'
};
$scope.tailleColonne1 = 5;
$scope.tailleColonne2 = 4;
$scope.tailleColonne3 = 3;
}
else if(etatMatch === 'PROGRESS'){
$scope.boutonA = {
texte:'Abandon',
//action:,
design:'warning'
};
$scope.boutonB = {
texte:'',
//action:,
design:''
};
$scope.tailleColonne1 = 5;
$scope.tailleColonne2 = 4;
$scope.tailleColonne3 = 3;
}
else if(etatMatch === 'FINISH'){
$scope.tailleColonne1 = 6;
$scope.tailleColonne2 = 6;
}
else if(etatMatch === 'CANCEL'){
$scope.boutonA = {
texte:'',
//action:,
design:''
};
$scope.boutonB = {
texte:'',
//action:,
design:''
};
}
};
$scope.optionsCal = {
'show-weeks':false,
'starting-day':1
};
$scope.ouvert = false;
$scope.$watch('ouvert', function(){
if($scope.ouvert === true){
updateInfos();
}