Skip to content
Snippets Groups Projects
Commit 7d2238db authored by srosse's avatar srosse
Browse files

OO-3239: add order by last name (default) in roll call table

parent 542ad875
No related branches found
No related tags found
No related merge requests found
...@@ -54,7 +54,8 @@ implements SortableFlexiTableDataModel<ParticipantRow>, ExportableFlexiTableData ...@@ -54,7 +54,8 @@ implements SortableFlexiTableDataModel<ParticipantRow>, ExportableFlexiTableData
@Override @Override
public void sort(SortKey sortKey) { public void sort(SortKey sortKey) {
// List<ParticipantRow> rows = new ParticipantListSortDelegate(sortKey, this, locale).sort();
super.setObjects(rows);
} }
@Override @Override
......
...@@ -29,11 +29,13 @@ import java.util.stream.Collectors; ...@@ -29,11 +29,13 @@ import java.util.stream.Collectors;
import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurity;
import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.BaseSecurityModule;
import org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayoutFactory; import org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayoutFactory;
import org.olat.core.commons.persistence.SortKey;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component; import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement;
import org.olat.core.gui.components.form.flexible.elements.FlexiTableSortOptions;
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.FormLayoutContainer;
...@@ -50,6 +52,7 @@ import org.olat.core.gui.control.creator.ControllerCreator; ...@@ -50,6 +52,7 @@ import org.olat.core.gui.control.creator.ControllerCreator;
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.Roles; import org.olat.core.id.Roles;
import org.olat.core.id.UserConstants;
import org.olat.modules.lecture.LectureModule; import org.olat.modules.lecture.LectureModule;
import org.olat.modules.lecture.LectureService; import org.olat.modules.lecture.LectureService;
import org.olat.modules.lecture.RepositoryEntryLectureConfiguration; import org.olat.modules.lecture.RepositoryEntryLectureConfiguration;
...@@ -145,9 +148,11 @@ public class ParticipantListRepositoryController extends FormBasicController { ...@@ -145,9 +148,11 @@ public class ParticipantListRepositoryController extends FormBasicController {
layoutCont.getFormItemComponent().contextPut("withPrint", Boolean.TRUE); layoutCont.getFormItemComponent().contextPut("withPrint", Boolean.TRUE);
} }
FlexiTableSortOptions options = new FlexiTableSortOptions();
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
if(isAdministrativeUser) { if(isAdministrativeUser) {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ParticipantsCols.username)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ParticipantsCols.username));
options.setDefaultOrderBy(new SortKey(ParticipantsCols.username.sortKey(), true));
} }
int colPos = USER_PROPS_OFFSET; int colPos = USER_PROPS_OFFSET;
...@@ -160,6 +165,12 @@ public class ParticipantListRepositoryController extends FormBasicController { ...@@ -160,6 +165,12 @@ public class ParticipantListRepositoryController extends FormBasicController {
FlexiColumnModel col = new DefaultFlexiColumnModel(visible, userPropertyHandler.i18nColumnDescriptorLabelKey(), colPos, true, propName); FlexiColumnModel col = new DefaultFlexiColumnModel(visible, userPropertyHandler.i18nColumnDescriptorLabelKey(), colPos, true, propName);
columnsModel.addFlexiColumnModel(col); columnsModel.addFlexiColumnModel(col);
colPos++; colPos++;
if(!options.hasDefaultOrderBy()) {
options.setDefaultOrderBy(new SortKey(propName, true));
} else if(UserConstants.LASTNAME.equals(propName)) {
options.setDefaultOrderBy(new SortKey(propName, true));
}
} }
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ParticipantsCols.plannedLectures)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ParticipantsCols.plannedLectures));
...@@ -199,6 +210,7 @@ public class ParticipantListRepositoryController extends FormBasicController { ...@@ -199,6 +210,7 @@ public class ParticipantListRepositoryController extends FormBasicController {
tableEl = uifactory.addTableElement(getWindowControl(), "table", tableModel, 20, false, getTranslator(), formLayout); tableEl = uifactory.addTableElement(getWindowControl(), "table", tableModel, 20, false, getTranslator(), formLayout);
tableEl.setExportEnabled(!printView); tableEl.setExportEnabled(!printView);
tableEl.setEmtpyTableMessageKey("empty.table.participant.list"); tableEl.setEmtpyTableMessageKey("empty.table.participant.list");
tableEl.setSortSettings(options);
tableEl.setAndLoadPersistedPreferences(ureq, "participant-list-repo-entry"); tableEl.setAndLoadPersistedPreferences(ureq, "participant-list-repo-entry");
} }
......
package org.olat.modules.lecture.ui;
import java.util.Locale;
import org.olat.core.commons.persistence.SortKey;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate;
/**
*
* Initial date: 16 janv. 2018<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
public class ParticipantListSortDelegate extends SortableFlexiTableModelDelegate<ParticipantRow> {
public ParticipantListSortDelegate(SortKey orderBy, ParticipantListDataModel tableModel, Locale locale) {
super(orderBy, tableModel, locale);
}
}
...@@ -26,10 +26,12 @@ import java.util.List; ...@@ -26,10 +26,12 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.BaseSecurityModule;
import org.olat.core.commons.persistence.SortKey;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement;
import org.olat.core.gui.components.form.flexible.elements.FlexiTableSortOptions;
import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.FormLink;
import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.elements.TextElement;
...@@ -52,6 +54,7 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowC ...@@ -52,6 +54,7 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowC
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.Roles; import org.olat.core.id.Roles;
import org.olat.core.id.UserConstants;
import org.olat.core.logging.activity.CoreLoggingResourceable; import org.olat.core.logging.activity.CoreLoggingResourceable;
import org.olat.core.logging.activity.LearningResourceLoggingAction; import org.olat.core.logging.activity.LearningResourceLoggingAction;
import org.olat.core.logging.activity.OlatResourceableType; import org.olat.core.logging.activity.OlatResourceableType;
...@@ -193,9 +196,11 @@ public class TeacherRollCallController extends FormBasicController { ...@@ -193,9 +196,11 @@ public class TeacherRollCallController extends FormBasicController {
} }
// table // table
FlexiTableSortOptions options = new FlexiTableSortOptions();
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
if(isAdministrativeUser) { if(isAdministrativeUser) {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(RollCols.username)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(RollCols.username));
options.setDefaultOrderBy(new SortKey(RollCols.username.sortKey(), true));
} }
int colPos = USER_PROPS_OFFSET; int colPos = USER_PROPS_OFFSET;
...@@ -208,22 +213,33 @@ public class TeacherRollCallController extends FormBasicController { ...@@ -208,22 +213,33 @@ public class TeacherRollCallController extends FormBasicController {
FlexiColumnModel col = new DefaultFlexiColumnModel(visible, userPropertyHandler.i18nColumnDescriptorLabelKey(), colPos, true, propName); FlexiColumnModel col = new DefaultFlexiColumnModel(visible, userPropertyHandler.i18nColumnDescriptorLabelKey(), colPos, true, propName);
columnsModel.addFlexiColumnModel(col); columnsModel.addFlexiColumnModel(col);
colPos++; colPos++;
if(!options.hasDefaultOrderBy()) {
options.setDefaultOrderBy(new SortKey(propName, true));
} else if(UserConstants.LASTNAME.equals(propName)) {
options.setDefaultOrderBy(new SortKey(propName, true));
}
} }
if(lectureBlock.isCompulsory()) { if(lectureBlock.isCompulsory()) {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(RollCols.status)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(RollCols.status));
for(int i=0; i<numOfLectures; i++) { for(int i=0; i<numOfLectures; i++) {
FlexiColumnModel col = new DefaultFlexiColumnModel("table.header.lecture." + (i+1), i + CHECKBOX_OFFSET, true, "lecture." + (i+1)); DefaultFlexiColumnModel col = new DefaultFlexiColumnModel("table.header.lecture." + (i+1), i + CHECKBOX_OFFSET, true, "lecture." + (i+1));
col.setAlwaysVisible(true);
columnsModel.addFlexiColumnModel(col); columnsModel.addFlexiColumnModel(col);
} }
//all button //all button
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("all", DefaultFlexiColumnModel allCol = new DefaultFlexiColumnModel("all",
RollCols.all.ordinal(), "all", RollCols.all.ordinal(), "all",
new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("all"), "all", null, null, translate("all.desc")), null))); new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("all"), "all", null, null, translate("all.desc")), null));
allCol.setAlwaysVisible(true);
columnsModel.addFlexiColumnModel(allCol);
if(secCallback.canViewAuthorizedAbsences() || secCallback.canEditAuthorizedAbsences()) { if(secCallback.canViewAuthorizedAbsences() || secCallback.canEditAuthorizedAbsences()) {
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(RollCols.authorizedAbsence)); DefaultFlexiColumnModel authorizedCol = new DefaultFlexiColumnModel(RollCols.authorizedAbsence);
authorizedCol.setAlwaysVisible(true);
columnsModel.addFlexiColumnModel(authorizedCol);
} }
} }
...@@ -232,6 +248,8 @@ public class TeacherRollCallController extends FormBasicController { ...@@ -232,6 +248,8 @@ public class TeacherRollCallController extends FormBasicController {
tableModel = new TeacherRollCallDataModel(columnsModel, secCallback, getLocale()); tableModel = new TeacherRollCallDataModel(columnsModel, secCallback, getLocale());
tableEl = uifactory.addTableElement(getWindowControl(), "table", tableModel, 20, false, getTranslator(), formLayout); tableEl = uifactory.addTableElement(getWindowControl(), "table", tableModel, 20, false, getTranslator(), formLayout);
tableEl.setCustomizeColumns(true); tableEl.setCustomizeColumns(true);
tableEl.setSortSettings(options);
tableEl.setAndLoadPersistedPreferences(ureq, "teacher-roll-call");
//buttons //buttons
uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl()); uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl());
...@@ -289,6 +307,7 @@ public class TeacherRollCallController extends FormBasicController { ...@@ -289,6 +307,7 @@ public class TeacherRollCallController extends FormBasicController {
rows.add(forgeRow(participant, rollCall)); rows.add(forgeRow(participant, rollCall));
} }
tableModel.setObjects(rows); tableModel.setObjects(rows);
tableEl.reset(false, false, true);
} }
private TeacherRollCallRow forgeRow(Identity participant, LectureBlockRollCall rollCall) { private TeacherRollCallRow forgeRow(Identity participant, LectureBlockRollCall rollCall) {
......
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