In-Portal Developers Guide

This is a wiki-based Developers Guide for In-Portal Open Source CMS. The purpose of this guide is to provide advanced users, web developers and programmers with documentation on how to expand, customize and improve the functionality and the code the In-Portal software. Please consider contributing to our documentation writing effort.

K4:Использование фильтров в списках

From In-Portal Developers Guide

Jump to: navigation, search
Работа со списками Работа со списками
Статьи в этой категории

Данная статья описывает набор доступных типов фильтров в системе для фильтрации данных в списках. В абсолютном большинстве случаев их использование сводится к прописыванию типа фильтра, в конфигурационном файле префикса, в параметре filter_block в ключе Grids индивидуально для каждого поля. Исключением является фильтр grid_picker_filter, который применяется совместно с блоком inp_edit_picker и классом EditPickerHelper.

Описание фильтров

Изображение Название блока Описание
Отсутствующий фильтр
Отсутствующий фильтр
grid_empty_filter Данный фильтр используется для тех полей, фильтрация данных в которых не предусмотрена. Например, когда содержание поля формируется в шаблоне, в процессе распечатки списка.
Фильтр списка типа LIKE
Фильтр списка типа LIKE
grid_like_filter

Использование: Поиск в текстовых полях.
Возможные данные: Произвольный текст с содержанием специальных символов.
Что фильтрует: Позволяет найти записи, которые содержат либо любое из слов, либо всю фразу целиком.
Формат: Запрос может быть составлен в следующих вариантах:

  • Строка, заключённая в двойные кавычки (пример: "Вася пупкин") - ищет всю подстроку целиком.
  • Строка, не заключённая в двойные кавычки (пример: Вася пупкин) - ищет любое из слов, заданных в строке.
  • Строка в любом из выше перечисленном вариантах с содержанием специальных символов, обозначающих: ? - любой один символ, % - любое количество любых символов.
  • Символ "+" перед словом или словосочетанием, заключённым в двойные кавычки, указывает на обязательное присутствие данного слова или словосочетания в результатах.
  • Символ "-" перед словом или словосочетанием, заключённым в двойные кавычки, указывает на обязательное отсутствие данного слова или словосочетания в результатах.

Форматтер: Отсутствует.
Ограничения: Не возможно задать поиск по точному совпадению, т.к. ищет заданную комбинацию в любой части строки.

Фильтр списка типа LIKE с подсказкой
Фильтр списка типа LIKE с подсказкой
grid_like_combo_filter

Использование: Поиск в текстовых полях c предложением вариантов из существующих значений при наборе критерия поиска.
Возможные данные: Произвольный текст с содержанием специальных символов.
Что фильтрует: Позволяет найти записи, которые содержат либо любое из слов, либо всю фразу целиком.
Формат: Запрос может быть составлен в следующих вариантах:

  • Строка, заключённая в двойные кавычки (пример: "Вася пупкин") - ищет всю подстроку целиком
  • Строка, не заключённая в двойные кавычки (пример: Вася пупкин) - ищет любое из слов, заданных в строке
  • Строка в любом из выше перечисленном вариантах с содержанием специальных символов, обозначающих: ? - любой один символ, % - любое количество любых символов
  • Символ "+" перед словом или словосочетанием, заключённым в двойные кавычки, указывает на обязательное присутствие данного слова или словосочетания в результатах.
  • Символ "-" перед словом или словосочетанием, заключённым в двойные кавычки, указывает на обязательное отсутствие данного слова или словосочетания в результатах.

Форматтер: Отсутствует.
Ограничения: Не возможно задать поиск по точному совпадению, т.к. ищет заданную комбинацию в любой части строки. Модифицирование поведения: При подсказывании значений вызывается событие OnSuggestValues в котором происходит выборка значений для подсказки. Переопределив данное событие в обработчике события можно реализовать собственную логику подсказывания значений.

Фильтр списка из опций
Фильтр списка из опций
grid_options_filter

Использование: Поиск в полях с набором заданных значений.
Возможные данные: Набор заданных значений.
Что фильтрует: Позволяет найти записи с полем, установленным в конкретное значение из набора возможных значений.
Формат: Выпадающий список с набором заданных значений.
Форматтер: kOptionsFormatter - отвечает за формирование списка опций в выпадающем списке фильтра.
Ограничения: Только полное совпадение и только по одному значению.

Фильтр списка из опций типа Picker
Фильтр списка из опций типа Picker
grid_picker_filter

