Я использую Tabulator 3.5 и у меня есть мутатор:
Tabulator.extendExtension("mutator", "mutators", {
percentageMutator:function(value, data, type, mutatorParams){
console.log(mutatorParams); // sanity check - we'll come back to this!
console.log(data); // sanity check - we'll come back to this!
// code omitted here to perform calculations
return percentage
}
});
Мой конструктор, лишенный всех тонкостей, выглядит так, как показано ниже. Обратите внимание, что столбцы вложены дважды. Также обратите внимание, что я использую язык шаблонов Django для динамического построения таблицы.
$("#markbook-table").tabulator({
columns: [
{title: "First Name", field: "firstname", validator: ["maxLength:50", "string"]},
{title: "Last Name", field: "lastname", validator: ["maxLength:50", "string"]},
{ title:"Some grouping",
columns:[
{% for assessment in assessments %}
{
title: "{{ assessment.name }} (out of {{ assessment.max_mark }})",
columns:[
{title: "Result", field: "{{ assessment.name }}", editor: "input",},
{title: "Mark out of", field: "{{ assessment.name }}_outof"},
{title: "weighting", field: "{{ assessment.name }}_weighting"},
{title: "%", field: "{{ assessment.name }}_percentage", mutator: "percentageMutator", mutatorParams:{assessmentName: "{{ assessment.name }}"}},
},
]
},
{% endfor %}
],
},
{% endfor %}
],
data: tableData,
cellEdited: function(cell) {
row.update({'Statistics_percentage': false}); // this is the line that fails
$.ajax({
// Do ajax magic here to save to database
});
},
})
Суть в том, что мой row.update () не пересчитывает% после изменения в поле результата. Имя поля «Statistics_percentage» было выбрано потому, что оно соответствует моим текущим данным, но я могу легко обобщить его позже.
console.log (mutatorParams) в функции процентаMutator одинаков при первоначальном построении таблицы и после редактирования. Однако console.log (data) показывает, что данные строки, переданные после редактирования в функцию процентаMutator, содержат только соответствующую ячейку и не содержат никаких данных для других ячеек в строке - следовательно, вычисления не выполняются после редактирования.
Надеюсь, у вас есть представление о том, как заставить принудительно отправлять все данные строк при редактировании. Большое спасибо за то, что даже прочитали это далеко. Любая помощь будет оценена.