mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
fix: top widget multiple instances (#4757)
This commit is contained in:
@@ -15,23 +15,11 @@
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/**
|
||||
* Top devices
|
||||
* @author Sergiusz Paprzycki
|
||||
* @copyright 2015 Sergiusz Paprzycki <serek@walcz.net>
|
||||
* @copyright 2016 Cercel Valentin <crc@nuamchefazi.ro>
|
||||
* @license GPL
|
||||
* @package LibreNMS
|
||||
* @subpackage Widgets
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
$sql = dbFetchRow('SELECT `settings` FROM `users_widgets` WHERE `user_id` = ? AND `widget_id` = ?', array($_SESSION["user_id"], '11'));
|
||||
$widget_mode = json_decode($sql['settings'], true);
|
||||
|
||||
$top_query = $widget_mode['top_query'];
|
||||
$sort_order = $widget_mode['sort_order'];
|
||||
$top_query = $widget_settings['top_query'];
|
||||
$sort_order = $widget_settings['sort_order'];
|
||||
|
||||
$selected_sort_asc = '';
|
||||
$selected_sort_desc = '';
|
||||
@@ -87,6 +75,9 @@ switch ($top_query) {
|
||||
$graph_params = array('tab' => 'graphs', 'group' => 'poller');
|
||||
}
|
||||
|
||||
$widget_settings['device_count'] = $widget_settings['device_count'] > 0 ? $widget_settings['device_count'] : 5;
|
||||
$widget_settings['time_interval'] = $widget_settings['time_interval'] > 0 ? $widget_settings['time_interval'] : 15;
|
||||
|
||||
if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
$common_output[] = '
|
||||
<form class="form" onsubmit="widget_settings(this); return false;">
|
||||
@@ -129,7 +120,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
<label for="graph_type" class="control-label availability-map-widget-header">Number of Devices</label>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" name="device_count" id="input_count_' . $unique_id . '" placeholder="ie. 5" value="' . $widget_settings['device_count'] . '">
|
||||
<input class="form-control" onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" name="device_count" id="input_count_' . $unique_id . '" value="' . $widget_settings['device_count'] . '">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -137,7 +128,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
<label for="graph_type" class="control-label availability-map-widget-header">Time interval (minutes)</label>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" name="time_interval" id="input_time_' . $unique_id . '" placeholder="ie. 15" value="' . $widget_settings['time_interval'] . '">
|
||||
<input class="form-control" onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" name="time_interval" id="input_time_' . $unique_id . '" value="' . $widget_settings['time_interval'] . '">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -165,7 +156,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
AND ( p.ifInOctets_rate > 0
|
||||
OR p.ifOutOctets_rate > 0 )
|
||||
GROUP BY d.device_id
|
||||
ORDER BY total '.$sort_order.'
|
||||
ORDER BY total ' . $sort_order . '
|
||||
LIMIT :count
|
||||
';
|
||||
} else {
|
||||
@@ -178,7 +169,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
AND ( p.ifInOctets_rate > 0
|
||||
OR p.ifOutOctets_rate > 0 )
|
||||
GROUP BY d.device_id
|
||||
ORDER BY total '.$sort_order.'
|
||||
ORDER BY total ' . $sort_order . '
|
||||
LIMIT :count
|
||||
';
|
||||
}
|
||||
@@ -187,7 +178,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
$query = 'SELECT `uptime`, `hostname`, `last_polled`, `device_id`
|
||||
FROM `devices`
|
||||
WHERE unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `uptime` '.$sort_order.'
|
||||
ORDER BY `uptime` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
} else {
|
||||
$query = 'SELECT `uptime`, `hostname`, `last_polled`, `d`.`device_id`
|
||||
@@ -195,7 +186,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `P`.`user_id` = :user
|
||||
AND `P`.`device_id` = `d`.`device_id`
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `uptime` '.$sort_order.'
|
||||
ORDER BY `uptime` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
}
|
||||
} elseif ($top_query === 'ping') {
|
||||
@@ -203,7 +194,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
$query = 'SELECT `last_ping_timetaken`, `hostname`, `last_polled`, `device_id`
|
||||
FROM `devices`
|
||||
WHERE unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `last_ping_timetaken` '.$sort_order.'
|
||||
ORDER BY `last_ping_timetaken` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
} else {
|
||||
$query = 'SELECT `last_ping_timetaken`, `hostname`, `last_polled`, `d`.`device_id`
|
||||
@@ -211,7 +202,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `P`.`user_id` = :user
|
||||
AND `P`.`device_id` = `d`.`device_id`
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `last_ping_timetaken` '.$sort_order.'
|
||||
ORDER BY `last_ping_timetaken` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
}
|
||||
} elseif ($top_query === 'cpu') {
|
||||
@@ -221,7 +212,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `d`.`device_id` = `procs`.`device_id`
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
GROUP BY `d`.`device_id`
|
||||
ORDER BY `cpuload` '.$sort_order.'
|
||||
ORDER BY `cpuload` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
} else {
|
||||
$query = 'SELECT `hostname`, `last_polled`, `d`.`device_id`, avg(`processor_usage`) as `cpuload`
|
||||
@@ -229,7 +220,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `P`.`user_id` = :user AND `P`.`device_id` = `procs`.`device_id`
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
GROUP BY `procs`.`device_id`
|
||||
ORDER BY `cpuload` '.$sort_order.'
|
||||
ORDER BY `cpuload` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
}
|
||||
} elseif ($top_query === 'ram') {
|
||||
@@ -239,7 +230,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `d`.`device_id` = `mem`.`device_id`
|
||||
AND `mempool_descr` IN (\'Physical memory\',\'Memory\')
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `mempool_perc` '.$sort_order.'
|
||||
ORDER BY `mempool_perc` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
} else {
|
||||
$query = 'SELECT `hostname`, `last_polled`, `d`.`device_id`, `mempool_perc`
|
||||
@@ -247,7 +238,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `P`.`user_id` = :user AND `P`.`device_id` = `mem`.`device_id`
|
||||
AND `mempool_descr` IN (\'Physical memory\',\'Memory\')
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `mempool_perc` '.$sort_order.'
|
||||
ORDER BY `mempool_perc` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
}
|
||||
} elseif ($top_query === 'poller') {
|
||||
@@ -255,7 +246,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
$query = 'SELECT `last_polled_timetaken`, `hostname`, `last_polled`, `device_id`
|
||||
FROM `devices`
|
||||
WHERE unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `last_polled_timetaken` '.$sort_order.'
|
||||
ORDER BY `last_polled_timetaken` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
} else {
|
||||
$query = 'SELECT `last_polled_timetaken`, `hostname`, `last_polled`, `d`.`device_id`
|
||||
@@ -263,7 +254,7 @@ if (defined('SHOW_SETTINGS') || empty($widget_settings)) {
|
||||
WHERE `P`.`user_id` = :user
|
||||
AND `P`.`device_id` = `d`.`device_id`
|
||||
AND unix_timestamp() - UNIX_TIMESTAMP(`last_polled`) < :interval
|
||||
ORDER BY `last_polled_timetaken` '.$sort_order.'
|
||||
ORDER BY `last_polled_timetaken` ' . $sort_order . '
|
||||
LIMIT :count';
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user