diff --git a/app/controllers/admins/projects_rank_controller.rb b/app/controllers/admins/projects_rank_controller.rb
index c4f968da4..df7598728 100644
--- a/app/controllers/admins/projects_rank_controller.rb
+++ b/app/controllers/admins/projects_rank_controller.rb
@@ -1,16 +1,77 @@
class Admins::ProjectsRankController < Admins::BaseController
-
+ before_action :get_timeable_key_names, only:[:index]
def index
- @rank_date = rank_date
- deleted_data = $redis_cache.smembers("v2-project-rank-deleted")
- $redis_cache.zrem("v2-project-rank-#{rank_date}", deleted_data) unless deleted_data.blank?
- @date_rank = $redis_cache.zrevrange("v2-project-rank-#{rank_date}", 0, -1, withscores: true)
+ puts @names_array
+ unless @names_array.blank?
+ $redis_cache.zunionstore("admin-days-project-rank", @names_array)
+ deleted_data = $redis_cache.smembers("v2-project-rank-deleted")
+ $redis_cache.zrem("admin-days-project-rank", deleted_data) unless deleted_data.blank?
+ @date_rank = $redis_cache.zrevrange("admin-days-project-rank", 0, -1, withscores: true)
+ @date_rank = @date_rank.map do |i|
+ visits = 0
+ watchers = 0
+ praises = 0
+ forks = 0
+ issues = 0
+ pullrequests = 0
+ commits = 0
+ (begin_date..end_date).to_a.each do |d|
+ result = $redis_cache.hgetall("v2-project-statistic:#{i[0]}-#{d}")
+ visits += result["visits"].to_i
+ watchers += result["watchers"].to_i
+ praises += result["praises"].to_i
+ forks += result["forks"].to_i
+ issues += result["issues"].to_i
+ pullrequests += result["pullrequests"].to_i
+ commits += result["commits"].to_i
+ end
+ i + [visits,watchers,praises,forks,issues,pullrequests,commits]
+ end
+ case params[:sort_by]
+ when 'visits'
+ @date_rank = @date_rank.sort{|i| i[2]}
+ when 'watchers'
+ @date_rank = @date_rank.sort{|i| i[3]}
+ when 'praises'
+ @date_rank = @date_rank.sort{|i| i[4]}
+ when 'forks'
+ @date_rank = @date_rank.sort{|i| i[5]}
+ when 'issues'
+ @date_rank = @date_rank.sort{|i| i[6]}
+ when 'pullrequests'
+ @date_rank = @date_rank.sort{|i| i[7]}
+ when 'commits'
+ @date_rank = @date_rank.sort{|i| i[8]}
+ else
+ @date_rank = @date_rank.sort{|i| i[1]}
+ end
+ if params[:sort_direction].blank? || params[:sort_direction].to_s.downcase == "desc"
+ @date_rank = @date_rank.reverse
+ end
+ else
+ @date_rank = []
+ end
end
private
- def rank_date
- params.fetch(:date, Date.today.to_s)
+ def begin_date
+ params.fetch(:begin_date, Date.today.to_s)
+ end
+
+ def end_date
+ params.fetch(:end_date, Date.today.to_s)
+ end
+
+ def get_timeable_key_names
+ begin
+ @names_array = []
+ (begin_date..end_date).to_a.each do |i|
+ @names_array << "v2-project-rank-#{i}"
+ end
+ rescue
+ @names_array = []
+ end
end
end
\ No newline at end of file
diff --git a/app/views/admins/projects_rank/index.html.erb b/app/views/admins/projects_rank/index.html.erb
index d3a7926b7..3ea7b8ae5 100644
--- a/app/views/admins/projects_rank/index.html.erb
+++ b/app/views/admins/projects_rank/index.html.erb
@@ -6,69 +6,27 @@
-
-
-
-
- 排名 |
- 项目 |
- 得分 |
- 访问数 |
- 关注数 |
- 点赞数 |
- fork数 |
- 疑修数 |
- 合并请求数 |
- 提交数 |
-
-
-
- <% @date_rank.each_with_index do |item, index| %>
-
- <%= index + 1%> |
- <% project_common = $redis_cache.hgetall("v2-project-common:#{item[0]}") %>
- <% owner_common = $redis_cache.hgetall("v2-owner-common:#{project_common["owner_id"]}")%>
-
- /<%= project_common["identifier"]%>">
- <%= "#{owner_common["name"]}/#{project_common["name"]}" %>
-
- |
-
- <%= item[1] %> |
- <% project_date_statistic_key = "v2-project-statistic:#{item[0]}-#{@rank_date}"%>
- <% if $redis_cache.exists(project_date_statistic_key)%>
- <% visits = $redis_cache.hget(project_date_statistic_key, "visits") %>
- <%= visits || 0 %> |
- <% watchers = $redis_cache.hget(project_date_statistic_key, "watchers") %>
- <%= watchers || 0 %> |
- <% praises = $redis_cache.hget(project_date_statistic_key, "praises") %>
- <%= praises || 0 %> |
- <% forks = $redis_cache.hget(project_date_statistic_key, "forks") %>
- <%= forks || 0 %> |
- <% issues = $redis_cache.hget(project_date_statistic_key, "issues") %>
- <%= issues || 0 %> |
- <% pullrequests = $redis_cache.hget(project_date_statistic_key, "pullrequests") %>
- <%= pullrequests || 0 %> |
- <% commits = $redis_cache.hget(project_date_statistic_key, "commits") %>
- <%= commits || 0 %> |
- <% else %>
- 暂无数据 |
- <% end %>
-
- <% end %>
-
-
+
+ <%= render partial: 'admins/projects_rank/shared/data_list', locals: { date_rank: @date_rank } %>
\ No newline at end of file
diff --git a/app/views/admins/projects_rank/index.js.erb b/app/views/admins/projects_rank/index.js.erb
new file mode 100644
index 000000000..7e0f0e5fa
--- /dev/null
+++ b/app/views/admins/projects_rank/index.js.erb
@@ -0,0 +1 @@
+$('.project-rank-list-container').html("<%= j( render partial: 'admins/projects_rank/shared/data_list', locals: { date_rank: @date_rank } ) %>");
\ No newline at end of file
diff --git a/app/views/admins/projects_rank/shared/_data_list.html.erb b/app/views/admins/projects_rank/shared/_data_list.html.erb
new file mode 100644
index 000000000..06b41b45e
--- /dev/null
+++ b/app/views/admins/projects_rank/shared/_data_list.html.erb
@@ -0,0 +1,39 @@
+
+
+
+ 排名 |
+ 项目 |
+ 得分 |
+ <%= sort_tag('访问数', name: 'visits', path: admins_projects_rank_index_path) %> |
+ <%= sort_tag('关注数', name: 'watchers', path: admins_projects_rank_index_path) %> |
+ <%= sort_tag('点赞数', name: 'praises', path: admins_projects_rank_index_path) %> |
+ <%= sort_tag('fork数', name: 'forks', path: admins_projects_rank_index_path) %> |
+ <%= sort_tag('疑修数', name: 'issues', path: admins_projects_rank_index_path) %> |
+ <%= sort_tag('合并请求数', name: 'pullrequests', path: admins_projects_rank_index_path) %> |
+ <%= sort_tag('提交数', name: 'commits', path: admins_projects_rank_index_path) %> |
+
+
+
+ <% date_rank.each_with_index do |item, index| %>
+
+ <%= index + 1%> |
+ <% project_common = $redis_cache.hgetall("v2-project-common:#{item[0]}") %>
+ <% owner_common = $redis_cache.hgetall("v2-owner-common:#{project_common["owner_id"]}")%>
+
+ /<%= project_common["identifier"]%>">
+ <%= "#{owner_common["name"]}/#{project_common["name"]}" %>
+
+ |
+
+ <%= item[1] %> |
+ <%= item[2] %> |
+ <%= item[3] %> |
+ <%= item[4] %> |
+ <%= item[5] %> |
+ <%= item[6] %> |
+ <%= item[7] %> |
+ <%= item[8] %> |
+
+ <% end %>
+
+
\ No newline at end of file