Mercurial > hg > LGServices
changeset 17:372dab740f15
new: filters in books page
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 02 Jun 2015 11:56:45 +0200 |
parents | a7e9c1f8edb4 |
children | 881e7591f3e4 |
files | src/main/java/de/mpiwg/web/jsp/BooksPage.java src/main/java/de/mpiwg/web/jsp/JSPProxy.java src/main/java/de/mpiwg/web/jsp/SearchPage.java src/main/webapp/pages/books.jsp |
diffstat | 4 files changed, 284 insertions(+), 176 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/web/jsp/BooksPage.java Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/BooksPage.java Tue Jun 02 11:56:45 2015 +0200 @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import de.mpiwg.gazetteer.db.DBBook; @@ -36,21 +37,143 @@ public static String page = "pages/books.jsp"; private List<DBBook> completeBookList; + private List<DBBook> filteredBookList; + private List<DBBook> displayBookList; private Map<String, DBSectionVersion> sectionVersionMap = null; private int bookNumber; private String tocBookId = new String(); - + + private String bookNameFilter = new String(); + private String dynastyFilter = new String(); + private String adminTypeFilter = new String(); + private String level1Filter = new String(); + private String level2Filter = new String(); + private String periodFilter = new String(); + private String editionFilter = new String(); + public void loadParameters(HttpServletRequest request, HttpServletResponse response){ this.request = request; this.response = response; this.tocBookId = getParameter("tocBookId"); + + this.bookNameFilter = getParameter("bookNameFilter"); + this.dynastyFilter = getParameter("dynastyFilter"); + this.adminTypeFilter = getParameter("adminTypeFilter"); + this.level1Filter = getParameter("level1Filter"); + this.level2Filter = getParameter("level2Filter"); + this.periodFilter = getParameter("periodFilter"); + this.editionFilter = getParameter("editionFilter"); + + } + + + + public void filter(){ + + this.filteredBookList = new ArrayList<DBBook>(); + for(DBBook book : this.completeBookList){ + if(!this.filteredBookList.contains(book)){ + + if( (StringUtils.isEmpty(dynastyFilter) || StringUtils.startsWith(book.getDynasty(), dynastyFilter)) && + (StringUtils.isEmpty(level1Filter) || StringUtils.startsWith(book.getLevel1(), level1Filter)) && + (StringUtils.isEmpty(level2Filter) || StringUtils.startsWith(book.getLevel2(), level2Filter)) && + (StringUtils.isEmpty(periodFilter) || StringUtils.startsWith(book.getPeriod(), periodFilter)) && + (StringUtils.isEmpty(editionFilter) || StringUtils.startsWith(book.getEdition(), editionFilter)) && + (StringUtils.isEmpty(bookNameFilter) || StringUtils.startsWith(book.getName(), bookNameFilter)) && + (StringUtils.isEmpty(adminTypeFilter) || StringUtils.startsWith(book.getAdmin_type(), adminTypeFilter)) + ){ + this.filteredBookList.add(book); + + } + } + } + + if(completeBookList.size() > 0){ + //this.searchMessage = completeSectionList.size() + " section(s) found for the term(s): " + this.searchTerm; + //this.filteringMessage = this.filteredSectionList.size() + " section(s) listed after the filtering"; + //this.paginator.setCurrentPage(0); + //this.paginator.resetNumberOfPages(filteredSectionList.size()); + this.updateCurrentBooks(); + }else{ + //this.searchMessage = "No sections found for the term(s): " + this.searchTerm; + this.filteredBookList = null; + } + } + private void updateCurrentBooks() { + this.displayBookList = this.filteredBookList; + /*this.paginator.initCount(); + int startRecord = this.paginator.getCurrentPage() + * this.paginator.getItemsPerPage(); + + if(this.paginator.getNumberOfPages() == 0){ + this.displaySectionList = new ArrayList<DBSection>(); + }else if((this.paginator.getCurrentPage() + 1) == this.paginator.getNumberOfPages()){ + int mod = this.filteredSectionList.size() % paginator.getItemsPerPage(); + if(mod == 0){ + this.displaySectionList = filteredSectionList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); + }else{ + this.displaySectionList = filteredSectionList.subList(startRecord, startRecord + mod); + } + + }else{ + this.displaySectionList = filteredSectionList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); + } + + for(DBSection section : this.displaySectionList){ + section.setBranches(this.branchesMap.get(section.getId())); + } + */ + } + + + public List<DBBook> getDisplayBookList() { + return displayBookList; + } + + + + public void setDisplayBookList(List<DBBook> displayBookList) { + this.displayBookList = displayBookList; + } + + + public String getDynastyFilter() { + return dynastyFilter; + } + + + public void setDynastyFilter(String dynastyFilter) { + this.dynastyFilter = dynastyFilter; + } + + + public String getAdminTypeFilter() { + return adminTypeFilter; + } + + + public void setAdminTypeFilter(String adminTypeFilter) { + this.adminTypeFilter = adminTypeFilter; + } + + + public String getLevel1Filter() { + return level1Filter; + } + + + public void setLevel1Filter(String level1Filter) { + this.level1Filter = level1Filter; + } + + public String getTocBookId() { return tocBookId; } @@ -75,7 +198,9 @@ public void loadBooks(){ if(this.completeBookList == null){ this.forceLoadBooks(); - } + filter(); + } + } public void forceLoadBooks(){ @@ -146,137 +271,184 @@ public void sortByBookIdUp() { Collections.sort(this.completeBookList, new SortBooksByBookId()); - //filter(); + filter(); } public void sortByBookIdDown() { Collections.sort(this.completeBookList, new SortBooksByBookId()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByBookNameUp(){ Collections.sort(this.completeBookList, new SortBooksByName()); - //filter(); + filter(); } public void sortByBookNameDown(){ Collections.sort(this.completeBookList, new SortBooksByName()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByLevel1Up(){ Collections.sort(this.completeBookList, new SortBooksByLevel1()); - //filter(); + filter(); } public void sortByLevel1Down(){ Collections.sort(this.completeBookList, new SortBooksByLevel1()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByLevel2Up(){ Collections.sort(this.completeBookList, new SortBooksByLevel2()); - //filter(); + filter(); } public void sortByLevel2Down(){ Collections.sort(this.completeBookList, new SortBooksByLevel2()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByPeriodUp(){ Collections.sort(this.completeBookList, new SortBooksByPeriod()); - //filter(); + filter(); } public void sortByPeriodDown(){ Collections.sort(this.completeBookList, new SortBooksByPeriod()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByAdminTypeUp(){ Collections.sort(this.completeBookList, new SortBooksByAdminType()); - //filter(); + filter(); } public void sortByAdminTypeDown(){ Collections.sort(this.completeBookList, new SortBooksByAdminType()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByStartYearUp(){ Collections.sort(this.completeBookList, new SortBooksByStartYear()); - //filter(); + filter(); } public void sortByStartYearDown(){ Collections.sort(this.completeBookList, new SortBooksByStartYear()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByDynastyUp(){ Collections.sort(this.completeBookList, new SortBooksByDynasty()); - //filter(); + filter(); } public void sortByDynastyDown(){ Collections.sort(this.completeBookList, new SortBooksByDynasty()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByEditionUp(){ Collections.sort(this.completeBookList, new SortBooksByEdition()); - //filter(); + filter(); } public void sortByEditionDown(){ Collections.sort(this.completeBookList, new SortBooksByEdition()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByEditorUp(){ Collections.sort(this.completeBookList, new SortBooksByEditor()); - //filter(); + filter(); } public void sortByEditorDown(){ Collections.sort(this.completeBookList, new SortBooksByEditor()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByDateUp(){ Collections.sort(this.completeBookList, new SortBooksByDate()); - //filter(); + filter(); } public void sortByDateDown(){ Collections.sort(this.completeBookList, new SortBooksByDate()); Collections.reverse(completeBookList); - //filter(); + filter(); } public void sortByTocCorrectionUp(){ Collections.sort(this.completeBookList, new SortBooksByTocCorrection()); - //filter(); + filter(); } public void sortByTocCorrectionDown(){ Collections.sort(this.completeBookList, new SortBooksByTocCorrection()); Collections.reverse(completeBookList); - //filter(); + filter(); } - - + public String getBookNameFilter() { + return bookNameFilter; + } + + + + public void setBookNameFilter(String bookNameFilter) { + this.bookNameFilter = bookNameFilter; + } + + + + public String getLevel2Filter() { + return level2Filter; + } + + + + public void setLevel2Filter(String level2Filter) { + this.level2Filter = level2Filter; + } + + + + public String getPeriodFilter() { + return periodFilter; + } + + + + public void setPeriodFilter(String periodFilter) { + this.periodFilter = periodFilter; + } + + + + public String getEditionFilter() { + return editionFilter; + } + + + + public void setEditionFilter(String editionFilter) { + this.editionFilter = editionFilter; + } + + + + }
--- a/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Tue Jun 02 11:56:45 2015 +0200 @@ -158,6 +158,8 @@ } else if (StringUtils.equals(action, "forceReloadBooks")) { getSessionBean().getBooksPage().forceLoadBooks(); + } else if(StringUtils.equals(action, "filter")){ + getSessionBean().getBooksPage().filter(); // Sorting } else if(StringUtils.equals(action, "sortByBookIdUp")){
--- a/src/main/java/de/mpiwg/web/jsp/SearchPage.java Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/java/de/mpiwg/web/jsp/SearchPage.java Tue Jun 02 11:56:45 2015 +0200 @@ -71,6 +71,7 @@ this.adminTypeFilter = getParameter("adminTypeFilter"); this.level1Filter = getParameter("level1Filter"); this.searchIn = getIntParameter("searchIn"); + } public void search(){
--- a/src/main/webapp/pages/books.jsp Mon Jun 01 14:40:48 2015 +0200 +++ b/src/main/webapp/pages/books.jsp Tue Jun 02 11:56:45 2015 +0200 @@ -12,148 +12,7 @@ <jsp:include page="../componentes/headContent.jsp"/> - - <script> - $(function() { - - $( "#dialogMoreInfo" ).dialog({ - autoOpen: false, - modal: true, - position: { my: "center", at: "top", of: window }, - hide: { - effect: "explode", - duration: 1000 - } - }); - - $( ".moreInfo" ).click(function() { - var sectionId = $( this ).data('section-id'); - - var url0 = "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/sectionTableDetails.jsp?sectionId=" + sectionId; - - $.ajax( url0 ) - .done(function(data) { - $( "#dialogMoreInfoTable" ).replaceWith(data); - $( "#dialogMoreInfo" ).dialog( "open" ); - }) - .fail(function() { - console.error("Error calling: " + query); - }) - - - - }); - - $("#searchTerm").autocomplete({ - source : function(request, response) { - var radioButton0 = $("input[type='radio'][name='searchIn']:checked"); - var searchInVal = (radioButton0) ? radioButton0.val() : 0; - $.ajax({ - url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/searchAutocomplete.jsp", - type : "POST", - dataType : "json", - data : { - term : request.term, - searchIn : searchInVal - }, - success : function(data) { - - response($.map(data, function(item) { - return { - label : item.name, - value : item.value, - } - })); - }, - error : function(error) { - alert('error: ' + error); - } - }); - }, - minLength : 0 - }); - - $("#dynastyFilter").autocomplete({ - source : function(request, response) { - $.ajax({ - url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/dynastyAutocomplete.jsp", - type : "POST", - dataType : "json", - data : { - term : request.term - }, - success : function(data) { - - response($.map(data, function(item) { - return { - label : item.name, - value : item.value, - } - })); - }, - error : function(error) { - alert('error: ' + error); - } - }); - }, - minLength : 0 - }); - - $("#level1Filter").autocomplete({ - source : function(request, response) { - $.ajax({ - url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/level1Autocomplete.jsp", - type : "POST", - dataType : "json", - data : { - term : request.term - }, - success : function(data) { - - response($.map(data, function(item) { - return { - label : item.name, - value : item.value, - } - })); - }, - error : function(error) { - alert('error: ' + error); - } - }); - }, - minLength : 0 - }); - - $("#adminTypeFilter").autocomplete({ - source : function(request, response) { - $.ajax({ - url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/adminTypeAutocomplete.jsp", - type : "POST", - dataType : "json", - data : { - term : request.term - }, - success : function(data) { - - response($.map(data, function(item) { - return { - label : item.name, - value : item.value, - } - })); - }, - error : function(error) { - alert('error: ' + error); - } - }); - }, - minLength : 0 - }); - - }); - - </script> + </head> <body> @@ -168,12 +27,14 @@ <% if(sessionBean.getUser() == null) { %> <label>You must login!</label> - <% } else { - sessionBean.getBooksPage().loadParameters(request, response); - sessionBean.getBooksPage().loadBooks(); - // TODO: add a "update" to forceLoadBooks() + <% } else { + if (sessionBean.getBooksPage().getCompleteBookList() == null){ + sessionBean.getBooksPage().loadParameters(request, response); + sessionBean.getBooksPage().loadBooks(); + } + %> - + <div class="subTitel">List of Books <p class="label">Total <%= sessionBean.getBooksPage().getBookNumber() %> books</p> </div> @@ -226,6 +87,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="bookNameFilter" value="<%= sessionBean.getBooksPage().getBookNameFilter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -247,6 +118,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="editionFilter" value="<%= sessionBean.getBooksPage().getEditionFilter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -268,6 +149,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="level1Filter" value="<%= sessionBean.getBooksPage().getLevel1Filter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -289,6 +180,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="level2Filter" value="<%= sessionBean.getBooksPage().getLevel2Filter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -310,6 +211,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="periodFilter" value="<%= sessionBean.getBooksPage().getPeriodFilter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -331,6 +242,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="dynastyFilter" value="<%= sessionBean.getBooksPage().getDynastyFilter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -352,6 +273,16 @@ </table> </td> </tr> + <tr> + <td> + <input type="text" name="adminTypeFilter" value="<%= sessionBean.getBooksPage().getAdminTypeFilter()%>" size="10"/> + </td> + <td> + <input type="image" + onclick="setAction('filter', 'booksForm');" + src="<%=sessionBean.getApplicationBean().getFilterImage()%>"/> + </td> + </tr> </table> </td> <td> @@ -422,6 +353,7 @@ </table> </td> </tr> + </table> </td> <td> @@ -448,7 +380,8 @@ </tr> - <% for(DBBook book : sessionBean.getBooksPage().getCompleteBookList() ) { %> + <% //for(DBBook book : sessionBean.getBooksPage().getCompleteBookList() ) { + for (DBBook book : sessionBean.getBooksPage().getDisplayBookList() ) {%> <tr> <!-- books info -->