From 30e5346546a89bd641c24cea22493b52002664cd Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 30 Jun 2014 14:44:40 +0200 Subject: [PATCH] OO-1068: filter and search in "My course" and "Authoring env." works better --- .../de/bps/course/nodes/ll/LLEditForm.java | 1 - .../impl/elements/TextElementRenderer.java | 1 - .../table/AbstractFlexiTableRenderer.java | 9 ++-- .../elements/table/FlexiTableElementImpl.java | 43 +++++++++++++------ .../stack/BreadcrumbedStackedPanel.java | 1 + .../ui/author/AuthoringEntryDataSource.java | 4 ++ .../DefaultRepositoryEntryDataSource.java | 4 ++ 7 files changed, 44 insertions(+), 19 deletions(-) diff --git a/src/main/java/de/bps/course/nodes/ll/LLEditForm.java b/src/main/java/de/bps/course/nodes/ll/LLEditForm.java index 1751e5dbd09..d8fc9119361 100644 --- a/src/main/java/de/bps/course/nodes/ll/LLEditForm.java +++ b/src/main/java/de/bps/course/nodes/ll/LLEditForm.java @@ -37,7 +37,6 @@ import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; -import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.elements.FormLinkImpl; import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit; import org.olat.core.gui.components.form.flexible.impl.elements.ItemValidatorProvider; diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java index b356fbd8d8c..708d5603326 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java @@ -34,7 +34,6 @@ import org.olat.core.gui.render.Renderer; import org.olat.core.gui.render.StringOutput; import org.olat.core.gui.render.URLBuilder; import org.olat.core.gui.translator.Translator; -import org.olat.core.util.StringHelper; /** * Description:<br> diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java index 732971802c8..562511e542d 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java @@ -169,7 +169,7 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere boolean empty = ftE.getTableDataModel().getRowCount() == 0; //filter - if(ftE.isFilterEnabled() && !empty) { + if(ftE.isFilterEnabled()) { List<FlexiTableFilter> filters = ftE.getFilters(); if(filters != null && filters.size() > 0) { renderFilterDropdown(sb, ftE, filters); @@ -177,19 +177,20 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere } //sort - if(ftE.isSortEnabled() && !empty) { + if(ftE.isSortEnabled()) { List<FlexiTableSort> sorts = ftE.getSorts(); if(sorts != null && sorts.size() > 0) { renderSortDropdown(sb, ftE, sorts); } } - if(ftE.getExportButton() != null && ftE.isExportEnabled() && !empty) { + if(ftE.getExportButton() != null && ftE.isExportEnabled()) { sb.append("<div class='btn-group'>"); + ftE.getExportButton().setEnabled(!empty); renderFormItem(renderer, sb, ftE.getExportButton(), ubu, translator, renderResult, args); sb.append("</div> "); } - if(ftE.getCustomButton() != null && ftE.isCustomizeColumns() && !empty) { + if(ftE.getCustomButton() != null && ftE.isCustomizeColumns()) { sb.append("<div class='btn-group'>"); renderFormItem(renderer, sb, ftE.getCustomButton(), ubu, translator, renderResult, args); sb.append("</div> "); 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 2044ae19241..749371868bc 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 @@ -652,18 +652,25 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle && classicTypeButton.getFormDispatchId().equals(dispatchuri)) { setRendererType(FlexiTableRendererType.classic); saveCustomSettings(ureq); - } else { - FlexiTableColumnModel colModel = dataModel.getTableColumnModel(); - for(int i=colModel.getColumnCount(); i-->0; ) { - FlexiColumnModel col = colModel.getColumnModel(i); - if(col.getAction() != null) { - String selectedRowIndex = getRootForm().getRequestParameter(col.getAction()); - if(StringHelper.containsNonWhitespace(selectedRowIndex)) { - doSelect(ureq, col.getAction(), Integer.parseInt(selectedRowIndex)); - } + } else if(doSelect(ureq)) { + //do select + } + } + + private boolean doSelect(UserRequest ureq) { + boolean select = false; + FlexiTableColumnModel colModel = dataModel.getTableColumnModel(); + for(int i=colModel.getColumnCount(); i-->0; ) { + FlexiColumnModel col = colModel.getColumnModel(i); + if(col.getAction() != null) { + String selectedRowIndex = getRootForm().getRequestParameter(col.getAction()); + if(StringHelper.containsNonWhitespace(selectedRowIndex)) { + doSelect(ureq, col.getAction(), Integer.parseInt(selectedRowIndex)); + select = true; } } } + return select; } @Override @@ -723,13 +730,24 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle } private void doFilter(String filterKey) { + String selectedFilterKey = null; if(filterKey == null) { for(FlexiTableFilter filter:filters) { filter.setSelected(false); } } else { for(FlexiTableFilter filter:filters) { - filter.setSelected(filter.getFilter().equals(filterKey)); + boolean selected = filter.getFilter().equals(filterKey); + if(selected) { + if(filter.isSelected()) { + filter.setSelected(false); + } else { + filter.setSelected(true); + selectedFilterKey = filterKey; + } + } else { + filter.setSelected(false); + } } } @@ -737,14 +755,13 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle rowCount = -1; currentPage = 0; currentFirstResult = 0; - - ((FilterableFlexiTableModel)dataModel).filter(filterKey); + ((FilterableFlexiTableModel)dataModel).filter(selectedFilterKey); } else if(dataSource != null) { rowCount = -1; currentPage = 0; currentFirstResult = 0; - List<String> addQueries = Collections.singletonList(filterKey); + List<String> addQueries = Collections.singletonList(selectedFilterKey); dataSource.clear(); dataSource.load(null, addQueries, 0, getPageSize(), orderBy); } diff --git a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java index b75151b3412..05ca9042b13 100644 --- a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java +++ b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java @@ -214,6 +214,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre return null; } + @Override public void popUpToRootController(UserRequest ureq) { if(stack.size() > 1) { for(int i=stack.size(); i-->1; ) { diff --git a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java index db24ae9be16..e0c2762f468 100644 --- a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java +++ b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDataSource.java @@ -124,6 +124,10 @@ public class AuthoringEntryDataSource implements FlexiTableDataSourceDelegate<Au if(StringHelper.containsNonWhitespace(query)) { try { List<Long> fullTextResults = searchClient.doSearch(query, null, searchParams.getIdentity(), searchParams.getRoles(), 0, 100); + if(fullTextResults.isEmpty()) { + count = new Integer(0); + return new DefaultResultInfos<AuthoringEntryRow>(); + } searchParams.setRepoEntryKeys(fullTextResults); } catch (ServiceNotAvailableException | ParseException | QueryException e) { log.error("", e); diff --git a/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java b/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java index 0bda663e21d..5a436e3fd73 100644 --- a/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java +++ b/src/main/java/org/olat/repository/ui/list/DefaultRepositoryEntryDataSource.java @@ -130,6 +130,10 @@ public class DefaultRepositoryEntryDataSource implements FlexiTableDataSourceDel if(StringHelper.containsNonWhitespace(query)) { try { List<Long> fullTextResults = searchClient.doSearch(query, null, searchParams.getIdentity(), searchParams.getRoles(), 0, 100); + if(fullTextResults.isEmpty()) { + count = new Integer(0); + return new DefaultResultInfos<RepositoryEntryRow>(); + } searchParams.setRepoEntryKeys(fullTextResults); } catch (ServiceNotAvailableException | ParseException | QueryException e) { log.error("", e); -- GitLab