Commit 45ba435c authored by El-gitano's avatar El-gitano

Synchronisation du menu avec les pages

Ajout de titre au tableau
Retour à la page précédente après authentification
parent 59a86a28
=== TABLEAU ===
Ajouter un titre
Rajouter export CSV
Lors de la suppression des ligne ajouter une animation ?
Gérer le bouton de supression multiple (avec possibilité de mettre du texte à la place d'un bouton)
Gérer les alertes correctement (via un service)
Lors de l'édition d'une date, celle-ci est affiché de manière étrange dans le tableau (pas urgent)
=== MODALS ===
Pré-sélectionner une date de calendrier (par défaut aujourd'hui) dans l'ajout d'un joueur
Rajouter les vérifications des formulaires
Pour l'édition des équipes, rétablir une copie de l'entrée si le modal est "dismissed" (voir joueur pour modèle)
Pour l'édition des joueurs, passer le filtrage de la date dans un $watch pour éviter une entrée bizarre dans le tableau (voir TODO tableau)
=== JOUEURS ÉQUIPE ===
......@@ -26,14 +21,9 @@ Gérer les modifications du tableau après appel à l'API
Voir avec Matthias comment gérer le token avec la méthode DELETE
=== AUTHENTIFICATION ===
En cas de redirection vers l'authentification, revenir à l'URL précédent après la connexion
=== GENERAL ===
Rajouter AceCream dans l'entête de page
Ajouter les photos des joueurs
Fonctionnalité de vérification du tournois avant lancement
Faire la documentation
Rediriger sur l'authentification si la personne ne s'est pas authentifiée
Faire des tests
......@@ -21,16 +21,16 @@
<![endif]-->
<!-- Add your site or application content here -->
<div class="container-fluid">
<div class="container-fluid" ng-controller="HeadercontrollerCtrl">
<div class="header">
<ul class="nav nav-pills pull-right">
<li class="active"><a ng-href="#">Accueil</a></li>
<li><a ng-href="#/tournois">Tournois</a></li>
<li><a ng-href="#/joueurs">Joueurs</a></li>
<li><a ng-href="#/equipes">Équipes</a></li>
<li><a ng-href="#/statistiques">Statistiques</a></li>
<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('/statistiques')}"><a ng-href="#/statistiques">Statistiques</a></li>
</ul>
<h3 class="text-muted">Administration</h3>
<img id="logo" src="images/logo.png" alt="logo"/><h3 class="text-muted">AceCream</h3>
</div>
<div ng-view=""></div>
......@@ -92,6 +92,7 @@
<script src="scripts/controllers/modal/editjoueur.js"></script>
<script src="scripts/services/valeurs.js"></script>
<script src="scripts/filters/assocfilter.js"></script>
<script src="scripts/controllers/headercontroller.js"></script>
<!-- endbuild -->
<!-- Ajouts persos -->
......
......@@ -16,7 +16,7 @@ angular
$httpProvider.interceptors.push('intercepteurHttpReponses');
$routeProvider
.when('/', {
.when('/accueil', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
......@@ -36,13 +36,13 @@ angular
templateUrl: 'views/ajouterJoueur.html',
controller: 'AjouterJoueurCtrl'
})
.when('/teams/:idEquipe/players', {
.when('/equipes/:idEquipe/joueurs', {
templateUrl: 'views/joueursEquipe.html',
controller: 'JoueursEquipeCtrl'
})
// Redirection vers l'authentification en cas de page non-gérée
.otherwise({
templateUrl: 'views/authentification.html',
controller: 'AuthentificationCtrl'
templateUrl: 'views/main.html',
controller: 'MainCtrl'
});
}]);
......@@ -8,7 +8,7 @@
* Controller of the panelAdminApp
*/
angular.module('panelAdminApp')
.controller('AuthentificationCtrl', ['$scope', '$log', 'apicall', 'infosConnexion', function ($scope, $log, apicall, infosConnexion) {
.controller('AuthentificationCtrl', ['$scope', '$log', '$window', 'apicall', 'infosConnexion', function ($scope, $log, $window, apicall, infosConnexion) {
/* Gestion des alertes */
$scope.alertes = [];
......@@ -18,18 +18,25 @@ angular.module('panelAdminApp')
apicall.authentification(infosConnexion).success(function(donnees){
$log.info('Connexion réussie');
$scope.alertes[0] = null;
infosConnexion.token = donnees.token;
$window.history.back();
}).error(function(){
$log.info('Connexion échouée');
})
$scope.alertes[0] = {
type:'danger',
msg:'Identifiants incorrects'
};
});
};
$scope.fermerAlerte = function(index){
$scope.alertes.splice(index, 1);
};
$scope.infosConnexion = infosConnexion;
}]);
......@@ -76,6 +76,8 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
glyph:'glyphicon-edit',
func: function(entree){
var copieEntree = angular.copy(entree);
var dialogue = $modal.open({
templateUrl: 'views/modal/editerEquipe.html',
......@@ -92,27 +94,23 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
}
});
dialogue.result.then(function () {
var perso = {};
jQuery.extend(perso, entree);
delete perso.list;
$log.info('Object envoyé au serveur :', perso);
dialogue.result.then(function(equipe) {
apicall.setEquipe(perso).success(function(data){
apicall.setEquipe(equipe).success(function(data){
$log.info(data);
$scope.chargerJoueurs();
/*$log.info(data);
$scope.chargerJoueurs();*/
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de modifier un joueur (cliquer pour essayer de recharger)'}); // TODO
angular.copy(copieEntree, entree);
//$scope.alertes.push({type : 'danger', msg: 'Impossible de modifier un joueur (cliquer pour essayer de recharger)'}); // TODO
});
}, function () {
$log.info('Annulation de l\'action');
angular.copy(copieEntree, entree);
});
}
},
......@@ -123,7 +121,7 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
glyph:'glyphicon-th-list',
func: function(equipe){
$location.path('/teams/'+equipe.NameTeam+'/players');
$location.path('/equipes/'+equipe.NameTeam+'/joueurs');
}
},
{
......@@ -150,22 +148,15 @@ app.controller('EquipesCtrl', ['$scope', '$location', '$log', '$modal', 'apicall
}
});
dialogue.result.then(function () {
$log.info('Object envoyé au serveur :', $scope.items);
dialogue.result.then(function(infosEquipe) {
apicall.delEquipe($scope.items).success(function(data){
apicall.delEquipe(infosEquipe).success(function(data){
$log.info(data);
/* if(data.code == -1){$scope.alertes.push({type : 'danger', msg: 'Création du joueur impossible : Mauvais paramètres'});}
else if(data.code == 0){$scope.alertes.push({type : 'success', msg: 'Création du joueur réussie'});}
else if(data.code == -2){$scope.alertes.push({type : 'danger', msg: 'Création du joueur impossible : Database error'});}
else{$scope.alertes.push({type : 'danger', msg: 'Création du joueur impossible : API error'});}*/
$scope.chargerEquipes();
//$scope.chargerEquipes();
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de créer un joueur (cliquer pour essayer de recharger)'}); // TODO
//$scope.alertes.push({type : 'danger', msg: 'Impossible de créer un joueur (cliquer pour essayer de recharger)'}); // TODO
});
}, function () {
......
'use strict';
/**
* @ngdoc function
* @name panelAdminApp.controller:HeadercontrollerCtrl
* @description
* # HeadercontrollerCtrl
* Controller of the panelAdminApp
*/
angular.module('panelAdminApp')
.controller('HeadercontrollerCtrl', ['$scope', '$location', function ($scope, $location) {
$scope.estActive = function (lienVue) {
return $location.path().indexOf(lienVue) === 0;
};
}]);
......@@ -83,8 +83,8 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', '$modal', '$log', function (
//console.log(data);
//$scope.chargerJoueurs(); // TODO Régler ce problème
}
, function(){
},
function(){
$log.info('Joueur non-ajouté');
//$scope.alertes.push({type : 'danger', msg: 'Impossible de modifier un joueur (cliquer pour essayer de recharger)'}); // TODO Changer ce truc
......
......@@ -13,6 +13,7 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
$scope.methodeMaj = apicall.getJoueursEquipe;
$scope.paramsMaj = [$routeParams.idEquipe];
$scope.titreTableau = 'Tableau des joueurs de l\'équipe ' + $routeParams.idEquipe;
$scope.infosJoueurs = [
......@@ -123,8 +124,7 @@ app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$modal', '$log',
return {
entree:entree,
getEquipes:apicall.getEquipes
entree:entree
};
}
}
......
......@@ -4,6 +4,16 @@ var app = angular.module('panelAdminApp');
app.controller('AjoutJoueurCtrl', ['$scope','$modalInstance', '$filter', '$log', 'apicall', function ($scope, $modalInstance, $filter, $log, apicall) {
$scope.$watch('joueur.DateBirth', function(){
$scope.joueur.DateBirth = $filter('date')($scope.joueur.DateBirth, 'yyyy-MM-dd');
});
$scope.joueur = {
DateBirth : Date()
};
apicall.getEquipes().success(function(data){
$scope.equipes = data.teams;
......@@ -15,8 +25,6 @@ app.controller('AjoutJoueurCtrl', ['$scope','$modalInstance', '$filter', '$log',
$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);
};
......
......@@ -7,7 +7,8 @@ app.controller('AjoutJoueurEquipeCtrl', ['$scope','$modalInstance','$log', 'donn
$scope.equipe = donnees.equipe;
$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);
};
......
......@@ -2,10 +2,10 @@
var app = angular.module('panelAdminApp');
app.controller('EditerEquipeCtrl', ['$scope','$modalInstance','$log', 'donnees', function ($scope, $modalInstance, $log, donnees) {
app.controller('EditerEquipeCtrl', ['$scope','$modalInstance', '$log', 'donnees', function ($scope, $modalInstance, $log, donnees) {
$scope.equipe = donnees.entree;
$scope.ok = function () {
$modalInstance.close();
......
......@@ -12,6 +12,11 @@ angular.module('panelAdminApp')
$scope.joueur = donnees.entree;
$scope.$watch('joueur.DateBirth', function(){
$scope.joueur.DateBirth = $filter('date')($scope.joueur.DateBirth, 'yyyy-MM-dd');
});
apicall.getEquipes().success(function(data){
$scope.equipes = data.teams;
......@@ -22,8 +27,7 @@ angular.module('panelAdminApp')
});
$scope.ok = function () {
$scope.joueur.DateBirth = $filter('date')($scope.joueur.DateBirth, 'yyyy-MM-dd');
$modalInstance.close($scope.joueur);
};
......
......@@ -21,7 +21,8 @@ angular.module('panelAdminApp')
infos:'=',
attrEntrees:'@',
fctMaj:'&',
paramsMaj:'='
paramsMaj:'=',
titre:'@'
},
templateUrl: 'views/tableau.html',
......
......@@ -22,7 +22,7 @@ angular.module('panelAdminApp')
config.data.token = infosConnexion.token;
}
else if(config.method === "DELETE"){
else if(config.method === 'DELETE'){
$log.info('Ajout du token pour un appel à DELETE');
......
......@@ -80,6 +80,13 @@ body {
/* ===== Notre CSS ===== */
#logo{
float:left;
margin-right:10px;
}
.drapeau{
max-height: 40px;
max-width: 60px;
......
......@@ -10,12 +10,12 @@
<div class="form-group">
<label for="login">Identifiant : </label>
<input id="login" type="text" name="login" placeholder="Identifiant" class="form-control" ng-model="infosConnexion.login" required autofocus>
<input type="text" name="login" placeholder="Identifiant" class="form-control" ng-model="infosConnexion.login" required autofocus>
</div>
<div class="form-group">
<label for="password">Mot de passe : </label>
<input id="password" type="password" name="password" placeholder="Mot de passe" class="form-control" ng-model="infosConnexion.password" required>
<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>
......
<div ng-app="panelAdminApp" ng-controller="EquipesCtrl" id="equipes" class="container-fluid">
<tableau editable="true" selectionnable="false" paginer="true" boutons-edition="boutonsEdition" fct-maj="methodeMaj" fct-ajout="fonctionAjout" infos="infosEquipes" attr-entrees="teams"></tableau>
<tableau editable="false" selectionnable="false" paginer="false" boutons-edition="boutonsEdition" fct-maj="methodeMaj" fct-ajout="fonctionAjout" infos="infosEquipes" attr-entrees="teams" titre="Tableau des équipes"></tableau>
</div>
<div id="container-joueurs" ng-app="panelAdminApp" ng-controller="JoueursCtrl" class="container-fluid">
<tableau editable="true" selectionnable="true" paginer="true" boutons-edition="boutonsEdition" fct-maj="methodeMaj" fct-ajout="fonctionAjout" infos="infosJoueurs" attr-entrees="players"></tableau>
<tableau editable="true" selectionnable="true" paginer="true" boutons-edition="boutonsEdition" fct-maj="methodeMaj" fct-ajout="fonctionAjout" infos="infosJoueurs" attr-entrees="players" titre="Tableau des joueurs"></tableau>
</div>
<div ng-app="panelAdminApp" ng-controller="JoueursEquipeCtrl" id="container-joueurs" class="container-fluid">
<tableau editable="true" selectionnable="true" boutons-edition="boutonsEdition" fct-maj="methodeMaj" fct-ajout="fonctionAjout" params-maj="paramsMaj" infos="infosJoueurs" attr-entrees="players"></tableau>
<tableau editable="true" selectionnable="false" boutons-edition="boutonsEdition" fct-maj="methodeMaj" params-maj="paramsMaj" infos="infosJoueurs" attr-entrees="players" titre="{{titreTableau}}"></tableau>
</div>
<div>
<h2 class="text-center text-muted">{{titre}}</h2>
<!-- Ligne pour les alertes -->
<div class="row">
<div ng-repeat="alerte in alertes" class="alert alert-dismiss {{alerte.type}}" role="alert">
......@@ -91,7 +93,7 @@
</th>
<th ng-repeat="entree in infos" data-field="{{entree.nomColonne | lowercase}}" class="col-sm-{{entree.tailleColonne}} text-center">{{entree.nomColonne}}</th>
<th data-field="edition" ng-if="editable" class="col-sm-2 text-center text-center">
<th data-field="edition" ng-if="boutonsEdition.length !== 0" class="col-sm-2 text-center text-center">
<button class="btn btn-xs btn-danger" ng-disabled="nbSelection === 0" ng-click="supprimerSelection()">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Supprimer {{nbSelection}} entrée(s)
</button>
......@@ -124,7 +126,7 @@
</td>
<!-- Boutons d'édition -->
<td data-title="edition" ng-if="editable" class="text-center vert-align">
<td data-title="edition" ng-if="boutonsEdition.length !== 0" class="text-center vert-align">
<div class="btn-group" role="group">
<button ng-repeat="bouton in boutonsEdition" ng-click="bouton.func(entree)" class="btn btn-xs {{bouton.type}}">
......
'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);
});
});
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