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

Correction de bugs

parent d62d61bd
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)
=== GENERAL ===
Faire des tests
Faire la documentation des contrôleurs
=== CHECK ===
Retour Google Chrome
=== POINTS IMPORTANTS ===
Passage Prépa compet => passage 1/4 onglet match encore désactiver
Quand il reste un match en demi-finale qui se termine => Impossible de passer à l'étape suivante du tournoi'
Match en cours forcer score
Match déjà terminé rajouter vainqueur
......@@ -106,10 +106,10 @@ NG_DOCS={
"section": "api",
"id": "panelAdminApp.controller:JoueursCtrl",
"shortName": "JoueursCtrl",
"type": "function",
"type": "controller",
"moduleName": "panelAdminApp",
"shortDescription": "Controleur de la page de gestion des joueurs",
"keywords": "api controleur controller de des function gestion joueurs la paneladminapp"
"keywords": "api controleur controller de des gestion joueurs la paneladminapp"
},
{
"section": "api",
......@@ -151,10 +151,10 @@ NG_DOCS={
"section": "api",
"id": "panelAdminApp.controller:ModalSupprimerjoueurCtrl",
"shortName": "ModalSupprimerjoueurCtrl",
"type": "object",
"type": "controller",
"moduleName": "panelAdminApp",
"shortDescription": "ModalSupprimerjoueurCtrl",
"keywords": "administrationacecreamapp api controller modalsupprimerjoueurctrl object paneladminapp"
"keywords": "administrationacecreamapp api controller modalsupprimerjoueurctrl paneladminapp"
},
{
"section": "api",
......@@ -169,10 +169,10 @@ NG_DOCS={
"section": "api",
"id": "panelAdminApp.controller:TerminerMatchCtrl",
"shortName": "TerminerMatchCtrl",
"type": "function",
"type": "controller",
"moduleName": "panelAdminApp",
"shortDescription": "Modal servant à saisir les informations nécessaires pour terminer un match",
"keywords": "api controller function informations les match modal paneladminapp pour saisir servant terminer"
"keywords": "api controller informations les match modal paneladminapp pour saisir servant terminer"
},
{
"section": "api",
......@@ -389,6 +389,15 @@ NG_DOCS={
"moduleName": "panelAdminApp",
"shortDescription": "Répertorie les variables d'accès aux ressources de l'application",
"keywords": "acc api application aux de les paneladminapp ressources service variables"
},
{
"section": "api",
"id": "panelAdminApp.TournoiManager",
"shortName": "panelAdminApp.TournoiManager",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "Ce manager est chargé de gérer les informations concernant le tournoi",
"keywords": "api ce charg concernant de est informations le les manager method paneladminapp permet rafraichir service sur tournoi tournoimanager"
}
],
"apis": {
......
<h1><code ng:non-bindable="">TournoiManager</code>
<div><span class="hint">service in module <code ng:non-bindable="">panelAdminApp</code>
</span>
</div>
</h1>
<div><h2 id="description">Description</h2>
<div class="description"><div class="paneladminapp-tournoimanager-page"><p>Ce manager est chargé de gérer les informations concernant le tournoi</p>
</div></div>
<div class="member method"><h2 id="methods">Methods</h2>
<ul class="methods"><li><h3 id="methods_rafraichir">rafraichir()</h3>
<div class="rafraichir"><div class="rafraichir-page"><p>Permet de rafraichir les informations sur le tournoi</p>
</div></div>
</li>
</ul>
</div>
</div>
<h1><code ng:non-bindable="">JoueursCtrl</code>
<div><span class="hint">function in module <code ng:non-bindable="">panelAdminApp</code>
<div><span class="hint">controller in module <code ng:non-bindable="">panelAdminApp</code>
</span>
</div>
</h1>
<div><h2 id="description">Description</h2>
<div class="description"><div class="paneladminapp-controller-page paneladminapp-controller-joueursctrl-page"><p>Controleur de la page de gestion des joueurs</p>
</div></div>
<h2 id="usage">Usage</h2>
<div class="usage"><pre class="prettyprint linenums">JoueursCtrl();</pre>
</div>
</div>
<h1><code ng:non-bindable="">ModalSupprimerjoueurCtrl</code>
<div><span class="hint">object in module <code ng:non-bindable="">panelAdminApp</code>
<div><span class="hint">controller in module <code ng:non-bindable="">panelAdminApp</code>
</span>
</div>
</h1>
......
<h1><code ng:non-bindable="">TerminerMatchCtrl</code>
<div><span class="hint">function in module <code ng:non-bindable="">panelAdminApp</code>
<div><span class="hint">controller in module <code ng:non-bindable="">panelAdminApp</code>
</span>
</div>
</h1>
<div><h2 id="description">Description</h2>
<div class="description"><div class="paneladminapp-controller-page paneladminapp-controller-terminermatchctrl-page"><p>Modal servant à saisir les informations nécessaires pour terminer un match</p>
</div></div>
<h2 id="usage">Usage</h2>
<div class="usage"><pre class="prettyprint linenums">TerminerMatchCtrl();</pre>
</div>
</div>
......@@ -121,6 +121,7 @@
<script src="scripts/services/valeurs/chargementGlobal.js"></script>
<script src="scripts/services/managers/joueursEquipeManager.js"></script>
<script src="scripts/controllers/modal/supprimerJoueur.js"></script>
<script src="scripts/services/managers/tournoiManager.js"></script>
<!-- endbuild -->
</body>
</html>
......@@ -7,9 +7,7 @@
* Contrôleur du header de l'application (utilisé pour actualiser l'affichage de l'onglet actif)
*/
angular.module('panelAdminApp')
.controller('HeaderCtrl', ['$scope', '$location', 'apicall', 'informer', function ($scope, $location, apicall, informer){
var stadeTournoi;
.controller('HeaderCtrl', ['$scope', '$location', 'informer', 'TournoiManager', function ($scope, $location, informer, TournoiManager){
$scope.estActive = function (lienVue) {
......@@ -18,7 +16,7 @@ angular.module('panelAdminApp')
$scope.tournoiDemarre = function(){
return (stadeTournoi !== 'SETTING-UP');
return (TournoiManager.stage !== 'SETTING-UP');
};
$scope.lienMatch = function(){
......@@ -33,12 +31,5 @@ angular.module('panelAdminApp')
}
};
apicall.getTournoi().success(function(donnees){
stadeTournoi = donnees.tournament.Stage;
}).error(function(){
informer.error('Impossible de récupérer les informations du tournoi');
});
TournoiManager.rafraichir();
}]);
'use strict';
/**
* @ngdoc function
* @ngdoc controller
* @name panelAdminApp.controller:JoueursCtrl
* @description
* Controleur de la page de gestion des joueurs
......
......@@ -7,11 +7,11 @@
* Contrôleur de la page d'accueil
*/
angular.module('panelAdminApp')
.controller('MainCtrl', ['$scope', 'informer', 'apicall', '$filter', '$q', 'chargementGlobal', 'EquipesManager', 'JoueursManager', function($scope, informer, apicall, $filter, $q, chargementGlobal, EquipesManager, JoueursManager){
.controller('MainCtrl', ['$scope', 'informer', 'apicall', '$filter', '$q', 'chargementGlobal', 'EquipesManager', 'JoueursManager', 'TournoiManager', function($scope, informer, apicall, $filter, $q, chargementGlobal, EquipesManager, JoueursManager, TournoiManager){
var nbRencontresKo;
$scope.nbJoueurs = function(){return JoueursManager.nbEntrees;};
$scope.nbJoueurs = function(){return JoueursManager.entrees.length;};
$scope.equipesOk = function(){
......@@ -45,46 +45,34 @@ angular.module('panelAdminApp')
return nbRencontresKo === 0;
};
$scope.changerEtapeTournoi = function(){
var relation = {
'SETTING-UP':'1/4',
'1/4':'1/2',
'1/2':'Final'
};
apicall.nextStepTournoi(relation[$scope.stadeTournoi]).success(function(){
$scope.stadeTournoi = relation[$scope.stadeTournoi];
informer.success('Le tournoi est bien passé à l\'étape suivante');
}).error(function(){
informer.error('Impossible de passer le tournoi à l\'étape suivante');
});
};
$scope.changerEtapeTournoi = TournoiManager.etapeSuivante;
$scope.changerEtapeOk = function(){
return ($scope.equipesOk() && $scope.joueursEquipesOk() && $scope.tirageOk());
};
var promises = [apicall.getTirage(), apicall.getTournoi()];
EquipesManager.rafraichir();
JoueursManager.rafraichir();
$scope.rafraichir = function(){
var promises = [apicall.getTirage()];
TournoiManager.rafraichir();
EquipesManager.rafraichir();
JoueursManager.rafraichir();
chargementGlobal.active = true;
chargementGlobal.active = true;
$q.all(promises).then(function(donnees){
$q.all(promises).then(function(donnees){
nbRencontresKo = ($filter('filter')(donnees[0].data.matches, {Team_A:null})).length;
$scope.stadeTournoi = donnees[1].data.tournament.Stage;
chargementGlobal.active = false;
nbRencontresKo = ($filter('filter')(donnees[0].data.matches, {Team_A:null})).length;
$scope.stadeTournoi = TournoiManager.stage;
chargementGlobal.active = false;
}, function(){
}, function(){
informer.error('Impossible de charger les informations');
});
};
informer.error('Impossible de charger les informations');
});
$scope.rafraichir();
}]);
'use strict';
/**
* @ngdoc object
* @ngdoc controller
* @name panelAdminApp.controller:ModalSupprimerjoueurCtrl
* @description
* # ModalSupprimerjoueurCtrl
......
'use strict';
/**
* @ngdoc function
* @ngdoc controller
* @name panelAdminApp.controller:TerminerMatchCtrl
* @description
* Modal servant à saisir les informations nécessaires pour terminer un match
......
......@@ -36,6 +36,9 @@ angular.module('panelAdminApp')
$scope.actionMaj = function(){
console.log($scope.match);
console.log(copieMatch);
var promises = [];
var idMatch = $scope.match.id;
......@@ -64,7 +67,7 @@ angular.module('panelAdminApp')
promises.push(apicall.changeMatchCourt($scope.match.id, $scope.match.court));
}
// Match terminé => Màj du score & dateFin
// Match terminé => Màj du score & dateFin & winner
if(matchTermine()){
var changed = false;
......@@ -294,7 +297,7 @@ angular.module('panelAdminApp')
donnees.id = idMatch;
$scope.match = donnees;
angular.copy($scope.match, copieMatch);
copieMatch = angular.copy($scope.match);
// Chargement des infos pour éditions/consultation
var promises = [];
......@@ -312,8 +315,10 @@ angular.module('panelAdminApp')
$scope.entreesCourt.push($scope.match.court);
}
$scope.listeJoueursA = donnees[1].data.players;
$scope.listeJoueursB = donnees[2].data.players;
$scope.listeJoueursA1 = angular.copy(donnees[1].data.players);
$scope.listeJoueursA2 = angular.copy(donnees[1].data.players);
$scope.listeJoueursB1 = angular.copy(donnees[2].data.players);
$scope.listeJoueursB2 = angular.copy(donnees[2].data.players);
// On récupère le score et on complète avec des -1 pour les jeux non-joués
$scope.match.score = donnees[3].data.sets;
......@@ -325,6 +330,28 @@ angular.module('panelAdminApp')
};
}
/* Màj pour le vainqueur */
$scope.entreesEquipes = [
{
nom:$scope.match.NameTeam_A,
valeur:'A'
},
{
nom:$scope.match.NameTeam_B,
valeur:'B'
}
];
if($scope.match.winner === 'A'){
$scope.choixGagnant = $scope.entreesEquipes[0].nom;
}
else{
$scope.choixGagnant = $scope.entreesEquipes[1].nom;
}
chargementGlobal.active = false;
}, function(){
......@@ -334,9 +361,15 @@ angular.module('panelAdminApp')
}, function(){
informer.error('Impossible de récupérer les informations du match');
informer.error('Impossible de récupérer les informations du match');
});
};
$scope.changerGagnant = function(entree){
$scope.choixGagnant = entree.nom;
$scope.match.winner = entree.valeur;
};
$scope.ouvert = false;
$scope.$watch('ouvert', function(){
......
'use strict';
/**
* @ngdoc service
* @name panelAdminApp.TournoiManager
* @description
* Ce manager est chargé de gérer les informations concernant le tournoi
*/
angular.module('panelAdminApp')
.service('TournoiManager', ['apicall', 'informer', '$timeout', function(apicall, informer, $timeout){
var ret = {
stage : 'SETTING-UP',
/**
* @ngdoc method
* @name rafraichir
* @methodOf panelAdminApp.TournoiManager
* @description
* Permet de rafraichir les informations sur le tournoi
*/
rafraichir : function(){
apicall.getTournoi().success(function(donnees){
ret.stage = donnees.tournament.Stage;
}).error(function(){
informer.error('Erreur lors de la récupération des informations du tournoi');
});
},
etapeSuivante : function(){
var relation = {
'SETTING-UP':'1/4',
'1/4':'1/2',
'1/2':'Final'
};
apicall.nextStepTournoi(relation[ret.stage]).success(function(){
informer.success('Le tournoi est bien passé à l\'étape suivante');
ret.stage = relation[ret.stage];
}).error(function(){
informer.error('Impossible de passer le tournoi à l\'étape suivante');
});
}
};
return ret;
}]);
......@@ -57,14 +57,14 @@
<div class="col-md-12">
<div class="form-group"ng-class="{'has-error': formulaireMatch.joueurA1.$invalid}">
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursA" ng-model="match.playerA1Id" class="form-control" name="joueurA1" required></select>
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursA1" ng-model="match.playerA1Id" class="form-control" name="joueurA1" required></select>
<div ng-messages="formulaireMatch.joueurA1.$error" role="alert">
<div ng-message="required" class="text-danger">Veuillez entrer un joueur</div>
</div>
</div>
<div class="form-group" ng-if="matchDouble()" ng-class="{'has-error': formulaireMatch.joueurA2.$invalid}">
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursA" ng-model="match.playerA2Id" class="form-control" name="joueurA2" required></select>
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursA2" ng-model="match.playerA2Id" class="form-control" name="joueurA2" required></select>
<div ng-messages="formulaireMatch.joueurA2.$error" role="alert">
<div ng-message="required" class="text-danger">Veuillez entrer un joueur</div>
</div>
......@@ -82,14 +82,14 @@
<div class="col-md-12">
<div class="form-group" ng-class="{'has-error': formulaireMatch.joueurB1.$invalid}">
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursB" ng-model="match.playerB1Id" class="form-control" name="joueurB1" required></select>
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursB1" ng-model="match.playerB1Id" class="form-control" name="joueurB1" required></select>
<div ng-messages="formulaireMatch.joueurB1.$error" role="alert">
<div ng-message="required" class="text-danger">Veuillez entrer un joueur</div>
</div>
</div>
<div class="form-group" ng-class="{'has-error': formulaireMatch.joueurB2.$invalid}" ng-if="matchDouble()">
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursB" ng-model="match.playerB2Id" class="form-control" name="joueurB2" required></select>
<select ng-options="entree.IdPlayer as nomJoueur(entree) for entree in listeJoueursB2" ng-model="match.playerB2Id" class="form-control" name="joueurB2" required></select>
<div ng-messages="formulaireMatch.joueurB2.$error" role="alert">
<div ng-message="required" class="text-danger">Veuillez entrer un joueur</div>
</div>
......@@ -144,7 +144,7 @@
</div>
</div>
</div>
<!-- Colonne date fin de match -->
<!-- Colonne date fin de match et vainqueur -->
<div ng-if="match.status === 'FINISH'" class="col-md-3">
<div class="row top-space">
<div class="col-md-12">
......@@ -167,6 +167,31 @@
</div>
</div>
</div>
<div class="row top-space">
<div class="col-md-12">
<div class="row">
<div class="col-md-12 text-center">
Vainqueur
</div>
</div>
<div class="row top-space">
<div class="col-md-12 text-center">
<div class="form-group">
<div class="btn-group" dropdown>
<button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle>
<span class="bouton-select-tour">{{choixGagnant}}</span><span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li ng-repeat="entree in entreesEquipes">
<a href="" ng-click="changerGagnant(entree)">{{entree.nom}}</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Boutons màj d'un match -->
......
......@@ -64,8 +64,12 @@
</div>
</div>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<button type="button" ng-click="changerEtapeTournoi()" ng-disabled="!changerEtapeOk()" class="btn btn-primary btn-lg btn-block">Passer à l'étape suivante de la compétition</button>
<div class="col-md-4 col-md-offset-4 text-center">
<div class="btn-group" role="group">
<button type="button" ng-click="changerEtapeTournoi()" ng-disabled="!changerEtapeOk()" class="btn btn-primary btn-lg">Passer à l'étape suivante de la compétition</button>
<button type="button" ng-click="rafraichir()" class="btn btn-default btn-lg">
<span class="glyphicon glyphicon-refresh"></span>
</button>
</div>
</div>
</div>
'use strict';
describe('Controller: AuthentificationCtrl', function () {
// load the controller's module
beforeEach(module('panelAdminApp'));
var AuthentificationCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
AuthentificationCtrl = $controller('AuthentificationCtrl', {
$scope: scope
});
}));
});
'use strict';
describe('Controller: EditjoueurctrlCtrl', function () {
// load the controller's module
beforeEach(module('panelAdminApp'));
var EditjoueurctrlCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
EditjoueurctrlCtrl = $controller('EditjoueurctrlCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function () {
expect(scope.awesomeThings.length).toBe(3);
});
});
'use strict';
describe('Controller: HeadercontrollerCtrl', function () {
// load the controller's module
beforeEach(module('panelAdminApp'));
var HeadercontrollerCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
HeadercontrollerCtrl = $controller('HeadercontrollerCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function () {
expect(scope.awesomeThings.length).toBe(3);
});
});
'use strict';
describe('Controller: JoueursEquipeCtrl', function () {