Skip to content

Commit

Permalink
Load device selection dynamically on Ports page (#14353)
Browse files Browse the repository at this point in the history
* Add search in real-time to Ports page

* Update to init_select2 and remove old query

* fixed styleci

* fixed styleci

* fixing email

* Finish up

Co-authored-by: Tony Murray <murraytony@gmail.com>
  • Loading branch information
KayckMatias and murrant committed Sep 16, 2022
1 parent d0bcf0a commit 1e80780
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 31 deletions.
1 change: 1 addition & 0 deletions AUTHORS.md
Expand Up @@ -217,6 +217,7 @@ LibreNMS contributors:
- Jason Cheng <sanyu3u@gmail.com> (jasoncheng7115)
- Daniel Baeza <doctoruve@gmail.com> (TheGreatDoc)
- Thom Cleary <me@thomcat.rocks> (thomcatdotrocks)
- Kayck Matias <kayckmatias04@gmail.com> [KayckMatias](https://github.com/KayckMatias/)

Observium was written by:
- Adam Armstrong
Expand Down
32 changes: 1 addition & 31 deletions includes/html/pages/ports.inc.php
Expand Up @@ -13,7 +13,6 @@
* @author LibreNMS Contributors
*/

use App\Models\Device;
use App\Models\Port;
use Illuminate\Database\Eloquent\ModelNotFoundException;

Expand Down Expand Up @@ -90,36 +89,7 @@
$output .= addslashes(csrf_field());
$output .= "<div style='margin-bottom:4px;text-align:left;'>";
$output .= "<div class='form-group'>";
$output .= "<select name='device_id' id='device_id' class='form-control input-sm'>";
$output .= "<option value=''>All Devices</option>";

// if (Auth::user()->hasGlobalRead()) {
$results = Device::hasAccess(Auth::user())->select('device_id', 'hostname', 'sysName')->orderBy('hostname');
// } else {
// $results = dbFetchRows('SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysname` FROM `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` ORDER BY `hostname`', [Auth::id()]);
// }
foreach ($results as $data) {
$deviceselected = isset($vars['device_id']) && $data['device_id'] == $vars['device_id'] ? 'selected' : '';
$ui_device = strlen(format_hostname($data)) > 15 ? substr(format_hostname($data), 0, 15) . '...' : format_hostname($data);
$output .= "<option value='" . $data['device_id'] . "' " . $deviceselected . '>' . $ui_device . '</option>';
}

if (! Auth::user()->hasGlobalRead()) {
$results = dbFetchRows('SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysName` FROM `ports` AS `I` JOIN `devices` AS `D` ON `D`.`device_id`=`I`.`device_id` JOIN `ports_perms` AS `PP` ON `PP`.`port_id`=`I`.`port_id` WHERE `PP`.`user_id` = ? AND `PP`.`port_id` = `I`.`port_id` ORDER BY `hostname`', [Auth::id()]);
} else {
$results = [];
}

foreach ($results as $data) {
if ($data['device_id'] == $vars['device_id']) {
$deviceselected = 'selected';
} else {
$deviceselected = '';
}
$output .= "<option value='" . $data['device_id'] . "' " . $deviceselected . '>' . format_hostname($data) . '</option>';
}

$output .= '</select>&nbsp;';
$output .= "<select name='device_id' id='device_id' class='form-control input-sm'></select>&nbsp;";

$hasvalue = ! empty($vars['hostname']) ? "value='" . $vars['hostname'] . "'" : '';

Expand Down
4 changes: 4 additions & 0 deletions includes/html/pages/ports/graph.inc.php
Expand Up @@ -13,6 +13,10 @@
$where = '';
$ignore_filter = 0;
$disabled_filter = 0;
$device = DeviceCache::get((int) $vars['device_id']);

$device_selected = json_encode($device->exists ? ['id' => $device->device_id, 'text' => $device->displayName()] : '');
echo '<script>init_select2("#device_id", "device", {field: "device_id"}, ' . $device_selected . ' , "All Devices")</script>';

foreach ($vars as $var => $value) {
if ($value != '') {
Expand Down
4 changes: 4 additions & 0 deletions includes/html/pages/ports/list.inc.php
Expand Up @@ -16,6 +16,8 @@
$details_visible = var_export($vars['format'] == 'list_detail', 1);
$errors_visible = var_export($vars['format'] == 'list_detail' || isset($vars['errors']), 1);
$no_refresh = true;
$device = DeviceCache::get((int) $vars['device_id']);
$device_selected = json_encode($device->exists() ? ['id' => $device->device_id, 'text' => $device->displayName()] : '');

if (isset($vars['errors'])) {
$error_sort = ' data-order="desc"';
Expand Down Expand Up @@ -130,4 +132,6 @@ function formatUnits(units,decimals,display,base) {

$(".actionBar").append("<div class=\"pull-left\"><?php echo $output; ?></div>");

init_select2('#device_id', 'device', {}, <?php echo $device_selected ?>, 'All Devices');

</script>

0 comments on commit 1e80780

Please sign in to comment.