From e9ccb5ad2ba88e17ba6042f33e0b542d853dffab Mon Sep 17 00:00:00 2001 From: Brock H Caldwell Date: Sat, 26 Apr 2025 21:38:17 -0500 Subject: [PATCH] fix: select all button --- .../controllers/result_filter_controller.js | 14 +- assets/controllers/tv_results_controller.js | 11 +- templates/search/partial/filter.html.twig | 129 ++++++++++-------- templates/torrentio/tvshows.html.twig | 15 +- 4 files changed, 103 insertions(+), 66 deletions(-) diff --git a/assets/controllers/result_filter_controller.js b/assets/controllers/result_filter_controller.js index c8b0280..6faafd6 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'] + static targets = ['resolution', 'codec', 'language', 'provider', 'season', 'selectAll'] static values = { 'media-type': String, 'episodes': Array, @@ -29,7 +29,8 @@ export default class extends Controller { connect() { if (this.mediaTypeValue === "tvshows") { - this.activeFilter['season'] = 1;} + this.activeFilter['season'] = 1; + } } async movieResultsOutletConnected(outlet) { @@ -163,4 +164,13 @@ export default class extends Controller { await results.forEach((list) => filterOperation(list, currentSeason)); } + + uncheckSelectAllBtn() { + console.log('hurr'); + this.selectAllTarget.checked = false; + } + + selectAllEpisodes() { + this.tvResultsOutlets.forEach((episode) => episode.selectEpisodeForDownload()); + } } diff --git a/assets/controllers/tv_results_controller.js b/assets/controllers/tv_results_controller.js index b2c3d4e..bf7e304 100644 --- a/assets/controllers/tv_results_controller.js +++ b/assets/controllers/tv_results_controller.js @@ -15,7 +15,7 @@ export default class extends Controller { active: Boolean, }; - static targets = ['list', 'count'] + static targets = ['list', 'count', 'episodeSelector'] static outlets = ['loading-icon'] options = [] @@ -35,6 +35,8 @@ export default class extends Controller { if (this.options.length > 0) { this.options.forEach((option) => option.querySelector('.download-btn').dataset['title'] = this.titleValue); this.options[0].querySelector('input[type="checkbox"]').checked = true; + } else { + this.episodeSelectorTarget.disabled = true; } this.optionsLoaded = true; this.loadingIconOutlet.increaseCount(); @@ -52,6 +54,7 @@ export default class extends Controller { setInActive() { this.activeValue = false; + this.episodeSelectorTarget.checked = false; this.element.classList.add('hidden'); } @@ -59,6 +62,12 @@ export default class extends Controller { return this.activeValue; } + selectEpisodeForDownload() { + if (true === this.isActive() && this.episodeSelectorTarget.disabled === false) { + this.episodeSelectorTarget.checked = !this.episodeSelectorTarget.checked; + } + } + toggleList() { this.listTarget.classList.toggle('hidden'); } diff --git a/templates/search/partial/filter.html.twig b/templates/search/partial/filter.html.twig index f80df3b..cfce892 100644 --- a/templates/search/partial/filter.html.twig +++ b/templates/search/partial/filter.html.twig @@ -1,68 +1,81 @@ -
- - - - - {% if results.media.mediaType == "tvshows" %} - - {# #} - {% endif %} - + Codec + + + + + {% if results.media.mediaType == "tvshows" %} + + {# #} + {% endif %} + - - + > + + +
+ + {% if results.media.mediaType == "tvshows" %} +
+ + +
+ {% endif %} \ No newline at end of file diff --git a/templates/torrentio/tvshows.html.twig b/templates/torrentio/tvshows.html.twig index b893ae7..d0299dd 100644 --- a/templates/torrentio/tvshows.html.twig +++ b/templates/torrentio/tvshows.html.twig @@ -10,11 +10,16 @@ >{{ results.results|length }} results -
- - - +
+ +
+ + + +