You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2024/12/17 10:34:45 UTC

(myfaces-tobago) branch tobago-5.x updated: fix: Rendering (#5825) (#5826)

This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch tobago-5.x
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git


The following commit(s) were added to refs/heads/tobago-5.x by this push:
     new cebfef2ab9 fix: Rendering <tc:columnNode> (#5825) (#5826)
cebfef2ab9 is described below

commit cebfef2ab974a8cda7a5644786532565b64f6656
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Tue Dec 17 11:34:36 2024 +0100

    fix: Rendering <tc:columnNode> (#5825) (#5826)
    
    * fix: Rendering <tc:columnNode>
    issue: TOBAGO-2376
    
    (cherry picked from commit d5bf865823cea5ad1ee6757ae2220c02c050b6a5)
---
 .../internal/renderkit/renderer/SheetRenderer.java | 38 ++++++++--------------
 .../content/080-sheet/70-tree/Sheet_Tree.xhtml     |  2 +-
 .../900-test/3000-sheet/70-tree/Sheet_Tree.test.js | 24 +++++++++++---
 .../900-test/3000-sheet/70-tree/Sheet_Tree.xhtml   |  2 +-
 4 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
index cb16e4ac9a..d4b97f0dcf 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java
@@ -57,12 +57,10 @@ import org.apache.myfaces.tobago.layout.Arrows;
 import org.apache.myfaces.tobago.layout.PaginatorMode;
 import org.apache.myfaces.tobago.layout.ShowPosition;
 import org.apache.myfaces.tobago.layout.TextAlign;
-import org.apache.myfaces.tobago.model.ExpandedState;
 import org.apache.myfaces.tobago.model.Selectable;
 import org.apache.myfaces.tobago.model.SheetState;
 import org.apache.myfaces.tobago.model.SortedColumn;
 import org.apache.myfaces.tobago.model.SortedColumnList;
-import org.apache.myfaces.tobago.model.TreePath;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
 import org.apache.myfaces.tobago.renderkit.css.CssItem;
@@ -490,7 +488,6 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
 
     final boolean showHeader = sheet.isShowHeader();
     final Markup sheetMarkup = sheet.getMarkup() != null ? sheet.getMarkup() : Markup.NULL;
-    final ExpandedState expandedState = sheet.isTreeModel() ? sheet.getExpandedState() : null;
 
     final UIComponent before = sheet.getFacet(Facets.BEFORE);
     if (before != null) {
@@ -589,11 +586,8 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
         LOG.debug("list      " + sheet.getValue());
       }
 
-      if (sheet.isTreeModel()) {
-        final TreePath path = sheet.getPath();
-        if (sheet.isFolder() && expandedState.isExpanded(path)) {
-          expandedValue.add(rowIndex);
-        }
+      if (sheet.isTreeModel() && sheet.isFolder() && sheet.getExpandedState().isExpanded(sheet.getPath())) {
+        expandedValue.add(rowIndex);
       }
 
       writer.startElement(HtmlElements.TR);
@@ -601,8 +595,7 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
       final boolean selected = selectedRows.contains(rowIndex);
       final String parentId = sheet.getRowParentClientId();
       if (parentId != null) {
-        // TODO: replace with
-        // todo writer.writeIdAttribute(parentId + SUB_SEPARATOR + AbstractUITree.SUFFIX_PARENT);
+        // TODO: replace with writer.writeIdAttribute(parentId + SUB_SEPARATOR + AbstractUITree.SUFFIX_PARENT);
         // todo like in TreeListboxRenderer
         writer.writeAttribute(DataAttributes.TREE_PARENT, parentId, false);
       }
@@ -635,8 +628,7 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
                     column instanceof AbstractUIColumn ? ((AbstractUIColumn) column).getVerticalAlign() : null),
                 column.getCustomClass());
 
-            if (column instanceof AbstractUIColumnSelector) {
-              final AbstractUIColumnSelector selector = (AbstractUIColumnSelector) column;
+            if (column instanceof AbstractUIColumnSelector selector) {
               writer.startElement(HtmlElements.INPUT);
               writer.writeNameAttribute(sheetId + "_data_row_selector_" + rowIndex);
               Selectable currentSelectable = getSelectionMode(selectable, selector);
@@ -655,19 +647,17 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
                   BootstrapClass.FORM_CHECK_INLINE,
                   TobagoClass.SELECTED);
               writer.endElement(HtmlElements.INPUT);
-            } else /*if (normalColumn instanceof AbstractUIColumnNode)*/ {
-              if (column.getChildCount() > 0) {
-                for (int k = 0; k < column.getChildCount(); k++) {
-                  column.getChildren().get(k).encodeAll(facesContext);
+            } else if (column instanceof AbstractUIColumnNode) {
+              column.encodeAll(facesContext);
+            } else {
+              final int childCount = column.getChildCount();
+              if (childCount > 0) {
+                final List<UIComponent> children = column.getChildren();
+                for (int k = 0; k < childCount; k++) {
+                  children.get(k).encodeAll(facesContext);
                 }
               }
-            } /*else {
-              final List<UIComponent> children = sheet.getRenderedChildrenOf(normalColumn);
-              for (final UIComponent grandKid : children) {
-                grandKid.encodeAll(facesContext);
-              }
-            }*/
-
+            }
             writer.endElement(HtmlElements.TD);
           } else if (column instanceof AbstractUIColumnPanel) {
             panel = (AbstractUIColumnPanel) column;
@@ -722,7 +712,6 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
       writer.endElement(HtmlElements.TD);
       if (!autoLayout) {
         writer.startElement(HtmlElements.TD);
-//      writer.write("&nbsp;");
         writer.startElement(HtmlElements.DIV);
         writer.endElement(HtmlElements.DIV);
         writer.endElement(HtmlElements.TD);
@@ -733,7 +722,6 @@ public class SheetRenderer<T extends AbstractUISheet> extends RendererBase<T> {
     writer.endElement(HtmlElements.TBODY);
     writer.endElement(HtmlElements.TABLE);
     writer.endElement(HtmlElements.DIV);
-// END RENDER BODY CONTENT
   }
 
   private static Selectable getSelectionMode(Selectable selectable, AbstractUIColumnSelector selector) {
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/70-tree/Sheet_Tree.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/70-tree/Sheet_Tree.xhtml
index 3ad000cccb..4297d22b93 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/70-tree/Sheet_Tree.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/70-tree/Sheet_Tree.xhtml
@@ -46,7 +46,7 @@
     ...</demo-highlight>
     <tc:sheet id="sheet" value="#{sheetTreeController.solarTree}" var="solarObject" showRoot="true" showRootJunction="true">
       <tc:columnNode id="nameCol" label="Name">
-        <tc:treeIndent/>
+        <tc:treeIndent id="indent"/>
         <tc:out id="nameOut" value="#{solarObject.userObject.name}" labelLayout="skip"/>
       </tc:columnNode>
       <tc:column label="Central Body">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.test.js
index 8eea15f397..8a8a5121a0 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.test.js
@@ -18,15 +18,31 @@
 import {elementByIdFn, querySelectorAllFn, querySelectorFn} from "/script/tobago-test.js";
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("There must be no horizontal scrollbar", function (done) {
+it("Open the 'World' node to see 'Carib' and 'Africa'", function (done) {
   const reset = elementByIdFn("page:mainForm:reset")
   const treeNodes = querySelectorAllFn("#page\\:mainForm\\:sheet tobago-tree-node");
   const toggleWorld = querySelectorFn("#page\\:mainForm\\:sheet\\:6\\:nameCol .tobago-toggle");
-  const spanWorld = querySelectorFn("#page\\:mainForm\\:sheet\\:6\\:nameCol span.form-control-plaintext");
-  const spanCarib = querySelectorFn("#page\\:mainForm\\:sheet\\:7\\:nameCol span.form-control-plaintext");
-  const spanAfrica = querySelectorFn("#page\\:mainForm\\:sheet\\:8\\:nameCol span.form-control-plaintext");
+  const spanWorld = querySelectorFn("#page\\:mainForm\\:sheet\\:6\\:nameOut span.form-control-plaintext");
+  const spanCarib = querySelectorFn("#page\\:mainForm\\:sheet\\:7\\:nameOut span.form-control-plaintext");
+  const spanAfrica = querySelectorFn("#page\\:mainForm\\:sheet\\:8\\:nameOut span.form-control-plaintext");
 
   const test = new JasmineTestTool(done);
+  if (treeNodes().length !== 12) {
+    // test.fail("Must be a number of 12 tree nodes!");
+    console.error("Must be a number of 12 tree nodes!");
+  }
+  if (reset() === null) {
+    // test.fail("reset button not found!");
+    console.error("reset button not found!");
+  }
+  if (toggleWorld() === null) {
+    // test.fail("toggleWorld not found!");
+    console.error("toggleWorld not found!");
+  }
+  if (spanWorld() === null) {
+    // test.fail("spanWorld not found!");
+    console.error("spanWorld not found!");
+  }
   test.setup(() => treeNodes().length === 12
           && spanWorld().textContent === "World"
           && spanCarib().textContent !== "Carib"
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.xhtml
index a0c5e78823..3c26c36dcf 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/3000-sheet/70-tree/Sheet_Tree.xhtml
@@ -24,7 +24,7 @@
   <tc:button id="reset" label="Reset" outcome="/content/900-test/3000-sheet/70-tree/Sheet_Tree.xhtml"/>
   <tc:sheet id="sheet" value="#{treeController.sample}" var="node" showRoot="true" showRootJunction="true">
     <tc:columnNode id="nameCol" label="Name">
-      <tc:treeIndent/>
+      <tc:treeIndent id="indent"/>
       <tc:out id="nameOut" value="#{node.userObject.name}" labelLayout="skip"/>
     </tc:columnNode>
   </tc:sheet>