protected void renderBody( Renderer renderer, StringOutput target, FlexiTableComponent ftC, URLBuilder ubu, Translator translator, RenderResult renderResult) { String id = ftC.getFormDispatchId(); FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); FlexiTableDataModel<?> dataModel = ftE.getTableDataModel(); // the really selected rowid (from the tabledatamodel) int firstRow = ftE.getFirstRow(); int maxRows = ftE.getMaxRows(); int rows = dataModel.getRowCount(); int lastRow = Math.min(rows, firstRow + maxRows); String rowIdPrefix = "row_" + id + "-"; for (int i = firstRow; i < lastRow; i++) { if (dataModel.isRowLoaded(i)) { renderRow(renderer, target, ftC, rowIdPrefix, i, ubu, translator, renderResult); } } // end of table table }
private void renderPagesLinks(StringOutput sb, FlexiTableComponent ftC, Translator translator) { FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); int pageSize = ftE.getPageSize(); FlexiTableDataModel<?> dataModel = ftE.getTableDataModel(); int rows = dataModel.getRowCount(); if (rows > 20) { renderPageSize(sb, ftC, translator); } sb.append("<ul class='pagination'>"); if (pageSize > 0 && rows > pageSize) { int page = ftE.getPage(); int maxPage = (int) Math.ceil(((double) rows / (double) pageSize)); renderPageBackLink(sb, ftC, page); renderPageNumberLinks(sb, ftC, page, maxPage); renderPageNextLink(sb, ftC, page, maxPage); } sb.append("</ul>"); }
private void renderPageSize(StringOutput sb, FlexiTableComponent ftC, Translator translator) { FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); FlexiTableDataModel<?> dataModel = ftE.getTableDataModel(); Form theForm = ftE.getRootForm(); String dispatchId = ftE.getFormDispatchId(); int pageSize = ftE.getPageSize(); int firstRow = ftE.getFirstRow(); int maxRows = ftE.getMaxRows(); int rows = dataModel.getRowCount(); int lastRow = Math.min(rows, firstRow + maxRows); sb.append("<div class='o_table_rows_infos'>"); sb.append( translator.translate( "page.size.a", new String[] { Integer.toString(firstRow + 1), // for humans Integer.toString(lastRow), Integer.toString(rows) })) .append(" "); sb.append( "<div class='btn-group dropup'><button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-expanded='false'>") .append(" <span>"); if (pageSize < 0) { sb.append(translator.translate("show.all")); } else { sb.append(Integer.toString(pageSize)); } sb.append("</span> <span class='caret'></span></button>") .append("<ul class='dropdown-menu' role='menu'>"); int[] sizes = new int[] {20, 50, 100, 250}; for (int size : sizes) { sb.append("<li><a href=\"javascript:") .append( FormJSHelper.getXHRFnCallFor( theForm, dispatchId, 1, new NameValuePair("pagesize", Integer.toString(size)))) .append("\" onclick=\"return o2cl();\">") .append(Integer.toString(size)) .append("</a></li>"); } if (ftE.isShowAllRowsEnabled()) { sb.append("<li><a href=\"javascript:") .append( FormJSHelper.getXHRFnCallFor( theForm, dispatchId, 1, new NameValuePair("pagesize", "all"))) .append("\" onclick=\"return o2cl();\">") .append(translator.translate("show.all")) .append("</a></li>"); } sb.append("</ul></div>") .append(" ") .append(translator.translate("page.size.b")) .append("</div> "); }