r401 - in trunk/chorem-webmotion/src/main: java/org/chorem/webmotion/actions/project resources webapp/WEB-INF/jsp/projects webapp/js
Author: ymartel Date: 2014-02-12 18:13:34 +0100 (Wed, 12 Feb 2014) New Revision: 401 Url: http://chorem.org/projects/chorem/repository/revisions/401 Log: in angular project list, add sort and inline edit Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/ProjectsAction.java trunk/chorem-webmotion/src/main/resources/mapping trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/editProject.html trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/projects.jsp trunk/chorem-webmotion/src/main/webapp/js/projectPagination.js Modified: trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/ProjectsAction.java =================================================================== --- trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/ProjectsAction.java 2014-02-07 16:19:35 UTC (rev 400) +++ trunk/chorem-webmotion/src/main/java/org/chorem/webmotion/actions/project/ProjectsAction.java 2014-02-12 17:13:34 UTC (rev 401) @@ -1,5 +1,6 @@ package org.chorem.webmotion.actions.project; +import com.google.common.collect.ImmutableMap; import org.chorem.ChoremClient; import org.chorem.entities.Project; import org.chorem.webmotion.PaginatedResult; @@ -23,7 +24,7 @@ * @param client * @return */ - public PaginatedResult findAllProjects(ChoremClient client, int page, int count, String orderBy, Map<String, String> sorting) { + public PaginatedResult findAllProjects(ChoremClient client, int page, int count, Map<String, String> sorting) { //Ventes de l'année WikittyQuery totalProducts = new WikittyQueryMaker() @@ -36,6 +37,11 @@ PaginatedResult<Project> paginatedResult; if (nbProjects > 0) { + if (sorting == null || sorting.isEmpty()) { + sorting = ImmutableMap.of("name", "asc"); + } + String orderBy = sorting.keySet().iterator().next(); + ElementField orderElement; if (Project.FIELD_PROJECT_DESCRIPTION.equals(orderBy)) { orderElement = Project.ELEMENT_FIELD_PROJECT_DESCRIPTION; @@ -49,9 +55,15 @@ .exteq(Project.EXT_PROJECT) .end() .setOffset((page - 1) * count) - .setLimit(page * count) - .addSortAscending(orderElement); + .setLimit(page * count); + if ("desc".equals(sorting.get(orderBy))) { + projectsQuery.addSortDescending(orderElement); + } else { + //by default : ascending + projectsQuery.addSortAscending(orderElement); + } + WikittyQueryResult<Project> projects = client.findAllByQuery(Project.class, projectsQuery); paginatedResult = new PaginatedResult<Project>(projects.getAll(), page, count, nbProjects); @@ -63,4 +75,11 @@ return paginatedResult; } + public void updateProject(ChoremClient client, String id, String name, String description) { + Project project = client.restore(Project.class, id); + project.setName(name); + project.setDescription(description); + client.store(project); + } + } Modified: trunk/chorem-webmotion/src/main/resources/mapping =================================================================== --- trunk/chorem-webmotion/src/main/resources/mapping 2014-02-07 16:19:35 UTC (rev 400) +++ trunk/chorem-webmotion/src/main/resources/mapping 2014-02-12 17:13:34 UTC (rev 401) @@ -97,6 +97,7 @@ GET /project/json/projects?page={page}&count={count} action:project.ProjectsAction.findAllProjects page=1,count=10 GET /project/projects.html view:projects/projects.jsp GET /project/editProject.html view:projects/editProject.html +PUT /projects/{projectId}/ action:project.ProjectsAction.updateProject # # Wikitty Rest API Modified: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/editProject.html =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/editProject.html 2014-02-07 16:19:35 UTC (rev 400) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/editProject.html 2014-02-12 17:13:34 UTC (rev 401) @@ -1,13 +1,12 @@ <table class="noborder"> <tr> <td>Name:</td> - <td><input type="text" name="name" class="w100" value="{{project.wikitty.target.fieldValue['Project.name']}}"></td> + <td><input type="text" ng-model="editProject.name" name="Project.name" class="w100"></td> <td>Description: </td> - <td><input type="text" name="description" class="w180" value="{{project.wikitty.target.fieldValue['Project.description']}}"></td> + <td><input type="text" ng-model="editProject.description" name="Project.description" class="w180"></td> <td> - <input type="hidden" name="id" value="{{project.wikitty.target.id}}"> - <input type="button" value=" save " onclick="alert('Save :)')"> + <input type="button" value="save" ng-click="updateProject()" /> </td> - <td><input type="button" value=" cancel" ng-click="setEditId(-1)"></td> + <td><input type="button" value="cancel" ng-click="cancelEdit()"></td> </tr> </table> \ No newline at end of file Modified: trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/projects.jsp =================================================================== --- trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/projects.jsp 2014-02-07 16:19:35 UTC (rev 400) +++ trunk/chorem-webmotion/src/main/webapp/WEB-INF/jsp/projects/projects.jsp 2014-02-12 17:13:34 UTC (rev 401) @@ -19,16 +19,15 @@ <tr id="tr{{project.wikitty.target.id}}" ng-class-odd="'odd'" ng-class-even="'even'"> <td data-title="'Name'" sortable="name"> {{project.wikitty.target.fieldValue["Project.name"]}} - {{loading}} </td> <td data-title="'Description'" sortable="description"> {{project.wikitty.target.fieldValue['Project.description']}} </td> <td class="rowTd" ><input type=button id="editRowBtn{{project.wikitty.target.id}}" value="edit" - ng-click="setEditId(project.wikitty.target.id)"></td> + ng-click="setEditProject(project)"></td> </tr> - <tr ng-show="editId===project.wikitty.target.id" ng-if="editId===project.wikitty.target.id"> - <td colspan="7" ng-include src="'editProject.html'">pouet</td> + <tr ng-if="editProject.id===project.wikitty.target.id"> + <td colspan="7" ng-include src="'editProject.html'"></td> </tr> </tbody> </table> Modified: trunk/chorem-webmotion/src/main/webapp/js/projectPagination.js =================================================================== --- trunk/chorem-webmotion/src/main/webapp/js/projectPagination.js 2014-02-07 16:19:35 UTC (rev 400) +++ trunk/chorem-webmotion/src/main/webapp/js/projectPagination.js 2014-02-12 17:13:34 UTC (rev 401) @@ -1,7 +1,8 @@ -angular.module('projectList', ['ngTable', 'ngResource']) -.controller('PageCtrl', - function($scope, $timeout, $resource, ngTableParams) { +var app = angular.module('projectList', ['ngTable', 'ngResource']); +app.controller('PageCtrl', + function($scope, $timeout, $resource, ngTableParams) { + var Api = $resource('json/projects'); $scope.tableParams = new ngTableParams({ @@ -14,15 +15,19 @@ total: 0, // length of data getData: function($defer, params) { - var orderedData = params.orderBy(); + var sorting = params.sorting(); + var orderBy = Object.keys(sorting)[0]; + var ordering = orderBy + "." + sorting[orderBy]; + console.log(ordering); // ajax request to api - Api.get(params.url(), function(data) { + url = params.url(); + url['sorting.' + orderBy] = sorting[orderBy]; + Api.get(url, function(data) { $timeout(function() { // update table params params.total(data.total); // set new data - console.log(data); $scope.projects = data.elements; $defer.resolve(data); }, 500); @@ -30,12 +35,24 @@ } }); - $scope.editId = -1; + $scope.updateProject = function() { - $scope.setEditId = function(pid) { - $scope.editId = pid; - } + saveParams = {extension : 'Project', id : $scope.editProject.id,'Project.name': $scope.editProject.name, 'Project.description': $scope.editProject.description} + $resource('../wikitty/save', saveParams, {'update' : {method:'PUT'}}).update(function(result) { + $scope.tableParams.reload(); + }); + delete $scope.editProject; + }; + $scope.setEditProject = function(project) { + $scope.editProject = {id: project.wikitty.target.id, name: project.wikitty.target.fieldValue['Project.name'], description: project.wikitty.target.fieldValue['Project.description']}; + }; + + $scope.cancelEdit = function() { + delete $scope.editProject; + + }; + }); angular.module('projectList')
participants (1)
-
ymartel@users.chorem.org