Add studio filter on download page closes #1
This commit is contained in:
@@ -23,6 +23,10 @@ class DownloadsSearch extends Component
|
||||
|
||||
public $isOpen = false;
|
||||
|
||||
#[Url(history: true)]
|
||||
public $studios = [];
|
||||
public $studiosCopy = [];
|
||||
|
||||
// To toggle individual option selection
|
||||
public function toggleOption($option)
|
||||
{
|
||||
@@ -46,6 +50,17 @@ class DownloadsSearch extends Component
|
||||
$this->resetPage();
|
||||
}
|
||||
|
||||
public function applyFilters(): void
|
||||
{
|
||||
$this->studiosCopy = $this->studios;
|
||||
$this->resetPage();
|
||||
}
|
||||
|
||||
public function revertFilters(): void
|
||||
{
|
||||
$this->studios = $this->studiosCopy;
|
||||
}
|
||||
|
||||
// Map the selected options to database types
|
||||
private function getSelectedTypes()
|
||||
{
|
||||
@@ -129,6 +144,7 @@ class DownloadsSearch extends Component
|
||||
|
||||
$downloads = Downloads::when($this->fileSearch != '', fn ($query) => $query->where('url', 'like', '%'.$this->fileSearch.'%'))
|
||||
->whereIn('type', $this->getSelectedTypes())
|
||||
->when($this->studios !== [], fn ($q) => $q->whereHas('episode', fn ($query) => $query->whereHas('studio', function ($query) { $query->whereIn('slug', $this->studios); })))
|
||||
->whereNotNull('size')
|
||||
->orderBy($orderby, $orderdirection)
|
||||
->paginate(20);
|
||||
@@ -136,6 +152,7 @@ class DownloadsSearch extends Component
|
||||
return view('livewire.downloads-search', [
|
||||
'downloads' => $downloads,
|
||||
'query' => $this->fileSearch,
|
||||
'studiocount' => is_array($this->studios) ? count($this->studios) : 0,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user