Иногда я не могу получить данные о совпадении после ввода в фильтр. Как отфильтровать данные в vaadin-grid с помощью data-провайдера?
Это для использования Polymer 3.0 и vaadin-grid. Я надеялся, что vaadin-grid может работать с провайдером данных, но он не соответствует данным.
static get template() {
return html`
<iron-ajax
id="xhrService"
url=""
loading="{{loading}}"
on-response="_serviceResponse"
last-response="{{logs}}"
on-error="_serviceError"
method=""
content-type="application/json"
handle-as="json"
></iron-ajax>
<vaadin-grid loading="{{loading}}">
<vaadin-grid-column width="10em" resizable>
<template class="header">
<vaadin-grid-sorter path="description">
<vaadin-grid-filter path="description" value="[[_description]]">
<input placeholder="Description" value="{{_description::input}}" focus-target>
</vaadin-grid-filter>
</vaadin-grid-sorter>
</template>
<template>
<div style="white-space: normal">[[item.description]]</div>
</template>
</vaadin-grid-column>
<vaadin-grid-sort-column path="audit_description" header="Audit" width="6em"></vaadin-grid-sort-column>
<vaadin-grid-column width="9em" resizable>
<template class="header">
<vaadin-grid-sorter path="action_description">
<vaadin-grid-filter path="action_description" value="[[_actionCode]]">
<input placeholder="Action" value="{{_actionCode::input}}" focus-target>
</vaadin-grid-filter>
</vaadin-grid-sorter>
</template>
<template>[[item.action_description]]</template>
</vaadin-grid-column>
<vaadin-grid>
`;}
static get properties() {
return {
dataProvider: Object,
size: Number
}
}
ready(){
super.ready();
this._logsChanged();
}
_logsChanged() {
var grid = this.shadowRoot.querySelector("vaadin-grid");
var token = this.userInfo.token;
grid.size = 5000;
grid.dataProvider = function(params, callback) {
const index = (params.page + 1) * params.pageSize;
var url = MSAppGlobals.apiPath + 'Logs?page=' + params.page + '&count=' + index;
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var response = JSON.parse(xhr.responseText);
callback(response.totalLogs);
localStorage.setItem('logsInfo', JSON.stringify(response.totalLogs));
};
params.filters.forEach(function(filter) {
url += '&filters[' + filter.path + ']=' + encodeURIComponent(filter.value);
});
params.sortOrders.forEach(function(sort) {
url += '&orders[]=' + sort.path + ' ' + sort.direction;
});
xhr.open('GET', url, true);
xhr.setRequestHeader('authorization', 'Bearer ' + token, true);
xhr.send();
}
Отображает данные. Я хочу отфильтровать данные для сопоставления данных через фильтр, но он не может сопоставить данные.