]> source.dussan.org Git - redmine.git/commitdiff
Time report can be done at issue level (closes #970) + timelog views xhtml validation.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 1 Apr 2008 22:42:10 +0000 (22:42 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 1 Apr 2008 22:42:10 +0000 (22:42 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1319 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/timelog_controller.rb
app/models/issue.rb
app/views/timelog/_list.rhtml
app/views/timelog/details.rhtml
app/views/timelog/report.rhtml
public/stylesheets/application.css
test/functional/timelog_controller_test.rb

index 7e2b55872805f44be508ccf97fc9d7dd68154e2c..e617d3805e1def85edf858ba538b395ebdb8c3e5 100644 (file)
@@ -45,7 +45,10 @@ class TimelogController < ApplicationController
                                           :label => :label_tracker},
                              'activity' => {:sql => "#{TimeEntry.table_name}.activity_id",
                                            :klass => Enumeration,
-                                           :label => :label_activity}
+                                           :label => :label_activity},
+                             'issue' => {:sql => "#{TimeEntry.table_name}.issue_id",
+                                         :klass => Issue,
+                                         :label => :label_issue}
                            }
     
     @criterias = params[:criterias] || []
@@ -196,7 +199,7 @@ private
     render_404
   end
   
-  # Retreive the date range based on predefined ranges or specific from/to param dates
+  # Retrieves the date range based on predefined ranges or specific from/to param dates
   def retrieve_date_range
     @free_period = false
     @from, @to = nil, nil
index 1d25a46043140db2284fe3784ea037f2be364f57..d6fcf53f2bf2d26e82c35910001fd739eeb4545f 100644 (file)
@@ -237,4 +237,8 @@ class Issue < ActiveRecord::Base
       yield
     end
   end
+  
+  def to_s
+    "#{tracker} ##{id}: #{subject}"
+  end
 end
index 67e3c67d5d2ba461f59ac4761c7a012a926c9b33..189f4f5e820a4feaeef56534a949f423ab907e67 100644 (file)
@@ -1,5 +1,6 @@
 <table class="list time-entries">
 <thead>
+<tr>
 <%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %>
 <%= sort_header_tag('user_id', :caption => l(:label_member)) %>
 <%= sort_header_tag('activity_id', :caption => l(:label_activity)) %>
@@ -8,6 +9,7 @@
 <th><%= l(:field_comments) %></th>
 <%= sort_header_tag('hours', :caption => l(:field_hours)) %>
 <th></th>
+</tr>
 </thead>
 <tbody>
 <% entries.each do |entry| -%>
@@ -35,5 +37,5 @@
 </td>
 </tr>
 <% end -%>
-</tbdoy>
+</tbody>
 </table>
index f1e80da1fa9c76c514d5d7a492ec9b71432fe6d5..a0810fbde1b6beb9062dc27cd59a01d2e12447af 100644 (file)
@@ -28,3 +28,5 @@
 <span><%= link_to 'CSV', params.merge(:format => 'csv'), :class => 'csv' %></span>\r
 </p>\r
 <% end %>\r
+\r
+<% html_title l(:label_spent_time), l(:label_details) %>\r
index 2e08e588387cadefe74c588d75d074091e7d1a5c..92d0e87824b7db07a45ed5f0c0104ad039bf2272 100644 (file)
@@ -7,12 +7,11 @@
 
 <% form_remote_tag(:url => {}, :update => 'content') do %>
   <% @criterias.each do |criteria| %>
-    <%= hidden_field_tag 'criterias[]', criteria %>
+    <%= hidden_field_tag 'criterias[]', criteria, :id => nil %>
   <% end %>
   <%= hidden_field_tag 'project_id', params[:project_id] %>
   <%= render :partial => 'date_range' %>
-  </p>
-  </fieldset>
+
   <p><%= l(:label_details) %>: <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'],
                                                                             [l(:label_month), 'month'],
                                                                             [l(:label_week), 'week']], @columns),
@@ -21,6 +20,7 @@
   <%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l(@available_criterias[k][:label]), k]}),
                                                           :onchange => "this.form.onsubmit();",
                                                           :style => 'width: 200px',
+                                                          :id => nil,
                                                           :disabled => (@criterias.length >= 3)) %>
      <%= link_to_remote l(:button_clear), {:url => {:project_id => @project, :date_from => @date_from, :date_to => @date_to, :period => @columns}, :update => 'content'},
                                           :class => 'icon icon-reload' %></p>
 <thead>
 <tr>
 <% @criterias.each do |criteria| %>
-  <th width="15%"><%= l(@available_criterias[criteria][:label]) %></th>
+  <th><%= l(@available_criterias[criteria][:label]) %></th>
 <% end %>
 <% @periods.each do |period| %>
-  <th width="<%= ((100 - @criterias.length * 15 - 15 ) / @periods.length).to_i %>%"><%= period %></th>
+  <th class="period" width="<%= (40 / @periods.length).to_i %>%"><%= period %></th>
 <% end %>
 </tr>
 </thead>
@@ -57,3 +57,6 @@
 </table>
 <% end %>
 <% end %>
+
+<% html_title l(:label_spent_time), l(:label_report) %>
+
index 3d614fe190c7593e641783ead42de638119612df..69e89b0ed04207208856d2d649e2ebe72c41e207 100644 (file)
@@ -183,7 +183,7 @@ div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom
 div#version-summary fieldset { margin-bottom: 1em; }
 div#version-summary .total-hours { text-align: right; }
 
-table#time-report td.hours { text-align: right; padding-right: 0.5em; }
+table#time-report td.hours, table#time-report th.period { text-align: right; padding-right: 0.5em; }
 table#time-report tbody tr { font-style: italic; color: #777; }
 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
index 9ca1a6cbf6fc6df5c88e86f75c684ef25b2f10fb..c55d5248cc48bf300759a4a120f823f113d29ec2 100644 (file)
@@ -80,7 +80,7 @@ class TimelogControllerTest < Test::Unit::TestCase
   end
 
   def test_report_all_time
-    get :report, :project_id => 1, :criterias => ['project']
+    get :report, :project_id => 1, :criterias => ['project', 'issue']
     assert_response :success
     assert_template 'report'
     assert_not_nil assigns(:total_hours)