diff --git a/app/controllers/user_leave_reports_controller.rb b/app/controllers/user_leave_reports_controller.rb index 9507a60..71e76d9 100644 --- a/app/controllers/user_leave_reports_controller.rb +++ b/app/controllers/user_leave_reports_controller.rb @@ -62,48 +62,24 @@ def report end where_clause[0] = where_statements.join(' AND ') - user_leaves = UserLeave.where(where_clause).order('leave_date desc') + @user_leave = UserLeave.where(where_clause).order('leave_date desc') - @divided_leaves={} - case params[:user_leave_report][:selected_group_by] - when 'User' - user_leaves.each do |user_leave| - if @divided_leaves[user_leave.user.name.to_sym] - @divided_leaves[user_leave.user.name.to_sym]< params[:user_leave_report][:date_to] - flash.now[:error]=l(:error_from_greater_than_to) - else - flash.now[:error] = l(:error_no_results) - end - end - end + end + + @leaves_report_grid = initialize_grid(@user_leave, + :order => 'id', + :name => 'grid', + :order_direction => 'desc', + :enable_export_to_csv => true, + :csv_field_separator => ';', + :csv_file_name => 'LeavesReport') + + export_grid_if_requested('grid' => 'grid') + + + + end end diff --git a/app/views/user_leave_reports/_grid.html.erb b/app/views/user_leave_reports/_grid.html.erb new file mode 100644 index 0000000..3dd76cb --- /dev/null +++ b/app/views/user_leave_reports/_grid.html.erb @@ -0,0 +1,79 @@ +<%leave_types_totals = {}%> + +<%=grid(@leaves_report_grid,hide_submit_button: true, hide_csv_button: false, hide_reset_button: true ,:show_filters => :always,html: {class: 'my-grid'}, header_tr_html: {class: 'my-header'}) do |g| + + g.column name: l(:label_name),in_csv: false do |user_leave| + link_to User.find(user_leave.user_id).name, user_path(User.find(user_leave.user_id)) + end + g.column name: l(:label_name),in_html: false do |user_leave| + User.find(user_leave.user_id).name + end + + + g.column name: l(:label_leave_type),in_csv: false,attribute: 'leave_type',detach_with_id: :leave_type_filter do |user_leave| + link_to user_leave.leave_type, :controller => 'user_leave_reports',:action=> 'report',:user_leave_report=>{:selected_leave_types=>user_leave.leave_type, :selected_group_by =>'User'} + end + g.column name: l(:label_leave_type),in_html: false,attribute: 'leave_type',detach_with_id: :leave_type_filter do |user_leave| + user_leave.leave_type + end + + g.column name: l(:label_leave_date),in_csv: false,attribute: 'leave_date',detach_with_id: :leave_date_filter do |user_leave| + link_to user_leave.leave_date, :controller => 'user_leave_reports',:action=> 'report',:user_leave_report=>{:date_from=>user_leave.leave_date,:date_to=>user_leave.leave_date, :selected_group_by =>'User'} + end + g.column name: l(:label_leave_date),in_html: false,attribute: 'leave_date',detach_with_id: :leave_date_filter do |user_leave| + user_leave.leave_date + end + + + + g.column name: l(:label_weight),attribute: 'fractional_leave',detach_with_id: :fractional_leave_filter do |user_leave| + + leave_types_totals [user_leave.leave_type] ||= 0 + leave_types_totals [user_leave.leave_type] += user_leave.fractional_leave + + user_leave.fractional_leave + + end + + + g.column name: l(:label_comments),attribute: 'comments',detach_with_id: :comments_filter do |user_leave| + user_leave.comments + end + + +if user_allowed_to_edit_leaves? + g.column name: 'Edit',in_csv: false do |user_leave| + link_to l(:link_edit), edit_user_leafe_path(user_leave) +end +g.column name: 'Delete',in_csv: false do |user_leave| + link_to l(:link_delete), user_leafe_path(user_leave), :remote => true, method: :delete, data: { confirm: l(:label_confirm) } + end +end + + + g.last_row do |number_of_columns| + + leave_types_string = [] + leave_weights_string=[] + + leave_types_totals.each_pair do |key, value| + leave_types_string << key + leave_weights_string << '%.2f' % leave_types_totals[key] + end + + + " + Total + #{leave_types_string.join('
')} + + #{leave_weights_string.join('
')} + + + " + + end + + +end -%> + + diff --git a/app/views/user_leave_reports/report.html.erb b/app/views/user_leave_reports/report.html.erb index 0838534..5f367ae 100644 --- a/app/views/user_leave_reports/report.html.erb +++ b/app/views/user_leave_reports/report.html.erb @@ -1,45 +1,27 @@ +<% content_for :header_tags do %> +<%= stylesheet_link_tag 'wice_grid', :plugin => 'redmine_wice_grid' %> +<%= stylesheet_link_tag 'grid',:plugin => 'redmine_payments' %> +<%= javascript_include_tag 'application', :plugin => 'redmine_wice_grid' %> +<%= javascript_include_tag 'ntogglework', :plugin => 'redmine_payments' %> +<% end %> + + <%= render template: "layouts/redmine_leaves" %>

