Commit 983ef81a by Hiếu Lê

Merge branch 'feature/DAILY-update-checkbox-function' into 'master'

Add an option to select a team. Bugs are not displayed in the issue tracker if they are not associated with a user story. Additionally, fix the bug related to CSV downloads.

See merge request !18
parents dd0ca323 1baf7f06
Pipeline #1630 failed with stages
in 0 seconds
...@@ -13,20 +13,14 @@ class WorkflowReportController < ApplicationController ...@@ -13,20 +13,14 @@ class WorkflowReportController < ApplicationController
def show_daily_report def show_daily_report
date = params[:date].split('-') date = params[:date].split('-')
result = []
report = {} report = {}
if params[:user_ids].blank? if params[:user_ids].blank?
project_id = Project.find_by(name: params[:team]).id project_id = Project.find_by(name: params[:team]).id
project_ids = Project.visible.active.where(parent_id: project_id).pluck(:id).push(project_id) project_ids = Project.visible.active.where(parent_id: project_id).pluck(:id).push(project_id)
users_by_role = Project.find(project_id).users_by_role users = User.where(id: params['user']&.map(&:to_i))
users_by_role.each do |role, users| users.each do |u|
users.each do |u| report["#{u.firstname} #{u.lastname}"] = WorkflowReportTimeEntries.query_time_entry(u.id, date[0].to_i, date[1].to_i, date[2].to_i, project_ids)
result << { id: u.id, fullname: "#{u.firstname} #{u.lastname}" } unless role.name.in?(%w[Manager JP TeamLead])
end
end
result.each do |user|
report[user[:fullname]] = WorkflowReportTimeEntries.query_time_entry(user[:id], date[0].to_i, date[1].to_i, date[2].to_i, project_ids)
end end
else else
user_ids = params[:user_ids].gsub(/[^0-9,]/, '').split(',') user_ids = params[:user_ids].gsub(/[^0-9,]/, '').split(',')
...@@ -69,6 +63,21 @@ class WorkflowReportController < ApplicationController ...@@ -69,6 +63,21 @@ class WorkflowReportController < ApplicationController
end end
end end
def show_members
project_id = Project.find_by(name: params[:team]).id
users_by_role = Project.find(project_id).users_by_role
user_list = []
users_by_role.each do |role, users|
users.each do |user|
user_list << user unless role.name.in?(%w[Manager JP TeamLead])
end
end
respond_to do |format|
format.js { render 'build_member_checkbox', locals: { user_list: user_list.uniq } }
end
end
private private
def require_xhr_request def require_xhr_request
......
- user_list.each do |user|
.checkbox-item
= label_tag "user_#{user.id}", user
= check_box_tag 'user[]', user.id, true, id: "user_#{user.id}"
$("#member_checkbox").html("<%= escape_javascript(render partial: 'checkbox_list', locals: { user_list: user_list } ) %>")
...@@ -11,7 +11,9 @@ fieldset.box.tabular ...@@ -11,7 +11,9 @@ fieldset.box.tabular
= form_tag workflow_report_daily_export_path, method: :get, remote: true, id: 'export-form' do = form_tag workflow_report_daily_export_path, method: :get, remote: true, id: 'export-form' do
p p
= label :team, 'Team' = label :team, 'Team'
= select_tag :team, options_for_select(@team_options), { prompt: 'Select team', disabled: ('true' unless user_ids.blank?) } = select_tag :team, options_for_select(@team_options), { prompt: 'Select team', disabled: ('true' unless user_ids.blank?), class: 'select-team' }
p
#member_checkbox
p p
= label :team, 'Date' = label :team, 'Date'
= date_field_tag :date, Date.current = date_field_tag :date, Date.current
......
...@@ -66,11 +66,7 @@ window.addEventListener('load', function () { ...@@ -66,11 +66,7 @@ window.addEventListener('load', function () {
i === 0 ? rowText.push(text_report) : rowText.push('') i === 0 ? rowText.push(text_report) : rowText.push('')
} }
} else { } else {
if (text_report.includes(',') || text_report.includes('\n')) { rowText.push(`"${text_report.replace(/"/g, '')}"`)
rowText.push(`"${text_report}"`);
} else {
rowText.push(text_report);
}
} }
currentColspan = Math.max(1, currentColspan - 1) currentColspan = Math.max(1, currentColspan - 1)
}); });
...@@ -88,3 +84,11 @@ $(document).on('click', 'td.notes', function () { ...@@ -88,3 +84,11 @@ $(document).on('click', 'td.notes', function () {
$(this).find('p.note_est').toggleClass('w-100') $(this).find('p.note_est').toggleClass('w-100')
} }
}) })
$(document).on('change', 'select.select-team', function () {
$.ajax({
type: 'GET',
url: '/workflow_report/daily/select-team',
data: {team: this.value}
})
})
...@@ -153,3 +153,25 @@ td.notes { ...@@ -153,3 +153,25 @@ td.notes {
.h-fit { .h-fit {
height: fit-content !important; height: fit-content !important;
} }
#member_checkbox {
display: flex;
flex-wrap: wrap;
}
#member_checkbox > .checkbox-item > label {
width: fit-content;
margin-left: 0;
padding-top: 0;
text-align: unset;
padding-right: 4px;
}
#member_checkbox > .checkbox-item > input[type='checkbox'] {
position: relative;
top: -4px;
}
#member_checkbox > .checkbox-item {
margin-right: 16px;
}
...@@ -7,3 +7,4 @@ get 'workflow_report/daily', to: 'workflow_report#index_daily_report' ...@@ -7,3 +7,4 @@ get 'workflow_report/daily', to: 'workflow_report#index_daily_report'
get 'workflow_report/daily/export', to: 'workflow_report#show_daily_report' get 'workflow_report/daily/export', to: 'workflow_report#show_daily_report'
get 'workflow_report/time_entry', to: 'workflow_report#index_time_entry' get 'workflow_report/time_entry', to: 'workflow_report#index_time_entry'
get 'workflow_report/time_entry/export', to: 'workflow_report#export_time_entry' get 'workflow_report/time_entry/export', to: 'workflow_report#export_time_entry'
get 'workflow_report/daily/select-team', to: 'workflow_report#show_members'
...@@ -131,10 +131,8 @@ module WorkflowReport ...@@ -131,10 +131,8 @@ module WorkflowReport
result[3] << arr_issue.map { |issue| issue.time_entries.where("time_entries.spent_on BETWEEN ? AND ?", date_from, date_to).sum(:hours) }.sum.round(2) result[3] << arr_issue.map { |issue| issue.time_entries.where("time_entries.spent_on BETWEEN ? AND ?", date_from, date_to).sum(:hours) }.sum.round(2)
request = '' request = ''
arr_issue.each do |issue| arr_issue.each do |issue|
if issue.tracker_id == USER_STORY_TRACKER_ID jp = issue.custom_values.find_by(custom_field_id: JP_REQUEST_FIELD_ID)&.value
jp = issue.custom_values.find_by(custom_field_id: JP_REQUEST_FIELD_ID)&.value request = jp if jp.present? && request.blank?
request = jp if jp.present?
end
end end
result[2] << request result[2] << request
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment