41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
/*
|
|
* The following line makes this controller "lazy": it won't be downloaded until needed
|
|
* See https://github.com/symfony/stimulus-bridge#lazy-controllers
|
|
*/
|
|
/* stimulusFetch: 'lazy' */
|
|
export default class extends Controller {
|
|
H264_CODECS = ['h264', 'h.264', 'x264']
|
|
H265_CODECS = ['h265', 'h.265', 'x265', 'hevc']
|
|
|
|
static values = {
|
|
title: String,
|
|
tmdbId: String,
|
|
imdbId: String,
|
|
season: String,
|
|
episode: String,
|
|
active: Boolean,
|
|
};
|
|
|
|
static targets = ['list', 'count', 'episodeSelector',]
|
|
static outlets = ['loading-icon']
|
|
|
|
options = []
|
|
|
|
listTargetConnected() {
|
|
this.element.options = this.element.querySelectorAll('tbody tr');
|
|
if (this.element.options.length > 0) {
|
|
this.element.options.forEach((option) =>
|
|
option.querySelector('.download-btn').dataset['title'] = this.titleValue
|
|
);
|
|
this.element.options[0].querySelector('input[type="checkbox"]').checked = true;
|
|
document.dispatchEvent(new CustomEvent('optionsLoaded', {detail: {options: this.element.options}}));
|
|
} else {
|
|
this.countTarget.innerText = 0;
|
|
this.episodeSelectorTarget.disabled = true;
|
|
}
|
|
this.loadingIconOutlet.increaseCount();
|
|
}
|
|
}
|