Commit 16e1295f authored by El-gitano's avatar El-gitano
parents 2eed4d49 d3ca3e4e
<!-- Page Joueur & Joueur / Equipe-->
<div style="display:inline-block;" ng-app="panelAdminApp" ng-controller="EditerJoueurCtrl">
<button ng-click="chargerEquipesListe();open()" class="btn btn-xs btn-primary">
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Éditer
</button>
</div>
<div style="display:inline-block;" ng-app="panelAdminApp" ng-controller="SupprimerJoueurCtrl">
<button class="btn btn-xs btn-danger" ng-click="open()">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Supprimer
</button>
</div>
<div ng-app="panelAdminApp" ng-controller="AjoutJoueurCtrl">
<button type="button" ng-click="chargerEquipesListe();chargerTeam();open()" class="btn btn-success btn-block btn-default">
<span class="glyphicon glyphicon-plus"></span> Ajouter un joueur
</button>
</div>
<!-- Page Equipe -->
<div style="display:inline-block;" ng-app="panelAdminApp" ng-controller="EditerEquipeCtrl">
<button ng-click="chargerEquipesListe();open()" class="btn btn-xs btn-primary">
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span> Éditer
</button>
</div>
<div style="display:inline-block;" >
<button class="btn btn-xs btn-warning" ng-click="listeJoueurs(equipe.NameTeam)">
<span class="glyphicons glyphicon-th-list" aria-hidden="true"></span> Joueurs
</button>
</div>
<div style="display:inline-block;" ng-app="panelAdminApp" ng-controller="SupprimerEquipeCtrl">
<button class="btn btn-xs btn-danger" ng-click="open()">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Supprimer
</button>
</div>
<div ng-app="panelAdminApp" ng-controller="AjoutEquipeCtrl">
<button type="button" ng-click="open()" class="btn btn-success btn-block btn-default">
<span class="glyphicon glyphicon-plus"></span> Ajouter une équipe
</button>
</div>
\ No newline at end of file
......@@ -77,6 +77,11 @@
<script src="scripts/controllers/equipes.js"></script>
<script src="scripts/controllers/joueurs.js"></script>
<script src="scripts/controllers/ajoutJoueur.js"></script>
<script src="scripts/controllers/editerJoueur.js"></script>
<script src="scripts/controllers/supprimerJoueur.js"></script>
<script src="scripts/controllers/ajoutEquipe.js"></script>
<script src="scripts/controllers/editerEquipe.js"></script>
<script src="scripts/controllers/supprimerEquipe.js"></script>
<script src="scripts/services/apicall.js"></script>
<script src="scripts/directives/chargement.js"></script>
<script src="scripts/filters/slice.js"></script>
......
......@@ -6,6 +6,52 @@
* @description
* Module principal de l'application. Se charge de gérer les vues et controleurs a utiliser en fonction de la route
*/
angular.module('panelAdminApp', [], function($httpProvider) {
// Use x-www-form-urlencoded Content-Type
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
$httpProvider.interceptors.push('intercepteurHttpReponses');
/**
* The workhorse; converts an object to x-www-form-urlencoded serialization.
* @param {Object} obj
* @return {String}
*/
var param = function(obj) {
var query = '', name, value, fullSubName, subName, subValue, innerObj, i;
for(name in obj) {
value = obj[name];
if(value instanceof Array) {
for(i=0; i<value.length; ++i) {
subValue = value[i];
fullSubName = name + '[' + i + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if(value instanceof Object) {
for(subName in value) {
subValue = value[subName];
fullSubName = name + '[' + subName + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if(value !== undefined && value !== null)
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
}
return query.length ? query.substr(0, query.length - 1) : query;
};
// Override $http service's default transformRequest
$httpProvider.defaults.transformRequest = [function(data) {
return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
}];
});
angular
.module('panelAdminApp', ['ngRoute', 'ui.bootstrap'])
.config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) {
......@@ -38,7 +84,5 @@ angular
.otherwise({
templateUrl: 'views/authentification.html',
controller: 'AuthentificationCtrl'
});
$httpProvider.interceptors.push('intercepteurHttpReponses');
});
}]);
'use strict';
var app = angular.module('panelAdminApp');
//Configuration du service d'appel à l'API
app.config(function(apicallProvider, urlAPI){
apicallProvider.setUrl(urlAPI);
});
app.controller('AjoutEquipeCtrl', ['$scope','$modal','$log', 'apicall', function ($scope, $modal, $log, apicall) {
$scope.items = {name:'', points:'', drapeau:''};
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'views/ajoutEquipe.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function () {
$log.info('Object envoyé au serveur :', $scope.items);
// ajout du joueur
apicall.addEquipe($scope.items)
.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();
})
.error(function(){$scope.alertes.push({type : 'danger', msg: 'Impossible de créer une équipe'});
});
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
}]);
// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.
angular.module('ui.bootstrap').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) {
$scope.items=items;
$scope.ok = function () {
$modalInstance.close();
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
\ No newline at end of file
......@@ -5,7 +5,6 @@ var app = angular.module('panelAdminApp');
//Configuration du service d'appel à l'API
app.config(function(apicallProvider, urlAPI){
apicallProvider.setUrl(urlAPI);
});
......@@ -13,14 +12,18 @@ app.controller('AjoutJoueurCtrl', ['$scope','$modal','$log', 'apicall', function
$scope.items = {name:'', firstname:'', sex:'', birthdate:'', team:'', list:[]};
//Récupération de la liste des equipes
apicall.getEquipes().success(function(data){
$scope.items.list = data.teams;
$log.info($scope.teams);
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de récupérer la liste des equipes (cliquer pour essayer de recharger)'});
});
$scope.chargerTeam = function() {
$scope.items = {name:'', firstname:'', sex:'', birthdate:'', team:$scope.joueursEquipe[0].Team, list:[]};
}
//Récupération de la liste des equipes
$scope.chargerEquipesListe = function() {
apicall.getEquipes().success(function(data){
$scope.items.list = data.teams;
$log.info($scope.items.list);
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de récupérer la liste des equipes (cliquer pour essayer de recharger)'});
});
};
$scope.open = function (size) {
var modalInstance = $modal.open({
......@@ -33,34 +36,42 @@ app.controller('AjoutJoueurCtrl', ['$scope','$modal','$log', 'apicall', function
}
}
});
modalInstance.result.then(function () {
var perso = {};
jQuery.extend(perso,$scope.items);
delete perso.list;
$log.info('Object envoyé au serveur :', perso);
modalInstance.result.then(function (object) {
$log.info(object);
apicall.AddJoueurs(object).success(function(data){
// ajout du joueur
apicall.addJoueurs(perso)
.success(function(data){
$log.info(data);
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de créer un joueur (cliquer pour essayer de recharger)'});
});
// 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.chargerJoueurs();
})
.error(function(){$scope.alertes.push({type : 'danger', msg: 'Impossible de créer un joueur (cliquer pour essayer de recharger)'});
});
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
}]);
// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.
angular.module('ui.bootstrap').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) {
$scope.items = items;
$scope.items=items;
$scope.ok = function () {
var perso = {};
jQuery.extend(perso,items);
delete perso.list;
$modalInstance.close(perso);
$modalInstance.close();
};
$scope.cancel = function () {
......
'use strict';
var app = angular.module('panelAdminApp');
//Configuration du service d'appel à l'API
app.config(function(apicallProvider, urlAPI){
apicallProvider.setUrl(urlAPI);
});
app.controller('EditerEquipeCtrl', ['$scope','$modal','$log', 'apicall', function ($scope, $modal, $log, apicall) {
$scope.items = {name:$scope.equipe.NameTeam, points:$scope.equipe.Points, drapeau:$scope.equipe.URL};
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'views/editerEquipe.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function () {
$log.info('Object envoyé au serveur :', $scope.items);
// ajout du joueur
apicall.setEquipe($scope.items)
.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();
})
.error(function(){$scope.alertes.push({type : 'danger', msg: 'Impossible de créer un joueur (cliquer pour essayer de recharger)'});
});
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
}]);
// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.
angular.module('ui.bootstrap').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) {
$scope.items=items;
$scope.ok = function () {
$modalInstance.close();
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
\ No newline at end of file
'use strict';
var app = angular.module('panelAdminApp');
//Configuration du service d'appel à l'API
app.config(function(apicallProvider, urlAPI){
apicallProvider.setUrl(urlAPI);
});
app.controller('EditerJoueurCtrl', ['$scope','$modal','$log', 'apicall', function ($scope, $modal, $log, apicall) {
$scope.items = {name:$scope.joueur.Name, firstname:$scope.joueur.FirstName, sex:$scope.joueur.Sex, birthdate:$scope.joueur.DateBirth, team:$scope.joueur.Team, list:[]};
//Récupération de la liste des equipes
$scope.chargerEquipesListe = function() {
apicall.getEquipes().success(function(data){
$scope.items.list = data.teams;
$log.info($scope.teams);
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de récupérer la liste des equipes (cliquer pour essayer de recharger)'});
});
};
$scope.open = function (size) {
var modalInstance = $modal.open({
templateUrl: 'views/editerJoueur.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function () {
var perso = {};
jQuery.extend(perso,$scope.items);
delete perso.list;
$log.info('Object envoyé au serveur :', perso);
apicall.setJoueurs(perso).success(function(data){
$log.info(data);
$scope.chargerJoueurs();
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de modifier un joueur (cliquer pour essayer de recharger)'});
});
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
}]);
// Please note that $modalInstance represents a modal window (instance) dependency.
// It is not the same as the $modal service used above.
angular.module('ui.bootstrap').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) {
$scope.items=items;
$scope.ok = function () {
$modalInstance.close();
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
\ No newline at end of file
......@@ -72,4 +72,57 @@ app.controller('JoueursCtrl', ['$scope', 'apicall', function ($scope, apicall) {
tailleColonne:2
}
];
//Gestion des filtres du tableau
$scope.affichageFiltres = false;
// Gestion des joueurs
$scope.chargerJoueurs = function(){
$scope.chargement = true;
apicall.getJoueurs().success(function(data){
$scope.joueurs = data.players;
$scope.totalElements = $scope.joueurs.length;
}).error(function(){
$scope.alertes.push({type : 'danger', msg: 'Impossible de récupérer la liste des joueurs (cliquer pour essayer de recharger)'});
});
$scope.chargement = false;
};
// Supprime une ligne (donc un joueur) dans le tableau
$scope.supprimerJoueur = function(idJoueur){
//$scope.joueurs[index].spin = true;
//Attendre 0.5 secondes
//Recherche du joueur
var index = $filter('joueurParId')($scope.joueurs, idJoueur);
if(index === null){
$log.error('Tentative de suppression d\'un élément non-présent dans le modèle (Id = ' + idJoueur + ')');
return;
}
$log.debug('Supression du joueur avec Id = ' + index);
$scope.joueurs.splice(index, 1);
$scope.totalElements--;
//Animation ?
};
//Ajoute une ligne dan le tableau en vue de l'ajouter à la BDD via la fonction ajouterJoueur()
$scope.ajouterLigne = function(){
};
// Traitements pour le démarrage
$scope.chargerJoueurs();
}]);
......@@ -16,6 +16,247 @@ app.config(function($logProvider, apicallProvider, urlAPI){
$logProvider.debugEnabled(true);
});
app.controller('JoueursEquipeCtrl', ['$scope', '$routeParams', '$filter', '$log', 'apicall', function ($scope, $routeParams, $filter, $log, apicall) {
/* Gestion des alertes */
$scope.alertes = [];
$scope.fermerAlerte = function(index){
$log.debug('Supression d\'une alerte dans le tableau des alertes');
$scope.alertes.splice(index, 1);
};
var supprimerAlertes = function(){
$scope.alertes = [];
};
var ajouterAlerte = function(type, message){
$log.debug('Ajout d\'une alerte dans le tableau des alertes');
$scope.alertes.push({type : 'alert-'+type, msg: message});
};
/* Gestion des éléments pour le triage */
$scope.entreesTri = [
{id: 'IdPlayer', nom: 'Id'},
{id: 'Team', nom: 'Équipe'},
{id: 'Name', nom: 'Nom'},
{id: 'FirstName', nom: 'Prénom'},
{id: 'Sex', nom: 'Sexe'},
{id: 'DateBirth', nom: 'Date de naissance'}
];
$scope.colonneTri = 'Name';
$scope.inverserTri = false;
$scope.entreeTriSelection = $scope.entreesTri[2].nom;
$scope.trierPar = function(entree){
$scope.colonneTri = entree.id;
$scope.entreeTriSelection = entree.nom;
};
/* Gestion des filtres du tableau */
$scope.affichageFiltres = false;
/* Gestion des joueurs */
$scope.totalElements = 0;
$scope.joueursEquipe = [];
$scope.chargerJoueurs = function(){
$scope.chargement = true;
supprimerAlertes();
$scope.selectionGlobale = false;
$scope.nbSelection = 0;
apicall.getJoueursEquipe($routeParams.idEquipe).success(function(data){
$scope.joueursEquipe = data.players;
$scope.totalElements = $scope.joueursEquipe.length;
// Ajout d'un booleen selection et edition pour chaque joueur
for(var joueur in $scope.joueursEquipe){
joueur.selection = false;
joueur.chargement = false;
}
$scope.chargement = false; // Placé ici car fonction asynchrone
}).error(function(){
ajouterAlerte('danger', 'Impossible de récupérer la liste des joueurs de l\'équipe (cliquez sur actualiser pour essayer de recharger)');
$scope.joueursEquipe = [];
$scope.totalElements = 0;
$scope.chargement = false;
});
};
// Supprime une ligne (donc un joueur) dans le tableau
$scope.supprimerJoueur = function(idJoueur){
// Recherche du joueur
var index = $filter('joueurParId')($scope.joueursEquipe, idJoueur);
if(index === null){
$log.error('Tentative de suppression d\'un élément non-présent dans le modèle (Id = ' + idJoueur + ')');
return;
}
// $log.debug('Supression du joueur avec Id = ' + idJoueur);
// Modification de la sélection
if($scope.joueursEquipe[index].selection){
$scope.nbSelection--;
}
$scope.joueursEquipe.splice(index, [1]);
$scope.totalElements--;
// Animation ?
};
/* Gestion des sélections */
$scope.selectionGlobale = false;
$scope.nbSelection = 0;
// Sélectionne/Déselectionne tous les joueurs de la page actuelle du tableau et change le nombre de joueurs sélectionné
$scope.changerSelectionGlobale = function(){
$log.debug('Changement de sélection globale');
$scope.selectionGlobale = !$scope.selectionGlobale;
var debut = $scope.premiereEntree()-1;
var fin = $scope.derniereEntree();
var joueursTries = $filter('filter')($filter('orderBy')($scope.joueursEquipe, $scope.colonneTri, $scope.inverserTri), $scope.recherche);
for(var i=debut; i<fin; i++){
// Changement du nombre d'éléments sélectionnés