forked from Gitlink/forgeplus
后台统计优化
This commit is contained in:
commit
e6e1b56309
|
@ -1,10 +1,33 @@
|
|||
class Admins::DashboardsController < Admins::BaseController
|
||||
def index
|
||||
@active_user_count = User.where(last_login_on: today).count
|
||||
@weekly_active_user_count = User.where(last_login_on: current_week).count
|
||||
@month_active_user_count = User.where(last_login_on: current_month).count
|
||||
# 用户活跃数
|
||||
day_user_ids = CommitLog.where(created_at: today).pluck(:project_id).uniq
|
||||
weekly_user_ids = CommitLog.where(created_at: current_week).pluck(:project_id).uniq
|
||||
month_user_ids = CommitLog.where(created_at: current_month).pluck(:project_id).uniq
|
||||
@active_user_count = User.where(last_login_on: today).or(User.where(id: day_user_ids)).count
|
||||
@weekly_active_user_count = User.where(last_login_on: current_week).or(User.where(id: weekly_user_ids)).count
|
||||
@month_active_user_count = User.where(last_login_on: current_month).or(User.where(id: month_user_ids)).count
|
||||
user_ids = User.where(created_on: pre_week).pluck(:id).uniq
|
||||
weekly_keep_user_count = User.where(id: user_ids).where(last_login_on: current_week).count
|
||||
@weekly_keep_rate = format("%.2f", weekly_keep_user_count > 0 ? weekly_keep_user_count / weekly_keep_user_count : 0)
|
||||
|
||||
@new_user_count = User.where(created_on: current_month).count
|
||||
# 新用户注册数
|
||||
@day_new_user_count = User.where(created_on: today).count
|
||||
@weekly_new_user_count = User.where(created_on: current_week).count
|
||||
@month_new_user_count = User.where(created_on: current_month).count
|
||||
|
||||
# 活跃项目数
|
||||
day_project_ids = CommitLog.where(created_at: today).pluck(:project_id).uniq
|
||||
weekly_project_ids = CommitLog.where(created_at: current_week).pluck(:project_id).uniq
|
||||
month_project_ids = CommitLog.where(created_at: current_month).pluck(:project_id).uniq
|
||||
@day_active_project_count = Project.where(updated_on: today).or(Project.where(id: day_project_ids)).count
|
||||
@weekly_active_project_count = Project.where(updated_on: current_week).or(Project.where(id: weekly_project_ids)).count
|
||||
@month_active_project_count = Project.where(updated_on: current_month).or(Project.where(id: month_project_ids)).count
|
||||
|
||||
# 新增项目数
|
||||
@day_new_project_count = User.where(created_on: today).count
|
||||
@weekly_new_project_count = User.where(created_on: current_week).count
|
||||
@month_new_project_count = User.where(created_on: current_month).count
|
||||
end
|
||||
|
||||
def month_active_user
|
||||
|
@ -48,4 +71,8 @@ class Admins::DashboardsController < Admins::BaseController
|
|||
def current_month
|
||||
30.days.ago.beginning_of_day..Time.now.end_of_day
|
||||
end
|
||||
|
||||
def pre_week
|
||||
14.days.ago.beginning_of_day..7.days.ago.beginning_of_day
|
||||
end
|
||||
end
|
|
@ -2,217 +2,57 @@
|
|||
<% add_admin_breadcrumb('概览', admins_path) %>
|
||||
<% end %>
|
||||
|
||||
<div class="header bg-gradient-primary pb-8 pt-md-8">
|
||||
<div class="container-fluid">
|
||||
<div class="header-body">
|
||||
<!-- Card stats -->
|
||||
<div class="row">
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<div class="card card-stats mb-4 mb-xl-0">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase text-muted mb-0">当日活跃用户</h5>
|
||||
<span class="h2 font-weight-bold mb-0"><%= @active_user_count %></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape rounded-circle shadow">
|
||||
<i class="fa fa-users"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <p class="mt-3 mb-0 text-muted text-sm">-->
|
||||
<!-- <span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 3.48%</span>-->
|
||||
<!-- <span class="text-nowrap">Since last month</span>-->
|
||||
<!-- </p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<div class="card card-stats mb-4 mb-xl-0">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase text-muted mb-0">7天内活跃用户数</h5>
|
||||
<span class="h2 font-weight-bold mb-0"><%= @weekly_active_user_count %></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape rounded-circle shadow">
|
||||
<i class="fa fa-users"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <p class="mt-3 mb-0 text-muted text-sm">-->
|
||||
<!-- <span class="text-danger mr-2"><i class="fas fa-arrow-down"></i> 3.48%</span>-->
|
||||
<!-- <span class="text-nowrap">Since last week</span>-->
|
||||
<!-- </p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<div class="card card-stats mb-4 mb-xl-0">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase text-muted mb-0">30天内活跃用户数</h5>
|
||||
<span class="h2 font-weight-bold mb-0"><%= @month_active_user_count %></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape rounded-circle shadow">
|
||||
<i class="fa fa-users"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <p class="mt-3 mb-0 text-muted text-sm">-->
|
||||
<!-- <span class="text-warning mr-2"><i class="fas fa-arrow-down"></i> 1.10%</span>-->
|
||||
<!-- <span class="text-nowrap">Since yesterday</span>-->
|
||||
<!-- </p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<div class="card card-stats mb-4 mb-xl-0">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase text-muted mb-0">30天内新增用户数</h5>
|
||||
<span class="h2 font-weight-bold mb-0"><%= @new_user_count %></span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape rounded-circle shadow">
|
||||
<i class="fa fa-user-plus"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <p class="mt-3 mb-0 text-muted text-sm">-->
|
||||
<!-- <span class="text-success mr-2"><i class="fas fa-arrow-up"></i> 12%</span>-->
|
||||
<!-- <span class="text-nowrap">Since last month</span>-->
|
||||
<!-- </p>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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%">30日内</th>
|
||||
<th width="20%">周用户留存率</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="">
|
||||
<td>
|
||||
<button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#5475fb;border-radius:4px;border-color: #5475fb;">活跃用户</button>
|
||||
</td>
|
||||
<td><%=@active_user_count %></td>
|
||||
<td><%=@weekly_active_user_count %></td>
|
||||
<td><%=@month_active_user_count %></td>
|
||||
<td><%="#{@weekly_keep_rate.to_f * 100 }%" %></td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#36cfc9;border-radius:4px; border-color: #36cfc9;">新注册用户</button>
|
||||
</td>
|
||||
<td><%=@day_new_user_count %></td>
|
||||
<td><%=@weekly_new_user_count %></td>
|
||||
<td><%=@month_new_user_count %></td>
|
||||
<td><%="--" %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#f89422;border-radius:4px; border-color: #f89422;">活跃项目</button>
|
||||
</td>
|
||||
<td><%=@day_active_project_count %></td>
|
||||
<td><%=@weekly_new_project_count %></td>
|
||||
<td><%=@month_new_project_count %></td>
|
||||
<td><%="--" %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#9d74ff;border-radius:4px; border-color: #9d74ff;">新注册项目</button>
|
||||
</td>
|
||||
<td><%=@day_new_project_count %></td>
|
||||
<td><%=@weekly_new_user_count %></td>
|
||||
<td><%=@month_new_user_count %></td>
|
||||
<td><%="--" %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid mt--7 pie-statistic">
|
||||
<div class="row mt-5">
|
||||
<div class="col-xl-8 mb-5 mb-xl-0">
|
||||
<div class="card shadow">
|
||||
<!-- <div class="card-header border-0">-->
|
||||
<!-- <div class="row align-items-center">-->
|
||||
<!-- <h5 class="mb-0">近7天评测次数</h5>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="table-responsive">-->
|
||||
<!-- <div id="evaluate-pie" class="pie"></div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xl-4">
|
||||
<div class="card shadow">
|
||||
<div class="card-header border-0">
|
||||
<div class="row align-items-center">
|
||||
<h5 class="mb-0">30天内新增用户</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<div id="month-active-user" class="pie"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--<div class="container-fluid mt--7">-->
|
||||
<!-- <div class="row mt-5">-->
|
||||
<!-- <div class="col-xl-8 mb-5 mb-xl-0">-->
|
||||
<!-- <div class="card shadow">-->
|
||||
<!-- <div class="card-header border-0">-->
|
||||
<!-- <div class="row align-items-center">-->
|
||||
<!-- <div class="col">-->
|
||||
<!-- <h3 class="mb-0">Page visits</h3>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="col text-right">-->
|
||||
<!-- <a href="#!" class="btn btn-sm btn-primary">Test</a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="table-responsive">-->
|
||||
<!-- <table class="table align-items-center table-flush">-->
|
||||
<!-- <thead class="thead-light">-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th scope="col">Test</th>-->
|
||||
<!-- <th scope="col">Test</th>-->
|
||||
<!-- <th scope="col">Test</th>-->
|
||||
<!-- <th scope="col">Test</th>-->
|
||||
<!-- </tr>-->
|
||||
<!-- </thead>-->
|
||||
<!-- <tbody>-->
|
||||
<%# 5.times do %>
|
||||
<!-- <tr>-->
|
||||
<!-- <th scope="row">/test/</th>-->
|
||||
<!-- <td>4,569</td>-->
|
||||
<!-- <td>340</td>-->
|
||||
<!-- <td>-->
|
||||
<!-- <i class="fas fa-arrow-up text-success mr-3"></i> 46,53%-->
|
||||
<!-- </td>-->
|
||||
<!-- </tr>-->
|
||||
<%# end %>
|
||||
<!-- </tbody>-->
|
||||
<!-- </table>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="col-xl-4">-->
|
||||
<!-- <div class="card shadow">-->
|
||||
<!-- <div class="card-header border-0">-->
|
||||
<!-- <div class="row align-items-center">-->
|
||||
<!-- <div class="col">-->
|
||||
<!-- <h3 class="mb-0">Test</h3>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="col text-right">-->
|
||||
<!-- <a href="#!" class="btn btn-sm btn-primary">Test</a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="table-responsive">-->
|
||||
<!-- <table class="table align-items-center table-flush">-->
|
||||
<!-- <thead class="thead-light">-->
|
||||
<!-- <tr>-->
|
||||
<!-- <th scope="col">Test</th>-->
|
||||
<!-- <th scope="col">Test</th>-->
|
||||
<!-- <th scope="col"></th>-->
|
||||
<!-- </tr>-->
|
||||
<!-- </thead>-->
|
||||
<!-- <tbody>-->
|
||||
<%# 5.times do %>
|
||||
<!-- <tr>-->
|
||||
<!-- <th scope="row">-->
|
||||
<!-- Test-->
|
||||
<!-- </th>-->
|
||||
<!-- <td>-->
|
||||
<!-- 1,480-->
|
||||
<!-- </td>-->
|
||||
<!-- <td>-->
|
||||
<!-- <div class="d-flex align-items-center">-->
|
||||
<!-- <span class="mr-2">60%</span>-->
|
||||
<!-- <div>-->
|
||||
<!-- <div class="progress">-->
|
||||
<!-- <div class="progress-bar bg-gradient-danger" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </td>-->
|
||||
<!-- </tr>-->
|
||||
<%# end %>
|
||||
<!-- </tbody>-->
|
||||
<!-- </table>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!--</div>-->
|
||||
<div id="project-language-modals">
|
||||
</div>
|
Loading…
Reference in New Issue