Skip to content

ionson100/CriterionSequel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CriterionSequel

Продолжение Criterion, скорее финальная часть, если первый был написан ради шутки,
то в этом проекте уже заложена реализация для вставки в промышленный код.
Исходим из задач:
Возможность комбинировать фильтры поиска по шаблону как из HTML разметки, так и в RAZOR
Возможность наследование разметки.
Минимизация серверных скриптов, минимизация настроек в атрибутах и настроек при запуске.
Легкое создание своих собственных фильтров.
Получение финального выражения для поиска в перечислениях, так и для поиска через
sql через орм, которые поддерживают Linq to Sql.
Визуализация на откуп дизайнеру.
Все поля, которые участвуют в фильтре, помечаются атрибутами.
Все атрибуты имеют наследника CriterionBaseAttribute, поддерживается локализация,
стоит остановиться на свойстве id, в клиента уходит в нижнем регистре, во избежание
коллизий, свойство можно инициализировать своей строкой, по умолчанию название
свойства типа.
Шаблон HTML, все включения маркируется в виде строки #имя свойства или ID если оно переопределено#
если вы работаете с шаблонами html то вы должны указать путь к шаблону
в атрибуте типа CriterionTemplateAttribute
если вы работаете с указанием шаблона в запросе – можно не указыватьразметку можно вызыавть тремя способами.
1 @(Html.CriterionHtmlTemplate<T>())
2 @(Html.CriterionHtmlTemplate<T>("~/TemplateCriterion/Body2.html"))
и вызов частичных фильтров ( шаблоны не участвуют)
3 @(Html.Criterion<Body>(body => body.MadeIn))
Заполнение опций форм, вы должны реализовать своего поставщика этих опций,
реализовать тип IListItem
если свойство поддерживает null и если надо учитывать эту позицию в поиске
– в строке пишем “null”, если поставить пустую строку, позиция выбора с пустой строкой
не участвует в фильтре поиска.
В слйдере участвуют два значения мин и мах, вы должны так же организовать
поставщика для них, и передать тип через атрибут, все поставщики должны иметь конструктор по умолчании.
Получение результирующего выражения для поиска на сервере:
для ajax или Get запросов
CriterionActivator.GetExpression<Т>(FormCollection collection);
для обычных Post через контроллер
CriterionActivator.GetExpression<Т>();
Вшитый показ справки, справка отображается, если вы укажете поставщика
для справки, тип реализующий ITypeHelp,
Указывать тип нужно при старте приложения
CriterionActivator.SetTypeHelp(typeof(Helper));
Иконка вшита по умолчанию, вы можете назначить свою иконку
при старте приложения.
CriterionActivator.SetUrlImageHelp(string url)
что вынесено наружу:
инициализация календаря для атрибута выбора по диапазону дат
$(".betweendate").datepicker({ dateFormat: "yy-mm-dd" });
инициализация окна справки
$("#dialog").dialog({ autoOpen: false, modal: true, title: "Справка:", height: 400, width: 500 });
все это есть в примере.
Из сторонних библиотек используется:
Yahoo.Yui.Compressor – для сжатия скрипта при шаблонном показе
Dynamic – для создания Expressions

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages