Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    12.1p/13.0d SelectItem strange pageSize behavior depending on column count

    Hi Isomorphic,

    I tried something in the showcase today and found a strange behavior. See this sample (v12.1p_2021-11-02) and add another column for the 2nd SelectItem:
    Code:
    pickListFields: [
                  { name:"itemName", width:125 },
                  { name:"units" },
                  { name:"unitCost" },
                  { name:"inStock" }
              ]
    Try this, then start commenting out fields, starting with "inStock". The behavior is as follows:
    • 4 fields: endRow:75
    • 3 fields: endRow:83
    • 2 fields: endRow:125
    • 1 field: endRow:75
    I'd always expect endRow:75.

    This is somehow related to drawAllMaxCells, because I can get the desired behavior with
    Code:
    pickListProperties: {drawAllMaxCells:0},
    There already exists an old thread about this. I'm not sure what's going on here, but IMHO it does not make sense the way it is.
    This does not happen in 12.0p, so perhaps there was a change after that thread?

    Best regards
    Blama
    Last edited by Blama; 5 Nov 2021, 03:27.

    #2
    Hi Isomorphic,

    this is still happening with v12.1p_2022-01-05 / v13.0p_2022-01-06 using FF95.

    Best regards
    Blama

    Comment


      #3
      drawAllMaxCells affects the drawAhead area, because if there are few enough cells, the grid will draw the entire grid, since that means there will be zero redraws during scrolling, providing a more responsive experience. The drawAhead area in turn affects the fetched range, since the grid will request data for all the rows it plans to draw.

      Comment


        #4
        Hi Isomorphic,

        I get that and it seems like a nice optimization, but I don't understand why the row count first increases with 4->3->2 fields (which would agree with your explanation) and then drops again with 1 field only (where it does not agree with your explanation).

        If I understand it right it should be:
        • 6 fields: requested range = max(drawAllMaxCells(=250)/6 fields, dataPageSize(=75)) -> 75
        • 5 fields: requested range = max(drawAllMaxCells(=250)/5 fields, dataPageSize(=75)) -> 75
        • 4 fields: requested range = max(drawAllMaxCells(=250)/4 fields, dataPageSize(=75)) -> 75
        • 3 fields: requested range = max(drawAllMaxCells(=250)/3 fields, dataPageSize(=75)) -> 83.333
        • 2 fields: requested range = max(drawAllMaxCells(=250)/2 fields, dataPageSize(=75)) -> 125
        • 1 field: requested range = max(drawAllMaxCells(=250)/1 field, dataPageSize(=75)) -> 250 (and not 75)
        Is that reasoning correct?

        Best regards
        Blama
        Last edited by Blama; 8 Jan 2022, 10:32.

        Comment


          #5
          You're seeing a "capping" strategy. If drawAllMaxCells in a paged grid would cause a row fetch that greatly exceeds the page size, we avoid that. It goes back to 75 because, if a full draw cannot be done, there is no point in fetching additional rows.

          Comment


            #6
            Hi Isomorphic

            ah, thanks. That explains it. Seems very advanced. Good to know you also think of edge cases.

            Best regards
            Blama

            Comment

            Working...
            X