このところ、ぽちぽちと、redmineなんかをいじいじと。
0.9.4をインストールしたものの、放置しちゃってて、気が付けば、正式バージョンが登場。
1.0.2なんてのが出ているじゃない、とmigrateに挑戦。
思ったより、あっさり終わりましたが、ガントチャートの日付がなし、と。
ということで、こちらのページを参考にしましたが、使っておられるのが0.9.2とのことですので、1.0.2向けに人間パッチ。
できたものの、Webだと、上から日付、週なのですが、pdfで出すと、週、日付の順。
これを、ちゃらっと、直しちゃったのと、出力ファイル名に日付が欲しいなぁ、と思いましたので、それを修正。
ちなみに、出力ファイル名の件は、
redmine/app/controllers/gantts_controller.rb
の修正となります。
ということで、unified diffを貼りつけておきます。
必要な方は、面倒ですが、このページのソースを表示して、HTMLのタグをぐりぐりしていただければ、patchファイルに生まれ変わらせて、patchに食わせるなりしてください。
インデントがスペースか、tabの違いで、rejectされるかもしれませんので、ご注意を。
なお、バージョンが変わると、使えなくなる可能性大ですので、ご注意のほどを。
(注)HTMLエディタで書いたら、タグがどっさりになったので、TEXTエディタで再編集。
ただ、スペースが、ぐちゃっとなっているので、気になる方はごめんなさい。
----
0.9.4をインストールしたものの、放置しちゃってて、気が付けば、正式バージョンが登場。
1.0.2なんてのが出ているじゃない、とmigrateに挑戦。
思ったより、あっさり終わりましたが、ガントチャートの日付がなし、と。
ということで、こちらのページを参考にしましたが、使っておられるのが0.9.2とのことですので、1.0.2向けに人間パッチ。
できたものの、Webだと、上から日付、週なのですが、pdfで出すと、週、日付の順。
これを、ちゃらっと、直しちゃったのと、出力ファイル名に日付が欲しいなぁ、と思いましたので、それを修正。
ちなみに、出力ファイル名の件は、
redmine/app/controllers/gantts_controller.rb
の修正となります。
ということで、unified diffを貼りつけておきます。
必要な方は、面倒ですが、このページのソースを表示して、HTMLのタグをぐりぐりしていただければ、patchファイルに生まれ変わらせて、patchに食わせるなりしてください。
インデントがスペースか、tabの違いで、rejectされるかもしれませんので、ご注意を。
なお、バージョンが変わると、使えなくなる可能性大ですので、ご注意のほどを。
(注)HTMLエディタで書いたら、タグがどっさりになったので、TEXTエディタで再編集。
ただ、スペースが、ぐちゃっとなっているので、気になる方はごめんなさい。
----
diff -ur redmine-1.0.2/app/controllers/gantts_controller.rb redmine/app/controllers/gantts_controller.rb
--- redmine-1.0.2/app/controllers/gantts_controller.rb 2010-08-19 13:33:57.000000000 +0900
+++ redmine/app/controllers/gantts_controller.rb 2010-10-12 18:44:49.000000000 +0900
@@ -34,7 +34,7 @@
@gantt.events = events
end
- basename = (@project ? "#{@project.identifier}-" : '') + 'gantt'
+ basename = Time.now.strftime("%Y%m%d-") + (@project ? "#{@project.identifier}-" : '') + 'gantt'
respond_to do |format|
format.html { render :action => "show", :layout => !request.xhr? }
diff -ur redmine-1.0.2/app/views/gantts/show.html.erb redmine/app/views/gantts/show.html.erb
--- redmine-1.0.2/app/views/gantts/show.html.erb 2010-05-27 07:48:17.000000000 +0900
+++ redmine/app/views/gantts/show.html.erb 2010-10-12 18:20:33.000000000 +0900
@@ -44,6 +44,7 @@
headers_height = header_heigth
show_weeks = false
show_days = false
+show_day_num = false
if @gantt.zoom >1
show_weeks = true
@@ -51,6 +52,10 @@
if @gantt.zoom > 2
show_days = true
headers_height = 3*header_heigth
+ if @gantt.zoom > 3
+ show_day_num = true
+ headers_height = 4*header_heigth
+ end
end
end
@@ -142,6 +147,29 @@
end
end %>
+<%
+#
+# Days headers Num
+#
+if show_day_num
+ left = 0
+ height = g_height + header_heigth*2 - 1
+ wday = @gantt.date_from.cwday
+ day_num = @gantt.date_from
+ (@gantt.date_to - @gantt.date_from + 1).to_i.times do
+ width = zoom - 1
+ %>
+ <div style="left:<%= left %>px;top:37px;width:<%= width %>px;height:<%= height %>px;font-size:0.7em;<%= "background:#f1f1f1;" if wday > 5 %><%= "color:blue;" if wday == 6 %><%= "color:red;" if wday == 7 %>" class="gantt_hdr">
+ <%= day_num.day %>
+ </div>
+ <%
+ left = left + width+1
+ day_num = day_num + 1
+ wday = wday + 1
+ wday = 1 if wday > 7
+ end
+end %>
+
<%
#
# Days headers
@@ -149,11 +177,12 @@
if show_days
left = 0
height = g_height + header_heigth - 1
+ top = (show_day_num ? 55 : 37)
wday = @gantt.date_from.cwday
(@gantt.date_to - @gantt.date_from + 1).to_i.times do
width = zoom - 1
%>
- <div style="left:<%= left %>px;top:37px;width:<%= width %>px;height:<%= height %>px;font-size:0.7em;<%= "background:#f1f1f1;" if wday > 5 %>" class="gantt_hdr">
+ <div style="left:<%= left %>px;top:<%= top %>px;width:<%= width %>px;height:<%= height %>px;font-size:0.7em;<%= "background:#f1f1f1;" if wday > 5 %><%= "color:blue;" if wday == 6 %><%= "color:red;" if wday == 7 %>" class="gantt_hdr">
<%= day_name(wday).first %>
</div>
<%
diff -ur redmine-1.0.2/lib/redmine/export/pdf.rb redmine/lib/redmine/export/pdf.rb
--- redmine-1.0.2/lib/redmine/export/pdf.rb 2010-09-20 13:07:09.000000000 +0900
+++ redmine/lib/redmine/export/pdf.rb 2010-10-12 18:29:33.000000000 +0900
@@ -323,7 +323,8 @@
pdf.SetX(15)
pdf.Cell(70, 20, project.to_s)
pdf.Ln
- pdf.SetFontStyle('B',9)
+ #pdf.SetFontStyle('B',9)
+ pdf.SetFontStyle('B',8)
subject_width = 100
header_heigth = 5
@@ -335,10 +336,11 @@
if gantt.months < 7
show_weeks = true
headers_heigth = 2*header_heigth
- if gantt.months < 3
+ #if gantt.months < 3
show_days = true
- headers_heigth = 3*header_heigth
- end
+ # headers_heigth = 3*header_heigth
+ headers_heigth = 4*header_heigth
+ #end
end
g_width = 280 - subject_width
@@ -392,15 +394,27 @@
left = subject_width
height = header_heigth
wday = gantt.date_from.cwday
- pdf.SetFontStyle('B',7)
+ day_num = gantt.date_from
+ #pdf.SetFontStyle('B',7)
+ pdf.SetFontStyle('B',6)
(gantt.date_to - gantt.date_from + 1).to_i.times do
width = zoom
+ if wday == 6
+ pdf.SetTextColor(0,0,255)
+ elsif wday == 7
+ pdf.SetTextColor(255,0,0)
+ end
pdf.SetY(y_start + 2 * header_heigth)
pdf.SetX(left)
+ pdf.Cell(width, height, day_num.day.to_s, "LTR", 0, "C")
+ pdf.SetY(y_start + 3 * header_heigth)
+ pdf.SetX(left)
pdf.Cell(width, height, day_name(wday).first, "LTR", 0, "C")
+ day_num = day_num + 1
left = left + width
wday = wday + 1
wday = 1 if wday > 7
+ pdf.SetTextColor(0,0,0)
end
end
@@ -410,7 +424,8 @@
# Tasks
top = headers_heigth + y_start
- pdf.SetFontStyle('B',7)
+ #pdf.SetFontStyle('B',7)
+ pdf.SetFontStyle('B',5)
gantt.events.each do |i|
pdf.SetY(top)
pdf.SetX(15)
@@ -429,6 +444,8 @@
pdf.SetFillColor(255, 255, 255)
pdf.Cell(g_width, 4.6, "", "LR", 0, "", 1)
pdf.SetY(top+1.5)
+
+ today_position = 0
if i.is_a? Issue
i_start_date = (i.start_date >= gantt.date_from ? i.start_date : gantt.date_from )
@@ -445,6 +462,7 @@
d_width = ((i_done_date - i_start_date)*zoom)
l_width = ((i_late_date - i_start_date+1)*zoom) if i_late_date
l_width ||= 0
+ today_position = ((Date.today - gantt.date_from)*zoom)
pdf.SetX(subject_width + i_left)
pdf.SetFillColor(200,200,200)
@@ -465,7 +483,8 @@
pdf.SetY(top+1.5)
pdf.SetX(subject_width + i_left + i_width)
- pdf.Cell(30, 2, "#{i.status} #{i.done_ratio}%")
+ #pdf.Cell(30, 2, "#{i.status} #{i.done_ratio}%")
+ pdf.Cell(30, 2, "#{i.status} #{i.done_ratio}% (#{i.assigned_to})")
else
i_left = ((i.start_date - gantt.date_from)*zoom)
@@ -477,6 +496,12 @@
pdf.SetX(subject_width + i_left + 3)
pdf.Cell(30, 2, "#{i.name}")
end
+
+ pdf.SetY(top+1.5)
+ pdf.SetX(subject_width + today_position)
+ pdf.SetTextColor(100,100,100)
+ pdf.Cell(30, 2, "◆")
+ pdf.SetTextColor(0,0,0)
top = top + 5
pdf.SetDrawColor(200, 200, 200)
----