Использование массивов в качестве столбцов с handsontable - PullRequest
0 голосов
/ 07 мая 2018

Я использую handsontable для отображения данных для приложения. Я хочу использовать массивы как столбцы , которые я не могу понять с документацией. Я полагаю, что лучшим подходом было бы использовать массив моих массивов, но у меня возникли проблемы с их объединением.

Вот код на данный момент:

var data = [
  ["Sale Month", "Usage", "Address", "Tax Assessment", "Loan Amount", "Initial Equity", "Lien Start Date", "Lien Term", "Loan Type", "Square Feet", "Year Build", "Acres"
      , "Beds", "Baths", "Lotsort"]
];

var container = document.getElementById('listview');
var hot = new Handsontable(container, {
  data: data,
  rowHeaders: true,
  colHeaders: true
});

У меня есть набор массивов для каждого заголовка столбца. Например, массив saleMonth выглядит как ['01/18, 03/16, 01/12'] и так далее. Я хочу использовать индексы каждого массива для записей в соответствующем столбце.

Вот токовый выход:

Скриншот

Пожалуйста, дайте мне знать, если я могу быть более ясным.

Спасибо!

Редактировать: добавлено JSFiddle

1 Ответ

0 голосов
/ 07 мая 2018

Я немного изменил вашу структуру данных: изменил data на список заголовков (columns) и переместил ваши массивы значений в карту (values), где ключом является имя столбца и значение является исходным массивом

Таким образом, вы можете разработать ваши данные для создания массива rows в подходящем формате

var saleMonth = ['01/18', '03/20']
var usageArray = ['Residential', 'Commercial']

var values = {
  'Sale Month': saleMonth,
  'Usage': usageArray
}

var columns = 
  ["Sale Month", "Usage", "Address", "Tax Assessment", "Loan Amount", "Initial Equity", "Lien Start Date", "Lien Term", "Loan Type", "Square Feet", "Year Build", "Acres"      , "Beds", "Baths", "Lotsort"]

;

var rows=[];
var numOfRow
for ( numOfRow = 0; numOfRow < saleMonth.length; numOfRow++ ) {
    rows.push(columns.map((e) => {
    if (e in values) {return values[e][numOfRow]}
    return e;
    }));
}

var container = document.getElementById('listview');
var hot = new Handsontable(container, {
  data: rows,
  rowHeaders: true,
  colHeaders: true
});

Вы также можете установить в Hansontable объект конфигурации colHeaders: columns, чтобы получать заголовки столбцов вместо букв

...