gitlink-forgeplus/app/views/admins/users_rank/index.html.erb

74 lines
3.6 KiB
Plaintext

<% define_admin_breadcrumbs do %>
<% add_admin_breadcrumb('用户排行榜', admins_path) %>
<% end %>
<div class="box search-form-container user-list-form">
<%= form_tag(admins_users_rank_index_path, method: :get, class: 'form-inline search-form flex-1', id: 'user-rank-date-form') do %>
<div class="form-group mr-2">
<label for="status">日期:</label>
<% dates_array = (0..30).to_a.map { |item| [(Date.today-item.days).to_s, (Date.today-item.days).to_s] } %>
<%= select_tag(:date, options_for_select(dates_array, params[:date]), class:"form-control",id: "user-rank-date-select")%>
</div>
<% end %>
</div>
<div class="box admin-list-container project-language-list-container">
<table class="table table-hover text-center subject-list-table">
<thead class="thead-light">
<tr>
<th width="20%">排名</th>
<th width="20%">用户</th>
<th width="20%">得分</th>
<th width="20%">影响力</th>
<th width="20%">贡献度</th>
<th width="20%">活跃度</th>
<th width="20%">项目经验</th>
<th width="20%">语言能力</th>
</tr>
</thead>
<tbody>
<% @date_rank.each_with_index do |item, index| %>
<tr class="">
<td><%= index + 1%></td>
<% owner_common = $redis_cache.hgetall("v2-owner-common:#{item[0]}")%>
<td>
<a target="_blank" href="/<%= owner_common["login"] %>">
<%= owner_common["name"] %>
</a>
</td>
<% user_date_statistic_key = "v2-user-statistic:#{item[0]}-#{@rank_date}"%>
<% follow_count = $redis_cache.hget(user_date_statistic_key, "follow-count") || 0 %>
<% pullrequest_count = $redis_cache.hget(user_date_statistic_key, "pullrequest-count") || 0 %>
<% issues_count = $redis_cache.hget(user_date_statistic_key, "issue-count") || 0 %>
<% project_count = $redis_cache.hget(user_date_statistic_key, "project-count") || 0 %>
<% fork_count = $redis_cache.hget(user_date_statistic_key, "fork-count") || 0 %>
<% project_watchers_count = $redis_cache.hget(user_date_statistic_key, "project-watcher-count") || 0 %>
<% project_praises_count = $redis_cache.hget(user_date_statistic_key, "project-praise-count") || 0 %>
<% project_language = $redis_cache.hget(user_date_statistic_key, "project-language") %>
<% project_languages_count = project_language.nil? || project_language == "{}" ? 0 : JSON.parse(project_language).length %>
<% influence = (60.0 + follow_count.to_i / (follow_count.to_i + 20.0) * 40.0).to_i %>
<% contribution = (60.0 + pullrequest_count.to_i / (pullrequest_count.to_i + 20.0) * 40.0).to_i %>
<% activity = (60.0 + issues_count.to_i / (issues_count.to_i + 80.0) * 40.0).to_i %>
<% experience = 10 * project_count.to_i + 5 * fork_count.to_i + project_watchers_count.to_i + project_praises_count.to_i %>
<% experience = (60.0 + experience / (experience + 100.0) * 40.0).to_i %>
<% language = (60.0 + project_languages_count.to_i / (project_languages_count.to_i + 5.0) * 40.0).to_i %>
<% score = influence+ contribution + activity + experience + language%>
<td><%= score %></td>
<td><%= influence%></td>
<td><%= contribution%></td>
<td><%= activity%></td>
<td><%= experience%></td>
<td><%= language%></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<script>
$("#user-rank-date-select").on('change', function() {
$("#user-rank-date-form").submit()
});
</script>