mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-21 20:25:45 +08:00
FIX code review and user cache
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user