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

[Sponsored Link]


当ブログでは「役に立った!」「写真使いました!」などご参考頂いた方からのAmazonギフト券の寄付をお待ち致しております。

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrPin on PinterestShare on LinkedInDigg this

職場で運用中の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]


*** 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の文法なんてさっぱりわからんので見よう見真似でござる……。

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

Share on FacebookTweet about this on TwitterShare on Google+Share on TumblrPin on PinterestShare on LinkedInDigg this

当ブログでは「役に立った!」「写真使いました!」などご参考頂いた方からのAmazonギフト券の寄付をお待ち致しております。


Atsushi Ezura について

ナチュラルな女性のしぐさや表情を撮りたいIT系エンジニア。女性モデル募集中プロフィール
カテゴリー: Redmine, コンピュータ, ソフトウェア タグ: , パーマリンク

コメントを残す

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