r3015 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/config java/org/chorem/jtimer/storage java/org/chorem/jtimer/utils java/org/chorem/jtimer/web resources webapp/js webapp/partials
Author: obruce Date: 2014-07-17 14:28:50 +0200 (Thu, 17 Jul 2014) New Revision: 3015 Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3015 Log: java : nettoyage du code, ajout du rapport en week interface : rapport Removed: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ branches/ng-jtimer/src/main/resources/ByDay_template.mustache branches/ng-jtimer/src/main/resources/ByProject.mustache branches/ng-jtimer/src/main/resources/ByWeek_template.mustache branches/ng-jtimer/src/main/resources/subtasks.mustache Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java branches/ng-jtimer/src/main/resources/jtimer-default.properties branches/ng-jtimer/src/main/webapp/js/controllers.js branches/ng-jtimer/src/main/webapp/partials/reportModal.html Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -140,7 +140,9 @@ public String getStorageQuerySelectReportRootTask(){ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_REPORT_ROOTTASK.getKey()); } - + public String getStorageQuerySelectReportWeekTimedTasks(){ + return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_REPORT_WEEK_TIMEDTASKS.getKey()); + } public String getStorageQuerySelectAlarmOnDate(){ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_ALARM_ONDATE.getKey()); } Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -148,6 +148,12 @@ "", String.class ), + JTIMER_STORAGE_SELECT_REPORT_WEEK_TIMEDTASKS( + "jtimer.storage.select.report.week.timedtasks", + "requête de selection des taches minutees sur une semaine", + "", + String.class + ), JTIMER_STORAGE_SELECT_ALARM_ONDATE( "jtimer.storage.select.alarm.ondate", "requête de selection des alarmes ", Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.Iterator; import java.util.List; /** @@ -497,6 +498,12 @@ return alarms; } + /** + * Methode qui retourne les taches minutees entre deux bornes par projet + * @param startDate la borne inferieur + * @param endDate la borne superieur + * @return un hashmap {key: parentId, value: array of task} + */ public HashMap<String, ArrayList<ReportTask>> getReportByProject(Long startDate, Long endDate){ HashMap map = new HashMap(); @@ -510,16 +517,20 @@ ResultSet rs = statement.executeQuery(); while(rs.next()){ + ReportTask task = new ReportTask(rs.getString("name"), rs.getString("taskId"), rs.getString("parent"), rs.getLong("totalduration")); + //Arraylist of reportask for the map ArrayList tmp = new ArrayList(); if(map.containsKey(rs.getString("parent"))){ tmp = (ArrayList) map.get(rs.getString("parent")); } tmp.add(task); + + //add key: parentId value : the created reportTask map.put(rs.getString("parent"), tmp); } @@ -528,6 +539,7 @@ rs = statement2.executeQuery(); while(rs.next()){ + ReportTask task = new ReportTask(rs.getString("name"), rs.getString("taskId"), rs.getString("parent"), @@ -552,6 +564,90 @@ } + //TODO + /** + * Methode qui retourne les taches minutees entre deux bornes par semaine + * @param startDate borne inferieur + * @param endDate la borne superieur + * @return un hashmap {key: parentId, value: array of task} + */ + public HashMap<Integer,HashMap<String, ArrayList<ReportTask>>> getReportByWeek(Long startDate, Long endDate){ + + HashMap<Integer,HashMap<String, ArrayList<ReportTask>>> res = new HashMap<>(); + + + + PreparedStatement statement = null; + PreparedStatement statement2 = null; + try{ + statement = connection.prepareStatement(config.getStorageQuerySelectReportWeekTimedTasks()); + + statement.setLong(1, startDate); + statement.setLong(2, endDate); + + ResultSet rs = statement.executeQuery(); + + while(rs.next()) { + + int week = rs.getInt("week"); + if(res.get(week)==null) { + res.put(week, new HashMap<String, ArrayList<ReportTask>>()); + } + + ReportTask task = new ReportTask(rs.getString("name"), + rs.getString("taskId"), + rs.getString("parent"), + rs.getLong("totalduration")); + + ArrayList tmp = new ArrayList(); + if (res.get(week).containsKey(rs.getString("parent"))) { + tmp = (ArrayList)res.get(week).get(rs.getString("parent")); + } + tmp.add(task); + res.get(week).put(rs.getString("parent"), tmp); + + + } + + // not timed tasks + statement2 = connection.prepareStatement(config.getStorageQuerySelectReportRootTask()); + ArrayList notTimedArray = new ArrayList(); + + rs = statement2.executeQuery(); + + while(rs.next()){ + ReportTask task = new ReportTask(rs.getString("name"), + rs.getString("taskId"), + rs.getString("parent"), + (long) 0); + + notTimedArray.add(task); + } + + + Iterator iter = res.keySet().iterator(); + + while(iter.hasNext()) { + Integer key = (Integer)iter.next(); + ArrayList cloneNotTimedArray=new ArrayList(); + + for(ReportTask toClone:(ArrayList<ReportTask>)notTimedArray){ + cloneNotTimedArray.add(new ReportTask(toClone)); + } + res.get(key).put("", cloneNotTimedArray); + } + + }catch(SQLException ex) { + throw new StorageException("Can't get report", ex); + } finally { + closeStatement(statement); + closeStatement(statement2); + } + + return res; + } + + /** Update */ /** Deleted: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,81 +0,0 @@ -package org.chorem.jtimer.utils; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -/** - * Created by olivia on 17/06/14. - * <p/> - * Project name : jtimer - * <p/> - * Package name : org.chorem.jtimer.utils - */ -public class MustacheHandler { - - protected static final Log log = LogFactory.getLog(MustacheReport.class); - - protected ArrayList reprArray; - - List<ReportTask> tasks; - - List tasks() { - //On tri les taches avant de les envoyer au template - HashMap<String, ArrayList<ReportTask>> childMap = new HashMap<String,ArrayList<ReportTask>>(); - - Iterator iter = tasks.iterator(); - while(iter.hasNext()) { - - ReportTask t = (ReportTask)iter.next(); - - //un enfant dans map - if(childMap.containsKey(t.getTaskId())){ - for(ReportTask task :childMap.get(t.getTaskId())) - t.addChild(task); - } - - //un enfant - if(!t.getParentId().equals("")){ - log.info("enfant"); - //On ajoute l'enfant à la map - ArrayList tmp = new ArrayList(); - - if(childMap.get(t.parentId) != null){ - tmp=childMap.get(t.parentId); - } - tmp.add(t); - - childMap.put(t.parentId, tmp); - iter.remove(); - } - } - - iter = tasks.iterator(); - while(iter.hasNext()) { - ReportTask t = (ReportTask)iter.next(); - - if(t.getSelftime() == 0){ - iter.remove(); - } - } - - return tasks; - } - - - /** - * Constructeur - * @param mustacheList la liste des taches - * @param reprArray - */ - public MustacheHandler(List mustacheList, ArrayList reprArray){ - this.tasks = mustacheList; - this.reprArray = reprArray; - log.debug(mustacheList); - } - -} Deleted: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,72 +0,0 @@ -package org.chorem.jtimer.utils; - -import com.github.mustachejava.DefaultMustacheFactory; -import com.github.mustachejava.Mustache; -import com.github.mustachejava.MustacheFactory; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.chorem.jtimer.storage.Storage; -import org.restlet.Context; - -import java.io.IOException; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by olivia on 16/06/14. - * <p/> - * Project name : jtimer - * <p/> - * Package name : org.chorem.jtimer.utils - */ -public class MustacheReport { - - protected static final Log log = LogFactory.getLog(MustacheReport.class); - - protected Context context; - protected Storage storage; - protected List mustacheList; - - - /** - * Default Constructor - * @param context - */ - public MustacheReport(Context context){ - this.context = context; - storage = (Storage) context.getAttributes().get(Storage.class.getName()); - } - - /** - * Methode qui cree une moustache - * @throws IOException - */ - public String createByProjectMustache(String type, long start, long end, ArrayList reprArray) throws IOException { - - log.info("create a Mustache by project"); - MustacheFactory mf = new DefaultMustacheFactory(); - Mustache mustache = mf.compile("ByProject.mustache"); - - //On recupere les taches - - //mustacheList = storage.getReportByProject(start, end); - - StringWriter sw = new StringWriter(); - mustache.execute(sw, new MustacheHandler(mustacheList,reprArray)).flush(); - - return sw.toString(); - } - - - public String createByWeekMustache(String type, long start, long end) { - log.info("create a Mustache by week"); - MustacheFactory mf = new DefaultMustacheFactory(); - Mustache mustache = mf.compile("ByWeek_template.mustache"); - - StringWriter sw = new StringWriter(); - //mustache.execute(sw, MustacheHandler.getByWeekReport()); - - return sw.toString(); - } -} Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -47,6 +47,21 @@ this.subtasks = new ArrayList(); } + /** + * Constructeur par recopie à vide + * @param other une autre tache + */ + public ReportTask(ReportTask other){ + this.taskId = other.taskId; + this.name = other.name; + this.parentId = other.parentId; + this.selftime = other.selftime; + this.childtime = 0; + this.rtParent = null; + + this.subtasks = new ArrayList(); + } + /** Ajout */ public void addChild(ReportTask t){ this.subtasks.add(t); @@ -127,4 +142,5 @@ ", subtasks=" + subtasks + '}'; } + } Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java =================================================================== --- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-07-17 12:28:50 UTC (rev 3015) @@ -51,12 +51,14 @@ toReport = gson.fromJson(repr1, ArrayList.class); } - String type ="BY_PROJECT"; + String json="[]"; + String type =""; long startDate = (long) 0; long endDate = Long.MAX_VALUE; try { type = String.valueOf(getQuery().getValues("type")); + log.info("type " +type); } catch (Exception e) { log.info("type non present dans l'url" + e); } @@ -71,26 +73,56 @@ log.info("type non present dans l'url" + e); } - - //MustacheReport report = new MustacheReport(getContext()); - //res = report.createByProjectMustache(type, startDate, endDate,reprArray); - //On ne recupere que les elements interessants Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - HashMap<String, ArrayList<ReportTask>> storedTask = storage.getReportByProject(startDate, endDate); - ArrayList<ReportTask> res = new ArrayList<>(); //l'arraylist de resultat + if(type.equals("Project")) { - //On recree l'arbre - for(ReportTask rt: storedTask.get("")){ - recursivSortTask(storedTask, rt, res ); + HashMap<String, ArrayList<ReportTask>> storedTask = storage.getReportByProject(startDate, endDate); + ArrayList<ReportTask> res = new ArrayList<>(); //l'arraylist de resultat + + log.warn("Project " +storedTask.toString()); + + //On parcours le map récupérer de la base pour recéer l'arbre + for(ReportTask rt: storedTask.get("")){ + recursivSortTask(storedTask, rt, res ); + } + + log.warn("inter " +res.toString()); + + //On enleve les éléments non voulus + recursiveRemoveUnreportedTask(res,toReport); + + log.warn("envoyé " +res.toString()); + + json = gson.toJson(res, ArrayList.class); + } - //On enleve les éléments non voulus - recursiveRemoveUnreportedTask(res,toReport); + if(type.equals("Week")) { + HashMap<Integer, HashMap<String, ArrayList<ReportTask>>> storedTask = storage.getReportByWeek(startDate, endDate); + log.warn("Week " +storedTask.toString()); + HashMap<Integer, ArrayList<ReportTask>> res = new HashMap<>(); - String json = gson.toJson(res, ArrayList.class); + Iterator iter = storedTask.keySet().iterator(); + while (iter.hasNext()) { + Integer key = (Integer) iter.next(); + ArrayList<ReportTask> tmp = new ArrayList<>(); + + for (ReportTask rt : storedTask.get(key).get("")) { + recursivSortTask(storedTask.get(key), rt, tmp); + } + recursiveRemoveUnreportedTask(tmp, (ArrayList<String>) toReport.clone()); + log.warn("this is tmp" + tmp); + log.warn("this is toReport" + toReport); + res.put(key, tmp); + } + + + json = gson.toJson(res, HashMap.class); + } + return new StringRepresentation(json, MediaType.TEXT_HTML); } @@ -104,13 +136,14 @@ if(map.containsKey(rt.getTaskId())) { for (ReportTask child : map.get(rt.getTaskId())) { + //On attache le parent child.setRtParent(rt); - log.info(child.getName() + " setparent " +rt.getName()); + //Appel recursif sur les enfants recursivSortTask(map, child, res); + //Si le noeud enfant est a du temps alors on l'ajoute if(child.getSelftime()!= (long) 0 || child.getChildtime()!= (long) 0){ - log.info(rt.getName() + " enfante car != 0 : " +child.getName()); rt.addChild(child); rt.addChildTime(child.getSelftime()); } @@ -128,17 +161,26 @@ * @param wanted la liste d'identifiant voulu */ private void recursiveRemoveUnreportedTask(ArrayList<ReportTask> toCheck, ArrayList<String> wanted){ + //iterator sur l'arraylist a checker Iterator<ReportTask> iter = toCheck.iterator(); + // while(iter.hasNext()) { + //Le noeud courant ReportTask repT= iter.next(); + //Le noeud a des enfants if(!repT.getSubtasks().isEmpty()) { + //On va supprimer les noeuds non souhaites dans les enfants recursiveRemoveUnreportedTask(repT.getSubtasks(), wanted); } + //On vérifie si dans la liste des elements voulus if(!idIsInArray(repT.getTaskId(),wanted)){ - repT.getRtParent().removeChildTime(repT.getSelftime()); + if(repT.hasParent()) { + repT.getRtParent().removeChildTime(repT.getSelftime()); + } iter.remove(); + } } Deleted: branches/ng-jtimer/src/main/resources/ByDay_template.mustache =================================================================== --- branches/ng-jtimer/src/main/resources/ByDay_template.mustache 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/resources/ByDay_template.mustache 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,8 +0,0 @@ -Rapport -======= - -{{#days}} - Jour : {{day}} - {{>ByProject}} -{{/days}} - Deleted: branches/ng-jtimer/src/main/resources/ByProject.mustache =================================================================== --- branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,21 +0,0 @@ -<div> - <h3> - Rapport: - </h3> -</div> -<hr/> -<div> - {{#tasks}} - <b>Projet : {{name}}</b> - - {{>subtasks}} - - Temps total : {{time.hh}}:{{time.mm}}:{{time.ss}} - - <hr/> - {{/tasks}} - - {{^tasks}} - Pas de tâches sur cette période. - {{/tasks}} -</div> \ No newline at end of file Deleted: branches/ng-jtimer/src/main/resources/ByWeek_template.mustache =================================================================== --- branches/ng-jtimer/src/main/resources/ByWeek_template.mustache 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/resources/ByWeek_template.mustache 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,7 +0,0 @@ -Rapport -======= - -{{#weeks}} - Semaine : {{day}} - {{>ByProject}} -{{/weeks}} \ No newline at end of file Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties =================================================================== --- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-07-17 12:28:50 UTC (rev 3015) @@ -96,21 +96,20 @@ jtimer.storage.select.report.roottasks=SELECT * \ FROM task \ WHERE (taskId not in (SELECT taskid FROM tasktime) AND removed = 0 ) +jtimer.storage.select.report.week.timedtasks=SELECT WEEK(DATEADD('SECOND', (TI.date/1000), DATE '1970-01-01')) as week, TA.* , sum(TI.duration) AS totalduration \ + FROM task TA, tasktime TI \ + WHERE TA.taskId = TI.taskid \ + AND TA.creationDate > ? \ + AND TA.creationDate < ? \ + AND TA.removed = 0 \ + GROUP BY TA.taskId, week \ + ORDER BY TA.creationDate DESC jtimer.storage.select.alarm.ondate= SELECT * \ FROM taskalarm \ WHERE modificationDate > ? jtimer.storage.select.alarm.fortask= SELECT * \ FROM taskalarm \ WHERE removed = 0 AND modificationDate > ? AND taskId = ? -jtimer.storage.select.report.week.timedtasks=SELECT TA.* , sum(TI.duration) AS totalduration \ - FROM task TA, tasktime TI \ - WHERE TA.taskId = TI.taskid \ - AND TA.creationDate > ? \ - AND TA.creationDate < ? \ - AND TA.removed = 0 \ - GROUP BY TA.taskId \ - ORDER BY TA.creationDate DESC, WEEK(TA.creationDate) - ### #DELETE jtimer.storage.delete.time.withid=DELETE FROM tasktime WHERE uuid = ? Deleted: branches/ng-jtimer/src/main/resources/subtasks.mustache =================================================================== --- branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,9 +0,0 @@ -<div style="margin-left:2em;"> - {{#subtasks}} - <div style="display : block" > - <div style="min-width : 100px; max-width : 110px; display : inline-block;">-{{name}} :</div> - <div style="min-width : 100px; max-width : 150px; display : inline-block;">{{time.hh}}:{{time.mm}}:{{time.ss}} </div> - </div> - {{> subtasks}} - {{/subtasks}} -</div> \ No newline at end of file Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js =================================================================== --- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-07-17 12:28:50 UTC (rev 3015) @@ -1153,6 +1153,7 @@ var modalInstance = $modal.open({ templateUrl: 'partials/reportModal.html', controller: ReportModalInstanceCtrl, + size:'lg', resolve: { tree : function(){ return $scope.tree; @@ -1167,7 +1168,8 @@ var initControllerWithServ = function(){ //Si en ligne on envoie les donnees if ( $scope.online) { - + updateTasksFromServ(); + updateTimesFromServer(); pushTodoListToServ(); initTasksFromServ(); } @@ -1389,7 +1391,7 @@ function ReportModalInstanceCtrl($scope, $modalInstance,$http, $sce, serverReportAccess, tree){ - + $scope.modal={radioModel: "Project"}; $scope.tree = tree; $scope.obj={ @@ -1399,7 +1401,6 @@ $scope.obj.endDate.setHours(23,59,59,999); - $scope.radioModel = '5'; $scope.htmlReport="Générer un rapport"; $scope.toHTML = function (data) { @@ -1412,7 +1413,9 @@ */ $scope.generateReport= function(){ + //Heure en debut de journee borne inf $scope.obj.startDate.setHours(0,0,0,0); + //Heure en fin de journee borne sup $scope.obj.endDate.setHours(23,59,59,999); var deb =($scope.obj.startDate).getTime(); @@ -1420,6 +1423,7 @@ toReportTask = []; $scope.reportedTask = []; + $scope.reportWeek = {}; var recurseGenerateChildReport = function(child){ @@ -1432,18 +1436,42 @@ angular.forEach(tree.children, function(child){recurseGenerateChildReport(child)}); $http({method: "POST", url: "/rest/report", - params:{start_Date : deb, end_Date : end}, data : angular.toJson(toReportTask)}) - .success(function(data){ + params:{start_Date : deb, end_Date : end, type : $scope.modal.radioModel}, data : angular.toJson(toReportTask)}) + .success(function(data){ - $scope.htmlReport = data; - angular.forEach(data, function(d){ - $scope.reportedTask.push({ - name : d.name, - selftime : d.selftime, - childtime : d.childtime, - subtasks : d.subtasks}) - }); - } + if($scope.modal.radioModel=='Project'){ + + $scope.htmlReport = data; + $scope.reportedTask=[]; + angular.forEach(data, function(d){ + $scope.reportedTask.push({ + name : d.name, + selftime : d.selftime, + childtime : d.childtime, + subtasks : d.subtasks}); + }); + console.log($scope.reportedTask); + } + + if($scope.modal.radioModel=='Week'){ + $scope.htmlReport = data; + //on l'envoi dans l'interface + angular.forEach(data, function(array,week){ + + + angular.forEach(array, function(rt){ + if(!$scope.reportWeek[week]){$scope.reportWeek[week]=[];} + $scope.reportWeek[week].push({ + name : rt.name, + selftime : rt.selftime, + childtime : rt.childtime, + subtasks : rt.subtasks}); + }); + + }); + console.log($scope.reportWeek); + } + } ); } Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html =================================================================== --- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-07-11 08:01:54 UTC (rev 3014) +++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-07-17 12:28:50 UTC (rev 3015) @@ -1,5 +1,5 @@ <div> - <h2>Rapport :</h2> + <h2>Report :</h2> </div> <hr/> @@ -32,6 +32,22 @@ </p> </div> </div> + <h4>Sort by :</h4> + <div style="margin-left:25px;" > + <div class="btn-group"> + <label class="btn btn-default" ng-model="modal.radioModel" btn-radio="'Project'">Project</label> + <label class="btn btn-default" ng-model="modal.radioModel" btn-radio="'Day'">Day</label> + <label class="btn btn-default" ng-model="modal.radioModel" btn-radio="'Week'">Week</label> + + </div> + <br/> + <div style="margin-left:30px;" class="btn-group"> + <label class="btn btn-default" ng-model="modal.radioModel" btn-radio="'Month'">Month</label> + <label class="btn btn-default" ng-model="modal.radioModel" btn-radio="'Year'">Year</label> + </div> + </div> + + <hr/> <div> <h4><u>Projet :</u></h4> @@ -68,8 +84,8 @@ </div> - <button class="btn btn-primary" ng-click="checkAll()">Check All</button> - <button class="btn btn-primary" ng-click="uncheckAll()">Unckeck All</button> + <button class="btn btn-default btn-sm" ng-click="checkAll()">Check All</button> + <button class="btn btn-default btn-sm" ng-click="uncheckAll()">Unckeck All</button> </div> </div> @@ -77,33 +93,61 @@ <div style="display : inline-block; vertical-align: top; width : 350px"> <alert type="info" > - <span ng-show="!reportTask.length" > - <h4><b>Génération du rapport :</b></h4> + <span contenteditable="true" ng-show="!reportTask.length" > + <h4><b>Generate Report :</b></h4> + + <!--Report by Project --> + <div ng-if="modal.radioModel=='Project'"> <div ng-repeat="task in reportedTask" > - <b>Projet : {{task.name}} </b> + <b>Project : {{task.name}} </b> - <div style="margin-left : 10px" ng-repeat="subtask in task.subtasks" ng-include="'./partials/reportNestedTask.html'"> + <div style="margin-left : 10px" ng-repeat="subtask in task.subtasks" ng-include="'./partials/reportNestedTask.html'"> </div> - + <br/> Temps total : {{task.childtime|time}} <hr/> </div> - </span > - <span ng-show="reportedTask.length == 0" > - Pas de tâches sur cette période. - </span> + <span ng-show="reportedTask.length == 0" > + No timed tasks. + </span> + </div> - </alert> - </div> + <!--Report by week --> + <div ng-if="modal.radioModel=='Week'"> + <div ng-repeat="(week,array) in reportWeek" > + <b> + Week {{week}} </b><br/> + ========== + <br/><br/> + <div style="margin-left : 10px" ng-repeat="(index, task) in array" > + <b>Project : {{task.name}} </b> + <div style="margin-left : 10px" ng-repeat="subtask in task.subtasks" ng-include="'./partials/reportNestedTask.html'"> + + </div> + <br/> + Temps total : {{task.childtime|time}} + <hr/> + </div> + </div> + + <span ng-show="!reportWeek" > + No timed tasks. + </span> + </div> + </span > + </alert> </div> +</div> + + <div class="modal-footer"> - <button class="btn btn-primary" ng-click="generateReport()">Générer</button> - <button class="btn btn-primary" ng-click="close()">Fermer</button> + <button class="btn btn-primary" ng-click="generateReport()">Generate</button> + <button class="btn btn-primary" ng-click="close()">Close</button> </div> \ No newline at end of file
participants (1)
-
obruce@users.chorem.org