]> source.dussan.org Git - redmine.git/commitdiff
Add column totals to Issues Summary Report (#691).
authorGo MAEDA <maeda@farend.jp>
Sat, 26 Oct 2024 06:38:43 +0000 (06:38 +0000)
committerGo MAEDA <maeda@farend.jp>
Sat, 26 Oct 2024 06:38:43 +0000 (06:38 +0000)
Contributed by David Petersen (user:petersendidit).

git-svn-id: https://svn.redmine.org/redmine/trunk@23163 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/assets/stylesheets/application.css
app/views/reports/_details.html.erb
app/views/reports/_simple.html.erb
test/functional/reports_controller_test.rb

index e8242c6ca617530a2067b1754a60201b46288b85..630c784762e49e502b5141e67ae75558f79cd864 100644 (file)
@@ -352,6 +352,7 @@ tr.idnt-8 td.subject, tr.idnt-8 td.name {padding-left: 136px; background-positio
 tr.idnt-9 td.subject, tr.idnt-9 td.name {padding-left: 152px; background-position: 136px 50%;}
 
 table.issue-report {table-layout:fixed;}
+table.issue-report tr.total, table.issue-report-detailed tr.total { font-weight: bold; border-top:2px solid #d0d7de;}
 .issue-report-graph {width: 75%; margin: 2em 0;}
 
 tr.entry td { white-space: nowrap; }
index ab660bc16817cdc000120fb6fb1244cb0857a788..930fca6a84a58fdb027a8faa2fc3ca8498ce07aa 100644 (file)
 </tr>
 <% end %>
 </tbody>
+<tfoot>
+<tr class="total">
+  <td><%= l(:label_total) %></td>
+  <% for status in @statuses %>
+  <td><%= aggregate data, { "status_id" => status.id } %></td>
+  <% end %>
+  <td><%= aggregate data, { "closed" => 0 } %></td>
+  <td><%= aggregate data, { "closed" => 1 } %></td>
+  <td><%= aggregate data, { } %></td>
+</tr>
+</tfoot>
 </table>
 <% other_formats_links do |f| %>
   <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %>
index 754b1f21d08d3d0d8b5ef2b0cb698aefb8034c8b..2237728b2be46bb9e21c6f0d99faf08ad6d2b1cb 100644 (file)
   <td><%= aggregate_link data, { field_name => row.id }, aggregate_path(@project, field_name, row, :status_id => "*", :subproject_id => nil) %></td>
 </tr>
 <% end %>
+<tfoot>
+<tr class="total">
+  <td><%= l(:label_total) %></td>
+  <td><%= aggregate data, { "closed" => 0 } %></td>
+  <td><%= aggregate data, { "closed" => 1 } %></td>
+  <td><%= aggregate data, { } %></td>
+</tr>
+</tfoot>
 </tbody>
 </table>
 <% end %>
index 497176b1da63f36701ca5b851c1017dc830067f6..a68c1353696616ed041ca2cdb45468c438915eda 100644 (file)
@@ -208,6 +208,17 @@ class ReportsControllerTest < Redmine::ControllerTest
       assert_select ':nth-child(9)', :text => '1' # closed
       assert_select ':nth-child(10)', :text => '3' # total
     end
+    assert_select 'table.list tfoot :nth-child(1)' do
+      assert_select 'td', :text => 'Total'
+      assert_select ':nth-child(2)', :text => '3' # status:1
+      assert_select ':nth-child(3)', :text => '0' # status:2
+      assert_select ':nth-child(4)', :text => '0' # status:3
+      assert_select ':nth-child(5)', :text => '0' # status:4
+      assert_select ':nth-child(6)', :text => '1' # status:5
+      assert_select ':nth-child(8)', :text => '3' # open
+      assert_select ':nth-child(9)', :text => '1' # closed
+      assert_select ':nth-child(10)', :text => '4' # total
+    end
   end
 
   def test_get_issue_report_details_by_assignee_should_show_non_assigned_issue_count