Пользовательский флажок Выбор категории - PullRequest
1 голос
/ 26 марта 2020

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

Вот мой код:

check_cells = function() {
  var values = [];
  if (document.getElementById("checkbox_pouch").checked == true) {
    values.push('pouch');
  }
  if (document.getElementById("checkbox_18650").checked == true) {
    values.push('18650');
  }
  if (document.getElementById("checkbox_21700").checked == true) {
    values.push('21700');
  }
  if (document.getElementById("checkbox_pouch").checked == false && document.getElementById("checkbox_18650").checked == false && document.getElementById("checkbox_21700").checked == false) {
    values.push('empty');
  }
  if (values.length > 0) {
    view.setRows(data.getFilteredRows([{
      column:2,
      test: function (value) {
        return (values.indexOf(value) > -1);
      }
      }]));
    }
  dashboard.draw(view, drawOptions);
  }
  else {
  view.setRows(data.getFilteredRows([{column:2}]));
  dashboard.draw(view);
  }
  }

var view = new google.visualization.DataView(data);

      var drawOptions = {
        showRowNumber: false,
        allowHtml: true,    
      };


      // Inititial Draw of the dashboard.
      dashboard.draw(view, drawOptions);

1 Ответ

1 голос
/ 26 марта 2020

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

в этом случае вы можете использовать функцию обратного вызова test вместо клавиши value.

здесь для сбора значений используется массив,
и обратный вызов test для фильтрации столбца ...

check_pouch = function() {
  var values = [];
  if (document.getElementById("checkbox_pouch").checked == true) {
    values.push('pouch');
  }
  if (document.getElementById("checkbox_18650").checked == true) {
    values.push('18650');
  }
  if (values.length > 0) {
    view.setRows(data.getFilteredRows([{
      column:2,
      test: function (value) {
        return (values.indexOf(value) > -1);
      }
    }]));
  }
  dashboard.draw(view);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...