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 переиспользуется между вызовами. Поэтому, скажем, нельзя устанавливать цвет фона для отдельных клеток: его надо либо обновлять при каждом вызове, либо не изменять вообще.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты