fix #991 improve collapsing navigation
This commit is contained in:
parent
0d124b81d9
commit
65ab1b4db0
7 changed files with 199 additions and 17 deletions
|
@ -587,6 +587,9 @@ public class FessLabels extends UserMessages {
|
|||
/** The key of the message: Search */
|
||||
public static final String LABELS_SEARCH = "{labels.search}";
|
||||
|
||||
/** The key of the message: Similar results are displayed. */
|
||||
public static final String LABELS_similar_doc_result_status = "{labels.similar_doc_result_status}";
|
||||
|
||||
/** The key of the message: Results <b>{2}</b><span class="hidden-phone"> -</span> <b>{3}</b> of <b>{1}</b> for <b>{0}</b> */
|
||||
public static final String LABELS_search_result_status = "{labels.search_result_status}";
|
||||
|
||||
|
|
|
@ -186,6 +186,11 @@ public class QueryResponseList implements List<Map<String, Object>> {
|
|||
existPrevPage = start > 0;
|
||||
existNextPage = start < (long) (allPageCount - 1) * (long) pageSize;
|
||||
currentPageNumber = start / pageSize + 1;
|
||||
if (existNextPage && size() < pageSize) {
|
||||
// collapsing
|
||||
existNextPage = false;
|
||||
allPageCount = currentPageNumber;
|
||||
}
|
||||
currentStartRecordNumber = allRecordCount != 0 ? (currentPageNumber - 1) * pageSize + 1 : 0;
|
||||
currentEndRecordNumber = (long) currentPageNumber * pageSize;
|
||||
currentEndRecordNumber = allRecordCount < currentEndRecordNumber ? allRecordCount : currentEndRecordNumber;
|
||||
|
@ -203,7 +208,6 @@ public class QueryResponseList implements List<Map<String, Object>> {
|
|||
for (int i = startPageRangeSize; i <= endPageRangeSize; i++) {
|
||||
pageNumberList.add(String.valueOf(i));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -186,6 +186,7 @@ labels.sidebar.placeholder_search=Search...
|
|||
labels.sidebar.menu=MENU
|
||||
labels.footer.copyright=©2017 <a href="https://github.com/codelibs">CodeLibs Project</a>.
|
||||
labels.search=Search
|
||||
labels.similar_doc_result_status=Similar results are displayed.
|
||||
labels.search_result_status=Results <b>{2}</b><span class="hidden-phone"> -</span> <b>{3}</b> of <b>{1}</b> for <b>{0}</b>
|
||||
labels.search_result_time=({0} sec)
|
||||
labels.prev_page=Prev
|
||||
|
|
|
@ -186,6 +186,7 @@ labels.sidebar.placeholder_search=Search...
|
|||
labels.sidebar.menu=MENU
|
||||
labels.footer.copyright=©2017 <a href="https://github.com/codelibs">CodeLibs Project</a>.
|
||||
labels.search=Search
|
||||
labels.similar_doc_result_status=Similar results are displayed.
|
||||
labels.search_result_status=Results <b>{2}</b><span class="hidden-phone"> -</span> <b>{3}</b> of <b>{1}</b> for <b>{0}</b>
|
||||
labels.search_result_time=({0} sec)
|
||||
labels.prev_page=Prev
|
||||
|
|
|
@ -179,6 +179,7 @@ labels.sidebar.placeholder_search=\u691c\u7d22...
|
|||
labels.sidebar.menu=\u30e1\u30cb\u30e5\u30fc
|
||||
labels.footer.copyright=©2017 <a href="https://github.com/codelibs">CodeLibs Project</a>.
|
||||
labels.search=\u691c\u7d22
|
||||
labels.similar_doc_result_status=\u985e\u4f3c\u3057\u3066\u3044\u308b\u7d50\u679c\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
|
||||
labels.search_result_status=<b>{0}</b> \u306e\u691c\u7d22\u7d50\u679c<span class="br-phone"></span> <b>{1}</b> \u4ef6\u4e2d <b>{2}</b> - <b>{3}</b> \u4ef6\u76ee
|
||||
labels.search_result_time=({0} \u79d2)
|
||||
labels.prev_page=\u524d\u3078
|
||||
|
|
|
@ -11,6 +11,11 @@
|
|||
<la:message key="labels.search_result_time" arg0="${f:h(execTime)}" />
|
||||
</c:if>
|
||||
</p>
|
||||
<c:if test="${! empty sdh }">
|
||||
<p>
|
||||
<la:message key="labels.similar_doc_result_status" />
|
||||
</p>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
<c:if test="${partialResults}">
|
||||
|
|
|
@ -25,7 +25,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
public void test_calculatePageInfo_page0() {
|
||||
QueryResponseList qrList;
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
assertEquals(1, qrList.getCurrentPageNumber());
|
||||
|
@ -40,7 +45,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
public void test_calculatePageInfo_page1() {
|
||||
QueryResponseList qrList;
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 10;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 10;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -52,7 +62,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(10, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 20;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -64,7 +79,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(20, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 21;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -76,7 +96,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(20, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 40;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -88,7 +113,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(20, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 41;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -104,7 +134,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
public void test_calculatePageInfo_page2() {
|
||||
QueryResponseList qrList;
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 21;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -116,7 +151,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(21, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(21, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 40;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -128,7 +168,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(21, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(40, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 41;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -140,7 +185,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals(21, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(40, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 61;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
|
@ -157,14 +207,24 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
QueryResponseList qrList;
|
||||
List<String> pnList;
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 20;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
pnList = qrList.getPageNumberList();
|
||||
assertEquals(1, pnList.size());
|
||||
assertEquals("1", pnList.get(0));
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 61;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
pnList = qrList.getPageNumberList();
|
||||
|
@ -174,7 +234,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals("3", pnList.get(2));
|
||||
assertEquals("4", pnList.get(3));
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 200;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
pnList = qrList.getPageNumberList();
|
||||
|
@ -186,7 +251,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals("5", pnList.get(4));
|
||||
assertEquals("6", pnList.get(5));
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 21;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
pnList = qrList.getPageNumberList();
|
||||
|
@ -194,7 +264,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals("1", pnList.get(0));
|
||||
assertEquals("2", pnList.get(1));
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 61;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
pnList = qrList.getPageNumberList();
|
||||
|
@ -204,7 +279,12 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
assertEquals("3", pnList.get(2));
|
||||
assertEquals("4", pnList.get(3));
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>());
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 20;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 200;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
pnList = qrList.getPageNumberList();
|
||||
|
@ -219,4 +299,91 @@ public class QueryResponseListTest extends UnitFessTestCase {
|
|||
|
||||
}
|
||||
|
||||
public void test_calculatePageInfo_collapse() {
|
||||
QueryResponseList qrList;
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
assertEquals(1, qrList.getCurrentPageNumber());
|
||||
assertEquals(0, qrList.getAllRecordCount());
|
||||
assertEquals(1, qrList.getAllPageCount());
|
||||
assertEquals(false, qrList.isExistPrevPage());
|
||||
assertEquals(false, qrList.isExistNextPage());
|
||||
assertEquals(0, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(0, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 10;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 20;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
assertEquals(1, qrList.getCurrentPageNumber());
|
||||
assertEquals(20, qrList.getAllRecordCount());
|
||||
assertEquals(1, qrList.getAllPageCount());
|
||||
assertEquals(false, qrList.isExistPrevPage());
|
||||
assertEquals(false, qrList.isExistNextPage());
|
||||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(20, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 10;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 21;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
assertEquals(1, qrList.getCurrentPageNumber());
|
||||
assertEquals(21, qrList.getAllRecordCount());
|
||||
assertEquals(1, qrList.getAllPageCount());
|
||||
assertEquals(false, qrList.isExistPrevPage());
|
||||
assertEquals(false, qrList.isExistNextPage());
|
||||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(20, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 21;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 41;
|
||||
qrList.calculatePageInfo(0, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
assertEquals(1, qrList.getCurrentPageNumber());
|
||||
assertEquals(41, qrList.getAllRecordCount());
|
||||
assertEquals(3, qrList.getAllPageCount());
|
||||
assertEquals(false, qrList.isExistPrevPage());
|
||||
assertEquals(true, qrList.isExistNextPage());
|
||||
assertEquals(1, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(20, qrList.getCurrentEndRecordNumber());
|
||||
|
||||
qrList = new QueryResponseList(new ArrayList<Map<String, Object>>()) {
|
||||
@Override
|
||||
public int size() {
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
qrList.allRecordCount = 41;
|
||||
qrList.calculatePageInfo(20, 20);
|
||||
assertEquals(20, qrList.getPageSize());
|
||||
assertEquals(2, qrList.getCurrentPageNumber());
|
||||
assertEquals(41, qrList.getAllRecordCount());
|
||||
assertEquals(2, qrList.getAllPageCount());
|
||||
assertEquals(true, qrList.isExistPrevPage());
|
||||
assertEquals(false, qrList.isExistNextPage());
|
||||
assertEquals(21, qrList.getCurrentStartRecordNumber());
|
||||
assertEquals(40, qrList.getCurrentEndRecordNumber());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue