diff --git a/library/Icinga/Chart/Donut.php b/library/Icinga/Chart/Donut.php index 48b28f267..9d2a2a838 100644 --- a/library/Icinga/Chart/Donut.php +++ b/library/Icinga/Chart/Donut.php @@ -23,11 +23,11 @@ class Donut protected $labelBigUrl; /** - * Whether the big label shall be eye-catching + * The state the big label shall indicate * - * @var bool + * @var string|null */ - protected $labelBigEyeCatching = true; + protected $labelBigState = 'critical'; /** * Small label in the lower part of the donuts hole @@ -194,7 +194,7 @@ class Donut */ public function getLabelBigEyeCatching() { - return $this->labelBigEyeCatching; + return $this->labelBigState !== null; } /** @@ -206,7 +206,31 @@ class Donut */ public function setLabelBigEyeCatching($labelBigEyeCatching = true) { - $this->labelBigEyeCatching = $labelBigEyeCatching; + $this->labelBigState = $labelBigEyeCatching ? 'critical' : null; + + return $this; + } + + /** + * Get the state the big label shall indicate + * + * @return string|null + */ + public function getLabelBigState() + { + return $this->labelBigState; + } + + /** + * Set the state the big label shall indicate + * + * @param string|null $labelBigState + * + * @return $this + */ + public function setLabelBigState($labelBigState) + { + $this->labelBigState = $labelBigState; return $this; } @@ -332,9 +356,9 @@ class Donut 'attributes' => array( 'aria-label' => $labelBig . ' ' . $labelSmall, 'href' => $this->getLabelBigUrl() ? $this->getLabelBigUrl()->getAbsoluteUrl() : null, - 'class' => $this->labelBigEyeCatching - ? 'donut-label-big donut-label-big-eye-catching' - : 'donut-label-big' + 'class' => $this->labelBigState === null + ? 'donut-label-big' + : 'donut-label-big state-' . $this->labelBigState ), 'content' => $this->shortenLabel($labelBig) ); diff --git a/modules/monitoring/application/controllers/TacticalController.php b/modules/monitoring/application/controllers/TacticalController.php index 181341865..1545d1093 100644 --- a/modules/monitoring/application/controllers/TacticalController.php +++ b/modules/monitoring/application/controllers/TacticalController.php @@ -92,9 +92,13 @@ class TacticalController extends Controller ->addSlice($summary->services_unknown_unhandled, array('class' => 'slice-state-unknown')) ->addSlice($summary->services_pending, array('class' => 'slice-state-pending')) ->addSlice($summary->services_pending_not_checked, array('class' => 'slice-state-not-checked')) - ->setLabelBig($summary->services_critical_unhandled) - ->setLabelBigEyeCatching($summary->services_critical_unhandled > 0) - ->setLabelSmall($this->translate('Services Critical')); + ->setLabelBig($summary->services_critical_unhandled ?: $summary->services_unknown_unhandled) + ->setLabelBigState($summary->services_critical_unhandled > 0 ? 'critical' : ( + $summary->services_unknown_unhandled > 0 ? 'unknown' : null + )) + ->setLabelSmall($summary->services_critical_unhandled > 0 || $summary->services_unknown_unhandled < 1 + ? $this->translate('Services Critical') + : $this->translate('Services Unknown')); $this->view->hostStatusSummaryChart = $hostSummaryChart ->setLabelBigUrl($this->view->filteredUrl( diff --git a/public/css/icinga/widgets.less b/public/css/icinga/widgets.less index 0408120bc..d8788a505 100644 --- a/public/css/icinga/widgets.less +++ b/public/css/icinga/widgets.less @@ -602,6 +602,7 @@ ul.tree li a.error:hover { .donut-label-big { .var(color, gray-light); + .fg-stateful(); font-size: 6em; line-height: 0; text-anchor: middle; @@ -610,10 +611,6 @@ ul.tree li a.error:hover { } } -.donut-label-big-eye-catching { - .var(color, color-critical); -} - .donut-label-small { .var(fill, text-color); font-size: 1.2em;