diff --git a/dashboard-ui/components/tvproviders/schedulesdirect.js b/dashboard-ui/components/tvproviders/schedulesdirect.js index 64f7b4894e..f27e44098d 100644 --- a/dashboard-ui/components/tvproviders/schedulesdirect.js +++ b/dashboard-ui/components/tvproviders/schedulesdirect.js @@ -1,4 +1,4 @@ -define(['paper-checkbox', 'paper-input'], function () { +define(['paper-checkbox', 'paper-input', 'paper-item-body', 'paper-icon-item'], function () { return function (page, providerId, options) { @@ -29,7 +29,16 @@ page.querySelector('.listingsSection').classList.add('hide'); } + page.querySelector('.chkAllTuners').checked = info.EnableAllTuners; + + if (page.querySelector('.chkAllTuners').checked) { + page.querySelector('.selectTunersSection').classList.add('hide'); + } else { + page.querySelector('.selectTunersSection').classList.remove('hide'); + } + setCountry(info); + refreshTunerDevices(page, info, config.TunerHosts); }); } @@ -91,6 +100,7 @@ var info = { Type: 'SchedulesDirect', Username: page.querySelector('.txtUser').value, + EnableAllTuners: true, Password: CryptoJS.SHA1(page.querySelector('.txtPass').value).toString() }; @@ -147,6 +157,12 @@ info.ZipCode = page.querySelector('.txtZipCode').value; info.Country = $('#selectCountry', page).val(); info.ListingsId = selectedListingsId; + 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", @@ -216,6 +232,53 @@ }); } + function getTunerName(providerId) { + + providerId = providerId.toLowerCase(); + + switch (providerId) { + + 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 = 0, length = devices.length; i < length; i++) { + + var device = devices[i]; + + html += ''; + + var isChecked = providerInfo.EnableAllTuners || providerInfo.EnabledTuners.indexOf(device.Id) != -1; + 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; + } + self.submit = function () { page.querySelector('.btnSubmitListingsContainer').click(); }; @@ -250,6 +313,14 @@ refreshListings(this.value); }); + page.querySelector('.chkAllTuners').addEventListener('change', function (e) { + if (e.target.checked) { + page.querySelector('.selectTunersSection').classList.add('hide'); + } else { + page.querySelector('.selectTunersSection').classList.remove('hide'); + } + }); + $('.createAccountHelp', page).html(Globalize.translate('MessageCreateAccountAt', 'http://www.schedulesdirect.org')); reload(); diff --git a/dashboard-ui/components/tvproviders/schedulesdirect.template.html b/dashboard-ui/components/tvproviders/schedulesdirect.template.html index 8c810e2d90..7abe255a9c 100644 --- a/dashboard-ui/components/tvproviders/schedulesdirect.template.html +++ b/dashboard-ui/components/tvproviders/schedulesdirect.template.html @@ -10,6 +10,8 @@
+ +
@@ -52,6 +54,17 @@
+
+

+ ${OptionEnableForAllTuners} +
+

+
${HeaderTuners}
+
+
+
+
+