From a1a38cb74ca9b19b4785e807126afad6343797e0 Mon Sep 17 00:00:00 2001 From: Brock H Caldwell Date: Sat, 26 Apr 2025 22:30:44 -0500 Subject: [PATCH] fix-feat: download selected button --- assets/controllers/result_filter_controller.js | 18 +++++++++++++++--- assets/controllers/tv_results_controller.js | 17 +++++++++++++++++ templates/search/partial/filter.html.twig | 5 ++++- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/assets/controllers/result_filter_controller.js b/assets/controllers/result_filter_controller.js index 6faafd6..a039da8 100644 --- a/assets/controllers/result_filter_controller.js +++ b/assets/controllers/result_filter_controller.js @@ -21,7 +21,7 @@ export default class extends Controller { } static outlets = ['movie-results', 'tv-results'] - static targets = ['resolution', 'codec', 'language', 'provider', 'season', 'selectAll'] + static targets = ['resolution', 'codec', 'language', 'provider', 'season', 'selectAll', 'downloadSelected'] static values = { 'media-type': String, 'episodes': Array, @@ -166,11 +166,23 @@ export default class extends Controller { } uncheckSelectAllBtn() { - console.log('hurr'); this.selectAllTarget.checked = false; } selectAllEpisodes() { - this.tvResultsOutlets.forEach((episode) => episode.selectEpisodeForDownload()); + this.tvResultsOutlets.forEach((episode) => { + if (episode.isActive()) { + episode.selectEpisodeForDownload() + } + }); + } + + downloadSelectedEpisodes() { + this.tvResultsOutlets.forEach(episode => { + if (episode.isActive() && episode.isSelected()) { + episode.download(); + } + }); + this.selectAllTarget.checked = false; } } diff --git a/assets/controllers/tv_results_controller.js b/assets/controllers/tv_results_controller.js index bf7e304..cbce220 100644 --- a/assets/controllers/tv_results_controller.js +++ b/assets/controllers/tv_results_controller.js @@ -62,6 +62,10 @@ export default class extends Controller { return this.activeValue; } + isSelected() { + return this.episodeSelectorTarget.checked; + } + selectEpisodeForDownload() { if (true === this.isActive() && this.episodeSelectorTarget.disabled === false) { this.episodeSelectorTarget.checked = !this.episodeSelectorTarget.checked; @@ -71,4 +75,17 @@ export default class extends Controller { toggleList() { this.listTarget.classList.toggle('hidden'); } + + download() { + this.options.forEach(option => { + const optionSelector = option.querySelector('input[type="checkbox"]'); + if (true === optionSelector.checked) { + const downloadBtn = option.querySelector('button.download-btn'); + const downloadBtnController = this.application.getControllerForElementAndIdentifier(downloadBtn, 'download-button'); + downloadBtnController.download(); + optionSelector.checked = false; + this.episodeSelectorTarget.checked = false; + } + }) + } } diff --git a/templates/search/partial/filter.html.twig b/templates/search/partial/filter.html.twig index cfce892..2de9e58 100644 --- a/templates/search/partial/filter.html.twig +++ b/templates/search/partial/filter.html.twig @@ -71,7 +71,10 @@ {% if results.media.mediaType == "tvshows" %}
- +