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

Чего хотелось?


  • Средства просмотра наших issues, которые можно выбрать либо по проекту, либо по фильтру
  • Удобный интерфейс
  • Возможность задать в качестве начальной и конечной даты для issuе не только стандартные поля, типа Due Date или created, а любые Custom Field-ы
  • Возможность шарить календари на группы и проектные роли

Плюс хотелось бы добавлять новые возможности по мере необходимости, а все более или менее подходящие решения были с закрытым исходным кодом.

Что получили?


На странице календаря вы увидите 2 блока, не считая header-а. В левом — события, в правом — сами календари. Календари разбиты на 3 группы: Мои календари, Расшаренные календари и Остальные. Последняя группа видна только администраторам JIRA. Первая группа говорит сама за себя, во вторую входят календари, расшаренные на вас, либо через группу, либо через проектную роль. В третьей группе администраторы видят все календари, не вошедшие в первые 2 группы. Администраторы вольны делать практически все со всеми календрарями: удалять, редактировать любое поле, изменять группы и проектные роли для шары.



Окно создания/редактирования представляет собой нехитрый набор полей, очевидный для создания календаря. Обязательными там являются только название, источник запросов и начало события. Тут же можете и расшарить календарь на любую доступную вам группу или проектную роль. В правой панели вы можете также управлять видимостью расшаренных на вас календарей. По умолчанию календарь, расшаренный на вас, сперва будет отображен как скрытый. Изменить это можно щелкнув на него. Цветной квадрат означает видимый календарь, цветная рамка — невидимый.

В левой панели располагается сами события. В качестве основы для отрисовки issues мы решили воспользоваться jQuery плагином Full Calendar. В самих event-ах мы видим только issue summary, но если щелкнуть по каждому, то в отдельном popup-е откроется информация по issue с возможностью перехода к этому issue.



Существуют поля, которые отображаются в этом popup-е по умолчанию: исполнитель, автор и описание issue. Остальные поля вы, как автор календаря, можете настроить в поле «Поля» окна создания/редактирования календаря. Event-ы можно перемещать и растягивать, если у вас есть право на изменение соответствующего issue в JIRA, и в качестве полей «Начало события» и «Конец события» не заданы такие значения как «Создан», «Обновлен» и «Решен», что соответствует дате создания, дате последнего редактирования и дате решения issue соответственно.

Техническая часть


На frontend-е мы использовали один из последних AUI, о котором рассказывали в одном из предыдущих постов. С одной стороны, довольно удобно использовать все самые новые компоненты из библиотеки AUI, c другой, довольно хлопотно обеспечить при этом хорошую обратную совместимость. Допустим, Inline Dialog 2 появился не так давно и недоступен в версиях JIRA раннее 6.2. FullCalendar используется для отрисовки самих issue. На backend-e JIRA API + хранение данных в Active Objects. JIRA API позволяет нам строить jql на основе событий, начала и конца событий, проверку доступа к issues и т.д. Active Objects позволяет удобно хранить данные как о самих календарях, так и о предпочтительных настройках пользователя, как, например, какие из расшаренных календарей должны быть скрыты, а какие видимы. Долгое время, мы извлекали и сохраняли эту информацию при помощи класса PluginSetting, прежде сериализируя ее в XML. При последнем изменении календаря решили использовать Active Objects. Во-первых, тут отпала нужда в сериализации, а во-вторых, с Active Objects проще работать.

Заключение


Мы рассчитываем и дальше дорабатывать этот плагин. В частности, хотим добавить возможность просмотра в popup-е event-а любой Custom Field. Исходный код можно просмотреть на github. Обновленный календарь доступен для версий JIRA 6.3+.

Ссылка на github — github.com/mailru/jira-plugins-mailrucal
Ссылка на marketplace — marketplace.atlassian.com/plugins/ru.mail.jira.plugins.mailrucal

