Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Bug (double fetch) with new ListGrid setting setSortByGroupFirst(true)

$
0
0
Hi Isomorphic,

please see this testcase (using v10.0p_2015-05-06):
Code:

package com.smartgwt.sample.client;

import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.util.PageKeyHandler;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

public class BuiltInDS implements EntryPoint {
        private VLayout vL;
        private TestGrid tG;
        private HLayout hL;

        public void onModuleLoad() {
                KeyIdentifier debugKey = new KeyIdentifier();
                debugKey.setCtrlKey(true);
                debugKey.setKeyName("D");

                Page.registerKey(debugKey, new PageKeyHandler() {
                        public void execute(String keyName) {
                                SC.showConsole();
                        }
                });

                vL = new VLayout(5);
                vL.setTop(20);
                vL.setLeft(20);
                vL.setWidth100();
                vL.setHeight100();
                tG = new TestGrid();

                hL = new HLayout(5);
                IButton reload = new IButton("Reload");
                reload.addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                vL.removeChild(tG);
                                tG.markForRedraw();
                                tG = new TestGrid();
                                vL.addMember(tG, 0);
                        }
                });
                IButton getConfig = new IButton("Get ViewState");
                getConfig.addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                SC.say(tG.getViewState());
                        }
                });

                hL.addMembers(reload, getConfig);
                vL.addMembers(tG, hL);
                vL.draw();
        }

        private class TestGrid extends ListGrid {
                public TestGrid() {
                        super(DataSource.get("animals"));
                        setAutoFetchData(false);
                        setCanSort(true);
                        setGroupByMaxRecords(456);

                        ListGridField commonName = new ListGridField("commonName");
                        ListGridField scientificName = new ListGridField("scientificName");
                        ListGridField lifeSpan = new ListGridField("lifeSpan");
                        ListGridField status = new ListGridField("status");
                        ListGridField diet = new ListGridField("diet");
                        ListGridField information = new ListGridField("information");

                        setGroupByField(status.getName());
                        setSortByGroupFirst(true);
                        setFields(commonName, scientificName, lifeSpan, status, diet, information);
                        setSort(new SortSpecifier[] { new SortSpecifier(lifeSpan.getName(), SortDirection.ASCENDING),
                                        new SortSpecifier(diet.getName(), SortDirection.DESCENDING) });
                        fetchData();
                }
        }

}

For me, there are two fetches on ListGrid creation. This does not happen without the setSortByGroupFirst(true) call.

The requests are:
1st request (see endRow:457 and setGroupByMaxRecords(456) in the code):
Code:

{
    dataSource:"animals",
    operationType:"fetch",
    componentId:"isc_BuiltInDS_TestGrid_5",
    data:{
    },
    startRow:0,
    endRow:457,
    sortBy:[
        "status",
        "lifeSpan",
        "-diet"
    ],
    textMatchStyle:"exact",
    resultSet:[ResultSet ID:isc_ResultSet_5 (dataSource: animals, created by: isc_BuiltInDS_TestGrid_5)],
    callback:{
        caller:[ResultSet ID:isc_ResultSet_5 (dataSource: animals, created by: isc_BuiltInDS_TestGrid_5)],
        methodName:"fetchRemoteDataReply"
    },
    willHandleError:true,
    showPrompt:true,
    prompt:"Finding Records that match your criteria...",
    oldValues:{
    },
    requestId:"animals$6279",
    internalClientContext:{
        requestIndex:1
    },
    fallbackToEval:false,
    lastClientEventThreadCode:"MUP8",
    bypassCache:true
}

2nd request (not needed):
Code:

{
    dataSource:"animals",
    operationType:"fetch",
    componentId:"isc_BuiltInDS_TestGrid_5",
    data:{
    },
    startRow:0,
    endRow:75,
    sortBy:[
        "status",
        "lifeSpan",
        "-diet"
    ],
    textMatchStyle:"exact",
    resultSet:[ResultSet ID:isc_ResultSet_5 (dataSource: animals, created by: isc_BuiltInDS_TestGrid_5)],
    callback:{
        caller:[ResultSet ID:isc_ResultSet_5 (dataSource: animals, created by: isc_BuiltInDS_TestGrid_5)],
        methodName:"fetchRemoteDataReply"
    },
    willHandleError:true,
    showPrompt:true,
    prompt:"Finding Records that match your criteria...",
    oldValues:{
    },
    requestId:"animals$62710",
    internalClientContext:{
        requestIndex:2
    },
    fallbackToEval:false,
    lastClientEventThreadCode:"TMR0",
    bypassCache:true
}

I reported a similar bug, which is fixed, for 4.1p here.

I also remember getting a log entry in the Developer Console like (from memory) "The ResultSet for ListGrid xyz was discarded while ..." back then. I do not get this message now.

Best regards
Blama

Viewing all articles
Browse latest Browse all 4756

Trending Articles