Форматирование значений нижнего колонтитула в ui-сетке

Как мне форматировать агрегированное значение для столбца в ui-grid?

С моими номерами я получаю что-то ужасное, как

total: 6370.046074130321

когда я хотел бы

total: $6370.05

Я пробовал оба:

footerCellTemplate: '<div class="ui-grid-cell-contents" >{{COL_FIELD | currency}}</div>',

и

footerCellTemplate: '<div class="ui-grid-cell-contents" >{{grid.getCellValue(row, col) | currency}}</div>',

но никто из них не работает.

Ответ 1

Шаблоны, которые вы пробовали, будут работать для нормальных значений ячеек, но вы пытаетесь заставить шаблон работать над совокупным значением.

Чтобы получить агрегированное значение для столбца внутри шаблона, вы можете использовать {{col.getAggregationValue()}} и добавить параметры формата.

Поскольку вы хотите иметь два десятичных знака, это будет больше похоже на {{col.getAggregationValue() | number:2 }}

Также помните, что шаблон будет отличаться, если в сетке включены фильтры столбцов.

Ответ 2

если вам понадобится после десятичной точки, чтобы показать два значения, затем используйте пользовательские функции шаблона в параметрах сетки

       {
            field: 'ORGINAL_FUNC_AMOUNT',
            displayName: 'CR A/C',
            aggregationType: uiGridConstants.aggregationTypes.sum,
            footerCellTemplate: '<div class="ui-grid-cell-contents" >Total: {{col.getAggregationValue() | number:2 }}</div>'
        }

Ответ 3

Вы можете использовать фильтр number, чтобы выбрать количество десятичных цифр, которое вам нужно.

{{'$' + valueToFormat | number:2}}

В противном случае вы можете использовать настраиваемый фильтр для фильтрации текста/значения самостоятельно.

В вашем модуле вы добавляете:

.filter('customFilterFunction', function() {
return function(input) {
    var out = "";
    out = '$' + parseFloat(input).toFixed(2);
    return out;
  };
})

В своем HTML вы добавляете:

{{valueToFormat | customFilterFunction}}

Ответ 4

$templateCache.put('ui-grid/uiGridFooterCell',
"<div class=\"ui-grid-cell-contents\" col-index=\"renderIndex\"><div>{{ col.getAggregationText() + ( col.getAggregationValue() CUSTOM_FILTERS ) }}</div></div>"  );

CUSTOM_FILTERS = свойство footerCellFilter grid.colDef [0].footerCellFilter = 'число: 2'