diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-06-24 16:07:06 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-06-24 16:07:06 +0000 |
commit | faa3d984ab0a44da354b901f4962d3441b800f99 (patch) | |
tree | f750d4fad72e14e5f18b32f0dd0bdef6ab0695d1 /app/views/timelog | |
parent | 6d7a855ca2f497a0deeb728d4d7da5cf4afa1d51 (diff) | |
download | redmine-faa3d984ab0a44da354b901f4962d3441b800f99.tar.gz redmine-faa3d984ab0a44da354b901f4962d3441b800f99.zip |
Added time report.
Report can be generated by member/activity/tracker/version and year/month/week for the selected period.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@572 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/views/timelog')
-rw-r--r-- | app/views/timelog/_report_criteria.rhtml | 17 | ||||
-rw-r--r-- | app/views/timelog/report.rhtml | 52 |
2 files changed, 69 insertions, 0 deletions
diff --git a/app/views/timelog/_report_criteria.rhtml b/app/views/timelog/_report_criteria.rhtml new file mode 100644 index 000000000..e4f5fa39a --- /dev/null +++ b/app/views/timelog/_report_criteria.rhtml @@ -0,0 +1,17 @@ +<% @available_criterias[criterias[level]][:values].each do |value| %> +<tr class="<%= cycle('odd', 'even') if criterias.length < level + 2 %>"> +<%= '<td></td>' * level %> +<td><%= value.name %></td> +<%= '<td></td>' * (criterias.length - level - 1) %> +<% hours_for_value = select_hours(hours, criterias[level], value.id) %> + <% @periods.each do |period| %> + <% sum = sum_hours(select_hours(hours_for_value, @columns, period.to_s)) %> + <td align="center"><%= sum > 0 ? sum : "-" %></td> + <% end %> +</tr> +<% if criterias.length > level+1 %> + <%= render(:partial => 'report_criteria', :locals => {:criterias => criterias, :hours => hours_for_value, :level => (level + 1)}) %> +<% end %> + +<% end %> +<% reset_cycle %> diff --git a/app/views/timelog/report.rhtml b/app/views/timelog/report.rhtml new file mode 100644 index 000000000..4fabfe3dd --- /dev/null +++ b/app/views/timelog/report.rhtml @@ -0,0 +1,52 @@ +<h2><%= l(:label_spent_time) %></h2> + +<% form_remote_tag(:url => {:project_id => @project}, :update => 'content') do %> + <% @criterias.each do |criteria| %> + <%= hidden_field_tag 'criterias[]', criteria %> + <% end %> + <p> + <%= l(:label_date_from) %>: <%= text_field_tag 'date_from', @date_from, :size => 10 %><%= calendar_for('date_from') %> + + <%= l(:label_date_to) %>: <%= text_field_tag 'date_to', @date_to, :size => 10 %><%= calendar_for('date_to') %> + + <%= l(:label_details) %>: + <%= select_tag 'period', options_for_select([[l(:label_year), 'year'], + [l(:label_month), 'month'], + [l(:label_week), 'week']], @columns) %> + + <%= submit_tag l(:button_apply) %> + <%= link_to_remote l(:button_clear), {:url => {:project_id => @project}, :update => 'content'}, :class => 'icon icon-reload' %> + </p> + + <% if @criterias.length < 3 %> + <p><%= 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();") %></p> + <% end %> + +<br /> + +<% unless @criterias.empty? %> +<table class="list"> +<thead> +<tr> +<% @criterias.each do |criteria| %> + <th width="15%"><%= l(@available_criterias[criteria][:label]) %></th> +<% end %> +<% @periods.each do |period| %> + <th width="<%= ((100 - @criterias.length * 15 - 15 ) / @periods.length).to_i %>%"><%= period %></th> +<% end %> +</tr> +</thead> + +<tbody> +<%= render :partial => 'report_criteria', :locals => {:criterias => @criterias, :hours => @hours, :level => 0} %> +</tbody> +</table> +<% end %> +<% end %> + +<% content_for :header_tags do %> +<%= javascript_include_tag 'calendar/calendar' %> +<%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %> +<%= javascript_include_tag 'calendar/calendar-setup' %> +<%= stylesheet_link_tag 'calendar' %> +<% end %> |