Порядок обработки gridOptions.columnDefs - PullRequest
0 голосов
/ 09 января 2019

Похоже, не обрабатывать вещи в определенном порядке Как видите ... я перебираю строки, затем столбцы .. затем устанавливаю columnDefs. Я не писал это, просто взял это на себя и пытался выяснить, что происходит. Проблема: он перебирает все строки и все столбцы, а затем обрабатывает columnDefs. Что выглядит правильно, так как обрабатывает их только один раз. Я могу видеть это, наблюдая за console.logs. В gridOptions я мог установить только console.log в секции cellClass, так что я предполагаю, что когда его обработают? После того, как он просматривает все строки / столбцы, он выглядит так, как будто он обрабатывает columnDef для каждой строки (я вижу это с console.logs в cellClass). Когда он попадает в columnDefs, он делает это не в том же порядке. В моем случае я вижу, что он проходит через id, first, second и третьего - но он не регистрирует обработку четвертого, jump, здесь или сейчас. Он назначает цвет для последней строки и каким-то образом задает этот цвет для всего столбца четвертого (хотя я никогда не вижу его в журнале). В конечном итоге все отображается на экране. что странно Конечно, я могу видеть это только через cellClass console.log - так что, может быть, это не обрабатывается в правильном порядке?

 var localColors = [
    "red",
    "green",
    "orange",
    "yellow",
    "blue",
    "lightblue",
    "darkred"
    ]

let colNames = []
data.forEach((row) => {
   var colorIndex = Math.floor(Math.random() * localColors.length);
   console.log("inside row");
   let rowVal = [];
for(let colName in row) {
 console.log("inside col:"+colName);
 if ((!colNames.includes(colName)) && (colName !== "_links")) {

    $scope.gridOptions.columnDefs.push({
        name: colName, cellClass:   function(grid,row,col,rowRenderIndex,colRenderIndex) {
           let val = grid.getCellValue(row,col);
           console.log("inside gridOptions-colName:"+colName);
           if (colName=='first') {
              console.log("inside first:");
              if (!rowVal.includes(val)) {
                 colorIndex = Math.floor(Math.random() * localColors.length);
                 rowVal = [];
              }
              rowVal.push(val);
              return localColors[colorIndex];
           }
           if (colName=='second') {
              console.log("inside second:");
              rowVal.push(val);
              return localColors[colorIndex];
           }
           if (colName=='third') {
              console.log("inside third:");
              rowVal.push(val);
              return localColors[colorIndex];
           }
           if (colName=='fourth') {
              console.log("inside fourth:");
              rowVal.push(val);
              return localColors[colorIndex];
           }

         }

         colNames.push(colName);
 }

}
//print out colNames set to columnDefs
let myCols = []
myCols = $scope.gridOptions.columnDefs;
console.log("COLNAMES in gridOptions:"+JSON.stringify(myCols));
});

Вот мой фактический вывод: Actual Output

Вот мой ожидаемый результат: Desired Output

Если я уберу 4-ую колонку из цвета, вещи будут работать: Remove 4th from color

Однако, если я добавлю 5-й столбец к цвету, 4-й и 5-й никогда не будут загружаться как другие: add 5th column

Есть мысли? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...