From 09fa0b01807781e4adaad01841a422c95ba3546b Mon Sep 17 00:00:00 2001
From: aboeckle <alexander.boeckle@frentix.com>
Date: Mon, 9 Dec 2019 16:18:31 +0100
Subject: [PATCH] OO-4366 Fixed table column selector with mandatory columns
 and only one additionally selected column

---
 .../impl/elements/table/FlexiTableElementImpl.java    | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

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 8e0e2d7cfd7..492bab9e561 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
@@ -106,6 +106,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 	private boolean numOfRowsEnabled = true;
 	private boolean showAllRowsEnabled = false;
 	private boolean extendedSearchExpanded = false;
+	private boolean hasAlwaysVisibleColumns = false;
 	private int columnLabelForDragAndDrop;
 	private String emptyTableMessageKey = null;
 	
@@ -166,6 +167,10 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 				enabledColumnIndex.add(Integer.valueOf(col.getColumnIndex()));
 			}
 		}
+		
+		if(enabledColumnIndex.size() > 0 ) {
+			hasAlwaysVisibleColumns = true;
+		}
 
 		String dispatchId = component.getDispatchID();
 		customButton = new FormLinkImpl(dispatchId + "_customButton", "rCustomButton", "", Link.BUTTON + Link.NONTRANSLATED);
@@ -1385,12 +1390,12 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 	}
 	
 	protected void setCustomizedColumns(UserRequest ureq, Choice visibleColsChoice) {
-		List<Integer> visibleCols = visibleColsChoice.getSelectedRows();
-		if(visibleCols.size() > 1) {
+		List<Integer> chosenCols = visibleColsChoice.getSelectedRows();
+		if(chosenCols.size() > 1 || hasAlwaysVisibleColumns) {
 			VisibleFlexiColumnsModel model = (VisibleFlexiColumnsModel)visibleColsChoice.getModel();
 			for(int i=model.getRowCount(); i-->0; ) {
 				FlexiColumnModel col = model.getObject(i);
-				if(visibleCols.contains(Integer.valueOf(i))) {
+				if(chosenCols.contains(Integer.valueOf(i))) {
 					enabledColumnIndex.add(col.getColumnIndex());
 				} else {
 					enabledColumnIndex.remove(col.getColumnIndex());
-- 
GitLab