Пользовательское значение для экспорта CSV в DataTables (jQuery) - PullRequest
0 голосов
/ 05 октября 2018

Я использую пользовательскую функцию для отображения значка HTML в столбце DataTable вместо отображения обычного текста:

    {data: {newCost : "newCost", oldCost:"oldCost"},
            title: "Difference",
            render:  {"display":function(data) {

                    if (parseFloat(data.newCost) > parseFloat(data.oldCost)) {
                        return '<i class="fas fa-arrow-up icon-red" data-sort="1" style="margin-left: 4px"></i>'
                    }
                    if (parseFloat(data.newCost) === parseFloat(data.oldCost)) {
                        return '<i class="fas fa-equals" data-sort="0" style="margin-left: 4px"></i>'
                    } else {
                        return '<i class="fas fa-arrow-down icon-green" data-sort="-1" style="margin-left: 4px"></i>'
                    }
                }, "sort": function(data){
                    return data.newCost - data.oldCost;
                }, "_":function(data){
                    return data.newCost - data.oldCost;
                }
            }
        },

enter image description here

Как вывидите, я использую функцию render для отображения стрелки, учитывая разницу между двумя значениями oldCost и newCost.Но когда я экспортирую это с помощью плагина кнопок экспорта, столбец показывает пустое пространство.Я хотел бы показать значение разницы в обычном тексте.

Возможно ли это?

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете сохранить разницу как атрибут:

render: {"display":function(data) {
  var difference = data.newCost - data.oldCost;
  if (parseFloat(data.newCost) > parseFloat(data.oldCost)) {
      return '<i data-value="'+difference+'" class="fas fa-arrow-up icon-red" data-sort="1" style="margin-left: 4px"></i>'
  }
  ...

Взамен этого значения атрибута в параметрах экспорта:

{
  extend: 'csvHtml5',
  exportOptions: {
    format: {
      body: function(data, row, column, node) {
        if (column == 42) { //dont know the index
          return $(data).attr('data-value')
        }
      }
    }    
  }    
}

Чтобы уточнить: пробел появляется из-за текстового значения<i> элементов ''.

...