ICEfaces
  1. ICEfaces
  2. ICE-9937

ace:splitPane scrollable attribute does not function consistently inside data table or repeat

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 4.0.BETA
    • Fix Version/s: 4.1
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      Tomcat 7, all browsers.

      Description

      When ace:splitPane is inside a dataTable or ui:repeat, the scrollable attribute doesn't get carried through the iterations for table or ui:repeat rows.

      splitPane inside h:dataTable and inside ui:repeat. When scrollable is true only the first row in the table has scrollable panes.

      splitPane inside ace:dataTable
      When scrollable is true, any row after the first displays panes with a scroll bar but they do not scroll.

      Test application is at: http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Manual/splitPane
      Observe behaviour described in any of these test applications:
      ace:splitPane in h:dataTable
      ace:splitPane in ace:dataTable
      ace:splitPane in ui:repeat

      It has also been observed that the scrollable attribute has no effect when component is viewed on android or ios device.

        Activity

        Hide
        Liana Munroe added a comment -

        Tested with ICEfaces 4 trunk r44299. The splitPane no longer renders inside an h:dataTable, ace:dataTable or ui:repeat.

        Show
        Liana Munroe added a comment - Tested with ICEfaces 4 trunk r44299. The splitPane no longer renders inside an h:dataTable, ace:dataTable or ui:repeat.
        Hide
        Arturo Zambrano added a comment -

        The problem with the split panes not being rendered is in the test application itself. The iterative containers in the test pages reference a 'tableBean' bean where the data model is supposed to be found, but there's no such class in the Java code of the application. The only class is AttributeBean, and it doesn't contain the employee data that these test pages are supposed to display. Other components and text in the same table/repeat components don't get rendered either. Placing an ace:splitPane inside a table of a showcase demo does display the table and the split panes.

        Please correct this error in the test application, by adding a bean that contains a data model that the test pages can use.

        Show
        Arturo Zambrano added a comment - The problem with the split panes not being rendered is in the test application itself. The iterative containers in the test pages reference a 'tableBean' bean where the data model is supposed to be found, but there's no such class in the Java code of the application. The only class is AttributeBean, and it doesn't contain the employee data that these test pages are supposed to display. Other components and text in the same table/repeat components don't get rendered either. Placing an ace:splitPane inside a table of a showcase demo does display the table and the split panes. Please correct this error in the test application, by adding a bean that contains a data model that the test pages can use.
        Hide
        Arturo Zambrano added a comment - - edited

        r45797: removed implements clause from component class, which was obsolete; removed ID attribute from Meta class, which was returning the same ID for all component instances in an iterative container; modified approach of setting heights of the panes so they have the same height.

        It's not that the scrollable attribute is not working consistently in iterative containers. If the entire content can be displayed within the boundaries of the containers, then there's no need to show a scollbar. If one added a specific, short height to the pane, using CSS, then all panes showed a scrollbar. The issue had to do with not calculating the height consistently, when not specified explicitly by the page author.

        The problem was caused first because all the component instances had the exact same client ID, due to the component declaring the ID attribute in the Meta class, which was used for JSP and is not necessary in this codebase/version. Also, the approach to calculating the heights of the panes (to equal the left and right heights) was done in an awkward way and assuming that there was only one split pane component on the page/viewport. This approach was changed to something that makes more sense and is more intuitive and standard: the height of the shorter pane will be matched to the height of the taller pane; both panes will take as much height as necessary to display all their contents, unless a specific height is set via the style or styleClass attributes.

        Testing Notes: now, in order to test the scrollable attribute, it will be necessary to set a specific height via style of styleClass.

        Show
        Arturo Zambrano added a comment - - edited r45797: removed implements clause from component class, which was obsolete; removed ID attribute from Meta class, which was returning the same ID for all component instances in an iterative container; modified approach of setting heights of the panes so they have the same height. It's not that the scrollable attribute is not working consistently in iterative containers. If the entire content can be displayed within the boundaries of the containers, then there's no need to show a scollbar. If one added a specific, short height to the pane, using CSS, then all panes showed a scrollbar. The issue had to do with not calculating the height consistently, when not specified explicitly by the page author. The problem was caused first because all the component instances had the exact same client ID, due to the component declaring the ID attribute in the Meta class, which was used for JSP and is not necessary in this codebase/version. Also, the approach to calculating the heights of the panes (to equal the left and right heights) was done in an awkward way and assuming that there was only one split pane component on the page/viewport. This approach was changed to something that makes more sense and is more intuitive and standard: the height of the shorter pane will be matched to the height of the taller pane; both panes will take as much height as necessary to display all their contents, unless a specific height is set via the style or styleClass attributes. Testing Notes: now, in order to test the scrollable attribute, it will be necessary to set a specific height via style of styleClass.
        Hide
        Liana Munroe added a comment -

        Tested with ICEfaces 4 trunk r45799. Modified test cases to include a height where required. Containers are sized correctly. Scrollable attribute is working as expected when set to true. It is noted that when scrollable = false and a height is set on the splitPane, the content will overflow the splitPane if it can not fit into the height specified.
        Since this fix when using the splitPane inside an ace:tabSet a change in behaviour is observed in all browsers. When first loading the ace:splitPane inside ace:tabSet demo the left hand side of the splitPane is not fully rendered. (See screenshot 1.PNG). If you toggle the developer tools (F12) the left pane will now come into full view.

        Show
        Liana Munroe added a comment - Tested with ICEfaces 4 trunk r45799. Modified test cases to include a height where required. Containers are sized correctly. Scrollable attribute is working as expected when set to true. It is noted that when scrollable = false and a height is set on the splitPane, the content will overflow the splitPane if it can not fit into the height specified. Since this fix when using the splitPane inside an ace:tabSet a change in behaviour is observed in all browsers. When first loading the ace:splitPane inside ace:tabSet demo the left hand side of the splitPane is not fully rendered. (See screenshot 1.PNG). If you toggle the developer tools (F12) the left pane will now come into full view.
        Hide
        Arturo Zambrano added a comment -

        r45815: committed additional fixes for height and overflow.

        This solves the two issues in the comment above.

        Show
        Arturo Zambrano added a comment - r45815: committed additional fixes for height and overflow. This solves the two issues in the comment above.
        Hide
        Liana Munroe added a comment -

        Verified ICEfaces 4 trunk r45816. Tomcat 7, IE 11, 10, 9, 8, FF 34, Chrome 43

        Show
        Liana Munroe added a comment - Verified ICEfaces 4 trunk r45816. Tomcat 7, IE 11, 10, 9, 8, FF 34, Chrome 43

          People

          • Assignee:
            Arturo Zambrano
            Reporter:
            Liana Munroe
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: