jQWidgets Forums

Forum Replies Created

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • in reply to: Combo box with large local list Combo box with large local list #107716

    ScottChapman
    Participant

    I’m actually doing something very much like the cascading combo box, which is why the performance of setting the values to select matters–the other selections that the user makes may or may not pre-qualify the list to a “reasonable” number of items. I.E. from the other fields they may make a selection for 20 items or 20,000. And they can change those around meaning that I need to redrive the population of the problematic comboBox after every selection that they make. Ok, if their other selection is 20, not so great if it’s 20,000.

    The data adapter doesn’t seem to provide much (any?) value over just populating a new array for the source for the comboBox. I was hoping for a way that I could use the data adapter and remoteAutoComplete such that the dataAdapter would be called and return the list of matches from an array (i.e. without having to use a true remote call back to the server).

    The jqxInput idea is fine, except it foregoes the option to have a drop-down arrow to just select the value.

    Absent a better idea, my current idea is to use the comboBox, but only populate it with values when the other filtering fields have limited the list down to say less than 5,000. (Need to figure out the reasonable threshold.) If the user hasn’t filtered the choices to less than that threshold, the user will be able to type in the field, but there’s no validation. But we’ll try to use that typed value on the assumption that they do know a valid value. Unfortunately, it doesn’t look like the comboBox API has a method to read the entered (but not yet selected, since it’s not in the list, because there is no list) value. But it seems that I can get it by going after the hidden input field directly:

            var typedValue = $("#expEntSelect input")[1].value;
            var selectedValues = $("#expEntSelect").jqxComboBox("getSelectedItems");

    ScottChapman
    Participant

    Seems to be possibly a conflict with multiSelect=true.

    in reply to: Combo box with large local list Combo box with large local list #107694

    ScottChapman
    Participant

    My biggest issue is with the performance of setting (and resetting) the source items.

    In my real application, it’s taking about 1.5 seconds to populate my test case of almost 14,000 items. The concern is that this is not the worst case scenario, which could be multiple times larger (at least in certain edge cases).

            var t1 = performance.now();
            $("#expEntSelect").jqxComboBox({source: entities});
            var t2 = performance.now();
            console.log("Populating entity select comboBox took "+(t2-t1)+"ms for "+entities.length+" entities ");

    Populating entity select comboBox took 1545.5049999291077ms for 13899 entities

    Interestingly, it’s hard to replicate in a fiddle. Upon first load of this it seems to take over 1 second (but still less than my test case of 1.5 seconds) but if you just hit run again, it will be down to about 800ms, which probably is on the edge of acceptable.

    My hope was that maybe I could bind to a local jqxDataAdapter and somehow progressively render results with that in a more performant manner. But I don’t see a way of doing that.

    But I’m also exploring other UI paradigms. Worst case, the user might not get to search and just have to know the entity name that they want to select.

    in reply to: DateTime range slider DateTime range slider #95073

    ScottChapman
    Participant

    Thanks–don’t know how I missed that. Thanks for putting me back on track.

    A couple of notes from playing with it a little bit:
    API Reference page has a couple of typos: it appears that labelFormat and markerFormat should be labelsFormat and markersFormat.

    When dealing with long time ranges (long being relative), the minorTicksInterval can have a significant impact on the time to initialize the widget, even when showMinorTicks & snapToTicks are false. So if you are setting a large time range, it’s best to set the minorTicks to something significant relative to that time range. I.E. don’t set or leave minorTicksInterval at 1 minute when setting a range of a few months or it may take half a minute to initialize the widget. That’s not really realistic relative to the number of minutes per pixel in such a case, but the point is one can’t be lazy and leave the minor interval at 1 minute regardless of the time range.


    ScottChapman
    Participant

    Sorry for the delay getting back to this.

    Thanks for the pointer to jqxDockingLayout. I had ignored it as being just layout oriented, but the demo does imply that I might be able to make it work for what I want.

    Scott


    ScottChapman
    Participant

    Thanks for the responses.

    #5 was about resizing the docking panels programmatically–like if I wanted to make a 75/25 split maybe instead of 50/50.

    Am I to understand #4 as docking all together inside a window is unsupported? Or only that floating windows inside a window is unsupported? If the former, what UI construct do you recommend, and if the latter, is there a way of preventing the user from dragging/dropping the windows in such a way that makes them floating? (My best guess for a work-around is to automatically reset the parameter after a move.)

    Scott

Viewing 6 posts - 1 through 6 (of 6 total)