Details

    • Type: Bug Fix Bug Fix
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.3.0-m2, 2.3
    • Fix Version/s: 2.4
    • Component/s: User Interface
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-9664Uif-Suggest doesn't work in a lightbox
      KULRICE-8566Double Scrollbars in Google Chrome
      KULRICE-11282openHelpWindow js function not working in chrome
      KULRICE-7402Issue with Chrome using close buttons after executing an export
      KULRICE-12515DemoControlCheckboxDefaultAft acting different with checboxes between Chrome and Firefox
      KULRICE-6101KRAD: frame sizing issue on Travel Account Lookup in Safari, Chrome, or IE9
      KULRICE-13494Person Lookup returns no results for Active status code
      KULRICE-13280Mouse Events demo: In Chrome, mousing over the checkbox doesn’t do anything
      KULRICE-5988Iframe resize issue in Chrome
      KULRICE-8983Resizing testing
    • Rice Module:
      KRAD
    • KRAD Feature Area:
      UIF Component
    • Sprint:
      2.4.0-rc1 Sprint 6
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Code Review Status:
      Not Required
    • Include in Release Notes?:
      Yes

      Description

      Uif-Suggest box does not trigger the refreshWhenChangedPropertyNames of a hidden section in Chrome. This does work correctly in Firefox.

      If the suggest property is removed from the input field then the page works as desired in Chrome as well.

      XML:

      <bean id="paymentTypeSuggest" parent="Uif-InputField" p:propertyName="paymentTransactionTypeId"
            p:label="Payment Type" p:fieldLabel.renderColon="false" p:labelPlacement="TOP"
            p:maxLength="20" p:required="true">
          <property name="suggest">
              <bean parent="Uif-Suggest">
                  <property name="valuePropertyName" value="id.id"/>
                  <property name="templateOptions">
                      <map>
                          <entry key="minLength" value="2"/>
                          <entry key="delay" value="0"/>
                      </map>
                  </property>
                  <property name="suggestQuery">
                      <bean parent="Uif-AttributeQueryConfig">
                          <property name="queryMethodToCall" value="getPaymentsForSuggest"/>
                      </bean>
                  </property>
              </bean>
          </property>
      
      </bean>
      <bean parent="Uif-VerticalBoxSection" p:methodToCallOnRefresh="getTransactionType" p:refreshWhenChangedPropertyNames="paymentTransactionTypeId">
          <property name="items"><list>
              <bean parent="Uif-MessageField" p:messageText="@{transactionTypeMessage}"/>
              <bean parent="Uif-HorizontalBoxSection" p:render="@{isTransactionTypeValid()}">
                  <property name="items">
                      <list>
                          <bean parent="Uif-VerticalBoxSection">
                              <property name="items">
                                  <list>
                                      <bean parent="Uif-InputField" p:propertyName="externalId" p:label="@{authorizationText}" p:labelPlacement="TOP" p:render="@{!#empty(authorizationText)}"/>
                                      <bean parent="Uif-HorizontalBoxSection" p:render="@{isTransactionTypeValid()}">
                                          <property name="items">
                                              <list>
                                                  <bean parent="Uif-InputField" p:propertyName="payment.parentTransaction.nativeAmount" p:label="Amount" p:labelPlacement="LEFT">
                                                      <property name="control">
                                                          <bean parent="Uif-TextControl" p:size="10" p:maxLength="100"/>
                                                      </property>
                                                  </bean>
                                                  <bean parent="Uif-InputField" id="currencyId" p:propertyName="currencyId" p:labelPlacement="TOP"
                                                        p:fieldLabel.renderColon="false">
                                                      <property name="control">
                                                          <bean parent="Uif-DropdownControl"/>
                                                      </property>
                                                      <property name="optionsFinder" value="@{getCurrencyOptionsFinder()}"/>
                                                  </bean>
                                              </list>
                                          </property>
                                      </bean>
                                      <bean parent="Uif-InputField" p:propertyName="payment.parentTransaction.amount" p:label="Amount in @{systemCurrency}"
                                            p:progressiveRender="@{currencyId != systemCurrencyId}" p:labelPlacement="TOP">
                                          <property name="control">
                                              <bean parent="Uif-TextControl" p:size="10" p:maxLength="100"/>
                                          </property>
                                      </bean>
      
      
                                  </list>
                              </property>
                          </bean>
                          <bean parent="Uif-VerticalBoxSection" p:style="background-color: #CCC; border-radius: 15px;"><property name="items"><list>
                              <bean parent="Uif-Disclosure-GridSection" p:readOnly="true" >
                                  <property name="items">
                                      <list>
                                          <bean parent="Uif-InputField" p:propertyName="paymentTransactionTypeId2" p:label="Payment Type" />
                                          <bean parent="Uif-InputField" p:propertyName="description" p:label="Description" />
                                          <bean parent="Uif-InputField" p:propertyName="refundable" p:label="Refundable" />
                                          <bean parent="Uif-InputField" p:propertyName="defaultClearingPeriod" p:label="Default Clearing Period" />
                                      </list>
                                  </property>
                              </bean>
                              <bean parent="Uif-InputField" p:propertyName="refundRule" p:readOnly="true" p:label="RefundRule" p:labelPlacement="TOP"/>
                          </list></property></bean>
                      </list>
                  </property>
              </bean>
          </list></property>
      </bean>
      

      Steps to reproduce:

      1) Go to http://50.19.120.177:8080/ksa/uif/paymentView?methodToCall=create&viewId=PaymentView&userId=user1

      2) Log in as admin / admin123

      3) In the Payment Type suggest box start typing 'cc' and the suggest box opens.

      4) Select "ccip" from the suggest box and then tab off the field.

      5) In Firefox, an extra horizontal box displays with extra fields. In Chrome, this extra horizontal box does not render.

      In Chrome, if a user types the whole string (e.g. "ccip") and then tab off it does render correctly.

        Activity

        Hide
        Martin Taylor (Inactive) added a comment -

        Tested on Win-FF + Mac-Safari,FF,Chrome but did not see the suggest box open at all. Is the site still using suggest?

        Show
        Martin Taylor (Inactive) added a comment - Tested on Win-FF + Mac-Safari,FF,Chrome but did not see the suggest box open at all. Is the site still using suggest?
        Hide
        Tim Bornholtz (Inactive) added a comment -

        Yes, this page is still using the suggest code as above in the issue submission.

        Show
        Tim Bornholtz (Inactive) added a comment - Yes, this page is still using the suggest code as above in the issue submission.
        Hide
        Martin Taylor (Inactive) added a comment - - edited

        Notes:
        On chrome, open inspect element on payment view page, change view to network and type in cc. The ajax request will appear.

        header-url: http://50.19.120.177:8080/ksa/uif/paymentView?methodToCall=performFieldSuggest&ajaxRequest=true&ajaxReturnType=update-none&formKey=a9e468ff-c67f-487e-8d4c-4fa14a082026&queryTerm=ccip&queryFieldId=u162&queryParameter.payment.effectiveDate=03%2F28%2F2014

        produces a incident view response stating:
        Query method argument field list size does not match found number of method arguments when calling
        on AttributeQueryServiceImpl.executeAttributeQueryMethod(AttributeQueryServiceImpl.java:379)

        Show
        Martin Taylor (Inactive) added a comment - - edited Notes: On chrome, open inspect element on payment view page, change view to network and type in cc. The ajax request will appear. header-url: http://50.19.120.177:8080/ksa/uif/paymentView?methodToCall=performFieldSuggest&ajaxRequest=true&ajaxReturnType=update-none&formKey=a9e468ff-c67f-487e-8d4c-4fa14a082026&queryTerm=ccip&queryFieldId=u162&queryParameter.payment.effectiveDate=03%2F28%2F2014 produces a incident view response stating: Query method argument field list size does not match found number of method arguments when calling on AttributeQueryServiceImpl.executeAttributeQueryMethod(AttributeQueryServiceImpl.java:379)
        Hide
        Martin Taylor (Inactive) added a comment - - edited

        The code is breaking when trying to match query method arguments count does not match. Noticed some changes made on trunk for this bean.

        <bean parent="Uif-Suggest">
            <property name="valuePropertyName" value="id.id"/>
            <property name="labelPropertyName" value="description"/>
            <property name="templateOptions">
                <map>
                    <entry key="minLength" value="2"/>
                    <entry key="delay" value="0"/>
                </map>
            </property>
            <property name="suggestQuery">
                <bean parent="Uif-AttributeQueryConfig">
                    <property name="queryMethodArgumentFieldList" value="payment.effectiveDate"/>
                    <property name="queryMethodToCall" value="getPaymentsForSuggest"/>
                </bean>     
            </property>
        </bean>
        

        The query method name is used twice. I'm looking into the QueryMethodInvoker to see how it handles identifying the correct method by method name and terms.

        The exception created is caused when calling performFieldQuery rather than performFieldSuggestQuery

        Show
        Martin Taylor (Inactive) added a comment - - edited The code is breaking when trying to match query method arguments count does not match. Noticed some changes made on trunk for this bean. <bean parent= "Uif-Suggest" > <property name= "valuePropertyName" value= "id.id" /> <property name= "labelPropertyName" value= "description" /> <property name= "templateOptions" > <map> <entry key= "minLength" value= "2" /> <entry key= "delay" value= "0" /> </map> </property> <property name= "suggestQuery" > <bean parent= "Uif-AttributeQueryConfig" > <property name= "queryMethodArgumentFieldList" value= "payment.effectiveDate" /> <property name= "queryMethodToCall" value= "getPaymentsForSuggest" /> </bean> </property> </bean> The query method name is used twice. I'm looking into the QueryMethodInvoker to see how it handles identifying the correct method by method name and terms. The exception created is caused when calling performFieldQuery rather than performFieldSuggestQuery
        Hide
        Martin Taylor (Inactive) added a comment -

        when the call for getArgumentTypes is made, it locates all declared method and returns the first match. The method is overloaded and is matching against the wrong method. Finding the right method requires knowing the right number of arguments.

        Show
        Martin Taylor (Inactive) added a comment - when the call for getArgumentTypes is made, it locates all declared method and returns the first match. The method is overloaded and is matching against the wrong method. Finding the right method requires knowing the right number of arguments.
        Hide
        Martin Taylor (Inactive) added a comment -

        Updated method to find best method match by argument count and set empty arguments to method invoker to help with match

        Show
        Martin Taylor (Inactive) added a comment - Updated method to find best method match by argument count and set empty arguments to method invoker to help with match
        Hide
        Martin Taylor (Inactive) added a comment -

        I've created a fix (patch attached) to handle matching overloaded methods though I would suggest updating KSA 'getPaymentsForSuggest(String,String)' method to include EffectiveDate in the method name.

        Show
        Martin Taylor (Inactive) added a comment - I've created a fix (patch attached) to handle matching overloaded methods though I would suggest updating KSA 'getPaymentsForSuggest(String,String)' method to include EffectiveDate in the method name.

          People

          • Assignee:
            Martin Taylor (Inactive)
            Reporter:
            Tim Bornholtz (Inactive)
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 6 hours
              6h
              Remaining:
              Time Spent - 5 hours, 40 minutes Remaining Estimate - 20 minutes
              20m
              Logged:
              Time Spent - 5 hours, 40 minutes Remaining Estimate - 20 minutes
              5h 40m

                Agile

                  Structure Helper Panel