Обновление ячеек таблицы запаздывает при использовании функции перетаскивания в HandsOnTable (при использовании ее с AngularJS) - PullRequest
0 голосов
/ 12 февраля 2020

О программе: в определенном мной столе handsOnTable есть столбцы, которые обновляются на основе любых изменений в других столбцах. Если это обычное изменение, то столбцы, которые должны быть изменены, обновляются мгновенно, но когда я использую функцию перетаскивания для обновления одного из столбцов, столбцы, которые должны быть изменены из-за этого, требуют времени для обновления ( отставание).

фрагмент кода

$scope.handsOnTableSettings = {
        preventOverflow: 'horizontal',
        stretchH: 'all',
        minSpareRows: 0,
        dataSchema : {'x':'0', 'y':'0', 'z':'0.00', 'w':'000.00'},
        colHeaders: true,
        rowHeaders: false,
        copyPaste: true,
        afterInit: function () {
          handsOnInstance = this;
      },
        cells: function (row, col) {
          var cellProperties = {};
          var data = this.instance.getData();
          var keys = Object.keys($scope.stats)

          if (data[row] && (col == 11 || col == 10 || col == 9 || col == 7 || col == 6 || col == 5 || col == 4) && data[row][11] && $scope.stats && $scope.stats[keys[row]] && $scope.stats[keys[row]][5] && !$scope.current) 
            cellProperties.readOnly = true;
            return cellProperties;
          }
          return cellProperties;
        },
        afterChange: function (src, changes) {
          if(src!=null){
          src.forEach(function(src){
            if (changes !== 'loadData') {
              if (src[1] == 'x') {
                if(src[3] === ""){
                  handsOnInstance.setDataAtCell(src[0], 9, 0)
                }
                  handsOnInstance.setDataAtCell(src[0], 10, src[3] * handsOnInstance.getDataAtCell(src[0], 4) / 1000);
              }
              if (src[1] == 'y') {
                  handsOnInstance.setDataAtCell(src[0], 10, src[3] * handsOnInstance.getDataAtCell(src[0], 9) / 1000);
              }

              if (src[1] == 'z') {
                $scope.total = _.sum(handsOnInstance.getDataAtCol(10)).toFixed(2);
                  handsOnInstance.setDataAtCell(src[0], 9, src[3] * 1000 / handsOnInstance.getDataAtCell(src[0], 4));
                }

              }
            }
          })}
        }

версия handsOnTable

 "@bower_components/handsontable": "handsontable/handsontable#~0.31.2",
...