changeFormula()

in sample/frontend/agr-lib/src/lib/grid/agr-engine.ts [651:686]


  changeFormula(column: Column, formula: string) {
    column.columnDef.formula = formula;
    column.columnDef.formulaResult = 0;
    let columnValue: number;
    let index = 0;
    for (const row of this.rows) {
      if (!this.processRowByLevel(row, column.columnDef)) {
        continue;
      }
      columnValue = ColumnHelper.getColumnValue(row.data, column.columnDef)
      if (this.isEmptyValue(columnValue)) {
        continue;
      }
      if (index === 0) {
        column.columnDef.formulaResult = +columnValue;
      }
      switch (formula) {
        case ColumnFormulaTypes.sum:
        case ColumnFormulaTypes.average:
          if (index !== 0) {
            column.columnDef.formulaResult = this.precisionSum(column.columnDef.formulaResult, columnValue);
          }
          break;
        case ColumnFormulaTypes.max:
          column.columnDef.formulaResult = Math.max(column.columnDef.formulaResult, columnValue);
          break;
        case ColumnFormulaTypes.min:
          column.columnDef.formulaResult = Math.min(column.columnDef.formulaResult, columnValue);
          break;
      }
      index++;
    }
    if (formula === ColumnFormulaTypes.average) {
      column.columnDef.formulaResult /= this.rows.length;
    }
  }