TransWikia.com

Mutator in tabulator not working on same edited functions

Stack Overflow Asked on February 18, 2021

I have a scenario where I am defining the mutators below and when I edit the cell it does not work where common mutators are used? I guess this is a bug or is there any other way to do it?

 var diffMutator_FEcontacted = function (value, data, type, params, component) {
    var start = moment(data.incident_start, 'DD/MM/YYYY HH:mm')                   
    var end = moment(data.First_expert_contacted_by_SE, 'DD/MM/YYYY HH:mm')       //common feild
    var new_value = end.diff(start, 'minutes');
    if (type == "edit") {
      console.log('edit');
      component.getRow().getCell("time_to_contact_first_exp_calc").setValue(new_value);
      return value;
    } else {
      return new_value
    }
  }

  var diffMutator_REcontacted = function (value, data, type, params, component) {
    var start = moment(data.incident_start, 'DD/MM/YYYY HH:mm')
    var end = moment(data.Right_expert_found_at, 'DD/MM/YYYY HH:mm') //common feild
    var new_value = end.diff(start, 'minutes');
    if (type == "edit") {
      console.log('edit');
      component.getRow().getCell("Time_to_find_right_exp_calc").setValue(new_value);
      return value;
    } else {
      return new_value
    }
  }

  var diffMutator_FEREdiff = function (value, data, type, params, component) {
    var start = moment(data.First_expert_contacted_by_SE, 'DD/MM/YYYY HH:mm')    //common feild in another fucntion
    var end = moment(data.Right_expert_found_at, 'DD/MM/YYYY HH:mm') //common feild in another function
    var new_value = end.diff(start, 'minutes');
    if (type == "edit") {
      console.log('edit');
      component.getRow().getCell("time_diff_FE_RE").setValue(new_value);
      return value;
    } else {
      return new_value
    }
  }

Rather, I would explain this as mutator is not working on common fields.
Here is the fiddle explained with this above use case:

One Answer

This is happening because the mutator functions are called only when their field is updated, each individual function is not aware if it depends on any other fields in the table.

I would suggest that in the cellEdited callback for the edited column, you include a row.update to trigger the updates on dependent columns.

so for example the "TimeDiff" column is depended on the "TimeStart" column, so in the definition for the TimeStart column you should include the following:

{title: "Start Time", field: "TimeStart", cellEdited:function(cell){
    cell.getRow().update({TimeDiff:true});
}},

This will then trigger the mutation of the dependent TimeDiff mutator when TimeStart is edited

Answered by Oli Folkerd on February 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP