diff --git a/dashboard-ui/components/tvproviders/xmltv.js b/dashboard-ui/components/tvproviders/xmltv.js index 0c403a54ef..1c73417916 100644 --- a/dashboard-ui/components/tvproviders/xmltv.js +++ b/dashboard-ui/components/tvproviders/xmltv.js @@ -1,107 +1,197 @@ -define(["jQuery", "registrationServices", "loading", "emby-checkbox", "emby-input", "listViewStyle", "paper-icon-button-light"], function($, registrationServices, loading) { - "use strict"; - return function(page, providerId, options) { - function getListingProvider(config, id) { - if (config && id) { - var result = config.ListingProviders.filter(function(i) { - return i.Id === id - })[0]; - return result ? Promise.resolve(result) : getListingProvider() - } - return ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/Default")) +define(["jQuery", "registrationServices", "loading", "emby-checkbox", "emby-input", "listViewStyle", "paper-icon-button-light"], function ($__q, registrationServices, loading) { + "use strict"; + + return function (page, providerId, options) { + function getListingProvider(config, id) { + if (config && id) { + var result = config.ListingProviders.filter(function (i__w) { + return i__w.Id === id; + })[0]; + + if (result) { + return Promise.resolve(result); } - function reload() { - loading.show(), ApiClient.getNamedConfiguration("livetv").then(function(config) { - getListingProvider(config, providerId).then(function(info) { - page.querySelector(".txtPath").value = info.Path || "", page.querySelector(".txtKids").value = (info.KidsCategories || []).join("|"), page.querySelector(".txtNews").value = (info.NewsCategories || []).join("|"), page.querySelector(".txtSports").value = (info.SportsCategories || []).join("|"), page.querySelector(".txtMovies").value = (info.MovieCategories || []).join("|"), page.querySelector(".txtMoviePrefix").value = info.MoviePrefix || "", page.querySelector(".txtUserAgent").value = info.UserAgent || "", page.querySelector(".chkAllTuners").checked = info.EnableAllTuners, page.querySelector(".chkAllTuners").checked ? page.querySelector(".selectTunersSection").classList.add("hide") : page.querySelector(".selectTunersSection").classList.remove("hide"), refreshTunerDevices(page, info, config.TunerHosts), loading.hide() - }) - }) - } + return getListingProvider(); + } - function getCategories(txtInput) { - var value = txtInput.value; - return value ? value.split("|") : [] - } - - function submitListingsForm() { - loading.show(); - var id = providerId; - ApiClient.getNamedConfiguration("livetv").then(function(config) { - var info = config.ListingProviders.filter(function(i) { - return i.Id === id - })[0] || {}; - info.Type = "xmltv", info.Path = page.querySelector(".txtPath").value, info.MoviePrefix = page.querySelector(".txtMoviePrefix").value || null, info.UserAgent = page.querySelector(".txtUserAgent").value || null, info.MovieCategories = getCategories(page.querySelector(".txtMovies")), info.KidsCategories = getCategories(page.querySelector(".txtKids")), info.NewsCategories = getCategories(page.querySelector(".txtNews")), info.SportsCategories = getCategories(page.querySelector(".txtSports")), info.EnableAllTuners = page.querySelector(".chkAllTuners").checked, info.EnabledTuners = info.EnableAllTuners ? [] : $(".chkTuner", page).get().filter(function(i) { - return i.checked - }).map(function(i) { - return i.getAttribute("data-id") - }), ApiClient.ajax({ - type: "POST", - url: ApiClient.getUrl("LiveTv/ListingProviders", { - ValidateListings: !0 - }), - data: JSON.stringify(info), - contentType: "application/json" - }).then(function(result) { - loading.hide(), !1 !== options.showConfirmation && Dashboard.processServerConfigurationUpdateResult(), Events.trigger(self, "submitted") - }, function() { - loading.hide(), Dashboard.alert({ - message: Globalize.translate("ErrorAddingXmlTvFile") - }) - }) - }) - } - - function getTunerName(providerId) { - switch (providerId = providerId.toLowerCase()) { - case "m3u": - return "M3U Playlist"; - case "hdhomerun": - return "HDHomerun"; - case "satip": - return "DVB"; - default: - return "Unknown" - } - } - - function refreshTunerDevices(page, providerInfo, devices) { - for (var html = "", i = 0, length = devices.length; i < length; i++) { - var device = devices[i]; - html += '
'; - var enabledTuners = providerInfo.EnabledTuners || [], - isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id), - checkedAttribute = isChecked ? " checked" : ""; - html += '", html += '
', html += '
', html += device.FriendlyName || getTunerName(device.Type), html += "
", html += '
', html += device.Url, html += "
", html += "
", html += "
" - } - page.querySelector(".tunerList").innerHTML = html - } - - function onSelectPathClick(e) { - var page = $(e.target).parents(".xmltvForm")[0]; - require(["directorybrowser"], function(directoryBrowser) { - var picker = new directoryBrowser; - picker.show({ - includeFiles: !0, - callback: function(path) { - if (path) { - var txtPath = page.querySelector(".txtPath"); - txtPath.value = path, txtPath.focus() - } - picker.close() - } - }) - }) - } - var self = this; - self.submit = function() { - page.querySelector(".btnSubmitListings").click() - }, self.init = function() { - options = options || {}, !1 !== options.showCancelButton ? page.querySelector(".btnCancel").classList.remove("hide") : page.querySelector(".btnCancel").classList.add("hide"), !1 !== options.showSubmitButton ? page.querySelector(".btnSubmitListings").classList.remove("hide") : page.querySelector(".btnSubmitListings").classList.add("hide"), $("form", page).on("submit", function() { - return submitListingsForm(), !1 - }), page.querySelector("#btnSelectPath").addEventListener("click", onSelectPathClick), page.querySelector(".chkAllTuners").addEventListener("change", function(e) { - e.target.checked ? page.querySelector(".selectTunersSection").classList.add("hide") : page.querySelector(".selectTunersSection").classList.remove("hide") - }), reload() - } + return ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/Default")); } + + function reload() { + loading.show(); + ApiClient.getNamedConfiguration("livetv").then(function (config) { + getListingProvider(config, providerId).then(function (info) { + page.querySelector(".txtPath").value = info.Path || ""; + page.querySelector(".txtKids").value = (info.KidsCategories || []).join("|"); + page.querySelector(".txtNews").value = (info.NewsCategories || []).join("|"); + page.querySelector(".txtSports").value = (info.SportsCategories || []).join("|"); + page.querySelector(".txtMovies").value = (info.MovieCategories || []).join("|"); + page.querySelector(".txtMoviePrefix").value = info.MoviePrefix || ""; + page.querySelector(".txtUserAgent").value = info.UserAgent || ""; + page.querySelector(".chkAllTuners").checked = info.EnableAllTuners; + + if (page.querySelector(".chkAllTuners").checked) { + page.querySelector(".selectTunersSection").classList.add("hide"); + } else { + page.querySelector(".selectTunersSection").classList.remove("hide"); + } + + refreshTunerDevices(page, info, config.TunerHosts); + loading.hide(); + }); + }); + } + + function getCategories(txtInput) { + var value = txtInput.value; + + if (value) { + return value.split("|"); + } + + return []; + } + + function submitListingsForm() { + loading.show(); + var id = providerId; + ApiClient.getNamedConfiguration("livetv").then(function (config) { + var info = config.ListingProviders.filter(function (i__e) { + return i__e.Id === id; + })[0] || {}; + info.Type = "xmltv"; + info.Path = page.querySelector(".txtPath").value; + info.MoviePrefix = page.querySelector(".txtMoviePrefix").value || null; + info.UserAgent = page.querySelector(".txtUserAgent").value || null; + info.MovieCategories = getCategories(page.querySelector(".txtMovies")); + info.KidsCategories = getCategories(page.querySelector(".txtKids")); + info.NewsCategories = getCategories(page.querySelector(".txtNews")); + info.SportsCategories = getCategories(page.querySelector(".txtSports")); + info.EnableAllTuners = page.querySelector(".chkAllTuners").checked; + info.EnabledTuners = info.EnableAllTuners ? [] : $__q(".chkTuner", page).get().filter(function (i__r) { + return i__r.checked; + }).map(function (i__t) { + return i__t.getAttribute("data-id"); + }); + ApiClient.ajax({ + type: "POST", + url: ApiClient.getUrl("LiveTv/ListingProviders", { + ValidateListings: true + }), + data: JSON.stringify(info), + contentType: "application/json" + }).then(function (result) { + loading.hide(); + + if (false !== options.showConfirmation) { + Dashboard.processServerConfigurationUpdateResult(); + } + + Events.trigger(self, "submitted"); + }, function () { + loading.hide(); + Dashboard.alert({ + message: Globalize.translate("ErrorAddingXmlTvFile") + }); + }); + }); + } + + function getTunerName(providerId) { + switch (providerId = providerId.toLowerCase()) { + case "m3u": + return "M3U Playlist"; + + case "hdhomerun": + return "HDHomerun"; + + case "satip": + return "DVB"; + + default: + return "Unknown"; + } + } + + function refreshTunerDevices(page, providerInfo, devices) { + var html = ""; + + for (var i__y = 0, length = devices.length; i__y < length; i__y++) { + var device = devices[i__y]; + html += '
'; + var enabledTuners = providerInfo.EnabledTuners || []; + var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id); + var checkedAttribute = isChecked ? " checked" : ""; + html += '"; + html += '
'; + html += '
'; + html += device.FriendlyName || getTunerName(device.Type); + html += "
"; + html += '
'; + html += device.Url; + html += "
"; + html += "
"; + html += "
"; + } + + page.querySelector(".tunerList").innerHTML = html; + } + + function onSelectPathClick(e__u) { + var page = $__q(e__u.target).parents(".xmltvForm")[0]; + + require(["directorybrowser"], function (directoryBrowser) { + var picker = new directoryBrowser(); + picker.show({ + includeFiles: true, + callback: function (path) { + if (path) { + var txtPath = page.querySelector(".txtPath"); + txtPath.value = path; + txtPath.focus(); + } + + picker.close(); + } + }); + }); + } + + var self = this; + + self.submit = function () { + page.querySelector(".btnSubmitListings").click(); + }; + + self.init = function () { + options = options || {}; + + if (false !== options.showCancelButton) { + page.querySelector(".btnCancel").classList.remove("hide"); + } else { + page.querySelector(".btnCancel").classList.add("hide"); + } + + if (false !== options.showSubmitButton) { + page.querySelector(".btnSubmitListings").classList.remove("hide"); + } else { + page.querySelector(".btnSubmitListings").classList.add("hide"); + } + + $__q("form", page).on("submit", function () { + submitListingsForm(); + return false; + }); + page.querySelector("#btnSelectPath").addEventListener("click", onSelectPathClick); + page.querySelector(".chkAllTuners").addEventListener("change", function (e__i) { + if (e__i.target.checked) { + page.querySelector(".selectTunersSection").classList.add("hide"); + } else { + page.querySelector(".selectTunersSection").classList.remove("hide"); + } + }); + reload(); + }; + }; });