ICEfaces
  1. ICEfaces
  2. ICE-8219

REGRESSION - inField Label causes bugs in ace:AutoCompleteEntry

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.0.BETA1
    • Fix Version/s: 3.1.0.RC1, 3.1
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      Tomcat 7, all browsers
    • Assignee Priority:
      P1

      Description

      All errors below occur ONLY when the autoCompleteEntry being used currently has an inField label. As the issues provide some slightly different errors/effects dependent on which of the two pages I tested on, I will attempt to differentiate between them as best I can.

      Error 1: Upon typing the initial letter into an autoCompleteEntry after a refresh or server start, an error is thrown. The dropdown menu for possible selections does not appear until either that initial letter is deleted, or another letter is added on.

                  - /autoCompleteEntryOnly: The error thrown is: [window] Error [status: malformedXML code: 200]: Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLDivElement.replaceChild]
                  
                  - /autoCompleteEntryDynAttribute: The error thrown is: [window] Error [status: malformedXML code: 200]: During update: frm:textEntryscript not found.
                              As a note, this issue appear whenever the initial letter is typed in an inField-label component. If a different label set up is used, the error will appear upon switching to inField and typing a letter.

      Error 2: Clearing the entire field and pressing the enter key often causes the error: '[window] Error [status: malformedXML code: 200]: During update: frm:textEntryscript not found' to be thrown. When it is, the mouse focus does not leave the input field, and the label reappears within the field. From that point on, until its deletion, the label is treated as standard input by the component. Removing and replacing focus do not clear the label as it should. Often, though not always, the label itself is seen as the entry for auto-complete, causing ex. 'Labelle' to appear in the dropdown menu. I have seen it both maintain and ignore label css styling.

                 - /autoCompleteEntryDynAttribute: The error seems to happen less frequently than in /*Only. Sometimes, if the entire label is deleted, the error is thrown again and the label is re-generated. I have not observed this occurring in /*Only

      Tests can be found at http://server.ice:8888/svn/repo/qa/trunk/Regression-Icefaces2/Sparkle/Nightly/autoCompleteEntry/
      The specific tests that I was using to test this were /autoCompleteEntryOnly and /autoCompleteEntryDynAttribute.
      1. screenshot-05.png
        267 kB
      2. screenshot-04.png
        220 kB
      3. screenshot-03.png
        97 kB
      4. screenshot-02.png
        208 kB
      5. screenshot-01.png
        294 kB

        Activity

        Hide
        yip.ng added a comment - - edited

        All the errors are from jsf.js and bridge.js. jsf.js is minified; brigde.js error lines just point to error logging functions. Impossible to debug further. See screenshot-01.png.

        The errors most likely come from DOM diff. and DOM updates. The rendering of the HTML and JavaScript is actually correct, only that when there is an infield label, both the input field and the JS get changed and trigger extra DOM updates. See screenshot-02.png.

        Old input field and its states would be totally wiped out. New JS would try to create new instance from scratch. Meanwhile, other parts of the component (e.g. original component instance, hidden fields, other JS states) would be left in limbo.

        These are the same old problems of syncing server and client states, and framework and client component (sometimes even multiple instances of client component) trying to control the same sections of HTML and CSS. See, for example, my comment at: http://jira.icesoft.org/browse/ICE-7388?focusedCommentId=37272&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37272.

        See all the problems in ICE-7361, ICE-7388, ICE-7505, ICE-7506, ICE-7601 ......

        Show
        yip.ng added a comment - - edited All the errors are from jsf.js and bridge.js. jsf.js is minified; brigde.js error lines just point to error logging functions. Impossible to debug further. See screenshot-01.png. The errors most likely come from DOM diff. and DOM updates. The rendering of the HTML and JavaScript is actually correct, only that when there is an infield label, both the input field and the JS get changed and trigger extra DOM updates. See screenshot-02.png. Old input field and its states would be totally wiped out. New JS would try to create new instance from scratch. Meanwhile, other parts of the component (e.g. original component instance, hidden fields, other JS states) would be left in limbo. These are the same old problems of syncing server and client states, and framework and client component (sometimes even multiple instances of client component) trying to control the same sections of HTML and CSS. See, for example, my comment at: http://jira.icesoft.org/browse/ICE-7388?focusedCommentId=37272&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_37272 . See all the problems in ICE-7361 , ICE-7388, ICE-7505 , ICE-7506 , ICE-7601 ......
        Hide
        Brennan Mckinney added a comment -

        Error 1 has been fixed. Error 2 is still present, though it no longer seems to be throwing any errors.

        Submit a blank input when the component has an inField label. It doesn't always happen (seems to be about one in three, roughly), but the label itself will begin to be treated as input.

        Show
        Brennan Mckinney added a comment - Error 1 has been fixed. Error 2 is still present, though it no longer seems to be throwing any errors. Submit a blank input when the component has an inField label. It doesn't always happen (seems to be about one in three, roughly), but the label itself will begin to be treated as input.
        Hide
        yip.ng added a comment - - edited

        Still the same old problem of DOM diff. and DOM updates messing up the client-side states. See screenshot-03.png. Also need to sync with framework focus management. (Note: framework focus management occasionally behaves inconsistently. There are also all other kinds of focus/blur management, in both the markup and the component JS. See screenshot-04.png and screenshot-05.png.)

        Modified: C:\svn\ossrepo\icefaces3\trunk\icefaces\ace\component\src\org\icefaces\ace\component\autocompleteentry\AutoCompleteEntryRenderer.java
        Completed: At revision: 29438

        Show
        yip.ng added a comment - - edited Still the same old problem of DOM diff. and DOM updates messing up the client-side states. See screenshot-03.png. Also need to sync with framework focus management. (Note: framework focus management occasionally behaves inconsistently. There are also all other kinds of focus/blur management, in both the markup and the component JS. See screenshot-04.png and screenshot-05.png.) Modified: C:\svn\ossrepo\icefaces3\trunk\icefaces\ace\component\src\org\icefaces\ace\component\autocompleteentry\AutoCompleteEntryRenderer.java Completed: At revision: 29438

          People

          • Assignee:
            yip.ng
            Reporter:
            Brennan Mckinney
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: