Табулятор читает неизвестный файл с форматом даты - PullRequest
0 голосов
/ 03 декабря 2018

Я использую библиотеку JS Tabulator для чтения неизвестных данных / файлов таблиц, поэтому с тех пор я использовал этот код для чтения любых неизвестных данных без проблем.

var table = new Tabulator("#table", {
 data:tableData,
  columns:Object.keys(tableData[0]).map(obj => {
    return {
      title: obj,
      field: obj,
      sorter: "string",
      align: "center",
    };
  }),
});

, и он работал отличнов большинстве случаев, но затем я попытался ввести таблицу с форматом даты (например, 2018-12-12), но выходные данные были в формате времени эпохи. В поле, где предполагается отобразить формат даты, он отобразил это 1544572800000 iнужен ли он для восприятия человеком в формате

есть ли способ добавить условие в код для изменения формата столбца в случае, если заголовок столбца был (Дата рождения), например?

1 Ответ

0 голосов
/ 04 декабря 2018

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

Мутатор

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

В этом примере давайте предположим, что это поле date , которое вы используете, мы создадим пользовательский мутатор, а затем в определении столбца дляэтому столбцу назначьте мутатор:

//define custom mutator
var dateMutator = function(value, data, type, params, component){
    //value - original value of the cell
    //data - the data for the row
    //type - the type of mutation occurring  (data|edit)
    //params - the mutatorParams object from the column definition
    //component - when the "type" argument is "edit", this contains the cell component for the edited cell, otherwise it is the column component for the column

    //convert date to JS date object
    var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
    d.setUTCSeconds(value);

    //format date to YYYY-MM-DD
    var month = '' + (d.getMonth() + 1);
    var day = '' + d.getDate();
    var year = d.getFullYear();

    if (month.length < 2) month = '0' + month;
    if (day.length < 2) day = '0' + day;

    return [year, month, day].join('-');
}

//column definition
{title:"Date", field:"date", mutatorData:dateMutator}

Более подробную информацию о мутаторах можно найти в Документация мутатора

Форматер

Если вы хотите сохранитьлежащие в основе данные, как есть, но просто отображайте их по-другому для пользователя, тогда вы хотите использовать форматер .

Код для этого очень похож на мутаторопять будемопределите пользовательскую функцию и затем привяжите ее к столбцу в определении столбца

//define custom formatter
var dateFormatter = function(cell, formatterParams, onRendered)
    //cell - the cell component
    //formatterParams - parameters set for the column
    //onRendered - function to call when the formatter has been rendered

    //convert date to JS date object
    var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
    d.setUTCSeconds(cell.getValue());

    //format date to YYYY-MM-DD
    var month = '' + (d.getMonth() + 1);
    var day = '' + d.getDate();
    var year = d.getFullYear();

    if (month.length < 2) month = '0' + month;
    if (day.length < 2) day = '0' + day;

    return [year, month, day].join('-');
}

//column definition
{title:"Date", field:"date", formatter:dateFormatter}

Более подробную информацию о средствах форматирования можно найти в Документация средства форматирования

...