Merge pull request '后台管理更新' (#238) from gitlink_admin_feature into standalone_develop

This commit is contained in:
2023-12-19 15:26:05 +08:00
10 changed files with 218 additions and 92 deletions

View File

@@ -5,70 +5,34 @@
<div class="box search-form-container user-list-form">
<%= form_tag(admins_projects_rank_index_path, method: :get, class: 'form-inline search-form flex-1', id: 'project-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: "project-rank-date-select")%>
<div class="input-group">
<span class="input-group-text">开始日期</span>
<input class="form-control datetimepicker" type="text" name="begin_date" value="<%= params[:begin_date] || Date.today.to_s%>" aria-label="选择日期">
</div>
<div class="input-group">
<span class="input-group-text">结束日期</span>
<input class="form-control datetimepicker" type="text" name="end_date" value="<%= params[:end_date] || Date.today.to_s%>" aria-label="选择日期">
</div>
<% end %>
<%= link_to '导出', "/项目活跃度排行.xls", class: 'btn btn-primary mr-3' %>
</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="30%">项目</th>
<th width="10%">得分</th>
<th width="10%">访问数</th>
<th width="10%">关注数</th>
<th width="10%">点赞数</th>
<th width="10%">fork数</th>
<th width="10%">疑修数</th>
<th width="10%">合并请求数</th>
<th width="10%">提交数</th>
</tr>
</thead>
<tbody>
<% @date_rank.each_with_index do |item, index| %>
<tr class="">
<td><%= index + 1%></td>
<% project_common = $redis_cache.hgetall("v2-project-common:#{item[0]}") %>
<% owner_common = $redis_cache.hgetall("v2-owner-common:#{project_common["owner_id"]}")%>
<td>
<a href="/<%= owner_common["login"] %>/<%= project_common["identifier"]%>">
<%= "#{owner_common["name"]}/#{project_common["name"]}" %>
</a>
</td>
<td><%= item[1] %></td>
<% 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") %>
<td><%= visits || 0 %></td>
<% watchers = $redis_cache.hget(project_date_statistic_key, "watchers") %>
<td><%= watchers || 0 %></td>
<% praises = $redis_cache.hget(project_date_statistic_key, "praises") %>
<td><%= praises || 0 %></td>
<% forks = $redis_cache.hget(project_date_statistic_key, "forks") %>
<td><%= forks || 0 %></td>
<% issues = $redis_cache.hget(project_date_statistic_key, "issues") %>
<td><%= issues || 0 %></td>
<% pullrequests = $redis_cache.hget(project_date_statistic_key, "pullrequests") %>
<td><%= pullrequests || 0 %></td>
<% commits = $redis_cache.hget(project_date_statistic_key, "commits") %>
<td><%= commits || 0 %></td>
<% else %>
<td colspan="7">暂无数据</td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
<div class="box admin-list-container project-rank-list-container">
<%= render partial: 'admins/projects_rank/shared/data_list', locals: { statistics: @statistics } %>
</div>
<script>
$("#project-rank-date-select").on('change', function() {
$(".datetimepicker").on('change', function() {
$("#project-rank-date-form").submit()
});
$(".datetimepicker").on('change', function() {
$("#project-rank-date-form").submit()
});
$('.datetimepicker').datetimepicker({
language: 'zh-CN', // 中文语言包
autoclose: 1, // 选中日期后自动关闭
format: 'yyyy-mm-dd', // 日期格式
minView: "month", // 最小日期显示单元,这里最小显示月份界面,即可以选择到日
todayBtn: 1, // 显示今天按钮
todayHighlight: 1, // 显示今天高亮
});
</script>

View File

@@ -0,0 +1 @@
$('.project-rank-list-container').html("<%= j( render partial: 'admins/projects_rank/shared/data_list', locals: { statistics: @statistics } ) %>");

View File

@@ -0,0 +1,37 @@
<table class="table table-hover text-center subject-list-table">
<thead class="thead-light">
<tr>
<th width="20%">排名</th>
<th width="30%">项目</th>
<th width="10%">得分</th>
<th width="10%"><%= sort_tag('访问数', name: 'visits', path: admins_projects_rank_index_path) %></th>
<th width="10%"><%= sort_tag('关注数', name: 'watchers', path: admins_projects_rank_index_path) %></th>
<th width="10%"><%= sort_tag('点赞数', name: 'praises', path: admins_projects_rank_index_path) %></th>
<th width="10%"><%= sort_tag('fork数', name: 'forks', path: admins_projects_rank_index_path) %></th>
<th width="10%"><%= sort_tag('疑修数', name: 'issues', path: admins_projects_rank_index_path) %></th>
<th width="10%"><%= sort_tag('合并请求数', name: 'pullrequests', path: admins_projects_rank_index_path) %></th>
<th width="10%"><%= sort_tag('提交数', name: 'commits', path: admins_projects_rank_index_path) %></th>
</tr>
</thead>
<tbody>
<% statistics.each_with_index do |item, index| %>
<tr class="">
<td><%= index + 1%></td>
<td>
<a href="<%= "/#{item&.project&.owner&.login}/#{item&.project&.identifier}"%>">
<%= "#{item&.project&.owner&.nickname}/#{item&.project&.name}" %>
</a>
</td>
<td><%= item&.score %></td>
<td><%= item&.visits %></td>
<td><%= item&.watchers %></td>
<td><%= item&.praises %></td>
<td><%= item&.forks %></td>
<td><%= item&.issues %></td>
<td><%= item&.pullrequests %></td>
<td><%= item&.commits %></td>
</tr>
<% end %>
</tbody>
</table>

View File

@@ -13,13 +13,7 @@
<!-- Sidebar Links -->
<ul class="list-unstyled components">
<li><%= sidebar_item(admins_path, '概览', icon: 'dashboard', controller: 'admins-dashboards') %></li>
<li>
<%= sidebar_item_group('#rank-submenu', '排行榜', icon: 'calendar') do %>
<li><%= sidebar_item(admins_users_rank_index_path, '用户排行榜', icon: 'user', controller: 'admins-users_rank') %></li>
<li><%= sidebar_item(admins_projects_rank_index_path, '项目排行榜', icon: 'database', controller: 'admins-projects_rank') %></li>
<% end %>
</li>
<li><%= sidebar_item(admins_path, '数据概览', icon: 'dashboard', controller: 'admins-dashboards') %></li>
<li>
<%= sidebar_item_group('#user-submenu', '用户', icon: 'user') do %>
<li><%= sidebar_item(admins_users_path, '用户列表', icon: 'user', controller: 'admins-users') %></li>
@@ -27,15 +21,23 @@
<% end %>
</li>
<li>
<%= sidebar_item_group('#pages-submenu', '站点管理', icon: 'cogs') do %>
<li><%= sidebar_item(admins_identity_verifications_path, '身份审核列表', icon: 'user', controller: 'admins-identity_verifications') %></li>
<li><%= sidebar_item(admins_site_pages_path, '用户站点列表', icon: 'sitemap', controller: 'admins-site_pages') %></li>
<li><%= sidebar_item(admins_page_themes_path, '站点主题配置', icon: 'cogs', controller: 'admins-page_themes') %></li>
<%= sidebar_item_group('#setting-submenu', '用户支持', icon: 'cogs') do %>
<li><%= sidebar_item(admins_faqs_path, 'FAQ', icon: 'question-circle', controller: 'admins-faqs') %></li>
<li><%= sidebar_item(admins_nps_path, 'NPS用户调研', icon: 'question-circle', controller: 'admins-nps') %></li>
<li><%= sidebar_item(admins_feedbacks_path, '用户反馈', icon: 'question-circle', controller: 'admins-feedbacks') %></li>
<li><%= sidebar_item(admins_system_notifications_path, '系统公告配置', icon: 'bell', controller: 'admins-system_notifications') %></li>
<% end %>
</li>
<li><%= sidebar_item(admins_laboratories_path, '导航栏配置', icon: 'cloud', controller: 'admins-laboratories') %></li>
<li>
<%= sidebar_item_group('#setting-system', '开发者配置', icon: 'wrench') do %>
<li><%= sidebar_item(admins_sites_path, 'setting接口配置', icon: 'deaf', controller: 'admins-sites') %></li>
<li><%= sidebar_item(admins_edu_settings_path, '全局变量配置', icon: 'pencil-square', controller: 'admins-edu_settings') %></li>
<li><%= sidebar_item(admins_message_templates_path, '消息模版配置', icon: 'folder', controller: 'admins-message_templates') %></li>
<% end %>
</li>
<li><%= sidebar_item(admins_reversed_keywords_path, '禁用词管理', icon: 'key', controller: 'admins-reversed_keywords') %></li>
<li>
<%= sidebar_item_group('#projects-submenu', '开源项目', icon: 'database') do %>
<li><%= sidebar_item(admins_projects_path, '项目列表', icon: 'database', controller: 'admins-projects') %></li>
@@ -45,9 +47,6 @@
<li><%= sidebar_item(admins_project_ignores_path, '忽略文件', icon: 'git', controller: 'admins-project_ignores') %></li>
<% end %>
</li>
<li><%= sidebar_item(admins_reversed_keywords_path, '系统保留关键词', icon: 'key', controller: 'admins-reversed_keywords') %></li>
<li><%= sidebar_item(admins_laboratories_path, '云上实验室', icon: 'cloud', controller: 'admins-laboratories') %></li>
<li>
<%= sidebar_item_group('#setting-index', '首页配置', icon: 'file') do %>
<li><%= sidebar_item(admins_topic_banners_path, 'banner管理', icon: 'image', controller: 'admins-topic-banners') %></li>
@@ -71,25 +70,26 @@
<% end %>
</li>
<li>
<%= sidebar_item_group('#setting-submenu', '网站建设', icon: 'cogs') do %>
<li><%= sidebar_item(admins_faqs_path, 'FAQ', icon: 'question-circle', controller: 'admins-faqs') %></li>
<li><%= sidebar_item(admins_nps_path, 'NPS用户调研', icon: 'question-circle', controller: 'admins-nps') %></li>
<li><%= sidebar_item(admins_feedbacks_path, '用户反馈', icon: 'question-circle', controller: 'admins-feedbacks') %></li>
<%= sidebar_item_group('#pages-submenu', '个人站点管理', icon: 'cogs') do %>
<li><%= sidebar_item(admins_identity_verifications_path, '身份审核列表', icon: 'user', controller: 'admins-identity_verifications') %></li>
<li><%= sidebar_item(admins_site_pages_path, '用户站点列表', icon: 'sitemap', controller: 'admins-site_pages') %></li>
<li><%= sidebar_item(admins_page_themes_path, '站点主题配置', icon: 'cogs', controller: 'admins-page_themes') %></li>
<% end %>
</li>
<li>
<%= sidebar_item_group('#setting-system', '系统配置', icon: 'wrench') do %>
<li><%= sidebar_item(admins_sites_path, 'setting接口配置', icon: 'deaf', controller: 'admins-sites') %></li>
<li><%= sidebar_item(admins_edu_settings_path, '全局变量配置', icon: 'pencil-square', controller: 'admins-edu_settings') %></li>
<li><%= sidebar_item(admins_system_notifications_path, '系统通知配置', icon: 'bell', controller: 'admins-system_notifications') %></li>
<li><%= sidebar_item(admins_message_templates_path, '消息模版配置', icon: 'folder', controller: 'admins-message_templates') %></li>
<%= sidebar_item_group('#rank-submenu', '活跃度排行', icon: 'calendar') do %>
<li><%= sidebar_item(admins_users_rank_index_path, '用户活跃度排行', icon: 'user', controller: 'admins-users_rank') %></li>
<li><%= sidebar_item(admins_projects_rank_index_path, '项目活跃度排行', icon: 'database', controller: 'admins-projects_rank') %></li>
<% end %>
</li>
<%= render_admin_statistics_item %>
<li>
<%= sidebar_item('/admins/sidekiq', '定时任务', icon: 'bell', controller: 'root') %>
</li>
<%= render_admin_statistics_item %>
<li><%= sidebar_item('/', '返回主站', icon: 'sign-out', controller: 'root') %></li>
</ul>