Неправильная группировка в Ext js Групповая сортировка с обновлением модели в реальном времени - PullRequest
1 голос
/ 12 февраля 2020

Я использую Ext js 6.7 Современный набор инструментов для написания приложения.

Я группирую в [group-by] и сортирую по [group-Update-Time] в ожидаемом случае будет выглядеть следующим образом , (каждый раз, когда я нажимаю [group-Update-Time] на панели сетки, у него не возникает проблем при сортировке)

///////////////////
{
    xtype: 'Ext.grid.Grid',
    multiColumnSort: false,
    grouped: true,
    store: "itemStore"
}
////////////////////
{
    xtype: "Ext.data.Store",
    groupField: "groupBy",
}
////////////////////
store.getGrouper().setSorterFn((item1, item2) => {
    if (item1.groupBy == item2.groupBy) {
        return 0;  // same group
    }else{
        if (item1.groupUpdateTime > item2.groupUpdateTime) {
            return 1;
        } else if (item1.groupUpdateTime == item2.groupUpdateTime) {
            if (item1.groupBy > item2.groupBy) {
                return 1;
            } else {
                return -1;
            }
        } else {
            return -1;
        }
    }
})
 [name]       [group-By]      [group-Update-Time]
----group 1----------------------------------------       
 aaaaa1           1               12:55:22
 bbbbb1           1               12:55:22
 ccccc1           1               12:55:22

----group 2----------------------------------------  
 aaaaa2           2               11:44:21
 bbbbb2           2               11:44:21
 ccccc2           2               11:44:21

Когда придет новое обновление, мой код обновит все элементы, которые имеет тот же [group-By]

// a listener function
onMessage(data){
   for(item in groupBy[data.id]){
      item.set("value", data.value);
      item.set("groupUpdateTime", data.updateTime);
   }
}

Однако сетка будет автоматически сортироваться, и иногда будет выглядеть как показано ниже (случайно) некоторые элементы go в неправильном месте группы, если я не нажму [group- Время обновления] на панели сетки снова

 [name]       [group-By]      [group-Update-Time]
----group 1----------------------------------------       
 aaaaa1           1               12:55:22
 bbbbb1           1               12:55:22
 ccccc1           1               12:55:22
 aaaaa2           2               11:44:21
 bbbbb2           2               11:44:21

----group 2----------------------------------------  
 ccccc2           2               11:44:21
...