diff --git a/src/main/java/org/olat/modules/quality/ui/DataCollectionDataModel.java b/src/main/java/org/olat/modules/quality/ui/DataCollectionDataModel.java index f5f37549cecacc39aa544a4f85ec3e683894f586..2344527b023f76208dc5434f9391930181eeb1aa 100644 --- a/src/main/java/org/olat/modules/quality/ui/DataCollectionDataModel.java +++ b/src/main/java/org/olat/modules/quality/ui/DataCollectionDataModel.java @@ -82,6 +82,17 @@ public class DataCollectionDataModel extends DefaultFlexiTableDataSourceModel<Da public DefaultFlexiTableDataSourceModel<DataCollectionRow> createCopyWithEmptyList() { return new DataCollectionDataModel(getSourceDelegate(), getTableColumnModel(), translator); } + + @Override + public DataCollectionDataSource getSourceDelegate() { + return (DataCollectionDataSource)super.getSourceDelegate(); + } + + @Override + public void clear() { + super.clear(); + getSourceDelegate().resetCount(); + } public enum DataCollectionCols implements FlexiSortableColumnDef { key("data.collection.id"), diff --git a/src/main/java/org/olat/modules/quality/ui/DataCollectionDataSource.java b/src/main/java/org/olat/modules/quality/ui/DataCollectionDataSource.java index 579ca0532e6889998eca9cd01b8f5837a6253e6a..16c591c1d5ed22d21e1f910e693df0e1fba54181 100644 --- a/src/main/java/org/olat/modules/quality/ui/DataCollectionDataSource.java +++ b/src/main/java/org/olat/modules/quality/ui/DataCollectionDataSource.java @@ -46,6 +46,7 @@ public class DataCollectionDataSource implements FlexiTableDataSourceDelegate<Da private final Translator translator; private final QualityDataCollectionViewSearchParams defaultSearchParams; private QualityDataCollectionViewSearchParams searchParams; + private Integer count; @Autowired private QualityService qualityService; @@ -63,11 +64,19 @@ public class DataCollectionDataSource implements FlexiTableDataSourceDelegate<Da this.searchParams.setReportAccessIdentity(defaultSearchParams.getReportAccessIdentity()); this.searchParams.setLearnResourceManagerOrganisationRefs(defaultSearchParams.getLearnResourceManagerOrganisationRefs()); this.searchParams.setIgnoreReportAccessRelationRole(defaultSearchParams.isIgnoreReportAccessRelationRole()); + count = null; + } + + public void resetCount() { + count = null; } @Override public int getRowCount() { - return qualityService.getDataCollectionCount(searchParams); + if (count == null) { + count = qualityService.getDataCollectionCount(searchParams); + } + return count.intValue(); } @Override @@ -78,6 +87,7 @@ public class DataCollectionDataSource implements FlexiTableDataSourceDelegate<Da @Override public ResultInfos<DataCollectionRow> getRows(String query, List<FlexiTableFilter> filters, List<String> condQueries, int firstResult, int maxResults, SortKey... orderBy) { + searchParams.setSearchString(query); List<QualityDataCollectionView> dataCollections = qualityService.loadDataCollections(translator, searchParams, firstResult, maxResults, orderBy); diff --git a/src/main/java/org/olat/modules/quality/ui/DataCollectionListController.java b/src/main/java/org/olat/modules/quality/ui/DataCollectionListController.java index d7cb0fdcd07b0ef03a8e0ba86618976fc210e6fc..ac84ae3add121a66f9a74923592ae21914bca568 100644 --- a/src/main/java/org/olat/modules/quality/ui/DataCollectionListController.java +++ b/src/main/java/org/olat/modules/quality/ui/DataCollectionListController.java @@ -33,7 +33,6 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFle import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; -import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableSearchEvent; import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent; import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.LinkFactory; @@ -107,6 +106,7 @@ public class DataCollectionListController extends FormBasicController implements defaultSearchParams.setLearnResourceManagerOrganisationRefs(secCallback.getLearnResourceManagerOrganisationRefs()); defaultSearchParams.setIgnoreReportAccessRelationRole(!securityModule.isRelationRoleEnabled()); dataSource = new DataCollectionDataSource(getTranslator(), defaultSearchParams); + dataSource.setSearchParams(new QualityDataCollectionViewSearchParams()); searchCtrl = new DataCollectionSearchController(ureq, getWindowControl(), mainForm, defaultSearchParams); searchCtrl.setEnabled(false); @@ -201,9 +201,6 @@ public class DataCollectionListController extends FormBasicController implements if (CMD_EDIT.equals(cmd)) { doEditDataCollection(ureq, row.getDataCollection()); } - } else if(event instanceof FlexiTableSearchEvent) { - FlexiTableSearchEvent ftse = (FlexiTableSearchEvent)event; - doSearch(ftse.getSearch()); } super.formInnerEvent(ureq, source, event); } @@ -227,7 +224,7 @@ public class DataCollectionListController extends FormBasicController implements QualityDataCollection dataCollectionToDelete = dccEvent.getDataCollection(); doConfirmDeleteDataCollection(ureq, dataCollectionToDelete); } - }else if (searchCtrl == source) { + } else if (searchCtrl == source) { if (event instanceof SearchEvent) { SearchEvent se = (SearchEvent)event; doExtendedSearch(se); @@ -305,11 +302,6 @@ public class DataCollectionListController extends FormBasicController implements tableEl.reset(true, false, true); stackPanel.popUpToController(this); } - private void doSearch(String search) { - QualityDataCollectionViewSearchParams params = new QualityDataCollectionViewSearchParams(); - params.setSearchString(search); - doSearch(params); - } private void doExtendedSearch(SearchEvent se) { QualityDataCollectionViewSearchParams params = new QualityDataCollectionViewSearchParams(); @@ -324,10 +316,7 @@ public class DataCollectionListController extends FormBasicController implements params.setFormEntryRefs(se.getFormEntryRefs()); params.setTopicTypes(se.getTopicTypes()); params.setStatus(se.getStatus()); - doSearch(params); - } - - private void doSearch(QualityDataCollectionViewSearchParams params) { + dataSource.setSearchParams(params); tableEl.reset(true, true, true); }