Announcement

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

    Smartclient 10.1 Issue - ListGrid behavior on changing records changed

    Hi there,
    I found a bug using the latest nightly of Smartclient 10.1 (SmartClient_v101p_2015-12-17_Pro)

    We have a ListGrid and everytime you change the value of an selectItem a second one will also be changed to the value of the first one.
    For this example I simplified our listgrid and added a change-counter at the end of the ListGrid.

    With Smartclient 10.0 you can see every change in Country 1 has the effect, that the Counter is increasing and the SelectItem in Country 2 is also updated properly.
    Click image for larger version

Name:	Animation 25.gif
Views:	37
Size:	324.4 KB
ID:	233500

    With Smartclient 10.1 this doesn't work anymore. If you begin the editing mode, only the first change will result in a change of Country 2 and the Counter-column.
    Click image for larger version

Name:	Animation 26.gif
Views:	29
Size:	447.0 KB
ID:	233501

    The right behaviour is certainly the behaviour of Smartclient 10.0, because in 10.1 the fields are not updated properly.
    I have had a similar problem one year ago (about the 12 december, sadly I cannot link to the old post, since it seems to be deleted) upgrading from Smartclient 9.1 to 10.0. One year ago there was also a bug in ListGrid.data.dataChanged(); maybe you could add a testcase for this behaviour. It's quite frustrating to report similar errors upgrading from one to another and also at the next version-upgrade.

    Here is the code for reproduction:
    Code:
    var globalChangeCount = 0;
    
    isc.ListGrid.create({
        "ID" : "theListGrid",
        "width" : "100%",
        "height" : "100%",
        "hideUsingDisplayNone" : false,
        "leaveScrollbarGap" : true,
        "selectionType" : "single",
        "canEdit" : true,
        "editEvent" : "click",
        "autoSaveEdits" : false,
        "alternateRecordStyles" : true,
        "modalEditing" : true,
        "canReorderFields" : false,
        "timeFormatter" : "toShort24HourTime",
        "autoFitWidthApproach" : "both",
        "fixedRecordHeights" : false,
        "neverValidate" : true,
        "selectionProperty" : "isSelected",
        "canPickFields" : false,
        "clwGeneratedIndexName" : "generatedRecordIndex",
        "fields" :
        [{
                "name" : "dayDateColumn",
                "title" : "Date",
                "type" : "text",
                "align" : "right",
            }, {
                "name" : "country1Field",
                "title" : "Country 1",
                "canEdit" : true,
                "canSort" : false,
                "editorType" : "SelectItem",
                "imageURLPrefix" : "\/HRworks\/images\/flags\/",
                "imageURLSuffix" : ".png",
                "suppressValueIcon" : false,
                "showValueIconOnly" : false,
                "showHover" : true,
                "valueIcons" : {
                    1 : "ET",
                    2 : "GUE",
                    3 : "ETH",
                    4 : "AFG",
                    5 : "AL",
                    6 : "DZ",
                    7 : "AND",
                    8 : "AN",
                    9 : "ATG",
                    10 : "AR",
                    11 : "ARM",
                    12 : "AZ",
                    13 : "AUS"
                },
                "editorProperties" : {
                    "ID" : "country1Field_45Editor",
                    "changed" : function (p1, p2, p3) {
                        console.log([p1, p2, p3]);
                        globalChangeCount = globalChangeCount + 1;
                        var record = theListGrid.data.find("generatedRecordIndex", 2);
                        record.sumGridField_measure = "€";
                        record.sumGridField = globalChangeCount;
                        record.deductionGridField = 0;
                        record.deductionGridField_measure = "€";
                        record.country2Field = p3;
                        theListGrid.data.dataChanged();
                        theListGrid.markForRedraw();
                        theListGrid.saveAllEdits();
                    },
                    "suppressValueIcon" : false,
                    "textMatchStyle" : "substring"
                },
                "valueMap" : {
                    1 : "Ägypten",
                    2 : "Äquatorialguinea",
                    3 : "Äthiopien",
                    4 : "Afghanistan",
                    5 : "Albanien",
                    6 : "Algerien",
                    7 : "Andorra",
                    8 : "Angola",
                    9 : "Antigua und Barbuda",
                    10 : "Argentinien",
                    11 : "Armenien",
                    12 : "Aserbaidschan",
                    13 : "Australien"
                }
            }, {
                "name" : "country2Field",
                "title" : "Country 2",
                "canEdit" : true,
                "canSort" : false,
                "editorType" : "SelectItem",
                "imageURLPrefix" : "\/HRworks\/images\/flags\/",
                "imageURLSuffix" : ".png",
                "emptyCellValue" : "n\/a",
                "suppressValueIcon" : false,
                "showValueIconOnly" : false,
                "showHover" : true,
                "valueIcons" : {
                    1 : "ET",
                    2 : "GUE",
                    3 : "ETH",
                    4 : "AFG",
                    5 : "AL",
                    6 : "DZ",
                    7 : "AND",
                    8 : "AN",
                    9 : "ATG",
                    10 : "AR",
                    11 : "ARM",
                    12 : "AZ",
                    13 : "AUS"
                },
                "editorProperties" : {
                    "ID" : "country2Field_45Editor",
                    "changed" : function (p1, p2, p3) {
                        if (p3 == parseInt(p3)) {
                            var grid = p2.grid;
                            grid.getRecord(grid.getEditRow()).selected_country2Field = p3
                        };
                        globalChangeCount = globalChangeCount + 1;
                        var record = theListGrid.data.find("generatedRecordIndex", 2);
                        record.sumGridField_measure = "€";
                        record.sumGridField = globalChangeCount;
                        record.deductionGridField = 0;
                        record.deductionGridField_measure = "€";
                        record.country1Field = p3;
                        theListGrid.data.dataChanged();
                        theListGrid.markForRedraw();
                        theListGrid.saveAllEdits();
                    },
                    "suppressValueIcon" : false,
                    "textMatchStyle" : "substring"
                },
                "valueMap" : {
                    1 : "Ägypten",
                    2 : "Äquatorialguinea",
                    3 : "Äthiopien",
                    4 : "Afghanistan",
                    5 : "Albanien",
                    6 : "Algerien",
                    7 : "Andorra",
                    8 : "Angola",
                    9 : "Antigua und Barbuda",
                    10 : "Argentinien",
                    11 : "Armenien",
                    12 : "Aserbaidschan",
                    13 : "Australien",
                    14 : "n\/a"
                }
            }, {
                "name" : "sumGridField",
                "title" : "Counter",
                "align" : "right",
                "width" : 62,
            }
        ],
        "data" :
        [{
                "sumGridField_measure" : "€",
                "generatedRecordIndex" : "2",
                "country1Field" : 1,
                "country2Field" : 1,
                "sumGridField" : 0,
                "dayDateColumn" : "17.12.15",
            }
        ]
    });
     isc.Button.create({
        left:100,
        top:100,
        "action": function(){
            var theFinalString = "";
            for(var i =0; i< theListGrid.data.length; i++){
                var currentData = theListGrid.data[i].country2Field;
                theFinalString += currentData+", ";
                console.log(currentData);
            }
            isc.say("This is in: "+theFinalString);
        },
        "title": 'values currently in select two',
        width: 200,
    });
     isc.Button.create({
        left:100,
        top:120,
        "action": function(){
            isc.say("There were "+globalChangeCount+" changes");
        },
        "title": 'how many changes?',
        width: 200,
    });
    Best Regards

    #2
    We're checking it out. Thanks for the test case. And - yes - if this is a clear cut bug / regression as it seems to be from your description we'll be sure to beef up our automated testing to make sure this behavior doesn't regress again in the future...

    Comment


      #3
      Ok - we've got this one. Please try the next nightly build, dated Dec 18 or above

      Comment


        #4
        Thanks, it's fixed

        Comment

        Working...
        X