You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "henningn (via GitHub)" <gi...@apache.org> on 2025/09/26 10:45:07 UTC

[PR] feature(columnSelector): f:ajax [myfaces-tobago]

henningn opened a new pull request, #6749:
URL: https://github.com/apache/myfaces-tobago/pull/6749

   * add Playwright test
   * adjust tests
   * implement change event for tc:columnSelector
   * change ID of column selector toggler
   
   Issue: TOBAGO-2442


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@myfaces.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] feature(columnSelector): f:ajax [myfaces-tobago]

Posted by "henningn (via GitHub)" <gi...@apache.org>.
henningn merged PR #6749:
URL: https://github.com/apache/myfaces-tobago/pull/6749


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@myfaces.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] feature(columnSelector): f:ajax [myfaces-tobago]

Posted by "cadimmek (via GitHub)" <gi...@apache.org>.
cadimmek commented on code in PR #6749:
URL: https://github.com/apache/myfaces-tobago/pull/6749#discussion_r2390060629


##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ColumnSelectorRenderer.java:
##########
@@ -19,8 +19,53 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIColumnSelector;
+import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
+import org.apache.myfaces.tobago.internal.util.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class ColumnSelectorRenderer<T extends AbstractUIColumnSelector> extends RendererBase<T> {
+
+  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String SUFFIX_SELECTED = ComponentUtils.SUB_SEPARATOR + "selected";
+
+  @Override
+  public void decodeInternal(final FacesContext facesContext, final T component) {
+    super.decodeInternal(facesContext, component);
+
+    final AbstractUISheet sheet = component.getSheet();
+    decodeSelectedRows(facesContext, sheet);
+  }
+
+  static void decodeSelectedRows(final FacesContext facesContext, final AbstractUISheet sheet) {
+    final String sheetId = sheet.getClientId(facesContext);
+    final Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+    String key = sheetId + SUFFIX_SELECTED;
+    if (requestParameterMap.containsKey(key)) {
+      final String selected = requestParameterMap.get(key);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("selected = " + selected);

Review Comment:
   ```suggestion
           LOG.debug("selected = {}", selected);
   ```



##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIColumnSelector.java:
##########
@@ -33,7 +48,29 @@ public Measure getWidth() {
   }
 */
 
+  @Override
+  public void processUpdates(final FacesContext facesContext) {
+    final AbstractUISheet sheet = getSheet();
+    final SheetState sheetState = sheet.getSheetState(facesContext);
+    processSelectedRows(sheet, sheetState);
+  }
+
+  public static void processSelectedRows(final AbstractUISheet sheet, final SheetState sheetState) {
+    if (sheetState != null) {
+      final List<Integer> list = (List<Integer>) ComponentUtils.getAttribute(sheet, Attributes.selectedListString);
+      sheetState.setSelectedRows(list != null ? list : Collections.emptyList());
+      ComponentUtils.removeAttribute(sheet, Attributes.selectedListString);
+    }
+  }
+
   public abstract boolean isDisabled();
 
   public abstract Selectable getSelectable();
+
+  public AbstractUISheet getSheet() {
+    if (abstractUISheet == null) {

Review Comment:
   What if the day was accidentally positioned incorrectly? Wouldn't an exception with a meaningful error message be better?



##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ColumnSelectorRenderer.java:
##########
@@ -19,8 +19,53 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIColumnSelector;
+import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
+import org.apache.myfaces.tobago.internal.util.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class ColumnSelectorRenderer<T extends AbstractUIColumnSelector> extends RendererBase<T> {
+
+  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String SUFFIX_SELECTED = ComponentUtils.SUB_SEPARATOR + "selected";
+
+  @Override
+  public void decodeInternal(final FacesContext facesContext, final T component) {
+    super.decodeInternal(facesContext, component);
+
+    final AbstractUISheet sheet = component.getSheet();
+    decodeSelectedRows(facesContext, sheet);
+  }
+
+  static void decodeSelectedRows(final FacesContext facesContext, final AbstractUISheet sheet) {
+    final String sheetId = sheet.getClientId(facesContext);
+    final Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+    String key = sheetId + SUFFIX_SELECTED;
+    if (requestParameterMap.containsKey(key)) {
+      final String selected = requestParameterMap.get(key);
+      if (LOG.isDebugEnabled()) {

Review Comment:
   ```suggestion
   ```



##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ColumnSelectorRenderer.java:
##########
@@ -19,8 +19,53 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIColumnSelector;
+import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
+import org.apache.myfaces.tobago.internal.util.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class ColumnSelectorRenderer<T extends AbstractUIColumnSelector> extends RendererBase<T> {
+
+  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String SUFFIX_SELECTED = ComponentUtils.SUB_SEPARATOR + "selected";
+
+  @Override
+  public void decodeInternal(final FacesContext facesContext, final T component) {
+    super.decodeInternal(facesContext, component);
+
+    final AbstractUISheet sheet = component.getSheet();
+    decodeSelectedRows(facesContext, sheet);
+  }
+
+  static void decodeSelectedRows(final FacesContext facesContext, final AbstractUISheet sheet) {
+    final String sheetId = sheet.getClientId(facesContext);
+    final Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+    String key = sheetId + SUFFIX_SELECTED;
+    if (requestParameterMap.containsKey(key)) {
+      final String selected = requestParameterMap.get(key);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("selected = " + selected);
+      }

Review Comment:
   ```suggestion
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@myfaces.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org