Показать сообщение отдельно
  #1 (permalink)  
Старый 22.01.2016, 15:38
Интересующийся
Отправить личное сообщение для greenrow Посмотреть профиль Найти все сообщения от greenrow
 
Регистрация: 22.01.2016
Сообщений: 12

Правильная обарботка результата множественной фильтрации
Добрый день!

на сайте есть возможность фильтрации по различным критериям:
Дата:день,месяц,неделя,выбо р из календаря;
Локация;
Категория;
и т.д

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

1.При клике по любомы элементу из филтра происходит триггер на функцию
Например выбор даты:

$('.proj_sort_menu .proj_date_sort').click(function(){
    var text_rez;
    var cur_data_attr=$(this).attr('data-date');/*находим значение аттрибута*/
    var req_rez;
    switch(cur_data_attr){
         case "thisday":
            text_rez='сегодня'
            req_rez='day';
  
                break;

/*--подобный код---*/
    }
 
    $('.project_time').fadeIn().text(text_rez);/*записываем в блок  результат даты*/

    $('.project_sort_info_click').trigger('click'); //передаем на дальнейшую обработку специальной функции

    
})


А вот эта функция для обработки всех возможных вариантов из фильтрации (например обработки даты)

$('.project_sort_info_click').click(function(){

    var req_rez={};
    var error;

    var project_date=$('.project_time').text();/*здесь получаем значение из фильтра

    /*здесь выводим результата если выбрана только дата*/
    else if(project_date !='' && collection == '' && project_date ==''){
        
        switch(data_type_rez){


              case  "calendar_date":
                 error='нет проектов за выбранную дату';
                 req_rez={date:calendar};
                 break;
             case  "day":
                 error='нет активных проектов за текущий день';
                 req_rez={get_thisdate:'ok'};
                 break;

             case "week":
                 error='нет активных проектов за текущую неделю';
                 req_rez={get_thisweek:'ok'};;
                 break;

             case "month":
                 error='нет активных проектов за текущий месяц';
                 req_rez={get_thismonth:'ok'};
                 break;
        }
       /****тут далее подобный код с различными вариантами например*//

        //collection//
        
    else if(location =='' && collection != '' && project_date ==''){
     
      req_rez={'cat_name':collection};
      error='Нет активных проектов выбранной коолекции'
    }

/*** и так все возможные комбинации*//


//*В самом конце ,после всех проверок отправляем на сервер верный результат и получаем ответ от сервера или ошибку*/
        $.getJSON(get_all_project_url,req_rez,function(data){
                getprog_json(data,error);
     }

[B]Вопрос:[/B]Возможно ли как то оптимизировать обработку множественных значениях фильтрации,может кто то использует при подобных задачах паттерны или другой алгоритм.Мой код рабочий,но с учетом того что еще и на сервер надо обрабатывает все возможные запросы то код получается оочень большим.
Буду благодарен за совет ,если кто использует более эффективные методы в подобных задачах=)
Ответить с цитированием