Добрый день!
на сайте есть возможность фильтрации по различным критериям:
Дата:день,месяц,неделя,выбо р из календаря;
Локация;
Категория;
и т.д
Я реализовал обработку множественных значений следующим образом используя единую точку обработки
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]Возможно ли как то оптимизировать обработку множественных значениях фильтрации,может кто то использует при подобных задачах паттерны или другой алгоритм.Мой код рабочий,но с учетом того что еще и на сервер надо обрабатывает все возможные запросы то код получается оочень большим.
Буду благодарен за совет ,если кто использует более эффективные методы в подобных задачах=)