diff --git a/assets/controllers/movie_results_controller.js b/assets/controllers/movie_results_controller.js index beab7a1..49a7668 100644 --- a/assets/controllers/movie_results_controller.js +++ b/assets/controllers/movie_results_controller.js @@ -29,6 +29,11 @@ export default class extends Controller { } } + // Keeps compatible with Filter & TV Shows + isActive() { + return true; + } + listTargetConnected(target) { // console.log(target); } diff --git a/assets/controllers/result_filter_controller.js b/assets/controllers/result_filter_controller.js index 92ff17b..3862263 100644 --- a/assets/controllers/result_filter_controller.js +++ b/assets/controllers/result_filter_controller.js @@ -13,6 +13,13 @@ export default class extends Controller { providers = [] seasons = [] + activeFilter = { + "resolution": "", + "codec": "", + "language": "", + "provider": "", + } + static outlets = ['movie-results', 'tv-results'] static targets = ['resolution', 'codec', 'language', 'provider', 'season'] static values = { @@ -20,6 +27,11 @@ export default class extends Controller { 'episodes': Array, } + connect() { + if (this.mediaTypeValue === "tvshows") { + this.activeFilter['season'] = 1;} + } + async movieResultsOutletConnected(outlet) { await this.parseDownloadOptionForFilter(outlet) } @@ -65,6 +77,8 @@ export default class extends Controller { } async filter() { + const currentSeason = this.activeFilter['season']; + let results = []; this.activeFilter = { "resolution": this.resolutionTarget.value, @@ -80,8 +94,16 @@ export default class extends Controller { this.activeFilter.season = this.seasonTarget.value; } - const filterOperation = (resultList) => { - if (false === resultList.isActive) { + const filterOperation = async (resultList, currentSeason) => { + if ("tvshows" === this.mediaTypeValue && currentSeason !== this.activeFilter['season']) { + if (resultList.seasonValue === this.seasonTarget.value) { + await resultList.setActive(); + } else { + resultList.setInActive(); + } + } + + if (false === resultList.isActive()) { return; } @@ -101,7 +123,7 @@ export default class extends Controller { option.classList.remove('hidden'); for (let [key, value] of Object.entries(this.activeFilter)) { - if (value === "") { + if (value === "" || key === "season") { continue; } if (key === "codec" && value === "h264") { @@ -138,15 +160,6 @@ export default class extends Controller { }); } - if ("tvshows" === this.mediaTypeValue) { - await results.forEach(async (list) => { - if (list.seasonValue === this.seasonTarget.value) { - await list.setActive(); - } else { - list.setInActive(); - } - }) - } - results.forEach((list) => filterOperation(list)); + await results.forEach((list) => filterOperation(list, currentSeason)); } } diff --git a/assets/controllers/tv_results_controller.js b/assets/controllers/tv_results_controller.js index e37e136..ef4d5ef 100644 --- a/assets/controllers/tv_results_controller.js +++ b/assets/controllers/tv_results_controller.js @@ -40,7 +40,9 @@ export default class extends Controller { async setActive() { this.activeValue = true; this.element.classList.remove('hidden'); - await this.setOptions(); + if (false === this.optionsLoaded) { + await this.setOptions(); + } } setInActive() { diff --git a/templates/search/partial/filter.html.twig b/templates/search/partial/filter.html.twig new file mode 100644 index 0000000..6ef7ead --- /dev/null +++ b/templates/search/partial/filter.html.twig @@ -0,0 +1,63 @@ +