From b3a31e3e815a5fc3afe90882ca56d97da2f63eb8 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 23 Mar 2017 14:42:57 +0100 Subject: [PATCH] OO-2642: don't remove the null order by --- .../flexible/elements/FlexiTableElement.java | 13 +++++++++++++ .../elements/table/FlexiTableElementImpl.java | 18 ++++++++++++++++++ .../portfolio/ui/BinderPageListController.java | 2 +- .../portfolio/ui/MyPageListController.java | 3 ++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java index 26a1ed05aaa..46d0e47b283 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java @@ -380,8 +380,21 @@ public interface FlexiTableElement extends FormItem { public void quickSearch(UserRequest ureq, String search); + /** + * Sort with the specified parameter. A null sort key + * will remove the order by. + * + * @param sortKey + * @param asc + */ public void sort(String sortKey, boolean asc); + /** + * Order by the specified setting. + * @param sortKey The sort key cannot be null. + */ + public void sort(SortKey sortKey); + @Override public void reset(); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java index e555603bd1f..5ad9313b221 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java @@ -984,6 +984,24 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle selectSortOption(sortKey, asc); component.setDirty(true); } + + @Override + public void sort(SortKey sortKey) { + collapseAllDetails(); + orderBy = new SortKey[]{ sortKey }; + + if(dataModel instanceof SortableFlexiTableDataModel) { + ((SortableFlexiTableDataModel<?>)dataModel).sort(sortKey); + } else if(dataSource != null) { + currentPage = 0; + dataSource.clear(); + dataSource.load(getSearchText(), getSelectedFilters(), getConditionalQueries(), 0, getPageSize(), orderBy); + } + reorderMultiSelectIndex(); + selectSortOption(sortKey.getKey(), sortKey.isAsc()); + component.setDirty(true); + } + private void reorderMultiSelectIndex() { if(multiSelectedIndex == null) return; diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java index a64228c2fc9..eecde81b545 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java @@ -349,7 +349,7 @@ public class BinderPageListController extends AbstractPageListController { if(event instanceof FlexiTableRenderEvent) { FlexiTableRenderEvent re = (FlexiTableRenderEvent)event; if(re.getRendererType() == FlexiTableRendererType.custom) { - tableEl.sort(null, false); + tableEl.sort(new SortKey(null, false)); } } else if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; diff --git a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java index 9bd0775b6b2..628ac0b8aaf 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.FormItem; @@ -151,7 +152,7 @@ public class MyPageListController extends AbstractPageListController { if(event instanceof FlexiTableRenderEvent) { FlexiTableRenderEvent re = (FlexiTableRenderEvent)event; if(re.getRendererType() == FlexiTableRendererType.custom) { - tableEl.sort(null, false); + tableEl.sort(new SortKey(null, false)); } } else if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; -- GitLab