diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index fc2351b3ce..31b5ce75da 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -1638,3 +1638,56 @@ function get_device_name($device) return $ret_str; } + +/** + * Returns state generic label from value with optional text + */ + +function get_state_label($state_value, $state_text_param = null) +{ + switch ($state_value) { + case 0: // OK + $state_text = (is_null($state_text_param) ? "OK": $state_text_param); + $state_label = "label-success"; + break; + case 1: // Warning + $state_text = (is_null($state_text_param) ? "Warning": $state_text_param); + $state_label = "label-warning"; + break; + case 2: // Critical + $state_text = (is_null($state_text_param) ? "Critical": $state_text_param); + $state_label = "label-danger"; + break; + case 3:// Unknown + default: + $state_text = (is_null($state_text_param) ? "Unknown": $state_text_param); + $state_label = "label-default"; + } + $state = "$state_text"; + return $state; +} + +/** + * Get state label color + */ +function get_sensor_label_color($sensor) +{ + $current_label_color = "label-success"; + if (is_null($sensor)) { + return "label-unknown"; + } + if (!is_null($sensor['sensor_limit_warn']) && $sensor['sensor_current'] > $sensor['sensor_limit_warn']) { + $current_label_color = "label-warning"; + } + if (!is_null($sensor['sensor_limit_low_warn']) && $sensor['sensor_current'] < $sensor['sensor_limit_low_warn']) { + $current_label_color = "label-warning"; + } + if (!is_null($sensor['sensor_limit']) && $sensor['sensor_current'] > $sensor['sensor_limit']) { + $current_label_color = "label-danger"; + } + if (!is_null($sensor['sensor_limit_low']) && $sensor['sensor_current'] < $sensor['sensor_limit_low']) { + $current_label_color = "label-danger"; + } + + return $current_label_color; +} diff --git a/html/includes/table/sensors-common.php b/html/includes/table/sensors-common.php index 354c8b33f0..39adafe164 100644 --- a/html/includes/table/sensors-common.php +++ b/html/includes/table/sensors-common.php @@ -111,12 +111,25 @@ foreach (dbFetchRows($sql, $param) as $sensor) { $sensor['sensor_descr'] = substr($sensor['sensor_descr'], 0, 48); + if ($graph_type == 'sensor_state') { + // If we have a state, let's display a label with textual state translation + $state_translation = array(); + $state_translation = dbFetchRows('SELECT * FROM state_translations as ST, sensors_to_state_indexes as SSI WHERE ST.state_index_id=SSI.state_index_id AND SSI.sensor_id = ? AND ST.state_value = ? ', array($sensor['sensor_id'], $sensor['sensor_current'])); + + //$current_label = get_state_label_color($sensor); + $sensor_current = get_state_label($sensor['state_generic_value'], (!empty($state_translation['0']['state_descr'])) ? $state_translation[0]['state_descr'] . " (".$sensor['sensor_current'].")" : $sensor['sensor_current']); + } else { + // we have another sensor + $current_label = get_sensor_label_color($sensor); + $sensor_current = "".(format_si($sensor['sensor_current'])+0)." $unit"; + } + $response[] = array( 'hostname' => generate_device_link($sensor), 'sensor_descr' => overlib_link($link, $sensor['sensor_descr'], $overlib_content, null), 'graph' => overlib_link($link_graph, $sensor_minigraph, $overlib_content, null), 'alert' => $alert, - 'sensor_current' => $sensor['sensor_current'].$unit, + 'sensor_current' => $sensor_current, 'sensor_limit_low' => is_null($sensor['sensor_limit_low']) ? '-' : round($sensor['sensor_limit_low'], 2).$unit, 'sensor_limit' => is_null($sensor['sensor_limit']) ? '-' : round($sensor['sensor_limit'], 2).$unit, ); diff --git a/html/pages/device/health/sensors.inc.php b/html/pages/device/health/sensors.inc.php index d462270e1e..2f136701e4 100644 --- a/html/pages/device/health/sensors.inc.php +++ b/html/pages/device/health/sensors.inc.php @@ -3,6 +3,10 @@ $row = 1; foreach (dbFetchRows('SELECT * FROM `sensors` WHERE `sensor_class` = ? AND `device_id` = ? ORDER BY `sensor_descr`', array($class, $device['device_id'])) as $sensor) { + $state_translation = array(); + if (($graph_type == 'sensor_state')) { + $state_translation = dbFetchRows('SELECT * FROM state_translations as ST, sensors_to_state_indexes as SSI WHERE ST.state_index_id=SSI.state_index_id AND SSI.sensor_id = ? AND ST.state_value = ? ', array($sensor['sensor_id'], $sensor['sensor_current'])); + } if (!is_integer($row / 2)) { $row_colour = $config['list_colour']['even']; } else { @@ -15,13 +19,38 @@ foreach (dbFetchRows('SELECT * FROM `sensors` WHERE `sensor_class` = ? AND `devi $sensor_descr = $sensor['sensor_descr']; } - $sensor_current = format_si($sensor['sensor_current']).$unit; - $sensor_limit = format_si($sensor['sensor_limit']).$unit; - $sensor_limit_low = format_si($sensor['sensor_limit_low']).$unit; + if (($graph_type == 'sensor_state') && !empty($state_translation['0']['state_descr'])) { + $sensor_current = get_state_label($sensor['state_generic_value'], $state_translation[0]['state_descr'] . " (".$sensor['sensor_current'].")"); + } else { + $current_label = get_sensor_label_color($sensor); + $sensor_current = "".(format_si($sensor['sensor_current'])+0)." $unit"; + } + + $sensor_limit = (format_si($sensor['sensor_limit'])+0)." $unit"; + $sensor_limit_low = (format_si($sensor['sensor_limit_low'])+0)." $unit"; + $sensor_limit_warn = (format_si($sensor['sensor_limit_warn'])+0)." $unit"; + $sensor_limit_low_warn = (format_si($sensor['sensor_limit_low_warn'])+0)." $unit"; + echo "