Added Component badges/shields. Closes #1313

This commit is contained in:
James Brooks
2016-02-01 17:14:38 +00:00
committed by James Brooks
parent 7b05d1d1b6
commit 37898bee60
5 changed files with 135 additions and 24 deletions

View File

@@ -11,8 +11,10 @@
namespace CachetHQ\Cachet\Http\Controllers;
use AltThree\Badger\Facades\Badger;
use CachetHQ\Cachet\Dates\DateFactory;
use CachetHQ\Cachet\Http\Controllers\Api\AbstractApiController;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\Incident;
use CachetHQ\Cachet\Models\Metric;
use CachetHQ\Cachet\Repositories\Metric\MetricRepository;
@@ -21,8 +23,10 @@ use GrahamCampbell\Binput\Facades\Binput;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\View;
use Jenssegers\Date\Date;
use McCool\LaravelAutoPresenter\Facades\AutoPresenter;
class StatusPageController extends AbstractApiController
{
@@ -153,4 +157,41 @@ class StatusPageController extends AbstractApiController
'items' => $metricData,
]);
}
/**
* Generates a Shield (badge) for the component.
*
* @param \CachetHQ\Cachet\Models\Component $component
*
* @return \Illuminate\Http\Response
*/
public function showComponentBadge(Component $component)
{
$component = AutoPresenter::decorate($component);
$color = null;
switch ($component->status_color) {
case 'reds':
$color = Config::get('setting.style_reds', '#ff6f6f');
break;
case 'blues':
$color = Config::get('setting.style_blues', '#3498db');
break;
case 'greens':
$color = Config::get('setting.style_greens', '#7ED321');
break;
case 'yellows':
$color = Config::get('setting.style_yellows', '#F7CA18');
break;
}
$badge = Badger::generate(
$component->name,
$component->human_status,
substr($color, 1),
Binput::get('style', 'flat-square')
);
return Response::make($badge, 200, ['Content-Type' => 'image/svg+xml']);
}
}