company_banner
10 сентября 2015 в 14:41

Календарь для JIRA с открытым исходным кодом



Здравствуйте, дорогие хабражители! Сегодня мы бы хотели рассказать о календаре, который используем в 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
Автор: @MrFirelord
Mail.Ru Group
рейтинг 621,71
Строим Интернет
Похожие публикации

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

  • 0
    Иногда меня смущает что под PHP нет JasperReports. А такие интересные штуки как JIRA пишуться на JAVA.
    • 0
      а что конкретно вас смущает?
      • –1
        Смущает что для ПХП нет вещей уровня ЕНТерпрайз, например Отчеты. Нельзя создать комплексное решение для Ентерпрайза.
        Даже с потоками беда(асинронное выполнение), крон не предлагать.
  • +1
    А меня сильно смущает сочетание календарь и майл.ру… помнится, год назад разбирался с вашей техподдержкой, по поводу того, что из внешнего календаря приходят в ящик уведомления о всякой фигне (до 10 емайлов в день, хотя все галочки в настройках уведомлений были сняты). Простите за оффтоп, но 4(!) обращения в тп на протяжении полугода ни к чему не привели, только стандартные отписки 'мы работаем над этим'. В итоге я просто тупо создал правило, чтобы весь этот мусор от самого же майла уходил в спам. Вчера просто искал одно письмо, зашёл в спам, а там все ещё хранилище уведомлений календаря, до сих пор приходят. Полтора года!)) несерьёзно
    • –3
      Конкретно почта от mail.ru всегда была и остается несерьезной.
      • –2
        С улыбкой складывается впечатление, что недовольны подобными высказываниями сами работники сей компаний. Я ещё не встречал адектватного человека, который бы признал сервис почта@мейл.ру хоть немного достойным.
      • –2
        Минусята, а давайте вы не будете прятать свои трусливые жопки, а вылезете и предоставите хоть какие-то аргументы :D
    • +2
      Пришлите мне в личку email того почтового ящика, пожалуйста?
  • –2
    Есть триальный календарь с тем же функционалом
    marketplace.atlassian.com/plugins/com.atlassian.confluence.extra.team-calendars
    но не от mail.ru — что автоматически делает его в десятки раз более привлекательным
    • +1
      Во-первых, Team Calendars — штука платная и далеко не самая дешевая (10-6000$ в зависимости от кол-ва пользователей, >=2000$ если пользователей >=250). Во-вторых, нужно ставить Confluence, ибо в JIRA он не работает. В какой-то мере мы создали аналог, бесплатный и с открытым исходным кодом. Вы можете сказать, что в Team Calendars больше фич, но и мы планируем дальше развивать свой плагин. Сегодня, например, выкладываем версию с возможностью отображения любого Custom Field-a в issue.
      • 0
        Лично я не встречал компаний с JIRA, но без Confluence. Но допускаю.
        Остальное понятно.

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

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

        UPD
        пардон, чуть промахнулся сообщением. Конечно это был ответ к сообщению товарища xoxol =)
        • 0
          принято)
          Я повторюсь — заявляемая бесплатность не является преимуществом перед альтернативами. Возможность допилки — бесспорный плюс, который я сразу признал

          Сарказма про спутник и гвард никогда не будет слишком много. Это такие продукты и такой маркетинг, который не нужно забывать и быть беспощадным навечно :)
          • +1
            Бесплатность — огромный плюс.
            Когда пользователей 25+, большинство платных плагинов уже стоят очень ощутимых денег.

            Тот же Teams Calendar не используем именно по этой причине. За такие деньги и без него можно обойтись.
  • 0
    Лично я не встречал компаний с JIRA, но без Confluence. Но допускаю.
    Остальное понятно.

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

    ну, я понимаю, надо встроить Спутник, Guard, добавить рекламы
  • 0
    Нда… Такое чувство что часть хабра-пользователей специально подписываются на блог мейлру чтобы писать гневные комментарии =)

    Плагин по-моему достойный, сейчас занимает верхнюю позицию при запросе calendar в jira marketplace. Будем пробовать пользоваться.

    Из того что не понравилось сходу: Не нашёл возможности редактировать тайтл Mail.ru Календарь — %company% jira — По-моему календарь в нашей jira с лейблом mail.ru никак не должен быть связан. Подобную ссылку на фирму разработчика/мейнтейнера плагина лучше поместить в footer.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка