YADCF Datatables Накопительный фильтр - PullRequest
0 голосов
/ 30 мая 2018

Я использую серверный скрипт Datatables для заполнения 9 фильтров YADCF, и он работает хорошо.Что мне нужно сделать, так это использовать cumulative_filtering, но я не могу найти примеров того, как я мог бы использовать накопительную фильтрацию на стороне сервера и как может выглядеть «накопительная логика».Очевидно, что мне нужно, чтобы фильтры обновлялись / перезагружались при выборе значения из одного из них.Часть моего текущего серверного скрипта выглядит следующим образом:

$ data ['yadcf_data_6'] = $ db -> selectDistinct ("table_name", ["type as value, type as label"], null, "type") -> fetchAll ();

Мой JS выглядит следующим образом:

// YADCF filters Modal  
    $(document).ready(function () {
'use strict';

var oTable;
oTable = $('#table').DataTable();

yadcf.init(oTable,
    [{
                column_number: 6,
                filter_container_id: 'searchtype',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Type'
            },
            {
                column_number: 7,
                filter_container_id: 'searchcategory',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                sort_as: "alpha",   
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Category'
            },
            {
                column_number: 8,
                filter_container_id: 'searchmaterial',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Material'
            },
            {
                column_number: 9,
                filter_container_id: 'searchgrade',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Grade'
            },
            {
                column_number: 10,
                filter_container_id: 'searchshape',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Shape'
            },
            {
                column_number: 11,
                filter_container_id: 'searchcut',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Cut'
            },
            {
                column_number: 12,
                filter_container_id: 'searchsize',
                filter_type: "text",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                filter_match_mode: 'exact',
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Size'
            },
            {
                column_number: 29,
                filter_container_id: 'searchpairs',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Pairs'
            },
            {
                column_number: 31,
                filter_container_id: 'searchset',
                filter_type: "select",
                filter_reset_button_text: "Clear",
                select_type: "chosen",
                select_type_options: {
                'width': '50em',
                },
                filter_default_label: 'Sets'
            }
        ],
    {
        cumulative_filtering: true
    }
);     

});

Есть ли пример кода, на который любой может указать (яне могу найти ни одного, я нашел и использовал код на стороне клиента здесь ) или, если нет, кто-нибудь может дать мне несколько советов, с чего начать?

1 Ответ

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

Логика следующая

1) Каждый раз, когда вы используете фильтр, на сервер отправляется запрос

2) На основании этого запроса вы должны запросить вашу БД

3) Затем на основе результата запроса вы должны получить несколько строк данных

4) На основе этих строк вы должны заполнить текущие элементы фильтров из этого результата запроса (в отличие от не cumulative_filtering сценарий, в котором вы заполняете элементы фильтра из всего набора данных, присутствующего в БД)

...