Skip to content
Snippets Groups Projects
Commit 30e53465 authored by srosse's avatar srosse
Browse files

OO-1068: filter and search in "My course" and "Authoring env." works better

parent f45f6b0c
No related branches found
No related tags found
No related merge requests found
...@@ -37,7 +37,6 @@ import org.olat.core.gui.components.form.flexible.elements.SingleSelection; ...@@ -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.elements.TextElement;
import org.olat.core.gui.components.form.flexible.impl.FormBasicController; 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.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.FormLinkImpl;
import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit; import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit;
import org.olat.core.gui.components.form.flexible.impl.elements.ItemValidatorProvider; import org.olat.core.gui.components.form.flexible.impl.elements.ItemValidatorProvider;
......
...@@ -34,7 +34,6 @@ import org.olat.core.gui.render.Renderer; ...@@ -34,7 +34,6 @@ import org.olat.core.gui.render.Renderer;
import org.olat.core.gui.render.StringOutput; import org.olat.core.gui.render.StringOutput;
import org.olat.core.gui.render.URLBuilder; import org.olat.core.gui.render.URLBuilder;
import org.olat.core.gui.translator.Translator; import org.olat.core.gui.translator.Translator;
import org.olat.core.util.StringHelper;
/** /**
* Description:<br> * Description:<br>
......
...@@ -169,7 +169,7 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere ...@@ -169,7 +169,7 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere
boolean empty = ftE.getTableDataModel().getRowCount() == 0; boolean empty = ftE.getTableDataModel().getRowCount() == 0;
//filter //filter
if(ftE.isFilterEnabled() && !empty) { if(ftE.isFilterEnabled()) {
List<FlexiTableFilter> filters = ftE.getFilters(); List<FlexiTableFilter> filters = ftE.getFilters();
if(filters != null && filters.size() > 0) { if(filters != null && filters.size() > 0) {
renderFilterDropdown(sb, ftE, filters); renderFilterDropdown(sb, ftE, filters);
...@@ -177,19 +177,20 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere ...@@ -177,19 +177,20 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere
} }
//sort //sort
if(ftE.isSortEnabled() && !empty) { if(ftE.isSortEnabled()) {
List<FlexiTableSort> sorts = ftE.getSorts(); List<FlexiTableSort> sorts = ftE.getSorts();
if(sorts != null && sorts.size() > 0) { if(sorts != null && sorts.size() > 0) {
renderSortDropdown(sb, ftE, sorts); renderSortDropdown(sb, ftE, sorts);
} }
} }
if(ftE.getExportButton() != null && ftE.isExportEnabled() && !empty) { if(ftE.getExportButton() != null && ftE.isExportEnabled()) {
sb.append("<div class='btn-group'>"); sb.append("<div class='btn-group'>");
ftE.getExportButton().setEnabled(!empty);
renderFormItem(renderer, sb, ftE.getExportButton(), ubu, translator, renderResult, args); renderFormItem(renderer, sb, ftE.getExportButton(), ubu, translator, renderResult, args);
sb.append("</div> "); sb.append("</div> ");
} }
if(ftE.getCustomButton() != null && ftE.isCustomizeColumns() && !empty) { if(ftE.getCustomButton() != null && ftE.isCustomizeColumns()) {
sb.append("<div class='btn-group'>"); sb.append("<div class='btn-group'>");
renderFormItem(renderer, sb, ftE.getCustomButton(), ubu, translator, renderResult, args); renderFormItem(renderer, sb, ftE.getCustomButton(), ubu, translator, renderResult, args);
sb.append("</div> "); sb.append("</div> ");
......
...@@ -652,18 +652,25 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle ...@@ -652,18 +652,25 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
&& classicTypeButton.getFormDispatchId().equals(dispatchuri)) { && classicTypeButton.getFormDispatchId().equals(dispatchuri)) {
setRendererType(FlexiTableRendererType.classic); setRendererType(FlexiTableRendererType.classic);
saveCustomSettings(ureq); saveCustomSettings(ureq);
} else { } else if(doSelect(ureq)) {
FlexiTableColumnModel colModel = dataModel.getTableColumnModel(); //do select
for(int i=colModel.getColumnCount(); i-->0; ) { }
FlexiColumnModel col = colModel.getColumnModel(i); }
if(col.getAction() != null) {
String selectedRowIndex = getRootForm().getRequestParameter(col.getAction()); private boolean doSelect(UserRequest ureq) {
if(StringHelper.containsNonWhitespace(selectedRowIndex)) { boolean select = false;
doSelect(ureq, col.getAction(), Integer.parseInt(selectedRowIndex)); 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 @Override
...@@ -723,13 +730,24 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle ...@@ -723,13 +730,24 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
} }
private void doFilter(String filterKey) { private void doFilter(String filterKey) {
String selectedFilterKey = null;
if(filterKey == null) { if(filterKey == null) {
for(FlexiTableFilter filter:filters) { for(FlexiTableFilter filter:filters) {
filter.setSelected(false); filter.setSelected(false);
} }
} else { } else {
for(FlexiTableFilter filter:filters) { 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 ...@@ -737,14 +755,13 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
rowCount = -1; rowCount = -1;
currentPage = 0; currentPage = 0;
currentFirstResult = 0; currentFirstResult = 0;
((FilterableFlexiTableModel)dataModel).filter(selectedFilterKey);
((FilterableFlexiTableModel)dataModel).filter(filterKey);
} else if(dataSource != null) { } else if(dataSource != null) {
rowCount = -1; rowCount = -1;
currentPage = 0; currentPage = 0;
currentFirstResult = 0; currentFirstResult = 0;
List<String> addQueries = Collections.singletonList(filterKey); List<String> addQueries = Collections.singletonList(selectedFilterKey);
dataSource.clear(); dataSource.clear();
dataSource.load(null, addQueries, 0, getPageSize(), orderBy); dataSource.load(null, addQueries, 0, getPageSize(), orderBy);
} }
......
...@@ -214,6 +214,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -214,6 +214,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
return null; return null;
} }
@Override
public void popUpToRootController(UserRequest ureq) { public void popUpToRootController(UserRequest ureq) {
if(stack.size() > 1) { if(stack.size() > 1) {
for(int i=stack.size(); i-->1; ) { for(int i=stack.size(); i-->1; ) {
......
...@@ -124,6 +124,10 @@ public class AuthoringEntryDataSource implements FlexiTableDataSourceDelegate<Au ...@@ -124,6 +124,10 @@ public class AuthoringEntryDataSource implements FlexiTableDataSourceDelegate<Au
if(StringHelper.containsNonWhitespace(query)) { if(StringHelper.containsNonWhitespace(query)) {
try { try {
List<Long> fullTextResults = searchClient.doSearch(query, null, searchParams.getIdentity(), searchParams.getRoles(), 0, 100); 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); searchParams.setRepoEntryKeys(fullTextResults);
} catch (ServiceNotAvailableException | ParseException | QueryException e) { } catch (ServiceNotAvailableException | ParseException | QueryException e) {
log.error("", e); log.error("", e);
......
...@@ -130,6 +130,10 @@ public class DefaultRepositoryEntryDataSource implements FlexiTableDataSourceDel ...@@ -130,6 +130,10 @@ public class DefaultRepositoryEntryDataSource implements FlexiTableDataSourceDel
if(StringHelper.containsNonWhitespace(query)) { if(StringHelper.containsNonWhitespace(query)) {
try { try {
List<Long> fullTextResults = searchClient.doSearch(query, null, searchParams.getIdentity(), searchParams.getRoles(), 0, 100); 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); searchParams.setRepoEntryKeys(fullTextResults);
} catch (ServiceNotAvailableException | ParseException | QueryException e) { } catch (ServiceNotAvailableException | ParseException | QueryException e) {
log.error("", e); log.error("", e);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment