[自分用メモ] Redmine-2.3.0にアップデート、ガントチャートに日付を表示するようにviewファイルを編集した

職場で運用中のRedmineのバージョンは2.1.0で、隣の島のスタッフから「Redmine-2.3.0にするとイナズマ線(プログレスライン)が表示できるようになるので、アップデートして」という要望があった。RedmineのアップデートはしたことがないのでハラハラドキドキしながらmysqldumpでDBダンプをとりつつ、2.3.0で運用するためにcreate databaseをして新規作成DBにリストアして設定していじくって、でもそれだけでは動かずbundle installしたらnokogiriがないと言われてgem install nokogiriしたらlibxsltがねーよって言われてyum install libxslt-devel.x86_64してからgem install nokogiriしてようやくbundle installして事なきを得てからガントチャートの日付表示に取り掛かった。

ちなみに以前のバージョンの対応はこちらを参照されたい。
また、前バージョンではこちらのサイト様も参照させて頂いた。


■Redmine 2.0のガントチャートに日付表示を追加する – GHOST IN THE SUIT
http://blog.uskanda.com/2012/07/14/gantt-with-date-for-redmine-2-0/

■Redmine ガントチャートに日付を表示してみた。 – 100ねんごの未来予想図
http://in.shappi.org/article/161327940.html

そして2.3.0のapp/views/gantts/show.html.erbファイルと2.1.0のファイルとでdiffを取ってみたら、えらい違いが……。いや具体的な内容に違いはなさそうな気がするが、コーディングスタイルがかなり違っている。どうも他のファイルも含めてスタイルが見直されている感じがする。

ということで単純パッチではすまなくなり、上記サイト様を参考にさせて頂きながら手で合わせこむ作業をしこしこと……Rubyなんて使わない人だから、まったく疲れた。
で、ついでなのでコーディングスタイルも合わせて移植した。

[Sponsored Link]


[ruby]
*** show.html.erb.ORG 2013-04-24 15:24:30.611404773 +0900
— show.html.erb 2013-04-24 16:30:58.985841487 +0900
***************
*** 77,82 ****
— 77,83 —-
headers_height = header_height
show_weeks = false
show_days = false
+ show_day_num = false

if @gantt.zoom > 1
show_weeks = true
***************
*** 84,89 ****
— 85,94 —-
if @gantt.zoom > 2
show_days = true
headers_height = 3 * header_height
+ if @gantt.zoom > 3
+ show_day_num = true
+ headers_height = 4 * header_height
+ end
end
end

***************
*** 218,239 ****
<% end %>
<% end %>

<% ###### Days headers ####### %>
<% if show_days %>
<%
left = 0
height = g_height + header_height – 1
wday = @gantt.date_from.cwday
%>
<% (@gantt.date_to – @gantt.date_from + 1).to_i.times do %>
<%
width = zoom – 1
style = ""
style += "left: #{left}px;"
! style += "top:37px;"
style += "width: #{width}px;"
style += "height: #{height}px;"
style += "font-size:0.7em;"
clss = "gantt_hdr"
clss << " nwday" if @gantt.non_working_week_days.include?(wday)
%>
— 223,282 —-
<% end %>
<% end %>

+ <% ###### Days headers Num ####### %>
+ <% if show_day_num %>
+ <%
+ left = 0
+ height = g_height + header_height * 2 – 1
+ wday = @gantt.date_from.cwday
+ font_size = (@gantt.zoom == 3 ? 0.5 : 0.7)
+ day_num = @gantt.date_from
+ %>
+ <% (@gantt.date_to – @gantt.date_from + 1).to_i.times do %>
+ <%
+ width = zoom – 1
+ color = (wday == 6 ? "blue" : (wday == 7 ? "red" : ""))
+ style = ""
+ style += "left: #{left}px;"
+ style += "top: 37px;"
+ style += "width: #{width}px;"
+ style += "height: #{height}px;"
+ style += "font-size: #{font_size}em;"
+ style += "background: #f1f1f1;" if wday > 5
+ style += "color: #{color};" if wday > 5
+ clss = "gantt_hdr"
+ %>
+ <%= content_tag(:div, :style => style, :class => clss) do %>
+ <%= day_num.day %>
+ <% end %>
+ <%
+ left = left + width + 1
+ day_num = day_num + 1
+ wday = wday + 1
+ wday = 1 if wday > 7
+ %>
+ <% end %>
+ <% end %>
+
<% ###### Days headers ####### %>
<% if show_days %>
<%
left = 0
height = g_height + header_height – 1
+ top = (show_day_num == true ? 55 : 37)
wday = @gantt.date_from.cwday
%>
<% (@gantt.date_to – @gantt.date_from + 1).to_i.times do %>
<%
width = zoom – 1
+ color = (wday == 6 ? "blue" : (wday == 7 ? "red" : ""))
style = ""
style += "left: #{left}px;"
! style += "top: #{top}px;"
style += "width: #{width}px;"
style += "height: #{height}px;"
style += "font-size:0.7em;"
+ style += "color: #{color};" if wday > 5
clss = "gantt_hdr"
clss << " nwday" if @gantt.non_working_week_days.include?(wday)
%>
[/ruby]

Rubyの文法なんてさっぱりわからんので見よう見真似でござる……。

Mastering Redmine入門Redmine 第3版チケット駆動開発Ruby on Rails環境構築ガイド作りながら学ぶRuby入門 第2版いなば とりたれ味 65g×3個入り

コメントを残す

メールアドレスが公開されることはありません。