ICEfaces
  1. ICEfaces
  2. ICE-8104

ace:dataTable - multi-row headers that rowspan on the bottom row of the header section cause column/header mis-alignment in scrollable mode

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.1
    • Fix Version/s: 3.1.0.RC1, 3.1
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      IF 3.x
    • Assignee Priority:
      P1
    • Workaround Exists:
      Yes
    • Workaround Description:
      The redesign to meet scrolling requirements is to shorten/remove rowspan on the bottom row of header columns, and to insert an empty column instead, which will preserve the alignment of the <th> in the head with the <td>'s in the body.

      Description

      A datatable containing multiple row header that has a row with a cell that spans multiple rows, including spanning the bottom row of the table, causes sizing errors in scrollable datatable mode.

      This is partially because of a scroll bar sizing issue.

      However this is also much more importantly a breach of a general contract that must be followed when using multiple row headers with the scrollable mode: that each column in the data table has a corresponding column in the bottom row of the multirow header configuration. By row spanning, the bottom header row is missing a <th> that must correspond to a <td> in the body.

      The reason for this restriction is that an association is made between the header and body columns so we can size the body columns according to the associated header sizes we record before we "move" the header outside the scrollable area (destroying the previous body column sizes).

      To make the body size order and header size order independent would require a second phase of evaluating and recording sizes before the header move, recording the body sizes in an order that may be different than the header sizes. This would make the IE8 and lower cases where evaluating sizing has been inefficient even more so.

      Or it could be accomplished by additional logic to very intelligently map the location of each <tr> and determine which is truly associate with which body <td>, but this would be expensive and potential nest for errors.

        Activity

        Nils Lundquist created issue -
        Nils Lundquist made changes -
        Field Original Value New Value
        Estimated Complexity High
        Salesforce Case []
        Component/s ACE-Components [ 10050 ]
        Affects Version/s 3.0.1 [ 10282 ]
        Ken Fyten made changes -
        Summary ace:dataTable - multi-row headers that rowspan the bottom row of the table break scrollable mode ace:dataTable - multi-row headers that rowspan on the bottom row of the header section cause column/header mis-alignment in scrollable mode
        Salesforce Case []
        Fix Version/s 3.1 [ 10312 ]
        Ken Fyten made changes -
        Workaround Description An alternative to using rowspan on the bottom row of header columns is to insert an empty column instead, which will preserve the alignment of the <th> in the head with the <td>'s in the body.
        Workaround Exists [Yes]
        Salesforce Case []
        Description A datatable containing multiple row header that has a row with a cell that spans multiple rows, including spanning the bottom row of the table, causes sizing errors in scrollable datatable mode.

        This is partially because of a scroll bar sizing issue discovered by Jin at Williams.

        However this is also much more importantly a breach of a general contract that must be followed when using multiple row headers with the scrollable mode: that each column in the data table has a corresponding column in the bottom row of the multirow header configuration. By row spanning, the bottom header row is missing a <th> that must correspond to a <td> in the body.

        The reason for this restriction is that an association is made between the header and body columns so we can size the body columns according to the associated header sizes we record before we "move" the header outside the scrollable area (destroying the previous body column sizes).

        To make the body size order and header size order independent would require a second phase of evaluating and recording sizes before the header move, recording the body sizes in an order that may be different than the header sizes. This would make the IE8 and lower cases where evaluating sizing has been inefficient even more so.

        Or it could be accomplished by additional logic to very intelligently map the location of each <tr> and determine which is truly associate with which body <td>, but this would be expensive and potential nest for errors.
        A datatable containing multiple row header that has a row with a cell that spans multiple rows, including spanning the bottom row of the table, causes sizing errors in scrollable datatable mode.

        This is partially because of a scroll bar sizing issue.

        However this is also much more importantly a breach of a general contract that must be followed when using multiple row headers with the scrollable mode: that each column in the data table has a corresponding column in the bottom row of the multirow header configuration. By row spanning, the bottom header row is missing a <th> that must correspond to a <td> in the body.

        The reason for this restriction is that an association is made between the header and body columns so we can size the body columns according to the associated header sizes we record before we "move" the header outside the scrollable area (destroying the previous body column sizes).

        To make the body size order and header size order independent would require a second phase of evaluating and recording sizes before the header move, recording the body sizes in an order that may be different than the header sizes. This would make the IE8 and lower cases where evaluating sizing has been inefficient even more so.

        Or it could be accomplished by additional logic to very intelligently map the location of each <tr> and determine which is truly associate with which body <td>, but this would be expensive and potential nest for errors.
        Nils Lundquist made changes -
        Workaround Description An alternative to using rowspan on the bottom row of header columns is to insert an empty column instead, which will preserve the alignment of the <th> in the head with the <td>'s in the body. The redesign to meet scrolling requirements is to shorten/remove rowspan on the bottom row of header columns, and to insert an empty column instead, which will preserve the alignment of the <th> in the head with the <td>'s in the body.
        Salesforce Case []
        Arran Mccullough made changes -
        Salesforce Case [5007000000MGb3Z]
        Ken Fyten made changes -
        Fix Version/s 3.1.0.RC1 [ 10337 ]
        Assignee Priority P1
        Assignee Nils Lundquist [ nils.lundquist ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29540 Tue Jun 19 12:28:24 MDT 2012 nils.lundquist ICE-8104 - Redesigned scrollable table to independently size header and body. Enabled support for colspan and rowspan sizing. The dataTableMultiRowHeader example demonstrates this new functionality.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/dataTable/dataTableMultiRowHeader.xhtml
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
        Hide
        Nils Lundquist added a comment -

        Revision #29540
        Committed by nils.lundquist
        Moments ago
        ICE-8104 - Redesigned scrollable table to independently size header and body.
        Enabled support for colspan and rowspan sizing. The dataTableMultiRowHeader example demonstrates this new functionality.

        Show
        Nils Lundquist added a comment - Revision #29540 Committed by nils.lundquist Moments ago ICE-8104 - Redesigned scrollable table to independently size header and body. Enabled support for colspan and rowspan sizing. The dataTableMultiRowHeader example demonstrates this new functionality.
        Hide
        Nils Lundquist added a comment -

        The above commit adds working functionality for all cases; the alternative case discussed on the call, sizing an indicated selection of columns as opposed to all columns is easily implementable as a subset of this general functionality.

        The functionality as implemented should be tested to verify the reduced-columns optimization is worth perusing considering that IE performance is no longer a concern given the use of the IE7 mode.

        Show
        Nils Lundquist added a comment - The above commit adds working functionality for all cases; the alternative case discussed on the call, sizing an indicated selection of columns as opposed to all columns is easily implementable as a subset of this general functionality. The functionality as implemented should be tested to verify the reduced-columns optimization is worth perusing considering that IE performance is no longer a concern given the use of the IE7 mode.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29543 Tue Jun 19 14:44:09 MDT 2012 nils.lundquist ICE-8104 - Disable some unnecessary logic during IE7 sizing mode.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
        Hide
        Nils Lundquist added a comment -

        Marking this issue as fixed given the solution works in the Williams application without gross differences in performance. If further testing comes to warrant optimization this issue should be reopened.

        Show
        Nils Lundquist added a comment - Marking this issue as fixed given the solution works in the Williams application without gross differences in performance. If further testing comes to warrant optimization this issue should be reopened.
        Nils Lundquist made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29580 Wed Jun 20 12:22:56 MDT 2012 nils.lundquist ICE-8104 - Improved scrolling Chrome detection to avoid Chromeframe false positive.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29606 Wed Jun 20 17:15:35 MDT 2012 nils.lundquist ICE-8104 - Initalize dupeCausesBodyScroll flag to false.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #29614 Thu Jun 21 10:33:59 MDT 2012 nils.lundquist ICE-8104 - Enabled IE7 scrollbar handling for all IE8as7 browser modes.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/resources/icefaces.ace/datatable/datatable.js
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Nils Lundquist
            Reporter:
            Nils Lundquist
          • Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: