Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-4446

chosenbox problems with initially empty model

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Normal
    • Resolution: Fixed
    • Affects Version/s: 8.6.3
    • Fix Version/s: 9.0.1
    • Component/s: Components
    • Security Level: Jimmy
    • Labels:
    • gh.sprint.customfield.default.name:
      ZK 9.0.1 S1

      Description

      Steps to Reproduce

      <zk>
          <zscript>
              ListModelList model = new ListModelList();
          </zscript>
          <chosenbox width="300px" creatable="true"
                     model="${model}"
                     onSearch='model.add(event.value); model.addToSelection(event.value);'
          />
      </zk>
      

      1) create a new item 'AAA'
      2) remove the item 'AAA'
      3a) add the item 'AAA' again
      3b) create the item 'AAA' again

      Current Result

      1) item added OK
      2) item removed OK
      3a) the item doesn't appear in the choices
      3b) after re-creating 'AAA' it appears twice

      Expected Result

      3a) item should be available in the model (unless removed from java code)
      3b) re-creating the same item should not be necessary/possible

      Debug Information

      trying to remove unselected items from the model leads to a JS error

      add 'AAA'
      then 'BBB'
      then remove 'BBB'

      <zk>
          <zscript>
              ListModelList model = new ListModelList();
          </zscript>
          <chosenbox width="300px" creatable="true"
                     model="${model}"
                     onSearch='model.add(event.value); model.addToSelection(event.value);'
                     onSelect='model.removeAll(event.unselectedObjects);'
          />
      </zk>
      

      -->

      zk.wpd:27427 Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.
          at init._updateListContent (zkmax.inp.wpd:9)
          at Object.invoke (zk.wpd:28677)
          at doProcess (zk.wpd:26925)
          at doCmdsNow (zk.wpd:27025)
          at Object._doCmds (zk.wpd:27392)
          at Object.afterResponse (zk.wpd:27898)
          at XMLHttpRequest._onResponseReady (zk.wpd:27753)
      

      Adding an initial item avoids the problems from above.
      However the initial item can not be removed successfully, it always reappears in the available choices.

      <zk>
          <zscript>
              ListModelList model = new ListModelList();
              model.add("INITIAL DUMMY");
          </zscript>
          <chosenbox width="300px" creatable="true"
                     model="${model}"
                     onSearch='model.add(event.value); model.addToSelection(event.value);'
                     onSelect='model.removeAll(event.unselectedObjects);'
          />
      </zk>
      

      Workaround

      use an empty dummy item, even 'null' works, and filter it out later, or make sure there's at least 1 initially available option

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              Leon03 Leon03
              Reporter:
              cor3000 cor3000
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 2 days
                  2d
                  Remaining:
                  Remaining Estimate - 2 days
                  2d
                  Logged:
                  Time Spent - Not Specified
                  Not Specified