Использование: Поиск в полях для заполнения которых использовались блоки inp_edit_picker или inp_edit_checkboxes, а также полей, данные в которых храняться в виде "|ID1|ID2|...|IDN|".
Возможные данные: Набор заданных значений.
Что фильтрует: Позволяет найти записи, содержащие конкретное значение в установленном наборе значений.
Формат: Выпадающий список с набором заданных значений.
Форматтер: kOptionsFormatter - отвечает за формирование списка опций в выпадающем списке фильтра.
Ограничения: Нельзя найти записи, которые содержат только указанную опцию, т.е. поиск по полному совпадению не возможен.

Фильтр списка по точному совпадению
Фильтр списка по точному совпадению
grid_equals_filter

Использование: Поиск в полях с текстом либо числами.
Возможные данные: Текст либо числа.
Что фильтрует: Позволяет найти записи у которых фильтруемое поле равно заданной строке или числу.
Формат: Текстовая строка либо число.
Форматтер: Отсутствует.
Ограничения: Только полное совпадение по конкретному значению.

Фильтр списка по целым числам с фильтрацией по интервалу
Фильтр списка по целым числам с фильтрацией по интервалу
grid_range_filter

Использование: Фильтрация полей с целыми числами.
Возможные данные: Целые числа.
Что фильтрует: Позволяет найти записи, где фильтруемое поле равно:

  • Если введено значение только в одно из полей, то ищется точное совпадение заданному значению.
  • Если введены значения в оба поля, то ищутся значения, попадающие в заданный интервал значений.

Формат: Одно или два целых числа.
Форматтер: Отсутствует.
Ограничения: Поиск только целых чисел.

Фильтр списка по дробным числам с фильтрацией по интервалу
Фильтр списка по дробным числам с фильтрацией по интервалу
grid_float_range_filter

Использование: Фильтрация полей с дробными числами.
Возможные данные: Дробные числа.
Что фильтрует: Позволяет найти записи, где фильтруемое поле равно:

  • Если введено значение только в одно из полей, то ищется точное совпадение заданному значению.
  • Если введены значения в оба поля, то ищутся значения, попадающие в заданный интервал значений.

Формат: Одно или два дробных числа.
Форматтер: Отсутствует.
Ограничения: Поиск только в полях с дробными числами.

Фильтр списка по датам с фильтрацией по интервалу
Фильтр списка по датам с фильтрацией по интервалу
grid_date_range_filter

Использование: Поиск в полях с датами.
Возможные данные: Дата, время или дата с временем.
Что фильтрует: Позволяет найти записи, где фильтруемое поле равно:

  • Если введена дата только в одно из полей, то ищется точное совпадение дате.
  • Если введены даты в оба поля, то ищутся даты, попадающие в заданный интервал.

Формат: Системный (опция input_format из описания поля) либо переопределён пользователем (параметр "calendar_format" указанный при добавлении поля в список). Возможны только те форматы, которые обрабатывает форматтер kDateFormatter.
Форматтер: kDateFormatter - отвечает за преобразование даты из внутреннего формата хранения в заданный формат либо формат по умолчанию.
Ограничения: Поиск только по полям, содержащими дату в формате timestamp.

Конфигурационный файл

Ниже приведён фрагмент конфигурационного файла, в котором наглядно продемонстрировано куда нужно писать название выше описанных блоков фильтрации.

'Grids' => Array (
	'Default' => Array (
		'Icons' => Array ('default' => 'icon16_sample.gif'),
		'Fields' => Array (
			'ExampleId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
			'ExampleName' => Array ('title' => 'la_col_ExampleName', 'filter_block' => 'grid_like_filter'),
			'ExampleAmount' => Array ('title' => 'la_col_ExampleAmount', 'filter_block' => 'grid_range_filter'),
			'ExampleSum' => Array ('title' => 'la_col_ExampleSum', 'filter_block' => 'grid_float_range_filter'),
			'ExampleDate' => Array ('title' => 'la_col_ExampleDate', 'filter_block' => 'grid_date_range_filter'),
			'ExampleEditPicker' => Array ('title' => 'la_col_ExampleEditPicker', 'data_block' => 'grid_picker_td', 'filter_block' => 'grid_options_filter'),
		),
	),
),
параметр описание параметра
filter_block (string) Задаёт тип используемого фильтра. По умолчанию используется grid_column_filter, который вызывает grid_like_filter.
data_block (string) Задаёт блок, который используется для показывания данных в списке. На данный момент доступно 2 блока, названия которых можно указать в этом параметре:
  • grid_data_td - блок, который просто выводит отформатированное значение из поля (используется по умолчанию, если данный параметр не указан);
  • grid_priority_td - блок, в котором помимо отформатированного значения из поля также выводиться значение поля Priority (eсли значение в поле Priority равняется нулю ("0"), то оно показано не будет).

Блок grid_priority_td будет доступен только начиная с Core v 5.0.0.