r44 - in jtimerhtml5: src/main/java/org/chorem/jtimer src/main/resources/html src/main/resources/html/css src/main/resources/html/css/img src/main/resources/html/js target target/maven-archiver
Author: qmoriceau Date: 2013-06-13 12:12:12 +0200 (Thu, 13 Jun 2013) New Revision: 44 Url: http://chorem.org/projects/incubator/repository/revisions/44 Log: suite de correction des m?\195?\169thodes REST et finalisation de la communication Interface/Programme Added: jtimerhtml5/src/main/resources/html/css/img/ jtimerhtml5/src/main/resources/html/css/img/date_current.png jtimerhtml5/src/main/resources/html/css/img/date_previous.png Modified: jtimerhtml5/src/main/java/org/chorem/jtimer/JTimerHandler.java jtimerhtml5/src/main/resources/html/css/index.css jtimerhtml5/src/main/resources/html/index.html jtimerhtml5/src/main/resources/html/js/index.js jtimerhtml5/target/jtimer-2.0-SNAPSHOT.jar jtimerhtml5/target/maven-archiver/pom.properties Modified: jtimerhtml5/src/main/java/org/chorem/jtimer/JTimerHandler.java =================================================================== --- jtimerhtml5/src/main/java/org/chorem/jtimer/JTimerHandler.java 2013-06-12 13:51:24 UTC (rev 43) +++ jtimerhtml5/src/main/java/org/chorem/jtimer/JTimerHandler.java 2013-06-13 10:12:12 UTC (rev 44) @@ -3,6 +3,7 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.net.URLDecoder; import java.util.List; import javax.servlet.ServletException; @@ -20,6 +21,7 @@ import com.google.gson.ExclusionStrategy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonSyntaxException; public class JTimerHandler extends AbstractHandler { @@ -30,41 +32,48 @@ final String[] path = request.getRequestURI().split("/"); - if (path[1].equals("task") || path[1].equals("project") || path[1].equals("other")){ + if (path[1].equals("tasks")){ String content = new String(); Object result; ExclusionStrategy excludeTasks = new TaskExclusionStrategy(TimerTask.class); Gson gson = new GsonBuilder().setExclusionStrategies(excludeTasks).create(); Gson gson2 = new Gson(); - Object[] param = new String[path.length-3]; - for(int i=0;i<path.length-3;i++){ - param[i]=path[i+3]; + String[] param = new String[path.length-3]; + if(path.length-3>0){ + //problème lorsqu'il n'y a pas de paramètre. + for(int i=0;i<path.length-3;i++){ + param[i]=URLDecoder.decode(path[i+3],"UTF-8"); + } + } - if(path[1].equals("task")){ // test de transformation json to java - param[0] = gson2.fromJson((String) param[0], TimerTask.class); - } - else if(path[1].equals("project")){ - param[0] = gson2.fromJson((String) param[0], TimerProject.class); - } + List<Method> m = ObjectUtil.getMethod(Storage.class,path[2],false); + Method mcall = m.get(0); + Class<?>[] type = mcall.getParameterTypes(); + try { - result = ObjectUtil.call(storage, m.get(0), (String[]) param); + if(path.length-3>0){ + result = mcall.invoke(storage, gson2.fromJson(param[0], type[0])); + } + else { + result = mcall.invoke(storage, null); + } content = gson.toJson(result); - } catch (IllegalAccessException e) { + System.out.println(content); + } catch (JsonSyntaxException e1) { // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalArgumentException e) { + e1.printStackTrace(); + } catch (IllegalAccessException e1) { // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InvocationTargetException e) { + e1.printStackTrace(); + } catch (IllegalArgumentException e1) { // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InstantiationException e) { + e1.printStackTrace(); + } catch (InvocationTargetException e1) { // TODO Auto-generated catch block - e.printStackTrace(); + e1.printStackTrace(); } - response.setContentType("text/json;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); Added: jtimerhtml5/src/main/resources/html/css/img/date_current.png =================================================================== (Binary files differ) Property changes on: jtimerhtml5/src/main/resources/html/css/img/date_current.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: jtimerhtml5/src/main/resources/html/css/img/date_previous.png =================================================================== (Binary files differ) Property changes on: jtimerhtml5/src/main/resources/html/css/img/date_previous.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: jtimerhtml5/src/main/resources/html/css/index.css =================================================================== --- jtimerhtml5/src/main/resources/html/css/index.css 2013-06-12 13:51:24 UTC (rev 43) +++ jtimerhtml5/src/main/resources/html/css/index.css 2013-06-13 10:12:12 UTC (rev 44) @@ -1,7 +1,6 @@ html,body { margin:0; - padding-top:25px; - padding-bottom:10px; + padding: 25px 0px 10px 0px; } footer { @@ -32,11 +31,13 @@ .colHT { width:30%; display:inline-block; + text-align:center; } .optHT { width:8%; display:inline-block; + text-align:center; } #opts span { @@ -66,7 +67,6 @@ } #headTasks { - text-align:center; margin-bottom:8px; } @@ -181,6 +181,7 @@ #treeTasks { list-style-type: none; + margin:0; } #editionApply { Modified: jtimerhtml5/src/main/resources/html/index.html =================================================================== --- jtimerhtml5/src/main/resources/html/index.html 2013-06-12 13:51:24 UTC (rev 43) +++ jtimerhtml5/src/main/resources/html/index.html 2013-06-13 10:12:12 UTC (rev 44) @@ -6,7 +6,7 @@ <link rel="stylesheet" href="jtimer.css"/> <script src="jtimer.js"></script> </head> - <body> + <body onload="getProjects()"> @@ -47,21 +47,16 @@ <div class="buttons"> - Nouveau projet : <input class="input-medium" id="newProject" title="Nom du nouveau Projet"><button id="createP" class="btn btn-primary" onclick="newProject"> Créer le projet</button> + Nouveau projet : <input class="input-medium" id="newProject" title="Nom du nouveau Projet"><button id="createP" class="btn btn-primary" onclick="newProject()"> Créer le projet</button> </div> <div id="tabTask"> <!-- Arborescence des Tasks --> - <div id="headTasks"> - <span class='colHT'>Projet et tâches</span> - <span class='colHT'>Aujourd'hui</span> - <span class='colHT'>Total</span> - <span class="optHT">Options</span> - </div> - <ul id="treeTasks"><li> - <div class="selec" id="p1"> + <div id="headTasks"><span class='colHT'>Projet et tâches</span><span class='colHT'>Aujourd'hui</span><span class='colHT'>Total</span><span class="optHT">Options</span></div> + <ul id="treeTasks"><!--<li> + <!--<div class="selec" id="p1"> <span class='col'><span>▼</span>html5</span> <span class='col' id="aujp1">01:24:58</span> <span class='col' id="totp1">13:25:32</span> @@ -93,7 +88,7 @@ <span class='col' id="totp4">00:00:00</span> <span class="optP"><button class="btn btn-info"></button></span> </div> - </li> + </li>--> </ul> </div> <footer class="footer"> @@ -145,13 +140,13 @@ <input type="text" id="nameTask" name="newNameTask" value="x"> <!-- Calendrier à date selectionnable --> <div id="datepicker2"></div> - Temps: - <input id="spinnerh" type="text" name="hour" value="00" size="2">: - <input id="spinnerm" type="text" name="minutes" value="00" size="2">: - <input id="spinners" type="text" name="seconds" value="00" size="2"><br> - Note:<textarea rows="4" id="noteTache"></textarea><br> - <input type="button" id="editionApply" value="Appliquer"> - <input type="reset" id="editionCancel" value="Annuler"> + Temps: + <input id="spinnerh" type="text" name="hour" value="00" maxlength="2">: + <input id="spinnerm" type="text" name="minutes" value="00" maxlength="2">: + <input id="spinners" type="text" name="seconds" value="00" maxlength="2"><br> + Note:<textarea rows="4" id="noteTache"></textarea><br> + <input type="button" id="editionApply" value="Appliquer"> + <input type="reset" id="editionCancel" value="Annuler"> </div> @@ -168,7 +163,6 @@ <div id="alerts" title="Alertes de la tâche"> <span id="blockAlerte"> <b>Listes des alertes :</b> - <input type="button" id="alertCancel" value="Annuler" OnClick="javascript:window.close()"> <input type="button" id="alertSave" value="Sauver"> </span> <br> @@ -182,31 +176,31 @@ <div id="optP"> <li><a title="Création d'une nouvelle tâche" href="javascript:newTask()">Nouvelle tâche</a></li> - <li><a class="optionNotTask" title="Édition du projet" href="javascript:edProject()">Éditer le Projet</a></li> - <li><a class="optionNotTask" title="Ouvrir ou fermer le projet" href="javascript:ofProject()">Ouvrir/Fermer le Projet</a></li> - <li><a class="optionNotTask" title="Suppression du Projet" href="javascript:supprProject()">Supprimer le projet</a></li> + <li><a title="Édition du projet" href="javascript:edProject()">Éditer le Projet</a></li> + <li><a title="Ouvrir ou fermer le projet" href="javascript:ofProject()">Ouvrir/Fermer le Projet</a></li> + <li><a title="Suppression du Projet" href="javascript:supprProject()">Supprimer le projet</a></li> </div> <div id="optT"> <li><a title="Création d'une nouvelle tâche" href="javascript:newTask()">Nouvelle tâche</a></li> - <li><a class="optionNotProject" title="Édition de la tâche" href="javascript:edTask()">Éditer la tâche</a></li> - <li><a class="optionNotProject" title="Ouvrir ou fermer la tâche" href="javascript:ofTask()">Ouvrir/Fermer la tâche</a></li> - <li><a class="optionNotProject" title="Suppression de la tâche" href="javascript:supprTask()">Supprimer la tâche</a></li> + <li><a title="Édition de la tâche" href="javascript:edTask()">Éditer la tâche</a></li> + <li><a title="Ouvrir ou fermer la tâche" href="javascript:ofTask()">Ouvrir/Fermer la tâche</a></li> + <li><a title="Suppression de la tâche" href="javascript:supprTask()">Supprimer la tâche</a></li> - <li><a class="optionNotProject" title="Démarrage de la tâche" href="javascript:startTask()">Démarrer</a></li> - <li><a class="optionNotProject" title="Arrêt de la tâche" href="javascript:stopTask()">Arrêter</a></li> + <li><a title="Démarrage de la tâche" href="javascript:startTask()">Démarrer</a></li> + <li><a title="Arrêt de la tâche" href="javascript:stopTask()">Arrêter</a></li> - <li><a class="optionNotProject" title="Ajout d'une annotation" href="javascript:addAnnotation()">Ajouter une annotation</a></li> - <li><a class="optionNotProject" title="Édition des alertes" href="javascript:edAlerts()">Éditer les Alertes</a></li> - <li><a class="optionNotProject" title="Ajout de 1 minute à la tâche" href="javascript:addsou(1)">Ajouter 1 minute</a></li> - <li><a class="optionNotProject" title="Ajout de 5 minutes à la tâche" href="javascript:addsou(5)">Ajouter 5 minutes</a></li> - <li><a class="optionNotProject" title="Ajout de 30 minutes à la tâche" href="javascript:addsou(30)">Ajouter 30 minutes</a></li> - <li><a class="optionNotProject" title="Enlève 1 minute à la tâche" href="javascript:addsou(-1)">Enlever 1 minute</a></li> - <li><a class="optionNotProject" title="Enlève 5 minutes à la tâche" href="javascript:addsou(-5)">Enlever 5 minutes</a></li> - <li><a class="optionNotProject" title="Enlève 30 minutes à la tâche" href="javascript:addsou(-30)">Enlever 30 minutes</a></li> - <li><a class="optionNotProject" title="Remet la tâche à zero" href="javascript:zero()">Remettre à Zero</a></li> + <li><a title="Ajout d'une annotation" href="javascript:addAnnotation()">Ajouter une annotation</a></li> + <li><a title="Édition des alertes" href="javascript:edAlerts()">Éditer les Alertes</a></li> + <li><a title="Ajout de 1 minute à la tâche" href="javascript:addsou(1)">Ajouter 1 minute</a></li> + <li><a title="Ajout de 5 minutes à la tâche" href="javascript:addsou(5)">Ajouter 5 minutes</a></li> + <li><a title="Ajout de 30 minutes à la tâche" href="javascript:addsou(30)">Ajouter 30 minutes</a></li> + <li><a title="Enlève 1 minute à la tâche" href="javascript:addsou(-1)">Enlever 1 minute</a></li> + <li><a title="Enlève 5 minutes à la tâche" href="javascript:addsou(-5)">Enlever 5 minutes</a></li> + <li><a title="Enlève 30 minutes à la tâche" href="javascript:addsou(-30)">Enlever 30 minutes</a></li> + <li><a title="Remet la tâche à zero" href="javascript:zero()">Remettre à Zero</a></li> </div> Modified: jtimerhtml5/src/main/resources/html/js/index.js =================================================================== --- jtimerhtml5/src/main/resources/html/js/index.js 2013-06-12 13:51:24 UTC (rev 43) +++ jtimerhtml5/src/main/resources/html/js/index.js 2013-06-13 10:12:12 UTC (rev 44) @@ -7,15 +7,23 @@ function getProjects(){ - $.getJSON('http://localhost:8080/other/getProjects',function(data) { + $.getJSON('http://localhost:8080/tasks/getProjects',function(data) { for (var i in data){ tabProjects[data[i].number] = data[i]; } }); + displayProjects(); } +function displayProjects(){ + $("#treeTasks").html(""); + for (var p in tabProjects){ + $("#treeTasks").append("<li><div class='selec' id='p"+p+"'><span class='col'><span>▼</span>"+tabProjects[p].name+"</span><span class='col' id='aujp"+p+"'>01:24:58</span><span class='col' id='totp"+p+"'>13:25:32</span><span class='optP'><button class='btn btn-info'></button></span></div></li>"); + } +} + function getChilds(p){ - $.getJSON('http://localhost:8080/task/getTasks/'+p,function(data) { + $.getJSON('http://localhost:8080/tasks/getTasks/'+p,function(data) { tabTasks[p] = new Array(); for (var i in data){ tabTasks[p][i] = data[i]; @@ -142,16 +150,13 @@ /* Différente actions des menus et des boutons */ function newProject(parent){ - var nameNewProject = prompt("Nom du Projet à créer :", "" ); - if (nameNewProject=="") { - alert("Erreur : Le nom est vide !"); - } - else { - var newproject = "{}"; //le nouveau projet en format json - $.put('http://localhost:8080/other/addProject/'+newproject,function(data){ - alert(data); - }); - } + var nameNewProject = $("#newProject").val(); + var newproject = "{'name'='"+nameNewProject+"', 'number'='-1', 'closed'=false, 'allDaysTime'={}, 'allDaysAnnotations'={}, 'alerts'=[]}"; //le nouveau projet en format json + $.ajax({ + type: 'PUT', + url: 'http://localhost:8080/tasks/addProject/'+newproject + }); + getProjects(); // vérifier si un autre projet n'a pas déjà ce nom } @@ -161,24 +166,27 @@ alert("Erreur : Le nom est vide !"); } else { - $.post('http://localhost:8080/project/modifyProject/'+tabProjects[elemSelec.substring(1,elemSelec.length)],function(data){ - alert(data); + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/modifyProject/'+tabProjects[elemSelec.substring(1,elemSelec.length)] }); } // vérifier si un autre projet n'a pas déjà ce nom } function ofProject(){ - $.post('http://localhost:8080/task/changeClosedState/'+tabProjects[elemSelec.substring(1,elemSelec.length)],function(data){ - alert(data); - }); + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/changeClosedState/'+tabProjects[elemSelec.substring(1,elemSelec.length)] + }); } function supprProject() { var bool = confirm("Voulez-vous supprimer le Projet x ?") if (bool){ - $.delete('http://localhost:8080/project/deleteProject/'+elemSelec.substring(1,elemSelec.length),function(data){ - alert(data); + $.ajax({ + type: 'DELETE', + url: 'http://localhost:8080/tasks/deleteProject/'+elemSelec.substring(1,elemSelec.length) }); } } @@ -189,47 +197,56 @@ alert("Erreur : Le nom est vide !"); } else { - $.put('http://localhost:8080/task/addTask/'+nameNewTask,function(data){ - alert(data); + $.ajax({ + type: 'PUT', + url: 'http://localhost:8080/tasks/addTask/'+nameNewTask }); } // vérifier si une autre tâche n'a pas déjà ce nom au même niveau } function ofTask(){ - $.post('http://localhost:8080/task/changeClosedState/'+elemSelec.substring(1,elemSelec.length),function(data){ - alert(data); + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/changeClosedState/'+elemSelec.substring(1,elemSelec.length) }); } function supprTask(){ var bool = confirm("Voulez-vous supprimer la tâche x ?"); if (bool){ - $.delete('http://localhost:8080/task/deleteTask/'+elemSelec.substring(1,elemSelec.length),function(data){ - alert(data); + $.ajax({ + type: 'DELETE', + url: 'http://localhost:8080/tasks/deleteTask/'+elemSelec.substring(1,elemSelec.length) }); } } function saveTask(){ - + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/save'+elemSelec.substring(1,elemSelec.length) + }); } function fusion(){ - $.post('http://localhost:8080/task/fusion',function(data){ - alert(data); + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/fusion' }); } function systray(){ - $.post('http://localhost:8080/task/systray',function(data){ - alert(data); + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/systray' }); } function dStartWeek(day){ - $.post('http://localhost:8080/task/dStartWeek/'+day,function(data){ - alert(data); + $.ajax({ + type: 'POST', + url: 'http://localhost:8080/tasks/dStartWeek/'+day }); } @@ -258,10 +275,13 @@ function add(){ rows++; - $('#listAlerts').append("<div id='num"+rows+"'><select><option value='rdt'>REACH_DAILY_TIME</option><option value='rtt'>REACH_TOTAL_TIME</option></select><input class='spinnerh' type='text' size='2'>h<input class='spinnerm' type='text' size='2'>m<input class='spinners' type='text' size='2'>s <input type='button' value='X' onclick='suppr("+rows+")'></div>"); + $('#listAlerts').append("<div id='num"+rows+"'><select><option value='rdt'>REACH_DAILY_TIME</option><option value='rtt'>REACH_TOTAL_TIME</option></select><input class='spinnerh' type='text'>h<input class='spinnerm' type='text'>m<input class='spinners' type='text'>s <input type='button' value='X' onclick='suppr("+rows+")'></div>"); $(".spinnerh").spinner({ min: 0}); $(".spinnerm").spinner({ min: 0, max: 59 }); $(".spinners").spinner({ min: 0, max: 59 }); + $(".spinnerh").css("width","20"); + $(".spinnerm").css("width","20"); + $(".spinners").css("width","20"); } function suppr(n){ @@ -303,14 +323,17 @@ $("#spinnerh").spinner({ min: 0, max: 23 }); $("#spinnerm").spinner({ min: 0, max: 59 }); $("#spinners").spinner({ min: 0, max: 59 }); + $("#spinnerh").css("width","20"); + $("#spinnerm").css("width","20"); + $("#spinners").css("width","20"); $( "#editionTask" ).dialog({ autoOpen: false }); - /*$( "#createP" ).click(function() {$( "#editionTask" ).dialog( "open" );});*/ + /* $( "#createP" ).click(function() {$( "#editionTask" ).dialog( "open" );}); */ $( "#aboutPopUp" ).dialog({ autoOpen: false }); $( "#alerts" ).dialog({ autoOpen: false }); - $( "#createP" ).click(function() {$( "#alerts" ).dialog( "open" );}); + /* $( "#createP" ).click(function() {$( "#alerts" ).dialog( "open" );}); */ $(".brand").css("color","#ff7a04"); $("#opts").css("display","none"); Modified: jtimerhtml5/target/jtimer-2.0-SNAPSHOT.jar =================================================================== (Binary files differ) Modified: jtimerhtml5/target/maven-archiver/pom.properties =================================================================== --- jtimerhtml5/target/maven-archiver/pom.properties 2013-06-12 13:51:24 UTC (rev 43) +++ jtimerhtml5/target/maven-archiver/pom.properties 2013-06-13 10:12:12 UTC (rev 44) @@ -1,5 +1,5 @@ #Generated by Maven -#Wed Jun 12 11:21:21 CEST 2013 +#Thu Jun 13 09:55:04 CEST 2013 version=2.0-SNAPSHOT groupId=org.chorem artifactId=jtimer
participants (1)
-
qmoriceau@users.chorem.org