Skip to content

Commit

Permalink
MID-3339 unknown count fix
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 16, 2018
1 parent 1a3cc67 commit 1d134f6
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 79 deletions.
Expand Up @@ -26,10 +26,8 @@
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataViewBase;
import org.apache.wicket.model.AbstractReadOnlyModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
Expand All @@ -43,6 +41,7 @@
* @author Viliam Repan (lazyman)
*/
public class BoxedTablePanel<T> extends BasePanel<T> implements Table {

private static final long serialVersionUID = 1L;

private static final String ID_BOX = "box";
Expand Down Expand Up @@ -233,7 +232,7 @@ private void initLayout(final BoxedTablePanel boxedTablePanel, final Table table

@Override
public String getObject() {
return createCountString(dataTable);
return CountToolbar.createCountString(PagingFooter.this, dataTable);
}
});
count.setOutputMarkupId(true);
Expand Down Expand Up @@ -281,47 +280,5 @@ public Component getFooterCountLabel() {
public Component getFooterPaging() {
return get(ID_FOOTER_CONTAINER).get(ID_PAGING);
}

private String createCountString(IPageable pageable) {
long from = 0;
long to = 0;
long count = 0;

if (pageable instanceof DataViewBase) {
DataViewBase view = (DataViewBase) pageable;

from = view.getFirstItemOffset() + 1;
to = from + view.getItemsPerPage() - 1;
long itemCount = view.getItemCount();
if (to > itemCount) {
to = itemCount;
}
count = itemCount;
} else if (pageable instanceof DataTable) {
DataTable table = (DataTable) pageable;

from = table.getCurrentPage() * table.getItemsPerPage() + 1;
to = from + table.getItemsPerPage() - 1;
long itemCount = table.getItemCount();
if (to > itemCount) {
to = itemCount;
}
count = itemCount;
}

if (count > 0) {
if (count == Integer.MAX_VALUE) {
return PageBase.createStringResourceStatic(PagingFooter.this, "CountToolbar.label.unknownCount",
new Object[] { from, to }).getString();
}

return PageBase.createStringResourceStatic(PagingFooter.this, "CountToolbar.label",
new Object[] { from, to, count }).getString();
}

return PageBase
.createStringResourceStatic(PagingFooter.this, "CountToolbar.noFound", new Object[] {})
.getString();
}
}
}
Expand Up @@ -20,6 +20,7 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
Expand Down Expand Up @@ -57,7 +58,7 @@ public String getObject() {
}));
add(td);

Label count = new Label(ID_COUNT, createModel());
Label count = new Label(ID_COUNT, createModel(this, getTable()));
count.setRenderBodyOnly(true);
td.add(count);

Expand All @@ -78,47 +79,55 @@ public boolean isVisible() {
td.add(popover);
}

private IModel<String> createModel() {
private IModel<String> createModel(Component component, IPageable pageable) {
return new LoadableModel<String>() {

@Override
protected String load() {
long from = 0;
long to = 0;
long count = 0;

IPageable pageable = getTable();
if (pageable instanceof DataViewBase) {
DataViewBase view = (DataViewBase) pageable;

from = view.getFirstItemOffset() + 1;
to = from + view.getItemsPerPage() - 1;
long itemCount = view.getItemCount();
if (to > itemCount) {
to = itemCount;
}
count = itemCount;
} else if (pageable instanceof DataTable) {
DataTable table = (DataTable) pageable;

from = table.getCurrentPage() * table.getItemsPerPage() + 1;
to = from + table.getItemsPerPage() - 1;
long itemCount = table.getItemCount();
if (to > itemCount) {
to = itemCount;
}
count = itemCount;
}

if (count > 0) {
PageBase.createStringResourceStatic(CountToolbar.this, "CountToolbar.label", new Object[]{from, to, count});
}

return PageBase.createStringResourceStatic(CountToolbar.this, "CountToolbar.noFound").getString();
return createCountString(component, pageable);
}
};
}

public static String createCountString(Component component, IPageable pageable){
long from = 0;
long to = 0;
long count = 0;

if (pageable instanceof DataViewBase) {
DataViewBase view = (DataViewBase) pageable;

from = view.getFirstItemOffset() + 1;
to = from + view.getItemsPerPage() - 1;
long itemCount = view.getItemCount();
if (to > itemCount) {
to = itemCount;
}
count = itemCount;
} else if (pageable instanceof DataTable) {
DataTable table = (DataTable) pageable;

from = table.getCurrentPage() * table.getItemsPerPage() + 1;
to = from + table.getItemsPerPage() - 1;
long itemCount = table.getItemCount();
if (to > itemCount) {
to = itemCount;
}
count = itemCount;
}

if (count > 0) {
if (count == Integer.MAX_VALUE) {
return PageBase.createStringResourceStatic(component, "CountToolbar.label.unknownCount",
new Object[] { from, to }).getString();
}

return PageBase.createStringResourceStatic(component, "CountToolbar.label", new Object[]{from, to, count}).getString();
}

return PageBase.createStringResourceStatic(component, "CountToolbar.noFound").getString();
}

protected void pageSizeChanged(AjaxRequestTarget target) {
}

Expand Down

0 comments on commit 1d134f6

Please sign in to comment.