Merge pull request #1919 from travelton/group-dashboard-components
Component Grouping in Dashboard
This commit is contained in:
@@ -13,6 +13,7 @@ namespace CachetHQ\Cachet\Http\Controllers\Dashboard;
|
|||||||
|
|
||||||
use CachetHQ\Cachet\Integrations\Feed;
|
use CachetHQ\Cachet\Integrations\Feed;
|
||||||
use CachetHQ\Cachet\Models\Component;
|
use CachetHQ\Cachet\Models\Component;
|
||||||
|
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||||
use CachetHQ\Cachet\Models\Incident;
|
use CachetHQ\Cachet\Models\Incident;
|
||||||
use CachetHQ\Cachet\Models\Subscriber;
|
use CachetHQ\Cachet\Models\Subscriber;
|
||||||
use Illuminate\Routing\Controller;
|
use Illuminate\Routing\Controller;
|
||||||
@@ -67,6 +68,9 @@ class DashboardController extends Controller
|
|||||||
$components = Component::orderBy('order')->get();
|
$components = Component::orderBy('order')->get();
|
||||||
$incidents = $this->getIncidents();
|
$incidents = $this->getIncidents();
|
||||||
$subscribers = $this->getSubscribers();
|
$subscribers = $this->getSubscribers();
|
||||||
|
$usedComponentGroups = Component::enabled()->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id');
|
||||||
|
$componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
|
||||||
|
$ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
|
||||||
|
|
||||||
$entries = null;
|
$entries = null;
|
||||||
if ($feed = $this->feed->latest()) {
|
if ($feed = $this->feed->latest()) {
|
||||||
@@ -78,7 +82,9 @@ class DashboardController extends Controller
|
|||||||
->withComponents($components)
|
->withComponents($components)
|
||||||
->withIncidents($incidents)
|
->withIncidents($incidents)
|
||||||
->withSubscribers($subscribers)
|
->withSubscribers($subscribers)
|
||||||
->withEntries($entries);
|
->withEntries($entries)
|
||||||
|
->withComponentGroups($componentGroups)
|
||||||
|
->withUngroupedComponents($ungroupedComponents);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+10
-1
@@ -1,4 +1,4 @@
|
|||||||
.componet-inline-update {
|
.component-inline-update {
|
||||||
@extend .text-right;
|
@extend .text-right;
|
||||||
padding-top: 8px;
|
padding-top: 8px;
|
||||||
label {
|
label {
|
||||||
@@ -7,4 +7,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.component-group-name{
|
||||||
|
font-size: 18px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.component-group-other{
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
@import "modules/stats";
|
@import "modules/stats";
|
||||||
|
|||||||
@@ -15,38 +15,22 @@
|
|||||||
<div class="alert alert-info hidden" id="update-alert">{!! trans('cachet.system.update') !!}</div>
|
<div class="alert alert-info hidden" id="update-alert">{!! trans('cachet.system.update') !!}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<h4 class="sub-header">{{ trans('dashboard.components.component_statuses') }}</h4>
|
<h4 class="sub-header">{{ trans('dashboard.components.component_statuses') }}</h4>
|
||||||
<div class="panel panel-default">
|
<div class="section-components">
|
||||||
<div class="list-group">
|
@if(!$component_groups->isEmpty() || !$ungrouped_components->isEmpty())
|
||||||
@forelse($components as $component)
|
@include('dashboard.partials.components')
|
||||||
<div class="list-group-item">
|
@else
|
||||||
<form class='component-inline form-vertical' data-messenger="{{trans('dashboard.components.edit.success')}}">
|
<ul class="list-group components">
|
||||||
<div class="row striped-list-item">
|
<li class="list-group-item">
|
||||||
<div class="col-lg-4 col-md-3 col-sm-12">
|
<a href="{{ route('dashboard.components.add') }}">{{ trans('dashboard.components.add.message') }}</a>
|
||||||
<h4>{{ $component->name }}</h4>
|
</li>
|
||||||
</div>
|
</ul>
|
||||||
<div class="col-lg-8 col-md-9 col-sm-12 radio-items componet-inline-update">
|
@endif
|
||||||
@foreach(trans('cachet.components.status') as $statusID => $status)
|
</div>
|
||||||
<div class="radio-inline">
|
</div>
|
||||||
<label>
|
|
||||||
<input type="radio" name="status" value="{{ $statusID }}" {{ (int) $component->status === $statusID ? 'checked' : null }}>
|
|
||||||
{{ $status }}
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="hidden" name="component_id" value="{{ $component->id }}">
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
@empty
|
|
||||||
<div class="list-group-item"><a href="{{ route('dashboard.components.add') }}">{{ trans('dashboard.components.add.message') }}</a></div>
|
|
||||||
@endforelse
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<li class="list-group-item {{ $component->group_id ? "sub-component" : "component" }}">
|
||||||
|
<form class='component-inline form-vertical' data-messenger="{{trans('dashboard.components.edit.success')}}">
|
||||||
|
<div class="row striped-list-item">
|
||||||
|
<div class="col-lg-4 col-md-3 col-sm-12">
|
||||||
|
<h5 class="{{ $component->status_color }}">{{ $component->name }}</h5>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 col-md-9 col-sm-12 radio-items component-inline-update">
|
||||||
|
@foreach(trans('cachet.components.status') as $statusID => $status)
|
||||||
|
<div class="radio-inline">
|
||||||
|
<label>
|
||||||
|
<input type="radio" name="status" value="{{ $statusID }}" {{ (int) $component->status === $statusID ? 'checked' : null }}>
|
||||||
|
{{ $status }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="component_id" value="{{ $component->id }}">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
@if($component_groups->count() > 0)
|
||||||
|
@foreach($component_groups as $componentGroup)
|
||||||
|
@if($componentGroup->enabled_components->count() > 0)
|
||||||
|
<ul class="list-group components">
|
||||||
|
<li class="list-group-item group-name">
|
||||||
|
<i class="{{ $componentGroup->collapse_class }} group-toggle"></i>
|
||||||
|
<span class="component-group-name">{{ $componentGroup->name }}</span>
|
||||||
|
</li>
|
||||||
|
<div class="group-items {{ $componentGroup->is_collapsed ? "hide" : null }}">
|
||||||
|
@foreach($componentGroup->enabled_components()->orderBy('order')->get() as $component)
|
||||||
|
@include('dashboard.partials.component', compact($component))
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if($ungrouped_components->count() > 0)
|
||||||
|
<ul class="list-group components">
|
||||||
|
@if($component_groups->count() > 0)
|
||||||
|
<li class="list-group-item group-name">
|
||||||
|
<span class="component-group-other">{{ trans('cachet.components.group.other') }}</span>
|
||||||
|
</li>
|
||||||
|
@endif
|
||||||
|
@foreach($ungrouped_components as $component)
|
||||||
|
@include('dashboard.partials.component', compact($component))
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
Reference in New Issue
Block a user