ICEfaces
  1. ICEfaces
  2. ICE-8562

ace:DateTimeEntry rendering issues with a POST redirect

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1
    • Fix Version/s: EE-3.2.0.BETA, EE-3.2.0.GA, 3.3
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ICEfaces 3.1, Chrome, Firefox, IE
    • Assignee Priority:
      P1

      Description

      It appears that the ace:DateTimeEntry component does not render when a page is navigated to via an internal navigation. (POST redirect)

      Source code attached.

      To reproduce:
      1. Deploy and access sample application default page.
      2. From the main page:
          2.1. Click link Navigate Externally to Tabs Wrapper (via html link) --> Selecting the date component in the tabSet works, and the date select pannel is enabled
          2.2. Click button Navigate internally to date component (via command button post redirect) --> When landing on the page selecting the date component no selection pannel is rendered

        Activity

        Evgheni Sadovoi created issue -
        Evgheni Sadovoi made changes -
        Field Original Value New Value
        Attachment Case11602.rar [ 14871 ]
        Evgheni Sadovoi made changes -
        Salesforce Case [5007000000O9I8Y]
        Hide
        yip.ng added a comment - - edited

        There is an error in the Bridge before it even gets to the calendar JS. See screenshot-01.png

        Show
        yip.ng added a comment - - edited There is an error in the Bridge before it even gets to the calendar JS. See screenshot-01.png
        Hide
        Cruz Miraback added a comment - - edited

        The reason the dateTimeEntry doesn't pop up is because the mandatoryResourceConfig in the test is configured incorrectly, it is set to '@all' when it should just be 'all'. If changing the mandatoryResourceConfig to the correct value the test works fine. This was tested on icefaces3/trunk revision#31304. Attached rar containing the correct source.

        Show
        Cruz Miraback added a comment - - edited The reason the dateTimeEntry doesn't pop up is because the mandatoryResourceConfig in the test is configured incorrectly, it is set to '@all' when it should just be 'all'. If changing the mandatoryResourceConfig to the correct value the test works fine. This was tested on icefaces3/trunk revision#31304. Attached rar containing the correct source.
        Hide
        Ken Fyten added a comment - - edited

        Assignee: Ken Fyten (was: Mircea Toma)
        Assignee Priority: (was: P1)
        Resolution: Invalid
        Seems this issue is resolved by the correct use of the mandatoryResource Configuration mechanism to ensure the necessary ace:dateTimeEntry resources are preloaded when necessary, as is the case in this scenario.
        Note that it is more efficient to specify just the component that is being loaded dynamically in the mandatoryResource config, instead of 'all'.
        See the http://wiki.icesoft.org/display/ICE/ACE+Configuration Wiki topic for more information on the use of mandatoryResource Config.

        Show
        Ken Fyten added a comment - - edited Assignee: Ken Fyten (was: Mircea Toma) Assignee Priority: (was: P1) Resolution: Invalid Seems this issue is resolved by the correct use of the mandatoryResource Configuration mechanism to ensure the necessary ace:dateTimeEntry resources are preloaded when necessary, as is the case in this scenario. Note that it is more efficient to specify just the component that is being loaded dynamically in the mandatoryResource config, instead of 'all'. See the http://wiki.icesoft.org/display/ICE/ACE+Configuration Wiki topic for more information on the use of mandatoryResource Config.
        Hide
        Mitchell Smith added a comment - - edited

        The correct use of the mandatoryResource configuration, resolves the initial loading of the component, however the popup calender does not render if the page was internally navigated away from, and then back to (as if a user were to go back a step in a multi-page process)
        To replicate:
        Click Navigate Internally from Index --> use date component (it works) --> click tab2 --> Click the commandButton 'Navigate Internally' --> (This loads a different xhtml page internally) --> click commandButton 'Navigate back Internally to date component' --> This reloads the original tabSet containing the date component (The calender popup no longer works)
        This was tested at 3.2Beta1, with the mandatoryResourceConfiguration set to 'all' at the application level.

        Show
        Mitchell Smith added a comment - - edited The correct use of the mandatoryResource configuration, resolves the initial loading of the component, however the popup calender does not render if the page was internally navigated away from, and then back to (as if a user were to go back a step in a multi-page process) To replicate: Click Navigate Internally from Index --> use date component (it works) --> click tab2 --> Click the commandButton 'Navigate Internally' --> (This loads a different xhtml page internally) --> click commandButton 'Navigate back Internally to date component' --> This reloads the original tabSet containing the date component (The calender popup no longer works) This was tested at 3.2Beta1, with the mandatoryResourceConfiguration set to 'all' at the application level.
        Hide
        Evgheni Sadovoi added a comment - - edited

        Assignee: yip.ng (was: Ken Fyten)
        Assignee Priority: P1
        I'd updated original test case based on the comments from Michael and was able to reproduce it.

        Show
        Evgheni Sadovoi added a comment - - edited Assignee: yip.ng (was: Ken Fyten) Assignee Priority: P1 I'd updated original test case based on the comments from Michael and was able to reproduce it.
        Hide
        Evgheni Sadovoi added a comment - - edited

        Assigning to Yip for further review. The bug is critical for our customer.
        (Restricted to icesoft-internal-developers group)

        Show
        Evgheni Sadovoi added a comment - - edited Assigning to Yip for further review. The bug is critical for our customer. (Restricted to icesoft-internal-developers group)
        Hide
        yip.ng added a comment - - edited

        After much tracing and debugging, found that there is nothing wrong with the component.
        This is yet another case of the same old issue of the framework DOM updates messing up the client-side states.
        The popup is created dynamically on the client side. (It is a div attached to the body.) Seems the popup is shared among calendar instances. The calendar instances and the shared popup are managed by a singleton manager. In this scenario the framework just comes along and wipe out the whole body, without the manager knowing.
        This can't just be solved like before using a hash code to force DOM diff. to update properly. You need to tell the manager you are wiping out HTML under its control. Even then there may not be an easy fix. Seems the manager works by assuming that the popup is created/initialized only once per jquery-ui.js load, i.e. the framework needs to reload jquery-ui.js or at least the datepicker portion of the jquery-ui.js.
        Tried hardcoding to force manager to re-create the popup for the second calendar instance in this scenario and it seemed to work. See video http://screencast.com/t/K0M6bqnF. Need to find a way to make this work without creating a host of other problems in this or other scenarios.

        Show
        yip.ng added a comment - - edited After much tracing and debugging, found that there is nothing wrong with the component. This is yet another case of the same old issue of the framework DOM updates messing up the client-side states. The popup is created dynamically on the client side. (It is a div attached to the body.) Seems the popup is shared among calendar instances. The calendar instances and the shared popup are managed by a singleton manager. In this scenario the framework just comes along and wipe out the whole body, without the manager knowing. This can't just be solved like before using a hash code to force DOM diff. to update properly. You need to tell the manager you are wiping out HTML under its control. Even then there may not be an easy fix. Seems the manager works by assuming that the popup is created/initialized only once per jquery-ui.js load, i.e. the framework needs to reload jquery-ui.js or at least the datepicker portion of the jquery-ui.js. Tried hardcoding to force manager to re-create the popup for the second calendar instance in this scenario and it seemed to work. See video http://screencast.com/t/K0M6bqnF . Need to find a way to make this work without creating a host of other problems in this or other scenarios.
        Hide
        yip.ng added a comment - - edited

        Tested wrapping group panel with common id as mentioned by Mark. Working.

        Show
        yip.ng added a comment - - edited Tested wrapping group panel with common id as mentioned by Mark. Working.
        Migration made changes -
        Assignee Ken Fyten [ ken.fyten ]
        Migration made changes -
        Assignee Ken Fyten [ ken.fyten ] yip.ng [ yip.ng ]
        Fix Version/s 3.2 [ 10338 ]
        Assignee Priority P1 [ 10010 ]
        Migration made changes -
        Fix Version/s EE-3.2.0.GA [ 10332 ]
        Fix Version/s 3.2 [ 10338 ]
        Migration made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Migration made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Migration made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Migration made changes -
        Fix Version/s 3.2 [ 10338 ]
        Fix Version/s EE-3.2.0.GA [ 10332 ]
        Migration made changes -
        Fix Version/s EE-3.2.0.GA [ 10332 ]
        Fix Version/s 3.3 [ 10370 ]
        Fix Version/s 3.2 [ 10338 ]
        Migration made changes -
        Attachment screenshot-01.png [ 14950 ]
        Migration made changes -
        Attachment ICE-8562-fixed.rar [ 14966 ]
        Migration made changes -
        Attachment oldNode.txt [ 14969 ]
        Ken Fyten made changes -
        Fix Version/s EE-3.2.0.BETA [ 10573 ]
        Evgheni Sadovoi made changes -
        Attachment case11602.zip [ 15356 ]
        Hide
        yip.ng added a comment -
        Show
        yip.ng added a comment - Another similar case: http://jforum.icesoft.org/JForum/posts/list/15/21571.page#76150 .
        Hide
        yip.ng added a comment - - edited
        Show
        yip.ng added a comment - - edited ICE-8970 , ICE-9455 .
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            yip.ng
            Reporter:
            Evgheni Sadovoi
          • Votes:
            5 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: