Аргументы представления - значения, передающиеся в представление извне.
Аргументы могут быть:
Аргумент может быть обязательным или необязательным.
В случае обязательности, значение должно быть передано в представление. В противном случае пользователь увидит ошибку.
Error in argument $"arg_name": Invalid value for the argument type
В случае необязательности, при задании аргумента используется кодовое слово NULL
.
Нулевое значение аргумента можно использовать в коде запроса представления наравне с любым ненулевым значением.
Нужно отфильтровать операции, произведенные с указанной даты начала по указанную дату окончания.
{
$start_date date NULL @{
caption = 'Период с'
},
$end_date date NULL @{
caption = 'Период по'
}
}:
SELECT
@type = 'table',
@show_argument_editor = true,
id,
action_type,
operation_date
FROM
storage.actions
WHERE
(
$start_date IS NULL
OR operation_date >= $start_date
) AND (
$end_date IS NULL
OR operation_date <= $end_date
)
date
- $start_date
и $end_date
. NULL
означает, что аргументы могут быть не переданы (или их значение равно null
)WHERE
: если дата начала указана, то фильтровать только записи, у которых дата операции позже или равна указанной дате начала, аналогично - с датой окончания.Важно отметить, что аргументы в редактор аргументов могут передаваться с уровня выше текущего представления.
Это означает, что если текущее представление расположено внутри другого представления, то аргументы могут быть получены из родительского представления.
Если текущее представление открыто путем перехода по ссылке, то аргументы могут передаваться из представления, с которого осуществляется переход.
Если переход на представление, код которого описан выше, осуществляется из меню, то передача аргументов выглядит так:
SELECT
@"type" = 'menu',
@title = 'Simple Menu',
"menu",
FROM (
VALUES ([
{ "name": 'Отчеты', "size": 3, "content": [
{
name: 'Действия за текущий месяц',
ref: &storage.actions_table,
args: {
date_from: $$transaction_time::date,
date_to: ($$transaction_time + '1 month'::interval)::date
}
},
]}
])
) AS menu ("menu")
В качестве значений, передаваемых через аргументы могут быть константы, заданные в коде представления, вычисленные значения или другие аргументы.