<%= l(:title_leave_summary) %>

<%= render 'options' %>

-<% unless @divided_leaves.nil? || @divided_leaves.empty? %> - <%@divided_leaves.each do |key,value|%> - <%=key.to_s%> - - - - - - - - - <% if user_allowed_to_edit_leaves? %> - - <% end %> - - - - <% value.each do |user_leave|%> - - "> - - - - - - - <% if user_allowed_to_edit_leave?(user_leave) %> - - <% end %> - - <% end %> - -
<%= l(:label_name) %><%= l(:label_leave_type) %><%= l(:label_leave_date) %><%= l(:label_weight) %><%= l(:label_comments) %><%= l(:label_action) %>
<%= link_to User.find(user_leave.user_id).name, user_path(User.find(user_leave.user_id)) %><%= link_to user_leave.leave_type, :controller => 'user_leave_reports', - :action=> 'report',:user_leave_report=>{:selected_leave_types=>user_leave.leave_type, :selected_group_by =>'User'} %><%= link_to user_leave.leave_date, :controller => 'user_leave_reports', - :action=> 'report',:user_leave_report=>{:date_from=>user_leave.leave_date,:date_to=>user_leave.leave_date, :selected_group_by =>'User'} %><%= user_leave.fractional_leave %><%= user_leave.comments %> - <%= link_to l(:link_edit), edit_user_leafe_path(user_leave) %> | - <%= link_to l(:link_delete), user_leafe_path(user_leave), :remote => true, - method: :delete, data: { confirm: l(:label_confirm) }%> -
- <% end %> -<%end%> + + +<% unless @user_leave.nil? || @user_leave.empty? %> + + + + <%= render partial: 'grid' %> + + +<% end %> + + + + + diff --git a/assets/stylesheets/redmine_leaves.css b/assets/stylesheets/redmine_leaves.css index 79275bb..0001e5f 100644 --- a/assets/stylesheets/redmine_leaves.css +++ b/assets/stylesheets/redmine_leaves.css @@ -78,4 +78,5 @@ padding: 4px 10px 4px 10px; } #user-time-analytics-menu li a:hover {background:#759FCF; color:#fff;} -#user-time-analytics-menu li a.selected, #user-time-analytics-menu li a.selected:hover {background:#fff; color:#179;} \ No newline at end of file +#user-time-analytics-menu li a.selected, #user-time-analytics-menu li a.selected:hover {background:#fff; color:#179;} + diff --git a/assets/stylesheets/wice_grid.css b/assets/stylesheets/wice_grid.css index e68b60d..7861d27 100644 --- a/assets/stylesheets/wice_grid.css +++ b/assets/stylesheets/wice_grid.css @@ -160,3 +160,8 @@ input.wice-grid-save-query-field { li { line-height: 18px; } + +#export-button { + float: right; + margin-left: 5px; +} diff --git a/config/routes.rb b/config/routes.rb index 68141da..4e6522d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,7 +5,7 @@ collection { post :import } end -match '/create_time_entries' => 'user_time_checks#create_time_entries' +match '/create_time_entries' => 'user_time_checks#create_time_entries', via: :get #get "user_time_checks/home" get "user_time_checks/check_in" @@ -25,9 +25,9 @@ #match '/home', to: 'user_time_checks#home', via: 'get' -match '/check_in' => 'user_time_checks#check_in' -match '/check_out' => 'user_time_checks#check_out' -match '/checkout_timelog_success' => 'user_time_checks#checkout_timelog_success' -match '/user_leave_report' => 'user_leave_reports#report' -match '/user_leave_analytics' => 'user_leave_analytics#report' +match '/check_in' => 'user_time_checks#check_in', via: :get +match '/check_out' => 'user_time_checks#check_out', via: :get +match '/checkout_timelog_success' => 'user_time_checks#checkout_timelog_success', via: :get +match '/user_leave_report' => 'user_leave_reports#report', via: [:get, :post] +match '/user_leave_analytics' => 'user_leave_analytics#report', via: :get