Add grid for admin dashboard

This commit is contained in:
Pig Fang 2019-12-15 21:04:20 +08:00
parent 79a96ec6d8
commit 6b6cec7f43
5 changed files with 145 additions and 135 deletions

View File

@ -23,9 +23,26 @@ use Option;
class AdminController extends Controller
{
public function index()
public function index(Filter $filter)
{
$grid = [
'layout' => [
['md-6', 'md-6'],
],
'widgets' => [
[
[
'admin.widgets.dashboard.usage',
'admin.widgets.dashboard.notification',
],
['admin.widgets.dashboard.chart'],
],
],
];
$grid = $filter->apply('grid:admin.index', $grid);
return view('admin.index', [
'grid' => $grid,
'sum' => [
'users' => User::count(),
'players' => Player::count(),
@ -425,14 +442,14 @@ class AdminController extends Controller
$grid = [
'layout' => [
['md-6', 'md-6']
['md-6', 'md-6'],
],
'widgets' => [
[
['admin.widgets.status.info'],
[]
]
]
[],
],
],
];
$grid = $filter->apply('grid:admin.status', $grid);

View File

@ -3,134 +3,5 @@
{% block title %}{{ trans('general.dashboard') }}{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-6">
<div class="small-box bg-info">
<div class="inner">
<h3>{{ sum.users }}</h3>
<p>{{ trans('admin.index.total-users') }}</p>
</div>
<div class="icon"><i class="fas fa-users"></i></div>
<a href="{{ url('admin/users') }}" class="small-box-footer">
{{ trans('general.user-manage') }}&nbsp;
<i class="fa fa-arrow-circle-right"></i>
</a>
</div>
</div>
<div class="col-md-6">
<div class="small-box bg-green">
<div class="inner">
<h3>{{ sum.players }}</h3>
<p>{{ trans('admin.index.total-players') }}</p>
</div>
<div class="icon"><i class="fas fa-gamepad"></i></div>
<a href="{{ url('admin/players') }}" class="small-box-footer">
{{ trans('general.player-manage') }}&nbsp;
<i class="fa fa-arrow-circle-right"></i>
</a>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="small-box bg-purple">
<div class="inner">
<h3>{{ sum.textures }}</h3>
<p>{{ trans('admin.index.total-textures') }}</p>
</div>
<div class="icon"><i class="fas fa-file"></i></div>
</div>
</div>
<div class="col-md-6">
<div class="small-box bg-yellow">
<div class="inner">
{% if sum.storage > 1024 %}
<h3>{{ (sum.storage / 1024)|round(1) }}MB</h3>
{% else %}
<h3>{{ sum.storage }}KB</h3>
{% endif %}
<p>{{ trans('admin.index.disk-usage') }}</p>
</div>
<div class="icon"><i class="fas fa-hdd"></i></div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">{{ trans('admin.notifications.send.title') }}</h3>
</div>
<form method="post" action="{{ url('/admin/notifications/send') }}">
{{ csrf_field() }}
<div class="card-body">
{% if errors.any %}
<div class="callout callout-danger">{{ errors.first }}</div>
{% endif %}
{% set sent_result = session_pull('sentResult') %}
{% if sent_result %}
<div class="callout callout-success">{{ sent_result }}</div>
{% endif %}
<div class="form-group">
<label>{{ trans('admin.notifications.receiver.title') }}</label>
<div class="radio">
<label>
<input type="radio" name="receiver" value="all" required>
{{ trans('admin.notifications.receiver.all') }}
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="receiver" value="normal" required>
{{ trans('admin.notifications.receiver.normal') }}
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="receiver" value="uid" required>
{{ trans('admin.notifications.receiver.uid') }} &nbsp;
<input type="number" name="uid" class="form-control">
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="receiver" value="email" required>
{{ trans('admin.notifications.receiver.email') }} &nbsp;
<input type="email" name="email" class="form-control">
</label>
</div>
</div>
<div class="form-group">
<label>{{ trans('admin.notifications.title') }}</label>
<input type="text" name="title" class="form-control" required>
</div>
<div class="form-group">
<label>{{ trans('admin.notifications.content') }}</label>
<textarea name="content" class="form-control" rows="3"></textarea>
</div>
</div>
<div class="card-footer">
<input
type="submit"
value="{{ trans('general.submit') }}"
class="btn btn-primary"
>
</div>
</form>
</div>
</div>
<div class="col-md-6">
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">{{ trans('admin.index.overview') }}</h3>
</div>
<div class="card-body"><div id="chart"></div></div>
</div>
</div>
</div>
{{ include('shared.grid') }}
{% endblock %}

View File

@ -0,0 +1,6 @@
<div class="card card-primary">
<div class="card-header">
<h3 class="card-title">{{ trans('admin.index.overview') }}</h3>
</div>
<div class="card-body"><div id="chart"></div></div>
</div>

View File

@ -0,0 +1,61 @@
<div class="card">
<div class="card-header">
<h3 class="card-title">{{ trans('admin.notifications.send.title') }}</h3>
</div>
<form method="post" action="{{ url('/admin/notifications/send') }}">
{{ csrf_field() }}
<div class="card-body">
{% if errors.any %}
<div class="callout callout-danger">{{ errors.first }}</div>
{% endif %}
{% set sent_result = session_pull('sentResult') %}
{% if sent_result %}
<div class="callout callout-success">{{ sent_result }}</div>
{% endif %}
<div class="form-group">
<label>{{ trans('admin.notifications.receiver.title') }}</label>
<div class="radio">
<label>
<input type="radio" name="receiver" value="all" required>
{{ trans('admin.notifications.receiver.all') }}
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="receiver" value="normal" required>
{{ trans('admin.notifications.receiver.normal') }}
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="receiver" value="uid" required>
{{ trans('admin.notifications.receiver.uid') }} &nbsp;
<input type="number" name="uid" class="form-control">
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="receiver" value="email" required>
{{ trans('admin.notifications.receiver.email') }} &nbsp;
<input type="email" name="email" class="form-control">
</label>
</div>
</div>
<div class="form-group">
<label>{{ trans('admin.notifications.title') }}</label>
<input type="text" name="title" class="form-control" required>
</div>
<div class="form-group">
<label>{{ trans('admin.notifications.content') }}</label>
<textarea name="content" class="form-control" rows="3"></textarea>
</div>
</div>
<div class="card-footer">
<input
type="submit"
value="{{ trans('general.submit') }}"
class="btn btn-primary"
>
</div>
</form>
</div>

View File

@ -0,0 +1,55 @@
<div class="row">
<div class="col-md-6">
<div class="small-box bg-info">
<div class="inner">
<h3>{{ sum.users }}</h3>
<p>{{ trans('admin.index.total-users') }}</p>
</div>
<div class="icon"><i class="fas fa-users"></i></div>
<a href="{{ url('admin/users') }}" class="small-box-footer">
{{ trans('general.user-manage') }}&nbsp;
<i class="fa fa-arrow-circle-right"></i>
</a>
</div>
</div>
<div class="col-md-6">
<div class="small-box bg-green">
<div class="inner">
<h3>{{ sum.players }}</h3>
<p>{{ trans('admin.index.total-players') }}</p>
</div>
<div class="icon"><i class="fas fa-gamepad"></i></div>
<a href="{{ url('admin/players') }}" class="small-box-footer">
{{ trans('general.player-manage') }}&nbsp;
<i class="fa fa-arrow-circle-right"></i>
</a>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="small-box bg-purple">
<div class="inner">
<h3>{{ sum.textures }}</h3>
<p>{{ trans('admin.index.total-textures') }}</p>
</div>
<div class="icon"><i class="fas fa-file"></i></div>
</div>
</div>
<div class="col-md-6">
<div class="small-box bg-yellow">
<div class="inner">
{% if sum.storage > 1024 %}
<h3>{{ (sum.storage / 1024)|round(1) }}MB</h3>
{% else %}
<h3>{{ sum.storage }}KB</h3>
{% endif %}
<p>{{ trans('admin.index.disk-usage') }}</p>
</div>
<div class="icon"><i class="fas fa-hdd"></i></div>
</div>
</div>
</div>