Draw calendar year
Материал из Eludia.
Процедура draw_calendar_year — это надстройка над draw_table, отображающая таблицу-календарь на заданный год. Месяцы года расположены в 4 строки, соответствующие кварталам.
Синопсис
draw_calendar_year (
sub {
my ($cell, $day) = @_;
my $dt = $day -> {iso};
$cell -> {href} = "javascript:sw('$dt')";
$cell -> {attributes} -> {bgcolor} = $color [$holidays -> {$dt}];
},
{
year => $_REQUEST {year}, # это по умолчанию, можно не указывать
title => {label => "..."},
top_toolbar => [
...
],
}
);
Подробнее
Как видно из примера, год задаётся опцией year, которую можно не указывать, если её значение совпадает с $_REQUEST {year} (обычно это так и есть).
Вообще 2-й аргумент draw_calendar_year передаётся в качестве последнего draw_table, то есть здесь можно использовать любые опции отображения таблиц.
Что касается callback-функции, передаваемой как 1-й параметр, она отличается от аналога в draw_table довольно сильно.
Описание callback-процедуры
Входные параметры следующие:
- $cell
- шаблон описания ячейки;
- $day
- описание календарного дня следующего вида:
{
year => 2010,
month => 3,
day => 26,
iso => '2010-03-26',
day_of_week => 5,
week_of_month => 4,
}
Процедура должна модифицировать $cell таким образом, чтобы по этому описанию была сгенерирована нужная клетка календаря. День месяца проставляется в компоненту {label} автоматически, в основном ожидается, что процедура, как в приведённом примере, уточняет свет ячейки и ссылку с неё.
Следует иметь в виду, что переменная $cell переиспользуется между вызовами. Поэтому, скажем, нельзя устанавливать цвет фона для отдельных клеток: его надо либо обновлять при каждом вызове, либо не изменять вообще.
