Commit 47c47bc3 authored by El-gitano's avatar El-gitano

Corrections pour la minification et peaufinage

parent 4708c77c
......@@ -7,13 +7,8 @@ Rajouter export CSV
Différence entre phase init. et phase competition => Remettre les onglets conditionnels
Faire des tests
Rechercher les TODO
Faire le bouton pour passer à l'étape suivante de la compétition
Supprimer les console.log
=== AUTH ===
Remettre l'authentification quand nécessaire
=== STYLE ===
Loader match
......
......@@ -3,6 +3,15 @@ NG_DOCS={
"api": "Documentation de l'interface administrateur"
},
"pages": [
{
"section": "api",
"id": "administrationAceCreamApp.controller:ModalSupprimerjoueurCtrl",
"shortName": "ModalSupprimerjoueurCtrl",
"type": "function",
"moduleName": "administrationAceCreamApp",
"shortDescription": "ModalSupprimerjoueurCtrl",
"keywords": "administrationacecreamapp api controller function modalsupprimerjoueurctrl"
},
{
"section": "api",
"id": "Application d'administration de la compétition",
......@@ -14,21 +23,21 @@ NG_DOCS={
},
{
"section": "api",
"id": "panelAdminApp.constantes",
"shortName": "panelAdminApp.constantes",
"id": "panelAdminApp.chargement",
"shortName": "panelAdminApp.chargement",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "Constantes de l'application",
"keywords": "api application constantes de paneladminapp service"
"shortDescription": "Permet de spécifier si un chargement est actif ou non (false)",
"keywords": "actif api chargement de est ou paneladminapp permet service si sp"
},
{
"section": "api",
"id": "panelAdminApp.controller:AjoutEquipeCtrl",
"shortName": "AjoutEquipeCtrl",
"type": "controller",
"id": "panelAdminApp.constantes",
"shortName": "panelAdminApp.constantes",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "Contrôleur la fenêtre modal servant à saisir les informations nécessaires à l'ajout d'une équipe",
"keywords": "ajout api contr controller fen informations la les modal paneladminapp saisir servant une"
"shortDescription": "Constantes de l'application",
"keywords": "api application constantes de paneladminapp service"
},
{
"section": "api",
......@@ -237,6 +246,15 @@ NG_DOCS={
"shortDescription": "Directive définissant un tableau éditable à plusieurs entrées",
"keywords": "api directive entr paneladminapp plusieurs tableau"
},
{
"section": "api",
"id": "panelAdminApp.EquipesManager",
"shortName": "panelAdminApp.EquipesManager",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "Ce manager est charger de gérer les entrées des équipes retournées par l'API et gérer les messages d'erreur relatifs à son appel",
"keywords": "api appel ce charger de des entr equipesmanager erreur est les manager messages paneladminapp par relatifs retourn service son"
},
{
"section": "api",
"id": "panelAdminApp.filter:applatirScore",
......@@ -291,6 +309,15 @@ NG_DOCS={
"shortDescription": "Ce filtre est chargé de retourner une copie du tableau qui lui est passé en paramètre en ne conservant que les éléments ayant un indice situé dans la plage définie par les autres paramètres.",
"keywords": "api autres ayant ce charg conservant copie dans de debut du en entree est filter filtre fin indice la le les lui ne origine paneladminapp par param pass plage qui retourner situ tableau une"
},
{
"section": "api",
"id": "panelAdminApp.informer",
"shortName": "panelAdminApp.informer",
"type": "object",
"moduleName": "panelAdminApp",
"shortDescription": "Objet gérant les notifications provenant de l'application",
"keywords": "ajouter api application au bleu centre danger de des du ensemble error getinformations info informations informer le les message messages method msg notifications object objet orange paneladminapp permet primary provenant retourne rouge success supprimer type vert warning"
},
{
"section": "api",
"id": "panelAdminApp.informer",
......@@ -302,39 +329,48 @@ NG_DOCS={
},
{
"section": "api",
"id": "panelAdminApp.informer",
"shortName": "panelAdminApp.informer",
"type": "object",
"id": "panelAdminApp.infosConnexion",
"shortName": "panelAdminApp.infosConnexion",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "Objet gérant les notifications provenant de l'application",
"keywords": "ajouter api application au bleu centre danger de des du ensemble error getinformations info informations informer le les message messages method msg notifications object objet orange paneladminapp permet provenant retourne rouge success supprimer type vert warning"
"shortDescription": "Objet contenant les informations de connexion d'un utilisateur (login, password, token)",
"keywords": "api connexion contenant de informations infosconnexion les objet paneladminapp password service token utilisateur"
},
{
"section": "api",
"id": "panelAdminApp.intercepteurHttp",
"shortName": "panelAdminApp.intercepteurHttp",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "L'intercepteur HTTP est chargé de rediriger l'utilisateur vers l'authentification s'il ne s'est pas connecté avant d'envoyer une requête de type 'édition' à l'API. Il permet également d'insérer le token d'authentification dans toutes les requêtes vers l'API, de gérer les messages d'erreur provenant de celle-ci et de gérer la reconnexion automatique si nécessaire.",
"keywords": "api authentification automatique avant celle-ci charg connect dans de envoyer erreur est http il ins intercepteur intercepteurhttp la le les messages ne paneladminapp pas permet provenant reconnexion rediriger requ service si token toutes type une utilisateur vers"
},
{
"section": "api",
"id": "panelAdminApp.intercepteurHttpReponses",
"shortName": "panelAdminApp.intercepteurHttpReponses",
"id": "panelAdminApp.Joueursmanager",
"shortName": "panelAdminApp.Joueursmanager",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "L'intercepteur HTTP est chargé de rediriger l'utilisateur vers l'authentification s'il ne s'est pas connecté avant d'envoyer une requête de modification à l'API. Il permet également d'insérer le token d'authentification dans toutes les requêtes vers l'API, de gérer les messages d'erreur provenant de celle-ci et de gérer la reconnexion automatique si nécessaire.",
"keywords": "api authentification automatique avant celle-ci charg connect dans de envoyer erreur est http il ins intercepteur intercepteurhttpreponses la le les messages modification ne paneladminapp pas permet provenant reconnexion rediriger requ service si token toutes une utilisateur vers"
"shortDescription": "Joueursmanager",
"keywords": "api joueursmanager paneladminapp service"
},
{
"section": "api",
"id": "panelAdminApp.Pays",
"shortName": "panelAdminApp.Pays",
"id": "panelAdminApp.Joueursmanager",
"shortName": "panelAdminApp.Joueursmanager",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "Pays",
"keywords": "api paneladminapp pays service"
"shortDescription": "Joueursmanager",
"keywords": "api joueursmanager paneladminapp service"
},
{
"section": "api",
"id": "panelAdminApp.valeurs",
"shortName": "panelAdminApp.valeurs",
"id": "panelAdminApp.pays",
"shortName": "panelAdminApp.pays",
"type": "service",
"moduleName": "panelAdminApp",
"shortDescription": "valeurs",
"keywords": "api paneladminapp service valeurs"
"shortDescription": "Objet charger d'associer un nom de pays à son code ISO (2 lettres)",
"keywords": "api associer charger code de iso lettres nom objet paneladminapp pays service son"
}
],
"apis": {
......
<h1><code ng:non-bindable="">ModalSupprimerjoueurCtrl</code>
<div><span class="hint">function in module <code ng:non-bindable="">administrationAceCreamApp</code>
</span>
</div>
</h1>
<div><h2 id="description">Description</h2>
<div class="description"><div class="administrationacecreamapp-controller-page administrationacecreamapp-controller-modalsupprimerjoueurctrl-page"><h3 id="description_modalsupprimerjoueurctrl">ModalSupprimerjoueurCtrl</h3>
<p>Controller of the administrationAceCreamApp</p>
</div></div>
<h2 id="usage">Usage</h2>
<div class="usage"><pre class="prettyprint linenums">ModalSupprimerjoueurCtrl();</pre>
</div>
</div>
<h1><code ng:non-bindable="">EquipesManager</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-equipesmanager-page"><p>Ce manager est charger de gérer les entrées des équipes retournées par l&#39;API et gérer les messages d&#39;erreur relatifs à son appel</p>
</div></div>
</div>
<h1><code ng:non-bindable="">Joueursmanager</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-joueursmanager-page"><h3 id="description_joueursmanager">Joueursmanager</h3>
<p>Service in the panelAdminApp.</p>
</div></div>
</div>
<h1><code ng:non-bindable="">chargement</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-chargement-page"><p>Permet de spécifier si un chargement est actif ou non (false)</p>
</div></div>
</div>
......@@ -28,8 +28,10 @@
<ul>
<li>success (vert)</li>
<li>danger (rouge)</li>
<li>warning (orange)
-primary (bleu)</li>
<li>warning (orange)<ul>
<li>primary (bleu)</li>
</ul>
</li>
</ul>
</div></td></tr><tr><td>msg</td><td><a href="" class="label type-hint type-hint-string">String</a></td><td><div class="informer-page"><p>Le message</p>
</div></td></tr></tbody></table></div>
......
<h1><code ng:non-bindable="">infosConnexion</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-infosconnexion-page"><p>Objet contenant les informations de connexion d&#39;un utilisateur (login, password, token)</p>
</div></div>
</div>
<h1><code ng:non-bindable="">intercepteurHttp</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-intercepteurhttp-page"><p>L&#39;intercepteur HTTP est chargé de rediriger l&#39;utilisateur vers l&#39;authentification s&#39;il ne s&#39;est pas connecté avant d&#39;envoyer une requête de type &#39;édition&#39; à l&#39;API. Il permet également d&#39;insérer le token d&#39;authentification dans toutes les requêtes vers l&#39;API, de gérer les messages d&#39;erreur provenant de celle-ci et de gérer la reconnexion automatique si nécessaire.</p>
</div></div>
</div>
<h1><code ng:non-bindable="">pays</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-pays-page"><p>Objet charger d&#39;associer un nom de pays à son code ISO (2 lettres)</p>
</div></div>
</div>
......@@ -56,15 +56,15 @@ angular
.run(function($rootScope, $location, infosConnexion) {
// Décommenter pour activer l'authentification
/*$rootScope.$on( "$routeChangeStart", function(event, next, current) {
$rootScope.$on('$routeChangeStart', function(event, next) {
// Pas authentifié
if (infosConnexion.token === ' ' || !infosConnexion.login || !infosConnexion.password) {
if (infosConnexion.token === 'x' || !infosConnexion.login || !infosConnexion.password) {
if(next.templateUrl !== "views/authentification.html") {
if(next.templateUrl !== 'views/authentification.html') {
$location.path("/authentification");
$location.path('/authentification');
}
}
}); */
});
});
......@@ -24,9 +24,14 @@ angular.module('panelAdminApp')
}).error(function(){
$log.info('Connexion échouée');
informer.success('Erreur lors de la tentative de connexion (veuillez vérifier vos identifiants)');
informer.error('Erreur lors de la tentative de connexion (veuillez vérifier vos identifiants)');
});
};
$scope.authOk = function(){
return ( (infosConnexion.login && infosConnexion.login !== '') && (infosConnexion.password && infosConnexion.password !== '') );
};
$scope.infosConnexion = infosConnexion;
}]);
......@@ -29,7 +29,7 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$modal', 'EquipesManager'
{
nom:'Équipe',
attribut:'CompleteName',
taille:9,
taille:8,
optionsColonne:{
triable:false,
......
......@@ -63,7 +63,7 @@ app.controller('JoueursCtrl', ['$scope', 'JoueursManager', '$modal', function ($
},
{
nom : 'Nom',
taille : 2,
taille : 3,
attribut : 'Name',
optionsColonne : {
......
......@@ -49,7 +49,7 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$modal', 'JoueursEquipeManager',
},
{
nom : 'Nom',
taille : 2,
taille : 3,
attribut : 'Name',
optionsColonne : {
......
......@@ -7,9 +7,9 @@
* Contrôleur de la page d'accueil
*/
angular.module('panelAdminApp')
.controller('MainCtrl', ['$scope', 'apicall', '$filter', function($scope, apicall, $filter){
.controller('MainCtrl', ['$scope', 'informer', 'apicall', '$filter', '$q', 'chargementGlobal', function($scope, informer, apicall, $filter, $q, chargementGlobal){
var nbEquipesKo, nbRencontresKo, nbJoueurs;
var nbEquipesKo, nbRencontresKo, nbJoueurs, stadeTournoi;
$scope.equipesOk = function(){
......@@ -26,28 +26,45 @@ angular.module('panelAdminApp')
return nbRencontresKo === 0;
};
apicall.getEquipes().success(function(donnees){
nbEquipesKo = ($filter('filter')(donnees.teams, {CompleteName:null})).length;
});
apicall.getJoueurs().success(function(donnees){
nbJoueurs = donnees.players.length;
});
apicall.getTirage().success(function(donnees){
nbRencontresKo = ($filter('filter')(donnees.matches, {Team_A:null})).length;
});
$scope.changerEtapeTournoi = function(){
var relation = {
'SETTING-UP':'1/4',
'1/4':'1/2',
'1/2':'Final'
};
apicall.nextStepTournoi(relation[stadeTournoi]).success(function(){
stadeTournoi = relation[stadeTournoi];
informer.success('Le tournoi est bien passé à l\'étape suivante');
}).error(function(){
informer.error('Impossible de passer le tournoi à l\'étape suivante');
});
};
$scope.changerEtapeOk = function(){
return ($scope.equipesOk && $scope.joueursOk && $scope.tirageOk);
return ($scope.equipesOk() && $scope.joueursOk() && $scope.tirageOk());
};
var promises = [apicall.getEquipes(), apicall.getJoueurs(), apicall.getTirage(), apicall.getTournoi()];
chargementGlobal.active = true;
$q.all(promises).then(function(donnees){
nbEquipesKo = ($filter('filter')(donnees[0].data.teams, {CompleteName:null})).length;
nbJoueurs = donnees[1].data.players.length;
nbRencontresKo = ($filter('filter')(donnees[2].data.matches, {Team_A:null})).length;
stadeTournoi = donnees[3].data.Stage;
chargementGlobal.active = false;
}, function(){
informer.error('Impossible de charger les informations');
});
}]);
......@@ -24,8 +24,11 @@ angular.module('panelAdminApp')
var copieMatch = {};
var estModifie = function(input){
return $scope.formulaireMatch[input].$dirty;
if($scope.formulaireMatch[input]){
return $scope.formulaireMatch[input].$dirty;
}
};
$scope.actionMaj = function(){
......@@ -72,6 +75,7 @@ angular.module('panelAdminApp')
}
if(changed || estModifie('dateFin')){
promises.push(apicall.changeEndMatch($scope.match.id, $scope.match.score, $scope.match.winner, $scope.match.endDate));
}
}
......
......@@ -254,7 +254,8 @@ angular.module('panelAdminApp').
'Statut':'status',
'Court':'court',
'DateStart':'startDate',
'DateEnd':'endDate'
'DateEnd':'endDate',
'Winner':'winner'
};
var res = $filter('assocFilter')(donnees.match, association, true);
......@@ -433,7 +434,7 @@ angular.module('panelAdminApp').
*/
this.changeEndMatch = function(idMatch, score, gagnant, dateFin){
var reqData = $filter('applatirScore', score);
var reqData = $filter('applatirScore')(score);
reqData.winner = gagnant;
reqData.endDate = dateFin;
......@@ -504,6 +505,21 @@ angular.module('panelAdminApp').
return $http.get(urlApi + '/tournament');
};
/*
* @ngdoc method
* @name nextStepTournoi
* @methodOf panelAdminApp.ApiCaller
* @description
* Permet de passer à l'étape suivant du tournoi
*
* @param {String} etape La nouvelle étape pour le tournoi
* @return {Object} Un promise sur le résultat de la requête
*/
this.nextStepTournoi = function(etape){
return $http.put(urlApi + '/tournament/stage', {stage:etape});
};
/*
* @ngdoc method
* @name setTirage
......
......@@ -125,12 +125,11 @@ angular.module('panelAdminApp')
var retour = {
playerId : joueur.IdPlayer,
team : joueur.NameTeam,
team : joueur.Team,
birthdate : joueur.DateBirth,
name : joueur.Name,
firstname : joueur.FirstName,
sex : joueur.Sex,
team : joueur.Team,
nationalRankingSingle : joueur.nationalRankingSingle,
nationalRankingDouble : joueur.nationalRankingDouble,
atp_wta_rankingSingle : null,
......
......@@ -127,12 +127,11 @@ angular.module('panelAdminApp')
var retour = {
playerId : joueur.IdPlayer,
team : joueur.NameTeam,
team : joueur.Team,
birthdate : joueur.DateBirth,
name : joueur.Name,
firstname : joueur.FirstName,
sex : joueur.Sex,
team : joueur.Team,
nationalRankingSingle : joueur.nationalRankingSingle,
nationalRankingDouble : joueur.nationalRankingDouble,
atp_wta_rankingSingle : null,
......
......@@ -8,16 +8,16 @@
*/
angular.module('panelAdminApp')
.value('infosConnexion',
//* Pour debug
/* Pour debug
{
login:'perceval',
password:'faux',
token:'x' // Espace pour soumettre un token interprété par le serveur
}
/* Pour déploiement
}*/
// Pour déploiement
{
login:null,
password:null,
token:'x' // Espace pour soumettre un token interprété par le serveur
}*/
}
);
......@@ -583,7 +583,7 @@ div.centrer-cal *{
background-color:rgba(255, 255, 255, 0.9);
background-image:url("/images/logo.png");
background-image:url(../images/logo.png);
background-repeat: no-repeat;
background-size: 30px auto;
background-position: center;
......
......@@ -18,7 +18,7 @@
<input type="password" name="password" placeholder="Mot de passe" class="form-control" ng-model="infosConnexion.password" required>
</div>
<button type="button" ng-click="lancerConnexion()" class="btn btn-primary btn-lg btn-block">Se connecter</button>
<button type="button" ng-click="lancerConnexion()" ng-disabled="!authOk()" class="btn btn-primary btn-lg btn-block">Se connecter</button>
</form>
......
......@@ -71,7 +71,7 @@
<tr>
<th ng-repeat="entree in infosColonnes" data-field="{{entree.nom | lowercase}}" class="col-sm-{{entree.taille}} text-center">{{entree.nom}}</th>
<th data-field="edition" ng-if="infosBoutons.length !== 0" class="col-sm-2 text-center text-center">
<th data-field="edition" ng-if="infosBoutons.length !== 0" class="col-sm-3 text-center text-center">
Édition
</th>
</tr>
......
<div class="row">
<div class="jumbotron">
<div>
<img src="/images/logo.png" height="55px" alt="Logo"/>
<img src="images/logo.png" height="55px" alt="Logo"/>
<h1 style="display: inline-block;vertical-align:middle;">Administration AceCream</h1>
</div>
</div>
......@@ -41,6 +41,6 @@
<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>
<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>
</div>
......@@ -11,7 +11,7 @@
<div ng-repeat="supermatch in superMatchs">
<div class="row">
<div class="well col-md-6 col-md-offset-3 well">
<div class="well col-md-10 col-md-offset-1 well">
<div class="col-md-4">
<div class="pull-right">
{{supermatch.teamNameA}}
......@@ -38,7 +38,7 @@
<!-- Matchs -->
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="col-md-10 col-md-offset-1">
<accordion close-others="true">
<onglet-match ng-repeat="match in supermatch.matches" match="match"></onglet-match>
</accordion>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment