Как найти исходный индекс строки таблицы в визуализации Google, если у меня есть представление отфильтрованных строк

Я использую визуализацию Google. У меня есть таблица данных, которую я отфильтровал с помощью getFilteredRows()

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

Это возможно?

Я видел пару сообщений, в которых используются варианты

table.getDataTable().getTableRowIndex(currentRow)

но оба эти метода больше не доступны для использования?

Кто-нибудь знает решение? Благодарность


person MrPea    schedule 20.10.2017    source источник


Ответы (1)


getTableRowIndex – это метод DataView.

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

chartWrapper.getDataTable().getTableRowIndex(currentRow)

однако, если свойство dataTable является фактической таблицей данных,
этот метод будет недоступен (поскольку это метод просмотра данных)


если вы используете таблицу данных и свойство view оболочки диаграммы для установки rows,
найдите фактическую строку, используя...

chartWrapper.getView().rows[currentRow]

см. следующий рабочий фрагмент...

google.charts.load('current', {
  packages: ['controls']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses', 'Profit'],
    ['2012', 900, 700, 200],
    ['2013', 890, 600, 290],
    ['2014', 1000, 400, 200],
    ['2015', 1170, 460, 250],
    ['2016', 660, 1120, 300],
    ['2017', 1030, 540, 350]
  ]);

  var chartTable = new google.visualization.ChartWrapper({
    chartType: 'Table',
    containerId: 'chart_div',
    dataTable: data,
    view: {
      rows: data.getFilteredRows([{
        column: 1,
        minValue: 1000
      }])
    }
  });

  var testDiv = document.getElementById('test_div');
  google.visualization.events.addOneTimeListener(chartTable, 'ready', function () {
    google.visualization.events.addListener(chartTable.getChart(), 'select', function () {
      testDiv.innerHTML = '';
      var selection = chartTable.getChart().getSelection();
      for (var i = 0; i < selection.length; i++) {
        var selectedRow = selection[i].row;
        var dataTableRow = chartTable.getView().rows[selectedRow];
        var values = '';
        for (var col = 0; col < data.getNumberOfColumns(); col++) {
          if (values !== '') {
            values += ' -- ';
          }
          values += data.getValue(dataTableRow, col);
        }
        values += '<br/>';
        testDiv.insertAdjacentHTML('beforeEnd', values);
      }
    });
  });

  chartTable.draw();
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
<div id="test_div"></div>

person WhiteHat    schedule 20.10.2017