Allow component groups to be collapsed by default. Closes #1398

This commit is contained in:
James Brooks
2016-01-29 16:02:14 +00:00
parent d907d1eecc
commit da7af1fca0
16 changed files with 141 additions and 34 deletions
@@ -27,14 +27,22 @@ final class AddComponentGroupCommand
*/
public $order;
/**
* Is the component group collapsed?
*
* @var bool
*/
public $collapsed;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'required|string',
'order' => 'int',
'name' => 'required|string',
'order' => 'int',
'collapsed' => 'bool',
];
/**
@@ -42,12 +50,14 @@ final class AddComponentGroupCommand
*
* @param string $name
* @param int $order
* @param bool $collapsed
*
* @return void
*/
public function __construct($name, $order)
public function __construct($name, $order, $collapsed)
{
$this->name = $name;
$this->order = (int) $order;
$this->collapsed = $collapsed;
}
}
@@ -36,14 +36,22 @@ final class UpdateComponentGroupCommand
*/
public $order;
/**
* Is the component group collapsed?
*
* @var bool
*/
public $collapsed;
/**
* The validation rules.
*
* @var string[]
*/
public $rules = [
'name' => 'string',
'order' => 'int',
'name' => 'string',
'order' => 'int',
'collapsed' => 'bool',
];
/**
@@ -52,13 +60,15 @@ final class UpdateComponentGroupCommand
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
* @param string $name
* @param int $order
* @param bool $collapsed
*
* @return void
*/
public function __construct(ComponentGroup $group, $name, $order)
public function __construct(ComponentGroup $group, $name, $order, $collapsed)
{
$this->group = $group;
$this->name = $name;
$this->order = (int) $order;
$this->collapsed = $collapsed;
}
}
@@ -27,8 +27,9 @@ class AddComponentGroupCommandHandler
public function handle(AddComponentGroupCommand $command)
{
$group = ComponentGroup::create([
'name' => $command->name,
'order' => $command->order,
'name' => $command->name,
'order' => $command->order,
'collapsed' => $command->collapsed,
]);
event(new ComponentGroupWasAddedEvent($group));
@@ -26,13 +26,30 @@ class UpdateComponentGroupCommandHandler
public function handle(UpdateComponentGroupCommand $command)
{
$group = $command->group;
$group->update([
'name' => $command->name,
'order' => $command->order,
]);
$group->update($this->filter($command));
event(new ComponentGroupWasUpdatedEvent($group));
return $group;
}
/**
* Filter the command data.
*
* @param \CachetHQ\Cachet\Bus\Commands\ComponentGroup\UpdateComponentGroupCommand $command
*
* @return array
*/
protected function filter(UpdateComponentGroupCommand $command)
{
$params = [
'name' => $command->name,
'order' => $command->order,
'collapsed' => $command->collapsed,
];
return array_filter($params, function ($val) {
return $val !== null;
});
}
}