Option to auto-expand groups when components are down. Closes #1602
This commit is contained in:
@@ -11,6 +11,11 @@
|
||||
|
||||
namespace CachetHQ\Cachet\Bus\Commands\ComponentGroup;
|
||||
|
||||
/**
|
||||
* This is the add component group command.
|
||||
*
|
||||
* @author James Brooks <james@alt-three.com>
|
||||
*/
|
||||
final class AddComponentGroupCommand
|
||||
{
|
||||
/**
|
||||
@@ -30,7 +35,7 @@ final class AddComponentGroupCommand
|
||||
/**
|
||||
* Is the component group collapsed?
|
||||
*
|
||||
* @var bool
|
||||
* @var int
|
||||
*/
|
||||
public $collapsed;
|
||||
|
||||
@@ -42,7 +47,7 @@ final class AddComponentGroupCommand
|
||||
public $rules = [
|
||||
'name' => 'required|string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
'collapsed' => 'int|between:0,3',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -50,7 +55,7 @@ final class AddComponentGroupCommand
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $order
|
||||
* @param bool $collapsed
|
||||
* @param int $collapsed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -13,6 +13,11 @@ namespace CachetHQ\Cachet\Bus\Commands\ComponentGroup;
|
||||
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
|
||||
/**
|
||||
* This is the update component group command.
|
||||
*
|
||||
* @author James Brooks <james@alt-three.com>
|
||||
*/
|
||||
final class UpdateComponentGroupCommand
|
||||
{
|
||||
/**
|
||||
@@ -39,7 +44,7 @@ final class UpdateComponentGroupCommand
|
||||
/**
|
||||
* Is the component group collapsed?
|
||||
*
|
||||
* @var bool
|
||||
* @var int
|
||||
*/
|
||||
public $collapsed;
|
||||
|
||||
@@ -51,7 +56,7 @@ final class UpdateComponentGroupCommand
|
||||
public $rules = [
|
||||
'name' => 'string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
'collapsed' => 'int|between:0,3',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -60,7 +65,7 @@ final class UpdateComponentGroupCommand
|
||||
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
|
||||
* @param string $name
|
||||
* @param int $order
|
||||
* @param bool $collapsed
|
||||
* @param int $collapsed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -82,11 +82,11 @@ class DemoSeederCommand extends Command
|
||||
[
|
||||
'name' => 'Websites',
|
||||
'order' => 1,
|
||||
'collapsed' => false,
|
||||
'collapsed' => 0,
|
||||
], [
|
||||
'name' => 'Alt Three',
|
||||
'order' => 2,
|
||||
'collapsed' => true,
|
||||
'collapsed' => 1,
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ class ComponentGroup extends Model implements HasPresenter
|
||||
protected $casts = [
|
||||
'name' => 'string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
'collapsed' => 'int',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -48,7 +48,7 @@ class ComponentGroup extends Model implements HasPresenter
|
||||
public $rules = [
|
||||
'name' => 'required|string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
'collapsed' => 'int',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -92,6 +92,16 @@ class ComponentGroup extends Model implements HasPresenter
|
||||
return $this->hasMany(Component::class, 'group_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the incidents relation.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasManyThrough
|
||||
*/
|
||||
public function incidents()
|
||||
{
|
||||
return $this->hasManyThrough(Incident::class, Component::class, 'id', 'component_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all of the enabled components.
|
||||
*
|
||||
|
||||
@@ -63,7 +63,25 @@ class ComponentGroupPresenter extends BasePresenter implements Arrayable
|
||||
*/
|
||||
public function collapse_class()
|
||||
{
|
||||
return $this->wrappedObject->collapsed ? 'ion-ios-plus-outline' : 'ion-ios-minus-outline';
|
||||
return $this->is_collapsed() ? 'ion-ios-plus-outline' : 'ion-ios-minus-outline';
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the group should be collapsed.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function is_collapsed()
|
||||
{
|
||||
if ($this->wrappedObject->collapsed === 0) {
|
||||
return false;
|
||||
} elseif ($this->wrappedObject->collapsed === 1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $this->wrappedObject->components->filter(function ($component) {
|
||||
return $component->status > 1;
|
||||
})->count() === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user