Skip to content

Commit 04e27cb

Browse files
authored
Merge branch 'main' into feature/feature-new_about_page
2 parents 5bd7c7f + 68ec43d commit 04e27cb

25 files changed

+1406
-86
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ build
66
composer.lock
77
coverage
88
docs
9+
logs
910
phpunit.xml
1011
phpstan.neon
1112
testbench.yaml

config/log-viewer.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
use Opcodes\LogViewer\Enums\FolderSortingMethod;
3+
use Opcodes\LogViewer\Enums\SortingMethod;
44
use Opcodes\LogViewer\Enums\SortingOrder;
55
use Opcodes\LogViewer\Enums\Theme;
66

@@ -283,11 +283,14 @@
283283
'use_local_storage' => true,
284284

285285
// Method to sort the folders. Other options: `Alphabetical`, `ModifiedTime`
286-
'folder_sorting_method' => FolderSortingMethod::ModifiedTime,
286+
'folder_sorting_method' => SortingMethod::ModifiedTime,
287287

288288
// Order to sort the folders. Other options: `Ascending`, `Descending`
289289
'folder_sorting_order' => SortingOrder::Descending,
290290

291+
// Method for sorting log-files into directories. Other options: `Alphabetical`, `ModifiedTime`
292+
'file_sorting_method' => SortingMethod::ModifiedTime,
293+
291294
// Order to sort the logs. Other options: `Ascending`, `Descending`
292295
'log_sorting_order' => SortingOrder::Descending,
293296

public/app.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/mix-manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"/app.js": "/app.js?id=8cfcfcd4a67b98d6d1cca994164fbb8e",
3-
"/app.css": "/app.css?id=ffb86c9991a1ac32492c4abb96cd75f4",
2+
"/app.js": "/app.js?id=64391c136df5323279f6bc14315c3654",
3+
"/app.css": "/app.css?id=5593a0331dd40729ff41e32a6035d872",
44
"/img/log-viewer-128.png": "/img/log-viewer-128.png?id=d576c6d2e16074d3f064e60fe4f35166",
55
"/img/log-viewer-32.png": "/img/log-viewer-32.png?id=f8ec67d10f996aa8baf00df3b61eea6d",
66
"/img/log-viewer-64.png": "/img/log-viewer-64.png?id=8902d596fc883ca9eb8105bb683568c6"

resources/js/components/FileList.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,10 @@
4545
<div class="text-sm text-gray-500 dark:text-gray-400">
4646
<label for="file-sort-direction" class="sr-only">Sort direction</label>
4747
<select id="file-sort-direction" class="select" v-model="fileStore.direction">
48-
<option value="desc">Newest first</option>
49-
<option value="asc">Oldest first</option>
48+
<option v-if="!LogViewer.files_sort_by_time" value="asc">From A to Z</option>
49+
<option v-if="!LogViewer.files_sort_by_time" value="desc">From Z to A</option>
50+
<option v-if="LogViewer.files_sort_by_time" value="desc">Newest first</option>
51+
<option v-if="LogViewer.files_sort_by_time" value="asc">Oldest first</option>
5052
</select>
5153
</div>
5254
</div>

src/Enums/FolderSortingMethod.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace Opcodes\LogViewer\Enums;
44

