diff --git a/package.json b/package.json
index e6bb8ab898..a9e269f5ef 100644
--- a/package.json
+++ b/package.json
@@ -206,6 +206,7 @@
"src/controllers/playback/video/index.js",
"src/controllers/searchpage.js",
"src/controllers/livetvtuner.js",
+ "src/controllers/livetvstatus.js",
"src/controllers/shows/episodes.js",
"src/controllers/shows/tvgenres.js",
"src/controllers/shows/tvlatest.js",
diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js
index 84ea006fd9..f37760808a 100644
--- a/src/controllers/livetvstatus.js
+++ b/src/controllers/livetvstatus.js
@@ -1,294 +1,305 @@
-define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layoutManager', 'loading', 'browser', 'listViewStyle', 'flexStyles', 'emby-itemscontainer', 'cardStyle', 'material-icons', 'emby-button'], function ($, globalize, taskButton, dom, libraryMenu, layoutManager, loading, browser) {
- 'use strict';
+import $ from 'jQuery';
+import globalize from 'globalize';
+import taskButton from 'scripts/taskbutton';
+import dom from 'dom';
+import layoutManager from 'layoutManager';
+import loading from 'loading';
+import browser from 'browser';
+import 'listViewStyle';
+import 'flexStyles';
+import 'emby-itemscontainer';
+import 'cardStyle';
+import 'material-icons';
+import 'emby-button';
- var enableFocusTransform = !browser.slow && !browser.edge;
+const enableFocusTransform = !browser.slow && !browser.edge;
- function getDeviceHtml(device) {
- var padderClass;
- var html = '';
- var cssClass = 'card scalableCard';
- var cardBoxCssClass = 'cardBox visualCardBox';
- cssClass += ' backdropCard backdropCard-scalable';
- padderClass = 'cardPadder-backdrop';
+function getDeviceHtml(device) {
+ let padderClass;
+ let html = '';
+ let cssClass = 'card scalableCard';
+ let cardBoxCssClass = 'cardBox visualCardBox';
+ cssClass += ' backdropCard backdropCard-scalable';
+ padderClass = 'cardPadder-backdrop';
- // TODO move card creation code to Card component
+ // TODO move card creation code to Card component
- if (layoutManager.tv) {
- cssClass += ' show-focus';
+ if (layoutManager.tv) {
+ cssClass += ' show-focus';
- if (enableFocusTransform) {
- cssClass += ' show-animation';
- }
+ if (enableFocusTransform) {
+ cssClass += ' show-animation';
}
-
- html += '
';
-
- for (var i = 0, length = providers.length; i < length; i++) {
- var provider = providers[i];
- html += '
';
- html += '
';
- html += '
';
- html += '
';
- html += '
';
- }
+ if (providers.length) {
+ html += '
';
+ for (let i = 0, length = providers.length; i < length; i++) {
+ const provider = providers[i];
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
';
html += '
';
}
- var elem = $('.providerList', page).html(html);
- $('.btnOptions', elem).on('click', function () {
- var id = this.getAttribute('data-id');
- showProviderOptions(page, id, this);
- });
+ html += '
';
}
- function showProviderOptions(page, providerId, button) {
- var items = [];
- items.push({
- name: globalize.translate('ButtonDelete'),
- id: 'delete'
- });
- items.push({
- name: globalize.translate('MapChannels'),
- id: 'map'
- });
+ const elem = $('.providerList', page).html(html);
+ $('.btnOptions', elem).on('click', function () {
+ const id = this.getAttribute('data-id');
+ showProviderOptions(page, id, this);
+ });
+}
- require(['actionsheet'], function (actionsheet) {
- actionsheet.show({
- items: items,
- positionTo: button
- }).then(function (id) {
- switch (id) {
- case 'delete':
- deleteProvider(page, providerId);
- break;
+function showProviderOptions(page, providerId, button) {
+ const items = [];
+ items.push({
+ name: globalize.translate('ButtonDelete'),
+ id: 'delete'
+ });
+ items.push({
+ name: globalize.translate('MapChannels'),
+ id: 'map'
+ });
- case 'map':
- mapChannels(page, providerId);
- }
- });
- });
- }
+ import('actionsheet').then(({default: actionsheet}) => {
+ actionsheet.show({
+ items: items,
+ positionTo: button
+ }).then(function (id) {
+ switch (id) {
+ case 'delete':
+ deleteProvider(page, providerId);
+ break;
- function mapChannels(page, providerId) {
- require(['components/channelMapper/channelMapper'], function (channelMapper) {
- new channelMapper.default({
- serverId: ApiClient.serverInfo().Id,
- providerId: providerId
- }).show();
- });
- }
-
- function deleteProvider(page, id) {
- var message = globalize.translate('MessageConfirmDeleteGuideProvider');
-
- require(['confirm'], function (confirm) {
- confirm.default(message, globalize.translate('HeaderDeleteProvider')).then(function () {
- loading.show();
- ApiClient.ajax({
- type: 'DELETE',
- url: ApiClient.getUrl('LiveTv/ListingProviders', {
- Id: id
- })
- }).then(function () {
- reload(page);
- }, function () {
- reload(page);
- });
- });
- });
- }
-
- function getTunerName(providerId) {
- switch (providerId = providerId.toLowerCase()) {
- case 'm3u':
- return 'M3U';
- case 'hdhomerun':
- return 'HDHomeRun';
- case 'hauppauge':
- return 'Hauppauge';
- case 'satip':
- return 'DVB';
- default:
- return 'Unknown';
- }
- }
-
- function getProviderName(providerId) {
- switch (providerId = providerId.toLowerCase()) {
- case 'schedulesdirect':
- return 'Schedules Direct';
- case 'xmltv':
- return 'XMLTV';
- default:
- return 'Unknown';
- }
- }
-
- function getProviderConfigurationUrl(providerId) {
- switch (providerId = providerId.toLowerCase()) {
- case 'xmltv':
- return 'livetvguideprovider.html?type=xmltv';
- case 'schedulesdirect':
- return 'livetvguideprovider.html?type=schedulesdirect';
- }
- }
-
- function addProvider(button) {
- var menuItems = [];
- menuItems.push({
- name: 'Schedules Direct',
- id: 'SchedulesDirect'
- });
- menuItems.push({
- name: 'XMLTV',
- id: 'xmltv'
- });
-
- require(['actionsheet'], function (actionsheet) {
- actionsheet.show({
- items: menuItems,
- positionTo: button,
- callback: function (id) {
- Dashboard.navigate(getProviderConfigurationUrl(id));
- }
- });
- });
- }
-
- function addDevice(button) {
- Dashboard.navigate('livetvtuner.html');
- }
-
- function showDeviceMenu(button, tunerDeviceId) {
- var items = [];
- items.push({
- name: globalize.translate('ButtonDelete'),
- id: 'delete'
- });
- items.push({
- name: globalize.translate('ButtonEdit'),
- id: 'edit'
- });
-
- require(['actionsheet'], function (actionsheet) {
- actionsheet.show({
- items: items,
- positionTo: button
- }).then(function (id) {
- switch (id) {
- case 'delete':
- deleteDevice(dom.parentWithClass(button, 'page'), tunerDeviceId);
- break;
-
- case 'edit':
- Dashboard.navigate('livetvtuner.html?id=' + tunerDeviceId);
- }
- });
- });
- }
-
- function onDevicesListClick(e) {
- var card = dom.parentWithClass(e.target, 'card');
-
- if (card) {
- var id = card.getAttribute('data-id');
- var btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions');
-
- if (btnCardOptions) {
- showDeviceMenu(btnCardOptions, id);
- } else {
- Dashboard.navigate('livetvtuner.html?id=' + id);
+ case 'map':
+ mapChannels(page, providerId);
}
+ });
+ });
+}
+
+function mapChannels(page, providerId) {
+ import('components/channelMapper/channelMapper').then(({default: channelMapper}) => {
+ new channelMapper({
+ serverId: ApiClient.serverInfo().Id,
+ providerId: providerId
+ }).show();
+ });
+}
+
+function deleteProvider(page, id) {
+ const message = globalize.translate('MessageConfirmDeleteGuideProvider');
+
+ import('confirm').then(({default: confirm}) => {
+ confirm(message, globalize.translate('HeaderDeleteProvider')).then(function () {
+ loading.show();
+ ApiClient.ajax({
+ type: 'DELETE',
+ url: ApiClient.getUrl('LiveTv/ListingProviders', {
+ Id: id
+ })
+ }).then(function () {
+ reload(page);
+ }, function () {
+ reload(page);
+ });
+ });
+ });
+}
+
+function getTunerName(providerId) {
+ switch (providerId = providerId.toLowerCase()) {
+ case 'm3u':
+ return 'M3U';
+ case 'hdhomerun':
+ return 'HDHomeRun';
+ case 'hauppauge':
+ return 'Hauppauge';
+ case 'satip':
+ return 'DVB';
+ default:
+ return 'Unknown';
+ }
+}
+
+function getProviderName(providerId) {
+ switch (providerId = providerId.toLowerCase()) {
+ case 'schedulesdirect':
+ return 'Schedules Direct';
+ case 'xmltv':
+ return 'XMLTV';
+ default:
+ return 'Unknown';
+ }
+}
+
+function getProviderConfigurationUrl(providerId) {
+ switch (providerId = providerId.toLowerCase()) {
+ case 'xmltv':
+ return 'livetvguideprovider.html?type=xmltv';
+ case 'schedulesdirect':
+ return 'livetvguideprovider.html?type=schedulesdirect';
+ }
+}
+
+function addProvider(button) {
+ const menuItems = [];
+ menuItems.push({
+ name: 'Schedules Direct',
+ id: 'SchedulesDirect'
+ });
+ menuItems.push({
+ name: 'XMLTV',
+ id: 'xmltv'
+ });
+
+ import('actionsheet').then(({default: actionsheet}) => {
+ actionsheet.show({
+ items: menuItems,
+ positionTo: button,
+ callback: function (id) {
+ Dashboard.navigate(getProviderConfigurationUrl(id));
+ }
+ });
+ });
+}
+
+function addDevice(button) {
+ Dashboard.navigate('livetvtuner.html');
+}
+
+function showDeviceMenu(button, tunerDeviceId) {
+ const items = [];
+ items.push({
+ name: globalize.translate('ButtonDelete'),
+ id: 'delete'
+ });
+ items.push({
+ name: globalize.translate('ButtonEdit'),
+ id: 'edit'
+ });
+
+ import('actionsheet').then(({default: actionsheet}) => {
+ actionsheet.show({
+ items: items,
+ positionTo: button
+ }).then(function (id) {
+ switch (id) {
+ case 'delete':
+ deleteDevice(dom.parentWithClass(button, 'page'), tunerDeviceId);
+ break;
+
+ case 'edit':
+ Dashboard.navigate('livetvtuner.html?id=' + tunerDeviceId);
+ }
+ });
+ });
+}
+
+function onDevicesListClick(e) {
+ const card = dom.parentWithClass(e.target, 'card');
+
+ if (card) {
+ const id = card.getAttribute('data-id');
+ const btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions');
+
+ if (btnCardOptions) {
+ showDeviceMenu(btnCardOptions, id);
+ } else {
+ Dashboard.navigate('livetvtuner.html?id=' + id);
}
}
+}
+export default function () {
$(document).on('pageinit', '#liveTvStatusPage', function () {
- var page = this;
+ const page = this;
$('.btnAddDevice', page).on('click', function () {
addDevice(this);
});
@@ -301,21 +312,21 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
});
page.querySelector('.devicesList').addEventListener('click', onDevicesListClick);
}).on('pageshow', '#liveTvStatusPage', function () {
- var page = this;
+ const page = this;
reload(page);
- taskButton.default({
+ taskButton({
mode: 'on',
progressElem: page.querySelector('.refreshGuideProgress'),
taskKey: 'RefreshGuide',
button: page.querySelector('.btnRefresh')
});
}).on('pagehide', '#liveTvStatusPage', function () {
- var page = this;
- taskButton.default({
+ const page = this;
+ taskButton({
mode: 'off',
progressElem: page.querySelector('.refreshGuideProgress'),
taskKey: 'RefreshGuide',
button: page.querySelector('.btnRefresh')
});
});
-});
+}