Использование фильтра с несколькими условиями для столбца в ag-grid - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть таблица ag-grid, в которой у меня есть три столбца - Идентификатор запроса, Статус запроса и Дата отправки.Я использую текстовый фильтр в столбце «Идентификатор запроса» и фильтр диапазона дат в «Дата отправки».В статусе запроса у меня есть 4 статуса запроса - черновик, отправлено, отправлено, отправка не выполнена.В HTML я использую раскрывающийся список, в котором есть флажки для каждого из этих статусов. Я попытался создать фильтр, который позволит мне выбрать несколько условий для фильтра статуса запроса - например, я хочу видеть данные, которые имеют статус запроса.либо как черновик, либо как представленный.Вот мой код для этого фильтра:

change(event, text: string) {

  var index = this.ReqStatusFilter.indexOf(text);
  if(index == -1) {
    this.ReqStatusFilter.push(text);

  } else {
    this.ReqStatusFilter.splice(index, 1);
  }

  var finalArray = [];

  var k = 0;

  for(var i = 0; i < this.rowData.length; i++) {
    for(var j = 0; j < this.ReqStatusFilter.length; j++) {
      if(this.rowData[i].requeststatus == this.ReqStatusFilter[j]) {
        finalArray[k++] = this.rowData[i];
      }
    }
  }

 if(k != 0) {
  this.gridApi.setRowData(finalArray);
 } else {
   this.gridApi.setRowData(this.rowData)
 }

 this.gridApi.onFilterChanged();
}

Я использую массив ReqStatusFilter, чтобы отслеживать, какие статусы выбраны в настоящее время.change () вызывается каждый раз, когда нажимается флажок, а text - это значение флажка, который нажимается.Массив rowData содержит данные моей сетки.

Проблема, с которой я сталкиваюсь, заключается в том, что фильтр даты в дату отправки и этот фильтр идентификатора запроса работают независимо друг от друга.Если я выбираю диапазон дат, в котором доступны только сообщения со статусом запроса, отправленного и отправленного, а затем я нажимаю флажок Черновик в фильтре статуса запроса, также появляется сообщение с черновиком статуса.Фильтр отлично работает с текстовым фильтром по запросу.Скажем, если я ищу идентификатор запроса со статусом Черновик, а затем выбираю опции Отправлено и Отправлено для статуса запроса, то ничего не появится.По сути, фильтры должны действовать как AND между собой, но фильтр статуса запроса внутри себя должен работать как OR всех выбранных условий.Как я могу разобраться, чтобы фильтр даты и статуса запроса могли работать вместе?Публикация кода для фильтра Дата тоже:

submissionDateFilter() {
var dateFilterComponent = this.gridApi.getFilterInstance("submissiondate");
dateFilterComponent.setModel({
  type:"inRange",
  dateFrom: this.fromDate.year + '-' + this.fromDate.month + '-' + this.fromDate.day,
  dateTo: this.toDate.year + '-' + this.toDate.month + '-' + this.toDate.day
})
this.gridApi.onFilterChanged();

}

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

...