Комментарии (14)


  1. SOLON7
    11.09.2015 06:56

    Иногда меня смущает что под PHP нет JasperReports. А такие интересные штуки как JIRA пишуться на JAVA.


    1. gurinderu
      11.09.2015 08:21

      а что конкретно вас смущает?


      1. SOLON7
        11.09.2015 12:45
        -1

        Смущает что для ПХП нет вещей уровня ЕНТерпрайз, например Отчеты. Нельзя создать комплексное решение для Ентерпрайза.
        Даже с потоками беда(асинронное выполнение), крон не предлагать.


  1. Phizio
    11.09.2015 08:18
    +1

    А меня сильно смущает сочетание календарь и майл.ру… помнится, год назад разбирался с вашей техподдержкой, по поводу того, что из внешнего календаря приходят в ящик уведомления о всякой фигне (до 10 емайлов в день, хотя все галочки в настройках уведомлений были сняты). Простите за оффтоп, но 4(!) обращения в тп на протяжении полугода ни к чему не привели, только стандартные отписки 'мы работаем над этим'. В итоге я просто тупо создал правило, чтобы весь этот мусор от самого же майла уходил в спам. Вчера просто искал одно письмо, зашёл в спам, а там все ещё хранилище уведомлений календаря, до сих пор приходят. Полтора года!)) несерьёзно


    1. anatolikus
      13.09.2015 15:51
      -3

      Конкретно почта от mail.ru всегда была и остается несерьезной.


      1. anatolikus
        14.09.2015 14:16
        -2

        С улыбкой складывается впечатление, что недовольны подобными высказываниями сами работники сей компаний. Я ещё не встречал адектватного человека, который бы признал сервис почта@мейл.ру хоть немного достойным.


      1. anatolikus
        02.10.2015 12:49
        -2

        Минусята, а давайте вы не будете прятать свои трусливые жопки, а вылезете и предоставите хоть какие-то аргументы :D


    1. Dreadatour
      14.09.2015 15:54
      +2

      Пришлите мне в личку email того почтового ящика, пожалуйста?


  1. xoxol
    16.09.2015 12:21
    -2

    Есть триальный календарь с тем же функционалом
    marketplace.atlassian.com/plugins/com.atlassian.confluence.extra.team-calendars
    но не от mail.ru — что автоматически делает его в десятки раз более привлекательным


    1. MrFirelord
      16.09.2015 17:36
      +1

      Во-первых, Team Calendars — штука платная и далеко не самая дешевая (10-6000$ в зависимости от кол-ва пользователей, >=2000$ если пользователей >=250). Во-вторых, нужно ставить Confluence, ибо в JIRA он не работает. В какой-то мере мы создали аналог, бесплатный и с открытым исходным кодом. Вы можете сказать, что в Team Calendars больше фич, но и мы планируем дальше развивать свой плагин. Сегодня, например, выкладываем версию с возможностью отображения любого Custom Field-a в issue.


      1. xoxol
        17.09.2015 11:49

        Лично я не встречал компаний с JIRA, но без Confluence. Но допускаю.
        Остальное понятно.

        мы планируем дальше развивать свой плагин

        ну, я понимаю, надо встроить Спутник, Guard, добавить рекламы


      1. icef
        29.09.2015 22:41
        +1

        тут все же вопрос не в «jira без confluence», а в «календарь бесплатно + возможность допилить самому». Ну а сарказм про спутник и гвард мне кажется излишним — ребята делают это для решения своих внутренних задач и дают пользоваться наработками сообществу, за что им спасибо. Те же ребята из яндекса запилили очень крутой racktables для своих задач и выпустили его в мир — сейчас очень мощная штука и продолжает развиваться

        UPD
        пардон, чуть промахнулся сообщением. Конечно это был ответ к сообщению товарища xoxol =)


        1. xoxol
          07.10.2015 13:38

          принято)
          Я повторюсь — заявляемая бесплатность не является преимуществом перед альтернативами. Возможность допилки — бесспорный плюс, который я сразу признал

          Сарказма про спутник и гвард никогда не будет слишком много. Это такие продукты и такой маркетинг, который не нужно забывать и быть беспощадным навечно :)


  1. xoxol
    17.09.2015 11:49

    Лично я не встречал компаний с JIRA, но без Confluence. Но допускаю.
    Остальное понятно.

    мы планируем дальше развивать свой плагин

    ну, я понимаю, надо встроить Спутник, Guard, добавить рекламы