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

chosenbox problems with initially empty model

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Normal Normal
    • 9.0.1
    • 8.6.3
    • Components
    • Security Level: Jimmy
    • ZK 9.0.1 S1

      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

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

              Created:
              Updated:
              Resolved:

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