5+
/**
6+
* @deprecated Use SortingMethod instead
7+
*/
58
class FolderSortingMethod
69
{
710
public const Alphabetical = 'Alphabetical';

src/Enums/SortingMethod.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Opcodes\LogViewer\Enums;
4+
5+
class SortingMethod
6+
{
7+
public const Alphabetical = 'Alphabetical';
8+
public const ModifiedTime = 'ModifiedTime';
9+
}

src/Http/Controllers/FilesController.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
use Illuminate\Http\Request;
66
use Illuminate\Support\Facades\Gate;
77
use Illuminate\Support\Facades\URL;
8+
use Opcodes\LogViewer\Enums\SortingMethod;
9+
use Opcodes\LogViewer\Enums\SortingOrder;
810
use Opcodes\LogViewer\Facades\LogViewer;
911
use Opcodes\LogViewer\Http\Resources\LogFileResource;
1012

@@ -13,16 +15,23 @@ class FilesController
1315
public function index(Request $request)
1416
{
1517
$files = LogViewer::getFiles();
18+
$sortingMethod = config('log-viewer.defaults.file_sorting_method', SortingMethod::ModifiedTime);
19+
$direction = $this->validateDirection($request->query('direction'));
1620

17-
if ($request->query('direction', 'desc') === 'asc') {
18-
$files = $files->sortByEarliestFirst();
19-
} else {
20-
$files = $files->sortByLatestFirst();
21-
}
21+
$files->sortUsing($sortingMethod, $direction);
2222

2323
return LogFileResource::collection($files);
2424
}
2525

26+
private function validateDirection(?string $direction): string
27+
{
28+
if ($direction === SortingOrder::Ascending) {
29+
return SortingOrder::Ascending;
30+
}
31+
32+
return SortingOrder::Descending;
33+
}
34+
2635
public function requestDownload(Request $request, string $fileIdentifier)
2736
{
2837
$file = LogViewer::getFile($fileIdentifier);

src/Http/Controllers/FoldersController.php

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Illuminate\Http\Request;
66
use Illuminate\Support\Facades\Gate;
77
use Illuminate\Support\Facades\URL;
8-
use Opcodes\LogViewer\Enums\FolderSortingMethod;
8+
use Opcodes\LogViewer\Enums\SortingMethod;
99
use Opcodes\LogViewer\Enums\SortingOrder;
1010
use Opcodes\LogViewer\Facades\LogViewer;
1111
use Opcodes\LogViewer\Http\Resources\LogFolderResource;
@@ -17,37 +17,28 @@ public function index(Request $request)
1717
{
1818
$folders = LogViewer::getFilesGroupedByFolder();
1919

20-
$sortingMethod = config('log-viewer.defaults.folder_sorting_method', FolderSortingMethod::ModifiedTime);
20+
$sortingMethod = config('log-viewer.defaults.folder_sorting_method', SortingMethod::ModifiedTime);
2121
$sortingOrder = config('log-viewer.defaults.folder_sorting_order', SortingOrder::Descending);
2222

23-
$fileSortingOrder = $request->query('direction', 'desc');
23+
$fileSortingMethod = config('log-viewer.defaults.file_sorting_method', SortingMethod::ModifiedTime);
24+
$fileSortingOrder = $this->validateDirection($request->query('direction'));
2425

25-
if ($sortingMethod === FolderSortingMethod::Alphabetical) {
26-
if ($sortingOrder === SortingOrder::Ascending) {
27-
$folders = $folders->sortAlphabeticallyAsc();
28-
} else {
29-
$folders = $folders->sortAlphabeticallyDesc();
30-
}
26+
$folders->sortUsing($sortingMethod, $sortingOrder);
3127

32-
// Still sort files inside folders by direction param
33-
$folders->each(function ($folder) use ($fileSortingOrder) {
34-
if ($fileSortingOrder === 'asc') {
35-
$folder->files()->sortByEarliestFirst();
36-
} else {
37-
$folder->files()->sortByLatestFirst();
38-
}
39-
});
40-
} else { // ModifiedTime
41-
if ($fileSortingOrder === 'asc') {
42-
$folders = $folders->sortByEarliestFirstIncludingFiles();
43-
} else {
44-
$folders = $folders->sortByLatestFirstIncludingFiles();
45-
}
46-
}
28+
$folders->each(fn ($folder) => $folder->files()->sortUsing($fileSortingMethod, $fileSortingOrder));
4729

4830
return LogFolderResource::collection($folders->values());
4931
}
5032

33+
private function validateDirection(?string $direction): string
34+
{
35+
if ($direction === SortingOrder::Ascending) {
36+
return SortingOrder::Ascending;
37+
}
38+
39+
return SortingOrder::Descending;
40+
}
41+
5142
public function requestDownload(Request $request, string $folderIdentifier)
5243
{
5344
$folder = LogViewer::getFolder($folderIdentifier);

src/Http/Controllers/IndexController.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Opcodes\LogViewer\Http\Controllers;
44

5+
use Opcodes\LogViewer\Enums\SortingMethod;
56
use Opcodes\LogViewer\Facades\LogViewer;
67
use Opcodes\LogViewer\LogFolder;
78
use Opcodes\LogViewer\Utils\Utils;
@@ -14,6 +15,8 @@ public function __invoke()
1415
abort(404);
1516
}
1617

18+
$files_sort_by_time = config('log-viewer.defaults.file_sorting_method') === SortingMethod::ModifiedTime;
19+
1720
return view(LogViewer::getViewLayout(), [
1821
'logViewerScriptVariables' => [
1922
'headers' => (object) [],
@@ -23,6 +26,7 @@ public function __invoke()
2326
'path' => config('log-viewer.route_path'),
2427
'back_to_system_url' => config('log-viewer.back_to_system_url'),
2528
'back_to_system_label' => config('log-viewer.back_to_system_label'),
29+
'files_sort_by_time' => $files_sort_by_time,
2630
'max_log_size_formatted' => Utils::bytesForHumans(LogViewer::maxLogSize()),
2731
'show_support_link' => config('log-viewer.show_support_link', true),
2832

0 commit comments

Comments
 (0)