FIX code review and user cache

This commit is contained in:
Jasder
2020-10-30 15:47:09 +08:00
parent ece6cba4a4
commit 1bc935ffd5
7 changed files with 167 additions and 50 deletions

View File

@@ -30,7 +30,7 @@ module ProjectsHelper
def json_response(project, user)
# repo = project.repository
repo = Repository.select(:id, :mirror_url).find_by(project: project)
repo = Repository.includes(:mirror).select(:id, :mirror_url).find_by(project: project)
tmp_json = {}
unless project.common?
@@ -41,20 +41,6 @@ module ProjectsHelper
first_sync: repo.first_sync?
})
end
author =
if project.educoder?
{
login: project.project_educoder.owner,
name: project.project_educoder.owner,
image_url: project.project_educoder.image_url
}
else
{
login: project.owner.login,
name: project.owner.real_name,
image_url: url_to_avatar(project.owner)
}
end
tmp_json = tmp_json.merge({
identifier: render_identifier(project),
@@ -64,12 +50,28 @@ module ProjectsHelper
repo_id: repo.id,
open_devops: (user.blank? || user.is_a?(AnonymousUser)) ? false : project.open_devops?,
type: project.numerical_for_project_type,
author: author
author: render_owner(project)
}).compact
render json: tmp_json
end
def render_owner(project)
if project.educoder?
{
login: project.project_educoder.owner,
name: project.project_educoder.owner,
image_url: project.project_educoder.image_url
}
else
{
login: @owner.login,
name: @owner.real_name,
image_url: url_to_avatar(@owner)
}
end
end
def render_identifier(project)
project.educoder? ? project.project_educoder&.repo_name&.split('/')[1] : project.identifier
end

View File

@@ -1,4 +1,143 @@
module TagChosenHelper
def get_associated_data(project)
issue_comment_users_array = []
cost_time_array = []
all_issues = []
{
"assign_user": render_cache_collaborators(project),
"tracker": render_cache_trackers,
"issue_status": render_cache_issue_statuses,
"priority": render_cache_issue_priorities,
"issue_version": render_cache_milestones(project),
"start_date": "",
"due_date": "",
"joins_users": issue_comment_users_array,
"cost_time_users": cost_time_array,
# "total_cost_time": Time.at(all_cost_time).utc.strftime('%H h %M min %S s'),
# "be_depended_issues": be_depended_issues_array,
# "depended_issues":depended_issues_array,
# "estimated_hours": issue_info[7],
"done_ratio": render_complete_percentage,
"issue_tag": render_issue_tags(project),
"issue_type": render_issue_species,
"all_issues": all_issues
}
end
def render_cache_trackers
cache_key = "all_trackers/#{Tracker.maximum('id')}"
Rails.cache.fetch(cache_key) do
Tracker.select(:id, :name, :position).collect do |event|
{
id: event.id,
name: event.name,
position: event.position,
is_chosen: '0'
}
end
end
end
def render_cache_issue_statuses
cache_key = "all_issue_statuses/#{IssueStatus.maximum('id')}"
Rails.cache.fetch(cache_key) do
IssueStatus.select(:id, :name, :position).collect do |event|
{
id: event.id,
name: event.name,
position: event.position,
is_chosen: '0'
}
end
end
end
def render_cache_issue_priorities
cache_key = "all_issue_priorities/#{IssuePriority.maximum('id')}"
Rails.cache.fetch(cache_key) do
IssuePriority.select(:id, :name, :position).collect do |event|
{
id: event.id,
name: event.name,
position: event.position,
is_chosen: '0'
}
end
end
end
def render_complete_percentage
completion_nums = %w(0 10 20 30 40 50 60 70 80 90 100)
completion_nums.collect do |event|
{
id: event.to_i,
name: event + "%",
is_chosen: '0'
}
end
end
def render_issue_species
species = %W(普通 悬赏)
species.collect do |event|
{
id: event.to_i + 1,
token: nil,
is_chosen: '0'
}
end
end
def render_issue_tags(project)
# project.issue_tags.last&.cache_key
cache_key = "all_issue_tags/#{project.issue_tags.maximum('updated_at')}"
Rails.cache.fetch(cache_key) do
project.issue_tags.select(:id, :name, :color).collect do |event|
{
id: event.id,
name: event.name,
color: event.color,
is_chosen: '0'
}
end
end
end
def render_cache_milestones(project)
cache_key = "all_milestones/#{project.versions.maximum('updated_on')}"
Rails.cache.fetch(cache_key) do
project.versions.select(:id, :name, :status).collect do |event|
{
id: event.id,
name: event.name,
status: event.status,
is_chosen: '0'
}
end
end
end
def render_cache_collaborators(project)
cache_key = "all_collaborators/#{project.members.maximum('created_on')}"
Rails.cache.fetch(cache_key) do
project.members.includes(:user).collect do |event|
{
id: event.user&.id,
name: event.user&.show_real_name,
avatar_url: url_to_avatar(event.user),
is_chosen: '0'
}
end
end
end
def issue_left_chosen(project,issue_id)
issue_info = Array.new(11)
@@ -205,4 +344,4 @@ module TagChosenHelper
# be_depended_issues_array
# end
end
end