Natural Sort Applications by Display Name (#11577)

* Natural Sort Applications by Display Name

* some optimizations

* .
This commit is contained in:
SourceDoctor
2020-05-15 18:32:09 +02:00
committed by GitHub
parent b90549b316
commit 17698a36f0
5 changed files with 19 additions and 6 deletions

View File

@@ -51,8 +51,8 @@ class ObjectCache
return Application::hasAccess(auth()->user())
->select('app_type', 'app_instance')
->groupBy('app_type', 'app_instance')
->orderBy('app_type')
->get()
->sortBy('show_name', SORT_NATURAL|SORT_FLAG_CASE)
->groupBy('app_type');
});
}

View File

@@ -49,4 +49,9 @@ class Application extends DeviceRelatedModel
{
return StringHelpers::niceCase($this->app_type);
}
public function getShowNameAttribute()
{
return StringHelpers::niceCase($this->app_type);
}
}

View File

@@ -329,7 +329,7 @@ $link_array = array(
'device' => $device['device_id'],
'tab' => 'apps',
);
$apps = \LibreNMS\Util\ObjectCache::applications()->flatten()->sortBy('app_type');
$apps = \LibreNMS\Util\ObjectCache::applications()->flatten();
foreach ($apps as $app) {
echo $sep;
if ($vars['app'] == $app->app_type) {

View File

@@ -11,7 +11,7 @@ $graph_array_zoom['height'] = '150';
$graph_array_zoom['width'] = '400';
$graph_array['legend'] = 'no';
foreach (Application::query()->hasAccess(Auth::user())->with('device')->orderBy('app_type')->get()->groupBy('app_type') as $type => $groupedApps) {
foreach (Application::query()->hasAccess(Auth::user())->with('device')->get()->sortBy('show_name', SORT_NATURAL|SORT_FLAG_CASE)->groupBy('app_type') as $type => $groupedApps) {
echo '<div style="clear: both;">';
echo '<h2>'.generate_link($groupedApps->first()->displayName(), array('page' => 'apps', 'app' => $type)).'</h2>';
/** @var \Illuminate\Support\Collection $groupedApps */

View File

@@ -12,7 +12,16 @@ $link_array = array(
'tab' => 'apps',
);
foreach (dbFetchRows('SELECT * FROM `applications` WHERE `device_id` = ? ORDER BY `app_type` ASC', array($device['device_id'])) as $app) {
$app_list = [];
foreach (dbFetchRows('SELECT * FROM `applications` WHERE `device_id` = ?', array($device['device_id'])) as $app) {
$app['app_display'] = nicecase($app['app_type']);
$app_list[] = $app;
}
$app_displays = array_column($app_list, 'app_display');
array_multisort($app_displays, SORT_NATURAL|SORT_FLAG_CASE, $app_list);
foreach ($app_list as $app) {
echo $sep;
if (!$vars['app']) {
@@ -21,11 +30,10 @@ foreach (dbFetchRows('SELECT * FROM `applications` WHERE `device_id` = ? ORDER B
if ($vars['app'] == $app['app_type']) {
echo "<span class='pagemenu-selected'>";
} else {
}
$link_add = array('app' => $app['app_type']);
$text = nicecase($app['app_type']);
$text = $app['app_display'];
if (!empty($app['app_instance'])) {
$text .= '('.$app['app_instance'].')';
$link_add['instance'] = $app['app_id'];