Author: obruce Date: 2014-05-22 10:10:28 +0200 (Thu, 22 May 2014) New Revision: 2986 Url: http://forge.chorem.org/projects/jtimer/repository/revisions/2986 Log: controller: changement synchro Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js branches/ng-jtimer/src/main/webapp/js/entities.js Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js =================================================================== --- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-05-21 16:52:22 UTC (rev 2985) +++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-05-22 08:10:28 UTC (rev 2986) @@ -116,6 +116,7 @@ /** * Récupère les nouveaux elements du serveur et les ajoute a l'arbre pour l'affichage + * */ var initTasksFromServ = function(){ @@ -139,7 +140,6 @@ } }else{ - //TODO obruce ajout avec parent deja present //Un noeud avec un parent est ajoute à l'arbre de son parent $scope.data.tasks[newTask.taskId] = newTask; save(); @@ -160,11 +160,13 @@ }); }; + + /** * Methode qui va chercher les mise à jour sur les taches * */ - var updateTaskFromServ = function(){ + var updateTasksFromServ = function(){ serverTaskAccess.query({date : $scope.taskAccess}, function (response) { @@ -172,34 +174,82 @@ angular.forEach(response, function (item) { console.log(item); + + if(item.taskId in $scope.data.tasks){ + //On cherche le node et on le met à jour $scope.tree.getNode(item.taskId).task.name = item.name; save(); //On change la date de dernier acces - $scope.taskAccess = new Date().getTime(); + $scope.taskAccess = Date.now(); $scope.todo.lastTaskAccess= $scope.taskAccess; save(); + + }else{ + + var newTask = new Task( item.name, item.taskId, item.parent); + + if(item.parent == "" ){ + + //Un noeud sans parent est ajouter à l'arbre du scope + $scope.data.tasks[newTask.taskId] = newTask; + save(); + if ($scope.tree) { + $scope.tree.addChild($scope.createTreeNode(newTask)); + } + + }else{ + //Un noeud avec un parent est ajoute à l'arbre de son parent + $scope.data.tasks[newTask.taskId] = newTask; + save(); + + //On ajoute le node à l'arbre + if ($scope.tree) { + $scope.tree.getNode(item.taskId).addChild($scope.createTreeNode(newTask)); + } + + //Les temps sont recuperes du serveur + getTimesFromServerWithTask(newTask); + + save(); + } + } }); - }); } + /** + * Fait la mise à jour des temps + * + */ var updateTimesFromServer = function(){ console.log("Chercher modif temps du serveur"); serverTimeAccess.query({date : $scope.timeAccess}, function (response) { angular.forEach(response, function (item) { - console.log(item); - if(!$scope.data.times[item.taskId]){$scope.data.times[item.taskId] = []} - taskTime = new TaskTime($scope.data.tasks[item.taskId], item.timeId, item.creationDate, item.time); - $scope.data.times[item.taskId].push(taskTime); + if(!(existInObject($scope.data.times,item.timeId,task.taskId)) ){ - save(); + console.log(item); + if(!$scope.data.times[item.taskId]){$scope.data.times[item.taskId] = []} + taskTime = new TaskTime($scope.data.tasks[item.taskId], item.timeId, item.creationDate, item.time); + $scope.data.times[item.taskId].push(taskTime); + + save(); + + }else{ + //Le temps existe + var editedTime = getObjectInArrayWithId($scope.data.times[item.taskId],item.timeId); + editedTime.time = item.time; + editedTime.creationDate = item.creationDate; + + save(); + } + //On change la date de dernier acces $scope.timeAccess = new Date().getTime(); $scope.todo.lastTimeAccess= $scope.timeAccess; @@ -209,6 +259,16 @@ } + //Recuperer un element dans un array avec son id + var getObjectInArrayWithId= function(array, id){ + var res; + angular.forEach(array, function(time){ + if(time.timeId == id){ + res = time; + } + }); + return res; + } /** * Methode qui recupere les temps pour une tache @@ -262,6 +322,7 @@ }); //On ajoute au serveur les taches stockees pour l'ajout angular.forEach($scope.todo.stockedNewTasks, function(task){ + serverTaskAccess.create(angular.toJson(task), function(){ console.log("persist task success" + task); @@ -273,6 +334,9 @@ }); //On ajoute au serveur les taches stockees pour l'ajout angular.forEach($scope.todo.stockedEditedTasks, function(task){ + //On change la date au dernier acces + task.modificationDate = $scope.serverTaskAccess; + serverTaskAccess.update(angular.toJson(task), function(){ console.log("update task success" + task); @@ -286,6 +350,9 @@ //On ajoute les nouveaux temps au serveur angular.forEach($scope.todo.stockedNewTimes, function(times,task){ angular.forEach(times, function(time){ + //On change la date au dernier acces + time.modificationDate = $scope.serverTaskAccess; + serverTimeAccess.create({taskId: task} , angular.toJson(time), function(){ console.log("persist time success" + task); @@ -295,7 +362,7 @@ function(){ console.log("fail"); }); - }); + }); }); //On update les temps sur le serveur @@ -360,7 +427,8 @@ //A changer //initControllerWithServ(); pushChangesToServ(); - updateTaskFromServ(); + updateTasksFromServ(); + updateTimesFromServer(); //updateTimesFromServer(); }, 30000); //TODO: obruce 05-05-14 for now 30s but for real put at least 2h: 200000000 @@ -368,19 +436,6 @@ timer(); /** - *Méthode qui lance les actions à faires sur le serveur - */ - var initControllerWithServ = function(){ - //Si en ligne on envoie les donnees - if ( $scope.online) { - - pushChangesToServ(); - initTasksFromServ(); - } - - } - - /** * Ajoute une tache root */ $scope.addTask = function() { @@ -606,7 +661,7 @@ $scope.saveTask = function(node) { node.edit = null; - node.task.modificationDate = $scope.taskAccess; + //node.task.modificationDate = $scope.taskAccess; $scope.todo.stockedEditedTasks.push(node.task); save(); }; @@ -770,6 +825,19 @@ }); } + /** + *Méthode qui lance les actions à faires sur le serveur + */ + var initControllerWithServ = function(){ + //Si en ligne on envoie les donnees + if ( $scope.online) { + + pushChangesToServ(); + updateTasksFromServ(); + } + + } + //force the first server connection initControllerWithServ(); // force the first tree creation Modified: branches/ng-jtimer/src/main/webapp/js/entities.js =================================================================== --- branches/ng-jtimer/src/main/webapp/js/entities.js 2014-05-21 16:52:22 UTC (rev 2985) +++ branches/ng-jtimer/src/main/webapp/js/entities.js 2014-05-22 08:10:28 UTC (rev 2986) @@ -461,7 +461,7 @@ this.creationDate = date; } - this.modificationDate = this.creationDate; + this.modificationDate = Date.now(); if(time == undefined){ this.time = 0;