Redmine wikiマクロを作成する方法2(完了チケットの割合をグラフで表示)
Redmine Advent Calendar 2024の8日目の記事として作成しました。
今年のRedmine Advent Calendarに空白が多く残っており、クリスマスが過ぎる前までになんとか空白の日付の記事を書いて、空白の日付を埋めることを優先して記事を作成しました。そのため、濃くない内容の記事になるかもしれませんが、ご容赦ください。
完成形
背景
Redmineには自作のwikiマクロを作成して登録することができます。
その方法としてはプラグインを作成しますがwikiマクロの登録のためのプラグインは比較的開発が簡単であるため、プラグインを作ったことがない方でも簡単に試してみることができるメリットがあります。
wikiマクロでは色々な処理をすることができるためRedmineの構造を理解したり、Rubyを理解したり、プラグインの仕組みを理解したりするためには良い教材になるかと思います。
今年のRedmine Advent Calendarを通して、何回かに分けてwikiマクロの作り方を紹介したいと思います。
今回の記事では「Redmine wikiマクロを作成する方法2」として「完了チケットの割合をグラフで表示」する方法を説明します。
前提条件:
使用するwikiマクロ登録用プラグインはRedmine wikiマクロを作成する方法1で説明したプラグインを使用します。/plugins/wiki_macro_plugin/init.rbの「init.rb」ファイルにwikiマクロを登録します。
1. マクロを実装
-
/plugins/wiki_macro_plugin/init.rbの「
init.rb
」ファイルを編集して、Wikiマクロを登録します:Redmine::Plugin.register :wiki_macro_plugin do 省略 end Redmine::WikiFormatting::Macros.register do desc "Display progress bar for a project's issues" macro :progress_bar do |obj, args| project = Project.find_by_identifier(args.first || obj.project.identifier) total = project.issues.count closed = project.issues.where(status_id: IssueStatus.where(is_closed: true).pluck(:id)).count progress = total > 0 ? (closed * 100 / total) : 0 <<~HTML.html_safe <div>完了チケットの割合</div> <div style="border: 1px solid #ccc; width: 100%; height: 20px; position: relative; background-color: #f5f5f5;"> <div style="width: #{progress}%; height: 100%; background-color: #4caf50;"></div> <span style="position: absolute; left: 50%; top: 0; transform: translateX(-50%); font-size: 12px;"> #{progress}%(total: #{total} closed: #{closed}) </span> </div> HTML end end
-
Project.find_by_identifier(args.first || obj.project.identifier)
で、引数で与えられたProjectを取得します。 -
total = project.issues.count
で該当プロジェクトのチケットの個数を取得します。 -
closed = project.issues.where(status_id: IssueStatus.where(is_closed: true).pluck(:id)).count
で、該当プロジェクトに所属しているチケットで、完了したチケットの数を取得しています。 -
progress = total > 0 ? (closed * 100 / total) : 0
で、該当プロジェクトの全体のチケット数の中で占める完了チケットの数の割合を取得しています。 -
<<~HTML.html_safe
で、マクロの返り値をhtmlで出力します。 - プログレス表示用のdivの幅をprogressに合わせて、完了チケットの割合をグラフで表示できるようにしています。
-
2. マクロの使い方:
wikiページで下記の形式でwikiマクロを実行します。
{{progress_bar(project_identifier)}}
- project_identifierにプロジェクトの識別子を引数として渡します。
感想
- wikiマクロ登録用のプラグインがあれば、簡単にwikiマクロを登録できることが分かります。
- 色があるグラフで完了チケットの割合を表示できるので、見た目が華やかな感じになります。
- プロジェクトの取得や、チケット数の取得など、Redmineプラグインで必要な要素技術の習得用に wikiマクロで色々と遊んでみてください。
-
<<~HTML.html_safe
の部分が肝になっていますので、<<~HTML.html_safe
の部分を色々と改善、修正したら、より実用的なグラフを表示させることができると思います。
この記事の作成者の紹介
山崎進
- Redmine、Jquery、JavaScript,Rails、Ruby、SQL、VBA、RPAの開発を行なっています。
- 自動化、業務の効率化に高い関心があります。
- 下記の媒体で情報を発信しています。Redmineのプラグインの開発などに対応が可能ですので、お気軽にご連絡ください。
* Qiita:https://qiita.com/ankosoft
* Twitter:https://twitter.com/yamasaki24
* Redmine Advent Calendarで記事投稿
* redmine.tokyoで講演多数
* Redmine Japan Vol.1 前夜祭、Redmine Japan Vol.3で講演
* https://ankosoft.co.jp/blog/
* https://technology.ankosoft.co.jp/
関連記事(去年のRedmine Advent Calendarの記事です。)
* JqueryでRedmineのメニューにアイコンを入れる方法
* JqueryでRedmineのメニューを閉じたり開いたりする方法
* JqueryでRedmineの「活動ページ」をもっと便利に(タイトルを開閉したり、曜日を入れたり)
* JqueryでRedmineの「活動ページ」をもっと便利に②(フィルタリング機能と移動機能)
* JqueryでRedmineの「wikiページ」をもっと便利に(フィルタリング機能と移動機能)
* JqueryでRedmineの「チケットページ」をもっと便利に(年ごと、月ごと、四半期ごとの集計機能の開発)